diff --git a/.gitignore b/.gitignore index 1c875b41b62aab48ae618a3d9838f40cc6b72747..3c9c2f66bda5bfa5f1c902965cdbb8f4bc15cd6d 100644 --- a/.gitignore +++ b/.gitignore @@ -92,6 +92,27 @@ autom4te.cache /doc/code/print_api/dynamic_plugins.mli /doc/code/print_api/_build/ +/doc/pdg/call-f.eps +/doc/pdg/call-f.fig +/doc/pdg/call-f.pdf +/doc/pdg/call-g.eps +/doc/pdg/call-g.fig +/doc/pdg/call-g.pdf +/doc/pdg/compil.ok +/doc/pdg/ctrl-dpds.eps +/doc/pdg/ctrl-dpds.pdf +/doc/pdg/ex-goto.eps +/doc/pdg/ex-goto.pdf +/doc/pdg/exple-call.c +/doc/pdg/goto.eps +/doc/pdg/goto.pdf +/doc/pdg/logo-inria-sophia.eps +/doc/pdg/logo-inria-sophia.pdf +/doc/pdg/pdg-call.eps +/doc/pdg/pdg-call.pdf +/doc/pdg/pdg.dvi +/doc/pdg/pdg.ps + #lib /lib/fc/ /lib/plugins/*.mli @@ -108,6 +129,7 @@ autom4te.cache /src/plugins/*/configure /src/plugins/*/.depend /src/plugins/*/autom4te.cache/ +/src/plugins/*/Makefile.plugin.generated /src/plugins/*/doc/*/*.dot /src/plugins/*/doc/*/*.aux /src/plugins/*/doc/*/*.bbl diff --git a/Changelog b/Changelog index bd65e5da83f482ac667d329aa7f190ddc72ed58f..8f7698d71377b058fd2df19be88c012fa419dbcd 100644 --- a/Changelog +++ b/Changelog @@ -17,6 +17,27 @@ Open Source Release <next-next-release> ###################################### +-* 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 @@ -54,6 +75,8 @@ o! Kernel [2016/06/14] Remove class Filecheck.check from API. 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: diff --git a/INSTALL.md b/INSTALL.md index 02a3ee45832763105e83af436c4749ebfbba7b68..52425fa67aa02b177cd56ebd3e71608f073eccc5 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -180,7 +180,7 @@ If you are using Fedora >= 13 then a Frama-C package is provided: ### Quick Start -1. Install OCaml if not already installed. +1. Install OCaml and OCamlGraph if not already installed. 2. (Optional) For the GUI, also install Gtk, GtkSourceView, GnomeCanvas and Lablgtk2 if not already installed. If possible, also install Zarith. @@ -213,6 +213,7 @@ If you are using Fedora >= 13 then a Frama-C package is provided: - GNU make version >= 3.81 - OCaml >= 4.02.3 - a C compiler with standard C and POSIX headers and libraries +- [OCamlGraph][OCamlGraph] >= 1.8.5 The Frama-C GUI also requires: - Gtk (>= 2.4) @@ -220,10 +221,6 @@ The Frama-C GUI also requires: - GnomeCanvas 2.x - LablGtk >= 2.18.2 -If [OcamlGraph 1.8.5 or 1.8.6][OCamlGraph] is already installed, -then it will be used by Frama-C. -Otherwise the distributed local copy (file `ocamlgraph.tar.gz`) will be used. - If [Zarith][Zarith] is installed, it will be used by Frama-C. Otherwise another equivalent but less efficient library will be used. diff --git a/Makefile b/Makefile index da621b7ba301b3d08fdab85abf8b25e5cd1519fa..00a538592020b7bc8324c66088d63416fd3b2c42 100644 --- a/Makefile +++ b/Makefile @@ -218,7 +218,7 @@ DISTRIB_FILES:=\ Changelog config.h.in \ VERSION $(wildcard licenses/*) \ $(LIBC_FILES) \ - share/acsl.el share/configure.ac \ + $(wildcard share/emacs/*.el) share/configure.ac \ share/Makefile.config.in share/Makefile.common \ share/Makefile.generic \ share/Makefile.plugin.template share/Makefile.dynamic \ @@ -301,20 +301,6 @@ rebuild: config.status sinclude .Makefile.user # Should defines FRAMAC_PARALLEL and FRAMAC_USER_FLAGS -.PHONY:merlin -.merlin merlin: share/Makefile.config -#create Merlin file - echo "FLG -c $(FRAMAC_USER_MERLIN_FLAGS)" > .merlin - echo "PKG ocamlgraph" >> .merlin - echo "PKG findlib" >> .merlin - echo "PKG zarith" >> .merlin - echo "PKG lablgtk2" >> .merlin - echo "PKG apron" >> .merlin - echo "B lib/plugins" >> .merlin - echo "B lib/plugins/gui" >> .merlin - find src \( -name '.*' -o -name tests -o -name doc -o -name '*.cache' \) -prune \ - -o \( -type d -exec printf "B %s\n" {} \; -exec printf "S %s\n" {} \; \) >> .merlin - #Create link in share for local execution if .PHONY:create_share_link create_share_link: share/.gitignore @@ -768,7 +754,7 @@ PLUGIN_CMO:= slevel/split_strategy value_parameters \ utils/library_functions utils/mark_noresults slevel/separate \ legacy/state_imp utils/value_results utils/widen \ legacy/valarms legacy/warn utils/eval_typ \ - utils/mem_lvalue legacy/eval_op legacy/eval_terms legacy/eval_annots \ + legacy/eval_op legacy/eval_terms legacy/eval_annots \ domains/cvalue/locals_scoping \ legacy/eval_behaviors legacy/mem_exec \ legacy/eval_exprs legacy/eval_non_linear legacy/initial_state \ @@ -786,6 +772,7 @@ PLUGIN_CMO:= slevel/split_strategy value_parameters \ domains/apron/apron_domain \ domains/equality/equality_term domains/equality/equality \ domains/equality/equality_domain domains/offsm_domain \ + domains/symbolic_locs\ domains/cvalue/cvalue_transfer domains/cvalue/cvalue_init \ domains/cvalue/cvalue_domain domains/cvalue/builtins_float \ engine/evaluation engine/non_linear_evaluation \ @@ -864,7 +851,7 @@ PLUGIN_DYNAMIC:=$(DYNAMIC_FROM_ANALYSIS) PLUGIN_NAME:=From PLUGIN_DIR:=src/plugins/from PLUGIN_CMO:= from_parameters from_compute \ - functionwise callwise path_dependencies mem_dependencies from_register + functionwise callwise from_register PLUGIN_GUI_CMO:=from_register_gui PLUGIN_TESTS_DIRS:=idct test float PLUGIN_DISTRIBUTED:=yes @@ -1048,9 +1035,15 @@ PLUGIN_INTRO:=doc/code/intro_slicing.txt PLUGIN_TYPES_TODOC:= $(addsuffix .ml, $(SLICING_TYPES)) PLUGIN_UNDOC:=register.ml # slicing_gui.ml -PLUGIN_TESTS_DIRS:= slicing slicing2 -#PLUGIN_TESTS_DIRS_DEFAULT:=slicing -PLUGIN_TESTS_LIB:= tests/slicing/libSelect tests/slicing/libAnim +PLUGIN_TESTS_DIRS:= slicing +PLUGIN_TESTS_LIB:= tests/slicing/libSelect.ml tests/slicing/libAnim.ml \ + tests/slicing/simple_intra_slice.ml tests/slicing/combine.ml \ + tests/slicing/ex_spec_interproc.ml tests/slicing/horwitz.ml \ + tests/slicing/mark_all_slices.ml tests/slicing/merge.ml \ + tests/slicing/min_call.ml tests/slicing/select_by_annot.ml \ + tests/slicing/select_simple.ml tests/slicing/simple_intra_slice.ml \ + tests/slicing/slice_no_body.ml tests/slicing/switch.ml \ + tests/slicing/adpcm.ml PLUGIN_DISTRIBUTED:=yes PLUGIN_INTERNAL_TEST:=yes PLUGIN_DEPENDENCIES:=Pdg Callgraph Value @@ -1302,7 +1295,18 @@ acsl_tests: byte # Non-plugin test directories containing some ML files to compile TEST_DIRS_AS_PLUGIN=dynamic dynamic_plugin journal saveload spec misc syntax pretty_printing non-free libc value PLUGIN_TESTS_LIST += $(TEST_DIRS_AS_PLUGIN) -$(foreach d,$(TEST_DIRS_AS_PLUGIN),$(eval $(call COMPILE_TESTS_ML_FILES,$d,,))) + +LONELY_TESTS_ML_FILES=$(wildcard $(TEST_DIRS_AS_PLUGIN:%=tests/%/*.ml)) +LONELY_TESTS_BYTE_FILES=$(LONELY_TESTS_ML_FILES:%.ml=%.cmo) +LONELY_TESTS_OPT_FILES=$(LONELY_TESTS_ML_FILES:%.ml=%.cmx) +LONELY_TESTS_DYN_FILES=$(LONELY_TESTS_ML_FILES:%.ml=%.cmxs) +$(LONELY_TESTS_BYTE_FILES): BFLAGS+=$(TEST_DIRS_AS_PLUGIN:%=-I tests/%) +$(LONELY_TESTS_OPT_FILES): OFLAGS+=$(TEST_DIRS_AS_PLUGIN:%=-I tests/%) +$(LONELY_TESTS_DYN_FILES): OFLAGS+=$(TEST_DIRS_AS_PLUGIN:%=-I tests/%) +.PRECIOUS: $(LONELY_TESTS_OPT_FILES) \ + $(LONELY_TESTS_DYN_FILES) \ + $(LONELY_TESTS_BYTE_FILES) \ + $(LONELY_TESTS_BYTE_FILES:.cmo=%.cmi) # Tests directories without .ml but that must be tested anyway PLUGIN_TESTS_LIST += cil @@ -1584,16 +1588,18 @@ install:: install-lib $(MKDIR) $(FRAMAC_DATADIR)/libc/arpa $(PRINT_INSTALL) shared files $(CP) \ - $(wildcard share/*.c share/*.h) share/acsl.el \ + $(wildcard share/*.c share/*.h) \ share/Makefile.dynamic share/Makefile.plugin.template share/Makefile.kernel \ share/Makefile.config share/Makefile.common share/Makefile.generic \ share/configure.ac \ $(FRAMAC_DATADIR) + $(MKDIR) $(FRAMAC_DATADIR)/emacs + $(CP) $(wildcard share/emacs/*.el) $(FRAMAC_DATADIR)/emacs $(CP) share/frama-c.rc $(ICONS) $(FRAMAC_DATADIR) $(CP) $(FEEDBACK_ICONS_DEFAULT) $(FRAMAC_DATADIR)/theme/default $(CP) $(FEEDBACK_ICONS_COLORBLIND) $(FRAMAC_DATADIR)/theme/colorblind if [ -d $(EMACS_DATADIR) ]; then \ - $(CP) share/acsl.el $(EMACS_DATADIR); \ + $(CP) $(wildcard share/emacs/*.el) $(EMACS_DATADIR); \ fi $(CP) share/Makefile.dynamic_config.external \ $(FRAMAC_DATADIR)/Makefile.dynamic_config @@ -1665,9 +1671,7 @@ uninstall:: #################### CEA_PROPRIETARY:= \ - src/*/*/*nonfree*.ml* \ - src/plugins/finder/*.ml* \ - src/plugins/finder/configure.ac src/plugins/finder/Makefile.in + src/*/*/*nonfree*.ml* .PHONY: headers @@ -1878,6 +1882,8 @@ PLUGIN_DEP_LIST:=$(PLUGIN_LIST) $(PLUGIN_DYN_LIST) $(PRINT_MAKING) .depend $(RM) .depend $(OCAMLDEP) $(INCLUDES) $(FILES_FOR_OCAMLDEP) > .depend + $(OCAMLDEP) $(INCLUDES) $(TEST_DIRS_AS_PLUGIN:%=-I tests/%) \ + $(LONELY_TESTS_ML_FILES) >> .depend $(CHMOD_RO) .depend #Used by internal plugins to wait until the *.mli of all the plugins are in diff --git a/Makefile.generating b/Makefile.generating index 1fb5c7f6db1b49217a1c912b8f51a991e937c7de..bf0147b9842f8c8d046da965ed28b79882d3af5a 100644 --- a/Makefile.generating +++ b/Makefile.generating @@ -172,6 +172,22 @@ else $(OCAMLC) str.cma $< -o $@ endif +# Merlin # + +.PHONY:merlin +.merlin merlin: share/Makefile.config Makefile.generating + $(PRINT_MAKING) $@ + echo "FLG -c $(FLAGS) $(FRAMAC_USER_MERLIN_FLAGS)" > .merlin + for PKG in $(LIBRARY_NAMES); do echo PKG $$PKG >> .merlin; done + for PKG in $(LIBRARY_NAMES_GUI); do echo PKG $$PKG >> .merlin; done + echo "B lib/plugins" >> .merlin + echo "B lib/plugins/gui" >> .merlin + find src \( -name '.*' -o -name tests -o -name doc -o -name '*.cache' \) -prune \ + -o \( -type d -exec printf "B %s\n" {} \; -exec printf "S %s\n" {} \; \) >> .merlin + +ifeq ("$(DEVELOPMENT)","yes") +all:: .merlin +endif # Local Variables: # mode: makefile diff --git a/configure.in b/configure.in index a1a1cefe9635efb742bfc1213008249c4533f925..6610e973bc3d41b3d3a481f7c4dd498304b57ff6 100644 --- a/configure.in +++ b/configure.in @@ -107,7 +107,7 @@ AC_MSG_CHECKING(version of OCaml) OCAMLVERSION=`$OCAMLC -v | sed -n -e 's|.*version *\(.*\)$|\1|p' ` AC_MSG_RESULT($OCAMLVERSION) case $OCAMLVERSION in - 0.*|1.*|2.*|3.*|4.00.*|4.01.*|4.02.[012]) + 0.*|1.*|2.*|3.*|4.00.*|4.01.*|4.02.[[012]]) AC_MSG_ERROR(Incompatible OCaml version; use 4.02.3+.);; *) OCAML_ANNOT_OPTION="-bin-annot";; @@ -247,8 +247,12 @@ AC_CHECK_PROG(OTAGS,otags,otags,) AC_MSG_CHECKING(for ocamlgraph) OCAMLGRAPH=$($OCAMLFIND query ocamlgraph -format %v) +if test -z "$OCAMLGRAPH" ; then + AC_MSG_ERROR(Cannot find ocamlgraph via ocamlfind \ +(requires ocamlgraph 1.8.5 or higher).) +fi case $OCAMLGRAPH in - 0.* | 1.[01234567].* \ + 0.* | 1.[[01234567]].* \ | 1.8.0 | 1.8.0+dev \ | 1.8.1 | 1.8.1+dev \ | 1.8.2 | 1.8.2+dev \ diff --git a/doc/developer/advance.tex b/doc/developer/advance.tex index f15f5ac83f7c216dedbaf4e403f3ff09408c16a3..ef5b3dc1c5a9de0c993f1262f7bfab7c24152b15 100644 --- a/doc/developer/advance.tex +++ b/doc/developer/advance.tex @@ -1096,7 +1096,8 @@ options are always given between quotes. An option following a \texttt{+} while an option following a \texttt{-} is removed from it. The directive can be empty (meaning that the corresponding test will use the standard set of options). As with \texttt{OPT}, each \texttt{STDOPT} corresponds to a different -(set of) test case(s). +(set of) test case(s). \texttt{LOG} directives preceding an \texttt{STDOPT} +are taken into account. \item The syntax for directives \texttt{EXECNOW}\sscodeidxdef{Test}{Directive}{EXECNOW} and \texttt{EXEC}\sscodeidxdef{Test}{Directive}{EXEC} is the following. diff --git a/doc/developer/refman.tex b/doc/developer/refman.tex index 7869bf817e7671450a7ba0a2b1713b942e842443..a7597b90da29fb64433d68a5dee3a1727f46f70d 100644 --- a/doc/developer/refman.tex +++ b/doc/developer/refman.tex @@ -803,7 +803,7 @@ directory & \\ & \texttt{PLUGIN\_TESTS\_DIRS} & Directories containing tests &\\ & \texttt{PLUGIN\_TESTS\_DIRS\_DEFAULT} & tests to be included in the default test suite (all directories by default) & no \\ -& \texttt{PLUGIN\_TESTS\_LIBS} & Specific \texttt{.cmo} files used by plug-in +& \texttt{PLUGIN\_TESTS\_LIBS} & Specific \texttt{.ml} files used by plug-in tests &\\ & \texttt{PLUGIN\_NO\_DEFAULT\_TEST} & Whether to include tests in default test suite. &\\ @@ -871,9 +871,13 @@ in the distribution & no \\ \texttt{tests/\$(notdir \$(PLUGIN\_DIR))}).\index{Plug-in!Test} \item Variable \texttt{PLUGIN\_TESTS\_LIB}\codeidxdef{PLUGIN\_TESTS\_LIB} - is the \texttt{.cmo} plug-in specific files used by plug-in tests. Do not write - its file path (which is \texttt{\$(PLUGIN\_TESTS\_DIRS})) nor its file - extension (which is \texttt{.cmo}).\index{Plug-in!Test} + contains the \texttt{.ml} plug-in specific files used by plug-in + tests.\index{Plug-in!Test} Note that if you wish to have these files + compiled before launching the tests (as opposed to e.g. compile them via + an \verb|EXECNOW| directive in a test file), you should add the + corresponding \verb|.cmo| and \verb|.cmxs| files as pre-requisite + of the \verb|$(PLUGIN_DIR)/tests/ptests_config| %$ + target. \item Variable \texttt{PLUGIN\_NO\_DEFAULT\_TEST}% \codeidxdef{PLUGIN\_NO\_DEFAULT\_TEST} indicates diff --git a/doc/developer/tutorial.tex b/doc/developer/tutorial.tex index 87035e583242d4ef87fd2c4429a60a0c74791238..f2502bd624f3ad88db353f5a88d748de76e270b0 100644 --- a/doc/developer/tutorial.tex +++ b/doc/developer/tutorial.tex @@ -8,13 +8,90 @@ This chapter aims at helping a developer to write his first \framac plug-in. At the end of the tutorial, any developer should be able to extend \framac with a simple analysis available as a \framac plug-in. This chapter was written as a step-by-step explanation on how to proceed towards this goal. It will get you -started but does not tell the whole story. You will get it with your own -experiment, and by reading the other chapters of this guide on need. +started, but it does not tell the whole story. You will get it with your own +experiments, and by reading the other chapters of this guide as needed. -First Section~\ref{tut2:architecture} shows what does a plug-in look like. Then +First, Section~\ref{tut2:environment} describes how to quickly setup a +development environment for \framac. +Section~\ref{tut2:architecture} shows what a plug-in looks like. Then Section~\ref{tut2:hello} explains the basis for writing a standard \framac plug-in\index{Plug-in}, while Section \ref{tut2:cfg} details how to interact -with \framac and others plug-ins to implement analyzers of \C programs. +with \framac and other plug-ins to implement analyzers of \C programs. + +\section{Quick Setup of a Development Environment}\label{tut2:environment} + +This setup is based on Emacs as the IDE, with OPAM for OCaml package +installation and Merlin for OCaml source code navigation. +Similar environments can be setup using other editors, such as Vim and +Sublime Text, but they are not detailed here; please refer to the Merlin +documentation for further details on how to setup other editors for OCaml +development. + +\subsection{Emacs Configuration Files} + +The \framac source distribution includes, in its \texttt{share} directory, +some \texttt{frama-c-*.el} files ({\em Emacs-lisp} scripts) +with default settings for an OCaml development environment based on +Emacs + OPAM + Merlin. To set it up, do the following: + +\begin{enumerate} +\item Install Emacs, OPAM, and OPAM packages \textsf{merlin}, \textsf{tuareg} + and \textsf{ocp-indent}; +\item Copy \texttt{share/frama-c-*.el} to a directory in your Emacs load-path; +\item Add \texttt{(load-library "frama-c-recommended")} to your \texttt{.emacs} + init file. +\end{enumerate} + +For instance, you can run these commands (after installing OPAM): + +\begin{verbatim} +opam install merlin tuareg ocp-indent +mkdir ~/.emacs.d/frama-c +cp <path to frama-c sources>/share/frama-c-*.el ~/.emacs.d/frama-c/ +\end{verbatim} + +And then add this in the beginning of your \texttt{\textasciitilde/.emacs}: + +\begin{verbatim} +(add-to-list 'load-path "~/.emacs.d/frama-c") +(load-library "frama-c-recommended") +\end{verbatim} + +You can replace \texttt{frama-c-recommended} with \texttt{frama-c-dev} in the +above line. The former contains some extra, optional settings, while the latter +contains only the most important settings for OCaml development. We recommend +you review the definitions in \texttt{frama-c-recommended} and remove those you +find unnecessary. + +\subsection{Quick Merlin guide} + +Merlin\footnote{Merlin is available on Github + (\url{https://github.com/the-lambda-church/merlin}) and as an OPAM package.} +is a tool for OCaml type information, source code navigation and +auto-completion. + +Detailed instructions for using Merlin with Emacs are available at +\url{https://github.com/the-lambda-church/merlin/wiki/emacs-from-scratch}. + +The \framac Makefile contains a target \textsf{merlin} that generates an +appropriate \texttt{.merlin} file to be used when editing \framac +\texttt{.ml/.mli} files. Run \texttt{make merlin} after compiling \framac, +and the generated file will be automatically used when opening \framac OCaml +sources. + +Here is a quick summary of the most useful commands when editing +\texttt{.ml/.mli} files: + +\begin{itemize} +\item \texttt{Ctrl+c Ctrl+t}: display type information + (repeat it to further expand types) +\item \texttt{Ctrl+c Ctrl+l}: jump to definition + (for variables, types, modules, etc.) +\item \texttt{Ctrl+c Ctrl+x}: jump to next error in current buffer +\end{itemize} + +Merlin also includes an auto-complete feature. Check its website for +further documentation. \section{What Does a Plug-in Look Like?}\label{tut2:architecture} \index{Plug-in!Architecture}\index{Architecture!Plug-in} diff --git a/doc/rte/rte.tex b/doc/rte/rte.tex index 8abc9b94519fffad4fe3b35ba4bd0288a64110e1..afc079edcfea122f9cf0032385ad74f1c0c2bc43 100644 --- a/doc/rte/rte.tex +++ b/doc/rte/rte.tex @@ -482,9 +482,11 @@ Similarly, if \lstinline|t| is declared as \lstinline|int t[10][10]|, the access \lstinline|0 <= j < 10|, even though \lstinline|t[0][12]| is also \lstinline|t[1][2]|. -Finally, pointers to functions are not treated by \rte{} since there is no -predicate in ACSL expressing that such a pointer actually points to an existing -function. +Finally, dereferencing a pointer to a functions leads to the emission of +a \lstinline|\valid_function| predicate, to protect against a possibly +invalid pointer (\cnn{} 6.3.2.3:8). Those assertions are generated provided +option \lstinline|-rte-pointer-call| is set. + \begin{example} ~ @@ -524,7 +526,7 @@ int main(void) { \begin{example} ~ An example of memory access validity annotation generation for structured types, -with option \lstinline|-safe-arrays| set. +with options \lstinline|-safe-arrays| and \lstinline|-rte-pointer-call| set. \begin{listing-nonumber} struct S { @@ -554,15 +556,14 @@ int main() { a = (buff.data[i].cell[j].next)->val; /*@ assert rte: index_bound: i < 10; */ + /*@ assert rte: function_pointer: \valid_function(buff.data[i].f); */ (*(buff.data[i].f))(a); return 0; } \end{listing-nonumber} -There is no annotation generated for the validity of the field -\lstinline|buff.data[i].f| because it is a function pointer. \rte{} emits a -warning in such a case. +Notice the annotation generated for the call \lstinline|(*(buff.data[i].f))(a)|. \end{example} @@ -759,8 +760,6 @@ considered: producing a value outside of the representable range (\cnn{} 6.3.1.5) \item Conversion between two pointer types produces a result that is incorrectly aligned (\cnn{} 6.3.2.3) -\item Use of a pointer to call a function whose type is not compatible with the - pointed-to type (\cnn{} 6.3.2.3) \item Use of a variable with automatic storage duration before its initialization (\cnn{} 6.7.8.10): such a variable has an indeterminate value %% technically, not an undefined behavior (does not appear in the list of undefined behavior in diff --git a/doc/speclang/Makefile b/doc/speclang/Makefile index 9fd5b3c2ce2563ccabc465094140ae9a33f5d9b2..4f433df051a8bed7e6e8e37dfa0ddc49bbad640f 100644 --- a/doc/speclang/Makefile +++ b/doc/speclang/Makefile @@ -3,9 +3,9 @@ MAIN=main PDF_OUTPUTS=acsl-implementation.pdf acsl.pdf ## Notes: -## ARCHIVED_PDF_OUTPUTS=acsl-mini-tutorial.pdf -## PDF_OUPUTS are copied to "../manuals" directory bg "install" target - +## no longer built target: acsl-mini-tutorial.pdf +## PDF_OUTPUTS are copied to "../manuals" directory bg "install" target + BNF_FILES=term.tex predicate.tex binders.tex fn_behavior.tex \ oldandresult.tex at.tex loc.tex assertions.tex loops.tex \ assertions.tex loops.tex allocation.tex generalinvariants.tex \ @@ -14,9 +14,9 @@ BNF_FILES=term.tex predicate.tex binders.tex fn_behavior.tex \ logicreads.tex memory.tex data_invariants.tex volatile-gram.tex \ exitbehavior.tex dependencies.tex welltyped.tex list-gram.tex -BNF_DEPS=$(BNF_FILES:.tex=_modern.bnf) +BNF_DEPS=$(BNF_FILES:.tex=.bnf) -DEPS_MODERN=speclang_modern.tex macros_modern.tex \ +DEPS= speclang_modern.tex macros_modern.tex \ intro_modern.tex libraries_modern.tex compjml_modern.tex \ div_lemma.c assigns.c invariants.c example-lt-modern.tex \ malloc_free_fn.c malloc-free2-fn.c loop-frees.c isqrt.c \ @@ -79,19 +79,14 @@ include ../MakeLaTeXModern ./pp -utf8 -c $< > $@ %.tex: %.ctex pp - rm -f $@ + @rm -f $@ ./pp $< > $@ - chmod a-w $@ + @chmod a-w $@ %.bnf: %.tex transf - rm -f $@ + @rm -f $@ ./transf $< > $@ - chmod a-w $@ - -%_modern.bnf: %.tex transf - rm -f $@ - ./transf -modern $< > $@ - chmod a-w $@ + @chmod a-w $@ %.ml: %.mll ocamllex $< @@ -229,22 +224,22 @@ super-clean: clean @echo "Removing PDF outputs: $(PDF_OUTPUTS)" rm -f $(PDF_OUTPUTS) -# version WEB liée à ce qui est implementé -acsl-implementation.pdf: $(DEPS_MODERN) $(FRAMAC_MODERN) ../../VERSION +# The ACSL document annoted about what is not implemented into Frama-C +acsl-implementation.pdf: $(DEPS) $(FRAMAC_MODERN) ../../VERSION acsl-implementation.tex: $(MAIN).tex Makefile @rm -f $@ sed -e '/^% rubber:/s/main.cb/acsl-implementation.cb/g' $^ > $@ @chmod a-w $@ -# version WEB du langage ACSL -acsl.pdf: $(DEPS_MODERN) $(FRAMAC_MODERN) +# The ACSL reference document +acsl.pdf: $(DEPS) $(FRAMAC_MODERN) acsl.tex: $(MAIN).tex Makefile - rm -f $@ + @rm -f $@ sed -e '/^% rubber:/s/main.cb/acsl.cb/g' \ -e '/^%--.*{PrintImplementationRq}/s/%--//' $^ > $@ - chmod a-w $@ + @chmod a-w $@ tutorial-www: acsl-mini-tutorial.pdf acsl-mini-tutorial.html rm -f ../www/src/acsl_tutorial_index.hevea diff --git a/doc/speclang/at.tex b/doc/speclang/at.tex index cc5c2012dd25bfb747e235da7cb979eb2d92b2b7..9661ae056e842b08babedfd083442ab9920822a6 100644 --- a/doc/speclang/at.tex +++ b/doc/speclang/at.tex @@ -1,7 +1,11 @@ \begin{syntax} - term ::= "\at" "(" term "," id ")" - \ - pred ::= "\at" "(" pred "," id ")" + term ::= "\at" "(" term "," label-id ")" + \ + pred ::= "\at" "(" pred "," label-id ")" + \ + label-id ::= "Here" | "Old" | "Pre" | "Post" ; + | "LoopEntry" | "LoopCurrent" | "Init" | ; + | id ; \end{syntax} %%% Local Variables: diff --git a/doc/speclang/biblio.bib b/doc/speclang/biblio.bib index 80b4686158ba9622fa0b2d735ba03c51f4f4b63d..69554dd28e2cf45f99305d2fed096aa5511fdb40 100644 --- a/doc/speclang/biblio.bib +++ b/doc/speclang/biblio.bib @@ -96,7 +96,8 @@ author = {David R. Cok and Joseph R. Kiniry}, title = {{ESC/Java2} Implementation Notes}, year = 2007, - month = {may}, + month = may, + institution = {University College Dublin}, note = {\url{http://secure.ucd.ie/products/opensource/ESCJava2/ESCTools/docs/Escjava2-ImplementationNotes.pdf}} } @@ -121,7 +122,7 @@ booktitle = {ESOP '07: Proceedings of the 16th European Symposium on Programming}, title = {Dependent Types for Low-Level Programming}, year = {2006}, - month = {Oct} + month = Oct } @MISC{jmlhomepage, @@ -135,7 +136,7 @@ title = {Union and Cast in Deductive Verification}, booktitle = {Proceedings of the {C/C++} Verification Workshop}, year = {2007}, - month = {jul}, + month = jul, institution = {Radboud University Nijmegen}, number = {ICIS-R07015}, note = {\url{http://www.lri.fr/~moy/union_and_cast/union_and_cast.pdf}} @@ -273,7 +274,7 @@ howpublished={\url{http://manju.cs.berkeley.edu/cil/}} title = {{Formal Verification of Floating-Point Programs}}, booktitle = {18th IEEE International Symposium on Computer Arithmetic}, pages = {187-194}, - month = {June}, + month = jun, year = 2007, address = {Montpellier, France}, topics = {team,lri}, diff --git a/doc/speclang/exitbehavior.tex b/doc/speclang/exitbehavior.tex index c586f6c086d6c43d2225b76e9ae3df83e4786e2d..a74da1c6dfe4c815cf5550bf59fb4b920d196677 100644 --- a/doc/speclang/exitbehavior.tex +++ b/doc/speclang/exitbehavior.tex @@ -1,10 +1,9 @@ \begin{syntax} - abrupt-clause-fn ::= exits-clause + abrupt-clause ::= exits-clause \ exits-clause ::= "exits" pred ";" \ - abrupt-clause-stmt ::= exits-clause ; - | breaks-clause | continues-clause | returns-clause + abrupt-clause-stmt ::= breaks-clause | continues-clause | returns-clause \ breaks-clause ::= "breaks" pred ";" \ @@ -13,4 +12,4 @@ returns-clause ::= "returns" pred ";" \ term ::= "\exit_status" -\end{syntax} \ No newline at end of file +\end{syntax} diff --git a/doc/speclang/fn_behavior.tex b/doc/speclang/fn_behavior.tex index 1803afda584b5b60bea30620ece0e11c0609f07e..f5169bf8ce0ad0a997b64522b7afedd2f2377497 100644 --- a/doc/speclang/fn_behavior.tex +++ b/doc/speclang/fn_behavior.tex @@ -1,5 +1,5 @@ \begin{syntax} - function-contract ::= requires-clause* terminates-clause?; + function-contract [empty contracts are forbidden] ::= requires-clause* terminates-clause?; decreases-clause? simple-clause*; named-behavior* completeness-clause* \ @@ -10,7 +10,7 @@ decreases-clause ::= "decreases" term ("for" id)? ";" \ simple-clause ::= assigns-clause | ensures-clause ; - | allocation-clause | abrupt-clause-fn + | allocation-clause | abrupt-clause \ assigns-clause ::= "assigns" locations ";" \ diff --git a/doc/speclang/logic.tex b/doc/speclang/logic.tex index 735c19d95fd10742178805318c5287fa7e7da8ad..88056a431c892d487f4cb290d84a31cea9c1c2fb 100644 --- a/doc/speclang/logic.tex +++ b/doc/speclang/logic.tex @@ -16,8 +16,7 @@ type-var-binders ::= "<" type-var; (, type-var)* ">" \ - poly-id ::= ident ; normal identifier - | ident type-var-binders ; polymorphic object identifier + poly-id ::= ident type-var-binders ; polymorphic object identifier \ logic-const-def ::= "logic" type-expr; poly-id "=" term ";" diff --git a/doc/speclang/logiclabels.tex b/doc/speclang/logiclabels.tex index ee97a6d40a8bca1dd9a17cfcd98728889be40b3f..caa4d70e00188dc16340330109ee09f266dc9738 100644 --- a/doc/speclang/logiclabels.tex +++ b/doc/speclang/logiclabels.tex @@ -1,5 +1,5 @@ \begin{syntax} ident ::= id label-binders ; normal identifier with labels \ - label-binders ::= "{" id (, id)* "}" + label-binders ::= "{" label-id (, label-id)* "}" \end{syntax} diff --git a/doc/speclang/loops.tex b/doc/speclang/loops.tex index ae9fc41b3924262ff75af0c8ac72d16403f1dbea..1cbe3aea3d2a31b5e3dcc5257815433a28c6c708 100644 --- a/doc/speclang/loops.tex +++ b/doc/speclang/loops.tex @@ -11,7 +11,7 @@ "do" C-statement ; "while" "(" C-expression ")" ";" \ - loop-annot ::= loop-clause* loop-behavior* ; + loop-annot [empty loop annotations are forbidden] ::= loop-clause* loop-behavior* ; loop-variant? \ loop-clause ::= loop-invariant | loop-assigns ; @@ -19,8 +19,7 @@ \ loop-invariant ::= "loop" "invariant" pred ";" \ - loop-assigns ::= "loop" - "assigns" locations ";" ; + loop-assigns ::= "loop" "assigns" locations ";" ; \ loop-behavior ::= "for" id ("," id)* ":" loop-clause+ ; annotation for behavior $id$ \ diff --git a/doc/speclang/main.tex b/doc/speclang/main.tex index 3f37fedffeb4f88b9e13fc1256801ccaa45010bd..e6e1fd4addedae7a0ac68b2624ee16f232c7571a 100644 --- a/doc/speclang/main.tex +++ b/doc/speclang/main.tex @@ -230,6 +230,10 @@ as much as possible of ACSL. \section{Changes} \subsection{Version 1.12} +\begin{itemize} +\item Fixes syntax rule for statement contracts in allowing completeness clauses + (figure~\ref{fig:gram:stcontracts}) +\end{itemize} \subsection{Version 1.11} \begin{itemize} diff --git a/doc/speclang/memory.tex b/doc/speclang/memory.tex index 76a2f12b56ac22d1e00ac9fb3aaaf8d72e96758f..e692f775babd545f5e2809418269ed27c5f64547 100644 --- a/doc/speclang/memory.tex +++ b/doc/speclang/memory.tex @@ -12,9 +12,9 @@ | "\valid_read" one-label? "(" location-address ")"; | "\separated" "(" location-address "," location-addresses ")" ; \ - one-label ::= "{" id "}" ; + one-label ::= "{" label-id "}" ; \ - two-labels ::= "{" id, id "}" ; + two-labels ::= "{" label-id, label-id "}" ; \ location-addresses ::= location-address ("," location-address)* \ diff --git a/doc/speclang/speclang_modern.tex b/doc/speclang/speclang_modern.tex index 5b4ec424e16dfded97337139a98423b4e5c4b2bd..9dc8467c0985983aad8cc45c0ff324ea9da815fb 100644 --- a/doc/speclang/speclang_modern.tex +++ b/doc/speclang/speclang_modern.tex @@ -74,7 +74,7 @@ that we will introduce progressively. \begin{figure}[t] \begin{cadre} - \input{term_modern.bnf} + \input{term.bnf} \end{cadre} \caption{Grammar of terms} \label{fig:gram:term} @@ -82,7 +82,7 @@ that we will introduce progressively. \begin{figure}[hb] \begin{cadre} - \input{predicate_modern.bnf} + \input{predicate.bnf} \end{cadre} \caption{Grammar of predicates} \label{fig:gram:pred} @@ -115,7 +115,7 @@ With respect to C pure expressions, the additional constructs are as follows: quantification by \lstinline|\exists $\tau$ $x_1$,$\ldots$,$x_n$; e|. \begin{figure}[t] - \begin{cadre} \input{binders_modern.bnf} + \begin{cadre} \input{binders.bnf} \end{cadre} \caption{Grammar of binders and type expressions} \label{fig:gram:binders} @@ -939,7 +939,7 @@ Unlike in C, conversion of an aggregate of C type \lstinline|struct| $\tau$ to \begin{figure}[t] \begin{cadre} - \input{fn_behavior_modern.bnf} + \input{fn_behavior.bnf} \end{cadre} \caption{Grammar of function contracts} \label{fig:gram:contracts} @@ -947,7 +947,7 @@ Unlike in C, conversion of an aggregate of C type \lstinline|struct| $\tau$ to \begin{figure}[t] \begin{cadre} - \input{oldandresult_modern.bnf} + \input{oldandresult.bnf} \end{cadre} \caption{\protect\old and \protect\result in terms} \label{fig:gram:oldandresult} @@ -1330,7 +1330,7 @@ More generally, we introduce syntactic constructs to denote \emph{sets of \begin{figure} \begin{cadre} - \input{loc_modern.bnf} + \input{loc.bnf} \end{cadre} \caption{Grammar for sets of terms} \label{fig:gram:locations} @@ -1465,7 +1465,7 @@ Annotations on C statements are of three kinds: \label{sec:assertions} \begin{figure}[t] \begin{cadre} - \input{assertions_modern.bnf} + \input{assertions.bnf} \end{cadre} \caption{Grammar for assertions} \label{fig:gram:assertions} @@ -1497,7 +1497,7 @@ as an extension of the grammar of C statements. \begin{figure}[t] \begin{cadre} - \input{loops_modern.bnf} + \input{loops.bnf} \end{cadre} \caption{Grammar for loop annotations} \label{fig:gram:loops} @@ -1635,7 +1635,7 @@ shown in Figure~\ref{fig:advancedinvariants}. \begin{figure}[t] \begin{cadre} - \input{generalinvariants_modern.bnf} + \input{generalinvariants.bnf} \end{cadre} \caption{Grammar for general inductive invariants} \label{fig:advancedinvariants} @@ -1798,6 +1798,15 @@ functions. When such an annotation needs to refer to a given memory state, it has to be given a label binder: this is described in Section~\ref{sec:logicalstates}. +\begin{figure}[t] + \begin{cadre} + \input{at_modern.bnf} + \end{cadre} + \caption{Grammar for \lstinline|at| construct} + \label{fig:gram:at} +\end{figure} + + \begin{example} The code below implements the famous extended Euclid's algorithm for computing the greatest common divisor of two integers $x$ and @@ -1837,7 +1846,7 @@ Here is an example illustrating the use of \lstinline|LoopEntry| and \index{statement contract}\index{contract} \begin{figure}[t] \begin{cadre} - \input{st_contracts_modern.bnf} + \input{st_contracts.bnf} \end{cadre} \caption{Grammar for statement contracts} \label{fig:gram:stcontracts} @@ -2059,7 +2068,7 @@ void f() { while(1); } \label{sec:logicspec} \index{logic specification}\index{specification} \begin{figure}[t] - \begin{cadre}\vfill \input{logic_modern.bnf} + \begin{cadre}\vfill \input{logic.bnf} \vfill\end{cadre} \caption{Grammar for global logic definitions} \label{fig:gram:logic} @@ -2102,7 +2111,7 @@ grammar for those style of definitions is given on Figure~\ref{fig:gram:inductive}. \index{inductive definitions} \begin{figure}[t] - \begin{cadre} \input{inductive_modern.bnf} + \begin{cadre} \input{inductive.bnf} \end{cadre} \caption{Grammar for inductive definitions} \label{fig:gram:inductive} @@ -2156,7 +2165,7 @@ Figure~\ref{fig:gram:logicdecl}. \indextt{axiomatic} \begin{figure}[t] - \begin{cadre} \input{logicdecl_modern.bnf} + \begin{cadre} \input{logicdecl.bnf} \end{cadre} \caption{Grammar for axiomatic declarations} \label{fig:gram:logicdecl} @@ -2239,7 +2248,7 @@ a way to check consistency. \begin{figure}[t] \begin{cadre} - \input{higherorder_modern.bnf} + \input{higherorder.bnf} \end{cadre} \caption{Grammar for higher-order constructs} \label{fig:gram:higherorder} @@ -2300,7 +2309,7 @@ higher-order logic. \begin{figure}[t] \begin{cadre} \index{type!record}\index{type!sum} - \input{logictypedecl_modern.bnf} + \input{logictypedecl.bnf} \end{cadre} \caption{Grammar for concrete logic types and pattern-matching} \label{fig:gram:logictype} @@ -2368,7 +2377,7 @@ context. \begin{figure}[t] \begin{cadre} - \input{logiclabels_modern.bnf} + \input{logiclabels.bnf} \end{cadre} \caption{Grammar for logic declarations with labels} \label{fig:gram:logiclabels} @@ -2401,7 +2410,7 @@ context. \begin{figure}[t] \begin{cadre} - \input{logicreads_modern.bnf} + \input{logicreads.bnf} \end{cadre} \caption{Grammar for logic declarations with \lstinline|reads| clauses} \label{fig:gram:logicreads} @@ -2482,6 +2491,8 @@ disjoint from the declared footprint. \label{sec:specmodules} \index{module} +\experimental + \notimplemented{Specification modules can be provided} to encapsulate several logic definitions, for example \listinginput{1}{listmodule.c} @@ -2509,7 +2520,7 @@ It is a set of terms of some pointer type as defined in Section~\ref{sec:locatio \begin{figure}[t] \begin{cadre} - \input{memory_modern.bnf} + \input{memory.bnf} \end{cadre} \caption{Grammar extension of terms and predicates about memory} \label{fig:gram:memory} @@ -2648,7 +2659,7 @@ it is left for convenience like for \assigns clauses. \begin{figure}[t] \begin{cadre} - \input{allocation_modern.bnf} + \input{allocation.bnf} \end{cadre} \caption{Grammar for dynamic allocations and deallocations} \label{fig:gram:allocation} @@ -2973,7 +2984,7 @@ is the same as function \lstinline|\concat| (resp. \lstinline|\repeat|). \begin{figure}[t] \begin{cadre} - \input{list-gram_modern.bnf} + \input{list-gram.bnf} \end{cadre} \caption{Notations for built-in list datatype} \label{fig:gram:list} @@ -2996,7 +3007,7 @@ is the same as function \lstinline|\concat| (resp. \lstinline|\repeat|). \begin{figure}[t] \begin{cadre} - \input{exitbehavior_modern.bnf} + \input{exitbehavior.bnf} \end{cadre} \caption{Grammar of contracts about abrupt terminations} \label{fig:gram:abrupt-clauses} @@ -3063,10 +3074,9 @@ can be used only in \exits{}, \listinginput{8}{mayexit.c} \end{example} -%% TODO: +%% DONE: %% Discuter de la sémantique du assign en présence d'une terminaison abrupte %% dans un contrat de fonction et de statement. - % [Patrick B.] START proposition: Contrary to \ensures clauses, \assigns\indextt{assigns}, \allocates\indextt{allocates} and \frees\indextt{frees} clauses of function @@ -3092,7 +3102,7 @@ dependencies\index{dependency} and \begin{figure}[t] \begin{cadre} - \input{dependencies_modern.bnf} + \input{dependencies.bnf} \end{cadre} \caption{Grammar for dependencies information} \label{fig:gram:dep} @@ -3151,7 +3161,7 @@ between: \begin{figure}[t] \begin{cadre} - \input{data_invariants_modern.bnf} + \input{data_invariants.bnf} \end{cadre} \caption{Grammar for declarations of data invariants} \label{fig:gram:datainvariants} @@ -3259,7 +3269,7 @@ implementation must remain private. \begin{figure}[b] \begin{cadre} - \input{model_modern.bnf} + \input{model.bnf} \end{cadre} \caption{Grammar for declarations of model variables and fields} \label{fig:gram:model} @@ -3396,7 +3406,7 @@ grammar are the following: \begin{figure}[t] \begin{cadre} - \input{ghost_modern.bnf} + \input{ghost.bnf} \end{cadre} \caption{Grammar for ghost statements} \label{fig:gram:ghost} @@ -3488,7 +3498,7 @@ may return different values. \begin{figure}[h] \begin{cadre} - \input{volatile-gram_modern.bnf} + \input{volatile-gram.bnf} \end{cadre} \caption{Grammar for volatile constructs} \label{fig:gram:volatile} @@ -3573,7 +3583,7 @@ heterogeneous casts. \begin{figure}[h] \begin{cadre} - \input{welltyped_modern.bnf} + \input{welltyped.bnf} \end{cadre} \caption{Grammar for predicates related to well-typedness } \label{fig:gram:welltyped} diff --git a/doc/speclang/st_contracts.tex b/doc/speclang/st_contracts.tex index e1e8b82cf4f4d4712a26ca518b647336a095b6f7..ded1fd59434621f9836e2800075073789f71a749 100644 --- a/doc/speclang/st_contracts.tex +++ b/doc/speclang/st_contracts.tex @@ -1,11 +1,11 @@ \begin{syntax} statement ::= "/*@" statement-contract "*/" statement \ - statement-contract ::= ("for" id ("," id)* ":")? requires-clause* ; - simple-clause-stmt* named-behavior-stmt* + statement-contract [empty contracts are forbidden] ::= ("for" id ("," id)* ":")? requires-clause* ; + simple-clause-stmt* named-behavior-stmt* ; + completeness-clause* \ - simple-clause-stmt::= simple-clause ; - | allocation-clause | abrupt-clause-stmt + simple-clause-stmt::= simple-clause | abrupt-clause-stmt \ named-behavior-stmt ::= "behavior" id ":" behavior-body-stmt \ diff --git a/doc/speclang/term.tex b/doc/speclang/term.tex index ee28c19ee4026fac964b62617b51f052deaa6b08..53230fb91412bf4d109f966d1422e87e3b11c5d0 100644 --- a/doc/speclang/term.tex +++ b/doc/speclang/term.tex @@ -36,7 +36,7 @@ | id ":" term ; syntactic naming | string ":" term ; syntactic naming \ - poly-id ::= ident + poly-id ::= ident ; normal identifier \end{syntax} %%% Local Variables: diff --git a/doc/speclang/transf.mll b/doc/speclang/transf.mll index a469f70cbdf6f7c9c0623b970b7a025d823abb75..0eadc728aae4f1a875a2f7301b009a50f3523351 100644 --- a/doc/speclang/transf.mll +++ b/doc/speclang/transf.mll @@ -2,8 +2,6 @@ let idx = Buffer.create 5 let full_kw = Buffer.create 5 - let modern = ref false - let check = ref false let defined = Hashtbl.create 17 @@ -121,11 +119,7 @@ let index = Buffer.contents idx in print_string "\\addspace"; if not !check then begin - if !modern then - Printf.printf - "\\lstinline$%s$" keyword - else - Printf.printf "\\texttt{%s}" (escape_keyword keyword); + Printf.printf "\\lstinline$%s$" keyword; if index <> "" then Printf.printf "\\indextt%s{%s}" (if keyword.[0] = '\\' then "bs" else "") index; @@ -218,6 +212,7 @@ and syntax = parse print_string "\\begin{notimplementedenv}"; check_implementation_note lexbuf } | "}" { print_string "\\end{notimplementedenv}"; syntax lexbuf } + | "[" { add_used (); print_string "\\footnote{"; footnote lexbuf } | "\n" { incr current_line; print_char '\n'; syntax lexbuf } | _ { print_char (lexeme_char lexbuf 0); @@ -270,12 +265,15 @@ and nonterm_note = parse "]" { print_string "}"; syntax lexbuf } | _ { print_char (lexeme_char lexbuf 0); nonterm_note lexbuf } +and footnote = parse + "]" { print_string "}"; syntax lexbuf } + | _ { print_char (lexeme_char lexbuf 0); + footnote lexbuf } { let () = Arg.parse - [ "-modern", Arg.Set modern, "set modern style"; - "-check", Arg.Set check, "check grammar coherence"; + [ "-check", Arg.Set check, "check grammar coherence"; "-builtin", Arg.String builtin_rule, "<s> : consider s as a valid non-terminal" ] diff --git a/doc/training/semantic_browsing/scripts/syntactic_callgraph.sh b/doc/training/semantic_browsing/scripts/syntactic_callgraph.sh index 6ed5a06a9e8fd57a2d951e8ea0c28a60d6d80596..0e520883947e07617a7054fc91b2c9bf9cbd9718 100755 --- a/doc/training/semantic_browsing/scripts/syntactic_callgraph.sh +++ b/doc/training/semantic_browsing/scripts/syntactic_callgraph.sh @@ -1,7 +1,7 @@ #! /bin/sh -#./run.sh "frama-c-gui -cpp-extra-args='-DSTDC_HEADERS=1 -DHAVE_UNISTD_H=1 -DDIRENT=1'" gzip-1.2.4 *.c +./run.sh "frama-c-gui -no-frama-c-stdlib -cpp-extra-args='-DSTDC_HEADERS=1 -DHAVE_UNISTD_H=1 -DDIRENT=1'" gzip-1.2.4 *.c #./run.sh "../../../../bin/viewer.byte" gzip-1.2.4 *.c -./run.sh "../../../../bin/viewer.opt -no-frama-c-stdlib -cpp-extra-args='-DSTDC_HEADERS=1 -DHAVE_UNISTD_H=1 -DDIRENT=1'" gzip-1.2.4 *.c +#./run.sh "../../../../bin/viewer.opt -no-frama-c-stdlib -cpp-extra-args='-DSTDC_HEADERS=1 -DHAVE_UNISTD_H=1 -DDIRENT=1'" gzip-1.2.4 *.c #./run.sh "~/frama-c-Beryllium-20090902/bin/viewer.opt" gzip-1.2.4 *.c diff --git a/doc/userman/finder.pdf b/doc/userman/finder.pdf deleted file mode 100644 index 55d8376a0f7bb06c883858463862be2386c972be..0000000000000000000000000000000000000000 Binary files a/doc/userman/finder.pdf and /dev/null differ diff --git a/doc/userman/finder2.pdf b/doc/userman/finder2.pdf deleted file mode 100644 index fa9065890a1456729b6db222759bbb6f714b87cb..0000000000000000000000000000000000000000 Binary files a/doc/userman/finder2.pdf and /dev/null differ diff --git a/doc/userman/finder3.pdf b/doc/userman/finder3.pdf deleted file mode 100644 index d6aed829040b587a2d55f04deed974f182fb5c71..0000000000000000000000000000000000000000 Binary files a/doc/userman/finder3.pdf and /dev/null differ diff --git a/doc/userman/user-gui.tex b/doc/userman/user-gui.tex index df4b6cc56bcf0fc23b19aee13384fcb04cf412f4..7864623517ab263d7d9079dd5319b7a83339625a 100644 --- a/doc/userman/user-gui.tex +++ b/doc/userman/user-gui.tex @@ -191,157 +191,3 @@ to right: analyses and restores \FramaC to its last known valid configuration. \end{itemize} - - - -%% JS: finder should be documented in its own manual -%% The \texttt{Find} button is used for finding particular item syntactically -%% within the code. Clicking on this button leads to open the Finder Window as -%% given in the figure \ref{quatre}. - -%% \begin{figure}[htbp] -%% \begin{center} -%% \includegraphics [scale=0.4] {finder.pdf} -%% \end{center} -%% \caption{The Finder Window} -%% \label{quatre} -%% \end{figure} - -%% At this stage the user can type in the upper left field a regular expression to filter the -%% set of objects of the source code. The regular expression is taken from -%% \texttt{OCAML} regular expressions \texttt{Str.regexp}. -%% On the right, some category of objects -%% can be selected to filter the results. The category \texttt{all} designates -%% any category. Clicking on the button \texttt{Find} activates the search, producing a list of -%% global objects in the Finder Window. Each occurrence is displayed on a separate line. The button \texttt{Stop} breaks the search and button -%% \texttt{Close} exits the Finder. - -%% For example, searching for any object (i.e. pattern \texttt{.*}) of any category, gives the -%% results shown in figure \ref{cinq}: - -%% \begin{figure}[htbp] -%% \begin{center} -%% \includegraphics [scale=0.4] {finder2.pdf} -%% \end{center} -%% \caption{The Finder Results Window} -%% \label{cinq} -%% \end{figure} - -%% Selecting the function \texttt{main} -%% and then asking for the body of -%% function \texttt{R\_ges} leads to the window in figure \ref{six}: - -%% \begin{figure}[htbp] -%% \begin{center} -%% \includegraphics [scale=0.4] {finder3.pdf} -%% \end{center} -%% \caption{The Source Browser Window} -%% \label{six} -%% \end{figure} - -%% Notice that the Finder's results are not restored when opening a existing state file. - -%% Each result found can be examined by double clicking on the corresponding line, which in -%% turn opens the Source Browser Window. The latter permits to navigate easily -%% through the search results -%% and the corresponding source code. From within the Source Browser, the same contextual menu -%% as in the Main Windows is available. Two contextual functions are specific to the Finder, namely -%% \texttt{Display Declaration} and \texttt{Display Body}. When selecting an object in the Source -%% Browser, these functions will locate respectively its declaration or body, and display it -%% in a new page within the Source Browser. The encompassing global C object (function, -%% variable declaration, etc.) will be displayed and the object's declaration or body will -%% be highlighted. If no new page appears, them the Finder considers that no further information is -%% available (e.g. when asking for the body of external library functions). -%% Also notice that pages are labelled by the name of the object. - -%% \section{Example} - -%% Let us go through a simple example to illustrate how to handle projects from -%% the GUI. Starting from an empty \FramaC view, as show above in -%% Figure~\ref{fig:gui-init}, we do the following steps: - -%% \begin{enumerate} -%% \item Click on the ``Set the \C source files'' button to add a valid \C file -%% (say \texttt{f2.c}): click -%% on button \texttt{New} to open the source file management view. Then, add new -%% files to the project by navigating to the right directory and selecting the -%% desired files on the left side and press buttons \texttt{Add} the source file -%% and \texttt{New} to create a project. See figure~\ref{sept}. -%% \begin{figure}[htbp] -%% \begin{center} -%% \includegraphics [scale=0.4] {gui3.pdf} -%% \end{center} -%% \caption{The Source File Management View} -%% \label{sept} -%% \end{figure} - -%% \item The source is normalized and the source code can be displayed. Clicking -%% on the file name \texttt{f2.c} of the file tree leads to a view similar to -%% Figure~\ref{sept_bis}. -%% \begin{figure}[htbp] -%% \begin{center} -%% \includegraphics [scale=0.4] {gui5.pdf} -%% \end{center} -%% \caption{Displaying the Normalized Source} -%% \label{sept_bis} -%% \end{figure} - -%% \item Perform a values analysis on function \texttt{main}: press on the button -%% \texttt{Execute} of the main view to open the analysis window. This window -%% allows the user to finely tune the parameters of every analysis. They are -%% therefore grouped by analysis function and displayed with the same name as in -%% batch mode. For performing a values analysis, we need to select at least the -%% option \texttt{-val} in the category value analysis, as in figure~\ref{huit}. -%% \begin{figure}[htbp] -%% \begin{center} -%% \includegraphics [scale=0.4] {gui4.pdf} -%% \end{center} -%% \caption{Setting Analysis Parameters} -%% \label{huit} -%% \end{figure} - -%% Leaving other options to their default value, we may launch the values -%% analysis. Clicking button \texttt{Execute} of the dialog box closes it and -%% starts the desired analysis. - -%% \item Let us examine the results of the analysis, by using the source -%% views. Click on file \texttt{f2.c} on the file tree view and click on variable -%% \texttt{R} of the center source view, leading to display the computed value -%% at the bottom, as in the figure \ref{neuf}. -%% \begin{figure}[htbp] -%% \begin{center} -%% \includegraphics [scale=0.4] {gui2.pdf} -%% \end{center} -%% \caption{Viewing the analysis results} -%% \label{neuf} -%% \end{figure} - -%% \item Save work in a file by clicking on the item \texttt{Save} of the menu -%% \texttt{File}. In the opened dialog box, select a directory and a file name, -%% then press \texttt{Save}. This file can be reloaded later by using the -%% function \texttt{Open} of the \texttt{File} menu. - -%% \item Quit \FramaC by using the \texttt{Quit} button in the main window. This -%% action generated a journal called \texttt{frama\_c\_journal.ml}. If your -%% system supports native dynamic linking, it is replayable by running -%% \texttt{frama-c-gui -load-script frama\_c\_journal.ml}. - -%% \end{enumerate} - -%% \section{Error Windows} - -%% An inadequate user input or manipulation or possible internal errors may lead -%% \FramaC to report an Error Window. The user is informed through an urgent -%% message in foreground, complemented with detailed information such as the -%% location of the error in the source code. Detailed information is always -%% written in the \FramaC console, either behind the error window or within the -%% Messages View. For instance, when the source code provided to \FramaC is -%% invalid, the message of figure~\ref{dix} comes up. -%% \begin{figure}[htbp] -%% \begin{center} -%% \includegraphics [scale=0.4] {error.pdf} -%% \end{center} -%% \caption{An Error Window} -%% \label{dix} -%% \end{figure} - diff --git a/headers/header_spec.txt b/headers/header_spec.txt index 3cf277f4aa9b19fed944f2d1f037d7d49223e943..02e591575b4e9816fcf73122669a35e3e7e1e64a 100644 --- a/headers/header_spec.txt +++ b/headers/header_spec.txt @@ -98,7 +98,6 @@ licenses/LGPLv2.1: .ignore licenses/LGPLv3: .ignore licenses/Q_MODIFIED_LICENSE: .ignore man/frama-c.1: CEA_LGPL -ocamlgraph.tar.gz: .ignore opam/descr: .ignore opam/files/run_autoconf_if_needed.sh: .ignore opam/frama-c/descr: .ignore @@ -115,9 +114,12 @@ share/Makefile.dynamic_config.external: CEA_LGPL share/Makefile.dynamic_config.internal: CEA_LGPL share/Makefile.generic: CEA_LGPL share/Makefile.plugin.template: CEA_LGPL -share/acsl.el: ACSL_EL share/builtin.h: CEA_LGPL share/configure.ac: CEA_LGPL +share/emacs/acsl.el: ACSL_EL +share/emacs/frama-c-dev.el: CEA_LGPL +share/emacs/frama-c-init.el: CEA_LGPL +share/emacs/frama-c-recommended.el: CEA_LGPL share/frama-c-icon.svg: .ignore share/frama-c.Unix.rc: CEA_LGPL share/frama-c.WIN32.rc: CEA_LGPL @@ -652,47 +654,6 @@ src/plugins/constant_propagation/propagationParameters.ml: CEA_LGPL_OR_PROPRIETA src/plugins/constant_propagation/propagationParameters.mli: CEA_LGPL_OR_PROPRIETARY src/plugins/constant_propagation/register.ml: CEA_LGPL_OR_PROPRIETARY src/plugins/constant_propagation/register.mli: CEA_LGPL_OR_PROPRIETARY -src/plugins/finder/.gitignore: .ignore -src/plugins/finder/Makefile.in: CEA_PROPRIETARY -src/plugins/finder/configure.ac: CEA_PROPRIETARY -src/plugins/finder/finder_gui.ml: CEA_PROPRIETARY -src/plugins/finder/finder_gui.mli: CEA_PROPRIETARY -src/plugins/finder/icons/asm.xpm: .ignore -src/plugins/finder/icons/gtk-open.png: .ignore -src/plugins/finder/icons/gtk.xpm: .ignore -src/plugins/finder/icons/invariant.xpm: .ignore -src/plugins/finder/icons/lemma.xpm: .ignore -src/plugins/finder/icons/logic.xpm: .ignore -src/plugins/finder/icons/pathological.xpm: .ignore -src/plugins/finder/icons/predicate.xpm: .ignore -src/plugins/finder/icons/stock_help.png: .ignore -src/plugins/finder/icons/type.xpm: .ignore -src/plugins/finder/icons/type_ax.xpm: .ignore -src/plugins/finder/icons/type_cl+.xpm: .ignore -src/plugins/finder/icons/type_cl-.xpm: .ignore -src/plugins/finder/icons/type_cl.xpm: .ignore -src/plugins/finder/icons/type_com.xpm: .ignore -src/plugins/finder/icons/type_con.xpm: .ignore -src/plugins/finder/icons/type_cov.xpm: .ignore -src/plugins/finder/icons/type_custom.xpm: .ignore -src/plugins/finder/icons/type_e.xpm: .ignore -src/plugins/finder/icons/type_ec.xpm: .ignore -src/plugins/finder/icons/type_fd.xpm: .ignore -src/plugins/finder/icons/type_fr.xpm: .ignore -src/plugins/finder/icons/type_fu.xpm: .ignore -src/plugins/finder/icons/type_gv.xpm: .ignore -src/plugins/finder/icons/type_iv.xpm: .ignore -src/plugins/finder/icons/type_lv.xpm: .ignore -src/plugins/finder/icons/type_ma.xpm: .ignore -src/plugins/finder/icons/type_md.xpm: .ignore -src/plugins/finder/icons/type_mi.xpm: .ignore -src/plugins/finder/icons/type_su.xpm: .ignore -src/plugins/finder/icons/type_t.xpm: .ignore -src/plugins/finder/icons/type_ud.xpm: .ignore -src/plugins/finder/icons/type_un.xpm: .ignore -src/plugins/finder/icons/undef.xpm: .ignore -src/plugins/finder/icons/volatile.xpm: .ignore -src/plugins/finder/register.ml: CEA_PROPRIETARY src/plugins/from/From.mli: CEA_LGPL_OR_PROPRIETARY src/plugins/from/callwise.ml: CEA_LGPL_OR_PROPRIETARY src/plugins/from/callwise.mli: CEA_LGPL_OR_PROPRIETARY @@ -706,8 +667,6 @@ src/plugins/from/from_register_gui.ml: CEA_LGPL_OR_PROPRIETARY src/plugins/from/from_register_gui.mli: CEA_LGPL_OR_PROPRIETARY src/plugins/from/functionwise.ml: CEA_LGPL_OR_PROPRIETARY src/plugins/from/functionwise.mli: CEA_LGPL_OR_PROPRIETARY -src/plugins/from/mem_dependencies.ml: CEA_LGPL_OR_PROPRIETARY -src/plugins/from/path_dependencies.ml: CEA_LGPL_OR_PROPRIETARY src/plugins/gui/analyses_manager.ml: CEA_LGPL_OR_PROPRIETARY src/plugins/gui/analyses_manager.mli: CEA_LGPL_OR_PROPRIETARY src/plugins/gui/book_manager.ml: CEA_LGPL_OR_PROPRIETARY @@ -1003,6 +962,8 @@ src/plugins/value/domains/equality/equality_term.ml: CEA_LGPL_OR_PROPRIETARY src/plugins/value/domains/equality/equality_term.mli: CEA_LGPL_OR_PROPRIETARY src/plugins/value/domains/offsm_domain.ml: CEA_LGPL_OR_PROPRIETARY src/plugins/value/domains/offsm_domain.mli: CEA_LGPL_OR_PROPRIETARY +src/plugins/value/domains/symbolic_locs.ml: CEA_LGPL_OR_PROPRIETARY +src/plugins/value/domains/symbolic_locs.mli: CEA_LGPL_OR_PROPRIETARY src/plugins/value/domains/unit_domain.ml: CEA_LGPL_OR_PROPRIETARY src/plugins/value/domains/unit_domain.mli: CEA_LGPL_OR_PROPRIETARY src/plugins/value/engine/abstractions.ml: CEA_LGPL_OR_PROPRIETARY @@ -1084,8 +1045,6 @@ src/plugins/value/utils/eval_typ.mli: CEA_LGPL_OR_PROPRIETARY src/plugins/value/utils/library_functions.ml: CEA_LGPL_OR_PROPRIETARY src/plugins/value/utils/library_functions.mli: CEA_LGPL_OR_PROPRIETARY src/plugins/value/utils/mark_noresults.ml: CEA_LGPL_OR_PROPRIETARY -src/plugins/value/utils/mem_lvalue.ml: CEA_LGPL_OR_PROPRIETARY -src/plugins/value/utils/mem_lvalue.mli: CEA_LGPL_OR_PROPRIETARY src/plugins/value/utils/state_import.ml: CEA_LGPL_OR_PROPRIETARY src/plugins/value/utils/state_import.mli: CEA_LGPL_OR_PROPRIETARY src/plugins/value/utils/structure.ml: CEA_LGPL_OR_PROPRIETARY diff --git a/ocamlgraph.tar.gz b/ocamlgraph.tar.gz deleted file mode 100644 index ca59e271881793848b5e3c1db34c2a2e1803b5be..0000000000000000000000000000000000000000 Binary files a/ocamlgraph.tar.gz and /dev/null differ diff --git a/opam/frama-c/descr b/opam/frama-c/descr index d5f34dc5c4731dfe0e2ac2c0c75b7d5ecb52e25d..08c29bd9dfcdaea3269e51c9eb72de6e57c3077e 100644 --- a/opam/frama-c/descr +++ b/opam/frama-c/descr @@ -1,11 +1,16 @@ -Platform dedicated to the static analysis of source code written in C -Frama-C is a suite of tools dedicated to the analysis of the source -code of software written in C. Magnesium version. +Platform dedicated to the analysis of source code written in C. Aluminium version. -Frama-C gathers several static analysis techniques in a single -collaborative framework. The collaborative approach of Frama-C allows -static analyzers to build upon the results already computed by other -analyzers in the framework. Thanks to this approach, Frama-C provides -sophisticated tools, such as a slicer and dependency analysis. +Frama-C gathers several analysis techniques in a single collaborative +framework, based on analyzers (called "plug-ins") that can build upon the +results computed by other analyzers in the framework. +Thanks to this approach, Frama-C provides sophisticated tools, including: +- an analyzer based on abstract interpretation (Value plug-in); +- a program proof framework based on weakest precondition calculus (WP plug-in); +- a program slicer (Slicing plug-in); +- a tool for verification of temporal (LTL) properties (Aoraï plug-in); +- several tools for code base exploration and dependency analysis + (plug-ins From, Impact, Metrics, Occurrence, Scope, etc.). +These plug-ins communicate between each other via the Frama-C API +and via ACSL (ANSI/ISO C Specification Language) properties. This virtual package forces the installation of frama-C with its IDE. diff --git a/opam/frama-c/opam b/opam/frama-c/opam index 81e8ef27083f62e5724410b689124af375c673ec..569089f6545ed75287445eb0c8a8b371fba085da 100644 --- a/opam/frama-c/opam +++ b/opam/frama-c/opam @@ -8,12 +8,14 @@ authors: [ "Richard Bonichon" "David Bühler" "Loïc Correnson" + "Julien Crétin" "Pascal Cuoq" "Zaynah Dargaye" "Jean-Christophe Filliâtre" "Philippe Herrmann" "Florent Kirchner" "Matthieu Lemerre" + "David Maison" "Claude Marché" "André Maroneze" "Benjamin Monate" @@ -29,7 +31,8 @@ authors: [ ] homepage: "http://frama-c.com/" license: "GNU Lesser General Public License version 2.1" -doc: ["http://frama-c.com/download/user-manual-Magnesium-20151002.pdf"] +dev-repo: "https://github.com/Frama-C/Frama-C-snapshot.git" +doc: ["http://frama-c.com/download/user-manual-Aluminium-20160501.pdf"] bug-reports: "https://bts.frama-c.com/" tags: [ "deductive" @@ -58,4 +61,5 @@ depends: [ messages: [ "Alt-Ergo Graphical Interface can be used by the WP plug-in" { !altgr-ergo:installed } ] -available: [ ocaml-version >= "3.12" & ocaml-version != "4.02.0" ] +available: [ ocaml-version >= "4.00.1" & ocaml-version != "4.02.0" & + ocaml-version != "4.02.2" ] diff --git a/opam/opam b/opam/opam index e52943c172368b6428c4c88cd279e97c5ebfdfb0..e1569a15919673db4a5cbb88e741e02e54c49f38 100644 --- a/opam/opam +++ b/opam/opam @@ -31,7 +31,8 @@ authors: [ ] homepage: "http://frama-c.com/" license: "GNU Lesser General Public License version 2.1" -doc: ["http://frama-c.com/download/user-manual-Magnesium-20151002.pdf"] +dev-repo: "https://github.com/Frama-C/Frama-C-snapshot.git" +doc: ["http://frama-c.com/download/user-manual-Aluminium-20160501.pdf"] bug-reports: "https://bts.frama-c.com/" tags: [ "deductive" @@ -52,7 +53,7 @@ build: [ ["sh" "-eux" "./run_autoconf_if_needed.sh"] # when used in pinned mode, # the configure *cannot* yet be # generated - ["./configure" "--prefix" prefix "--disable-local-ocamlgraph" + ["./configure" "--prefix" prefix "--disable-gui" { !conf-gtksourceview:installed | !conf-gnomecanvas:installed } ] @@ -67,7 +68,7 @@ remove: [ ["sh" "-eux" "./run_autoconf_if_needed.sh"] # when used in pinned mode, # the configure *cannot* yet be # generated - ["./configure" "--prefix" prefix "--disable-local-ocamlgraph" + ["./configure" "--prefix" prefix "--disable-gui" { !conf-gtksourceview:installed | !conf-gnomecanvas:installed } ] diff --git a/ptests/ptests.ml b/ptests/ptests.ml index 46e1ed62e5e071523f68c7cb33710887692dc618..a23c76ee46c8e0cb6f5152c6ff3a9fafaf17e6b6 100644 --- a/ptests/ptests.ml +++ b/ptests/ptests.ml @@ -245,7 +245,7 @@ let () = with | End_of_file -> if !toplevel_path = "" then begin - Format.eprintf "Missign TOPLEVEL_PATH variable. Aborting.@."; + Format.eprintf "Missing TOPLEVEL_PATH variable. Aborting.@."; exit 1 end end @@ -641,7 +641,7 @@ let config_options = (fun _ s current -> let new_top = List.map - (fun (cmd,opts, log) -> cmd, make_custom_opts opts s, log) + (fun (cmd,opts, log) -> cmd, make_custom_opts opts s, current.dc_default_log) !current_default_cmds in { current with dc_toplevels = @@ -871,7 +871,7 @@ let get_macros cmd = let basic_command_string = let contains_toplevel_or_frama_c = - Str.regexp ".*\\(\\(toplevel\\)\\|\\(viewer\\)\\|\\(frama-c\\)\\).*" + Str.regexp "[^( ]*\\(\\(toplevel\\)\\|\\(viewer\\)\\|\\(frama-c\\)\\).*" in fun command -> let macros = get_macros command in @@ -891,7 +891,7 @@ let basic_command_string = then begin let opt_pre = snd (replace_macros macros !additional_options_pre) in let opt_post = snd (replace_macros macros !additional_options) in - opt_pre ^ " " ^ options ^ " " ^ opt_post + "-check " ^ opt_pre ^ " " ^ options ^ " " ^ opt_post end else options in let options = if needs_byte then opt_to_byte_options options else options in diff --git a/share/Makefile.common b/share/Makefile.common index de603fc187ac4814fd809c0eb07e23c4a9f0eef4..cd7ae061b8a895562a6b5fae5789996a8c6ef4e9 100644 --- a/share/Makefile.common +++ b/share/Makefile.common @@ -52,16 +52,6 @@ FRAMAC_SRC_DIRS= plugins/slicing_types plugins/pdg_types plugins/value_types \ plugins/gui FRAMAC_SRC_DIRS:= $(addprefix src/, $(FRAMAC_SRC_DIRS)) -ifeq ($(OCAMLWIN32),yes) -ifneq ($(CYGPATH),no) -winpath=$(shell $(CYGPATH) -m "$(1)") -else -winpath=$(1) -endif #CYGPATH -else -winpath=$(1) -endif #OCAMLWIN32 - ################# # OCaml version # ################# @@ -95,7 +85,8 @@ else WARNINGS ?= -w -a endif #DEVELOPMENT -FLAGS = $(WARNINGS) $(WARN_ERROR) $(OCAML_ANNOT_OPTION) $(OPTIM) +FLAGS = $(WARNINGS) $(WARN_ERROR) $(OCAML_ANNOT_OPTION) $(OPTIM) \ + -strict-sequence DEBUG = -g ############# @@ -214,55 +205,6 @@ PRINT_HEVEA =$(PRINT) 'Hevea '# # Tests # ######### -define COMPILE_TESTS_ML_FILES -# Function with two arguments: -# - $(1) is the test directory under consideration. -# - $(2) is the name of Frama-C component under test (plugin or some core part) -ML_TESTS:=$(wildcard tests/$(1)/*.ml) -.PRECIOUS: $(patsubst %.ml, %.cmo, $(ML_TESTS)) \ - $(patsubst %.ml, %.cmx, $(ML_TESTS)) \ - $(patsubst %.ml, %.cmxs, $(ML_TESTS)) \ - $(patsubst %.ml, %.opt, $(ML_TESTS)) \ - $(patsubst %.ml, %.byte, $(ML_TESTS)) - -# [JS 2009/03/18] in the 5 rules below, don't print anything while VERBOSEMAKE -# is not set (otherwise "make tests" is too much verbose) - -$(1)_TESTS_INCLUDES=$$(addprefix -I tests/, $$($(2)_TESTS_DIRS)) - -tests/$(1)/%.cmo: BFLAGS+=$$($(2)_BFLAGS) $$($(1)_TESTS_INCLUDES) - -tests/$(1)/%.cmo: tests/$(1)/%.ml $$(CMO) $$($(2)_CMO) $$(GEN_BYTE_LIBS) - $$(OCAMLC) -c $$(BFLAGS) $$($(1)_TESTS_INCLUDES) $$< - -tests/$(1)/%.byte: tests/$(1)/%.cmo $(3:.cmx=.cmo) bin/toplevel.byte$$(EXE) - $$(OCAMLC) $$(BLINKFLAGS) $$($(1)_TESTS_INCLUDES) -o $$@ \ - $$(BYTE_LIBS) $$(filter-out $$(STARTUP_CMO),$$(ALL_BATCH_CMO)) $(3:.cmx=.cmo) \ - $$< $$(STARTUP_CMO) - -# [JS 2009/05/29] don't use $$(CMX) -# [VP 2010/04/22] don't call directly ocamlopt, just refine flags of generic -# rule, which is chosen by make anyway -tests/$(1)/%.cmx: OFLAGS+= $$($(2)_OFLAGS) $$($(1)_TESTS_INCLUDES) - -$(patsubst %.ml,%.cmx,$(wildcard tests/$(1)/*.ml tests/$(1)/*/*.ml)): \ - $$(CMO:.cmo=.cmx) $$($(2)_CMX) $$(GEN_OPT_LIBS) - -tests/$(1)/%.cmxs: OFLAGS+= $$($(2)_OFLAGS) $$($(1)_TESTS_INCLUDES) - -$(patsubst %.ml,%.cmxs,$(wildcard tests/$(1)/*.ml tests/$(1)/*/*.ml)): \ - $$(CMO:.cmo=.cmx) $$($(2)_CMX) $$(GEN_OPT_LIBS) - -tests/$(1)/%.opt: tests/$(1)/%.cmx $(3) bin/toplevel.opt$$(EXE) - $$(OCAMLOPT) $$(OLINKFLAGS) $$($(1)_TESTS_INCLUDES) -o $$@ \ - $$(OPT_LIBS) $$(filter-out $$(STARTUP_CMX),$$(ALL_BATCH_CMX)) $(3) $$< $$(STARTUP_CMX) - -$(filter-out $(3),$(patsubst %.ml,%.cmx,$(wildcard tests/$(1)/*.ml))): $(3) -$(filter-out $(3:.cmx=.cmo), \ - $(patsubst %.ml,%.cmo,$(wildcard tests/$(1)/*.ml))): \ - $(3:.cmx=.cmo) - -endef #COMPILE_TESTS_ML_FILES ################# # Documentation # diff --git a/share/Makefile.config.in b/share/Makefile.config.in index 7d52a5fb5aec70119c1bd40f9484dff238d9cbbb..029c7c341fdc4e0420242b3b7a3f166d336e7afa 100644 --- a/share/Makefile.config.in +++ b/share/Makefile.config.in @@ -27,12 +27,6 @@ # # ########################################################################## -####################### -# Working directories # -####################### - -FRAMAC_TOP_SRCDIR ?= @abs_top_srcdir@ - ###################### # Installation paths # ###################### @@ -182,7 +176,27 @@ ifeq ($(HAS_ZARITH),yes) LIBRARY_NAMES += zarith endif +ifneq ($(ENABLE_GUI),no) LIBRARY_NAMES_GUI = lablgtk2 lablgtk2.gnomecanvas lablgtk2.sourceview2 +else +LIBRARY_NAMES_GUI = +endif + +####################### +# Working directories # +####################### + +ifeq ($(OCAMLWIN32),yes) +ifneq ($(CYGPATH),no) +winpath=$(shell $(CYGPATH) -m "$(1)") +else +winpath=$(1) +endif #CYGPATH +else +winpath=$(1) +endif #OCAMLWIN32 + +FRAMAC_TOP_SRCDIR ?= $(call winpath,@abs_top_srcdir@) ########################################################################## # Local Variables: diff --git a/share/Makefile.dynamic b/share/Makefile.dynamic index dd99c76ee2f8e0c47b6bc549e045190178ae11b5..c4d7097a8b5e4204d61f9ab16e395a991cf608ba 100644 --- a/share/Makefile.dynamic +++ b/share/Makefile.dynamic @@ -125,7 +125,7 @@ ifneq (,$(HAS_TESTS_DIR)$(PLUGIN_INTERNAL_TEST)$(PLUGIN_NO_TEST)) $(PLUGIN_NAME)_TESTS: else -PTESTS_DEP:=$(PLUGIN_DIR)/Makefile +PTESTS_DEP:=$(PLUGIN_DIR)/Makefile $(FRAMAC_SHARE)/Makefile.dynamic plugins_ptests_config: $(PLUGIN_DIR)/tests/ptests_config @@ -147,6 +147,7 @@ $(PLUGIN_DIR)/tests/ptests_config: $(PTESTS_DEP) $(ECHO) "FRAMAC_PLUGIN=$(PLUGIN_LIB_DIR):$(PLUGIN_INSTALL_DIR)" >> $$@; \ $(ECHO) "FRAMAC_PLUGIN_GUI=$(PLUGIN_GUI_LIB_DIR):$(PLUGIN_INSTALL_DIR)/gui" >> $$@; \ $(ECHO) "OCAMLPATH=$(FRAMAC_PLUGINDIR):$(OCAMLPATH)" >> $$@; \ + $(ECHO) "OCAMLFIND_IGNORE_DUPS_IN=$(PLUGIN_INSTALL_DIR)" >> $$@; \ else \ $(ECHO) "FRAMAC_PLUGIN=$(PLUGIN_LIB_DIR)" >> $$@; \ $(ECHO) "FRAMAC_PLUGIN_GUI=$(PLUGIN_GUI_LIB_DIR)" >> $$@; \ @@ -154,6 +155,9 @@ $(PLUGIN_DIR)/tests/ptests_config: $(PTESTS_DEP) $(ECHO) "OCAMLRUNPARAM=" >> $$@ $(CHMOD_RO) $$@ +# OCAMLFIND_IGNORE_DUPS_IN in external mode allows to ignore a previous +# installation of the currently tested plugin. + # $(PLUGIN_NAME)_DEFAULT_TESTS allows plugins to define rules that at # the same time depend on $(PLUGIN_NAME)_DEFAULT_TESTS and # $(PLUGIN_NAME)_TESTS depend on them diff --git a/share/Makefile.generic b/share/Makefile.generic index 7aa3c9af05c3290baf19e4eb9be6ddf940473266..e3143273c6ce300d375ac9ca696fe67f49beca6d 100644 --- a/share/Makefile.generic +++ b/share/Makefile.generic @@ -97,7 +97,7 @@ endif %.o: %.cmx $(TOUCH) $@ -.ml.cmxs: +%.cmxs: %.cmx $(PRINT_PACKING) $@ $(OCAMLOPT) -shared -o $@ $(OFLAGS) $< diff --git a/share/Makefile.plugin.template b/share/Makefile.plugin.template index e5d2cddfe2be6d364cc1275bd5903b97b93bbb6e..73480d8498c004d24da767e3b87f95c4029e181e 100644 --- a/share/Makefile.plugin.template +++ b/share/Makefile.plugin.template @@ -103,9 +103,7 @@ # Default is tests/$(PLUGIN_DIR) # PLUGIN_TESTS_DIRS_DEFAULTS Tests directories that should be run by default # Defaults to $(PLUGIN_TESTS_DIRS) -# PLUGIN_TESTS_LIB Additional .cmo files used by tests. -# Should be part of one of the $(PLUGIN_TESTS_DIRS) -# Do not write the file extension +# PLUGIN_TESTS_LIB Additional source (.ml) files used by tests. # PLUGIN_NO_DEFAULT_TEST Set it to a non-empty value if you don't want the # tests of your plugin to be executed systematically by make tests # @@ -822,18 +820,25 @@ endif endif @PLUGIN_NAME@_TESTS_DIRS:=$(PLUGIN_TESTS_DIRS) -@PLUGIN_NAME@_DEPFLAGS_TEST:=$(add_prefix tests/,$(PLUGIN_TESTS_DIRS)) -@PLUGIN_NAME@_TESTS_LIB:=$(PLUGIN_TESTS_LIB:%=%.cmx) -@PLUGIN_NAME@_TESTS_LIB_BYTE:=$(PLUGIN_TESTS_LIB:%=%.cmo) +@PLUGIN_NAME@_TESTS_LIB_DIR:=$(sort $(dir $(PLUGIN_TESTS_LIB))) +@PLUGIN_NAME@_TESTS_LIB_DIR_INCLUDE:=$(foreach d, $(@PLUGIN_NAME@_TESTS_LIB_DIR), -I $d ) +@PLUGIN_NAME@_EXTRA_DIRS:=$(@PLUGIN_NAME@_EXTRA_DIRS) $(@PLUGIN_NAME@_TESTS_LIB_DIR) +@PLUGIN_NAME@_TESTS_LIB_OPT:=$(PLUGIN_TESTS_LIB:%.ml=%.cmx) +@PLUGIN_NAME@_TESTS_LIB_OPT_DYN:=$(PLUGIN_TESTS_LIB:%.ml=%.cmxs) +@PLUGIN_NAME@_TESTS_LIB_BYTE:=$(PLUGIN_TESTS_LIB:%.ml=%.cmo) + +$(@PLUGIN_NAME@_TESTS_LIB_OPT): OFLAGS:=$($(NAME_OFLAGS)) $(@PLUGIN_NAME@_TESTS_LIB_DIR_INCLUDE) +$(@PLUGIN_NAME@_TESTS_LIB_OPT_DYN): OFLAGS:=$($(NAME_OFLAGS)) $(@PLUGIN_NAME@_TESTS_LIB_DIR_INCLUDE) +$(@PLUGIN_NAME@_TESTS_LIB_BYTE): BFLAGS:=$($(NAME_BFLAGS)) $(@PLUGIN_NAME@_TESTS_LIB_DIR_INCLUDE) # [JS 2009/03/18] both .PRECIOUS are required in order to prevent 'make' # deletion of intermediate generated files. Such a deletion forces 'make' to # unnecessarily recompile those files. -.PRECIOUS: $(@PLUGIN_NAME@_TESTS_LIB) $(@PLUGIN_NAME@_TESTS_LIB_BYTE) - -$(foreach d,$(PLUGIN_TESTS_DIRS),$(eval $(call COMPILE_TESTS_ML_FILES,$d,@PLUGIN_NAME@,$(@PLUGIN_NAME@_TESTS_LIB)))) - +.PRECIOUS: $(@PLUGIN_NAME@_TESTS_LIB_OPT) \ + $(@PLUGIN_NAME@_TESTS_LIB_OPT_DYN) \ + $(@PLUGIN_NAME@_TESTS_LIB_BYTE) \ + $(@PLUGIN_NAME@_TESTS_LIB_BYTE:%.cmo=%.cmi) endif # PLUGIN_ENABLE ########## @@ -843,54 +848,34 @@ endif # PLUGIN_ENABLE # for reasons known to themselves, ocamldep and make are confused by ./file.ml # hence (one of) the patsubst below in case PLUGIN_DIR is . -# If you explicitly do "make depend", force the computation of dependencies -.PHONY: $(PLUGIN_DIR)/@PLUGIN_NAME@_DEP_REDO -$(PLUGIN_DIR)/@PLUGIN_NAME@_DEP_REDO: $(PLUGIN_GENERATED) \ - $(TARGET_MLI) \ - $(TARGET_GUI_MLI) - $(PRINT_DEP) $(dir $@).depend - $(RM) $(dir $@).depend - $(OCAMLDEP) $(INCLUDES) \ - $(@PLUGIN_NAME@_DEPFLAGS) \ - $(patsubst ./%,%, \ - $(@PLUGIN_NAME@_ML_SRC) \ - $(@PLUGIN_NAME@_MLI) \ - $(@PLUGIN_NAME@_GUI_MLI)) \ - $(foreach d, \ - $(@PLUGIN_NAME@_DEPFLAGS_TEST), \ - -I $d $d/*.ml $d/*.mli) \ - > $(dir $@).depend - $(CHMOD_RO) $(dir $@).depend - -depend:: $(PLUGIN_DIR)/@PLUGIN_NAME@_DEP_REDO - -# Otherwise do it only if necessary -.PRECIOUS: $(PLUGIN_DIR)/.depend -$(PLUGIN_DIR)/.depend: $(PLUGIN_GENERATED) \ - $(TARGET_MLI) \ - $(TARGET_GUI_MLI) - $(PRINT_DEP) $@ - $(RM) $@ $@.tmp +# If you explicitly do "make depend" it is +# $(PLUGIN_DIR)/@PLUGIN_NAME@_DEP_REDO. it forces the computation of +# dependencies. Otherwise usual dependency for $(PLUGIN_DIR)/.depend. +.PHONY: $(@PLUGIN_NAME@_DIR)/@PLUGIN_NAME@_DEP_REDO +$(@PLUGIN_NAME@_DIR)/@PLUGIN_NAME@_DEP_REDO $(@PLUGIN_NAME@_DIR)/.depend: \ + $(PLUGIN_GENERATED) $(TARGET_MLI) $(TARGET_GUI_MLI) + $(PRINT_DEP) $(@PLUGIN_NAME@_DIR)/.depend + $(RM) $(@PLUGIN_NAME@_DIR)/.depend $(OCAMLDEP) $(INCLUDES) \ - $(@PLUGIN_NAME@_DEPFLAGS) \ - $(patsubst ./%,%, \ - $(@PLUGIN_NAME@_ML_SRC) \ - $(@PLUGIN_NAME@_MLI) \ - $(@PLUGIN_NAME@_GUI_MLI)) \ - $(foreach d, $(@PLUGIN_NAME@_DEPFLAGS_TEST), -I $d \ - $d/*.ml $d/*.mli) \ - > $@.tmp - $(CHMOD_RO) $@.tmp - $(MV) $@.tmp $@ + $(@PLUGIN_NAME@_DEPFLAGS) \ + $(patsubst ./%,%, \ + $(@PLUGIN_NAME@_ML_SRC) \ + $(@PLUGIN_NAME@_MLI) \ + $(@PLUGIN_NAME@_GUI_MLI)) \ + $(foreach d, $(@PLUGIN_NAME@_TESTS_LIB_DIR), \ + -I $d $d*.ml $d*.mli) \ + > $(@PLUGIN_NAME@_DIR)/.depend + $(CHMOD_RO) $(@PLUGIN_NAME@_DIR)/.depend + +depend:: $(@PLUGIN_NAME@_DIR)/@PLUGIN_NAME@_DEP_REDO #Just for backward compatibility (19/10/2015) -$(PLUGIN_DIR)/@PLUGIN_NAME@_DEP: $(PLUGIN_DIR)/.depend +$(@PLUGIN_NAME@_DIR)/@PLUGIN_NAME@_DEP: $(@PLUGIN_NAME@_DIR)/.depend $(TOUCH) $@ #In internal mode wait for lib/plugins to be populated by .mli. ifeq ($(FRAMAC_INTERNAL),yes) -$(PLUGIN_DIR)/@PLUGIN_NAME@_DEP_REDO: $(INSTALLED_PLUGIN_DIR)/.placeholders_ready -$(PLUGIN_DIR)/.depend: $(INSTALLED_PLUGIN_DIR)/.placeholders_ready +$(@PLUGIN_NAME@DIR)/@PLUGIN_NAME@_DEP_REDO $(@PLUGIN_NAME@_DIR)/.depend: $(INSTALLED_PLUGIN_DIR)/.placeholders_ready endif ifneq ($(MAKECMDGOALS),clean) @@ -927,7 +912,7 @@ $(PLUGIN_DIR)/@PLUGIN_NAME@_CLEAN: $(RM) $(patsubst %.cmo,%.o, \ $($(patsubst %_CLEAN,%_GUI_CMO,$(notdir $@)))) $(RM) $(dir $@)*~ $(dir $@)*.cm* $(dir $@)*.o $(dir $@)*.annot - $(RM) $(foreach d, $(@:%CLEAN=%TESTS_LIB), \ + $(RM) $(foreach d, $(@:%CLEAN=%TESTS_LIB_OPT), \ $(foreach f, $($(notdir $d)), \ $f $(f:.cmx=.cmo) $(f:.cmx=.opt) $(f:.cmx=.byte) $(f:.cmx=.o))) $(RM) -f $(@PLUGIN_NAME@_CHECK_PLUGIN_MLI) diff --git a/share/acsl.el b/share/emacs/acsl.el similarity index 100% rename from share/acsl.el rename to share/emacs/acsl.el diff --git a/share/emacs/frama-c-dev.el b/share/emacs/frama-c-dev.el new file mode 100644 index 0000000000000000000000000000000000000000..b919c2855a6d0a18e754606e263bda3f4c12b423 --- /dev/null +++ b/share/emacs/frama-c-dev.el @@ -0,0 +1,83 @@ +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; ; +; This file is part of Frama-C. ; +; ; +; Copyright (C) 2007-2016 ; +; CEA (Commissariat à l'énergie atomique et aux énergies ; +; alternatives) ; +; ; +; you can redistribute it and/or modify it under the terms of the GNU ; +; Lesser General Public License as published by the Free Software ; +; Foundation, version 2.1. ; +; ; +; It is distributed in the hope that it will be useful, ; +; but WITHOUT ANY WARRANTY; without even the implied warranty of ; +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ; +; GNU Lesser General Public License for more details. ; +; ; +; See the GNU Lesser General Public License version 2.1 ; +; for more details (enclosed in the file licenses/LGPLv2.1). ; +; ; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; *** Mandatory Emacs settings for Frama-C developers *** +;; +;; If you are using 'frama-c-recommended.el', ignore these instructions +;; (this file is already included by frama-c-recommended.el). +;; +;; Otherwise, do the following: +;; 1. Include the directory containing this file in your Emacs load path; +;; 2. Load this file as a library. +;; +;; You can do so by adding these lines in the beginning of your ~/.emacs file: +;; +;; (add-to-list 'load-path "path/to/this/file/") +;; (load-library "frama-c-dev") +;; +;; tuareg and ocp-indent must be installed (e.g. via their OPAM packages). +;; +;; Note: 'frama-c-init.el' must also be in the load path. + +(load-library "frama-c-init") + +;; ocp-indent should always be used +(safe-require ocp-indent + (add-hook 'tuareg-mode-hook (lambda () + (setq indent-line-function 'ocp-indent-line))) +) + +;; Never indent Caml files using tabs +(defun no-tabs-hook () + (setq indent-tabs-mode nil)) +(add-hook 'tuareg-mode-hook 'no-tabs-hook) +(add-hook 'caml-mode-hook 'no-tabs-hook) + +;; Load Merlin (IDE features for OCaml, such as type info and code navigation) +(safe-require merlin + ;; Start merlin on ocaml files + (add-hook 'tuareg-mode-hook 'merlin-mode t) + (add-hook 'caml-mode-hook 'merlin-mode t) + ;; Enable auto-completion: definitions for company-mode + (set (make-local-variable 'company-backends) '(company-predictive)) + (global-set-key (kbd "<C-tab>") 'company-complete-common) + (add-to-list 'company-backends 'merlin-company-backend) + ;; Enable company on merlin managed buffers + (add-hook 'merlin-mode-hook 'company-mode) + ;; Or enable it globally: + ;(add-hook 'after-init-hook 'global-company-mode) + ;; If you do not want to use company-mode, you can use auto-complete mode + ;; (setq merlin-use-auto-complete-mode 'easy) + + ;; This hook avoids accidents with merlin's "C-c C-x", which often quits + ;; Emacs without confirmation when the user presses "C-x C-c" by accident. + ;; This hook is local to merlin-mode: Emacs will quit normally in non-ML + ;; files. It is also only displayed when the keyboard shortcut is used, + ;; but not when the user clicks the Close button on Emacs' window. + (defun confirm-before-save-kill-emacs () + (interactive) + (let ((confirm-kill-emacs 'y-or-n-p)) + (save-buffers-kill-emacs))) + (add-hook 'merlin-mode-hook + (lambda () + (local-set-key (kbd "C-x C-c") 'confirm-before-save-kill-emacs))) +) diff --git a/share/emacs/frama-c-init.el b/share/emacs/frama-c-init.el new file mode 100644 index 0000000000000000000000000000000000000000..65de9761b828c7ef529726a60213a1cc0f36d9b0 --- /dev/null +++ b/share/emacs/frama-c-init.el @@ -0,0 +1,60 @@ +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; ; +; This file is part of Frama-C. ; +; ; +; Copyright (C) 2007-2016 ; +; CEA (Commissariat à l'énergie atomique et aux énergies ; +; alternatives) ; +; ; +; you can redistribute it and/or modify it under the terms of the GNU ; +; Lesser General Public License as published by the Free Software ; +; Foundation, version 2.1. ; +; ; +; It is distributed in the hope that it will be useful, ; +; but WITHOUT ANY WARRANTY; without even the implied warranty of ; +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ; +; GNU Lesser General Public License for more details. ; +; ; +; See the GNU Lesser General Public License version 2.1 ; +; for more details (enclosed in the file licenses/LGPLv2.1). ; +; ; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; *** Auxiliary definitions for Frama-C Emacs files *** +;; +;; This file is automatically included by both 'frama-c-dev.el' and +;; 'frama-c-recommended.el'. You do not need to do anything here. +;; + +;; Macro to avoid crashing if the required file does not exist +(defmacro safe-require (symbol &rest body) + `(condition-case nil + (progn + (require ',symbol) + ,@body) + (error (message (format "Require NOT available: %s" ',symbol)) nil))) + +;; Macro to avoid crashing if the library to load does not exist +(defun safe-load-library (path) + (condition-case nil + (load-library path) + (error (message (format "Library NOT available: %s" path)) nil))) + +;; Add opam emacs directory to the load-path +(condition-case nil + (progn nil (setq opam-share (substring + (shell-command-to-string + "opam config var share 2> /dev/null") 0 -1)) + (add-to-list 'load-path (concat opam-share "/emacs/site-lisp"))) + (error (message "Error configuring OPAM, check your installation.") nil)) + +;; Setup environment variables using OPAM +;; This helps when compiling OCaml installed via OPAM directly from Emacs +(condition-case nil + (dolist (var (car (read-from-string (shell-command-to-string + "opam config env --sexp")))) + (setenv (car var) (cadr var))) + (error (message "Error configuring OPAM sexp, check your installation.") nil)) + +;; One of the `opam config env` variables is PATH. Update `exec-path` to that. +(setq exec-path (split-string (getenv "PATH") path-separator)) diff --git a/share/emacs/frama-c-recommended.el b/share/emacs/frama-c-recommended.el new file mode 100644 index 0000000000000000000000000000000000000000..f2eff05ad03d4ae46a982477bc4ba6ab55ee4f7f --- /dev/null +++ b/share/emacs/frama-c-recommended.el @@ -0,0 +1,120 @@ +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; ; +; This file is part of Frama-C. ; +; ; +; Copyright (C) 2007-2016 ; +; CEA (Commissariat à l'énergie atomique et aux énergies ; +; alternatives) ; +; ; +; you can redistribute it and/or modify it under the terms of the GNU ; +; Lesser General Public License as published by the Free Software ; +; Foundation, version 2.1. ; +; ; +; It is distributed in the hope that it will be useful, ; +; but WITHOUT ANY WARRANTY; without even the implied warranty of ; +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ; +; GNU Lesser General Public License for more details. ; +; ; +; See the GNU Lesser General Public License version 2.1 ; +; for more details (enclosed in the file licenses/LGPLv2.1). ; +; ; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; *** Recommended Emacs settings for Frama-C developers *** +;; +;; This file should be loaded in the beginning of your .emacs file. +;; +;; 1. Include the directory containing this file in your Emacs load path; +;; 2. Load this file as a library. +;; +;; You can do so by adding these lines in the beginning of your ~/.emacs file: +;; +;; (add-to-list 'load-path "path/to/this/file/") +;; (load-library "frama-c-recommended") +;; +;; Note: 'frama-c-init.el' and 'frama-c-dev.el' must also be in the load path. + +;; ***** Initialization and configuration settings ***** +(load-library "frama-c-init") +(load-library "frama-c-dev") + +;; MELPA helps with the installation of several Emacs packages +(safe-require package + (add-to-list 'package-archives + '("melpa-stable" . "https://stable.melpa.org/packages/")) +) + +;; ***** OCaml settings ***** +;; +;; Load Tuareg (OCaml mode for Emacs) if installed +(safe-load-library "tuareg-site-file") + +;; ***** End of OCaml settings ***** + + +;; ***** Miscellaneous settings ***** +;; +;; fill-column-indicator adds a vertical line to help enforce the +;; 80-characters-per-line rule +;; Note: in some specific configurations (e.g. KDE, maximized window), +;; this library may interfere with window redrawing when using e.g. some +;; merlin functions. Try deactivating this extension if you have problems. +(safe-require fill-column-indicator + (setq-default fill-column 80) + (setq fci-rule-color "#8f8f8f") + (add-hook 'tuareg-mode-hook 'fci-mode t) +) + +;; Disable insertion of tabs for indentation everywhere but in Makefiles +;; (Emacs always inserts tabs in Makefiles, regardless of this option) +(setq-default indent-tabs-mode nil) + +;; Disable overwrite mode, which is rarely used nowadays and can be annoying +;; when enabled accidentally +(global-unset-key [insert]) + +;; redo+ (needs to be installed via ELPA) enables a somewhat "standard" +;; undo/redo mechanism, similar to most modern applications; +;; these key settings bind Ctrl+Z and Ctrl+Shift+Z to undo/redo, respectively +(safe-require redo+ + (global-set-key (kbd "C-z") 'undo-only) + (global-set-key (kbd "C-S-z") 'redo) + ; Avoid accidental minimization when pressing pressing C-z just after a 'C-x' + (global-unset-key (kbd "C-x C-z")) +) + +;; This hook removes trailing whitespace, which should always be avoided +;; Note that, if applied to an existing file with trailing whitespace, this +;; will remove it in *every* line. This can generate large diffs and is not +;; always ideal. For new files, however, this should be on by default. +;(add-hook 'before-save-hook 'delete-trailing-whitespace) + +;; Require a final newline in a file in order to avoid confusing some tools +;; (also helps 'git diff') +(setq require-final-newline t) + +;; whitespace-mode, when activated, displays several kinds of possibly +;; undesirable whitespace. +;; The settings below enable display of tabs, empty lines at the end of +;; the file, and the most important one: trailing spaces +;; It is also possible to use whitespace-mode to highlight long lines +;; (over 80 characters, or the width that you prefer), but they are +;; not activated in these settings. +(global-whitespace-mode 1) +(setq whitespace-style '(face empty tabs trailing)) + +;; Terminal Settings +;; (related to colors in compilation mode; see MR frama-c/frama-c!300) +(safe-require ansi-color + (defun my-colorize-compilation-buffer () + (ansi-color-apply-on-region (point-min) (point-max)) + (goto-char (point-min)) + (while (search-forward "\x0d" nil t) + (delete-region (line-beginning-position) (point))) + (goto-char (point-min)) + (while (search-forward "\x1b[K" nil t) + (replace-match "")) + (goto-char (point-min)) + ) + (add-hook 'compilation-filter-hook 'my-colorize-compilation-buffer) +) diff --git a/share/libc/__fc_machdep.h b/share/libc/__fc_machdep.h index bb16052b1cc3e21ad337c8ffcf9238f2b2979fd2..7c1caa30ae0ea915c37281fc74805538299d8242 100644 --- a/share/libc/__fc_machdep.h +++ b/share/libc/__fc_machdep.h @@ -181,8 +181,92 @@ #define __FC_PTRDIFF_MAX __FC_INT_MAX #else -#error Must define __FC_MACHDEP_X86_32 or __FC_MACHDEP_X86_64 \ - __FC_MACHDEP_X86_16 or __FC_MACHDEP_PPC_32. +#ifdef __FC_MACHDEP_MSVC_X86_64 +#define __FC_BYTE_ORDER __LITTLE_ENDIAN +/* Required */ +#undef __CHAR_UNSIGNED__ +#define __WORDSIZE 64 +#define __SIZEOF_SHORT 2 +#define __SIZEOF_INT 4 +#define __SIZEOF_LONG 4 +#define __SIZEOF_LONGLONG 8 +#define __CHAR_BIT 8 +#define __PTRDIFF_T long long +#define __SIZE_T unsigned long long + +#define __FC_EOF (-1) +#define __FC_FOPEN_MAX 20 +#define __FC_RAND_MAX 32767 +#define __WCHAR_T unsigned short + +/* min and max values as specified in limits.h */ +#define __FC_SCHAR_MIN (-128) +#define __FC_SCHAR_MAX 127 +#define __FC_UCHAR_MAX 255 +#define __FC_SHRT_MIN (-32768) +#define __FC_SHRT_MAX 32767 +#define __FC_USHRT_MAX 65535 +#define __FC_INT_MIN (-INT_MAX - 1) +#define __FC_INT_MAX 2147483647 +#define __FC_UINT_MAX 4294967295U +#define __FC_LONG_MIN (-LONG_MAX -1L) +#define __FC_LONG_MAX 2147483647L +#define __FC_ULONG_MAX 4294967295UL +#define __FC_LLONG_MIN (-LLONG_MAX -1LL) +#define __FC_LLONG_MAX 9223372036854775807LL +#define __FC_ULLONG_MAX 18446744073709551615ULL +#define __FC_PATH_MAX 256 +#define __FC_SIZE_MAX __FC_ULLONG_MAX + +/* Optional */ +#define __INT8_T signed char +#define __UINT8_T unsigned char +#define __INT16_T signed short +#define __UINT16_T unsigned short + +#define __INTPTR_T signed long long +#define __UINTPTR_T unsigned long long +#define __INT32_T signed int +#define __UINT32_T unsigned int +#define __INT64_T signed long long +#define __UINT64_T unsigned long long + +/* Required */ +#define __INT_LEAST8_T signed char +#define __UINT_LEAST8_T unsigned char +#define __INT_LEAST16_T signed short +#define __UINT_LEAST16_T unsigned short +#define __INT_LEAST32_T signed int +#define __UINT_LEAST32_T unsigned int +#define __INT_LEAST64_T signed long long +#define __UINT_LEAST64_T unsigned long long + +#define __INT_FAST8_T signed char +#define __UINT_FAST8_T unsigned char +#define __INT_FAST16_T signed int +#define __UINT_FAST16_T unsigned int +#define __INT_FAST32_T signed int +#define __UINT_FAST32_T unsigned int +#define __INT_FAST64_T signed long long +#define __UINT_FAST64_T unsigned long long + +/* Required */ +#define __INT_MAX_T signed long long +#define __UINT_MAX_T unsigned long long + +/* POSIX */ +#define __SSIZE_T signed long long +/* stdint.h */ +#define __FC_PTRDIFF_MIN __FC_LLONG_MIN +#define __FC_PTRDIFF_MAX __FC_LLONG_MAX + +/* for stdarg.h */ +#define __FC_VA_LIST_T char* + +#else +#error Must define __FC_MACHDEP_X86_32 or __FC_MACHDEP_X86_64 or \ + __FC_MACHDEP_X86_16 or __FC_MACHDEP_PPC_32 or __FC_MACHDEP_MSVC_X86_64. +#endif #endif #endif #endif diff --git a/share/libc/__fc_machdep_linux_gcc_shared.h b/share/libc/__fc_machdep_linux_gcc_shared.h index 81e0f46b942aa0642e02ffa3064aea0cf099cef9..38be4519e00105ee3af3000a8145594b926fcf60 100644 --- a/share/libc/__fc_machdep_linux_gcc_shared.h +++ b/share/libc/__fc_machdep_linux_gcc_shared.h @@ -71,6 +71,9 @@ #define __FC_ULLONG_MAX 18446744073709551615ULL #define __FC_PATH_MAX 256 +/* for stdarg.h */ +#define __FC_VA_LIST_T __builtin_va_list + /* Unused at this time */ #define __FC_umax(n) ((uint##n##_t)(-1)) #define __FC_smin(n) (2*(-(1ll << (sizeof(int##n##_t)*__CHAR_BIT - 2)))) diff --git a/share/libc/stdarg.h b/share/libc/stdarg.h index 7a63742ddf399e700990057167b12fedfb3da8df..113ab21c7d28bc6e5d6801db6b1fa5f28423b7f7 100644 --- a/share/libc/stdarg.h +++ b/share/libc/stdarg.h @@ -24,8 +24,9 @@ #ifndef __FC_STDARG #define __FC_STDARG #include "features.h" +#include "__fc_machdep.h" // for __FC_VA_LIST_T __BEGIN_DECLS -typedef __builtin_va_list va_list; +typedef __FC_VA_LIST_T va_list; __END_DECLS #define va_arg(a,b) __builtin_va_arg(a,b) #define va_copy(a,b) __builtin_va_copy(a,b) diff --git a/share/libc/stdio.h b/share/libc/stdio.h index 7b57a96df869b0f2ff7bdc389a211e3f05056956..841cc1cc19a47d04794aba1864ed545c3ac77373 100644 --- a/share/libc/stdio.h +++ b/share/libc/stdio.h @@ -25,6 +25,7 @@ #define __FC_STDIO #include "features.h" #include "__fc_machdep.h" +#include "__fc_string_axiomatic.h" #include "stdarg.h" #include "stddef.h" #include "errno.h" diff --git a/share/libc/stdlib.h b/share/libc/stdlib.h index 18f3a1222999997b699d1d4c6a10d3ee2420ee18..c170cfe0f8338edbd69ce98d636644399c4abd5e 100644 --- a/share/libc/stdlib.h +++ b/share/libc/stdlib.h @@ -85,8 +85,21 @@ long double strtold(const char * restrict nptr, char ** restrict endptr); /* TODO: See ISO C 7.20.1.4 to complete these specifications */ -/*@ assigns \result \from nptr[0..], base; - assigns *endptr \from nptr, nptr[0..], base; +/*@ + assigns \result \from indirect:nptr, indirect:nptr[0 ..], indirect:base; + assigns *endptr \from nptr, indirect:nptr[0 ..], indirect:endptr, indirect:base; + behavior null_endptr: + assumes endptr == \null; + assigns \result \from indirect:nptr, indirect:nptr[0 ..], indirect:base; + behavior nonnull_endptr: + assumes endptr != \null; + requires \valid(endptr); + assigns \result \from indirect:nptr, indirect:nptr[0 ..], indirect:base; + assigns *endptr \from nptr, indirect:nptr[0 ..], indirect:endptr, indirect:base; + ensures \initialized(endptr); + ensures \subset(*endptr, nptr + (0 ..)); + complete behaviors; + disjoint behaviors; */ long int strtol( const char * restrict nptr, diff --git a/share/libc/wchar.h b/share/libc/wchar.h index e5db25e33e63edfd7a050269d9f33ddaae245709..18bee4429755d6896aedd7ff756951e91cab73e0 100644 --- a/share/libc/wchar.h +++ b/share/libc/wchar.h @@ -31,45 +31,119 @@ __BEGIN_DECLS +/*@ + assigns \result \from s, indirect:s[0 .. n-1], indirect:c, indirect:n; + ensures \result == \null || \subset (\result, s+(0 .. n-1)); + */ wchar_t * wmemchr(const wchar_t *s, wchar_t c, size_t n); +/*@ assigns \result \from indirect:s1[0 .. n-1], indirect:s2[0 .. n-1], indirect:n; */ int wmemcmp(const wchar_t *s1, const wchar_t *s2, size_t n); -wchar_t * wmemcpy(wchar_t * s1, const wchar_t * s2, size_t n); - -wchar_t * wmemmove(wchar_t *s1, const wchar_t *s2, size_t n); - -wchar_t * wmemset(wchar_t *s, wchar_t c, size_t n); - -wchar_t * wcscat(wchar_t * s1, const wchar_t * s2); - -wchar_t * wcschr(const wchar_t *s, wchar_t c); - +/*@ + requires \separated(dest+(0 .. n-1), src+(0 .. n-1)); + assigns dest[0 .. n-1] \from src[0 .. n-1], indirect:src, indirect:n; + assigns \result \from dest; + ensures \result == dest; + */ +wchar_t * wmemcpy(wchar_t *restrict dest, const wchar_t *restrict src, size_t n); + +/*@ + assigns dest[0 .. n-1] \from src[0 .. n-1], indirect:src, indirect:n; + assigns \result \from dest; + ensures \result == dest; +*/ +wchar_t * wmemmove(wchar_t *dest, const wchar_t *src, size_t n); + +/*@ + assigns wcs[0 .. n-1] \from wc, indirect:n; + assigns \result \from wcs; + ensures \result == wcs; +*/ +wchar_t * wmemset(wchar_t *wcs, wchar_t wc, size_t n); + +/*@ + assigns dest[0 .. ] \from dest[0 .. ], indirect:dest, src[0 .. ], indirect:src; + assigns \result \from dest; + ensures \result == dest; +*/ +wchar_t * wcscat(wchar_t *restrict dest, const wchar_t *restrict src); + +/*@ + assigns \result \from wcs, indirect:wc; + ensures \result == \null || \subset (\result, wcs+(0 .. )); +*/ +wchar_t * wcschr(const wchar_t *wcs, wchar_t wc); + +/*@ assigns \result \from indirect:s1[0 .. ], indirect:s2[0 .. ]; */ int wcscmp(const wchar_t *s1, const wchar_t *s2); -wchar_t * wcscpy(wchar_t * s1, const wchar_t * s2); - -size_t wcscspn(const wchar_t *s1, const wchar_t *s2); - -size_t wcslcat(wchar_t *s1, const wchar_t *s2, size_t n); - -size_t wcslcpy(wchar_t *s1, const wchar_t *s2, size_t n); - +/*@ + assigns dest[0 .. ] \from src[0 .. ], indirect:src, dest[0 .. ], indirect:dest; + assigns \result \from dest; + ensures \result == dest; + */ +wchar_t * wcscpy(wchar_t *restrict dest, const wchar_t *restrict src); + +/*@ assigns \result \from indirect:wcs[0 .. ], indirect:accept[0 .. ]; */ +size_t wcscspn(const wchar_t *wcs, const wchar_t *accept); + +// wcslcat is a BSD extension (non-C99, non-POSIX) +/*@ + assigns dest[0 .. ] \from dest[0 .. ], indirect:dest, src[0 .. n-1], indirect:src, indirect:n; + assigns \result \from indirect:dest[0 .. ], indirect:src[0 .. n-1], indirect:n; +*/ +size_t wcslcat(wchar_t *restrict dest, const wchar_t *restrict src, size_t n); + +// wcslcpy is a BSD extension (non-C99, non-POSIX) +/*@ + requires \separated(dest+(0 .. n-1), src+(0 .. n-1)); + assigns dest[0 .. n-1] \from src[0 .. n-1], indirect:src, indirect:n; + assigns \result \from indirect:dest[0 .. n-1], indirect:dest, indirect:src[0 .. n-1], indirect:src, indirect:n; + */ +size_t wcslcpy(wchar_t *dest, const wchar_t *src, size_t n); + +/*@ assigns \result \from indirect:s[0 .. ]; */ size_t wcslen(const wchar_t *s); -wchar_t * wcsncat(wchar_t * s1, const wchar_t * s2, size_t n); - -int wcsncmp(const wchar_t *s1, const wchar_t * s2, size_t n); - -wchar_t * wcsncpy(wchar_t * s1, const wchar_t * s2, size_t n); - -wchar_t * wcspbrk(const wchar_t *s1, const wchar_t *s2); - -wchar_t * wcsrchr(const wchar_t *s, wchar_t c); - -size_t wcsspn(const wchar_t *s1, const wchar_t *s2); - -wchar_t * wcsstr(const wchar_t * s1, const wchar_t * s2); +/*@ + assigns dest[0 .. ] \from dest[0 .. ], indirect:dest, src[0 .. n-1], indirect:src, indirect:n; + assigns \result \from dest; + ensures \result == dest; +*/ +wchar_t * wcsncat(wchar_t *restrict dest, const wchar_t *restrict src, size_t n); + +/*@ assigns \result \from indirect:s1[0 .. n-1], indirect:s2[0 .. n-1], indirect:n; */ +int wcsncmp(const wchar_t *s1, const wchar_t *s2, size_t n); + +/*@ + requires \separated(dest+(0 .. n-1), src+(0 .. n-1)); + assigns dest[0 .. n-1] \from src[0 .. n-1], indirect:src, indirect:n; + assigns \result \from dest; + ensures \result == dest; + */ +wchar_t * wcsncpy(wchar_t *restrict dest, const wchar_t *restrict src, size_t n); + +/*@ + assigns \result \from wcs, indirect:wcs[0 .. ], indirect:accept[0 .. ]; + ensures \result == \null || \subset (\result, wcs+(0 .. )); +*/ +wchar_t * wcspbrk(const wchar_t *wcs, const wchar_t *accept); + +/*@ + assigns \result \from wcs, indirect:wcs[0 .. ], indirect:wc; + ensures \result == \null || \subset (\result, wcs+(0 .. )); + */ +wchar_t * wcsrchr(const wchar_t *wcs, wchar_t wc); + +/*@ assigns \result \from indirect:wcs[0 .. ], indirect:accept[0 .. ]; */ +size_t wcsspn(const wchar_t *wcs, const wchar_t *accept); + +/*@ + assigns \result \from haystack, indirect:haystack[0 .. ], indirect:needle[0 .. ]; + ensures \result == \null || \subset (\result, haystack+(0 .. )); + */ +wchar_t * wcsstr(const wchar_t *haystack, const wchar_t *needle); /* It is unclear whether these are more often in wchar.h or stdio.h */ diff --git a/src/kernel_internals/parsing/logic_parser.mly b/src/kernel_internals/parsing/logic_parser.mly index 57629da037ef5b72781c70563480e9e3be53bc76..75a1176394c17f928a394ef6f4f50151da2c5c4e 100644 --- a/src/kernel_internals/parsing/logic_parser.mly +++ b/src/kernel_internals/parsing/logic_parser.mly @@ -893,7 +893,7 @@ full_assigns: /*** ACSL extension for external spec file ***/ ext_spec: - | ext_global_clauses_opt ext_module_specs_opt ext_global_specs_opt EOF { ("",$1,$2)::$3 } + | ext_global_clauses_opt ext_module_specs_opt ext_global_specs_opt EOF { (None,$1,$2)::$3 } ; ext_global_clauses_opt: @@ -924,14 +924,16 @@ ext_global_specs: ext_global_spec: | ext_module_markup ext_global_clauses_opt ext_module_specs - { ($1,$2,$3) } + { (Some $1),$2,$3 } | ext_module_markup - { ($1,[],[]) } + { (Some $1),[],[] } ; ext_module_specs_opt: | /* empty */ { [] } | ext_module_specs { $1 } + | ext_fun_specs { [None, $1] } + | ext_fun_specs ext_module_specs { (None, $1)::$2 } ; ext_module_specs: @@ -940,7 +942,7 @@ ext_module_specs: ; ext_module_spec: -| ext_function_markup ext_function_specs_opt { ($1,$2) } +| ext_function_markup ext_function_specs_opt { (Some $1),$2 } ; ext_function_specs_opt: @@ -955,8 +957,16 @@ ext_function_specs: ; ext_function_spec: -| ext_global_clause - { Ext_glob $1 } +| ext_global_clause { Ext_glob $1 } +| ext_fun_spec { $1 } +; + +ext_fun_specs: +| ext_fun_spec { [$1] } +| ext_fun_spec ext_fun_specs { $1::$2 } +; + +ext_fun_spec: | ext_at_stmt_markup ext_stmt_loop_spec { Ext_stmt($1,$2,loc()) } | ext_contract_markup contract @@ -1016,17 +1026,19 @@ contract: let behaviors = $5 in let (completes,disjoints) = $6 in let behaviors = - if - requires <> [] || post_cond <> [] || - allocation <> FreeAllocAny || - assigns <> WritesAny || extended <> [] + if requires <> [] || post_cond <> [] || + allocation <> FreeAllocAny || + assigns <> WritesAny || extended <> [] then let allocation = if allocation <> FreeAllocAny then Some allocation else None in (mk_behavior ~requires ~post_cond ~assigns ~allocation ~extended:(wrap_extended extended) ()) :: behaviors - else behaviors + else if $2<>None || $3<>None || + behaviors<>[] || completes<>[] ||disjoints<>[] + then behaviors + else raise (Not_well_formed (loc(),"Empty annotation is not allowed")) in { spec_terminates = $2; spec_variant = $3; diff --git a/src/kernel_internals/runtime/machdeps.ml b/src/kernel_internals/runtime/machdeps.ml index 79c600c64575cb85891edaf8a26c9c40ad8e78e9..a77f65ef77b1090d2d58dc5a507f2daf676314cd 100644 --- a/src/kernel_internals/runtime/machdeps.ml +++ b/src/kernel_internals/runtime/machdeps.ml @@ -191,3 +191,40 @@ let ppc_32 = { has__builtin_va_list = true; __thread_is_keyword = true; } + +let msvc_x86_64 = { + version = "MSVC - X86-64bits mode"; + compiler = "msvc"; + sizeof_short = 2; + sizeof_int = 4; + sizeof_long = 4; + sizeof_longlong = 8; + sizeof_ptr = 8; + sizeof_float = 4; + sizeof_double = 8; + sizeof_longdouble = 8; + sizeof_void = 0; + sizeof_fun = 0; (* sizeof(f) results in a compilation error *) + size_t = "unsigned long long"; (* defined as 'unsigned __int64' *) + wchar_t = "unsigned short"; + ptrdiff_t = "long long"; (* defined as '__int64' *) + alignof_short = 2; + alignof_int = 4; + alignof_long = 4; + alignof_longlong = 8; + alignof_ptr = 8; + alignof_float = 4; + alignof_double = 8; + alignof_longdouble = 8; + alignof_str = 1; (* __alignof("a") results in compilation error C2059: + syntax error: 'string' *) + alignof_fun = 8; + alignof_aligned= 1; (* MSVC does not seem to have an 'align' attribute + equivalent to GCC's *) + char_is_unsigned = false; + const_string_literals = true; + little_endian = true; + underscore_name = false ; + has__builtin_va_list = false; + __thread_is_keyword = false; +} diff --git a/src/kernel_internals/runtime/machdeps.mli b/src/kernel_internals/runtime/machdeps.mli index 0898b4339b9aad90d0578004b0c13e1b806331b2..3959c84cf536c23ebd24c750f3695ef68911cefc 100644 --- a/src/kernel_internals/runtime/machdeps.mli +++ b/src/kernel_internals/runtime/machdeps.mli @@ -51,3 +51,4 @@ val gcc_x86_32: Cil_types.mach val x86_64: Cil_types.mach val gcc_x86_64: Cil_types.mach val ppc_32: Cil_types.mach +val msvc_x86_64: Cil_types.mach diff --git a/src/kernel_internals/typing/cabs2cil.ml b/src/kernel_internals/typing/cabs2cil.ml index 4480bc881f9b51ed30e35f36138e7b652162746d..e7e99ead675edd10930681bba265e2034fba4ae8 100644 --- a/src/kernel_internals/typing/cabs2cil.ml +++ b/src/kernel_internals/typing/cabs2cil.ml @@ -100,13 +100,15 @@ module IncompatibleDeclHook = let register_incompatible_decl_hook f = IncompatibleDeclHook.extend (fun (x,y,z) -> f x y z) - module DifferentDeclHook = Hook.Build(struct type t = varinfo * varinfo end) let register_different_decl_hook f = DifferentDeclHook.extend (fun (x,y) -> f x y) +module NewGlobalHook = Hook.Build(struct type t = varinfo * bool end) +let register_new_global_hook f = NewGlobalHook.extend (fun (x, y) -> f x y) + module LocalFuncHook = Hook.Build(struct type t = varinfo end) let register_local_func_hook = LocalFuncHook.extend @@ -761,9 +763,8 @@ let alphaConvertVarAndAddToEnv (addtoenv: bool) (vi: varinfo) : varinfo = end end in - (* Store all locals in the slocals (in reversed order). We'll reverse them - * and take out the formals at the end of the function *) - if not vi.vglob then + (* Store all locals in the slocals (in reversed order). *) + if not vi.vglob && not vi.vformal then !currentFunctionFDEC.slocals <- newvi :: !currentFunctionFDEC.slocals; (if addtoenv then @@ -1472,12 +1473,15 @@ struct unspecified_order = false; } - let keepPureExpr ~ghost e l = - let t = Cil.typeOf e in - let descr = Pretty_utils.sfprintf "%a" Cil_descriptive_printer.pp_exp e in - let tmp = newTempVar descr true t in - local_var_chunk empty tmp +++ - (mkStmtOneInstr ~ghost (Set(var tmp, e, l)),[],[],[]) + let keepPureExpr ~ghost e loc = + let fundec = !currentFunctionFDEC in + let s = Cil.mkPureExpr ~ghost ~fundec ~loc e in + match s.skind with + | Block b -> + { empty with + stmts = List.map (fun s -> (s,[],[],[],[])) b.bstmts; + locals = b.blocals } + | _ ->i2c (s,[],[],[]) (* We can duplicate a chunk if it has a few simple statements, and if * it does not have cases *) @@ -2314,121 +2318,124 @@ let extInlineSuffRe = Str.regexp "\\(.+\\)__extinline" * Returns the varinfo to use (might be the old one), and an indication * whether the variable exists already in the environment *) let makeGlobalVarinfo (isadef: bool) (vi: varinfo) : varinfo * bool = - try (* See if already defined, in the global environment. We could also - * look it up in the whole environment but in that case we might see a - * local. This can happen when we declare an extern variable with - * global scope but we are in a local scope. *) - - (* We lookup in the environment. If this is extern inline then the name - * was already changed to foo__extinline. We lookup with the old name *) - let lookupname = - if vi.vstorage = Static then - if Str.string_match extInlineSuffRe vi.vname 0 then - let no_extinline_name = Str.matched_group 1 vi.vname in - if no_extinline_name=vi.vorig_name then no_extinline_name - else vi.vname + let res = + try (* See if already defined, in the global environment. We could also + * look it up in the whole environment but in that case we might see a + * local. This can happen when we declare an extern variable with + * global scope but we are in a local scope. *) + + (* We lookup in the environment. If this is extern inline then the name + * was already changed to foo__extinline. We lookup with the old name *) + let lookupname = + if vi.vstorage = Static then + if Str.string_match extInlineSuffRe vi.vname 0 then + let no_extinline_name = Str.matched_group 1 vi.vname in + if no_extinline_name=vi.vorig_name then no_extinline_name + else vi.vname + else + vi.vname else vi.vname - else - vi.vname - in - Kernel.debug ~dkey:category_global - "makeGlobalVarinfo isadef=%b vi.vname=%s (lookup = %s)" - isadef vi.vname lookupname; - (* This may throw an exception Not_found *) - let oldvi, oldloc = lookupGlobalVar lookupname in - Kernel.debug ~dkey:category_global " %s(%d) already in the env at loc %a" - vi.vname oldvi.vid Cil_printer.pp_location oldloc; - (* It was already defined. We must reuse the varinfo. But clean up the - * storage. *) - let newstorage = (** See 6.2.2 *) - match oldvi.vstorage, vi.vstorage with - (* Extern and something else is that thing *) - | Extern, other - | other, Extern -> other - | NoStorage, other - | other, NoStorage -> other - | _ -> - if vi.vstorage != oldvi.vstorage then - Kernel.warning ~current:true - "Inconsistent storage specification for %s. \ + in + Kernel.debug ~dkey:category_global + "makeGlobalVarinfo isadef=%b vi.vname=%s (lookup = %s)" + isadef vi.vname lookupname; + (* This may throw an exception Not_found *) + let oldvi, oldloc = lookupGlobalVar lookupname in + Kernel.debug ~dkey:category_global " %s(%d) already in the env at loc %a" + vi.vname oldvi.vid Cil_printer.pp_location oldloc; + (* It was already defined. We must reuse the varinfo. But clean up the + * storage. *) + let newstorage = (** See 6.2.2 *) + match oldvi.vstorage, vi.vstorage with + (* Extern and something else is that thing *) + | Extern, other + | other, Extern -> other + | NoStorage, other + | other, NoStorage -> other + | _ -> + if vi.vstorage != oldvi.vstorage then + Kernel.warning ~current:true + "Inconsistent storage specification for %s. \ Previous declaration: %a" - vi.vname Cil_printer.pp_location oldloc; - vi.vstorage - in - oldvi.vinline <- oldvi.vinline || vi.vinline; - (* If the new declaration has a section attribute, remove any - * preexisting section attribute. This mimics behavior of gcc that is - * required to compile the Linux kernel properly. *) - if hasAttribute "section" vi.vattr then - oldvi.vattr <- dropAttribute "section" oldvi.vattr; - (* Union the attributes *) - oldvi.vattr <- cabsAddAttributes oldvi.vattr vi.vattr; - begin - try - let what = - if isadef then - CombineFundef (hasAttribute "FC_OLDSTYLEPROTO" vi.vattr) - else CombineOther - in - let mytype = combineTypes what oldvi.vtype vi.vtype in - if not (Cil_datatype.Typ.equal oldvi.vtype vi.vtype) - then DifferentDeclHook.apply (oldvi,vi); - Cil.update_var_type oldvi mytype; - with Failure reason -> - Kernel.debug ~dkey:category_global "old type = %a\nnew type = %a\n" - Cil_printer.pp_typ oldvi.vtype - Cil_printer.pp_typ vi.vtype ; - Kernel.error ~once:true ~current:true - "Declaration of %s does not match previous declaration from %a (%s)." - vi.vname Cil_printer.pp_location oldloc reason; - IncompatibleDeclHook.apply (oldvi,vi,reason) - end; - (* Update the storage and vdecl if useful. Do so only after the hooks have - been applied, as they may need to read those fields *) - if oldvi.vstorage <> newstorage then begin - oldvi.vstorage <- newstorage; - (* Also update the location; [vi.vdecl] is a better declaration/definition - site for [vi]. *) - oldvi.vdecl <- vi.vdecl; - end; - (* Let's mutate the formals vid's name attribute and type for function - prototypes. Logic specifications refer to the varinfo in this table. *) - begin - match vi.vtype with - | TFun (_,Some formals , _, _ ) -> - (try - let old_formals_env = getFormalsDecl oldvi in - List.iter2 - (fun old (name,typ,attr) -> - if name <> "" then begin - Kernel.debug ~dkey:category_global - "replacing formal %s with %s" old.vname name; - old.vname <- name; - Cil.update_var_type old typ; - old.vattr <- attr; - (match old.vlogic_var_assoc with + vi.vname Cil_printer.pp_location oldloc; + vi.vstorage + in + oldvi.vinline <- oldvi.vinline || vi.vinline; + (* If the new declaration has a section attribute, remove any + * preexisting section attribute. This mimics behavior of gcc that is + * required to compile the Linux kernel properly. *) + if hasAttribute "section" vi.vattr then + oldvi.vattr <- dropAttribute "section" oldvi.vattr; + (* Union the attributes *) + oldvi.vattr <- cabsAddAttributes oldvi.vattr vi.vattr; + begin + try + let what = + if isadef then + CombineFundef (hasAttribute "FC_OLDSTYLEPROTO" vi.vattr) + else CombineOther + in + let mytype = combineTypes what oldvi.vtype vi.vtype in + if not (Cil_datatype.Typ.equal oldvi.vtype vi.vtype) + then DifferentDeclHook.apply (oldvi,vi); + Cil.update_var_type oldvi mytype; + with Failure reason -> + Kernel.debug ~dkey:category_global "old type = %a\nnew type = %a\n" + Cil_printer.pp_typ oldvi.vtype + Cil_printer.pp_typ vi.vtype ; + Kernel.error ~once:true ~current:true + "Declaration of %s does not match previous declaration from \ + %a (%s)." + vi.vname Cil_printer.pp_location oldloc reason; + IncompatibleDeclHook.apply (oldvi,vi,reason) + end; + (* Update the storage and vdecl if useful. Do so only after the hooks have + been applied, as they may need to read those fields *) + if oldvi.vstorage <> newstorage then begin + oldvi.vstorage <- newstorage; + (* Also update the location; [vi.vdecl] is a better + declaration/definition site for [vi]. *) + oldvi.vdecl <- vi.vdecl; + end; + (* Let's mutate the formals vid's name attribute and type for function + prototypes. Logic specifications refer to the varinfo in this table. *) + begin + match vi.vtype with + | TFun (_,Some formals , _, _ ) -> + (try + let old_formals_env = getFormalsDecl oldvi in + List.iter2 + (fun old (name,typ,attr) -> + if name <> "" then begin + Kernel.debug ~dkey:category_global + "replacing formal %s with %s" old.vname name; + old.vname <- name; + Cil.update_var_type old typ; + old.vattr <- attr; + (match old.vlogic_var_assoc with | None -> () | Some old_lv -> old_lv.lv_name <- name) - end) - old_formals_env - formals; - with - | Invalid_argument _ -> - Kernel.abort "Inconsistent formals" ; - | Not_found -> - Cil.setFormalsDecl oldvi vi.vtype) - | _ -> () - end ; - (* if [isadef] is true, [vi] is a definition. *) - if isadef then begin - oldvi.vdecl <- vi.vdecl; (* always favor the location of the definition.*) - oldvi.vdefined <- true; - end; - (* notice that [vtemp] is immutable, and cannot be updated. Hopefully, - temporaries have sufficiently fresh names that this is not a problem *) - oldvi, true - with Not_found -> begin (* A new one. *) + end) + old_formals_env + formals; + with + | Invalid_argument _ -> + Kernel.abort "Inconsistent formals" ; + | Not_found -> + Cil.setFormalsDecl oldvi vi.vtype) + | _ -> () + end ; + (* if [isadef] is true, [vi] is a definition. *) + if isadef then begin + (* always favor the location of the definition.*) + oldvi.vdecl <- vi.vdecl; + oldvi.vdefined <- true; + end; + (* notice that [vtemp] is immutable, and cannot be updated. Hopefully, + temporaries have sufficiently fresh names that this is not a problem *) + oldvi, true + with Not_found -> begin (* A new one. *) Kernel.debug ~level:2 ~dkey:category_global " %s not in the env already" vi.vname; (* Announce the name to the alpha conversion table. This will not @@ -2440,6 +2447,10 @@ let makeGlobalVarinfo (isadef: bool) (vi: varinfo) : varinfo * bool = vi.vattr <- dropAttribute "FC_OLDSTYLEPROTO" vi.vattr; vi, false end + in + NewGlobalHook.apply res; + res + (* Register a builtin function *) let setupBuiltin name (resTyp, argTypes, isva) = @@ -3650,6 +3661,34 @@ let rec evaluate_cond_exp = function | `CFalse -> `CTrue | `CUnknown -> `CUnknown + +(* The way formals are handled now might generate incorrect types, in the + sense that they refer to a varinfo (in the case of VLA depending on a + previously declared formal) that exists only during the call to doType. + We replace them here with the definitive version of the formals' varinfos. + A global refactoring of cabs2cil would be welcome, though. +*) +let fixFormalsType formals = + let table = Hashtbl.create 5 in + let vis = + object + inherit Cil.nopCilVisitor + method! vvrbl v = + if v.vformal then begin + try + ChangeTo (Hashtbl.find table v.vname) + with Not_found -> + Kernel.fatal "Formal %a not tied to a varinfo" + Cil_printer.pp_varinfo v; + end else SkipChildren + end + in + let treat_one_formal v = + v.vtype <- Cil.visitCilType vis v.vtype; + Hashtbl.add table v.vname v; + in + List.iter treat_one_formal formals + let rec doSpecList ghost (suggestedAnonName: string) (* This string will be part of * the names for anonymous @@ -4323,7 +4362,7 @@ and doType (ghost:bool) isFuncArg let lo = match len.expr_node with | A.NOTHING -> None - | _ -> + | _ -> (* Check that len is a constant expression. We used to also cast the length to int here, but that's theoretically too restrictive on 64-bit machines. *) @@ -8147,6 +8186,12 @@ and doDecl local_env (isglobal: bool) : A.definition -> chunk = function in let fmlocs = (match dt with PROTO(_, fml, _) -> fml | _ -> []) in let formals = doFormals (argsToList formals_t) fmlocs in + (* in case of formals referred to in types of others, doType has + put dummy varinfos. We need to fix them now that we have proper + bindings. + TODO: completely refactor the way formals' typechecking is done. + *) + let () = fixFormalsType formals in (* Recreate the type based on the formals. *) let ftype = TFun(returnType, @@ -8244,7 +8289,8 @@ and doDecl local_env (isglobal: bool) : A.definition -> chunk = function @ behaviors; is_ghost = local_env.is_ghost } - body in + body + in (* Finish everything *) exitScope (); (* Now fill in the computed goto statement with cases. Do this @@ -8303,21 +8349,7 @@ and doDecl local_env (isglobal: bool) : A.definition -> chunk = function H.clear gotoTargetHash; gotoTargetNextAddr := 0; in - let rec dropFormals formals locals = - match formals, locals with - | [], l -> l - | f :: formals, l :: locals -> - if f != l then - Kernel.abort ~current:true - "formal %s is not in locals (found instead %s)" - f.vname - l.vname; - dropFormals formals locals - | _ -> Kernel.abort ~current:true "Too few locals" - in - !currentFunctionFDEC.slocals - <- dropFormals !currentFunctionFDEC.sformals - (List.rev !currentFunctionFDEC.slocals); + !currentFunctionFDEC.slocals <- (List.rev !currentFunctionFDEC.slocals); setMaxId !currentFunctionFDEC; (* Now go over the types of the formals and pull out the formals @@ -9174,6 +9206,7 @@ and doStatement local_env (s : A.statement) : chunk = ~ghost ~isformal:false ~isglobal:false ldecl spec (n,ndt,a) in addLocalToEnv n (EnvVar vi); + !currentFunctionFDEC.slocals <- vi :: !currentFunctionFDEC.slocals; Catch_exn(vi,[]) in let chunk_catch = doStatement local_env scatch in diff --git a/src/kernel_internals/typing/cabs2cil.mli b/src/kernel_internals/typing/cabs2cil.mli index df0b59181d01a6b4cad75614beb49fd51eba262c..2c7f4ccac0a02021a2f9fadda68962f7eeb8e131 100644 --- a/src/kernel_internals/typing/cabs2cil.mli +++ b/src/kernel_internals/typing/cabs2cil.mli @@ -70,6 +70,13 @@ val register_incompatible_decl_hook: val register_different_decl_hook: (Cil_types.varinfo -> Cil_types.varinfo -> unit) -> unit +val register_new_global_hook: (Cil_types.varinfo -> bool -> unit) -> unit +(** Hook called when a new global is created. The varinfo [vi] is the one + corresponding to the global, while the boolean is [true] iff [vi] was + already existing (it is [false] if this is the first declaration/definition + of [vi] in the file). + @since Frama-C+dev + *) (** new hook called when encountering a definition of a local function. The hook take as argument the varinfo of the local function. diff --git a/src/kernel_internals/typing/rmtmps.ml b/src/kernel_internals/typing/rmtmps.ml index 1f1b5f0cd52488f2abf03fe04a8d4478c5223a91..88453138e701c78ab06e99f5cc35e83ec75e6d59 100644 --- a/src/kernel_internals/typing/rmtmps.ml +++ b/src/kernel_internals/typing/rmtmps.ml @@ -414,6 +414,21 @@ class markReachableVisitor | _ -> SkipChildren + method! vstmt s = + match s.skind with + | TryCatch(_,c,_) -> + List.iter + (fun (decl,_) -> + match decl with + | Catch_exn(v,l) -> + (* treat all variables declared in exn clause as used. *) + ignore (self#vvrbl v); + List.iter (fun (v,_) -> ignore (self#vvrbl v)) l + | Catch_all -> ()) + c; + DoChildren + | _ -> DoChildren + method! vinst = function | Asm (_, tmpls, _, _) when Cil.msvcMode () -> (* If we have inline assembly on MSVC, we cannot tell which locals diff --git a/src/kernel_services/abstract_interp/locations.ml b/src/kernel_services/abstract_interp/locations.ml index 10a1b9d591369babca9ace908d1f197425db3024..728ba67800bd5533c17e418f5a3717d27c96aea9 100644 --- a/src/kernel_services/abstract_interp/locations.ml +++ b/src/kernel_services/abstract_interp/locations.ml @@ -183,11 +183,14 @@ module Location_Bytes = struct | Map _ | Top (_, (Well | Unknown | Leaf _)) -> false | Top (_, (Misalign_read _ | Merge _ | Arith _)) -> true + let ref_track_garbled_mix = ref true + let do_track_garbled_mix b = ref_track_garbled_mix := b + (* track a garbled mix if needed, then return it (more convenient for the caller). *) let track_garbled_mix gm = - if is_gm_to_log gm && not (SetGarbledMix.mem gm) then begin - (assert true: unit); + if !ref_track_garbled_mix && is_gm_to_log gm && not (SetGarbledMix.mem gm) + then begin SetGarbledMix.set (MapLatticeIval.Set.add gm (SetGarbledMix.get ())); ListGarbledMix.set (gm :: ListGarbledMix.get ()); end; diff --git a/src/kernel_services/abstract_interp/locations.mli b/src/kernel_services/abstract_interp/locations.mli index e06833798d83e798b9d9f85b9b805c5b59f31741..dc04b3f45d39d784cfe1ff93f1e62835e0d542c6 100644 --- a/src/kernel_services/abstract_interp/locations.mli +++ b/src/kernel_services/abstract_interp/locations.mli @@ -213,7 +213,10 @@ module Location_Bytes : sig val clear_garbled_mix: unit -> unit (** Clear the information on created garbled mix. *) + val do_track_garbled_mix: bool -> unit + (**/**) + val pretty_debug: t Pretty_utils.formatter val clear_caches: unit -> unit end diff --git a/src/kernel_services/analysis/exn_flow.ml b/src/kernel_services/analysis/exn_flow.ml index 3a8eb9f082608add2a6bbb63ad32e5f4b5260f45..1322c6c387867ab7d6290479b3404ba1fe746670 100644 --- a/src/kernel_services/analysis/exn_flow.ml +++ b/src/kernel_services/analysis/exn_flow.ml @@ -676,13 +676,23 @@ object(self) end method private clean_catch_clause (bind,b as handler) acc = + let remove_local v = + let f = Cil.get_fundec self#behavior (Extlib.the self#current_func) in + let v = Cil.get_varinfo self#behavior v in + f.slocals <- List.filter (fun v' -> v!=v') f.slocals; + in match bind with | Catch_all -> handler :: acc | Catch_exn (v, []) -> - if self#is_thrown (purify v.vtype) then handler :: acc else acc + if self#is_thrown (purify v.vtype) then handler :: acc + else begin remove_local v; acc end | Catch_exn (v, l) -> - let l' = List.filter (fun (v,_) -> self#is_thrown (purify v.vtype)) l in - if l' = [] then acc else (Catch_exn (v,l'), b) :: acc + let caught, remove = + List.partition (fun (v,_) -> self#is_thrown (purify v.vtype)) l + in + List.iter (fun (v,_) -> remove_local v) remove; + if caught = [] then begin remove_local v; acc end + else (Catch_exn (v,caught), b) :: acc method! vstmt_aux s = match s.skind with diff --git a/src/kernel_services/analysis/service_graph.ml b/src/kernel_services/analysis/service_graph.ml index c2efad577f62466b0d3273f9ac6ee13a32f90042..015d546135faeaff66bd3e38c687c05c549a185f 100644 --- a/src/kernel_services/analysis/service_graph.ml +++ b/src/kernel_services/analysis/service_graph.ml @@ -71,6 +71,8 @@ struct let hash = id end + module HVertex = Hashtbl.Make(G.V) + module Edge = struct type t = edge let default = Inter_functions @@ -107,13 +109,12 @@ struct type service = Maybe_fresh of node vertex | In_service of node vertex - module Vertices = struct - module H = Hashtbl.Make(G.V) - let vertices : (node vertex * service) H.t = H.create 7 - let find = H.find vertices - let add = H.add vertices - let replace = H.replace vertices - let clear () = H.clear vertices + module Vertices = struct + let vertices : (node vertex * service) HVertex.t = HVertex.create 7 + let find = HVertex.find vertices + let add = HVertex.add vertices + let replace = HVertex.replace vertices + let clear () = HVertex.clear vertices end let edge_invariant src dst = function @@ -129,7 +130,7 @@ Src:%s in %s (is_root:%b) Dst:%s in %s (is_root:%b)" (G.V.name dst.node) (G.V.name dst.root.node) dst.is_root - | Inter_services | Both -> + | Inter_services | Both -> if not (src.is_root && dst.is_root) then Kernel.failure "Correctness bug when computing services.\n\ @@ -240,26 +241,38 @@ Src root:%s in %s (is_root:%b) Dst:%s in %s (is_root:%b) [2d case]" let find node = try fst (Vertices.find node) with Not_found -> assert false in + (* the original graph may contain several edges from [caller] to [callee] + (one per callsite). We must visit them only once. Hence the table + [visited].*) + let visited = HVertex.create 7 in G.iter_vertex (fun node -> - let v = find node in - G.iter_succ - (fun node' -> - let succ = find node' in + let v = find node in + HVertex.reset visited; + G.iter_succ + (fun node' -> + let succ = find node' in + if not (HVertex.mem visited succ.node) then begin + HVertex.add visited succ.node (); Service_graph.add_labeled_edge callg v Inter_functions succ; let src_root = v.root in let dst_root = succ.root in if not (Vertex.equal src_root dst_root) then begin - Service_graph.add_labeled_edge callg src_root Inter_services dst_root - (* JS: no need of a `service_to_function' edge since - it is not possible to have an edge starting from a - not-a-root vertex and going to another service. - - no need of a `function_to_service' edge since the only - possible edges between two services go to a root. *) - end) - g - node) + Service_graph.add_labeled_edge + callg + src_root + Inter_services + dst_root + (* JS: no need of a 'service_to_function' edge since + it is not possible to have an edge starting from a + no-root vertex and going to another service. + + no need of a 'function_to_service' edge too since the only + possible edges between two services go to a root. *) + end + end) + g + node) g let compute g initial_roots = diff --git a/src/kernel_services/ast_data/annotations.ml b/src/kernel_services/ast_data/annotations.ml index f686a153bcd7465ef75dc692ddfc570be20f521b..b41e465baeef0118cc81c1eaa9cf566c9d06e050 100644 --- a/src/kernel_services/ast_data/annotations.ml +++ b/src/kernel_services/ast_data/annotations.ml @@ -1365,7 +1365,7 @@ let unsafe_add_global e a = let add_global e a = unsafe_add_global e a; - if not (Emitter.equal Emitter.end_user e) then insert_global_in_ast a + if Ast.is_computed() then insert_global_in_ast a (**************************************************************************) (** {2 Removing annotations} *) diff --git a/src/kernel_services/ast_data/cil_types.mli b/src/kernel_services/ast_data/cil_types.mli index 1f5b2fdded03c9cde1a17970a64bf3bf7662acf1..df6c1483be7b76ae121c55c1a55de954f3352d1c 100644 --- a/src/kernel_services/ast_data/cil_types.mli +++ b/src/kernel_services/ast_data/cil_types.mli @@ -1156,6 +1156,16 @@ and catch_binder = the matched varinfo into the principal one. Semantics is by value (i.e. the varinfo is bound to a copy of the caught object). + + This clause is a declaration point for the varinfo(s) + mentioned in it. More precisely, for + [Catch_exn(v_0,[(v_1, b_1),..., (v_n, b_n)])], + the [v_i] must be referenced in the [slocals] of the + enclosing [fundec], and _must not_ appear in any [blocals] + of some block. The scope of v_0 is all the [b_i] and + the corresponding block in the [catch_binder * block list] of the + [TryCatch] node the binder belongs to. The scope of the other [v_i] + is the corresponding [b_i]. *) | Catch_all (** default catch clause: all exceptions are caught. *) @@ -1694,12 +1704,11 @@ type cil_function = optional, to distinguish [void f()] ([None]) from [void f(void)] ([Some []]). *) -(** Except field [fundec], do not use the other fields directly. - Prefer to use {!Kernel_function.find_return}, {!Annotations.funspec}, - [Annotations.add_*] or [Annotations.remove_*]. *) +(** Only field [fundec] can be used directly. Use {!Annotations.funspec}, + [Annotations.add_*] and [Annotations.remove_*] to query or modify field + [spec]. *) type kernel_function = { mutable fundec : cil_function; - mutable return_stmt : stmt option; mutable spec : funspec; } diff --git a/src/kernel_services/ast_data/globals.ml b/src/kernel_services/ast_data/globals.ml index 138c11a3c5c5b47bb67cc55d425238dc59324a76..174cd2b92dcc1fa074cff480f99579f63984ee02 100644 --- a/src/kernel_services/ast_data/globals.ml +++ b/src/kernel_services/ast_data/globals.ml @@ -175,7 +175,7 @@ module Functions = struct end let init_kernel_function f spec = - { fundec = f; return_stmt = None; spec = spec } + { fundec = f; spec = spec } let fundec_of_decl spec v l = let args = @@ -208,8 +208,7 @@ module Functions = struct | Definition (_, loc) | Declaration (_, _, _, loc) -> loc in Cil.CurrentLoc.set loc; - Logic_utils.merge_funspec kf.spec spec; - kf.return_stmt <- None + Logic_utils.merge_funspec kf.spec spec let replace_by_declaration s v l= (* Kernel.feedback "replacing %a by decl" Cil_datatype.Varinfo.pretty v;*) diff --git a/src/kernel_services/ast_data/kernel_function.ml b/src/kernel_services/ast_data/kernel_function.ml index 715c1e4d9b6e87086b4d961c1140d3559e16e0a4..34ca22c7aaead9793a5509a9d34057a91211624a 100644 --- a/src/kernel_services/ast_data/kernel_function.ml +++ b/src/kernel_services/ast_data/kernel_function.ml @@ -29,7 +29,6 @@ open Cil_datatype let dummy () = { fundec = Definition (Cil.emptyFunction "@dummy@", Location.unknown); - return_stmt = None; spec = List.hd Funspec.reprs } let get_vi kf = Ast_info.Function.get_vi kf.fundec @@ -80,9 +79,6 @@ let self = Kf.self let auxiliary_kf_stmt_state = Kf.self -let clear_sid_info () = Kf.clear () -let () = Cfg.clear_sid_info_ref := clear_sid_info - let compute () = Kf.memo (fun () -> @@ -223,31 +219,42 @@ let find_enclosing_loop kf stmt = exception Got_return of stmt exception No_Statement +module ReturnCache = + Cil_state_builder.Kernel_function_hashtbl + (Cil_datatype.Stmt) + (struct + let name = "Kernel_function.ReturnCache" + let dependencies = [Ast.self] + let size = 43 + end) + +let () = Ast.add_monotonic_state ReturnCache.self + +let clear_sid_info () = Kf.clear (); ReturnCache.clear () +let () = Cfg.clear_sid_info_ref := clear_sid_info + let find_return kf = - match kf.return_stmt with - | None -> - let find_return fd = - let visitor = object - inherit Cil.nopCilVisitor - method! vstmt s = - match s.skind with - | Return _ -> raise (Got_return s) - | _ -> Cil.DoChildren - end - in - try - ignore (Cil.visitCilFunction (visitor :> Cil.cilVisitor) fd); - assert false - with Got_return s -> s + try + ReturnCache.find kf + with Not_found -> + let find_return fd = + let visitor = object + inherit Cil.nopCilVisitor + method! vstmt s = + match s.skind with + | Return _ -> raise (Got_return s) + | _ -> Cil.DoChildren + end in - (try - let ki = find_return (get_definition kf) in - kf.return_stmt <- Some ki; - ki - with No_Definition -> - raise No_Statement) - | Some ki -> - ki + try + ignore (Cil.visitCilFunction (visitor :> Cil.cilVisitor) fd); + Kernel.fatal "Function %a does not have a return statement" pretty kf + with Got_return s -> + ReturnCache.add kf s; s + in + try + find_return (get_definition kf) + with No_Definition -> raise No_Statement let get_stmts kf = try (get_definition kf).sbody.bstmts with No_Definition | Not_found -> [] diff --git a/src/kernel_services/ast_data/kernel_function.mli b/src/kernel_services/ast_data/kernel_function.mli index fcc5c4ef74aa21a0463b8b5da3efe72d5bec22ee..c92b3a146ade9b9cdbb314942d04ea5f2554a321 100644 --- a/src/kernel_services/ast_data/kernel_function.mli +++ b/src/kernel_services/ast_data/kernel_function.mli @@ -53,8 +53,7 @@ val find_first_stmt : t -> stmt val find_return : t -> stmt (** Find the return statement of a kernel function. - @raise No_Statement is there is no return statement for the given - function. + @raise No_Statement is the kernel function is only a prototype. @modify Nitrogen-20111001 may raise No_Statement*) val find_label : t -> string -> stmt ref diff --git a/src/kernel_services/ast_queries/cil.ml b/src/kernel_services/ast_queries/cil.ml index e07c4c9ef88b2f3ac3fe8f161781894f03ba45ea..d4afa7f5aa36d9f3a3448af4e74f58c1a9ae45d5 100644 --- a/src/kernel_services/ast_queries/cil.ml +++ b/src/kernel_services/ast_queries/cil.ml @@ -5975,6 +5975,17 @@ let need_cast ?(force=false) oldt newt = let makeGlobalVar ?source ?temp name typ = makeVarinfo ?source ?temp true false name typ + let mkPureExpr ?(ghost:bool = false) ~(fundec:fundec) ?(loc=Location.unknown) + (e : exp) : stmt = + let typ = typeOf e in + let descr = Pretty_utils.sfprintf "%a" !pp_exp_ref e in + let scope = mkBlock [] in + let temp = true in + let tmp = makeLocalVar ~temp ~scope fundec "tmp" typ in + tmp.vdescr <- Some descr; + scope.bstmts <- [ mkStmtOneInstr ~ghost (Set(var tmp, e, loc)) ]; + mkStmt (Block scope) + let emptyFunctionFromVI vi = let r = { svar = vi; @@ -7033,6 +7044,8 @@ let initCIL ~initLogicBuiltins machdep = else if name = "unsigned short" then IUShort else if name = "char" then IChar else if name = "unsigned char" then IUChar + else if name = "long long" then ILongLong + else if name = "unsigned long long" then IULongLong else Kernel.fatal ~current:true "initCIL: cannot find the right ikind for type %s" name diff --git a/src/kernel_services/ast_queries/cil.mli b/src/kernel_services/ast_queries/cil.mli index 941940781bd017fa33a866213a9696b95bbec614..f558dcec77b76ddf2b5dab6cb5fb87ab70c9c46a 100644 --- a/src/kernel_services/ast_queries/cil.mli +++ b/src/kernel_services/ast_queries/cil.mli @@ -993,6 +993,13 @@ val dummyInstr: instr @plugin development guide *) val dummyStmt: stmt +(** Make a statement equivalent to a pure expression, 'exp;'. Despite doing + nothing, this statement implies that it is valid to read 'exp' and + therefore has consequences on program verification. + The statement is build as 'tmp = exp;' where tmp is a new fresh + variable. *) +val mkPureExpr: ?ghost:bool -> fundec:fundec -> ?loc:location -> exp -> stmt + (** Make a while loop. Can contain Break or Continue *) val mkWhile: guard:exp -> body:stmt list -> stmt list diff --git a/src/kernel_services/ast_queries/cil_datatype.ml b/src/kernel_services/ast_queries/cil_datatype.ml index 0cfbe9567c862e8ef80ef182714410c4177b927d..8b38882441da5b3b55e48f8bf65f422b5d1c88b1 100644 --- a/src/kernel_services/ast_queries/cil_datatype.ml +++ b/src/kernel_services/ast_queries/cil_datatype.ml @@ -1996,7 +1996,6 @@ module Kf = struct sallstmts = []; sspec = empty_spec }, loc); - return_stmt = None; spec = empty_spec } :: acc) acc Varinfo.reprs) diff --git a/src/kernel_services/ast_queries/cil_state_builder.ml b/src/kernel_services/ast_queries/cil_state_builder.ml index 9e9ef3e2df0877884c1ffd39771024591a758a21..06c1c8dd69b128bf7cb8262f6f86cba75762083b 100644 --- a/src/kernel_services/ast_queries/cil_state_builder.ml +++ b/src/kernel_services/ast_queries/cil_state_builder.ml @@ -27,6 +27,8 @@ module Stmt_set_ref = Set_ref(Stmt.Set) module Kinstr_hashtbl = Hashtbl(Kinstr.Hashtbl) module Stmt_hashtbl = Hashtbl(Stmt.Hashtbl) module Varinfo_hashtbl = Hashtbl(Varinfo.Hashtbl) +module Exp_hashtbl = Hashtbl(Exp.Hashtbl) +module Kernel_function_hashtbl = Hashtbl(Kf.Hashtbl) (* module Code_annotation_hashtbl = State_builder.Hashtbl(Cil_datatype.Code_Annotation) diff --git a/src/kernel_services/ast_queries/cil_state_builder.mli b/src/kernel_services/ast_queries/cil_state_builder.mli index 39c0a3bf80128c85bcde3c62adc9a9ffdbde0df6..87969bf2e54a79a55831b3282d405e1bd94cdcbe 100644 --- a/src/kernel_services/ast_queries/cil_state_builder.mli +++ b/src/kernel_services/ast_queries/cil_state_builder.mli @@ -36,6 +36,16 @@ module Stmt_hashtbl(Data:Datatype.S)(Info: State_builder.Info_with_size) : module Varinfo_hashtbl(Data:Datatype.S)(Info: State_builder.Info_with_size) : State_builder.Hashtbl with type key = Cil_types.varinfo and type data = Data.t + +module Exp_hashtbl(Data:Datatype.S)(Info: State_builder.Info_with_size) : + State_builder.Hashtbl with type key = Cil_types.exp + and type data = Data.t + +module Kernel_function_hashtbl + (Data:Datatype.S)(Info: State_builder.Info_with_size): + State_builder.Hashtbl with type key = Cil_types.kernel_function + and type data = Data.t + (* module Code_annotation_hashtbl (Data:Project.Datatype.S)(Info:State_builder.Info_with_size) : diff --git a/src/kernel_services/ast_queries/file.ml b/src/kernel_services/ast_queries/file.ml index 1537865cbbf25fcfbc77f4835aff4170b01a5530..5d2e594e0a2a5615481a309cc85b1de1a852e21b 100644 --- a/src/kernel_services/ast_queries/file.ml +++ b/src/kernel_services/ast_queries/file.ml @@ -260,6 +260,7 @@ let default_machdeps = "gcc_x86_32", Machdeps.gcc_x86_32; "gcc_x86_64", Machdeps.gcc_x86_64; "ppc_32", Machdeps.ppc_32; + "msvc_x86_64", Machdeps.msvc_x86_64; ] let regexp_existing_machdep_macro = Str.regexp "-D[ ]*__FC_MACHDEP_" @@ -276,6 +277,7 @@ let machdep_macro = function | "x86_32" | "gcc_x86_32" -> "__FC_MACHDEP_X86_32" | "x86_64" | "gcc_x86_64" -> "__FC_MACHDEP_X86_64" | "ppc_32" -> "__FC_MACHDEP_PPC_32" + | "msvc_x86_64" -> "__FC_MACHDEP_MSVC_X86_64" | s -> let res = "__FC_MACHDEP_" ^ (String.uppercase s) in Kernel.warning ~once:true diff --git a/src/kernel_services/ast_queries/filecheck.ml b/src/kernel_services/ast_queries/filecheck.ml index 3e44a5b9659adb370d4c5afb431a8838dfcd4225..8042078d887a20ed2cb4e7bc69cad71f7aa54ac8 100644 --- a/src/kernel_services/ast_queries/filecheck.ml +++ b/src/kernel_services/ast_queries/filecheck.ml @@ -69,6 +69,7 @@ class check ?(is_normalized=true) what : Visitor.frama_c_visitor = val mutable logic_labels = [] val mutable globals_functions = Varinfo.Set.empty val mutable globals_vars = Varinfo.Set.empty + val mutable return_stmt = None val quant_orig = Stack.create () @@ -139,7 +140,9 @@ class check ?(is_normalized=true) what : Visitor.frama_c_visitor = check_abort "variable %s is not shared between definition and use" v.vname in - let unknown () = check_abort "variable %s is not declared" v.vname in + let unknown () = + check_abort "variable %s(%d) is not declared" v.vname v.vid + in if not v.vglob || not (Ast_info.is_frama_c_builtin v.vname) then (try if Varinfo.Hashtbl.find known_vars v != v then not_shared () @@ -222,6 +225,7 @@ class check ?(is_normalized=true) what : Visitor.frama_c_visitor = check_abort "Body of %a is not shared between kernel function and AST" Kernel_function.pretty kf; + return_stmt <- Some (Kernel_function.find_return kf) end; labelled_stmt <- []; Stmt.Hashtbl.clear known_stmts; @@ -266,6 +270,12 @@ class check ?(is_normalized=true) what : Visitor.frama_c_visitor = Printer.pp_varinfo f.svar) labelled_stmt; labelled_stmt <- []; + (match return_stmt with + | None -> () + | Some _ -> (* can only happen in normalized mode. *) + check_abort + "Function %a does not have a return statement in its body" + Kernel_function.pretty (Extlib.the self#current_kf)); let check_one_stmt stmt _ = let check_cfg_edge stmt' = try @@ -341,6 +351,13 @@ class check ?(is_normalized=true) what : Visitor.frama_c_visitor = "Statement is referenced by \\at or goto without having a label"; labelled_stmt <- !s :: labelled_stmt + method private check_try_catch_decl (decl,_) = + match decl with + | Catch_exn(v,l) -> + self#check_local_var v; + List.iter (fun (v,_) -> self#check_local_var v) l + | Catch_all -> () + method! vstmt_aux s = Stmt.Hashtbl.add known_stmts s s; Stmt.Hashtbl.remove switch_cases s; @@ -391,23 +408,42 @@ class check ?(is_normalized=true) what : Visitor.frama_c_visitor = logic_labels <- Logic_const.(loop_current_label :: loop_entry_label :: logic_labels); Cil.DoChildrenPost (fun s -> logic_labels <- old_labels; s) + | TryCatch(_,c,_) -> + List.iter self#check_try_catch_decl c; + Cil.DoChildren + | Return _ -> + if is_normalized then begin + match return_stmt with + | None -> + check_abort + "Found a second return statement in body of function %a" + Kernel_function.pretty (Extlib.the self#current_kf) + | Some s' when s != s' -> + check_abort + "Function %a is supposed to have as return statement %d:@\n%a@\n\ + Found in its body statement %d:@\n%a@\n" + Kernel_function.pretty (Extlib.the self#current_kf) + s'.sid Printer.pp_stmt s' + s.sid Printer.pp_stmt s + | Some _ -> return_stmt <- None + end; + Cil.DoChildren | _ -> Cil.DoChildren); + method private check_local_var v = + if Varinfo.Set.mem v local_vars then begin + local_vars <- Varinfo.Set.remove v local_vars; + end else begin + check_abort + "In function %a, variable %a(%d) is supposed to be local to a block \ + but not mentioned in the function's locals." + Printer.pp_varinfo + (Extlib.the self#current_func).svar + Printer.pp_varinfo v v.vid + end + method! vblock b = - (* ensures that the blocals are part of the locals of the function. *) - List.iter - (fun v -> - if Varinfo.Set.mem v local_vars then begin - local_vars <- Varinfo.Set.remove v local_vars; - end else begin - check_abort - "In function %a, variable %a is supposed to be local to a block \ - but not mentioned in the function's locals." - Printer.pp_varinfo - (Kernel_function.get_vi (Extlib.the self#current_kf)) - Printer.pp_varinfo v - end) - b.blocals; + List.iter self#check_local_var b.blocals; Cil.DoChildren method! vbehavior b = @@ -432,7 +468,8 @@ class check ?(is_normalized=true) what : Visitor.frama_c_visitor = method! vspec _ = let old_labels = logic_labels in logic_labels <- - Logic_const.(here_label :: pre_label :: old_label :: logic_labels); + Logic_const.( + init_label :: here_label :: pre_label :: old_label :: logic_labels); Cil.DoChildrenPost (fun s -> logic_labels <- old_labels; s) method! vcode_annot ca = @@ -444,7 +481,8 @@ class check ?(is_normalized=true) what : Visitor.frama_c_visitor = Printer.pp_code_annotation ca end else Hashtbl.add known_code_annot_id ca.annot_id ca; let old_labels = logic_labels in - logic_labels <- Logic_const.(here_label :: pre_label :: logic_labels); + logic_labels <- + Logic_const.(init_label :: here_label :: pre_label :: logic_labels); Cil.DoChildrenPost (fun ca -> logic_labels <- old_labels; ca) method! voffs = function @@ -496,6 +534,29 @@ class check ?(is_normalized=true) what : Visitor.frama_c_visitor = end; Cil.DoChildren + method! vterm_lhost = function + | TResult t when is_normalized -> + (* if not normalized, contracts are visited while kf is not set *) + (match self#current_kf with + | None -> + check_abort "\\result found outside of a function contract" + | Some kf -> + let t1 = Kernel_function.get_return_type kf in + if Cil.isVoidType t1 then + check_abort + "\\result found in a contract for function %a that returns void" + Kernel_function.pretty kf; + if not (Cil_datatype.TypNoUnroll.equal t t1) then + check_abort + "\\result of type %a found in a contract for function %a that \ + returns %a" + Cil_datatype.Typ.pretty t + Kernel_function.pretty kf + Cil_datatype.Typ.pretty t1 + ); + Cil.DoChildren + | _ -> Cil.DoChildren + method private check_ei: 'a. enumitem -> 'a Cil.visitAction = fun ei -> try @@ -936,16 +997,27 @@ class check ?(is_normalized=true) what : Visitor.frama_c_visitor = | _ -> Cil.DoChildren method! vtype ty = - (match ty with - | TArray (_, _, _, la) -> - let elt, _ = Cil.splitArrayAttributes la in - if elt != [] then - Kernel.fatal - "Element attribute on array type itself: %a" - Printer.pp_attributes elt - | _ -> () - ); - Cil.DoChildren + match ty with + | TArray (_, _, _, la) -> + let elt, _ = Cil.splitArrayAttributes la in + if elt != [] then + Kernel.fatal + "Element attribute on array type itself: %a" + Printer.pp_attributes elt; + Cil.DoChildren + | TFun(rt, _, _, attrs) -> + (* we do not visit parameters. This is handled elsewhere, and it + is not possible to perform a sensible check for dependent types + at this level, e.g. for + void f(int n, int arr[10][n]); + as in TFun the parameters are simple string, and not tied to + the varinfo that we would like to put in scope to check that + arr[10][n] is well formed. + *) + ignore (Cil.visitCilType (self:>Cil.cilVisitor) rt); + ignore (Cil.visitCilAttributes (self:>Cil.cilVisitor) attrs); + Cil.SkipChildren + | _ -> Cil.DoChildren initializer @@ -969,6 +1041,6 @@ let check_ast ?is_normalized ?(ast = Ast.get()) what = (* Local Variables: -compile-command: "make -C ../.." +compile-command: "make -C ../../.." End: *) diff --git a/src/kernel_services/ast_queries/logic_typing.ml b/src/kernel_services/ast_queries/logic_typing.ml index a03c06b7a3cba0a103cc3a872c36cf95389989cb..5cb255f674d56b76d171b6a1f42259767e3dc487 100644 --- a/src/kernel_services/ast_queries/logic_typing.ml +++ b/src/kernel_services/ast_queries/logic_typing.ml @@ -48,7 +48,7 @@ let wcharlist_of_string s = let rec treat_escape_octal n nb_pass = if nb_pass > 2 then res:= n::!res else if !i >= String.length s then res:= n::!res - else match s.[!i] with + else match String.get s !i with x when '0' <= x && x <= '9' -> incr i; treat_escape_octal @@ -58,7 +58,7 @@ let wcharlist_of_string s = in let rec treat_escape_hexa n = if !i >= String.length s then res:= n::!res - else match s.[!i] with + else match String.get s !i with x when '0' <= x && x <= '9' -> incr i; treat_escape_hexa @@ -80,7 +80,7 @@ let wcharlist_of_string s = if !i >= String.length s then Kernel.warning ~current:true "Ill-formed escape sequence in wide string" else begin - match s.[!i] with + match String.get s !i with x when '0' <= x && x <= '9' -> treat_escape_octal Int64.zero 0 | 'x' -> incr i; treat_escape_hexa Int64.zero @@ -102,7 +102,7 @@ let wcharlist_of_string s = end in while (!i < String.length s) do - match s.[!i] with + match String.get s !i with | '\\' -> incr i; treat_escape_sequence () | c -> res := Int64.of_int (Char.code c)::!res; incr i done; @@ -1736,7 +1736,7 @@ struct String.iter (fun c -> l:=Int64.of_int (Char.code c) :: !l) s; List.rev !l in - match s.[0] with + match String.get s 0 with | 'L' -> (* L'wide_char' *) let content = String.sub s 2 (String.length s - 3) in let tokens = explode content in @@ -2055,22 +2055,50 @@ struct call itself to have a consistent AST, i.e. something like logic f{L}(...) = ... f{L}(...). + In case of inductive predicates, the considered label is not the one given + into the profile of the predicate, but the one given into the defined case, + i.e. something like + inductive P{...}(...) { case n{L}: .... P{L}(...) }. + The visit must be done after the type-checking, as the implicit label may be added after the recursive call has been handled. *) let add_label info lab = let vis = - object + object(self) + val mutable curr_lab = lab inherit Cil.nopCilVisitor method! vterm_node t = match t with | Tapp(info',[],args) when Cil_datatype.Logic_info.equal info info' -> - ChangeDoChildrenPost(Tapp(info,[lab, lab], args),Extlib.id) + ChangeDoChildrenPost(Tapp(info,[lab, curr_lab], args),Extlib.id) | _ -> DoChildren method! vpredicate p = match p with | Papp(info',[],args) when Cil_datatype.Logic_info.equal info info' -> - ChangeDoChildrenPost (Papp(info, [lab,lab], args),Extlib.id) + ChangeDoChildrenPost (Papp(info, [lab,curr_lab], args),Extlib.id) + | _ -> DoChildren + + method private treat_ind_case (n,labs,t,p as ind) = + match labs with + | [ mylab ] -> + let old = curr_lab in + curr_lab <- mylab; + let p' = Cil.visitCilPredicateNamed self p in + let res = if p' != p then (n, labs, t, p') else ind in + curr_lab <- old; + res + | _ -> ind + (* We do not have a context allowing to update the predicate. + Implies that any recursive call is already explicitely guarded + *) + + method! vlogic_info_decl info = + match info.l_body with + | LBinductive l -> + let l' = Cil.mapNoCopy self#treat_ind_case l in + if l != l' then info.l_body <- LBinductive l'; + SkipChildren | _ -> DoChildren end in @@ -2466,6 +2494,10 @@ let add_label info lab = %s as constant" x) end | PLapp (f, labels, tl) -> + let f = try (match (C.find_macro f).lexpr_node with + | PLvar (x) -> x + | _ -> C.error loc "invalid definition for macro %s" f) + with Not_found -> f in let ttl = List.map (term ~silent env) tl in fresh_type#reset (); lfun_app ~silent env loc f labels ttl @@ -3128,6 +3160,10 @@ let add_label info lab = prel ~loc (Cil_types.Req, t, Cil.lzero ~loc ()) | p -> pnot ~loc p) | PLapp (p, labels, tl) -> + let p = try (match (C.find_macro p).lexpr_node with + | PLvar (x) -> x + | _ -> C.error loc "invalid definition for macro %s" p) + with Not_found -> p in let ttl= List.map (term env) tl in let info, label_assoc, tl, t = type_logic_app env loc p labels ttl in begin diff --git a/src/kernel_services/ast_transformations/filter.ml b/src/kernel_services/ast_transformations/filter.ml index be66680f2c83238e2bade246a539f2b615d2539e..8fb479c595e60f2f5873ce3dfd7b521b6ebfe34a 100644 --- a/src/kernel_services/ast_transformations/filter.ml +++ b/src/kernel_services/ast_transformations/filter.ml @@ -88,9 +88,7 @@ end = struct | Declaration(_,_,arg,l) -> Declaration(Cil.empty_funspec(),v,arg,l) in - let kf = - { fundec = fundec; spec = Cil.empty_funspec(); return_stmt = None } - in + let kf = { fundec = fundec; spec = Cil.empty_funspec() } in Cil_datatype.Varinfo.Hashtbl.add tbl v kf; kf let rec can_skip keep_stmts stmt = diff --git a/src/kernel_services/parsetree/logic_ptree.mli b/src/kernel_services/parsetree/logic_ptree.mli index b00b2876ef5779012c46ce1dc4b92e20feacf911..719c9617651e28ff5e27fa3b51656c5a18f06f1e 100644 --- a/src/kernel_services/parsetree/logic_ptree.mli +++ b/src/kernel_services/parsetree/logic_ptree.mli @@ -286,7 +286,7 @@ type ext_function = | Ext_stmt of string list * annot * location (* loop/code annotation. *) | Ext_glob of ext_decl -type ext_module = string * ext_decl list * ((string * location) * ext_function list) list +type ext_module = string option * ext_decl list * ((string * location) option * ext_function list) list type ext_spec = ext_module list (* diff --git a/src/kernel_services/plugin_entry_points/db.ml b/src/kernel_services/plugin_entry_points/db.ml index 187313f8a9ba59bbb9a56b257a6d88dabe4ce1a1..ac6a18f35d61b76d577310c9532ad0ac7f6c9800 100644 --- a/src/kernel_services/plugin_entry_points/db.ml +++ b/src/kernel_services/plugin_entry_points/db.ml @@ -1139,6 +1139,7 @@ module RteGen = struct let get_divMod_status = mk_fun "RteGen.get_divMod_status" let get_signed_downCast_status = mk_fun "RteGen.get_signed_downCast_status" let get_memAccess_status = mk_fun "RteGen.get_memAccess_status" + let get_pointerCall_status = mk_fun "RteGen.get_pointerCall_status" let get_unsignedOv_status = mk_fun "RteGen.get_unsignedOv_status" let get_unsignedDownCast_status = mk_fun "RteGen.get_unsignedDownCast_status" end diff --git a/src/kernel_services/plugin_entry_points/db.mli b/src/kernel_services/plugin_entry_points/db.mli index 45988a0ffa22188a8d70f77d61cd93e07429b34f..8bf3aab9c8075a45e6c7fbc0185c0242778dcfe0 100644 --- a/src/kernel_services/plugin_entry_points/db.mli +++ b/src/kernel_services/plugin_entry_points/db.mli @@ -873,6 +873,7 @@ module RteGen : sig val get_precond_status : (unit -> status_accessor) ref val get_divMod_status : (unit -> status_accessor) ref val get_memAccess_status : (unit -> status_accessor) ref + val get_pointerCall_status: (unit -> status_accessor) ref val get_signedOv_status : (unit -> status_accessor) ref val get_signed_downCast_status : (unit -> status_accessor) ref val get_unsignedOv_status : (unit -> status_accessor) ref diff --git a/src/kernel_services/plugin_entry_points/dynamic.ml b/src/kernel_services/plugin_entry_points/dynamic.ml index 423189b9870cf5f315e934f8840b517f0b167ae7..c8618ffa1564850a041ca8839e4c4f31d2558a6a 100644 --- a/src/kernel_services/plugin_entry_points/dynamic.ml +++ b/src/kernel_services/plugin_entry_points/dynamic.ml @@ -236,7 +236,7 @@ let load_script base = else Format.fprintf fmt "%s -c" Config.ocamlc ; Format.fprintf fmt " -w Ly -warn-error A -I %s" Config.libdir ; - if !Config.is_gui then Format.pp_print_string fmt " -I +lablgtk" ; + if !Config.is_gui then Format.pp_print_string fmt " -package lablgtk2" ; List.iter (fun p -> Format.fprintf fmt " -I %s" p) !load_path ; Format.fprintf fmt " %s.ml" base ; Format.pp_print_flush fmt () ; diff --git a/src/kernel_services/plugin_entry_points/plugin.ml b/src/kernel_services/plugin_entry_points/plugin.ml index a7ad1a41d03f27334aef5193f2c872619ced86da..ed432c2c43cf7c378297fe1e8c68691abb0ece0b 100644 --- a/src/kernel_services/plugin_entry_points/plugin.ml +++ b/src/kernel_services/plugin_entry_points/plugin.ml @@ -420,7 +420,11 @@ struct (struct include Datatype.String type key = string - let of_string ~key:_ ~prev:_ s = s + let of_string ~key:_ ~prev:_ s = + match s with + | None -> raise (Cannot_build "missing delimiter") + | Some s when s = "" -> raise (Cannot_build "missing filename") + | Some _ -> s let to_string ~key:_a b = b end) (struct diff --git a/src/libraries/project/state_builder.ml b/src/libraries/project/state_builder.ml index 5331b87690d91fb6b7cb8befb6f8f4784406c2b2..2b8eea356b0e17d702e1800a50a21b2ef1203520 100644 --- a/src/libraries/project/state_builder.ml +++ b/src/libraries/project/state_builder.ml @@ -988,6 +988,88 @@ let apply_once name dep f = end), First.self + +(* ****************************************************************************) +(** {3 Generic hashconsing} *) +(* ****************************************************************************) + +module type Hashcons = sig + type elt + + include Datatype.S_with_collections + + val hashcons: elt -> t + val get: t -> elt + + val id: t -> int +end + + +module Hashcons (Data: Datatype.S)(Info: Info) = struct + + type elt = Data.t + + type hashconsed = { key : Data.t; id : int; } + + let rehash_ref = ref (fun _ -> assert false) + + module D = Datatype.Make_with_collections (struct + include Datatype.Serializable_undefined + type t = hashconsed + let name = "Hashconsed(" ^ Data.name ^ "," ^ Info.name ^ ")" + + let reprs = [ { key = List.hd Data.reprs; id = 0 } ] + + let structural_descr = + Structural_descr.t_record + [| Data.packed_descr; Structural_descr.p_int |] + + let equal = ( == ) + let compare { id = t1 } { id = t2 } = Datatype.Int.compare t1 t2 + let pretty fmt { key } = Data.pretty fmt key + let hash { id } = id + let copy c = c + + let rehash x = !rehash_ref x + + end) + + include D + + module HashConsTbl = + Hashconsing_tbl + (struct + include D + let hash_internal a = Data.hash a.key + let equal_internal a b = Data.equal a.key b.key + let initial_values = [] (* TODO? *) + end) + (struct + let name = "Hashconstable(" ^ Data.name ^ "," ^ Info.name ^ ")" + let dependencies = Info.dependencies + let size = 128 + end) + + let counter = ref 0 + + let hashcons key = + let id = !counter in + let hashed_atom = { key; id } in + let hashconsed_atom = HashConsTbl.merge hashed_atom in + if hashconsed_atom.id = !counter then + (* Fresh new atom. this counter id is used. *) + counter := succ !counter; + hashconsed_atom + + let () = rehash_ref := fun x -> hashcons x.key + + let get { key } = key + let id { id } = id + +end + + + (* Local Variables: compile-command: "make -C ../../.." diff --git a/src/libraries/project/state_builder.mli b/src/libraries/project/state_builder.mli index e08c2a901442915750401cc34f75227b8cc85611..16f2eafee7ee168a0ddb3813d424a989c2d9f6d3 100644 --- a/src/libraries/project/state_builder.mli +++ b/src/libraries/project/state_builder.mli @@ -463,6 +463,28 @@ module SharedCounter(Info : sig val name : string end) : Counter @since Nitrogen-20111001 *) module Counter(Info : sig val name : string end) : Counter + +(* ****************************************************************************) +(** {2 Generic functor to hashcons an arbitrary type } *) +(* ****************************************************************************) + +(** Output signature of [Hashcons] below. *) +module type Hashcons = sig + type elt (** The type of the elements that are hash-consed *) + + include Datatype.S_with_collections (** hashconsed version of {!elt} *) + + val hashcons: elt -> t (** Injection as an hashconsed value. *) + val get: t -> elt (** Projection out of hashconsing. *) + + val id: t -> int (** Id of an hashconsed value. Unique: + [id x = id y] is equivalent to equality on {!elt}. *) +end + +(** Hashconsed version of an arbitrary datatype *) +module Hashcons (Data: Datatype.S)(Info: Info) : Hashcons with type elt = Data.t + + (* ************************************************************************* *) (** {3 Useful operations} *) (* ************************************************************************* *) diff --git a/src/libraries/utils/bitvector.ml b/src/libraries/utils/bitvector.ml index bbb191531fa8911451cee82edc9d9d3e39f59737..cd75681b8ce5fd6789add79b3b7e6fe783627da9 100644 --- a/src/libraries/utils/bitvector.ml +++ b/src/libraries/utils/bitvector.ml @@ -38,7 +38,7 @@ in operations that are sensitive to them, but this seems more error-prone. *) -type t = string +type t = bytes let max_size = 1 lsl 20 @@ -50,33 +50,33 @@ let ( &&& ) a m = char_of_int ((int_of_char a) land m);; (* Imperatively unset the extra trailing bits *) let clean_trail size bv = let last = (size + 7) / 8 - 1 in - assert (last < String.length bv); + assert (last < Bytes.length bv); let r = size land 7 in if r > 0 then (let mask = 1 lsl r - 1 in bv.[last] <- bv.[last] &&& mask) ; - for i = last + 1 to String.length bv - 1 do + for i = last + 1 to Bytes.length bv - 1 do bv.[i] <- '\000' ; done ; bv ;; -let capacity s = String.length s * 8 +let capacity s = Bytes.length s * 8 let create n = let s = (n + 7) lsr 3 in (* rounded-up division *) if s > max_size then raise (Invalid_argument "Bitvector.create") ; - String.make s '\000' + Bytes.make s '\000' let resize n s = let u = create n in - String.blit s 0 u 0 (min (String.length s) (String.length u)) ; + Bytes.blit s 0 u 0 (min (Bytes.length s) (Bytes.length u)) ; clean_trail n u let create_set n = let s = (n + 7) lsr 3 in (* rounded-up division *) if s > max_size then raise (Invalid_argument "Bitvector.create") ; - let copy = String.make s (char_of_int 255) in + let copy = Bytes.make s (char_of_int 255) in let r = n land 7 in (* Set only the last r bits in the last byte. *) if r != 0 @@ -95,21 +95,21 @@ let pp_elts fmt x = done let pretty fmt s = - for i=0 to String.length s - 1 do + for i=0 to Bytes.length s - 1 do if i > 0 then Format.pp_print_space fmt () ; pp_elts fmt (int_of_char s.[i]) ; done let is_empty s = try - for i=0 to String.length s - 1 do + for i=0 to Bytes.length s - 1 do if s.[i] <> '\000' then raise Exit ; done ; true with Exit -> false let set s k = let p = k lsr 3 in - if p >= String.length s then + if p >= Bytes.length s then raise (Invalid_argument "Bitvector.set") ; let r = k land 7 in let b = int_of_char s.[p] lor (1 lsl r) in @@ -117,7 +117,7 @@ let set s k = let clear s k = let p = k lsr 3 in - if p >= String.length s then + if p >= Bytes.length s then raise (Invalid_argument "Bitvector.clear") ; let r = k land 7 in let b = int_of_char s.[p] land (lnot (1 lsl r)) in @@ -125,14 +125,14 @@ let clear s k = let mem s k = let p = k lsr 3 in - if p >= String.length s then + if p >= Bytes.length s then raise (Invalid_argument "Bitvector.mem") ; let r = k land 7 in int_of_char s.[p] land (1 lsl r) <> 0 let once s k = let p = k lsr 3 in - if p >= String.length s then + if p >= Bytes.length s then raise (Invalid_argument "Bitvector.once") ; let r = k land 7 in let b0 = int_of_char s.[p] in @@ -141,7 +141,7 @@ let once s k = let bnot size s = let len = (size + 7) / 8 in - let copy = String.make (String.length s) '\000' in + let copy = Bytes.make (Bytes.length s) '\000' in for i = 0 to len-1 do copy.[i] <- char_of_int ((lnot (int_of_char s.[i])) land 255) done; @@ -152,9 +152,9 @@ let bnot size s = (* Internal; this function does not clean the trail for operations that do not need it. *) let bitwise_bop bop a b = - assert ((String.length a) = (String.length b)); - let copy = String.make (String.length a) '\000' in - for i = 0 to (String.length a) - 1 do + assert ((Bytes.length a) = (Bytes.length b)); + let copy = Bytes.make (Bytes.length a) '\000' in + for i = 0 to (Bytes.length a) - 1 do copy.[i] <- char_of_int (255 land (bop (int_of_char a.[i]) (int_of_char b.[i]))); done; copy @@ -168,9 +168,9 @@ let beq size a b = ;; let bitwise_op2 size op2 a b = - let len = String.length a in - assert (len = (String.length b)); - let copy = String.make len '\000' in + let len = Bytes.length a in + assert (len = (Bytes.length b)); + let copy = Bytes.make len '\000' in for i = 0 to len - 1 do copy.[i] <- char_of_int (255 land (op2 (int_of_char a.[i]) @@ -182,10 +182,10 @@ let bitwise_op2 size op2 a b = let bitwise_op3 size op3 a b c = - let len = String.length a in - assert (len = (String.length b)); - assert (len = (String.length c)); - let copy = String.make len '\000' in + let len = Bytes.length a in + assert (len = (Bytes.length b)); + assert (len = (Bytes.length c)); + let copy = Bytes.make len '\000' in for i = 0 to len - 1 do copy.[i] <- char_of_int (255 land (op3 (int_of_char a.[i]) @@ -196,11 +196,11 @@ let bitwise_op3 size op3 a b c = ;; let bitwise_op4 size op4 a b c d = - let len = String.length a in - assert (len = (String.length b)); - assert (len = (String.length c)); - assert (len = (String.length d)); - let copy = String.make len '\000' in + let len = Bytes.length a in + assert (len = (Bytes.length b)); + assert (len = (Bytes.length c)); + assert (len = (Bytes.length d)); + let copy = Bytes.make len '\000' in for i = 0 to len - 1 do copy.[i] <- char_of_int (255 land (op4 @@ -219,17 +219,17 @@ let concat bv1 size1 bv2 size2 = let len1 = size1 / 8 in let str1 = (size1 + 7) / 8 in let str2 = (size2 + 7) / 8 in - assert (str1 <= String.length bv1); - assert (str2 <= String.length bv2); + assert (str1 <= Bytes.length bv1); + assert (str2 <= Bytes.length bv2); let newlen = (size1 + size2 + 7) / 8 in - let copy = String.create newlen in - String.blit bv1 0 copy 0 len1 ; + let copy = Bytes.create newlen in + Bytes.blit bv1 0 copy 0 len1 ; let fst_bits = size1 land 7 in let snd_bits = 8 - fst_bits in (* Byte-aligned case. *) if fst_bits = 0 then - (String.blit bv2 0 copy len1 str2; + (Bytes.blit bv2 0 copy len1 str2; copy) (* Not aligned. *) @@ -249,7 +249,7 @@ let concat bv1 size1 bv2 size2 = clean_trail (size1+size2) copy;; let iter_true f s = - for p = 0 to String.length s - 1 do + for p = 0 to Bytes.length s - 1 do let x = int_of_char s.[p] in if x <> 0 then let q = p lsl 3 in @@ -267,7 +267,7 @@ exception Result of int let find_next_true s k = let p = k lsr 3 in - if p >= String.length s then + if p >= Bytes.length s then raise Not_found; let x = int_of_char s.[p] in let r = k land 7 in @@ -277,7 +277,7 @@ let find_next_true s k = if x land (1 lsl r') <> 0 then raise (Result ((p lsl 3) lor r')) done; - for p' = (p+1) to (String.length s - 1) do + for p' = (p+1) to (Bytes.length s - 1) do let x = int_of_char s.[p'] in if x <> 0 then for r' = 0 to 7 do diff --git a/src/libraries/utils/pretty_utils.ml b/src/libraries/utils/pretty_utils.ml index 0b02638451a0681027e8912535d27c74dcbe22a1..0e2f91179ff60fd13db143d8e2b48902b71f4df3 100644 --- a/src/libraries/utils/pretty_utils.ml +++ b/src/libraries/utils/pretty_utils.ml @@ -53,6 +53,7 @@ let pp_list ?(sep=format_of_string "@,") ?(last=sep) ?(suf=format_of_string "@]") + ?(empty=format_of_string "") pp_elt f l = let rec aux f = function | [] -> assert false @@ -61,16 +62,17 @@ let pp_list | e :: l -> Format.fprintf f "%a%(%)%a" pp_elt e sep aux l in match l with - | [] -> () + | [] -> Format.fprintf f "%(%)" empty | _ :: _ as l -> Format.fprintf f "%(%)%a%(%)" pre aux l suf let pp_array ?(pre=format_of_string "@[") ?(sep=format_of_string "") ?(suf=format_of_string "@]") + ?(empty=format_of_string "") pp_elt f xs = match xs with - | [| |] -> () + | [| |] -> Format.fprintf f "%(%)" empty | xs -> begin Format.fprintf f pre ; diff --git a/src/libraries/utils/pretty_utils.mli b/src/libraries/utils/pretty_utils.mli index 9f9a236f2ed8039c52f9c38793d37b0f40e516d2..29bcf1a3762d7f49e52db0ba9aa30beabfa0edfe 100644 --- a/src/libraries/utils/pretty_utils.mli +++ b/src/libraries/utils/pretty_utils.mli @@ -62,19 +62,27 @@ type 'a formatter = Format.formatter -> 'a -> unit type ('a,'b) formatter2 = Format.formatter -> 'a -> 'b -> unit val pp_list: ?pre:sformat -> ?sep:sformat -> ?last:sformat -> ?suf:sformat -> - 'a formatter -> 'a list formatter + ?empty:sformat -> 'a formatter -> 'a list formatter (** pretty prints a list. The optional arguments stands for - the prefix to output before a non-empty list (default: open a box) - the separator between two elements (default: nothing) - the last separator to be put just before the last element (default:sep) - - the suffix to output after a non-empty list (default: close box) *) + - the suffix to output after a non-empty list (default: close box) + - what to print if the list is empty (default: nothing) -val pp_array: ?pre:sformat -> ?sep:sformat -> ?suf:sformat -> + @modify Aluminium-20160501+dev new optional argument [empty] + *) + +val pp_array: ?pre:sformat -> ?sep:sformat -> ?suf:sformat -> ?empty:sformat -> (int,'a) formatter2 -> 'a array formatter (** pretty prints an array. The optional arguments stands for - - the prefix to output before a non-empty list (default: open a box) + - the prefix to output before a non-empty array (default: open a box) - the separator between two elements (default: nothing) - - the suffix to output after a non-empty list (default: close box) *) + - the suffix to output after a non-empty array (default: close box) + - what to print if the array is empty (default: nothing) + + @modify Aluminium-20160501+dev new optional argument [empty] + *) val pp_iter: ?pre:sformat -> ?sep:sformat -> ?suf:sformat -> diff --git a/src/libraries/utils/task.ml b/src/libraries/utils/task.ml index 3a18acf000090fadbda49de87c0c65509a19f89d..7d6b6c5a5aeea501e05944d6acf352982d4d96e2 100644 --- a/src/libraries/utils/task.ml +++ b/src/libraries/utils/task.ml @@ -186,8 +186,8 @@ let rec lock m = else (m := true ; return ()) let unlock m = if not !m - then (failed "Invalid lock on mutex") - else (m := false ; return ()) + then (invalid_arg "Invalid lock on mutex") + else m := false let sync m t = lock m >>= t >>? fun _ -> unlock m diff --git a/src/plugins/aorai/Makefile.in b/src/plugins/aorai/Makefile.in index 6509818c16b1388c1230374f8c3f82f3b59c61fb..a332ec1a2642129e8c764846b441cfae366afd82 100644 --- a/src/plugins/aorai/Makefile.in +++ b/src/plugins/aorai/Makefile.in @@ -31,7 +31,7 @@ # Do not use ?= to initialize both below variables # (fixed efficiency issue, see GNU Make manual, Section 8.11) ifndef FRAMAC_SHARE -FRAMAC_SHARE :=$(shell frama-c-config -print-path) +FRAMAC_SHARE :=$(shell frama-c-config -print-share-path) endif ifndef FRAMAC_LIBDIR FRAMAC_LIBDIR :=$(shell frama-c-config -print-libpath) @@ -81,6 +81,7 @@ PLUGIN_NO_DEFAULT_TEST:=yes endif PLUGIN_TESTS_DIRS:=aorai +PLUGIN_TESTS_LIB:=$(PLUGIN_DIR)/tests/aorai/Aorai_test.ml include $(FRAMAC_SHARE)/Makefile.dynamic @@ -103,21 +104,12 @@ $(Aorai_DIR)/tests/test_config_prove: \ $(SED) -e 's!@AORAI_WP_SHARE@!$(AORAI_WP_SHARE)!' $< > $@ $(CHMOD_RO) $@ +Aorai_DEFAULT_TESTS: $(Aorai_DIR)/tests/aorai/Aorai_test.cmxs $(Aorai_DIR)/tests/aorai/Aorai_test.cmo + $(Aorai_DIR)/Makefile: $(Aorai_DIR)/Makefile.in \ $(CONFIG_STATUS_DIR)/config.status cd $(CONFIG_STATUS_DIR) && ./config.status --file $@ -byte:: $(Aorai_DIR)/tests/aorai/Aorai_test.cmo -opt:: $(Aorai_DIR)/tests/aorai/Aorai_test.cmxs - -ifeq ("$(FRAMAC_INTERNAL)","yes") -$(Aorai_DIR)/tests/aorai/Aorai_test.cmo: bin/toplevel.byte$(EXE) -$(Aorai_DIR)/tests/aorai/Aorai_test.cmxs: bin/toplevel.opt$(EXE) -else -$(Aorai_DIR)/tests/aorai/Aorai_test.cmo: $(Aorai_TARGET_CMO) -$(Aorai_DIR)/tests/aorai/Aorai_test.cmxs: $(Aorai_TARGET_CMXS) -endif - headers:: $(SED) -e 's/This file is/Files in this archive are/' \ $(FRAMAC_SRC)/headers/open-source/INSA_INRIA_LGPL \ diff --git a/src/plugins/aorai/aorai_register.ml b/src/plugins/aorai/aorai_register.ml index 987b464b0a74829a5909c7094f6ea8d0bb31be14..f27271f18abba3d959ccbb6a70ae3e9c8335bf77 100644 --- a/src/plugins/aorai/aorai_register.ml +++ b/src/plugins/aorai/aorai_register.ml @@ -302,20 +302,32 @@ let work () = printverb "Refining pre/post : \n"; Aorai_dataflow.compute (); (* Step 6 : Removing transitions never crossed *) - if (Aorai_option.AutomataSimplification.get()) then - begin - printverb "Removing unused trans : done\n"; - Data_for_aorai.removeUnusedTransitionsAndStates (); - end - else - printverb "Removing unused trans : skipped\n"; + let automaton_has_states = + if (Aorai_option.AutomataSimplification.get()) then + begin + printverb "Removing unused trans : done\n"; + try + Data_for_aorai.removeUnusedTransitionsAndStates (); + true + with Data_for_aorai.Empty_automaton -> + Aorai_option.warning + "No state of the automaton is reachable. \ + Program and specification are incompatible, \ + instrumentation will not be generated."; + false + end + else + (printverb "Removing unused trans : skipped\n"; true) + in + if automaton_has_states then begin (* Step 7 : Labeling abstract file *) (* Finally the information is added into the Cil automata. *) - Aorai_utils.initGlobals root (Aorai_option.Axiomatization.get()); - Aorai_visitors.add_sync_with_buch file; - Aorai_visitors.add_pre_post_from_buch file - (Aorai_option.advance_abstract_interpretation ()); - printverb "Annotation of Cil : done\n"; + Aorai_utils.initGlobals root (Aorai_option.Axiomatization.get()); + Aorai_visitors.add_sync_with_buch file; + Aorai_visitors.add_pre_post_from_buch file + (Aorai_option.advance_abstract_interpretation ()); + printverb "Annotation of Cil : done\n"; + end end else begin @@ -343,6 +355,7 @@ let work () = Cfg.clearFileCFG ~clear_id:false file; Cfg.computeFileCFG file; Ast.clear_last_decl (); + if Kernel.Check.get() then Filecheck.check_ast "aorai"; let prj = File.create_project_from_visitor "aorai" (fun prj -> new Visitor.frama_c_copy prj) diff --git a/src/plugins/aorai/aorai_utils.ml b/src/plugins/aorai/aorai_utils.ml index cfd69c809a9d72cabad0627f53662bacb13a0862..6c6e276decabd65924048f427d8f07b61c47e8ed 100644 --- a/src/plugins/aorai/aorai_utils.ml +++ b/src/plugins/aorai/aorai_utils.ml @@ -1901,7 +1901,7 @@ let auto_func_block loc f st status res = let stvar_update = if Aorai_option.Deterministic.get () then let orig = Data_for_aorai.get_varinfo curState in - [ equalsStmt (Cil.var (List.hd local_var)) (Cil.evar ~loc orig)] + [ equalsStmt (Cil.var orig) (Cil.evar (List.hd local_var))] else List.map (fun (state,copy) -> @@ -1910,7 +1910,11 @@ let auto_func_block loc f st status res = (Cil.evar ~loc copy)) copies in - let res_block = (Cil.mkBlock ( stmt_begin_list @ copies_update @ main_stmt @ stvar_update)) in + let ret = [ Cil.mkStmt (Cil_types.Return(None,loc)) ] in + let res_block = + (Cil.mkBlock + ( stmt_begin_list @ copies_update @ main_stmt @ stvar_update @ ret)) + in res_block.blocals <- local_var; Aorai_option.debug ~dkey "Generated body is:@\n%a" Printer.pp_block res_block; diff --git a/src/plugins/aorai/aorai_visitors.ml b/src/plugins/aorai/aorai_visitors.ml index c4b0fe02942f3e4426c5ba5771e701fd18cd3bea..6f08ab72ead5e9963b3d49bb866d9669e7442f3c 100644 --- a/src/plugins/aorai/aorai_visitors.ml +++ b/src/plugins/aorai/aorai_visitors.ml @@ -158,8 +158,10 @@ object (self) in fun_dec_pre.slocals <- pre_locals; fun_dec_pre.sbody <- pre_block; + fun_dec_pre.svar.vdefined <- true; fun_dec_post.slocals <- post_locals; fun_dec_post.sbody <- post_block; + fun_dec_post.svar.vdefined <- true; let globs = [ GFun(fun_dec_pre,loc); GFun(fun_dec_post,loc);] in fundec.sbody.bstmts <- Cil.mkStmtOneInstr (Call(None,Cil.evar ~loc vi_pre, @@ -191,7 +193,13 @@ object (self) | None -> [] | Some exp -> [Cil.copy_exp exp] in - let aux_vi = Kernel_function.Hashtbl.find aux_post_table kf in + let aux_vi = + try Kernel_function.Hashtbl.find aux_post_table kf + with Not_found -> + Aorai_option.fatal + "Function %a has no associated post_func" + Kernel_function.pretty kf + in let call = mkStmtOneInstr (Call (None,Cil.evar ~loc aux_vi,args,loc)) in @@ -223,6 +231,12 @@ object let vi'= List.assq vi formals in ChangeTo (Cil.cvar_to_lvar vi') with Not_found -> SkipChildren + + method! vvrbl vi = + try + let vi' = List.assq vi formals in + ChangeTo vi' + with Not_found -> SkipChildren end (* update \result to param of f_post when it exists. Must not be called if @@ -897,7 +911,7 @@ object(self) method! vglob_aux g = match g with - | GFun(_,_) -> + | GFun(f,_) -> let my_kf = Extlib.the self#current_kf in (* don't use get_spec, as we'd generate default assigns, while we'll fill the spec just below. *) @@ -906,11 +920,12 @@ object(self) | Pre_func kf -> (* must advance the automaton according to current call. *) let bhvs = mk_pre_fct_spec kf in + let vis = new change_formals kf my_kf in let bhvs = - Visitor.visitFramacBehaviors (new change_formals kf my_kf) bhvs + Visitor.visitFramacBehaviors vis bhvs in Annotations.add_behaviors Aorai_option.emitter my_kf bhvs; - + f.sbody <- Visitor.visitFramacBlock vis f.sbody; SkipChildren | Post_func kf -> (* must advance the automaton according to return event. *) diff --git a/src/plugins/aorai/data_for_aorai.ml b/src/plugins/aorai/data_for_aorai.ml index d4ac100e8ddcbfa2252e02a7733980da56f1b9b4..0b35127fef3146e95fd9f99cfe5773a6bcfea9c4 100644 --- a/src/plugins/aorai/data_for_aorai.ml +++ b/src/plugins/aorai/data_for_aorai.ml @@ -29,6 +29,8 @@ open Cil_types open Promelaast open Logic_simplification +exception Empty_automaton + module Aorai_state = Datatype.Make_with_collections( struct @@ -2014,6 +2016,8 @@ let removeUnusedTransitionsAndStates () = let reached_states = Post_state.fold reached reached_states in let reached_states = Loop_init_state.fold reached reached_states in let reached_states = Loop_invariant_state.fold reached reached_states in + if Aorai_state.Set.is_empty reached_states then + raise Empty_automaton; (* Step 2 : computation of translation tables *) let state_list = List.sort @@ -2110,8 +2114,17 @@ let get_cenum_option name = used_enuminfo None -let func_enum_type () = TEnum(Hashtbl.find used_enuminfo listOp,[]) -let status_enum_type () = TEnum(Hashtbl.find used_enuminfo listStatus,[]) +let func_enum_type () = + try TEnum(Hashtbl.find used_enuminfo listOp,[]) + with Not_found -> + Aorai_option.fatal + "Enum type indicating current function (%s) is unknown" listOp + +let status_enum_type () = + try TEnum(Hashtbl.find used_enuminfo listStatus,[]) + with Not_found -> + Aorai_option.fatal + "Enum type indicating current event (%s) is unknown" listStatus let func_to_cenum func = try diff --git a/src/plugins/aorai/data_for_aorai.mli b/src/plugins/aorai/data_for_aorai.mli index 6c5f62a4a70396eda693cb8f28ee6d4df8266b63..ffca4f6477d1d0b106ddea3874a1b1cf5fc60ff9 100644 --- a/src/plugins/aorai/data_for_aorai.mli +++ b/src/plugins/aorai/data_for_aorai.mli @@ -30,6 +30,10 @@ open Promelaast are mainly accessors for data. The use of this module is mainly done through the ltl_utils module. *) +(** raised when simplifications make the resulting automaton empty, + meaning that the code and the property do not match. *) +exception Empty_automaton + (* ************************************************************************* *) (** {2 LTL/Promela primitives} *) (* ************************************************************************* *) @@ -426,6 +430,10 @@ val set_usedinfo : string -> Cil_types.enuminfo -> unit (** These functions are direct accesses to the table memorizing the enuminfo data associated to the name of an enumeration structure, from which cenum info are computed.*) val get_usedinfo : string -> Cil_types.enuminfo +(** Simplify the automaton by removing transitions and states that are + never active during an execution of the program. + @raise Empty_automaton if the simplification result in an empty automaton. + *) val removeUnusedTransitionsAndStates : unit -> unit (* diff --git a/src/plugins/aorai/tests/aorai/incorrect.i b/src/plugins/aorai/tests/aorai/incorrect.i new file mode 100644 index 0000000000000000000000000000000000000000..5093f283da6b0de22f7f94046726a991f96ce006 --- /dev/null +++ b/src/plugins/aorai/tests/aorai/incorrect.i @@ -0,0 +1,9 @@ +/* run.config* + OPT: -aorai-automata @PTEST_DIR@/@PTEST_NAME@.ya -aorai-test 1 -load-module tests/aorai/Aorai_test.cmxs -aorai-test-number @PTEST_NUMBER@ @PROVE_OPTIONS@ +*/ + +int f(); + +int main(void) { + return f(); +} diff --git a/src/plugins/aorai/tests/aorai/incorrect.ya b/src/plugins/aorai/tests/aorai/incorrect.ya new file mode 100644 index 0000000000000000000000000000000000000000..4aec9ac2e844c4e43940e87990d026c3f7780064 --- /dev/null +++ b/src/plugins/aorai/tests/aorai/incorrect.ya @@ -0,0 +1,6 @@ +%init: s0; +%accept: OK; +%deterministic; + +s0: { f() } -> OK; +OK: -> OK; \ No newline at end of file diff --git a/src/plugins/aorai/tests/aorai/oracle/assigns.1.res.oracle b/src/plugins/aorai/tests/aorai/oracle/assigns.1.res.oracle index 7844c4ec6c90bfd8842bbb5fa6ca58ce2cb0aea0..72e238500aa869d7a223d00515a2868b04418fbd 100644 --- a/src/plugins/aorai/tests/aorai/oracle/assigns.1.res.oracle +++ b/src/plugins/aorai/tests/aorai/oracle/assigns.1.res.oracle @@ -65,7 +65,7 @@ void f_pre_func(void) aorai_CurOperation = op_f; aorai_CurStates_tmp = aorai_CurStates; if (3 == aorai_CurStates) aorai_CurStates_tmp = S_in_f; - aorai_CurStates_tmp = aorai_CurStates; + aorai_CurStates = aorai_CurStates_tmp; return; } @@ -101,7 +101,7 @@ void f_post_func(void) aorai_CurOperation = op_f; aorai_CurStates_tmp = aorai_CurStates; if (2 == aorai_CurStates) aorai_CurStates_tmp = in_main; - aorai_CurStates_tmp = aorai_CurStates; + aorai_CurStates = aorai_CurStates_tmp; return; } @@ -149,7 +149,7 @@ void main_pre_func(void) aorai_CurOperation = op_main; aorai_CurStates_tmp = aorai_CurStates; if (0 == aorai_CurStates) aorai_CurStates_tmp = Sf; - aorai_CurStates_tmp = aorai_CurStates; + aorai_CurStates = aorai_CurStates_tmp; return; } @@ -185,7 +185,7 @@ void main_post_func(int res) aorai_CurOperation = op_main; aorai_CurStates_tmp = aorai_CurStates; if (4 == aorai_CurStates) aorai_CurStates_tmp = S2; - aorai_CurStates_tmp = aorai_CurStates; + aorai_CurStates = aorai_CurStates_tmp; return; } diff --git a/src/plugins/aorai/tests/aorai/oracle/bts1289.0.res.oracle b/src/plugins/aorai/tests/aorai/oracle/bts1289.0.res.oracle index d106a1c92795d474fdadbc091ed4e554c1e963f2..0d1c345127a504a3104e90880897222aa63ba925 100644 --- a/src/plugins/aorai/tests/aorai/oracle/bts1289.0.res.oracle +++ b/src/plugins/aorai/tests/aorai/oracle/bts1289.0.res.oracle @@ -2,94 +2,25 @@ [kernel] Parsing tests/aorai/bts1289.i (no preprocessing) [aorai] Welcome to the Aorai plugin [aorai] warning: Call to main does not follow automaton's specification. This path is assumed to be dead +[aorai] warning: No state of the automaton is reachable. Program and specification are incompatible, instrumentation will not be generated. [kernel] Parsing FRAMAC_SHARE/libc/__fc_builtin_for_normalization.i (no preprocessing) [kernel] Parsing /tmp/aorai_bts12890.i (no preprocessing) /* Generated by Frama-C */ -enum aorai_ListOper { - op_a = 1, - op_main = 0 -}; -enum aorai_OpStatusList { - aorai_Terminated = 1, - aorai_Called = 0 -}; -/*@ ghost enum aorai_ListOper aorai_CurOperation = op_main; */ -/*@ ghost enum aorai_OpStatusList aorai_CurOpStatus = aorai_Called; */ -/*@ ensures aorai_CurOpStatus ≡ aorai_Called; - ensures aorai_CurOperation ≡ op_a; - assigns aorai_CurOpStatus, aorai_CurOperation; - */ -void a_pre_func(void) -{ - aorai_CurOpStatus = aorai_Called; - aorai_CurOperation = op_a; - return; -} - -/*@ requires \false; - ensures aorai_CurOpStatus ≡ aorai_Terminated; - ensures aorai_CurOperation ≡ op_a; - assigns aorai_CurOpStatus, aorai_CurOperation; - */ -void a_post_func(void) -{ - aorai_CurOpStatus = aorai_Terminated; - aorai_CurOperation = op_a; - return; -} - -/*@ requires \false; */ void a(void) { - a_pre_func(); - a_post_func(); - return; -} - -/*@ ensures aorai_CurOpStatus ≡ aorai_Called; - ensures aorai_CurOperation ≡ op_main; - assigns aorai_CurOpStatus, aorai_CurOperation; - */ -void main_pre_func(void) -{ - aorai_CurOpStatus = aorai_Called; - aorai_CurOperation = op_main; - return; -} - -/*@ requires \false; - ensures aorai_CurOpStatus ≡ aorai_Terminated; - ensures aorai_CurOperation ≡ op_main; - assigns aorai_CurOpStatus, aorai_CurOperation; - */ -void main_post_func(void) -{ - aorai_CurOpStatus = aorai_Terminated; - aorai_CurOperation = op_main; return; } -/*@ requires \false; */ void main(void) { - int aorai_Loop_Init_16; int i; - main_pre_func(); i = 0; - /*@ ghost aorai_Loop_Init_16 = 1; */ - aorai_loop_16: - /*@ loop assigns i, aorai_Loop_Init_16, aorai_CurOpStatus, - aorai_CurOperation; - loop assigns aorai_Loop_Init_16 \from \nothing; - */ - while (1) { - if (! (i < 10)) goto while_0_break; - /*@ ghost aorai_Loop_Init_16 = 0; */ - a(); - i ++; - } + /*@ loop assigns i; */ + while (i < 10) { + a(); + i ++; + } while_0_break: ; - main_post_func(); return; } diff --git a/src/plugins/aorai/tests/aorai/oracle/deterministic.res.oracle b/src/plugins/aorai/tests/aorai/oracle/deterministic.res.oracle index 30a3b66c787135d653de4eef2ed56269b87c0e07..99507b3b7bfabb88a01ec0346209b6402b6d237b 100644 --- a/src/plugins/aorai/tests/aorai/oracle/deterministic.res.oracle +++ b/src/plugins/aorai/tests/aorai/oracle/deterministic.res.oracle @@ -112,7 +112,7 @@ void g_pre_func(int x) if (x == 5) aorai_CurStates_tmp = S5; if (3 == aorai_CurStates) if (x == 4) aorai_CurStates_tmp = S4; - aorai_CurStates_tmp = aorai_CurStates; + aorai_CurStates = aorai_CurStates_tmp; return; } @@ -163,7 +163,7 @@ void g_post_func(void) aorai_CurStates_tmp = aorai_CurStates; if (4 == aorai_CurStates) aorai_CurStates_tmp = S3; if (5 == aorai_CurStates) aorai_CurStates_tmp = S1; - aorai_CurStates_tmp = aorai_CurStates; + aorai_CurStates = aorai_CurStates_tmp; return; } @@ -227,7 +227,7 @@ void f_pre_func(int x) aorai_CurStates_tmp = aorai_CurStates; if (1 == aorai_CurStates) if (x == 4) aorai_CurStates_tmp = S3; - aorai_CurStates_tmp = aorai_CurStates; + aorai_CurStates = aorai_CurStates_tmp; return; } @@ -275,7 +275,7 @@ void f_post_func(int res) if (1 == aorai_CurStates) if (X == 5) if (res == 0) aorai_CurStates_tmp = S2; - aorai_CurStates_tmp = aorai_CurStates; + aorai_CurStates = aorai_CurStates_tmp; return; } @@ -347,7 +347,7 @@ void real_main_pre_func(int c) if (c == 0) aorai_CurStates_tmp = S2; if (0 == aorai_CurStates) if (c != 0) aorai_CurStates_tmp = S1; - aorai_CurStates_tmp = aorai_CurStates; + aorai_CurStates = aorai_CurStates_tmp; return; } @@ -392,7 +392,7 @@ void real_main_post_func(int res) aorai_CurOperation = op_real_main; aorai_CurStates_tmp = aorai_CurStates; if (2 == aorai_CurStates) aorai_CurStates_tmp = Sf; - aorai_CurStates_tmp = aorai_CurStates; + aorai_CurStates = aorai_CurStates_tmp; return; } @@ -452,7 +452,7 @@ void main_pre_func(int c) aorai_CurOperation = op_main; aorai_CurStates_tmp = aorai_CurStates; if (7 == aorai_CurStates) aorai_CurStates_tmp = S0; - aorai_CurStates_tmp = aorai_CurStates; + aorai_CurStates = aorai_CurStates_tmp; return; } @@ -497,7 +497,7 @@ void main_post_func(int res) aorai_CurOperation = op_main; aorai_CurStates_tmp = aorai_CurStates; if (6 == aorai_CurStates) aorai_CurStates_tmp = Sf; - aorai_CurStates_tmp = aorai_CurStates; + aorai_CurStates = aorai_CurStates_tmp; return; } diff --git a/src/plugins/aorai/tests/aorai/oracle/formals.res.oracle b/src/plugins/aorai/tests/aorai/oracle/formals.res.oracle index 991cb44c31fa7caf66b9c302029437e2015e1a81..83266e2586742879484b6c59bdeda8773ebeb058 100644 --- a/src/plugins/aorai/tests/aorai/oracle/formals.res.oracle +++ b/src/plugins/aorai/tests/aorai/oracle/formals.res.oracle @@ -134,7 +134,7 @@ void f_pre_func(int x) aorai_CurStates_tmp = aorai_intermediate_state; aorai_x = x; } - aorai_CurStates_tmp = aorai_CurStates; + aorai_CurStates = aorai_CurStates_tmp; return; } @@ -217,7 +217,7 @@ void f_post_func(int res) if (aorai_x == 1) aorai_CurStates_tmp = aorai_intermediate_state_0; if (4 == aorai_CurStates) if (aorai_x_0 == 3) aorai_CurStates_tmp = OK; - aorai_CurStates_tmp = aorai_CurStates; + aorai_CurStates = aorai_CurStates_tmp; return; } @@ -342,7 +342,7 @@ void g_pre_func(int y) aorai_y = y; } if (0 == aorai_CurStates) aorai_CurStates_tmp = OK; - aorai_CurStates_tmp = aorai_CurStates; + aorai_CurStates = aorai_CurStates_tmp; return; } @@ -415,7 +415,7 @@ void g_post_func(int res) _LAND: ; if (0 == aorai_CurStates) aorai_CurStates_tmp = OK; } - aorai_CurStates_tmp = aorai_CurStates; + aorai_CurStates = aorai_CurStates_tmp; return; } @@ -495,7 +495,7 @@ void main_pre_func(void) aorai_CurOperation = op_main; aorai_CurStates_tmp = aorai_CurStates; if (6 == aorai_CurStates) aorai_CurStates_tmp = main_0; - aorai_CurStates_tmp = aorai_CurStates; + aorai_CurStates = aorai_CurStates_tmp; return; } @@ -546,7 +546,7 @@ void main_post_func(int res) aorai_CurStates_tmp = aorai_CurStates; if (5 == aorai_CurStates) aorai_CurStates_tmp = aorai_reject; if (0 == aorai_CurStates) aorai_CurStates_tmp = OK; - aorai_CurStates_tmp = aorai_CurStates; + aorai_CurStates = aorai_CurStates_tmp; return; } diff --git a/src/plugins/finder/Finder.mli b/src/plugins/aorai/tests/aorai/oracle/incorrect.err.oracle similarity index 100% rename from src/plugins/finder/Finder.mli rename to src/plugins/aorai/tests/aorai/oracle/incorrect.err.oracle diff --git a/src/plugins/aorai/tests/aorai/oracle/incorrect.res.oracle b/src/plugins/aorai/tests/aorai/oracle/incorrect.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..ac6255c53ffe6fd63e7418ff41accde96783fce1 --- /dev/null +++ b/src/plugins/aorai/tests/aorai/oracle/incorrect.res.oracle @@ -0,0 +1,18 @@ +[kernel] Parsing FRAMAC_SHARE/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/aorai/incorrect.i (no preprocessing) +[aorai] Welcome to the Aorai plugin +[aorai] warning: Call to main does not follow automaton's specification. This path is assumed to be dead +[aorai] warning: No state of the automaton is reachable. Program and specification are incompatible, instrumentation will not be generated. +[kernel] Parsing FRAMAC_SHARE/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing /tmp/aorai_incorrect0.i (no preprocessing) +/* Generated by Frama-C */ +extern int f(); + +int main(void) +{ + int tmp; + tmp = f(); + return tmp; +} + + diff --git a/src/plugins/finder/.gitignore b/src/plugins/finder/.gitignore deleted file mode 100644 index 5fc607b9e2fba31acca73ef4137aaf02482a55a1..0000000000000000000000000000000000000000 --- a/src/plugins/finder/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/Makefile diff --git a/src/plugins/finder/Makefile.in b/src/plugins/finder/Makefile.in deleted file mode 100644 index 3ca5eea0776ff69a54c51c144d324892f71e84f9..0000000000000000000000000000000000000000 --- a/src/plugins/finder/Makefile.in +++ /dev/null @@ -1,70 +0,0 @@ -########################################################################## -# # -# This file is part of Frama-C. # -# # -# Copyright (C) 2007-2016 # -# CEA (Commissariat à l'énergie atomique et aux énergies # -# alternatives) # -# # -# All rights reserved. # -# Contact CEA LIST for licensing. # -# # -########################################################################## - -# Do not use ?= to initialize both below variables -# (fixed efficiency issue, see GNU Make manual, Section 8.11) -ifndef FRAMAC_SHARE -FRAMAC_SHARE :=$(shell frama-c-config -print-share-path) -endif -ifndef FRAMAC_LIBDIR -FRAMAC_LIBDIR :=$(shell frama-c-config -print-lib-path) -endif -PLUGIN_DIR ?=. - -ifeq ("$(HAS_GNOMECANVAS)","yes") - @echo YES=$(HAS_GNOMECANVAS) - @echo YES=$^ -else - @echo NO=$(HAS_GNOMECANVAS) - @echo NO=$^ -endif - -include $(FRAMAC_SHARE)/Makefile.config - -# Extension of the GUI for finder is compilable -# only if gnomecanvas is available -ifeq ($(HAS_GNOMECANVAS),yes) -PLUGIN_GUI_CMO:=finder_gui register -else -PLUGIN_UNDOC:=finder_gui.ml -endif - -PLUGIN_ENABLE:=@ENABLE_FINDER@ -PLUGIN_DYNAMIC:=@DYNAMIC_FINDER@ -PLUGIN_NAME:=Finder -PLUGIN_DISTRIBUTED:=no -PLUGIN_DISTRIB_BIN:=no - -PLUGIN_INTERNAL_TEST:=yes - -include $(FRAMAC_SHARE)/Makefile.dynamic - -install:: - $(MKDIR) $(FRAMAC_DATADIR) - $(PRINT_CP) $(FRAMAC_DATADIR)/icons - cp -R $(FRAMAC_SRC)/src/plugins/finder/icons $(FRAMAC_DATADIR) - -uninstall:: -# $(PRINT_RM) $(FRAMAC_DATADIR)/icons - $(RM) -R $(FRAMAC_DATADIR)/icons - -# Regenerating the Makefile on need - -ifeq ("$(FRAMAC_INTERNAL)","yes") -CONFIG_STATUS_DIR=$(FRAMAC_SRC) -else -CONFIG_STATUS_DIR=. -endif - -$(Finder_DIR)/Makefile: $(Finder_DIR)/Makefile.in $(CONFIG_STATUS_DIR)/config.status - cd $(CONFIG_STATUS_DIR) && ./config.status --file $@ diff --git a/src/plugins/finder/configure.ac b/src/plugins/finder/configure.ac deleted file mode 100644 index 5bc87c3b2971cee8897f6ad4dd5a0e3bd8498f53..0000000000000000000000000000000000000000 --- a/src/plugins/finder/configure.ac +++ /dev/null @@ -1,35 +0,0 @@ -########################################################################## -# # -# This file is part of Frama-C. # -# # -# Copyright (C) 2007-2016 # -# CEA (Commissariat à l'énergie atomique et aux énergies # -# alternatives) # -# # -# All rights reserved. # -# Contact CEA LIST for licensing. # -# # -########################################################################## - -m4_define([plugin_file],Makefile.in) - - -m4_define([FRAMAC_SHARE_ENV], - [m4_normalize(m4_esyscmd([echo $FRAMAC_SHARE]))]) - -m4_define([FRAMAC_SHARE], - [m4_ifval(FRAMAC_SHARE_ENV,[FRAMAC_SHARE_ENV], - [m4_esyscmd(frama-c -print-share-path)])]) - -m4_ifndef([FRAMAC_M4_MACROS],[m4_include(FRAMAC_SHARE/configure.ac)]) - -ifdef([FRAMAC_MAIN_AUTOCONF],default=no,default=yes) - -check_plugin(finder,PLUGIN_RELATIVE_PATH(plugin_file),[support for finder plug-in],$default,yes,no) - -if test "$ENABLE_FINDER" == "yes"; then - plugin_require(finder,gui) - plugin_use_external(finder,dot) -fi - -write_plugin_config(Makefile) diff --git a/src/plugins/finder/finder_gui.ml b/src/plugins/finder/finder_gui.ml deleted file mode 100644 index d2e6fc4a151c1a02421106e1b512a9e576944d5f..0000000000000000000000000000000000000000 --- a/src/plugins/finder/finder_gui.ml +++ /dev/null @@ -1,1067 +0,0 @@ -(**************************************************************************) -(* *) -(* This file is part of Frama-C. *) -(* *) -(* Copyright (C) 2007-2016 *) -(* CEA (Commissariat à l'énergie atomique et aux énergies *) -(* alternatives) *) -(* *) -(* All rights reserved. *) -(* Contact CEA LIST for licensing. *) -(* *) -(**************************************************************************) - -(* open Cil_types -open Ast *) -open Cil -open Cil_types -(* open Db *) -open Pretty_source -open Gtk_helper -open Str -(* open Kernel_function *) -open Gobject.Data -open GTree - -class finder_class (main_ui:Design.main_window_extension_points) = - let icon_dir = Filename.concat Config.datadir "icons" in - (* icon files *) - let pixbuf name = GdkPixbuf.from_file (Filename.concat icon_dir name) in - let e_pixbuf = pixbuf "type_e.xpm" in - let _fd_pixbuf = pixbuf "type_fd.xpm" in - let fu_pixbuf = pixbuf "type_fu.xpm" in - let gv_pixbuf = pixbuf "type_gv.xpm" in - let custom_pixbuf = pixbuf "type_custom.xpm" in - let _iv_pixbuf = pixbuf "type_iv.xpm" in - let _lv_pixbuf = pixbuf "type_lv.xpm" in - let _ma_pixbuf = pixbuf "type_ma.xpm" in - let t_pixbuf = pixbuf "type_t.xpm" in - let _ud_pixbuf = pixbuf "type_ud.xpm" in - let un_pixbuf = pixbuf "type_un.xpm" in - let other_pixbuf = pixbuf "undef.xpm" in - let asm_pixbuf = pixbuf "asm.xpm" in - let _open_pixbuf = pixbuf "gtk-open.png" in - let annot_pixbuf = pixbuf "pathological.xpm" in - let lemma_pixbuf = pixbuf "lemma.xpm" in - let predicate_pixbuf = pixbuf "predicate.xpm" in - let axiom_pixbuf = pixbuf "type_ax.xpm" in - let _logic_pixbuf = pixbuf "logic.xpm" in - let invariant_pixbuf = pixbuf "invariant.xpm" in - let type_pixbuf = pixbuf "type.xpm" in - let volatile_pixbuf = pixbuf "volatile.xpm" in - let cols = new GTree.column_list in - let col_icon = cols#add gobject in - let col_name = cols#add string in (* name *) - let col_type = cols#add string in (* type name *) - let col_parameters = cols#add string in (* parameter names *) - let col_file = cols#add string in (* file *) - let col_id = cols#add int in (* hidden unique identifier *) - let main_window = - GWindow.window ~width:640 ~height:480 ~position:`MOUSE ~show:false () - in - let () = - ignore (main_window#event#connect#delete - ~callback:(fun _ -> main_window#misc#hide ();true)); - main_window#set_transient_for main_ui#main_window#as_window - in - let finder_source_viewer = Book_manager.make ~packing:main_window#add () in -object(self) - method image glob = - (* extract just the name of the global , for printing purposes *) - match glob with - | GVar (v,_,_) -> v.vname - | GVarDecl (v,_) -> v.vname - | GFunDecl (_,v,_) -> v.vname - | GFun (fdec, _) -> fdec.svar.vname - | GType (ty, _) -> ty.tname - | GCompTag (ci, _) | GCompTagDecl (ci, _) -> ci.cname - | GEnumTagDecl (ei,_) | GEnumTag (ei,_) -> ei.ename - | GAsm (_,_) -> "" - | GPragma (attr,_) -> - begin - match attr with - Attr (attrname,_) -> (attrname ^ "(...)") - | AttrAnnot s -> s - end - | GText s -> ("\"" ^ s ^ "\"") - | GAnnot (an,_) -> - begin - match an with - Dfun_or_pred (li,_) -> li.l_var_info.lv_name - | Dvolatile (_,vio,_,_) -> - begin - match vio with - Some vi -> ("volatile " ^ vi.vname) - | None -> "" - end - | Daxiomatic (sss,_,_) -> ("axiomatic " ^ sss) - | Dtype (lti,_) -> ("type " ^ lti.lt_name) - | Dlemma (ln, _, _, _, _, _) -> ("lemma " ^ ln) - | Dinvariant (ili,_) -> ("invariant " ^ ili.l_var_info.lv_name) - | Dtype_annot (ta,_) -> ta.l_var_info.lv_name - | Dmodel_annot (mii,_) -> mii.mi_name - | Dcustom_annot (_,ss,_) -> ss - end - - method images globs = - (* extract just the names of the globals, for printing purposes *) - let les_images = List.map self#image globs in - String.concat "," les_images - - method gather_names ~exact file le_nom la_cat = - let my_globals : global list ref = ref [] in - let globinits : string list ref = ref [] in - let glob_names :string ref = ref "" in - let regexp_str = regexp le_nom in - let add glob name kind = - let does_match = - if exact then le_nom = name - else Str.string_match regexp_str name 0 - in - if does_match then - begin - globinits := List.append !globinits [kind] ; - globinits := List.append !globinits [name] ; - globinits := List.append !globinits ["\n"] ; - glob_names := String.concat "" !globinits; - if le_nom = name then - my_globals := List.append [ glob ] !my_globals - else - my_globals := List.append !my_globals [ glob ] - end - in - let is_function vinfo = - match vinfo.vtype with - TFun _ -> true - | _ -> false - in - iterGlobals file ( - function glob -> - match glob with - | GVar (v,_,_) -> - if (la_cat = "all") then - add glob v.vname " VAR:" - else - if (la_cat = "variable") && (not (is_function(v))) then - add glob v.vname " VAR:" - else - if (la_cat = "function") && is_function (v) then - (* check if var name matches *) - add glob v.vname " FCT:" - | GVarDecl (v,_) -> - if (la_cat = "all") then - add glob v.vname " VAR:" - else - if (not (is_function(v))) && (la_cat = "variable") then - (* check if var name matches *) - add glob v.vname " VAR:" - else - if is_function(v) && (la_cat = "function") then - add glob v.vname " FCT:" - | GFun (fdec, _) -> - if (la_cat = "all") or (la_cat = "function") then - (* check if fct name matches *) - add glob fdec.svar.vname " FCT:" - | GFunDecl (_,vi,_) -> - if (la_cat = "all") or (la_cat = "function") then - (* check if fct name matches *) - add glob vi.vname " FCT:" - | GType (ty, _) -> - if (la_cat = "all") or (la_cat = "typedef") then - (* check if typedef name matches *) - add glob ty.tname " TYP:" - | GCompTag (ci, _) | GCompTagDecl (ci, _) -> - if (la_cat = "all") or (la_cat = "struct/union") then - (* check if struct/union name matches *) - add glob ci.cname " STRCT/UNION:" - | GEnumTagDecl (ei,_) | GEnumTag (ei,_) -> - if (la_cat = "all") or (la_cat = "enumeration") then - (* check if enumeration name matches *) - add glob ei.ename " ENUM:" - | GAsm (ai,_) -> - if (la_cat = "all") or (la_cat = "assembler") then - (* check if assembler name matches *) - add glob ai " ASM:" - | GAnnot (an,_) -> - if (la_cat = "all") or (la_cat = "annotation") then - (* the different global_annotations are: - - an axiom: Daxiomatic - - a lemma: Dlemma - - a predicate declaration or definition: Dfun_or_pred - - a function: Dfun_or_pred - - a global type invariant: Dtype, Dtype_annot - - a global invariant: Dinvariant - - a model field: Dmodel_annot - *) - begin - match an with - Dfun_or_pred (li,_) -> add glob li.l_var_info.lv_name " FUN_OR_PRED:" - | Dvolatile (_,vio,_,_) -> - begin - match vio with - Some vi -> add glob vi.vname "VOLATILE:" - | None -> add glob "" "VOLATILE:" - end - | Daxiomatic (s,_,_) -> add glob s " AXIOMATIC:" - | Dtype (lti,_) -> add glob lti.lt_name " TYPE_INV:" - | Dlemma (ln, _, _, _, _, _) -> add glob ln " LEMMA:" - | Dinvariant (toto,_) -> add glob toto.l_var_info.lv_name " INVARIANT:" - | Dtype_annot (ta,_) -> add glob ta.l_var_info.lv_name " TYPE_ANNOT:" - | Dmodel_annot (mi,_) -> add glob mi.mi_name " MODEL_ANNOT:" - | Dcustom_annot (_,cai,_) -> add glob cai " CUSTOM_ANNOT:" - end - | GPragma _ | GText _ -> ()); - !my_globals - - val coeff = ref 0.00 - - val pulse_mode = ref false - - val timer_created = ref false - - val in_finder = ref false - (* indicate whether the user is navigating in finder window or not *) - - method set_in_finder valeur () = - in_finder := valeur; - () - - val timera = ref (GMain.Timeout.add ~ms:100000 ~callback:(function () ->true)) - - method toggle_stop pbar () = - begin - flush stdout; - pbar#set_text "ready"; - pbar#set_fraction 0.0; - coeff := 0.0; - () - end - - (* callback du menu_item Goto *) - method filter_spec_or_body globs spec_or_body = - (* filter list of globals. If specs are selected, keep only GCompTagDecl, - GVarDecl, Dpredicate_reads, Dlogic_reads, Dtype - If bodies are selected, keep only GCompTag, GVar, GFun, Dpredicate_def, Dlogic_def, - Dlemma, Dtype_annot, Dinvariant - *) - if List.length globs > 0 then - let e = List.hd globs in - List.append - (match e with - | GVar (_,_,_) | GCompTag (_, _) | GFun (_, _) -> - if spec_or_body then [] else [e] - | GFunDecl (_,_,_) -> - if spec_or_body then [e] else [] - | GVarDecl (_,_) | GCompTagDecl (_, _) -> - if spec_or_body then [e] else [] - | GType (_, _) - | GEnumTagDecl (_,_) - | GEnumTag (_,_) - | GAsm (_,_) - | GPragma _ | GText _ -> [] - | GAnnot (an,_) -> - begin - match an with - | Dvolatile _ -> if spec_or_body then [] else [e] - | Dtype _ - | Daxiomatic _ - | Dfun_or_pred _ - | Dlemma _ -> if spec_or_body then [e] else [] - | Dinvariant _ - | Dtype_annot _ -> if spec_or_body then [] else [e] - | Dmodel_annot _ -> if spec_or_body then [] else [e] - | _ -> if spec_or_body then [] else [e] -(* - | Dcustom_annot _ -> if spec_or_body then [] else [e] -*) - end ) - (self#filter_spec_or_body (List.tl globs) spec_or_body) - else [] - - method var_in_list ze_name vi_list = - if List.length vi_list =0 then false - else - let vi = List.hd vi_list in - if vi.vname = ze_name then true - else self#var_in_list ze_name (List.tl vi_list) - - method append_tab title globs = - (* let's create a new tab in the notebook window with a given title.*) - Gui_parameters.debug "append_tab"; - let reactive_buffer = - Design.reactive_buffer main_ui ~parent_window:main_window globs - in - let new_tab = Book_manager.append_source_tab finder_source_viewer title in - new_tab#set_buffer (reactive_buffer#buffer:>GText.buffer); - reactive_buffer,new_tab - - method check_for_lv lv pred = - let rec find_lv lv pred = - (* Find a quantifier on logical variable lv within predicate pred *) - match pred with - | Pfalse - | Ptrue -> false - | Papp _ - | Pseparated _ - | Prel _ -> false - | Pand (p1, p2) - | Por (p1, p2) - | Pxor (p1, p2) - | Pimplies (p1, p2) - | Piff (p1, p2) -> (find_lv lv p1.content) or (find_lv lv p2.content) - | Pnot p1 -> find_lv lv p1.content - | Pif (_, p1, p2) -> (find_lv lv p1.content) or (find_lv lv p2.content) - | Plet (_,p1) -> find_lv lv p1.content - | Pforall (q,_) - | Pexists (q,_) -> - List.exists (fun v -> lv=v) q - | Pat (p1,_) -> (find_lv lv p1.content) - | Pvalid _ -> false - | Pinitialized _ -> false - | Pfresh _ -> false - | Psubtype _ -> false - | Pfreeable _ -> false - | Pallocable _ -> false - | Pvalid_read _ -> false - | Pdangling _ -> false - in - find_lv lv pred - - (* callback of menu_items "Display spec" and "Display body" *) - method display_localizable is_declaration localizable () = - let global only_declaration selected_kf vi = - match selected_kf.fundec with - | Definition (fundec,loc) -> - if only_declaration then - GVarDecl(vi, loc),(PVDecl(Some selected_kf,vi)) - else GFun(fundec, loc),(PVDecl(Some selected_kf,vi)) - | Declaration (_,vi,_,loc) -> - GVarDecl(vi, loc),(PVDecl(Some selected_kf,vi)) - in - begin - Gui_parameters.debug "display_localizable - in_finder = %b" !in_finder; - let display_variable_in_fct ze_func vi = - begin - let glob,loc = - try - let selected_kf = Globals.Functions.get vi in - global is_declaration selected_kf vi - with Not_found -> (* this is not a function call *) - if vi.vglob then - GVar (vi,{init=None},vi.vdecl),PVDecl(None,vi) - else - if vi.vformal then - let func = Extlib.the ze_func in - global is_declaration func (Globals.Functions.get_vi func) - else - begin - match ze_func with - | None -> - Gui_parameters.fatal - "Could not find englobing function for local variable." - - | Some kf -> - fst (global false kf (Globals.Functions.get_vi kf)), - PVDecl(ze_func,vi) - end - in - let reactive_buffer,_ = - self#append_tab - vi.vname - [glob] - in - let source_buffer = reactive_buffer#buffer in - let tag = make_tag source_buffer "finder" [`BACKGROUND "yellow" ] in - let highlight start stop = - apply_tag source_buffer tag start stop - in - match Pretty_source.locate_localizable reactive_buffer#locs loc with - | None -> - Gui_parameters.debug "local var decl cannot be highlighted" - | Some (b,e) -> - Gui_parameters.debug "local var decl highlighted %d %d" b e; - highlight b e - end - in - match localizable with - | PGlobal _ -> () - (* Nothing to display for globals other than var declarations and function defs *) - (* TODO display typedef if type selected *) - | PStmt _ -> () (* Nothing to display or maybe statement patterns? *) - | PIP _ -> Gui_parameters.debug "PIP - TBD"; - | PTermLval (ze_func,ki,_,tlv) -> - Gui_parameters.debug "PTermLval: "; - let x = fst tlv in (* term_lhost *) - (match x with - | TVar lv -> (* Exists inside assertions *) - (match lv.lv_origin with - | None -> (* might be a locally declared one, ie quantified *) - (* get function *) - (match ki with - | Kglobal -> Gui_parameters.debug "Fglobal" - | Kstmt s -> Gui_parameters.debug "Kstmt"; - let filter (an:Cil_types.code_annotation) = - begin - match an.annot_content with - AAssert (_,p) - | AInvariant (_,_,p) -> - self#check_for_lv lv p.content - (* Search through p to locate lv - and return true - if found. *) - | AStmtSpec _ -> true - | _ -> false - end - in - let preds = - Annotations.code_annot ~filter:filter s - in - (* let preds = - Annotations.get_filter filter s in *) - if preds = [] then - Gui_parameters.debug - "Cannot find encompassing annotation" - else - let make_localizables preds kf s = - let res = - List.fold_left - (fun acc pred -> - (List.rev_map - (fun prop -> PIP prop) - (Property.ip_of_code_annot kf s - pred)) - @ acc) - [] preds - in - List.rev res - in - begin - match ze_func with - | None -> - Gui_parameters.fatal - "Could not find englobing function for variable." - | Some kf -> - let glob = - fst (global false kf (Globals.Functions.get_vi kf)) - in - let loc_list = (make_localizables preds kf s) in - let reactive_buffer,_ = - self#append_tab lv.lv_name [glob] - in - let source_buffer = reactive_buffer#buffer in - let tag = make_tag source_buffer "finder" [`BACKGROUND "yellow" ] in - let highlight start stop = - apply_tag source_buffer tag start stop - in - List.iter (fun loc -> - match Pretty_source.locate_localizable - reactive_buffer#locs loc - with - | None -> - Gui_parameters.debug "var cannot be highlighted" - | Some (b,e) -> - Gui_parameters.debug "var highlighted %d %d" b e; - highlight b e) - loc_list - end - ) - | Some vi -> - Gui_parameters.debug " with origin %s" vi.vname; - (* display declaration or body of associated variable *) - display_variable_in_fct ze_func vi - ) - | TResult _ -> Gui_parameters.debug "TResult" - | TMem _ -> Gui_parameters.debug "TMem") - - | PVDecl (_,v) -> (* Nothing to display: the declaration is already selected *) - (* Find the local or global type within globals, and display it *) - let display_global glob name loc = - let reactive_buffer,_ = - self#append_tab name [glob] - in - let source_buffer = reactive_buffer#buffer in - let tag = make_tag source_buffer "finder" [`BACKGROUND "yellow" ] in - let highlight start stop = - apply_tag source_buffer tag start stop - in - match Pretty_source.locate_localizable reactive_buffer#locs loc - with - | None -> - Gui_parameters.debug "cannot highlight global %s" name - | Some (b,e) -> - Gui_parameters.debug "global highlighted %s %d %d" name b e; - highlight b e - in - let display_types name types_list = - (* display this global *) - if List.length types_list > 0 then - let head = List.hd types_list in - display_global head name (PGlobal head) - in - begin - prerr_endline ("PVDecl: " - ^ "name: " ^ (v.vname) - ^ "vtype: " ^ (self#name_of_type v.vtype) - ^ "vglob: " ^ (string_of_bool v.vglob) - ^ "vdefined: " ^ (string_of_bool v.vdefined) - ); - let typ=v.vtype in (* type of v *) - match typ with - | TVoid _ - | TInt _ - | TFloat _ - | TPtr _ - | TArray _ - | TFun _ -> () - | TNamed (ti,_) -> - (* Search the globals list. *) - let typ_decl = self#gather_names true (Ast.get ()) ti.tname "typedef" in - prerr_endline ("type TNamed: corresponding to globals " ^ - (self#images typ_decl)); - display_types ti.tname typ_decl; - | TComp ( ci , _, _) -> (* struct or union type *) - let typ_decl = self#gather_names true (Ast.get ()) ci.cname "all" in - prerr_endline ("type TComp: corresponding to globals" ^ - (self#images typ_decl)); - display_types ci.cname typ_decl - | TEnum (ei, _) -> (* enum type *) - let typ_decl = self#gather_names true (Ast.get ()) ei.ename "all" in - prerr_endline ("type TEnum: correponding to globals " ^ - (self#images typ_decl)); - display_types ei.ename typ_decl - | TBuiltin_va_list _ -> () - end - | PLval (_,_,(Mem _,_)) -> (* Nothing to display *) - begin - Gui_parameters.debug "PLval with Mem:"; - print_endline "PLval with Mem:" - end - | PLval (ze_func,_,(Var vi,_)) -> - begin - Gui_parameters.debug "PLval with Var:"; - print_endline "PLval with Var:"; - display_variable_in_fct ze_func vi - end - | PExp (_,_,_) -> - begin - Gui_parameters.debug "PExp:"; - print_endline "PExp:" - (* Nothing to display as expressions cannot be arguments *) - end - end - - method finder_selector - (popup_factory:GMenu.menu GMenu.factory) _main_ui ~button localizable = - Gui_parameters.debug("finder_selector"); - if button = 3 then - let callback_decl () = - Gui_parameters.debug("finder_selector - callback_decl"); - self#display_localizable true localizable () - in - let callback_body () = - Gui_parameters.debug("finder_selector - callback_body"); - self#display_localizable false localizable () - in - begin - ignore (popup_factory#add_item "Display declaration" ~callback:callback_decl); - ignore (popup_factory#add_item "Display body" ~callback:callback_body) - end - - (* =================== TREE_STORE model and view ======================*) - - val current_model = ref (GTree.tree_store cols) - - method create_model () = current_model := GTree.tree_store cols - - method get_current_model () = - !current_model - - method sort_by_name (model:#GTree.model) row1 row2 = - let name1 = model#get ~row:row1 ~column:col_name in - let name2 = model#get ~row:row2 ~column:col_name in - if name1 < name2 then -1 - else if name1 > name2 then 1 - else 0 - - method icon_of_global glob = - match glob with - | GVar (_,_,_) -> gv_pixbuf - | GVarDecl (_,_) -> gv_pixbuf - | GFun (_, _) -> fu_pixbuf - | GFunDecl (_,_,_) -> fu_pixbuf - | GType (_, _) -> t_pixbuf - | GCompTag (_, _) | GCompTagDecl (_, _) -> un_pixbuf - | GEnumTagDecl (_,_) | GEnumTag (_,_) -> e_pixbuf - | GAsm (_,_) -> asm_pixbuf - | GAnnot (an,_) -> - begin - match an with - | Dfun_or_pred _ -> predicate_pixbuf - | Daxiomatic _ -> axiom_pixbuf - | Dtype _ -> type_pixbuf - | Dlemma _ -> lemma_pixbuf - | Dinvariant _ -> invariant_pixbuf - | Dtype_annot _ -> type_pixbuf - | Dvolatile _ -> volatile_pixbuf - | Dmodel_annot _ -> gv_pixbuf - | Dcustom_annot _ -> custom_pixbuf - end - | GPragma _ | GText _ -> other_pixbuf - - method name_of_type t = - match t with - | TVoid (_) -> "void" - | TInt (_,_) -> "int" - | TFloat (_,_) -> "float" - | TPtr _ -> "ptr" - | TArray _ -> "array" - | TFun (t,_,_,_) -> self#name_of_type t - | TNamed (ti,_) -> ti.tname - | TComp (ci,_,_) -> ci.cname - | TEnum (ei,_) -> ei.ename - | TBuiltin_va_list (_) -> "va_list" - - method type_name_of glob = - (* Return the name of the type of the global *) - match glob with - | GFunDecl (_,vi,_) | GVar (vi,_,_) | GVarDecl (vi,_) -> - self#name_of_type vi.vtype - | GFun (fdec, _) -> self#name_of_type fdec.svar.vtype - (* the type of a fct is its return parameter type *) - | GType _ -> "" - | GCompTag (_,_) | GCompTagDecl (_,_) -> "" - | GEnumTagDecl (_,_) | GEnumTag (_,_) -> "" - | GAsm (_,_) -> "assembler" - | GAnnot _ - | GPragma _ | GText _ -> "" - - method parameters_names_of glob = - (* only valid for functions *) - match glob with - | GVar (_,_,_) | GVarDecl (_,_) -> "" - | GFun (fdec, _) -> - let res : string ref = ref "(" in - let l = List.length fdec.sformals in - for i = 0 to l-1 do - let e = (List.nth fdec.sformals i) in - if i>0 then - res := (String.concat "," [!res; (self#name_of_type e.vtype)]) - else - res := (String.concat "" [!res; (self#name_of_type e.vtype)]) - done; - res := (String.concat "" [!res; ")"]); - !res - | GFunDecl _ -> "" (* we might still want to extract the parameters from - the function prototype. *) - | GType (_, _) -> "" - | GCompTag (_, _) | GCompTagDecl (_, _) -> "" - | GEnumTagDecl (_,_) | GEnumTag (_,_) -> "" - | GAsm (_,_) | GAnnot _ | GPragma _ | GText _ -> "" - - method fill_model (data:(global*string*string*string*string*string*int) list)= - (* data is a list of 7-tuples (global, name, definition, type_name, - parameter_type_name list, file_name, id). - Only the first item is not a string. - The elements 1, 2, 4, 5 and 6 are displayed in a row and element - 3 is displayed in a sub-window when double-clicking. - Element 7 is NOT displayed but for internal use only. - The first element of these tuples serves to identify the kind of - the elements, in the same way as done in gather_names - *) - let store = self#get_current_model () in - store#clear (); - for i =0 to (List.length data) -1 do - let glob,name,_,type_name,parameter_names,file_name,id=List.nth data i - in - let iter = store#append () in - store#set ~row:iter ~column:col_icon (self#icon_of_global glob); - store#set ~row:iter ~column:col_name name; - store#set ~row:iter ~column:col_type type_name; - store#set ~row:iter ~column:col_parameters parameter_names; - store#set ~row:iter ~column:col_file file_name; - store#set ~row:iter ~column:col_id id - done; - current_model:=store - - method is_level1_iter iter (toplevel:GTree.model) = - let res = ref false in - begin - let son1 = toplevel#get_iter_first in - begin - match son1 with - | Some iterator -> - begin - let iterator_path = (toplevel#get_path iterator) in - let iter_path = (toplevel#get_path iter) in - if iterator_path = iter_path then - res:=true - else - begin - while (toplevel#iter_next iterator) & (not !res) do - let iterator_path = (toplevel#get_path iterator) in - let iter_path = (toplevel#get_path iter) in - if iterator_path = iter_path then - res:=true - done; - end - end - | None -> res:=false - end - end; - !res - - method on_row_activated (view:GTree.view) - current_globals path column = - let _ = column in - let model = view#model in - let row = model#get_iter path in - let name = model#get ~row ~column:col_name in - Gui_parameters.debug "Double-clicked row is: %s" name; - let index = model#get ~row ~column:col_id in - let glob = List.nth !current_globals index in - ignore (self#append_tab name [glob]); - main_window#present () - - method create_view current_globals - ~(model:GTree.tree_store) - ~(packing:(GObj.widget -> unit)) - () = - (* let font_desc = main_ui#monospace in *) - let view = GTree.view ~model ~packing () in - - (* Column #1: col_name is pixbuf column *) - let col_renderer = GTree.cell_renderer_pixbuf [] in - let col = GTree.view_column ~title:"Kind" - ~renderer:(col_renderer, ["pixbuf", col_icon]) () in - begin - col#set_resizable true; - ignore (view#append_column col) - end; - - (* Column #2: col_name is string column *) - let col_renderer = GTree.cell_renderer_text [] in - let col = GTree.view_column ~title:"Name" - ~renderer:(col_renderer, ["markup", col_name]) () in - begin - col#set_resizable true; - ignore (view#append_column col) - end; - - (* Column #3: col_type is string column *) - let col_renderer = GTree.cell_renderer_text [] in - let col = GTree.view_column ~title:"Type" - ~renderer:(col_renderer, ["text", col_type]) () in - begin - col#set_resizable true; - ignore (view#append_column col) - end; - - (* Column #4: col_parameters is string column *) - let col_renderer = GTree.cell_renderer_text [] in - let col = GTree.view_column ~title:"Parameters" - ~renderer:(col_renderer, ["text", col_parameters]) () in - begin - col#set_resizable true; - ignore (view#append_column col) - end; - - (* Column #5: col_file is string column *) - let col_renderer = GTree.cell_renderer_text [] in - let col = GTree.view_column ~title:"File" - ~renderer:(col_renderer, ["text", col_file]) () in - begin - col#set_resizable true; - ignore (view#append_column col) - end; - - view#set_rules_hint true; - view#set_headers_clickable true; - view#selection#set_mode `BROWSE; - ignore - (view#connect#row_activated - ~callback:(self#on_row_activated view current_globals)); - view - - (* =================== TREE_STORE model and view end ==================*) - - method destroy_progress () = - GMain.Timeout.remove !timera; - timer_created:=false - - (* current_globals is a buffer of globals currently found by do_find: - this list associates a unique ID to each global found. It serves to - build the reverse function: row -> global - that is needed when double-clicking on a row of the model view - *) - val current_globals = ref [] - - val current_combobox_value = ref "" - - method file_of glob = - let res = ref "" in - let all_files = Globals.FileIndex.get_files () in - begin - let is_equal g = (g==glob) in - let belongs_to f = - (let (_,globs) = Globals.FileIndex.find f in - if (List.exists is_equal globs) then - begin - res:= f; - true - end - else false) in - let _ = (List.exists belongs_to all_files) in - !res - end - - method do_find la_saisie pbar () = - (* args are: - - the current string la_saisie - - progress bar. - The code will be displayed in a viewer upon double-click. - *) - let combien = la_saisie#text_length in - if (combien > 0) then - let le_string = la_saisie#text in - let lequel = !current_combobox_value in - let le_fichier = (Ast.get ()) in - let la_recherche = self#gather_names ~exact:false le_fichier le_string lequel in - Gui_parameters.debug "here: len = %d" (List.length la_recherche); - - (* stores the search result into current_globals and write it - to the model *) - current_globals := []; - let new_data = ref [] in - for i = 0 to (List.length la_recherche) -1 do - let one_glob = (List.nth la_recherche i) in - current_globals := (List.append !current_globals - [one_glob]); - let the_name = (self#image one_glob) in - let one_type = self#type_name_of one_glob in - let one_parameter = self#parameters_names_of one_glob in - Gui_parameters.debug "the parameters are : %s" one_parameter; - let one_file = self#file_of one_glob in - new_data:= (List.append !new_data [(one_glob,the_name,"",one_type,one_parameter,one_file,i)]) - done; - self#fill_model !new_data; - self#toggle_stop pbar (); - self#destroy_progress () - - (* Update the value of the progress bar so that we get - some movement. *) - method progress_timeout pbar () = - if !pulse_mode - then - pbar#pulse () - else ( - (* Calculate the value of the progress bar using the - * value range set in the adjustment object *) - let new_val = - let v = pbar#fraction +. !coeff in - if v > 1.0 then 0.0 else v - in - Gui_parameters.debug "timer progress: %f w/ coeff %f" new_val !coeff; - flush stdout; - pbar#set_fraction new_val - ); - - (* As this is a timeout function, return true so that it - * continues to get called *) - true - - (* Callback that toggles the text display with the progress bar trough *) - method toggle_show_text (pbar:GRange.progress_bar) () = - let text = pbar#text in - if text = "" - then pbar#set_text "searching..." - else pbar#set_text "" - - (* Callback that toggles the activity mode of the progress bar *) - method toggle_activity_mode pbar () = - Gui_parameters.debug "activity mode toggled! "; - flush stdout; - if not !timer_created then - begin - timera := (GMain.Timeout.add ~ms:100 ~callback:(self#progress_timeout pbar)); - timer_created :=true; - end; - coeff:=0.01; - pbar#set_text "searching..."; - if !pulse_mode - then pbar#pulse () - else pbar#set_fraction 0.0 - - val mutable finder_window = None - (** Open Search window **) - method find_object (main_ui:Design.main_window_extension_points) = - Gui_parameters.debug "Finder"; - match finder_window with - | Some w -> w#present () - | None -> - let dialog = GWindow.window - ~title:"Find Object" - ~modal:false - ~position:`CENTER_ON_PARENT - ~width:600 ~height:500 ~border_width:3 - ~resizable:true - () - in - finder_window <- Some dialog; - dialog#set_transient_for main_ui#main_window#as_window; - let a_vbox = GPack.vbox ~packing:dialog#add () - in - let a_hbox = GPack.hbox ~packing:(a_vbox#pack ~fill:false) () - in - let tmp = GBin.frame ~border_width:10 ~packing:a_hbox#pack () in - let box = GPack.hbox ~packing:tmp#add () in - let entree = GEdit.entry - ~text:"Object to search" - ~packing:(box#pack ~expand:true ~fill:true ~padding:2) () - in - (* build a tree view for the combo box *) - let cols = new GTree.column_list in - let col_icon = cols#add gobject in - let col_literal = cols#add string in - let store = GTree.list_store cols in - let data = [(other_pixbuf,"all"); - (t_pixbuf,"typedef"); - (un_pixbuf, "struct/union"); - (e_pixbuf, "enumeration"); - (gv_pixbuf, "variable"); - (fu_pixbuf, "function"); - (asm_pixbuf, "assembler"); - (annot_pixbuf, "annotation")] in - let insert = (function (e,f) -> - let row = store#append () in - store#set ~row ~column:col_icon e; - store#set ~row ~column:col_literal f) in - List.iter insert data; - let choices = GEdit.combo_box - ~model:store - ~packing:(box#pack ~padding:2) () in - let renderer1 = GTree.cell_renderer_pixbuf [ ] in - choices#pack renderer1; - choices#add_attribute renderer1 "pixbuf" col_icon; - let renderer2 = GTree.cell_renderer_text [ ] in - choices#pack renderer2; - choices#add_attribute renderer2 "text" col_literal; - let change_and_get_active () = - match choices#active_iter with - | None -> () - | Some row -> - let data = choices#model#get ~row ~column:col_literal in - current_combobox_value := data - in - ignore (choices#connect#changed change_and_get_active); - choices#set_active 5; - let _ = GMisc.separator `VERTICAL ~packing:a_hbox#add () in - - let find_button = GButton.button - ~stock:`FIND - ~packing:a_hbox#add () in - let stop_button = GButton.button - ~stock:`STOP - ~packing:a_hbox#add () in - let close_button = GButton.button - ~stock:`CLOSE - ~packing:a_hbox#add () in - - (* add results window *) - let model = !current_model in - begin - let scroll_win = - GBin.scrolled_window ~packing:a_vbox#add () - in - let _ = self#create_view current_globals ~model:model ~packing:scroll_win#add () - in - model#set_sort_func col_name.index self#sort_by_name; - model#set_sort_column_id col_name.index `ASCENDING - end; - - let bottom_hbox = GPack.box `HORIZONTAL ~packing:a_vbox#pack () - in - - let statusbar = GMisc.statusbar ~packing:bottom_hbox#add () in - - let status_context = statusbar#new_context "status" in - - let _ = status_context#push "Finder" in - - (* add a progress bar before the GText.view *) - - let pbar = GRange.progress_bar ~packing:(bottom_hbox#pack ~fill:false) () in - - begin - (* startup configuration for find source viewer *) - find_button#set_border_width 10; - close_button#set_border_width 10; - stop_button#set_border_width 10; - - (* set callbacks *) - ignore (stop_button#connect#clicked ~callback:self#destroy_progress); - ignore (stop_button#connect#clicked - ~callback:(self#toggle_stop pbar)); - - ignore (close_button#connect#clicked ~callback:self#destroy_progress); - ignore (close_button#connect#clicked - ~callback:(self#toggle_stop pbar )); - ignore (close_button#connect#clicked ~callback:dialog#misc#hide); - - ignore (dialog#event#connect#delete - ~callback:(fun _ -> dialog#misc#hide (); - true)); - - ignore (find_button#connect#clicked - ~callback:(self#toggle_activity_mode pbar)); - ignore (find_button#connect#clicked - ~callback:(self#set_in_finder true)); - ignore - (find_button#connect#clicked - ~callback:(self#do_find entree pbar)); - - ignore - (entree#connect#activate - ~callback:(self#toggle_activity_mode pbar)); - ignore - (entree#connect#activate ~callback:(self#set_in_finder true)); - ignore - (entree#connect#activate ~callback: (self#do_find entree pbar)); - pbar#set_text "ready"; - dialog#show() - end - - initializer - let mm = main_ui#menu_manager () in - let default_analyses_items = - mm#add_plugin - [ - Menu_manager.toolbar - ~icon:`FIND - ~label:"Find" - (Menu_manager.Unit_callback(fun _ -> self#find_object main_ui )) - ] in - default_analyses_items.(0)#add_accelerator `CONTROL 'f'; - let find_button = Extlib.the default_analyses_items.(0)#tool_button in - find_button#misc#set_sensitive true; - - main_ui#register_source_selector self#finder_selector; - Design.register_reset_extension - (fun _ -> - main_window#misc#hide (); - Book_manager.delete_all_views finder_source_viewer; - (self#get_current_model ())#clear ()) -end - - -let main (main_ui:Design.main_window_extension_points) = - ignore (new finder_class main_ui) - -let find () = - Design.register_extension main - - -(* - Local Variables: - compile-command: "make" - End: -*) diff --git a/src/plugins/finder/finder_gui.mli b/src/plugins/finder/finder_gui.mli deleted file mode 100644 index a6ad527fc1e2bfe3a55b591db370e4490e07adcf..0000000000000000000000000000000000000000 --- a/src/plugins/finder/finder_gui.mli +++ /dev/null @@ -1,16 +0,0 @@ -(**************************************************************************) -(* *) -(* This file is part of Frama-C. *) -(* *) -(* Copyright (C) 2007-2016 *) -(* CEA (Commissariat à l'énergie atomique et aux énergies *) -(* alternatives) *) -(* *) -(* All rights reserved. *) -(* Contact CEA LIST for licensing. *) -(* *) -(**************************************************************************) - -(** Finder plugin. *) - -val find : unit -> unit diff --git a/src/plugins/finder/icons/asm.xpm b/src/plugins/finder/icons/asm.xpm deleted file mode 100644 index 2383a993798d28835d4c1b9e0a0b81cb7f7bd7f5..0000000000000000000000000000000000000000 --- a/src/plugins/finder/icons/asm.xpm +++ /dev/null @@ -1,24 +0,0 @@ -/* XPM */ -static char * asm_xpm[] = { -"16 16 5 1", -" c None", -". c #000000", -"+ c #FFFFFF", -"@ c #F93804", -"# c #F93003", -" . ", -" .+. ", -" .+++. ", -" .+++++. ", -" .+++++++. ", -" .+++++++++. ", -" .@@@+#@@+@+@. ", -".+@+@+@+++@@@+. ", -" .@@@+@@@+@+@. ", -" @+@+++@+@+@ ", -" .++@@@++. ", -" .+++++. ", -" .+++. ", -" .+. ", -" . ", -" "}; diff --git a/src/plugins/finder/icons/gtk-open.png b/src/plugins/finder/icons/gtk-open.png deleted file mode 100644 index 33c5b7f5466a6c0ef5a8472da1a29bda373eae22..0000000000000000000000000000000000000000 Binary files a/src/plugins/finder/icons/gtk-open.png and /dev/null differ diff --git a/src/plugins/finder/icons/gtk.xpm b/src/plugins/finder/icons/gtk.xpm deleted file mode 100644 index cf3d4f36aa411c96ba154362309fef29a4413dde..0000000000000000000000000000000000000000 --- a/src/plugins/finder/icons/gtk.xpm +++ /dev/null @@ -1,47 +0,0 @@ -/* XPM */ -static char * gtk_xpm[] = { -"32 39 5 1", -". c none", -"+ c black", -"@ c #3070E0", -"# c #F05050", -"$ c #35E035", -"................+...............", -"..............+++++.............", -"............+++++@@++...........", -"..........+++++@@@@@@++.........", -"........++++@@@@@@@@@@++........", -"......++++@@++++++++@@@++.......", -".....+++@@@+++++++++++@@@++.....", -"...+++@@@@+++@@@@@@++++@@@@+....", -"..+++@@@@+++@@@@@@@@+++@@@@@++..", -".++@@@@@@+++@@@@@@@@@@@@@@@@@@++", -".+#+@@@@@@++@@@@+++@@@@@@@@@@@@+", -".+##++@@@@+++@@@+++++@@@@@@@@$@.", -".+###++@@@@+++@@@+++@@@@@++$$$@.", -".+####+++@@@+++++++@@@@@+@$$$$@.", -".+#####+++@@@@+++@@@@++@$$$$$$+.", -".+######++++@@@@@@@++@$$$$$$$$+.", -".+#######+##+@@@@+++$$$$$$@@$$+.", -".+###+++##+##+@@++@$$$$$$++$$$+.", -".+###++++##+##+@@$$$$$$$@+@$$@+.", -".+###++++++#+++@$$@+@$$@++$$$@+.", -".+####+++++++#++$$@+@$$++$$$$+..", -".++####++++++#++$$@+@$++@$$$$+..", -".+#####+++++##++$$++@+++$$$$$+..", -".++####+++##+#++$$+++++@$$$$$+..", -".++####+++####++$$++++++@$$$@+..", -".+#####++#####++$$+++@++++@$@+..", -".+#####++#####++$$++@$$@+++$@@..", -".++####++#####++$$++$$$$$+@$@++.", -".++####++#####++$$++$$$$$$$$+++.", -".+++####+#####++$$++$$$$$$$@+++.", -"..+++#########+@$$+@$$$$$$+++...", -"...+++########+@$$$$$$$$@+++....", -".....+++######+@$$$$$$$+++......", -"......+++#####+@$$$$$@++........", -".......+++####+@$$$$+++.........", -".........++###+$$$@++...........", -"..........++##+$@+++............", -"...........+++++++..............", -".............++++..............."}; diff --git a/src/plugins/finder/icons/invariant.xpm b/src/plugins/finder/icons/invariant.xpm deleted file mode 100644 index 13a0af7c49b1056e84fafb60ccea4f35a98c830e..0000000000000000000000000000000000000000 --- a/src/plugins/finder/icons/invariant.xpm +++ /dev/null @@ -1,199 +0,0 @@ -/* XPM */ -static char * invariant_xpm[] = { -"16 16 180 2", -" c None", -". c #212822", -"+ c #425446", -"@ c #55755D", -"# c #4E7457", -"$ c #32523A", -"% c #15261A", -"& c #1D201E", -"* c #8A9C8E", -"= c #CCF4D6", -"- c #BEF6CC", -"; c #A7F4BB", -"> c #94F2AD", -", c #84F0A0", -"' c #6EE98E", -") c #37924E", -"! c #081D0E", -"~ c #323633", -"{ c #CEE1D4", -"] c #BFD4C4", -"^ c #6B7D70", -"/ c #5E7B66", -"( c #507A5B", -"_ c #457A52", -": c #3C774B", -"< c #317642", -"[ c #3BCB60", -"} c #27CD52", -"| c #053010", -"1 c #1D201D", -"2 c #CEE1D3", -"3 c #EAFCEF", -"4 c #7E8680", -"5 c #000000", -"6 c #1A7331", -"7 c #20E252", -"8 c #16B940", -"9 c #031808", -"0 c #889B8D", -"a c #E2FAE8", -"b c #ECFCF0", -"c c #DEECE2", -"d c #7C8D81", -"e c #5C7C64", -"f c #080E0A", -"g c #061008", -"h c #2B783F", -"i c #237638", -"j c #2EC956", -"k c #1FE251", -"l c #18C846", -"m c #0D7026", -"n c #202722", -"o c #C9F2D4", -"p c #D5F9DE", -"q c #DFFBE6", -"r c #DCFAE4", -"s c #C8F8D4", -"t c #9DF2B3", -"u c #101F14", -"v c #020704", -"w c #4EE976", -"x c #3EE76A", -"y c #2EE55E", -"z c #1DE050", -"A c #18C645", -"B c #14A63A", -"C c #021808", -"D c #415446", -"E c #B9F5C8", -"F c #BAF6CA", -"G c #BCF6CB", -"H c #B2F5C4", -"I c #97F2AE", -"J c #76EE95", -"K c #0E2112", -"L c #08180C", -"M c #43E86E", -"N c #35E663", -"O c #26E457", -"P c #1AD84B", -"Q c #16BC41", -"R c #129C36", -"S c #53745B", -"T c #A4F3B8", -"U c #99F2B0", -"V c #91F0AA", -"W c #81EF9E", -"X c #6CEC8D", -"Y c #5AEA7F", -"Z c #0C2111", -"` c #09200F", -" . c #37E665", -".. c #28E559", -"+. c #1CDF4E", -"@. c #18CA46", -"#. c #14AC3C", -"$. c #118E31", -"%. c #073D15", -"&. c #4B7455", -"*. c #90F1AA", -"=. c #73ED93", -"-. c #65EC88", -";. c #58EA7E", -">. c #4CE975", -",. c #0A200F", -"'. c #07200E", -"). c #1CE04E", -"!. c #19CF48", -"~. c #16B840", -"{. c #129A35", -"]. c #0F802C", -"^. c #063813", -"/. c #305238", -"(. c #7EEF9C", -"_. c #72ED92", -":. c #62EC86", -"<. c #57EA7D", -"[. c #4AE974", -"}. c #3FE76B", -"|. c #05200C", -"1. c #1CE04F", -"2. c #19D048", -"3. c #13A238", -"4. c #10872E", -"5. c #0E7428", -"6. c #04260D", -"7. c #142618", -"8. c #6DE88C", -"9. c #61EC85", -"0. c #55EA7C", -"a. c #49E872", -"b. c #3FE76A", -"c. c #34E662", -"d. c #06200C", -"e. c #041F0B", -"f. c #19D249", -"g. c #16BD42", -"h. c #108C30", -"i. c #0E7729", -"j. c #0C6C25", -"k. c #021006", -"l. c #3A9250", -"m. c #51EA78", -"n. c #46E870", -"o. c #3AE767", -"p. c #30E65E", -"q. c #04200B", -"r. c #031D0A", -"s. c #17BF42", -"t. c #14A93A", -"u. c #119032", -"v. c #0E7A2A", -"w. c #0D6E26", -"x. c #074016", -"y. c #0A1D0F", -"z. c #38CF60", -"A. c #33E662", -"B. c #1C983C", -"C. c #010803", -"D. c #000602", -"E. c #000200", -"F. c #000301", -"G. c #000100", -"H. c #084618", -"I. c #0A5C20", -"J. c #010C04", -"K. c #0A3114", -"L. c #1CCA49", -"M. c #129B36", -"N. c #010903", -"O. c #000401", -"P. c #021507", -"Q. c #031A09", -"R. c #0E7829", -"S. c #129734", -"T. c #108930", -"U. c #0C6A24", -"V. c #073E15", -"W. c #04250D", -" . + @ # $ % ", -" & * = - ; > , ' ) ! ", -" ~ { ] ^ / ( _ : < [ } | ", -" 1 2 3 4 5 5 5 5 5 5 6 7 8 9 ", -" 0 a b c d e f g h i j k l m ", -"n o p q r s t u v w x y z A B C ", -"D E F G H I J K L M N O P Q R | ", -"S T U V W X Y Z ` ...+.@.#.$.%.", -"&.*.W =.-.;.>.,.'...).!.~.{.].^.", -"/.(._.:.<.[.}.'.|.1.2.Q 3.4.5.6.", -"7.8.9.0.a.b.c.d.e.f.g.B h.i.j.k.", -" l.m.n.o.p.O q.r.s.t.u.v.w.x. ", -" y.z.A.B.C.D.5 E.F.G.H.w.I.J. ", -" K.L.M.N.D.E.E.O.5 x.I.P. ", -" Q.R.#.3.S.T.R.U.x.J. ", -" C | V.^.W.k. "}; diff --git a/src/plugins/finder/icons/lemma.xpm b/src/plugins/finder/icons/lemma.xpm deleted file mode 100644 index afd7c7998b45aced24f1a922b2c97837ea356714..0000000000000000000000000000000000000000 --- a/src/plugins/finder/icons/lemma.xpm +++ /dev/null @@ -1,186 +0,0 @@ -/* XPM */ -static char * lemma_xpm[] = { -"16 16 167 2", -" c None", -". c #212822", -"+ c #425446", -"@ c #55755D", -"# c #4E7457", -"$ c #32523A", -"% c #15261A", -"& c #1D201E", -"* c #8A9C8E", -"= c #CCF4D6", -"- c #BEF6CC", -"; c #A7F4BB", -"> c #94F2AD", -", c #84F0A0", -"' c #6EE98E", -") c #37924E", -"! c #081D0E", -"~ c #323633", -"{ c #CEE1D4", -"] c #E2FBE9", -"^ c #859A8A", -"/ c #82AB8D", -"( c #9EF3B4", -"_ c #72ED92", -": c #5CEB81", -"< c #44E86E", -"[ c #27CD52", -"} c #053010", -"| c #1D201D", -"1 c #CEE1D3", -"2 c #EAFCEF", -"3 c #ECFCF0", -"4 c #030303", -"5 c #161D18", -"6 c #97F2AE", -"7 c #76EE96", -"8 c #62EC86", -"9 c #4FE977", -"0 c #3AE766", -"a c #20E252", -"b c #16B940", -"c c #031808", -"d c #889B8D", -"e c #E2FAE8", -"f c #E7F6EB", -"g c #000000", -"h c #17201A", -"i c #8AF0A4", -"j c #67EC89", -"k c #57EA7D", -"l c #46E870", -"m c #35E663", -"n c #1FE251", -"o c #18C846", -"p c #0D7026", -"q c #202722", -"r c #C9F2D4", -"s c #D5F9DE", -"t c #DFFBE6", -"u c #BED8C5", -"v c #0B120D", -"w c #73ED92", -"x c #5BEB80", -"y c #4EE976", -"z c #3EE76A", -"A c #2EE55E", -"B c #1DE050", -"C c #18C645", -"D c #14A63A", -"E c #021808", -"F c #415446", -"G c #B9F5C8", -"H c #BAF6CA", -"I c #BCF6CB", -"J c #ADEFBF", -"K c #030403", -"L c #020603", -"M c #5DEB82", -"N c #50E977", -"O c #43E86E", -"P c #26E457", -"Q c #1AD84B", -"R c #16BC41", -"S c #129C36", -"T c #53745B", -"U c #A4F3B8", -"V c #99F2B0", -"W c #91F0AA", -"X c #81EF9E", -"Y c #37E665", -"Z c #28E559", -"` c #1CDF4E", -" . c #18CA46", -".. c #14AC3C", -"+. c #118E31", -"@. c #073D15", -"#. c #4B7455", -"$. c #90F1AA", -"%. c #73ED93", -"&. c #65EC88", -"*. c #020502", -"=. c #41E86C", -"-. c #36E664", -";. c #1CE04E", -">. c #19CF48", -",. c #16B840", -"'. c #129A35", -"). c #0F802C", -"!. c #063813", -"~. c #305238", -"{. c #7EEF9C", -"]. c #000201", -"^. c #051308", -"/. c #33E662", -"(. c #27E458", -"_. c #1CE04F", -":. c #19D048", -"<. c #13A238", -"[. c #10872E", -"}. c #0E7428", -"|. c #04260D", -"1. c #142618", -"2. c #6DE88C", -"3. c #61EC85", -"4. c #55EA7C", -"5. c #49E872", -"6. c #041509", -"7. c #19D249", -"8. c #16BD42", -"9. c #108C30", -"0. c #0E7729", -"a. c #0C6C25", -"b. c #021006", -"c. c #3A9250", -"d. c #51EA78", -"e. c #3AE767", -"f. c #000301", -"g. c #010803", -"h. c #0F782A", -"i. c #0D7328", -"j. c #0C6A24", -"k. c #0B5E20", -"l. c #0C6E26", -"m. c #0E7A2A", -"n. c #0D6E26", -"o. c #074016", -"p. c #0A1D0F", -"q. c #38CF60", -"r. c #28E458", -"s. c #04230C", -"t. c #020E05", -"u. c #0A5C20", -"v. c #010C04", -"w. c #0A3114", -"x. c #1CCA49", -"y. c #16BE42", -"z. c #0A591F", -"A. c #0A561E", -"B. c #084A19", -"C. c #09511C", -"D. c #021507", -"E. c #031A09", -"F. c #0E7829", -"G. c #129734", -"H. c #108930", -"I. c #073E15", -"J. c #04250D", -" . + @ # $ % ", -" & * = - ; > , ' ) ! ", -" ~ { ] ^ / ( , _ : < [ } ", -" | 1 2 3 4 5 6 7 8 9 0 a b c ", -" d e 3 f g h i j k l m n o p ", -"q r s t u g v w x y z A B C D E ", -"F G H I J K L M N O m P Q R S } ", -"T U V W X L L y O Y Z ` ...+.@.", -"#.$.X %.&.*.L =.-.Z ;.>.,.'.).!.", -"~.{._ 8 k ].^./.(._.:.R <.[.}.|.", -"1.2.3.4.5.].6.(.;.7.8.D 9.0.a.b.", -" c.d.l e.f.g.h.i.j.k.l.m.n.o. ", -" p.q./.r.s.g g g g g t.n.u.v. ", -" w.x.Q y.}.z.A.B.o.C.u.D. ", -" E.F...<.G.H.F.j.o.v. ", -" E } I.!.J.b. "}; diff --git a/src/plugins/finder/icons/logic.xpm b/src/plugins/finder/icons/logic.xpm deleted file mode 100644 index 30334888612a374556d3087a4baece5812c6e44b..0000000000000000000000000000000000000000 --- a/src/plugins/finder/icons/logic.xpm +++ /dev/null @@ -1,191 +0,0 @@ -/* XPM */ -static char * logic_xpm[] = { -"16 16 172 2", -" c None", -". c #212822", -"+ c #425446", -"@ c #55755D", -"# c #4E7457", -"$ c #32523A", -"% c #15261A", -"& c #1D201E", -"* c #8A9C8E", -"= c #CCF4D6", -"- c #BEF6CC", -"; c #A7F4BB", -"> c #94F2AD", -", c #84F0A0", -"' c #6EE98E", -") c #37924E", -"! c #081D0E", -"~ c #323633", -"{ c #CEE1D4", -"] c #98A99C", -"^ c #B1CEB9", -"/ c #BFF7CE", -"( c #9EF3B4", -"_ c #72ED92", -": c #5CEB81", -"< c #44E86E", -"[ c #27CD52", -"} c #053010", -"| c #1D201D", -"1 c #CEE1D3", -"2 c #EAFCEF", -"3 c #050605", -"4 c #222724", -"5 c #C4F8D1", -"6 c #97F2AE", -"7 c #76EE96", -"8 c #62EC86", -"9 c #4FE977", -"0 c #3AE766", -"a c #20E252", -"b c #16B940", -"c c #031808", -"d c #889B8D", -"e c #E2FAE8", -"f c #ECFCF0", -"g c #000000", -"h c #121613", -"i c #BBF6CA", -"j c #8AF0A4", -"k c #67EC89", -"l c #57EA7D", -"m c #46E870", -"n c #35E663", -"o c #1FE251", -"p c #18C846", -"q c #0D7026", -"r c #202722", -"s c #C9F2D4", -"t c #D5F9DE", -"u c #CEE8D4", -"v c #0C100E", -"w c #9DF2B3", -"x c #73ED92", -"y c #5BEB80", -"z c #4EE976", -"A c #3EE76A", -"B c #2EE55E", -"C c #1DE050", -"D c #18C645", -"E c #14A63A", -"F c #021808", -"G c #415446", -"H c #B9F5C8", -"I c #BAF6CA", -"J c #B7F0C6", -"K c #010101", -"L c #030503", -"M c #76EE95", -"N c #5DEB82", -"O c #50E977", -"P c #43E86E", -"Q c #26E457", -"R c #1AD84B", -"S c #16BC41", -"T c #129C36", -"U c #53745B", -"V c #A4F3B8", -"W c #99F2B0", -"X c #91F0AA", -"Y c #000101", -"Z c #020402", -"` c #5AEA7F", -" . c #37E665", -".. c #28E559", -"+. c #1CDF4E", -"@. c #18CA46", -"#. c #14AC3C", -"$. c #118E31", -"%. c #073D15", -"&. c #4B7455", -"*. c #90F1AA", -"=. c #81EF9E", -"-. c #73ED93", -";. c #030704", -">. c #010402", -",. c #4CE975", -"'. c #41E86C", -"). c #36E664", -"!. c #1CE04E", -"~. c #19CF48", -"{. c #16B840", -"]. c #129A35", -"^. c #0F802C", -"/. c #063813", -"(. c #305238", -"_. c #7EEF9C", -":. c #030905", -"<. c #020904", -"[. c #3FE76B", -"}. c #33E662", -"|. c #27E458", -"1. c #1CE04F", -"2. c #19D048", -"3. c #13A238", -"4. c #10872E", -"5. c #0E7428", -"6. c #04260D", -"7. c #142618", -"8. c #6DE88C", -"9. c #61EC85", -"0. c #55EA7C", -"a. c #030904", -"b. c #34E662", -"c. c #19D249", -"d. c #16BD42", -"e. c #108C30", -"f. c #0E7729", -"g. c #0C6C25", -"h. c #021006", -"i. c #3A9250", -"j. c #51EA78", -"k. c #040F06", -"l. c #010602", -"m. c #15722D", -"n. c #0E7228", -"o. c #0D6E26", -"p. c #0C6624", -"q. c #0A581E", -"r. c #0C6824", -"s. c #0E7A2A", -"t. c #074016", -"u. c #0A1D0F", -"v. c #38CF60", -"w. c #020E05", -"x. c #0A5C20", -"y. c #010C04", -"z. c #0A3114", -"A. c #1CCA49", -"B. c #129E36", -"C. c #0C6422", -"D. c #0C6E26", -"E. c #0D7027", -"F. c #084718", -"G. c #073E15", -"H. c #0A531C", -"I. c #021507", -"J. c #031A09", -"K. c #0E7829", -"L. c #129734", -"M. c #108930", -"N. c #0C6A24", -"O. c #04250D", -" . + @ # $ % ", -" & * = - ; > , ' ) ! ", -" ~ { ] ^ / ( , _ : < [ } ", -" | 1 2 3 4 5 6 7 8 9 0 a b c ", -" d e f g h i j k l m n o p q ", -"r s t u g v w x y z A B C D E F ", -"G H I J K L M N O P n Q R S T } ", -"U V W X Y Z ` z P ...+.@.#.$.%.", -"&.*.=.-.;.>.,.'.)...!.~.{.].^./.", -"(._._ 8 :.<.[.}.|.1.2.S 3.4.5.6.", -"7.8.9.0.a.<.b.|.!.c.d.E e.f.g.h.", -" i.j.m k.l.m.n.o.p.q.r.s.o.t. ", -" u.v.}.h.g g g g g g w.o.x.y. ", -" z.A.B.C.D.E.q.F.G.H.x.I. ", -" J.K.#.3.L.M.K.N.t.y. ", -" F } G./.O.h. "}; diff --git a/src/plugins/finder/icons/pathological.xpm b/src/plugins/finder/icons/pathological.xpm deleted file mode 100644 index b760886b1cfd8dc0e07c4d62d5b45c53b5e933df..0000000000000000000000000000000000000000 --- a/src/plugins/finder/icons/pathological.xpm +++ /dev/null @@ -1,194 +0,0 @@ -/* XPM */ -static char * pathological_xpm[] = { -"16 16 175 2", -" c None", -". c #212822", -"+ c #425446", -"@ c #55755D", -"# c #4E7457", -"$ c #32523A", -"% c #15261A", -"& c #1D201E", -"* c #8A9C8E", -"= c #CCF4D6", -"- c #BEF6CC", -"; c #A7F4BB", -"> c #94F2AD", -", c #84F0A0", -"' c #6EE98E", -") c #37924E", -"! c #081D0E", -"~ c #323633", -"{ c #CEE1D4", -"] c #E2FBE9", -"^ c #D8FAE1", -"/ c #BFF7CE", -"( c #9EF3B4", -"_ c #72ED92", -": c #5CEB81", -"< c #44E86E", -"[ c #27CD52", -"} c #053010", -"| c #1D201D", -"1 c #CEE1D3", -"2 c #EAFCEF", -"3 c #ECFCF0", -"4 c #E2FBE8", -"5 c #C4F8D1", -"6 c #97F2AE", -"7 c #76EE96", -"8 c #62EC86", -"9 c #4FE977", -"0 c #3AE766", -"a c #20E252", -"b c #16B940", -"c c #031808", -"d c #889B8D", -"e c #E2FAE8", -"f c #EDFCF1", -"g c #E0FAE6", -"h c #BBF6CA", -"i c #8AF0A4", -"j c #67EC89", -"k c #57EA7D", -"l c #46E870", -"m c #35E663", -"n c #1FE251", -"o c #18C846", -"p c #0D7026", -"q c #202722", -"r c #C9F2D4", -"s c #D5F9DE", -"t c #DFFBE6", -"u c #DCFAE4", -"v c #C8F8D4", -"w c #9DF2B3", -"x c #73ED92", -"y c #5BEB80", -"z c #4EE976", -"A c #3EE76A", -"B c #2EE55E", -"C c #1DE050", -"D c #18C645", -"E c #14A63A", -"F c #021808", -"G c #415446", -"H c #B9F5C8", -"I c #BAF6CA", -"J c #BCF6CB", -"K c #B2F5C4", -"L c #76EE95", -"M c #5DEB82", -"N c #50E977", -"O c #43E86E", -"P c #26E457", -"Q c #1AD84B", -"R c #16BC41", -"S c #129C36", -"T c #53745B", -"U c #A4F3B8", -"V c #99F2B0", -"W c #91F0AA", -"X c #81EF9E", -"Y c #6CEC8D", -"Z c #5AEA7F", -"` c #37E665", -" . c #28E559", -".. c #1CDF4E", -"+. c #18CA46", -"@. c #14AC3C", -"#. c #118E31", -"$. c #073D15", -"%. c #4B7455", -"&. c #90F1AA", -"*. c #73ED93", -"=. c #65EC88", -"-. c #58EA7E", -";. c #4CE975", -">. c #41E86C", -",. c #36E664", -"'. c #1CE04E", -"). c #19CF48", -"!. c #16B840", -"~. c #129A35", -"{. c #0F802C", -"]. c #063813", -"^. c #305238", -"/. c #7EEF9C", -"(. c #4AE974", -"_. c #3FE76B", -":. c #33E662", -"<. c #27E458", -"[. c #1CE04F", -"}. c #19D048", -"|. c #13A238", -"1. c #10872E", -"2. c #0E7428", -"3. c #04260D", -"4. c #142618", -"5. c #6DE88C", -"6. c #61EC85", -"7. c #55EA7C", -"8. c #49E872", -"9. c #3FE76A", -"0. c #34E662", -"a. c #19D249", -"b. c #16BD42", -"c. c #108C30", -"d. c #0E7729", -"e. c #0C6C25", -"f. c #021006", -"g. c #3A9250", -"h. c #51EA78", -"i. c #3AE767", -"j. c #30E65E", -"k. c #17BF42", -"l. c #14A93A", -"m. c #119032", -"n. c #0E7A2A", -"o. c #0D6E26", -"p. c #074016", -"q. c #0A1D0F", -"r. c #38CF60", -"s. c #28E458", -"t. c #1EE150", -"u. c #1ADA4C", -"v. c #18CF48", -"w. c #17BE42", -"x. c #14A83A", -"y. c #118F31", -"z. c #0E792A", -"A. c #0A5C20", -"B. c #010C04", -"C. c #0A3114", -"D. c #1CCA49", -"E. c #18CC46", -"F. c #16C042", -"G. c #16B53F", -"H. c #14A439", -"I. c #0E782A", -"J. c #0D6D25", -"K. c #021507", -"L. c #031A09", -"M. c #0E7829", -"N. c #129734", -"O. c #108930", -"P. c #0C6A24", -"Q. c #073E15", -"R. c #04250D", -" . + @ # $ % ", -" & * = - ; > , ' ) ! ", -" ~ { ] ^ / ( , _ : < [ } ", -" | 1 2 3 4 5 6 7 8 9 0 a b c ", -" d e 3 f g h i j k l m n o p ", -"q r s t u v w x y z A B C D E F ", -"G H I J K 6 L M N O m P Q R S } ", -"T U V W X Y Z z O ` ...+.@.#.$.", -"%.&.X *.=.-.;.>.,. .'.).!.~.{.].", -"^./._ 8 k (._.:.<.[.}.R |.1.2.3.", -"4.5.6.7.8.9.0.<.'.a.b.E c.d.e.f.", -" g.h.l i.j.P '.a.k.l.m.n.o.p. ", -" q.r.:.s.t.u.v.w.x.y.z.o.A.B. ", -" C.D.Q E.F.G.H.#.I.J.A.K. ", -" L.M.@.|.N.O.M.P.p.B. ", -" F } Q.].R.f. "}; diff --git a/src/plugins/finder/icons/predicate.xpm b/src/plugins/finder/icons/predicate.xpm deleted file mode 100644 index 4489af303a50ecb801be835c6985bc71d6ed4cdd..0000000000000000000000000000000000000000 --- a/src/plugins/finder/icons/predicate.xpm +++ /dev/null @@ -1,195 +0,0 @@ -/* XPM */ -static char * predicate_xpm[] = { -"16 16 176 2", -" c None", -". c #212822", -"+ c #425446", -"@ c #55755D", -"# c #4E7457", -"$ c #32523A", -"% c #15261A", -"& c #1D201E", -"* c #8A9C8E", -"= c #CCF4D6", -"- c #BEF6CC", -"; c #A7F4BB", -"> c #94F2AD", -", c #84F0A0", -"' c #6EE98E", -") c #37924E", -"! c #081D0E", -"~ c #323633", -"{ c #CEE1D4", -"] c #E2FBE9", -"^ c #D8FAE1", -"/ c #BFF7CE", -"( c #9EF3B4", -"_ c #72ED92", -": c #5CEB81", -"< c #44E86E", -"[ c #27CD52", -"} c #053010", -"| c #1D201D", -"1 c #CEE1D3", -"2 c #EAFCEF", -"3 c #8A938C", -"4 c #020202", -"5 c #060807", -"6 c #050806", -"7 c #020402", -"8 c #010201", -"9 c #020703", -"0 c #061A0B", -"a c #19B441", -"b c #16B940", -"c c #031808", -"d c #889B8D", -"e c #E2FAE8", -"f c #ECFCF0", -"g c #717873", -"h c #000000", -"i c #3B4F40", -"j c #2B4E34", -"k c #1C4226", -"l c #153A1E", -"m c #123E1E", -"n c #000100", -"o c #031C0A", -"p c #16BC41", -"q c #0D7026", -"r c #202722", -"s c #C9F2D4", -"t c #D5F9DE", -"u c #DFFBE6", -"v c #4D5650", -"w c #060806", -"x c #9DF2B3", -"y c #73ED92", -"z c #5BEB80", -"A c #4EE976", -"B c #3EE76A", -"C c #0D3D1A", -"D c #0C6C25", -"E c #14A63A", -"F c #021808", -"G c #415446", -"H c #B9F5C8", -"I c #BAF6CA", -"J c #BCF6CB", -"K c #4A6450", -"L c #76EE95", -"M c #5DEB82", -"N c #50E977", -"O c #43E86E", -"P c #35E663", -"Q c #136B2A", -"R c #0C6623", -"S c #129C36", -"T c #53745B", -"U c #A4F3B8", -"V c #99F2B0", -"W c #91F0AA", -"X c #437851", -"Y c #5AEA7F", -"Z c #37E665", -"` c #20AE44", -" . c #041B0A", -".. c #0D6D26", -"+. c #118E31", -"@. c #073D15", -"#. c #4B7455", -"$. c #90F1AA", -"%. c #81EF9E", -"&. c #73ED93", -"*. c #347646", -"=. c #010302", -"-. c #020804", -";. c #010803", -">. c #000201", -",. c #063813", -"'. c #118F32", -"). c #0F802C", -"!. c #305238", -"~. c #7EEF9C", -"{. c #62EC86", -"]. c #2D7540", -"^. c #1E7434", -"/. c #135D26", -"(. c #0B4A1C", -"_. c #084819", -":. c #0A551E", -"<. c #10842E", -"[. c #129D36", -"}. c #10872E", -"|. c #0E7428", -"1. c #04260D", -"2. c #142618", -"3. c #6DE88C", -"4. c #61EC85", -"5. c #55EA7C", -"6. c #26743A", -"7. c #34E662", -"8. c #27E458", -"9. c #1CE04E", -"0. c #19D249", -"a. c #16BD42", -"b. c #108C30", -"c. c #0E7729", -"d. c #021006", -"e. c #3A9250", -"f. c #51EA78", -"g. c #46E870", -"h. c #1F7736", -"i. c #22CE4E", -"j. c #17BF42", -"k. c #14A93A", -"l. c #119032", -"m. c #0E7A2A", -"n. c #0D6E26", -"o. c #074016", -"p. c #0A1D0F", -"q. c #38CF60", -"r. c #33E662", -"s. c #16742E", -"t. c #16B740", -"u. c #18CF48", -"v. c #17BE42", -"w. c #14A83A", -"x. c #118F31", -"y. c #0E792A", -"z. c #0A5C20", -"A. c #010C04", -"B. c #0A3114", -"C. c #1CCA49", -"D. c #10872F", -"E. c #16BB41", -"F. c #16B53F", -"G. c #14A439", -"H. c #0E782A", -"I. c #0D6D25", -"J. c #021507", -"K. c #031A09", -"L. c #0E7829", -"M. c #14AC3C", -"N. c #13A238", -"O. c #129734", -"P. c #108930", -"Q. c #0C6A24", -"R. c #073E15", -"S. c #04250D", -" . + @ # $ % ", -" & * = - ; > , ' ) ! ", -" ~ { ] ^ / ( , _ : < [ } ", -" | 1 2 3 4 5 6 7 8 9 0 a b c ", -" d e f g h i j k l m n o p q ", -"r s t u v w x y z A B C h D E F ", -"G H I J K 7 L M N O P Q h R S } ", -"T U V W X h Y A O Z ` .h ..+.@.", -"#.$.%.&.*.h h =.-.;.>.h ,.'.).,.", -"!.~._ {.].h ^./.(._.:.<.[.}.|.1.", -"2.3.4.5.6.h 7.8.9.0.a.E b.c.D d.", -" e.f.g.h.h i.9.0.j.k.l.m.n.o. ", -" p.q.r.s.h t.u.v.w.x.y.n.z.A. ", -" B.C.D.c E.F.G.+.H.I.z.J. ", -" K.L.M.N.O.P.L.Q.o.A. ", -" F } R.,.S.d. "}; diff --git a/src/plugins/finder/icons/stock_help.png b/src/plugins/finder/icons/stock_help.png deleted file mode 100644 index 2e923a291918d5ebefbfa4f40f1a2bef92fef664..0000000000000000000000000000000000000000 Binary files a/src/plugins/finder/icons/stock_help.png and /dev/null differ diff --git a/src/plugins/finder/icons/type.xpm b/src/plugins/finder/icons/type.xpm deleted file mode 100644 index 695f60ac73df13a5b718e2fe40687393e03709fa..0000000000000000000000000000000000000000 --- a/src/plugins/finder/icons/type.xpm +++ /dev/null @@ -1,197 +0,0 @@ -/* XPM */ -static char * type_xpm[] = { -"16 16 178 2", -" c None", -". c #212822", -"+ c #425446", -"@ c #55755D", -"# c #4E7457", -"$ c #32523A", -"% c #15261A", -"& c #1D201E", -"* c #8A9C8E", -"= c #CCF4D6", -"- c #BEF6CC", -"; c #A7F4BB", -"> c #94F2AD", -", c #84F0A0", -"' c #6EE98E", -") c #37924E", -"! c #081D0E", -"~ c #323633", -"{ c #CEE1D4", -"] c #E2FBE9", -"^ c #D8FAE1", -"/ c #BFF7CE", -"( c #9EF3B4", -"_ c #72ED92", -": c #5CEB81", -"< c #44E86E", -"[ c #27CD52", -"} c #053010", -"| c #1D201D", -"1 c #CEE1D3", -"2 c #CAD9CE", -"3 c #767F79", -"4 c #76837A", -"5 c #688470", -"6 c #507F5C", -"7 c #407D50", -"8 c #367F49", -"9 c #32924B", -"0 c #269944", -"a c #1ED44D", -"b c #16B940", -"c c #031808", -"d c #889B8D", -"e c #E2FAE8", -"f c #8F9A92", -"g c #000000", -"h c #118C31", -"i c #18C846", -"j c #0D7026", -"k c #202722", -"l c #C9F2D4", -"m c #D5F9DE", -"n c #DEFAE5", -"o c #BBD5C2", -"p c #9FC8AA", -"q c #80C892", -"r c #0D1A10", -"s c #091A0E", -"t c #3DBA5E", -"u c #289744", -"v c #1E983D", -"w c #1BD24A", -"x c #18C645", -"y c #14A63A", -"z c #021808", -"A c #415446", -"B c #B9F5C8", -"C c #BAF6CA", -"D c #BCF6CB", -"E c #B2F5C4", -"F c #97F2AE", -"G c #76EE95", -"H c #0E2112", -"I c #0A2010", -"J c #43E86E", -"K c #35E663", -"L c #26E457", -"M c #1AD84B", -"N c #16BC41", -"O c #129C36", -"P c #53745B", -"Q c #A4F3B8", -"R c #99F2B0", -"S c #91F0AA", -"T c #81EF9E", -"U c #6CEC8D", -"V c #5AEA7F", -"W c #0C2111", -"X c #09200F", -"Y c #37E665", -"Z c #28E559", -"` c #1CDF4E", -" . c #18CA46", -".. c #14AC3C", -"+. c #118E31", -"@. c #073D15", -"#. c #4B7455", -"$. c #90F1AA", -"%. c #73ED93", -"&. c #65EC88", -"*. c #58EA7E", -"=. c #4CE975", -"-. c #0A2411", -";. c #061D0C", -">. c #1CE04E", -",. c #19CF48", -"'. c #16B840", -"). c #129A35", -"!. c #0F802C", -"~. c #063813", -"{. c #305238", -"]. c #7EEF9C", -"^. c #62EC86", -"/. c #57EA7D", -"(. c #4AE974", -"_. c #3FE76B", -":. c #10451E", -"<. c #010903", -"[. c #1CE04F", -"}. c #19D048", -"|. c #13A238", -"1. c #10872E", -"2. c #0E7428", -"3. c #04260D", -"4. c #142618", -"5. c #6DE88C", -"6. c #61EC85", -"7. c #55EA7C", -"8. c #49E872", -"9. c #3FE76A", -"0. c #34E662", -"a. c #093214", -"b. c #021106", -"c. c #19D249", -"d. c #16BD42", -"e. c #108C30", -"f. c #0E7729", -"g. c #0C6C25", -"h. c #021006", -"i. c #3A9250", -"j. c #51EA78", -"k. c #46E870", -"l. c #3AE767", -"m. c #30E65E", -"n. c #021507", -"o. c #031D0A", -"p. c #17BF42", -"q. c #14A93A", -"r. c #119032", -"s. c #0E7A2A", -"t. c #0D6E26", -"u. c #074016", -"v. c #0A1D0F", -"w. c #38CF60", -"x. c #33E662", -"y. c #28E458", -"z. c #1EE150", -"A. c #1ADA4C", -"B. c #010C04", -"C. c #031E0A", -"D. c #14A83A", -"E. c #118F31", -"F. c #0E792A", -"G. c #0A5C20", -"H. c #0A3114", -"I. c #1CCA49", -"J. c #18CC46", -"K. c #16C042", -"L. c #10862E", -"M. c #0E782A", -"N. c #0D6D25", -"O. c #031A09", -"P. c #0E7829", -"Q. c #129734", -"R. c #108930", -"S. c #0C6A24", -"T. c #073E15", -"U. c #04250D", -" . + @ # $ % ", -" & * = - ; > , ' ) ! ", -" ~ { ] ^ / ( , _ : < [ } ", -" | 1 2 3 4 5 6 7 8 9 0 a b c ", -" d e f g g g g g g g g h i j ", -"k l m n o p q r s t u v w x y z ", -"A B C D E F G H I J K L M N O } ", -"P Q R S T U V W X Y Z ` ...+.@.", -"#.$.T %.&.*.=.-.;.Z >.,.'.).!.~.", -"{.]._ ^./.(._.:.<.[.}.N |.1.2.3.", -"4.5.6.7.8.9.0.a.b.c.d.y e.f.g.h.", -" i.j.k.l.m.L n.o.p.q.r.s.t.u. ", -" v.w.x.y.z.A.B.C.D.E.F.t.G.B. ", -" H.I.M J.K.L.F.+.M.N.G.n. ", -" O.P...|.Q.R.P.S.u.B. ", -" z } T.~.U.h. "}; diff --git a/src/plugins/finder/icons/type_ax.xpm b/src/plugins/finder/icons/type_ax.xpm deleted file mode 100644 index 499a2c5d17450798e2ccaf828f6c0729901d8b7f..0000000000000000000000000000000000000000 --- a/src/plugins/finder/icons/type_ax.xpm +++ /dev/null @@ -1,26 +0,0 @@ -/* XPM */ -static char * type_e_xpm[] = { -/* width height num_colors chars_per_pixel */ -"16 16 4 1", -/* colors */ -" c None", -". c black", -"X c white", -"o c red", -/* pixels */ -" . ", -" .X. ", -" .XXX. ", -" .XXXXX. ", -" .XXXXXXX. ", -" .XoXXXXXoX. ", -" .XXXoXXXoXXX. ", -".XXXXXoXoXXXXX. ", -" .XXXXXoXXXXX. ", -" .XXXoXoXXX. ", -" .XoXXXoX. ", -" .XXXXX. ", -" .XXX. ", -" .X. ", -" . ", -" "}; diff --git a/src/plugins/finder/icons/type_cl+.xpm b/src/plugins/finder/icons/type_cl+.xpm deleted file mode 100644 index e954ffdd92a66b939c1b0664059010398db4c5cf..0000000000000000000000000000000000000000 --- a/src/plugins/finder/icons/type_cl+.xpm +++ /dev/null @@ -1,28 +0,0 @@ -/* XPM */ -static char * type_cl+_xpm[] = { -/* width height num_colors chars_per_pixel */ -"16 16 6 1", -/* colors */ -" c None", -". c black", -"X c red", -"o c darkgreen", -"O c green", -"+ c blue", -/* pixels */ -" ", -" ", -"...... ", -".XXXX. ...... ", -".XXXX.ooo.OOOO. ", -"...... o .OOOO. ", -" o ...... ", -" o ", -" . o ", -" ... o ...... ", -" . oo.++++. ", -" .++++. ", -" ...... ", -" ", -" ", -" "}; diff --git a/src/plugins/finder/icons/type_cl-.xpm b/src/plugins/finder/icons/type_cl-.xpm deleted file mode 100644 index ead4e29839cafc1111bfbe54a1d82ad02d8cfcd1..0000000000000000000000000000000000000000 --- a/src/plugins/finder/icons/type_cl-.xpm +++ /dev/null @@ -1,28 +0,0 @@ -/* XPM */ -static char * type_cl__xpm[] = { -/* width height num_colors chars_per_pixel */ -"16 16 6 1", -/* colors */ -" c None", -". c black", -"X c red", -"o c darkgreen", -"O c green", -"+ c blue", -/* pixels */ -" ", -" ", -"...... ", -".XXXX. ...... ", -".XXXX.ooo.OOOO. ", -"...... o .OOOO. ", -" o ...... ", -" o ", -" o ", -" ... o ...... ", -" oo.++++. ", -" .++++. ", -" ...... ", -" ", -" ", -" "}; diff --git a/src/plugins/finder/icons/type_cl.xpm b/src/plugins/finder/icons/type_cl.xpm deleted file mode 100644 index 76532185d6226f4ad24d3b53b2f479cd9ae9fd62..0000000000000000000000000000000000000000 --- a/src/plugins/finder/icons/type_cl.xpm +++ /dev/null @@ -1,28 +0,0 @@ -/* XPM */ -static char * type_cl_xpm[] = { -/* width height num_colors chars_per_pixel */ -"16 16 6 1", -/* colors */ -" c None", -". c black", -"X c red", -"o c darkgreen", -"O c green", -"+ c blue", -/* pixels */ -" ", -" ", -"...... ", -".XXXX. ...... ", -".XXXX.ooo.OOOO. ", -"...... o .OOOO. ", -" o ...... ", -" o ", -" . o ", -" ... o ...... ", -" . oo.++++. ", -" .++++. ", -" ...... ", -" ", -" ", -" "}; diff --git a/src/plugins/finder/icons/type_com.xpm b/src/plugins/finder/icons/type_com.xpm deleted file mode 100644 index 31df47ec6e477381238adeac848b0514b110ecc1..0000000000000000000000000000000000000000 --- a/src/plugins/finder/icons/type_com.xpm +++ /dev/null @@ -1,25 +0,0 @@ -/* XPM */ -static char * clsbr_xpm[] = { -/* width height num_colors chars_per_pixel */ -"16 16 3 1", -/* colors */ -" c None", -". c black", -"X c white", -/* pixels */ -" . ", -" .X. ", -" .XXX. ", -" .XXXXX. ", -" .XXXXXXX. ", -" .XXXXXXXXX. ", -" .XXXXXXXXXXX. ", -".XXXXXXXXXXXXX. ", -" .XXXXXXXXXXX. ", -" .XXXXXXXXX. ", -" .XXXXXXX. ", -" .XXXXX. ", -" .XXX. ", -" .X. ", -" . ", -" "}; diff --git a/src/plugins/finder/icons/type_con.xpm b/src/plugins/finder/icons/type_con.xpm deleted file mode 100644 index 2ab65c34523691b71d41103c78050b9e7b0d9a0c..0000000000000000000000000000000000000000 --- a/src/plugins/finder/icons/type_con.xpm +++ /dev/null @@ -1,27 +0,0 @@ -/* XPM */ -static char * clsbr_s_xpm[] = { -/* width height num_colors chars_per_pixel */ -"16 16 5 1", -/* colors */ -" c None", -". c #7f7f00", -"X c black", -"o c red", -"O c white", -/* pixels */ -" .. X ", -" .o. XOX ", -".oo. XOOOX ", -"...o.OOOOOX ", -" .o.OOOOOX ", -" XO.o.OOOOOX ", -" XOOO.o.OOOOOX ", -"XOOOOO.o.OOOOOX ", -" XOOOOO..OOOOX ", -" XOOOOOOOOOX ", -" XOOOOOOOX ", -" XOOOOOX ", -" XOOOX ", -" XOX ", -" X ", -" "}; diff --git a/src/plugins/finder/icons/type_cov.xpm b/src/plugins/finder/icons/type_cov.xpm deleted file mode 100644 index 31df47ec6e477381238adeac848b0514b110ecc1..0000000000000000000000000000000000000000 --- a/src/plugins/finder/icons/type_cov.xpm +++ /dev/null @@ -1,25 +0,0 @@ -/* XPM */ -static char * clsbr_xpm[] = { -/* width height num_colors chars_per_pixel */ -"16 16 3 1", -/* colors */ -" c None", -". c black", -"X c white", -/* pixels */ -" . ", -" .X. ", -" .XXX. ", -" .XXXXX. ", -" .XXXXXXX. ", -" .XXXXXXXXX. ", -" .XXXXXXXXXXX. ", -".XXXXXXXXXXXXX. ", -" .XXXXXXXXXXX. ", -" .XXXXXXXXX. ", -" .XXXXXXX. ", -" .XXXXX. ", -" .XXX. ", -" .X. ", -" . ", -" "}; diff --git a/src/plugins/finder/icons/type_custom.xpm b/src/plugins/finder/icons/type_custom.xpm deleted file mode 100644 index ae6c5d9c9b9c2e959b1766c4cf7850b431d091da..0000000000000000000000000000000000000000 --- a/src/plugins/finder/icons/type_custom.xpm +++ /dev/null @@ -1,25 +0,0 @@ -/* XPM */ -static char * type_gv_xpm[] = { -/* width height num_colors chars_per_pixel */ -"16 16 3 1", -/* colors */ -" c None", -". c darkgreen", -"X c black", -/* pixels */ -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" XX ", -" ... ", -" .. ... . ", -" ..... . ", -" XXX X ", -"XXXXX XXX ", -" XXX X "}; diff --git a/src/plugins/finder/icons/type_e.xpm b/src/plugins/finder/icons/type_e.xpm deleted file mode 100644 index 2e114e37539bd03093b3f024b845a90044446725..0000000000000000000000000000000000000000 --- a/src/plugins/finder/icons/type_e.xpm +++ /dev/null @@ -1,26 +0,0 @@ -/* XPM */ -static char * type_e_xpm[] = { -/* width height num_colors chars_per_pixel */ -"16 16 4 1", -/* colors */ -" c None", -". c black", -"X c white", -"o c blue", -/* pixels */ -" . ", -" .X. ", -" .XXX. ", -" .XXXXX. ", -" .XXXoXXX. ", -" .XXXXoXXXX. ", -" .XXXXXoXXXXX. ", -".XXXoooooooXXX. ", -" .XXXXXoXXXXX. ", -" .XXXXoXXXX. ", -" .XXXoXXX. ", -" .XXXXX. ", -" .XXX. ", -" .X. ", -" . ", -" "}; diff --git a/src/plugins/finder/icons/type_ec.xpm b/src/plugins/finder/icons/type_ec.xpm deleted file mode 100644 index 7442ceabc854ea3266975f51f9239ea829ff4dbe..0000000000000000000000000000000000000000 --- a/src/plugins/finder/icons/type_ec.xpm +++ /dev/null @@ -1,26 +0,0 @@ -/* XPM */ -static char * clsbr_ec_xpm[] = { -/* width height num_colors chars_per_pixel */ -"16 16 4 1", -/* colors */ -" c None", -". c black", -"X c white", -"o c blue", -/* pixels */ -" . ", -" .X. ", -" .XXX. ", -" .XXXXX. ", -" .XXXXXXX. ", -" .XXoXXXoXX. ", -" .XXXoXXXoXXX. ", -".XXoooooooooXX. ", -" .XXXoXXXoXXX. ", -" .XXoXXXoXX. ", -" .XXXXXXX. ", -" .XXXXX. ", -" .XXX. ", -" .X. ", -" . ", -" "}; diff --git a/src/plugins/finder/icons/type_fd.xpm b/src/plugins/finder/icons/type_fd.xpm deleted file mode 100644 index 1db72895898885808819c97ccd1427680cfce7c4..0000000000000000000000000000000000000000 --- a/src/plugins/finder/icons/type_fd.xpm +++ /dev/null @@ -1,26 +0,0 @@ -/* XPM */ -static char * type_fd_xpm[] = { -/* width height num_colors chars_per_pixel */ -"16 16 4 1", -/* colors */ -" c None", -". c white", -"X c darkgreen", -"o c blue", -/* pixels */ -" ", -" . ", -" XX o.o ", -" XX oo.oo ", -" XX oo...oo ", -" XX oo...oo ", -" XX oo...oo ", -" XXXX oo...oo ", -" XX oo...oo ", -" XX oo...oo ", -" XX oo...oo ", -" XX oo.oo ", -" XX o.o ", -" ", -" ", -" "}; diff --git a/src/plugins/finder/icons/type_fr.xpm b/src/plugins/finder/icons/type_fr.xpm deleted file mode 100644 index 49d18a2cdf3e5320d68532b69e607d87310fccd5..0000000000000000000000000000000000000000 --- a/src/plugins/finder/icons/type_fr.xpm +++ /dev/null @@ -1,27 +0,0 @@ -/* XPM */ -static char * clsbr_fr_xpm[] = { -/* width height num_colors chars_per_pixel */ -"16 16 5 1", -/* colors */ -" c None", -". c black", -"X c white", -"o c blue", -"O c red", -/* pixels */ -" . ", -" .X. ", -" .XXX. ", -" .XXXXX. ", -" .XXXXXXX. ", -" .XXooXOOXX. ", -" .XXooooOOOXX. ", -".XXooooooOOOXX. ", -" .XXooooOOOXX. ", -" .XXooXOOXX. ", -" .XXXXXXX. ", -" .XXXXX. ", -" .XXX. ", -" .X. ", -" . ", -" "}; diff --git a/src/plugins/finder/icons/type_fu.xpm b/src/plugins/finder/icons/type_fu.xpm deleted file mode 100644 index 71823003c30a4ed317d76994df15ecbdb501657f..0000000000000000000000000000000000000000 --- a/src/plugins/finder/icons/type_fu.xpm +++ /dev/null @@ -1,26 +0,0 @@ -/* XPM */ -static char * type_fu_xpm[] = { -/* width height num_colors chars_per_pixel */ -"16 16 4 1", -/* colors */ -" c None", -". c black", -"X c white", -"o c red", -/* pixels */ -" . ", -" .X. ", -" .XXX. ", -" .XXooX. ", -" .XXooXXX. ", -" .XXXooXXXX. ", -" .XXXXooXXXXX. ", -".XXXooooooXXXX. ", -" .XXXXooXXXXX. ", -" .XXXooXXXX. ", -" .XXooXXX. ", -" .ooXXX. ", -" .XXX. ", -" .X. ", -" . ", -" "}; diff --git a/src/plugins/finder/icons/type_gv.xpm b/src/plugins/finder/icons/type_gv.xpm deleted file mode 100644 index f151e5a304bd2a7ddef58051c74638c71c53b671..0000000000000000000000000000000000000000 --- a/src/plugins/finder/icons/type_gv.xpm +++ /dev/null @@ -1,25 +0,0 @@ -/* XPM */ -static char * type_gv_xpm[] = { -/* width height num_colors chars_per_pixel */ -"16 16 3 1", -/* colors */ -" c None", -". c darkgreen", -"X c black", -/* pixels */ -" ", -" ... ", -" ..... ", -" ..... ", -" ..... ", -" ... ", -" ", -" X ", -" XXX ", -" XXXXX ", -" XXXXX ", -" X X X ", -" X ", -" X ", -" ", -" "}; diff --git a/src/plugins/finder/icons/type_iv.xpm b/src/plugins/finder/icons/type_iv.xpm deleted file mode 100644 index 5aa842c1c8b151acf10ba0e3e528620c11a77a37..0000000000000000000000000000000000000000 --- a/src/plugins/finder/icons/type_iv.xpm +++ /dev/null @@ -1,26 +0,0 @@ -/* XPM */ -static char * type_iv_xpm[] = { -/* width height num_colors chars_per_pixel */ -"16 16 4 1", -/* colors */ -" c None", -". c black", -"X c white", -"o c red", -/* pixels */ -" . ", -" .X. ", -" .XoX. ", -" .XooXX. ", -" .XXooXXX. ", -" .XXXXXXXXX. ", -" .XXXoooXXXXX. ", -".XXXooooXXXXXX. ", -" .XXoXooXXoXX. ", -" .XXXooXoXX. ", -" .XXoooXX. ", -" .XooXX. ", -" .XXX. ", -" .X. ", -" . ", -" "}; diff --git a/src/plugins/finder/icons/type_lv.xpm b/src/plugins/finder/icons/type_lv.xpm deleted file mode 100644 index c6e20ed4b4325e39f60f3f0214f232454f96af93..0000000000000000000000000000000000000000 --- a/src/plugins/finder/icons/type_lv.xpm +++ /dev/null @@ -1,27 +0,0 @@ -/* XPM */ -static char * type_lv_xpm[] = { -/* width height num_colors chars_per_pixel */ -"16 16 5 1", -/* colors */ -" c None", -". c black", -"X c white", -"o c red", -"O c blue", -/* pixels */ -" .. ", -" .XX. ", -" .XXXX. ", -" .XXXXXX. ", -" .XooXXooX. ", -" .XooXXXXooX. ", -" .XXooXOOXooXX. ", -".XXooXOOOOXooXX.", -".XXooXOOOOXooXX.", -" .XXooXOOXooXX. ", -" .XooXXXXooX. ", -" .XooXXooX. ", -" .XXXXXX. ", -" .XXXX. ", -" .XX. ", -" .. "}; diff --git a/src/plugins/finder/icons/type_ma.xpm b/src/plugins/finder/icons/type_ma.xpm deleted file mode 100644 index 1366632b6579ae9c07d553a3331b24d28b31dcc1..0000000000000000000000000000000000000000 --- a/src/plugins/finder/icons/type_ma.xpm +++ /dev/null @@ -1,26 +0,0 @@ -/* XPM */ -static char * type_ma_xpm[] = { -/* width height num_colors chars_per_pixel */ -"16 16 4 1", -/* colors */ -" c None", -". c black", -"X c white", -"o c blue", -/* pixels */ -" . ", -" .X. ", -" .XXX. ", -" .XXXXX. ", -" .XXoXoXX. ", -" .XXXoXoXXX. ", -" .XXoooooooXX. ", -".XXXXXoXoXXXXX. ", -" .XXoooooooXX. ", -" .XXXoXoXXX. ", -" .XXoXoXX. ", -" .XXXXX. ", -" .XXX. ", -" .X. ", -" . ", -" "}; diff --git a/src/plugins/finder/icons/type_md.xpm b/src/plugins/finder/icons/type_md.xpm deleted file mode 100644 index f471123a5c92063aac6c4fc8cf1441aeb5496f48..0000000000000000000000000000000000000000 --- a/src/plugins/finder/icons/type_md.xpm +++ /dev/null @@ -1,26 +0,0 @@ -/* XPM */ -static char * type_md_xpm[] = { -/* width height num_colors chars_per_pixel */ -"16 16 4 1", -/* colors */ -" c None", -". c blue", -"X c white", -"o c darkgreen", -/* pixels */ -" ", -" ", -" ", -" ..X.. ", -"oo oo ..XXX.. ", -"ooooooo ..XXX.. ", -"ooooooo ..XXX.. ", -"oo o oo ..XXX.. ", -"oo oo ..XXX.. ", -"oo oo ..XXX.. ", -"oo oo ..XXX.. ", -" ..X.. ", -" ", -" ", -" ", -" "}; diff --git a/src/plugins/finder/icons/type_mi.xpm b/src/plugins/finder/icons/type_mi.xpm deleted file mode 100644 index bb30f17f1620c539f34a9e53109eec8d4f764d65..0000000000000000000000000000000000000000 --- a/src/plugins/finder/icons/type_mi.xpm +++ /dev/null @@ -1,26 +0,0 @@ -/* XPM */ -static char * type_mi_xpm[] = { -/* width height num_colors chars_per_pixel */ -"16 16 4 1", -/* colors */ -" c None", -". c black", -"X c white", -"o c red", -/* pixels */ -" . ", -" .X. ", -" .XXX. ", -" .XXXXX. ", -" .XXXXXXX. ", -" .XoooXoooX. ", -" .XXoooooooXX. ", -".XXXooXoXooXXX. ", -" .XXooXXXooXX. ", -" .XooXXXooX. ", -" .ooXXXoo. ", -" .XXXXX. ", -" .XXX. ", -" .X. ", -" . ", -" "}; diff --git a/src/plugins/finder/icons/type_su.xpm b/src/plugins/finder/icons/type_su.xpm deleted file mode 100644 index 31df47ec6e477381238adeac848b0514b110ecc1..0000000000000000000000000000000000000000 --- a/src/plugins/finder/icons/type_su.xpm +++ /dev/null @@ -1,25 +0,0 @@ -/* XPM */ -static char * clsbr_xpm[] = { -/* width height num_colors chars_per_pixel */ -"16 16 3 1", -/* colors */ -" c None", -". c black", -"X c white", -/* pixels */ -" . ", -" .X. ", -" .XXX. ", -" .XXXXX. ", -" .XXXXXXX. ", -" .XXXXXXXXX. ", -" .XXXXXXXXXXX. ", -".XXXXXXXXXXXXX. ", -" .XXXXXXXXXXX. ", -" .XXXXXXXXX. ", -" .XXXXXXX. ", -" .XXXXX. ", -" .XXX. ", -" .X. ", -" . ", -" "}; diff --git a/src/plugins/finder/icons/type_t.xpm b/src/plugins/finder/icons/type_t.xpm deleted file mode 100644 index f7d4d01f8f320892cb8f0fe5baced78e54f47d87..0000000000000000000000000000000000000000 --- a/src/plugins/finder/icons/type_t.xpm +++ /dev/null @@ -1,29 +0,0 @@ -/* XPM */ -static char * type_t_xpm[] = { -/* width height num_colors chars_per_pixel */ -"16 16 7 1", -/* colors */ -" c None", -". c black", -"X c blue", -"o c white", -"O c yellow", -"+ c red", -"@ c green", -/* pixels */ -" . ", -" XX .o. XX ", -"XX ..... XX ", -"XX ..OOO.. XX ", -"XX .o.OOO.o. XX ", -"XX.oo.....oo.XX ", -"XXoooo.o.ooooXX ", -"XXooo.ooo.oooXX ", -"XXoo.ooooo.ooXX ", -"XX.....o.....XX ", -"XX .++.o.@@. XX ", -"XX .++.o.@@. XX ", -"XX ....o.... XX ", -"XX .o. XX ", -" XX . XX ", -" "}; diff --git a/src/plugins/finder/icons/type_ud.xpm b/src/plugins/finder/icons/type_ud.xpm deleted file mode 100644 index e09731a85eba17dedc68fa9794948cc5bfcc075a..0000000000000000000000000000000000000000 --- a/src/plugins/finder/icons/type_ud.xpm +++ /dev/null @@ -1,27 +0,0 @@ -/* XPM */ -static char * type_ud_xpm[] = { -/* width height num_colors chars_per_pixel */ -"16 16 5 1", -/* colors */ -" c None", -". c black", -"X c white", -"o c gray", -"O c red", -/* pixels */ -" . ", -" .X. ", -" .XoX. ", -" .XoXoX. ", -" .XoOOOoX. ", -" .XoOOOOOoX. ", -" .XoXOXoXOXoX. ", -".XoXoXoXOOoXoX. ", -" .XoXoXOOoXoX. ", -" .XoXoOoXoX. ", -" .XoXoXoX. ", -" .XoOoX. ", -" .XoX. ", -" .X. ", -" . ", -" "}; diff --git a/src/plugins/finder/icons/type_un.xpm b/src/plugins/finder/icons/type_un.xpm deleted file mode 100644 index a534cf0443f98a417250f2cf152fbf170666c031..0000000000000000000000000000000000000000 --- a/src/plugins/finder/icons/type_un.xpm +++ /dev/null @@ -1,29 +0,0 @@ -/* XPM */ -static char * type_un_xpm[] = { -/* width height num_colors chars_per_pixel */ -"16 16 7 1", -/* colors */ -" c None", -". c black", -"X c yellow", -"o c #5f5f5f", -"O c blue", -"+ c red", -"@ c green", -/* pixels */ -" . ", -" . . ", -" .............. ", -" .XXXXXXXXXXXX. ", -" .............. ", -" ", -" . . . ", -" . . ", -" o . o . o ", -" oOo . o+o . o@o", -"oOOOo.o+++o.o@@@", -" oOo . o+o . o@o", -" o . o . o ", -" . . ", -" ", -" "}; diff --git a/src/plugins/finder/icons/undef.xpm b/src/plugins/finder/icons/undef.xpm deleted file mode 100644 index 538104675e13099e9acf39551265ffc53fd243cf..0000000000000000000000000000000000000000 Binary files a/src/plugins/finder/icons/undef.xpm and /dev/null differ diff --git a/src/plugins/finder/icons/volatile.xpm b/src/plugins/finder/icons/volatile.xpm deleted file mode 100644 index 35f65427f8cdf09ac4d9a594daa11783d5819591..0000000000000000000000000000000000000000 --- a/src/plugins/finder/icons/volatile.xpm +++ /dev/null @@ -1,55 +0,0 @@ -/* XPM */ -static char * model_var_xpm[] = { -"16 16 36 1", -" c None", -". c #212822", -"+ c #425446", -"@ c #55755D", -"# c #4E7457", -"$ c #32523A", -"% c #15261A", -"& c #1D201E", -"* c #8A9C8E", -"= c #FFFFFF", -"- c #081D0E", -"; c #323633", -"> c #053010", -", c #1D201D", -"' c #83D9E3", -") c #031808", -"! c #889B8D", -"~ c #202722", -"{ c #021808", -"] c #415446", -"^ c #53745B", -"/ c #073D15", -"( c #4B7455", -"_ c #063813", -": c #305238", -"< c #04260D", -"[ c #142618", -"} c #021006", -"| c #0A1D0F", -"1 c #010C04", -"2 c #0A3114", -"3 c #021507", -"4 c #031A09", -"5 c #074016", -"6 c #073E15", -"7 c #04250D", -" .+@#$% ", -" &*=======- ", -" ;==========> ", -" ,==''=====''=) ", -" !=''''===''''= ", -"~=''''''''''''={", -"]='''''''''''==>", -"^==''''''''''==/", -"(=='''''''''''=_", -":=''''''''''''=<", -"[=''''''''''''=}", -" ==''''''''''== ", -" |==''=====''=1 ", -" 2==========3 ", -" 4=======51 ", -" {>6_7} "}; diff --git a/src/plugins/finder/register.ml b/src/plugins/finder/register.ml deleted file mode 100644 index 8cf90bae98fa3ba573c5431ecd0ff1e25397a163..0000000000000000000000000000000000000000 --- a/src/plugins/finder/register.ml +++ /dev/null @@ -1,44 +0,0 @@ -(**************************************************************************) -(* *) -(* This file is part of Frama-C. *) -(* *) -(* Copyright (C) 2007-2016 *) -(* CEA (Commissariat à l'énergie atomique et aux énergies *) -(* alternatives) *) -(* *) -(* All rights reserved. *) -(* Contact CEA LIST for licensing. *) -(* *) -(**************************************************************************) - -include - Plugin.Register - (struct - let name = "Finder" - let shortname = "finder" - let help = "The finder function of main gui" - end) - -module Enabled = - True - (struct - let option_name = "-finder" - let help = "enable the searching features in GUI" - end) - - -(** call main function of the finder *) - -let print = - let f = Finder_gui.find in - Dynamic.register - "Finder.run" - ~journalize:true - (Datatype.func Datatype.unit Datatype.unit) - f - -(** Print 'Hello World!' whenever the option is set. *) -let run () = if Enabled.get () then Finder_gui.find () - -(** Register the function [run] as a main entry point. *) -let () = Db.Main.extend run diff --git a/src/plugins/from/from_parameters.ml b/src/plugins/from/from_parameters.ml index 6671d78a947f44f098cf669547f8d38a283c135c..b362cd591ec5d27f31d1a95779a2760d9903ddcc 100644 --- a/src/plugins/from/from_parameters.ml +++ b/src/plugins/from/from_parameters.ml @@ -62,20 +62,6 @@ let () = (fun _ new_ -> if new_ then ForceCallDeps.set true) -module PathDeps = -False - (struct - let option_name = "-experimental-path-deps" - let help = "experimental" - end) - -module MemDeps = -False - (struct - let option_name = "-experimental-mem-deps" - let help = "experimental" - end) - (* diff --git a/src/plugins/from/from_parameters.mli b/src/plugins/from/from_parameters.mli index aa3b9890156f7c3b47ea9b96ef21dba0d633f0bf..8d7c9a31de0f902a762a58efcf9ec1c202b86537 100644 --- a/src/plugins/from/from_parameters.mli +++ b/src/plugins/from/from_parameters.mli @@ -35,12 +35,6 @@ module ShowIndirectDeps: Parameter_sig.Bool (** Option -from-verify-assigns. *) module VerifyAssigns: Parameter_sig.Bool -(** Option -experimental-path-deps *) -module PathDeps: Parameter_sig.Bool - -(** Option -experimental-mem-deps *) -module MemDeps: Parameter_sig.Bool - (* Local Variables: diff --git a/src/plugins/from/mem_dependencies.ml b/src/plugins/from/mem_dependencies.ml deleted file mode 100644 index 085b92cb4435b81798bcd3f57b3e4537e33e22d3..0000000000000000000000000000000000000000 --- a/src/plugins/from/mem_dependencies.ml +++ /dev/null @@ -1,184 +0,0 @@ -(**************************************************************************) -(* *) -(* This file is part of Frama-C. *) -(* *) -(* Copyright (C) 2007-2016 *) -(* CEA (Commissariat à l'énergie atomique et aux énergies *) -(* alternatives) *) -(* *) -(* you can redistribute it and/or modify it under the terms of the GNU *) -(* Lesser General Public License as published by the Free Software *) -(* Foundation, version 2.1. *) -(* *) -(* It is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *) -(* GNU Lesser General Public License for more details. *) -(* *) -(* See the GNU Lesser General Public License version 2.1 *) -(* for more details (enclosed in the file licenses/LGPLv2.1). *) -(* *) -(**************************************************************************) - -open Cil_types -open Cil -open Cil_datatype -open Locations - -module Functionwise_Memdeps = - Kernel_function.Make_Table - (Zone) - (struct - let name = "Functionwise memdeps" - let size = 17 - let dependencies = [ Db.Value.self ] - end) - -class do_memdeps froms callwise_states_with_formals = -object(self) - inherit Cil.nopCilVisitor - val mutable inputs = Zone.bottom - - method result = inputs - - method join new_ = - inputs <- Zone.join new_ inputs; - - method! vstmt s = - if Db.Value.is_reachable - (Db.Value.get_stmt_state (Extlib.the self#current_stmt)) - then begin - match s.skind with - | UnspecifiedSequence seq -> - List.iter - (fun (stmt,_,_,_,_) -> - ignore (visitCilStmt (self:>cilVisitor) stmt)) - seq; - SkipChildren (* do not visit the additional lvals *) - | If (_cond, _th, _el, _) -> - DoChildren (* for _cond and for the statements in _th, _el *) - | Loop _ | Block _ -> - DoChildren (* for the statements *) - | Switch _ -> - DoChildren (* for the statements and the expression *) - | Instr _ -> - DoChildren (* for Calls *) - | Return _ | Throw _ -> - DoChildren - | Goto _ | Break _ | Continue _ -> - SkipChildren - | TryExcept _ | TryFinally _ | TryCatch _ -> assert false - end - else SkipChildren - - method stmt_froms = - let stmt = Extlib.the (self#current_stmt) in - Stmt.Hashtbl.find froms stmt - - method! vlval lv = - let deps,_loc = - !Db.Value.lval_to_loc_with_deps (* loc ignored *) - ~with_alarms:CilE.warn_none_mode - ~deps:Zone.bottom - (Kstmt (Extlib.the self#current_stmt)) - lv - in - let froms = self#stmt_froms in - let all_f = Function_Froms.Memory.find froms deps in - self#join all_f; - (* Format.printf "lval: all %a all_f %a@." - Zone.pretty all - Zone.pretty all_f; *) - SkipChildren - - method! vinst i = - let current_stmt = Extlib.the self#current_stmt in - if Db.Value.is_reachable (Db.Value.get_stmt_state current_stmt) - then begin - match i with - | Call (_lv_opt,_exp,_args,_) -> - let current_stmt = Extlib.the self#current_stmt in - let states_with_formals = - try Stmt.Hashtbl.find callwise_states_with_formals current_stmt - with Not_found -> assert false - in - let all_f = - List.fold_left - (fun acc (kf, state_with_formals) -> - if not (!Db.Value.use_spec_instead_of_definition kf) - then - let deps = - try - Functionwise_Memdeps.find kf - with Not_found -> - Format.printf "Mem dependencies not found for %a@." - Kernel_function.pretty kf; - assert false - in - let deps_f = Function_Froms.Memory.find - state_with_formals - deps - in - Zone.join acc deps_f - else begin - Format.printf "Assuming library function %a has no mem dependencies@." - Kernel_function.pretty kf; - acc - end) - Zone.bottom - states_with_formals - in - self#join all_f; - DoChildren - | _ -> DoChildren - end - else SkipChildren - - method! vexpr exp = - match exp.enode with - | AddrOf lv | StartOf lv -> - let deps,_loc = - !Db.Value.lval_to_loc_with_deps (* loc ignored *) - ~with_alarms:CilE.warn_none_mode - ~deps:Zone.bottom - (Kstmt (Extlib.the self#current_stmt)) - lv - in - let froms = self#stmt_froms in - let deps_f = Function_Froms.Memory.find froms deps in - self#join deps_f; - (* Format.printf "AddrOf: deps %a deps_f %a@." - Zone.pretty deps - Zone.pretty deps_f; *) - SkipChildren - | _ -> DoChildren - -end - -let compute_memdeps (stack, froms, callwise_states_with_formals) = - let kf = Stack.top stack in - let name = Kernel_function.get_name kf in - Format.printf "Computing mem dependencies for function %s@." name; - match kf.fundec with - Definition (f, _) -> begin - let computer = new do_memdeps froms callwise_states_with_formals in - ignore (visitCilFunction (computer:>cilVisitor) f); - let result = computer#result in - Format.printf "Mem dependencies of %s: %a@." - name - Zone.pretty result; - try - ignore (Functionwise_Memdeps.find kf); - assert false - with Not_found -> - Functionwise_Memdeps.add kf result - end - | Declaration _ -> - assert false - -let () = - Cmdline.run_after_configuring_stage - (fun () -> - if From_parameters.MemDeps.get () - then Db.From.Record_From_Callbacks.extend_once compute_memdeps) - diff --git a/src/plugins/from/path_dependencies.ml b/src/plugins/from/path_dependencies.ml deleted file mode 100644 index 2b4e129679d80cd48bac226555bd79ba2d043619..0000000000000000000000000000000000000000 --- a/src/plugins/from/path_dependencies.ml +++ /dev/null @@ -1,199 +0,0 @@ -(**************************************************************************) -(* *) -(* This file is part of Frama-C. *) -(* *) -(* Copyright (C) 2007-2016 *) -(* CEA (Commissariat à l'énergie atomique et aux énergies *) -(* alternatives) *) -(* *) -(* you can redistribute it and/or modify it under the terms of the GNU *) -(* Lesser General Public License as published by the Free Software *) -(* Foundation, version 2.1. *) -(* *) -(* It is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *) -(* GNU Lesser General Public License for more details. *) -(* *) -(* See the GNU Lesser General Public License version 2.1 *) -(* for more details (enclosed in the file licenses/LGPLv2.1). *) -(* *) -(**************************************************************************) - -open Cil_types -open Cil -open Cil_datatype -open Locations - -module Functionwise_Pathdeps = - Kernel_function.Make_Table - (Zone) - (struct - let name = "Functionwise pathdeps" - let size = 17 - let dependencies = [ Db.Value.self ] - end) - -class do_pathdeps froms callwise_states_with_formals = -object(self) - inherit Cil.nopCilVisitor - val mutable inputs = Zone.bottom - - method result = inputs - - method join new_ = - inputs <- Zone.join new_ inputs; - - method! vstmt s = - if Db.Value.is_reachable - (Db.Value.get_stmt_state (Extlib.the self#current_stmt)) - then begin - match s.skind with - | UnspecifiedSequence seq -> - List.iter - (fun (stmt,_,_,_,_) -> - ignore (visitCilStmt (self:>cilVisitor) stmt)) - seq; - SkipChildren (* do not visit the additional lvals *) - | If (_cond, _th, _el, _) -> - DoChildren (* for _cond and for the statements in _th, _el *) - | Loop _ | Block _ -> - DoChildren (* for the statements *) - | Switch _ -> - DoChildren (* for the statements and the expression *) - | Instr _ -> - DoChildren (* for Calls *) - | Return _ | Goto _ | Break _ | Continue _ | Throw _ -> - SkipChildren - | TryExcept _ | TryFinally _ | TryCatch _ -> assert false - end - else SkipChildren - - method stmt_froms = - let stmt = Extlib.the (self#current_stmt) in - Stmt.Hashtbl.find froms stmt - - method! vlval lv = - let state = Db.Value.get_stmt_state (Extlib.the self#current_stmt) in - let deps, z, _exact = - !Db.Value.lval_to_zone_with_deps_state - ~for_writing:false - ~deps:(Some Zone.bottom) - state - lv - in - let all = Zone.join z deps in - begin try - let froms = self#stmt_froms in - let all_f = Function_Froms.Memory.find froms all in - self#join all_f; - (* Format.printf "lval: all %a all_f %a@." - Zone.pretty all - Zone.pretty all_f; *) - with Not_found -> - () - end; - SkipChildren - - method! vinst i = - let current_stmt = Extlib.the self#current_stmt in - if Db.Value.is_reachable (Db.Value.get_stmt_state current_stmt) - then begin - match i with - | Call (_lv_opt,exp,_args,_) -> - let current_stmt = Extlib.the self#current_stmt in - - let deps_callees, _callees = - !Db.Value.expr_to_kernel_function - ~with_alarms:CilE.warn_none_mode - ~deps:(Some Zone.bottom) - (Kstmt current_stmt) exp - in - begin try - let states_with_formals = - Stmt.Hashtbl.find callwise_states_with_formals current_stmt - in - let all_f = - List.fold_left - (fun acc (kf, state_with_formals) -> - if not (!Db.Value.use_spec_instead_of_definition kf) - then - let deps = - try - Functionwise_Pathdeps.find kf - with Not_found -> - Format.printf "pathdeps dependencies not found for %a@." - Kernel_function.pretty kf; - assert false - in - let deps_f = Function_Froms.Memory.find - state_with_formals - deps - in - Zone.join acc deps_f - else begin - Format.printf "Assuming library function %a has no path dependencies@." - Kernel_function.pretty kf; - acc - end) - deps_callees - states_with_formals - in - self#join all_f; - with Not_found - (* from Stmt.Hashtbl.find callwise_states_with_formals current_stmt *) - -> () - end; - SkipChildren - | _ -> SkipChildren - end - else SkipChildren - - method! vexpr exp = - match exp.enode with - | AddrOf lv | StartOf lv -> - let deps,_loc = - !Db.Value.lval_to_loc_with_deps (* loc ignored *) - ~with_alarms:CilE.warn_none_mode - ~deps:Zone.bottom - (Kstmt (Extlib.the self#current_stmt)) - lv - in - let froms = self#stmt_froms in - let deps_f = Function_Froms.Memory.find froms deps in - self#join deps_f; - (* Format.printf "AddrOf: deps %a deps_f %a@." - Zone.pretty deps - Zone.pretty deps_f; *) - SkipChildren - | _ -> DoChildren - -end - -let compute_pathdeps (stack, froms, callwise_states_with_formals) = - let kf = Stack.top stack in - let name = Kernel_function.get_name kf in - Format.printf "Computing path dependencies for function %s@." name; - match kf.fundec with - Definition (f, _) -> begin - let computer = new do_pathdeps froms callwise_states_with_formals in - ignore (visitCilFunction (computer:>cilVisitor) f); - let result = computer#result in - Format.printf "Path dependencies of %s: %a@." - name - Zone.pretty result; - try - let old = Functionwise_Pathdeps.find kf in - Functionwise_Pathdeps.replace kf (Zone.join old result) - with Not_found -> - Functionwise_Pathdeps.add kf result - end - | Declaration _ -> - assert false - -let () = - Cmdline.run_after_configuring_stage - (fun () -> - if From_parameters.PathDeps.get () - then Db.From.Record_From_Callbacks.extend_once compute_pathdeps) - diff --git a/src/plugins/gui/gtk_helper.ml b/src/plugins/gui/gtk_helper.ml index 46815c9aff5f624b2b8f4c43fc924c5509f2be24..62018df1c4400cd8723612c02615f7439fdcec1e 100644 --- a/src/plugins/gui/gtk_helper.ml +++ b/src/plugins/gui/gtk_helper.ml @@ -155,7 +155,7 @@ module Configuration = struct let set_list key l = set key (ConfList l) let use_list = useConfigurationList let find_list = findConfigurationList - + class type ['a] selector = object method set : 'a -> unit diff --git a/src/plugins/gui/gtk_helper.mli b/src/plugins/gui/gtk_helper.mli index f623ecad42ec07eac56e14b05ed7a016f46e649e..230adf06e264467c00fcee890d6419e565b11664 100644 --- a/src/plugins/gui/gtk_helper.mli +++ b/src/plugins/gui/gtk_helper.mli @@ -120,11 +120,23 @@ module Configuration: sig val use_list: string -> (configData list -> unit) -> unit val set_list: string -> configData list -> unit - + (** Helpers to connect widgets to configuration values. + The configuration value is first pushed to the widget + using method [#set], or the [~default] value is used instead. + + Then, a callback is registered + into the widget via [#connect] such that subsequent + values from user's action are saved back into the + configuration file. *) + + (** Abstract interface to the connected widget. + This API is consistent with the [Widget] ones. *) class type ['a] selector = object method set : 'a -> unit + (** Set's widget value to given one. *) method connect : ('a -> unit) -> unit + (** Register a callback invoked by the widget each time the value is edited. *) end val config_int : key:string -> default:int -> int #selector -> unit @@ -132,6 +144,8 @@ module Configuration: sig val config_string : key:string -> default:string -> string #selector -> unit val config_values : key:string -> default:'a -> values:('a * string) list -> 'a #selector -> unit + (** The [values] field is used as a dictionnary of available values. + They are compared with [Pervasives.(=)]. *) end diff --git a/src/plugins/gui/wbox.ml b/src/plugins/gui/wbox.ml index 80fdb96fe3ff103ad31cab0aa28006b2b4c69e75..c2d28b9378d54527a82225310a201288df0bbf3f 100644 --- a/src/plugins/gui/wbox.ml +++ b/src/plugins/gui/wbox.ml @@ -22,29 +22,28 @@ open Widget -type expand = Stick | Field | SideBar | Panel +type expand = W | H | V | HV -let hdir = function Stick | SideBar -> false | Field | Panel -> true -let vdir = function Stick | Field -> false | SideBar | Panel -> true +let hdir = function W | V -> false | H | HV -> true +let vdir = function W | H -> false | V | HV -> true type box = | Void | ToEnd | Pack of expand * int * widget -let box ?(expand=Stick) ?(padding=0) ?widget () = +let box ?(expand=W) ?(padding=0) ?widget () = match widget with | None -> Void | Some w -> Pack(expand,padding,(w :> widget)) -let g ?(expand=Stick) ?(padding=0) g = Pack(expand,padding,new Wutil.gobj_widget g) -let w ?(expand=Stick) ?(padding=0) a = Pack(expand,padding,(a :> widget)) -let s ?(padding=0) a = Pack(Stick,padding,(a :> widget)) -let f ?(padding=0) a = Pack(Field,padding,(a :> widget)) -let b ?(padding=0) a = Pack(SideBar,padding,(a :> widget)) -let p ?(padding=0) a = Pack(Panel,padding,(a :> widget)) +let g ?(expand=W) ?(padding=0) g = Pack(expand,padding,new Wutil.gobj_widget g) +let w ?(expand=W) ?(padding=0) a = Pack(expand,padding,(a :> widget)) +let h ?(padding=0) a = Pack(H,padding,(a :> widget)) +let v ?(padding=0) a = Pack(V,padding,(a :> widget)) +let hv ?(padding=0) a = Pack(HV,padding,(a :> widget)) let label ?(fill=false) ?style ?align ?padding text = - w ~expand:(if fill then Field else Stick) ?padding + w ~expand:(if fill then H else W) ?padding (new Widget.label ~text ?align ?style ()) let rec populate dir (box : #GPack.box) from = function @@ -89,11 +88,11 @@ let panel ?top ?left ?right ?bottom center = let middle = match left , right with | None , None -> (center :> widget) - | Some a , Some b -> hbox [ s a ; p ~padding:2 center ; s b ] - | None , Some b -> hbox [ p ~padding:2 center ; s b ] - | Some a , None -> hbox [ s a ; p ~padding:2 center ] + | Some a , Some b -> hbox [ v a ; hv ~padding:2 center ; v b ] + | None , Some b -> hbox [ hv ~padding:2 center ; v b ] + | Some a , None -> hbox [ v a ; hv ~padding:2 center ] in match top , bottom with | None , None -> middle - | Some t , None -> vbox [ f t ; p middle ] - | None , Some t -> vbox [ p middle ; f t ] - | Some a , Some b -> vbox [ f a ; p middle ; f b ] + | Some t , None -> vbox [ h t ; hv middle ] + | None , Some t -> vbox [ hv middle ; w t ] + | Some a , Some b -> vbox [ h a ; hv middle ; h b ] diff --git a/src/plugins/gui/wbox.mli b/src/plugins/gui/wbox.mli index 325f2edf7d3c5a56c881438cce266f210413b9cb..357aada3dc636d4f8897b4011071141535156260 100644 --- a/src/plugins/gui/wbox.mli +++ b/src/plugins/gui/wbox.mli @@ -24,28 +24,61 @@ open Widget -type box +type box (** A packed widget with its layout directives *) -type expand = Stick | Field | SideBar | Panel +(** Expansion Modes. *) +type expand = + | W (** Stay at widget's size. *) + | H (** Expands horizontally. Typically, a text-field. *) + | V (** Expands vertically. Typically a side-bar. *) + | HV (** Expanfs in both directions. Typically, a text editor. *) +(** Generic packing. Without [~widget], a space is created instead. + + Defaults: [~expand:W ~padding:0]. *) val box : ?expand:expand -> ?padding:int -> ?widget:#widget -> unit -> box + +(** Helper to [box] for packing a [GObj.widget]. Same defaults than [box]. *) val g : ?expand:expand -> ?padding:int -> #GObj.widget -> box + +(** Helper to [box] for packing a [widget]. Same defaults than [box]. *) val w : ?expand:expand -> ?padding:int -> #widget -> box -val s : ?padding:int -> #widget -> box (** [w ~expand:Stick] *) -val f : ?padding:int -> #widget -> box (** [w ~expand:Field] *) -val b : ?padding:int -> #widget -> box (** [w ~expand:SideBar] *) -val p : ?padding:int -> #widget -> box (** [w ~expand:Panel] *) +val h : ?padding:int -> #widget -> box (** [w ~expand:H] *) +val v : ?padding:int -> #widget -> box (** [w ~expand:V] *) +val hv : ?padding:int -> #widget -> box (** [w ~expand:HV] *) + val label : ?fill:bool -> ?style:style -> ?align:align -> ?padding:int -> string -> box -(** Default [~fill:false ~style:`Label ~align:`Left ~padding:0] *) +(** Helper to pack a [Widget.label] widget using [box]. + + Default: [~fill:false ~style:`Label ~align:`Left ~padding:0] *) -val hbox : box list -> widget -val vbox : box list -> widget +(** [hbox] and [vbox] can be used to created nested boxes. + Typically, local scope opening can be used, typically: + [Wbox.(hbox [ w A ; w B ; w C ])], + where [A], [B] and [C] are widgets, or boxes. + Notice that nested boxes can {i generally} be packed using default + [W] mode, even if they contains horizontal or vertical widgets. *) + +val hbox : box list -> widget (** Pack a list of boxes horizontally. *) +val vbox : box list -> widget (** Pack a list of boxes vertically. *) + +(** Pack a list of widgets horizontally, with all widgets sticked to the same width *) val hgroup : widget list -> widget + +(** Pack a list of widgets vertically, with all widgets sticked to the same width *) val vgroup : widget list -> widget +(** The first list is packed to the left side of the toolbar. + The second list is packed to the right side of the toolbar. *) val toolbar : box list -> box list -> widget + +(** The first list is packed to the top of the sidebar. + The second list is packed to the bottom of the sidebar. *) val sidebar : box list -> box list -> widget +(** Helper to create a full featured window: + [~top] is layout as a toolbar, [left] and [right] as sidebars, and [bottom] as a status bar. + The main (non-optional) widget is centered with full expansion in both directions. *) val panel : ?top:widget -> ?left:widget -> ?right:widget -> ?bottom:widget -> #widget -> widget diff --git a/src/plugins/gui/wpalette.mli b/src/plugins/gui/wpalette.mli index 285a45c7fefc89a92bf69195982aede7775631bd..448f718823a051150ba55e6c9ae652679eee186c 100644 --- a/src/plugins/gui/wpalette.mli +++ b/src/plugins/gui/wpalette.mli @@ -22,13 +22,17 @@ open Widget +(** A side-bar palette of tools. *) + (** Configurable palette-tool. Each tool is a widget that consists of three components: - a selectable label with optional status icon - an optional action button (icon only) - - an optional configuration panel, wich is visible only when the tool is - selected. + - an optional configuration panel + + The action button is only displayed when associated with a callback. + Clicking the label toggles the configuration panel, if the tool is [active]. *) class tool : ?label:string -> @@ -37,7 +41,7 @@ class tool : unit -> object inherit widget - method tool : tool + method tool : tool (** Self cast *) method is_active : bool method on_active : (bool -> unit) -> unit @@ -53,7 +57,7 @@ class tool : ?tooltip:string -> ?callback:(unit -> unit) -> unit -> unit - (** Activate the {i action} button. + (** Makes the {i action} button visible. - If no icon is provided, the previous one is kept. - If no tooltip is provided, the previous one is kept. - If no callback is given, the button is deactivated. @@ -78,5 +82,5 @@ class panel : unit -> The panel ensures that only one tool is selected and toggled. *) method add_widget : GObj.widget -> unit - (** Append an arbitrary widget among widget tools. *) + (** Append an arbitrary widget among other widget tools. *) end diff --git a/src/plugins/loop_analysis/configure.ac b/src/plugins/loop_analysis/configure.ac index 9a8c75fd5feedf9385dd1f9115a78372d3e112ac..e2ead63245485323f640290a848a325932563535 100644 --- a/src/plugins/loop_analysis/configure.ac +++ b/src/plugins/loop_analysis/configure.ac @@ -20,9 +20,9 @@ # # ########################################################################## -######################################## -# E-ACSL as a standard Frama-C plug-in # -######################################## +############################################## +# LoopAnalysis as a standard Frama-C plug-in # +############################################## m4_define([plugin_file],Makefile.in) diff --git a/src/plugins/loop_analysis/loop_analysis.ml b/src/plugins/loop_analysis/loop_analysis.ml index d8ef46123ab7ae91a03e60587598e599fe3b6e87..0e5bc5577d0c05fd801d40d629a6db0c4a750963 100644 --- a/src/plugins/loop_analysis/loop_analysis.ml +++ b/src/plugins/loop_analysis/loop_analysis.ml @@ -42,6 +42,8 @@ module type BINARY_SEMILATTICE = sig val transfer_lval : lval -> (lval -> t option) -> t end +let pretty_int = Integer.pretty ~hexa:false + module Binary(* :BINARY_SEMILATTICE *) = struct (* Affine expression whose coefficients are the loop counters. The @@ -125,10 +127,10 @@ module Binary(* :BINARY_SEMILATTICE *) = struct let pretty fmt = function - | ConstantInt(i) -> Format.fprintf fmt "%a" (Integer.pretty ~hexa:false) i + | ConstantInt(i) -> Format.fprintf fmt "%a" pretty_int i | AffineRef(v,i) -> Format.fprintf fmt "ref<%a>+%a" Cil_datatype.Varinfo.pretty v - (Integer.pretty ~hexa:false) i + pretty_int i | Unknown -> Format.fprintf fmt "unknown" | ConstantVar(v) -> Format.fprintf fmt "%a" Cil_datatype.Varinfo.pretty v | Boolean _ -> Format.fprintf fmt "bools" @@ -290,7 +292,15 @@ module Store(* (B:sig *) else assert false ;; - + let pretty_increment fmt increment = + if Integer.(equal increment one) then Format.fprintf fmt "++" + else if Integer.(equal increment minus_one) then Format.fprintf fmt "--" + else if Integer.(gt increment zero) then + Format.fprintf fmt " += %a" (Integer.pretty ~hexa:false) increment + else if Integer.(lt increment zero) then + Format.fprintf fmt " -= %a" (Integer.pretty ~hexa:false) + (Integer.neg increment) + else assert false (* should never happen *) let do_instr instr (value,conds) = let open Cil_types in @@ -341,6 +351,7 @@ module Store(* (B:sig *) Printer.pp_stmt stmt let mu (f:(t -> t)) (value,conds,stmt) = + Cil.CurrentLoc.set (Cil_datatype.Stmt.loc stmt); let (result,final_conds,_) = f (init stmt) in (* Induction variables is a map from each Varinfo to its increment. *) @@ -363,7 +374,9 @@ module Store(* (B:sig *) let success = ref false in (* Now fill Loop_Max_Iteration for the kernel function. *) - let maybe_insert vi bound = + (* smaller = true => the test is "vi < bound"; + smaller = false => the test is "vi > bound". *) + let maybe_insert vi smaller bound offset binop = try let initial = match Varinfo.Map.find vi value with @@ -371,23 +384,73 @@ module Store(* (B:sig *) | _ -> raise Not_found (* TODO: handle comparison between pointers *) in let increment = Varinfo.Map.find vi induction_variables in + Options.debug "maybe_insert: function %a, found var %a, smaller: %b, \ + initial %a, increment %a, bound %a, offset %a, binop '%a'" + Kernel_function.pretty (Kernel_function.find_englobing_kf stmt) + Printer.pp_varinfo vi smaller pretty_int initial pretty_int increment + pretty_int bound pretty_int offset Printer.pp_binop binop; let bound = Integer.sub bound initial in - let value = (Integer.to_int (Integer.div bound increment)) in - if value >= 0 then - (success := true; - add_loop_bound stmt value) + let bound_offset = + if smaller then Integer.sub bound offset + else Integer.add bound offset + in + (* remainder is used for two purposes: + 1. in the case of '!=' loops, to warn if the termination condition + may be missed; + 2. in '<=' and '>=' loops, to adjust for the last iteration *) + let divident = Integer.sub bound offset in + let remainder = Integer.rem divident increment in + (* check if induction variable may miss termination condition *) + if binop = Cil_types.Ne && not Integer.(equal remainder zero) then + Options.warning ~current:true + "termination condition may not be reached (infinite loop?)@;\ + loop amounts to: for (%a = 0; %a != %a; %a%a)" + Printer.pp_varinfo vi + Printer.pp_varinfo vi pretty_int divident + Printer.pp_varinfo vi pretty_increment increment + else + let value = (Integer.to_int (Integer.c_div bound_offset increment)) in + let adjusted_value = + if (binop = Cil_types.Le && Integer.(equal remainder zero)) + || (not Integer.(equal remainder zero)) + then value + 1 + else value + in + if adjusted_value >= 0 then + begin + success := true; + add_loop_bound stmt adjusted_value + end + (* TODO: check if this is useful and does not cause false alarms + else + if Kernel.UnsignedOverflow.get() then + Options.warning ~current:true + "possibly infinite loop, or loop which relies on unsigned overflow" + *) with Not_found -> () in List.iter (function | B.Lt(_,B.AffineRef(vi,offset),B.ConstantInt bound) -> - maybe_insert vi (Integer.sub bound offset) + maybe_insert vi true bound offset Cil_types.Lt | B.Le(_,B.AffineRef(vi,offset),B.ConstantInt bound) -> - maybe_insert vi (Integer.sub (Integer.add bound Integer.one) offset) + maybe_insert vi true bound offset Cil_types.Le | B.Lt(_,B.ConstantInt bound,B.AffineRef(vi,offset)) -> - maybe_insert vi (Integer.sub offset bound) + maybe_insert vi false bound offset Cil_types.Lt | B.Le(_,B.ConstantInt bound,B.AffineRef(vi,offset)) -> - maybe_insert vi (Integer.sub offset (Integer.add bound Integer.one)) - | _ -> () (* TODO: also do Ne. *) + maybe_insert vi false bound offset Cil_types.Le + | B.Ne(B.ConstantInt bound,B.AffineRef(vi, offset)) + | B.Ne(B.AffineRef(vi, offset),B.ConstantInt bound) -> + begin + try + let increment = Varinfo.Map.find vi induction_variables in + assert (not (Integer.equal increment Integer.zero)); + if Integer.gt increment Integer.zero then + maybe_insert vi true bound offset Cil_types.Ne + else + maybe_insert vi false bound offset Cil_types.Ne + with Not_found -> () + end + | _ -> () ) final_conds; (* TODO: Use this table in a second pass, for the slevel analysis. *) @@ -441,7 +504,7 @@ end;; let analyze kf = - Options.debug "loop analyzis of function %a" Kernel_function.pretty kf; + Options.debug "loop analysis of function %a" Kernel_function.pretty kf; let module Specific = struct let kf = kf include Generic diff --git a/src/plugins/loop_analysis/slevel_analysis.ml b/src/plugins/loop_analysis/slevel_analysis.ml index 1c925316777a35cc5dd648823ad9ff970aeb66e6..607380fd0517fd502cfc3de272c51eb9864c34e9 100644 --- a/src/plugins/loop_analysis/slevel_analysis.ml +++ b/src/plugins/loop_analysis/slevel_analysis.ml @@ -48,7 +48,11 @@ module Functions_With_Unknown_Loop = let dependencies = [Ast.self] end) - +let max_slevel_encountered = ref Integer.zero;; +let update_max_slevel_encountered x = match x, !max_slevel_encountered with + | None, _ -> () + | Some a, b -> max_slevel_encountered := Integer.max a b +;; module Specific(KF:sig val kf: Kernel_function.t end) = struct @@ -92,6 +96,9 @@ module Specific(KF:sig val kf: Kernel_function.t end) = struct | None, _,_ | _, None,_ | _,_,None -> Needs_Merge_After_Loop.replace KF.kf true; Some Integer.one | Some max_iteration, Some in_loop, Some entry -> + (* Kernel.feedback "max_iteration %d in_loop %a entry %a" *) + (* max_iteration (Integer.pretty ~hexa:false) in_loop *) + (* (Integer.pretty ~hexa:false) entry; *) try let in_loop_i = Integer.to_int in_loop in match in_loop_i with @@ -109,16 +116,27 @@ module Specific(KF:sig val kf: Kernel_function.t end) = struct Integer.div (Integer.pred s) (Integer.pred in_loop) in let result = Integer.mul entry slevel_inside_loop in + (* Kernel.feedback "s %a slevel_inside_loop %a result %a" *) + (* (Integer.pretty ~hexa:false) s *) + (* (Integer.pretty ~hexa:false) slevel_inside_loop *) + (* (Integer.pretty ~hexa:false) result; *) if Integer.le result (Integer.of_int (Options.MaxIterations.get())) then Some result - else (Needs_Merge_After_Loop.replace KF.kf true; - Some (Integer.mul entry (Integer.mul in_loop - (Integer.of_int max_iteration)))) + else raise Exit with | Invalid_argument _ (* Possible exponent too big *) - | Failure _ -> (* Integer too big *) + | Failure _ (* Integer too big *) + | Exit -> (* Above MaxIterations. *) + update_max_slevel_encountered + (Some (Integer.mul entry (Integer.mul in_loop + (Integer.of_int max_iteration)))); Needs_Merge_After_Loop.replace KF.kf true; Some Integer.one - in (result,loop) + in + (* (match result with *) + (* | None -> () *) + (* | Some res -> *) + (* Kernel.feedback "final result %a" (Integer.pretty ~hexa:false) res); *) + (result,loop) let kf = KF.kf @@ -132,40 +150,39 @@ module Specific(KF:sig val kf: Kernel_function.t end) = struct end let analyze kf = + max_slevel_encountered := Integer.zero; Options.debug "slevel analysis of function %a" Kernel_function.pretty kf; let module Specific = Specific(struct let kf = kf end) in let module Node = Region_analysis_stmt.MakeNode(Specific) in let module Result = Region_analysis.Make(Node) in let after = Result.after in let dict = after (Some Integer.one, (Kernel_function.find_first_stmt kf)) in - let max_slevel = ref (Some Integer.zero) in - Node.Edge_Dict.iter dict (fun _ (x,_) -> - max_slevel := match x, !max_slevel with - | None, _ | _, None -> None - | Some a, Some b -> Some(Integer.max a b)); - (match !max_slevel with - | None -> Suggested_Slevel.replace kf Integer.zero - | Some x -> Suggested_Slevel.replace kf x); + Node.Edge_Dict.iter dict (fun _ (x,_) -> update_max_slevel_encountered x); + Suggested_Slevel.replace kf !max_slevel_encountered ;; +let cmp_kf_by_name kf1 kf2 = + String.compare (Kernel_function.get_name kf1) (Kernel_function.get_name kf2) let display_results() = let display_functions_without_bounds fmt = - Functions_With_Unknown_Loop.iter_sorted (fun kf _ -> + Functions_With_Unknown_Loop.iter_sorted ~cmp:cmp_kf_by_name (fun kf _ -> Format.fprintf fmt "%a@\n" Kernel_function.pretty kf) in if Functions_With_Unknown_Loop.length () > 0 then Options.result "Functions with loops whose bounds we could not find:@\n%t" display_functions_without_bounds; let display_merge_after_loop fmt = - Needs_Merge_After_Loop.iter_sorted (fun kf _ -> + Needs_Merge_After_Loop.iter_sorted ~cmp:cmp_kf_by_name (fun kf _ -> Format.fprintf fmt "-val-slevel-merge-after-loop %a \\@\n" Kernel_function.pretty kf) in let max_slevel_opt = Integer.of_int (Options.MaxSlevel.get ()) in let bounds_over_max_slevel = - Suggested_Slevel.fold_sorted (fun kf i acc -> - if Integer.gt i max_slevel_opt then (kf, i) :: acc else acc) - [] + List.rev ( + Suggested_Slevel.fold_sorted ~cmp:cmp_kf_by_name + (fun kf i acc -> + if Integer.gt i max_slevel_opt then (kf, i) :: acc else acc) + []) in let display_slevel_function fmt (kf, i) = Format.fprintf fmt "-slevel-function %a:%a" @@ -180,23 +197,31 @@ let display_results() = (Pretty_utils.pp_pair ~sep:" " Kernel_function.pretty (fun fmt i -> Format.fprintf fmt "(estimated bounds: %a)" (Integer.pretty ~hexa:false) i))) - (List.rev bounds_over_max_slevel); + bounds_over_max_slevel; let functions_with_bounds = - Suggested_Slevel.fold_sorted (fun kf i acc -> - (* Do not report -slevel-function for functions whose bounds - were not found or were larger than -max-slevel-loop *) - let slevel = - if Integer.le i max_slevel_opt && - not (Functions_With_Unknown_Loop.mem kf) then i - else Integer.zero - in - (kf, slevel) :: acc - ) [] + List.rev ( + Suggested_Slevel.fold_sorted ~cmp:cmp_kf_by_name + (fun kf i acc -> + (* Do not report -slevel-function for functions whose bounds + were not found or were larger than -max-slevel-loop *) + let slevel = + if Integer.le i max_slevel_opt && + not (Functions_With_Unknown_Loop.mem kf) then i + else Integer.zero + in + (kf, slevel) :: acc + ) []) + in + (* for a more usable output, in case the user does not want functions + with bounds equal to 0, sort them before the others *) + let functions_with_bounds_0, functions_with_bounds_pos = + List.partition (fun (_kf, i) -> Integer.equal i Integer.zero) + functions_with_bounds in let display_slevel fmt = Format.fprintf fmt "%a" (Pretty_utils.pp_list ~sep:" \\@\n" display_slevel_function) - (List.rev functions_with_bounds) + (functions_with_bounds_0 @ functions_with_bounds_pos) in Options.result "Add this to your command line:@\n%t%t @\n" display_merge_after_loop display_slevel; diff --git a/src/plugins/loop_analysis/tests/loop_analysis/mixed_output.i b/src/plugins/loop_analysis/tests/loop_analysis/mixed_output.i index cde3bf1d47d5a1a200daa3210561dce8af7ed443..b4c942efcdc63631ed36521012b425f065bcd2f2 100644 --- a/src/plugins/loop_analysis/tests/loop_analysis/mixed_output.i +++ b/src/plugins/loop_analysis/tests/loop_analysis/mixed_output.i @@ -29,11 +29,35 @@ void loop10() { for (i = 0; i < 10; i++); } +void loop10init() { + int i; + for (i = 3; i < 10; i++); +} + +void loop10initneg() { + int i; + for (i = 3; i > -10; i--); +} + + +void loop10initnegle() { + int i; + for (i = 3; i >= -10; i--); +} + + + + void loop_inf() { unsigned i; for (i = 0; i != 10; i--); } +void loop_inf2() { + unsigned i; + for (i = 0; i < 10; i--); +} + void loop108() { unsigned i, j; int s = 0; @@ -75,12 +99,207 @@ void loop_large() { } } +void m01() { + for (int i = 9; i < 30; i += 3); // 7 iterations +} + +void m02() { + for (int i = 9; i <= 30; i += 3); // 8 iterations +} + +void m03() { + for (int i = 10; i < 30; i += 3); // 7 iterations +} + +void m04() { + for (int i = 10; i <= 30; i += 3); // 7 iterations +} + +void m05() { + for (int i = -15; i < 5; i += 3); // 7 iterations +} + +void m06() { + for (int i = -15; i <= 5; i += 3); // 7 iterations +} + +void m07() { + for (int i = -15; i < 6; i += 3); // 7 iterations +} + +void m08() { + for (int i = -15; i <= 6; i += 3); // 8 iterations +} + +void m09() { + for (int i = 30; i > 9; i -= 3); // 7 iterations +} + +void m10() { + for (int i = 30; i >= 9; i -= 3); // 8 iterations +} + +void m11() { + for (int i = 30; i > 10; i -= 3); // 7 iterations +} + +void m12() { + for (int i = 30; i >= 10; i -= 3); // 7 iterations +} + +void m13() { + for (int i = 5; i > -15; i -= 3); // 7 iterations +} + +void m14() { + for (int i = 5; i >= -15; i -= 3); // 7 iterations +} + +void m15() { + for (int i = 6; i > -15; i -= 3); // 7 iterations +} + +void m16() { + for (int i = 6; i >= -15; i -= 3); // 8 iterations +} + +void m17() { + for (int i = 2; i <= 4; i += 3); // 1 iteration +} + +void m18() { + for (int i = 2; i < 4; i += 3); // 1 iteration +} + +void m19() { + for (int i = 4; i >= 2; i -= 3); // 1 iteration +} + +void m20() { + for (int i = 4; i > 2; i -= 3); // 1 iteration +} + +void m21() { + for (int i = 4; i <= 2; i += 3); // 0 iteration (but 1 for the function) +} + +void m22() { + for (int i = 4; i < 2; i += 3); // 0 iteration (but 1 for the function) +} + +void m23() { + for (int i = 2; i >= 4; i -= 3); // 0 iteration (but 1 for the function) +} + +void m24() { + for (int i = 2; i > 4; i -= 3); // 0 iteration (but 1 for the function) +} + +void m_01() { + for (int i = 9; 30 > i; i += 3); // 7 iterations +} + +void m_02() { + for (int i = 9; 30 >= i; i += 3); // 8 iterations +} + +void m_03() { + for (int i = 10; 30 > i; i += 3); // 7 iterations +} + +void m_04() { + for (int i = 10; 30 >= i; i += 3); // 7 iterations +} + +void m_05() { + for (int i = -15; 5 > i; i += 3); // 7 iterations +} + +void m_06() { + for (int i = -15; 5 >= i; i += 3); // 7 iterations +} + +void m_07() { + for (int i = -15; 6 > i; i += 3); // 7 iterations +} + +void m_08() { + for (int i = -15; 6 >= i; i += 3); // 8 iterations +} + +void m_09() { + for (int i = 30; 9 < i; i -= 3); // 7 iterations +} + +void m_10() { + for (int i = 30; 9 <= i; i -= 3); // 8 iterations +} + +void m_11() { + for (int i = 30; 10 < i; i -= 3); // 7 iterations +} + +void m_12() { + for (int i = 30; 10 <= i; i -= 3); // 7 iterations +} + +void m_13() { + for (int i = 5; i < -15; i -= 3); // 7 iterations +} + +void m_14() { + for (int i = 5; i <= -15; i -= 3); // 7 iterations +} + +void m_15() { + for (int i = 6; i < -15; i -= 3); // 7 iterations +} + +void m_16() { + for (int i = 6; i <= -15; i -= 3); // 8 iterations +} + +void m_17() { + for (int i = 2; 4 >= i; i += 3); // 1 iteration +} + +void m_18() { + for (int i = 2; 4 > i; i += 3); // 1 iteration +} + +void m_19() { + for (int i = 4; 2 <= i; i -= 3); // 1 iteration +} + +void m_20() { + for (int i = 4; 2 < i; i -= 3); // 1 iteration +} + +void m_21() { + for (int i = 4; 2 <= i; i += 3); // 0 iteration (but 1 for the function) +} + +void m_22() { + for (int i = 4; 2 < i; i += 3); // 0 iteration (but 1 for the function) +} + +void m_23() { + for (int i = 2; 4 <= i; i -= 3); // 0 iteration (but 1 for the function) +} + +void m_24() { + for (int i = 2; 4 < i; i -= 3); // 0 iteration (but 1 for the function) +} + int main() { straight_line(); with_if(); loop0(); loop1(); loop10(); + loop10init(); + loop10initneg(); + loop10initnegle(); loop_inf(); loop108(); loop_large(); diff --git a/src/plugins/loop_analysis/tests/loop_analysis/ne.i b/src/plugins/loop_analysis/tests/loop_analysis/ne.i new file mode 100644 index 0000000000000000000000000000000000000000..70a83b270b61d139dce825bf43e786d22a929cd6 --- /dev/null +++ b/src/plugins/loop_analysis/tests/loop_analysis/ne.i @@ -0,0 +1,132 @@ +void a1() { + for (int i = 3; i + 4 != 50; i++); // i IN [3..45] (43) +} + +void a2() { + for (int i = -100; i + 4 != 50; i++); // i IN [-100..45] (146) +} + +void a3() { + for (int i = 3; i - 4 != 50; i++); // i IN [3..53] (51) +} + +void a4() { + for (int i = -100; i - 4 != 50; i++); // i IN [-100..53] (154) +} + +void a5() { + for (int i = 100; i + 4 != 50; i--); // i IN [55..100] (46) +} + +void a6() { + for (int i = -100; i + 4 != -150; i--); // i IN [-145..-100] (46) +} + +void a7() { + for (int i = 100; i - 4 != 50; i--); // i IN [47..100] (54) +} + +void a8() { + for (int i = -100; i - 4 != -150; i--); // i IN [-153..-100] (54) +} + +void f01() { // OK (4) + for(int i = 0; i != 8; i+=2); +} + +void f02() { // infinite loop + for(int i = 1; i != 8; i+=2); +} + +void f03() { // OK (4) + for(int i = 8; i != 0; i-=2); +} + +void f04() { // infinite loop + for(int i = 9; i != 0; i-=2); +} + +void f05() { // OK (1) + for(int i = 10; i + 5 != 30; i+=15); +} + +void f06() { // infinite loop + for(int i = 7; i + 5 != 30; i+=15); +} + +void f07() { // OK (1) + for(int i = 30; i - 5 != 10; i-=15); +} + +void f08() { // infinite loop + for(int i = 20; i - 5 != 10; i-=15); +} + +void f09() { // OK (1) + for(int i = -10; i != -8; i+=2); +} + +void f10() { // infinite loop + for(int i = -11; i != -8; i+=2); +} + +void f11() { // OK (6) + for(int i = -8; i != -20; i-=2); +} + +void f12() { // infinite loop + for(int i = -9; i != -20; i-=2); +} + +void f13() { // OK (4) + for(int i = -100; i + 5 != -35; i+=15); +} + +void f14() { // infinite loop + for(int i = -70; i + 5 != -40; i+=15); +} + +void f15() { // OK (1) + for(int i = -20; i - 5 != -40; i-=15); +} + +void f16() { // infinite loop + for(int i = -20; i - 5 != -60; i-=15); +} + + +void no_iter01() { + for(int i = 0; i != 8; i-=2); +} + +void no_iter02() { + for(int i = 1; i != 8; i-=2); +} + +void no_iter03() { + for(int i = 8; i != 0; i+=2); +} + +void no_iter04() { + for(int i = 9; i != 0; i+=2); +} + +void no_iter05() { + for(int i = 10; i + 5 != 30; i-=15); +} + +void no_iter06() { + for(int i = 7; i + 5 != 30; i-=15); +} + +void no_iter07() { + for(int i = 30; i - 5 != 10; i+=15); +} + +void no_iter08() { + for(int i = 20; i - 5 != 10; i+=15); +} + +int main() { + return 0; +} diff --git a/src/plugins/loop_analysis/tests/loop_analysis/oracle/mixed_output.res.oracle b/src/plugins/loop_analysis/tests/loop_analysis/oracle/mixed_output.res.oracle index 2502c41804f9b208d2599ba34920664206702c20..02dd6b02d2ecc318e4fd76793dd9009314e46061 100644 --- a/src/plugins/loop_analysis/tests/loop_analysis/oracle/mixed_output.res.oracle +++ b/src/plugins/loop_analysis/tests/loop_analysis/oracle/mixed_output.res.oracle @@ -2,20 +2,73 @@ [kernel] Parsing tests/loop_analysis/mixed_output.i (no preprocessing) [loop] Functions with loops whose bounds we could not find: loop_inf + loop_inf2 [loop] Functions with loops whose estimated bounds were larger than -loop-max-slevel (we recommend setting their slevel to 0 to avoid wasting time): - loop108 (estimated bounds: 32000) - loop_large (estimated bounds: 4000000) + loop_large (estimated bounds: 4000000000000000000) [loop] Add this to your command line: - -val-slevel-merge-after-loop loop_inf \ -val-slevel-merge-after-loop loop108 \ + -val-slevel-merge-after-loop loop_inf \ + -val-slevel-merge-after-loop loop_inf2 \ -val-slevel-merge-after-loop loop_large \ - -slevel-function straight_line:1 \ - -slevel-function with_if:2 \ + -slevel-function loop_inf:0 \ + -slevel-function loop_inf2:0 \ + -slevel-function loop_large:0 \ -slevel-function loop0:1 \ -slevel-function loop1:1 \ -slevel-function loop10:10 \ - -slevel-function loop_inf:0 \ - -slevel-function loop108:0 \ - -slevel-function loop_large:0 \ - -slevel-function main:1 + -slevel-function loop108:400 \ + -slevel-function loop10init:7 \ + -slevel-function loop10initneg:13 \ + -slevel-function loop10initnegle:14 \ + -slevel-function m01:7 \ + -slevel-function m02:8 \ + -slevel-function m03:7 \ + -slevel-function m04:7 \ + -slevel-function m05:7 \ + -slevel-function m06:7 \ + -slevel-function m07:7 \ + -slevel-function m08:8 \ + -slevel-function m09:7 \ + -slevel-function m10:8 \ + -slevel-function m11:7 \ + -slevel-function m12:7 \ + -slevel-function m13:7 \ + -slevel-function m14:7 \ + -slevel-function m15:7 \ + -slevel-function m16:8 \ + -slevel-function m17:1 \ + -slevel-function m18:1 \ + -slevel-function m19:1 \ + -slevel-function m20:1 \ + -slevel-function m21:1 \ + -slevel-function m22:1 \ + -slevel-function m23:1 \ + -slevel-function m24:1 \ + -slevel-function m_01:7 \ + -slevel-function m_02:8 \ + -slevel-function m_03:7 \ + -slevel-function m_04:7 \ + -slevel-function m_05:7 \ + -slevel-function m_06:7 \ + -slevel-function m_07:7 \ + -slevel-function m_08:8 \ + -slevel-function m_09:7 \ + -slevel-function m_10:8 \ + -slevel-function m_11:7 \ + -slevel-function m_12:7 \ + -slevel-function m_13:7 \ + -slevel-function m_14:7 \ + -slevel-function m_15:7 \ + -slevel-function m_16:8 \ + -slevel-function m_17:1 \ + -slevel-function m_18:1 \ + -slevel-function m_19:1 \ + -slevel-function m_20:1 \ + -slevel-function m_21:1 \ + -slevel-function m_22:1 \ + -slevel-function m_23:1 \ + -slevel-function m_24:1 \ + -slevel-function main:1 \ + -slevel-function straight_line:1 \ + -slevel-function with_if:2 diff --git a/tests/idct/oracle_apron/idct.err.oracle b/src/plugins/loop_analysis/tests/loop_analysis/oracle/ne.err.oracle similarity index 100% rename from tests/idct/oracle_apron/idct.err.oracle rename to src/plugins/loop_analysis/tests/loop_analysis/oracle/ne.err.oracle diff --git a/src/plugins/loop_analysis/tests/loop_analysis/oracle/ne.res.oracle b/src/plugins/loop_analysis/tests/loop_analysis/oracle/ne.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..750e30795c0b144cc8e5d46254b8215d2b18e89c --- /dev/null +++ b/src/plugins/loop_analysis/tests/loop_analysis/oracle/ne.res.oracle @@ -0,0 +1,93 @@ +[kernel] Parsing FRAMAC_SHARE/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/loop_analysis/ne.i (no preprocessing) +tests/loop_analysis/ne.i:38:[loop] warning: termination condition may not be reached (infinite loop?) + loop amounts to: for (i = 0; i != 7; i += 2) +tests/loop_analysis/ne.i:46:[loop] warning: termination condition may not be reached (infinite loop?) + loop amounts to: for (i = 0; i != -9; i -= 2) +tests/loop_analysis/ne.i:54:[loop] warning: termination condition may not be reached (infinite loop?) + loop amounts to: for (i = 0; i != 18; i += 15) +tests/loop_analysis/ne.i:62:[loop] warning: termination condition may not be reached (infinite loop?) + loop amounts to: for (i = 0; i != -5; i -= 15) +tests/loop_analysis/ne.i:70:[loop] warning: termination condition may not be reached (infinite loop?) + loop amounts to: for (i = 0; i != 3; i += 2) +tests/loop_analysis/ne.i:78:[loop] warning: termination condition may not be reached (infinite loop?) + loop amounts to: for (i = 0; i != -11; i -= 2) +tests/loop_analysis/ne.i:86:[loop] warning: termination condition may not be reached (infinite loop?) + loop amounts to: for (i = 0; i != 25; i += 15) +tests/loop_analysis/ne.i:94:[loop] warning: termination condition may not be reached (infinite loop?) + loop amounts to: for (i = 0; i != -35; i -= 15) +tests/loop_analysis/ne.i:103:[loop] warning: termination condition may not be reached (infinite loop?) + loop amounts to: for (i = 0; i != 7; i -= 2) +tests/loop_analysis/ne.i:111:[loop] warning: termination condition may not be reached (infinite loop?) + loop amounts to: for (i = 0; i != -9; i += 2) +tests/loop_analysis/ne.i:119:[loop] warning: termination condition may not be reached (infinite loop?) + loop amounts to: for (i = 0; i != 18; i -= 15) +tests/loop_analysis/ne.i:127:[loop] warning: termination condition may not be reached (infinite loop?) + loop amounts to: for (i = 0; i != -5; i += 15) +[loop] Functions with loops whose bounds we could not find: + f02 + f04 + f06 + f08 + f10 + f12 + f14 + f16 + no_iter01 + no_iter02 + no_iter03 + no_iter04 + no_iter05 + no_iter06 + no_iter07 + no_iter08 +[loop] Add this to your command line: + -val-slevel-merge-after-loop f02 \ + -val-slevel-merge-after-loop f04 \ + -val-slevel-merge-after-loop f06 \ + -val-slevel-merge-after-loop f08 \ + -val-slevel-merge-after-loop f10 \ + -val-slevel-merge-after-loop f12 \ + -val-slevel-merge-after-loop f14 \ + -val-slevel-merge-after-loop f16 \ + -val-slevel-merge-after-loop no_iter01 \ + -val-slevel-merge-after-loop no_iter02 \ + -val-slevel-merge-after-loop no_iter03 \ + -val-slevel-merge-after-loop no_iter04 \ + -val-slevel-merge-after-loop no_iter05 \ + -val-slevel-merge-after-loop no_iter06 \ + -val-slevel-merge-after-loop no_iter07 \ + -val-slevel-merge-after-loop no_iter08 \ + -slevel-function f02:0 \ + -slevel-function f04:0 \ + -slevel-function f06:0 \ + -slevel-function f08:0 \ + -slevel-function f10:0 \ + -slevel-function f12:0 \ + -slevel-function f14:0 \ + -slevel-function f16:0 \ + -slevel-function no_iter01:0 \ + -slevel-function no_iter02:0 \ + -slevel-function no_iter03:0 \ + -slevel-function no_iter04:0 \ + -slevel-function no_iter05:0 \ + -slevel-function no_iter06:0 \ + -slevel-function no_iter07:0 \ + -slevel-function no_iter08:0 \ + -slevel-function a1:43 \ + -slevel-function a2:146 \ + -slevel-function a3:51 \ + -slevel-function a4:154 \ + -slevel-function a5:46 \ + -slevel-function a6:46 \ + -slevel-function a7:54 \ + -slevel-function a8:54 \ + -slevel-function f01:4 \ + -slevel-function f03:4 \ + -slevel-function f05:1 \ + -slevel-function f07:1 \ + -slevel-function f09:1 \ + -slevel-function f11:6 \ + -slevel-function f13:4 \ + -slevel-function f15:1 \ + -slevel-function main:1 diff --git a/src/plugins/loop_analysis/tests/loop_analysis/oracle/slevel_overflow.res.oracle b/src/plugins/loop_analysis/tests/loop_analysis/oracle/slevel_overflow.res.oracle index fbb5a6e390e84409472346547f628ead125f60d4..d7d4b7dd3f65f93d2e62ae25e226fa3162e45333 100644 --- a/src/plugins/loop_analysis/tests/loop_analysis/oracle/slevel_overflow.res.oracle +++ b/src/plugins/loop_analysis/tests/loop_analysis/oracle/slevel_overflow.res.oracle @@ -2,13 +2,11 @@ [kernel] Parsing tests/loop_analysis/slevel_overflow.c (with preprocessing) [loop] Functions with loops whose estimated bounds were larger than -loop-max-slevel (we recommend setting their slevel to 0 to avoid wasting time): - f1 (estimated bounds: 9444732965739290427392) - f2 (estimated bounds: 1152921504606846976) - f3 (estimated bounds: 1152921504606846976) + f2 (estimated bounds: 16777216000000000000000) [loop] Add this to your command line: -val-slevel-merge-after-loop f1 \ -val-slevel-merge-after-loop f2 \ -val-slevel-merge-after-loop f3 \ - -slevel-function f1:0 \ -slevel-function f2:0 \ - -slevel-function f3:0 + -slevel-function f1:1073741824000000 \ + -slevel-function f3:18014398509481984 diff --git a/src/plugins/loop_analysis/tests/loop_analysis/oracle/small_loop.0.res.oracle b/src/plugins/loop_analysis/tests/loop_analysis/oracle/small_loop.0.res.oracle index 2235b325396854207c5e4a5f81384b6ed9662a3d..d8b18beaf0bb149038b1844e0485c9611da268fa 100644 --- a/src/plugins/loop_analysis/tests/loop_analysis/oracle/small_loop.0.res.oracle +++ b/src/plugins/loop_analysis/tests/loop_analysis/oracle/small_loop.0.res.oracle @@ -1,8 +1,5 @@ [kernel] Parsing FRAMAC_SHARE/libc/__fc_builtin_for_normalization.i (no preprocessing) [kernel] Parsing tests/loop_analysis/small_loop.i (no preprocessing) -[loop] Functions with loops whose estimated bounds were larger than -loop-max-slevel - (we recommend setting their slevel to 0 to avoid wasting time): - main (estimated bounds: 40) [loop] Add this to your command line: -val-slevel-merge-after-loop main \ - -slevel-function main:0 + -slevel-function main:20 diff --git a/src/plugins/loop_analysis/tests/loop_analysis/oracle/small_loop.1.res.oracle b/src/plugins/loop_analysis/tests/loop_analysis/oracle/small_loop.1.res.oracle index 17b24e63ba590ba0d4d70e8e6bdc61fb0344da18..d8b18beaf0bb149038b1844e0485c9611da268fa 100644 --- a/src/plugins/loop_analysis/tests/loop_analysis/oracle/small_loop.1.res.oracle +++ b/src/plugins/loop_analysis/tests/loop_analysis/oracle/small_loop.1.res.oracle @@ -2,4 +2,4 @@ [kernel] Parsing tests/loop_analysis/small_loop.i (no preprocessing) [loop] Add this to your command line: -val-slevel-merge-after-loop main \ - -slevel-function main:40 + -slevel-function main:20 diff --git a/src/plugins/loop_analysis/tests/loop_analysis/oracle/test.res.oracle b/src/plugins/loop_analysis/tests/loop_analysis/oracle/test.res.oracle index 53baf8949ffded1fb115442825471d0ef84be25f..0b48e16f9f3b9ae6eed76f1f16bdde265a3e3257 100644 --- a/src/plugins/loop_analysis/tests/loop_analysis/oracle/test.res.oracle +++ b/src/plugins/loop_analysis/tests/loop_analysis/oracle/test.res.oracle @@ -4,19 +4,19 @@ g h6 [loop] Add this to your command line: - -val-slevel-merge-after-loop main \ -val-slevel-merge-after-loop g \ -val-slevel-merge-after-loop h3 \ -val-slevel-merge-after-loop h4 \ -val-slevel-merge-after-loop h5 \ -val-slevel-merge-after-loop h6 \ - -slevel-function main:40 \ - -slevel-function k:2 \ - -slevel-function f:8 \ + -val-slevel-merge-after-loop main \ -slevel-function g:0 \ + -slevel-function h6:0 \ + -slevel-function f:8 \ -slevel-function h:9 \ -slevel-function h2:9 \ - -slevel-function h3:80 \ - -slevel-function h4:40 \ - -slevel-function h5:40 \ - -slevel-function h6:0 + -slevel-function h3:40 \ + -slevel-function h4:20 \ + -slevel-function h5:20 \ + -slevel-function k:2 \ + -slevel-function main:20 diff --git a/src/plugins/metrics/metrics_cilast.ml b/src/plugins/metrics/metrics_cilast.ml index b0c557d8a41790b0f514a3bd7f44323f4524967c..c7615b46cf5f40938e86f032108239cf7e39e999 100644 --- a/src/plugins/metrics/metrics_cilast.ml +++ b/src/plugins/metrics/metrics_cilast.ml @@ -486,6 +486,112 @@ let compute_on_cilast () = else Metrics_parameters.result "%a" pp_with_funinfo cil_visitor end +(* Visitor for the recursive estimation of a stack size. + Its arguments are the function currently being visited and the current + callstack, as a list of kernel functions. + The callstack is used to detect recursive calls. + TODO: this computation is far from optimal; for instance, locals_size could + be cached for each function. Also, it does not consider calls via function + pointers. *) +class locals_size_visitor kf callstack = object + + val mutable locals_size_no_temps = Integer.zero + method get_locals_size_no_temps = locals_size_no_temps + + val mutable locals_size_temps = Integer.zero + method get_locals_size_temps = locals_size_temps + + val mutable max_size_calls_no_temps = Integer.zero + method get_max_size_calls_no_temps = max_size_calls_no_temps + + val mutable max_size_calls_temps = Integer.zero + method get_max_size_calls_temps = max_size_calls_temps + + inherit Visitor.frama_c_inplace + + method! vinst i = match i with + | Call (_, e, _, _) -> + begin + match e.enode with + | Lval ((Var vi), _) -> + begin + try + let kf' = Globals.Functions.find_by_name vi.vname in + Metrics_parameters.debug + "@[function %a:@;computing call to function %a@]" + Kernel_function.pretty kf Kernel_function.pretty kf'; + let new_cs = kf' :: callstack in + if List.mem kf' callstack then + Metrics_parameters.abort + "@[unsupported recursive call detected:@;%a@]" + (Pretty_utils.pp_list ~sep:"@ <-@ " Kernel_function.pretty) + (List.rev new_cs); + let new_vis = new locals_size_visitor kf' new_cs in + ignore (Visitor.visitFramacKf + (new_vis :> Visitor.frama_c_visitor) kf'); + let call_size_no_temps = + Integer.add new_vis#get_max_size_calls_no_temps + new_vis#get_locals_size_no_temps + in + let call_size_temps = + Integer.add new_vis#get_max_size_calls_temps + new_vis#get_locals_size_temps + in + max_size_calls_no_temps <- + Integer.max max_size_calls_no_temps call_size_no_temps; + max_size_calls_temps <- + Integer.max max_size_calls_temps call_size_temps + with Not_found -> + (* should not happen *) + Metrics_parameters.fatal ~current:true + "@[function not found:@;%s@]" vi.vname; + end; + () + | _ -> + Metrics_parameters.warning ~current:true + "@[ignoring unsupported function call in expression:@;%a@]" + Printer.pp_exp e + end; + Cil.DoChildren + | _ -> Cil.DoChildren + + method! vvdec vi = + if not vi.vglob && not vi.vghost && vi.vstorage = NoStorage then + begin + let size_exp = Cil.sizeOf ~loc:vi.vdecl vi.vtype in + match Cil.constFoldToInt size_exp with + | None -> Metrics_parameters.error + "@[in function %a,@;cannot compute sizeof %a (type %a)@]" + Kernel_function.pretty kf Printer.pp_varinfo vi + Printer.pp_typ vi.vtype + | Some size -> + Metrics_parameters.debug "@[function %a:@;sizeof(%a) = %a (%s)@]" + Kernel_function.pretty kf + Printer.pp_varinfo vi (Integer.pretty ~hexa:false) size + (if vi.vtemp then "temp" else "non-temp"); + if vi.vtemp then + locals_size_temps <- Integer.add locals_size_temps size + else + locals_size_no_temps <- Integer.add locals_size_no_temps size + end; + Cil.DoChildren + +end + +(* Requires a computed Cil AST *) +let compute_locals_size kf = + let vis = new locals_size_visitor kf [kf] in + ignore (Visitor.visitFramacKf (vis :> Visitor.frama_c_visitor) kf); + Metrics_parameters.result "@[%a\t%a\t%a\t%a\t%a@]" + Kernel_function.pretty kf + (Integer.pretty ~hexa:false) vis#get_locals_size_no_temps + (Integer.pretty ~hexa:false) + (Integer.add vis#get_locals_size_no_temps vis#get_locals_size_temps) + (Integer.pretty ~hexa:false) vis#get_max_size_calls_no_temps + (Integer.pretty ~hexa:false) + (Integer.add vis#get_max_size_calls_no_temps vis#get_max_size_calls_temps) +;; + (* Local Variables: compile-command: "make -C ../../.." diff --git a/src/plugins/metrics/metrics_cilast.mli b/src/plugins/metrics/metrics_cilast.mli index 36896c010add2b55d4f177d436b1bb10a8ae095d..42d019d835ed988e534a4198aab9ce2b4f38609e 100644 --- a/src/plugins/metrics/metrics_cilast.mli +++ b/src/plugins/metrics/metrics_cilast.mli @@ -55,3 +55,10 @@ val get_metrics : unit -> Metrics_base.BasicMetrics.t ;; (** Compute metrics on whole CIL AST *) val compute_on_cilast: unit -> unit ;; + +(** Compute and print the size (in bytes) of local variables on the CIL AST. + This is a rough approximation, neither guaranteed to be smaller or + larger than the actual value. Only automatic, non-ghost and + non-temporary variables present in the source are included. + This is useful to estimate the stack size of a function. *) +val compute_locals_size: Kernel_function.t -> unit;; diff --git a/src/plugins/metrics/metrics_parameters.ml b/src/plugins/metrics/metrics_parameters.ml index 7aa67b8b94f65bbd87493103238b857907e5da1a..191908fb06b99eab4067bddf20aee6953b481e55 100644 --- a/src/plugins/metrics/metrics_parameters.ml +++ b/src/plugins/metrics/metrics_parameters.ml @@ -93,6 +93,16 @@ module SyntacticallyReachable = end ) +module LocalsSize = + Kernel_function_set + (struct + let option_name = "-metrics-locals-size" + let arg_name = "f1,...,fn" + let help = "prints the size of local variables for functions f1,...,fn, \ + and for the functions called within them \ + (does not support recursive calls)" + end) + (* Local Variables: compile-command: "make -C ../../.." diff --git a/src/plugins/metrics/metrics_parameters.mli b/src/plugins/metrics/metrics_parameters.mli index aa5c0f87e6222037187dd8324800de08896728c4..fbb029f3b28cdbc4930f89e398db93acaf1bed90 100644 --- a/src/plugins/metrics/metrics_parameters.mli +++ b/src/plugins/metrics/metrics_parameters.mli @@ -46,6 +46,10 @@ module OutputFile: Parameter_sig.String module SyntacticallyReachable: Parameter_sig.Kernel_function_set (** Set of functions for which we compute the functions they may call *) +module LocalsSize: Parameter_sig.Kernel_function_set +(** Compute and print the total size of local variables for all functions in + this set (option -metrics-locals-size) *) + module Libc: Parameter_sig.Bool (* diff --git a/src/plugins/metrics/register.ml b/src/plugins/metrics/register.ml index ab5d870dc8882788fc8e4e3d2c2c651ac03b3957..fa94231fddbf38b29e609f85fa2cd1d42f656182 100644 --- a/src/plugins/metrics/register.ml +++ b/src/plugins/metrics/register.ml @@ -59,6 +59,14 @@ let value () = let main () = if Enabled.get () then Enabled.output syntactic; if ValueCoverage.get () then ValueCoverage.output value; + if LocalsSize.is_set () then begin + Ast.compute (); + Metrics_parameters.result "function\tlocals_size_no_temps\t\ + locals_size_with_temps\t\ + max_call_size_no_temps\t\ + max_call_size_with_temps"; + LocalsSize.iter (fun kf -> Metrics_cilast.compute_locals_size kf) + end ;; (* Register main entry points *) diff --git a/src/plugins/nonterm/Makefile.in b/src/plugins/nonterm/Makefile.in index e9c57e1e75a2c49e8145f39ed1ed11d72bde42b8..2ed1f04b1fbc15e6ece9cb260a2e4163d6c3bd96 100644 --- a/src/plugins/nonterm/Makefile.in +++ b/src/plugins/nonterm/Makefile.in @@ -23,7 +23,7 @@ # Do not use ?= to initialize both below variables # (fixed efficiency issue, see GNU Make manual, Section 8.11) ifndef FRAMAC_SHARE -FRAMAC_SHARE :=$(shell frama-c-config -print-path) +FRAMAC_SHARE :=$(shell frama-c-config -print-share-path) endif ifndef FRAMAC_LIBDIR FRAMAC_LIBDIR :=$(shell frama-c-config -print-libpath) diff --git a/src/plugins/nonterm/tests/nonterm/oracle/builtin_termination.res.oracle b/src/plugins/nonterm/tests/nonterm/oracle/builtin_termination.res.oracle index eaf3a93452bd7020174528c67070d235b80ac157..fea017d9325103971183e84d7613b062bfa3df52 100644 --- a/src/plugins/nonterm/tests/nonterm/oracle/builtin_termination.res.oracle +++ b/src/plugins/nonterm/tests/nonterm/oracle/builtin_termination.res.oracle @@ -8,8 +8,7 @@ [value] Call to builtin bzero(({{ (unsigned char *)&str1 }},{4})) tests/nonterm/builtin_termination.c:15:[value] Call to builtin Frama_C_strlen(({{ &str1[0] }})) tests/nonterm/builtin_termination.c:16:[value] Call to builtin Frama_C_strlen(({{ &str2[0] }})) -tests/nonterm/builtin_termination.c:16:[value] warning: built-in Frama_C_strlen: tests/nonterm/builtin_termination.c:16: - reading indeterminate data +tests/nonterm/builtin_termination.c:16:[value] warning: builtin Frama_C_strlen: reading indeterminate data [value] Recording results for main [value] done for function main [value] ====== VALUES COMPUTED ====== diff --git a/src/plugins/nonterm/tests/nonterm/oracle/output_to_file.txt b/src/plugins/nonterm/tests/nonterm/oracle/output_to_file.txt index e203375a6d4051516c696d0fe94e067cad8858d8..abf71bf9ca111d4b547b9d3aab15c68816adbaf5 100644 --- a/src/plugins/nonterm/tests/nonterm/oracle/output_to_file.txt +++ b/src/plugins/nonterm/tests/nonterm/oracle/output_to_file.txt @@ -1,2 +1,4 @@ -warning: unreachable return statement for function: loop -warning: unreachable return statement for function: main +tests/nonterm/output_to_file.i:7:[nonterm] unreachable return statement for function loop +tests/nonterm/output_to_file.i:12:[nonterm] unreachable return statement for function main +tests/nonterm/output_to_file.i:11:[nonterm] non-terminating instruction in function main: +loop(); diff --git a/src/plugins/nonterm/tests/nonterm/output_to_file.i b/src/plugins/nonterm/tests/nonterm/output_to_file.i index 0f05cba3c4e6dff1074a4070b78f42fdaacda35c..94d49796629d655c02e8a4dfb35b7196b0dde0c4 100644 --- a/src/plugins/nonterm/tests/nonterm/output_to_file.i +++ b/src/plugins/nonterm/tests/nonterm/output_to_file.i @@ -1,6 +1,6 @@ /* run.config LOG: output_to_file.txt - STDOPT: #"-nonterm-log @PTEST_RESULT@/output_to_file.txt" + STDOPT: #"-nonterm-log :@PTEST_RESULT@/output_to_file.txt" */ void loop() { diff --git a/src/plugins/obfuscator/Makefile.in b/src/plugins/obfuscator/Makefile.in index 03e57cb98df4101df4ffd681d04946e827ef9592..d409adc3d921eb93d52f5e0bf290278eb748fd98 100644 --- a/src/plugins/obfuscator/Makefile.in +++ b/src/plugins/obfuscator/Makefile.in @@ -21,7 +21,7 @@ ########################################################################## ifndef FRAMAC_SHARE -FRAMAC_SHARE :=$(shell frama-c-config -print-path) +FRAMAC_SHARE :=$(shell frama-c-config -print-share-path) endif ifndef FRAMAC_LIBDIR FRAMAC_LIBDIR :=$(shell frama-c-config -print-libpath) diff --git a/src/plugins/report/Makefile.in b/src/plugins/report/Makefile.in index 7f4928fbaef4fdd3a6ff28600bd3b6738c1baba0..8cd9b1a7def551d614ada59ce6cd491c9461d3ee 100644 --- a/src/plugins/report/Makefile.in +++ b/src/plugins/report/Makefile.in @@ -23,7 +23,7 @@ # Do not use ?= to initialize both below variables # (fixed efficiency issue, see GNU Make manual, Section 8.11) ifndef FRAMAC_SHARE -FRAMAC_SHARE :=$(shell frama-c-config -print-path) +FRAMAC_SHARE :=$(shell frama-c-config -print-share-path) endif ifndef FRAMAC_LIBDIR FRAMAC_LIBDIR :=$(shell frama-c-config -print-libpath) diff --git a/src/plugins/rte/generator.ml b/src/plugins/rte/generator.ml index e87a88f52a69f4b7d8679c9c932399b0d6e5ce5b..00b5c408d2d517d23181fd87a6d1eabf27e307d1 100644 --- a/src/plugins/rte/generator.ml +++ b/src/plugins/rte/generator.ml @@ -67,6 +67,14 @@ module Mem_access = let additional_parameters = [ Kernel.SafeArrays.parameter ] end) +module Pointer_call = + Make + (struct + let name = "pointer_call" + let parameter = Options.DoPointerCall.parameter + let additional_parameters = [] + end) + module Div_mod = Make (struct @@ -136,6 +144,7 @@ let proxy = "RTE" State_builder.Proxy.Backward [ Mem_access.self; + Pointer_call.self; Div_mod.self; Shift.self; Signed_overflow.self; @@ -154,6 +163,7 @@ let shift_status = Shift.triple let signed_overflow_status = Signed_overflow.triple let signed_downcast_status = Signed_downcast.triple let mem_access_status = Mem_access.triple +let pointer_call_status = Pointer_call.triple let float_to_int_status = Float_to_int.triple let unsigned_overflow_status = Unsigned_overflow.triple let unsigned_downcast_status = Unsigned_downcast.triple @@ -161,6 +171,7 @@ let unsigned_downcast_status = Unsigned_downcast.triple let all_status = [ precond_status; mem_access_status; + pointer_call_status; div_mod_status; shift_status; signed_overflow_status; diff --git a/src/plugins/rte/generator.mli b/src/plugins/rte/generator.mli index 7cf256b4e6f0fbc869300081aa4b002babb84575..21eeb6fbb3fdafb7dcd068a23e47442769976107 100644 --- a/src/plugins/rte/generator.mli +++ b/src/plugins/rte/generator.mli @@ -26,6 +26,7 @@ module type S = sig end module Mem_access: S +module Pointer_call: S module Div_mod: S module Shift: S module Signed_overflow: S @@ -41,6 +42,7 @@ val precond_status: Db.RteGen.status_accessor val shift_status: Db.RteGen.status_accessor val div_mod_status: Db.RteGen.status_accessor val mem_access_status: Db.RteGen.status_accessor +val pointer_call_status: Db.RteGen.status_accessor val float_to_int_status: Db.RteGen.status_accessor val signed_overflow_status: Db.RteGen.status_accessor val signed_downcast_status: Db.RteGen.status_accessor diff --git a/src/plugins/rte/options.ml b/src/plugins/rte/options.ml index 8aeda5fc028c90774107cf8a826f8fe75c585306..db2d4a6acca0801f6377d343c0ce3542d79c3c8e 100644 --- a/src/plugins/rte/options.ml +++ b/src/plugins/rte/options.ml @@ -72,6 +72,14 @@ module DoMemAccess = array access" end) +(* annotates calls through pointers *) +module DoPointerCall = + True + (struct + let option_name = "-rte-pointer-call" + let help = "when on, annotate functions calls through pointers" + end) + (* if DoAll is true: all other options become true, except for UnsignedOverflow, UnsignedDownCast and "PreConds" <=> only "true" runtime error and @@ -89,6 +97,7 @@ let () = DoMemAccess.set b; DoDivMod.set b; DoFloatToInt.set b; + DoPointerCall.set b; Kernel.SignedOverflow.set b; Kernel.SignedDowncast.set b) diff --git a/src/plugins/rte/options.mli b/src/plugins/rte/options.mli index 142d321e70c9f195160e01150aef37214e0ea262..cb6b531284dc923a79f6bbfb73ea4f148b583d82 100644 --- a/src/plugins/rte/options.mli +++ b/src/plugins/rte/options.mli @@ -29,6 +29,7 @@ module DoShift : Parameter_sig.Bool module DoDivMod : Parameter_sig.Bool module DoFloatToInt : Parameter_sig.Bool module DoMemAccess : Parameter_sig.Bool +module DoPointerCall : Parameter_sig.Bool module DoCalledPrecond : Parameter_sig.Bool module Trivial : Parameter_sig.Bool diff --git a/src/plugins/rte/register.ml b/src/plugins/rte/register.ml index 8df0e9aeb4bb1ed1cdf27a27cf6039cd029be410..4a4af1926c0da3fbb307ef98e6771441e6479296 100644 --- a/src/plugins/rte/register.ml +++ b/src/plugins/rte/register.ml @@ -55,6 +55,8 @@ let () = nojournal_register Db.RteGen.get_signed_downCast_status Generator.signed_downcast_status; nojournal_register Db.RteGen.get_memAccess_status Generator.mem_access_status; + nojournal_register + Db.RteGen.get_pointerCall_status Generator.pointer_call_status; nojournal_register Db.RteGen.get_unsignedOv_status Generator.unsigned_overflow_status; nojournal_register diff --git a/src/plugins/rte/rte.ml b/src/plugins/rte/rte.ml index a429a97b99ed14c90ce5295cd1c1bc3c37aafec5..6261cfd879faa0b3a40cf9ad05d7b466ae4d38f0 100644 --- a/src/plugins/rte/rte.ml +++ b/src/plugins/rte/rte.ml @@ -68,8 +68,7 @@ let valid_index ~remove_trivial ~on_alarm e size = (* returns the assertion associated with an lvalue: returns non empty assertions only on pointer dereferencing and array access. - Dereferencing a function pointer generates no assertion (but a warning - is emitted). The validity assertions are emitted using [valid] if + The validity assertions are emitted using [valid] if [~read_only] is false, or with [valid_read] otherwise *) let lval_assertion ~read_only ~remove_trivial ~on_alarm lv = (* For accesses to known arrays we generate an assertions that constrains @@ -100,18 +99,9 @@ let lval_assertion ~read_only ~remove_trivial ~on_alarm lv = in match lv with | Var vi , off -> check_array_access false off vi.vtype false - | Mem _exp as lh, off -> - let dft = - if Cil.isFunctionType (Cil.typeOfLval lv) then begin - Options.warn - "no predicate available yet to check validity of function pointer \ - dereferencing %a" - Printer.pp_lval lv; - false - end else - true - in - check_array_access dft off (Cil.typeOfLhost lh) false + | (Mem _ as lh), off -> + if not (Cil.isFunctionType (Cil.typeOfLval lv)) then + check_array_access true off (Cil.typeOfLhost lh) false (* assertion for unary minus signed overflow *) let uminus_assertion ~remove_trivial ~on_alarm exp = @@ -443,6 +433,10 @@ let float_to_int_assertion ~remove_trivial ~on_alarm (ty, exp) = ) | _ -> () +(* assertion for a pointer call [( *e )(...)]. *) +let pointer_call ~remove_trivial:_ ~on_alarm e = + on_alarm ?status:None (Alarms.Function_pointer e) + (* Local Variables: compile-command: "make -C ../../.." diff --git a/src/plugins/rte/rte.mli b/src/plugins/rte/rte.mli index 414abd9b1ed7030b4a2b74eecabdaa40a01a7139..fae9fdba0c2e3b3c0328d0c1e4e134251d30727e 100644 --- a/src/plugins/rte/rte.mli +++ b/src/plugins/rte/rte.mli @@ -43,6 +43,7 @@ val uminus_assertion: exp alarm_gen val signed_downcast_assertion: (typ * exp) alarm_gen val unsigned_downcast_assertion: (typ * exp) alarm_gen val float_to_int_assertion: (typ * exp) alarm_gen +val pointer_call: exp alarm_gen (* Local Variables: diff --git a/src/plugins/rte/visit.ml b/src/plugins/rte/visit.ml index 8e5472e30d4481fff8a81fdff4a0000ebb16ca81..3a73685e3a04af159d8fdfef2ae43c621df39ee9 100644 --- a/src/plugins/rte/visit.ml +++ b/src/plugins/rte/visit.ml @@ -205,6 +205,7 @@ type to_annotate = { signed_downcast: bool; unsigned_downcast: bool; float_to_int: bool; + pointer_call: bool; precond: bool; } @@ -217,6 +218,7 @@ let annotate_nothing = { signed_downcast = false; unsigned_downcast = false; float_to_int = false; + pointer_call = false; precond = false; } @@ -229,6 +231,7 @@ let annotate_all = { signed_downcast = true; unsigned_downcast = true; float_to_int = true; + pointer_call = true; precond = true; } @@ -243,6 +246,7 @@ let annotate_from_options () = { signed_downcast = Kernel.SignedDowncast.get (); unsigned_downcast = Kernel.UnsignedDowncast.get (); float_to_int = Options.DoFloatToInt.get (); + pointer_call = Options.DoPointerCall.get (); precond = Options.DoCalledPrecond.get (); } @@ -285,6 +289,9 @@ class annot_visitor kf to_annot on_alarm = object (self) method private do_float_to_int () = to_annot.float_to_int && not (Generator.Float_to_int.is_computed kf) + method private do_pointer_call () = + to_annot.pointer_call && not (Generator.Pointer_call.is_computed kf) + method private do_called_precond () = to_annot.precond && not (Generator.Called_precond.is_computed kf) @@ -640,8 +647,9 @@ class annot_visitor kf to_annot on_alarm = object (self) Options.debug "lval %a: validity of potential mem access checked\n" Printer.pp_lval ret; self#generate_assertion - (Rte.lval_assertion ~read_only:Alarms.For_writing) ret); - if self#do_called_precond () then + (Rte.lval_assertion ~read_only:Alarms.For_writing) ret + ); + if self#do_called_precond () then begin match funcexp.enode with | Lval (Var vinfo,NoOffset) -> let kf = Globals.Functions.get vinfo in @@ -651,7 +659,6 @@ class annot_visitor kf to_annot on_alarm = object (self) Options.warn "(%a) function call with # actuals <> # formals: not treated" Printer.pp_stmt (Extlib.the (self#current_stmt)); - Cil.DoChildren end else let formals_actuals_terms = List.rev_map2 @@ -664,10 +671,8 @@ class annot_visitor kf to_annot on_alarm = object (self) kf formals_actuals_terms ret_opt (Extlib.the (self#current_stmt)) with - | None -> Cil.DoChildren - | Some contract_stmt -> - self#queue_stmt_spec contract_stmt; - Cil.DoChildren + | None -> () + | Some contract_stmt -> self#queue_stmt_spec contract_stmt in (match ret_opt with | None -> do_no_implicit_cast () @@ -678,16 +683,22 @@ class annot_visitor kf to_annot on_alarm = object (self) Options.warn "(%a) function call with intermediate cast: not treated" Printer.pp_stmt (Extlib.the (self#current_stmt)); - Cil.DoChildren end else do_no_implicit_cast ()) | Lval (Mem _,NoOffset) -> Options.warn "(%a) function called through a pointer: not treated" - Printer.pp_stmt (Extlib.the (self#current_stmt)); - Cil.DoChildren + Cil_printer.pp_stmt (Extlib.the (self#current_stmt)); | _ -> assert false - else - Cil.DoChildren + end; + (* Alarm if the call is through a pointer. Done in DoChildrenPost to get a + more pleasant ordering of annotations. *) + let do_ptr () = + if self#do_pointer_call () then + match funcexp.enode with + | Lval (Mem e, _) -> self#generate_assertion Rte.pointer_call e + | _ -> () + in + Cil.DoChildrenPost (fun res -> do_ptr (); res) | _ -> Cil.DoChildren method! vexpr exp = @@ -851,6 +862,7 @@ let annotate_kf_aux to_annot kf = (* Strict version of ||, because [comp] has side-effects *) let (|||) a b = a || b in if comp Generator.mem_access_status to_annot.mem_access ||| + comp Generator.pointer_call_status to_annot.pointer_call ||| comp Generator.div_mod_status to_annot.div_mod ||| comp Generator.shift_status to_annot.shift ||| comp Generator.signed_overflow_status to_annot.signed_ov ||| diff --git a/src/plugins/security_slicing/Makefile.in b/src/plugins/security_slicing/Makefile.in index 9f639abde7e50840e1bd940b98b380e3ea06c1ff..bf71b838cead49896716a6ef2ab0a2433dcedc2c 100644 --- a/src/plugins/security_slicing/Makefile.in +++ b/src/plugins/security_slicing/Makefile.in @@ -23,7 +23,7 @@ # Do not use ?= to initialize both below variables # (fixed efficiency issue, see GNU Make manual, Section 8.11) ifndef FRAMAC_SHARE -FRAMAC_SHARE :=$(shell frama-c-config -print-path) +FRAMAC_SHARE :=$(shell frama-c-config -print-share-path) endif ifndef FRAMAC_LIBDIR FRAMAC_LIBDIR :=$(shell frama-c-config -print-libpath) diff --git a/src/plugins/value/domains/cvalue/builtins.ml b/src/plugins/value/domains/cvalue/builtins.ml index c9d1a26daacedc8474f8d9fe78c323b0fe211dc7..608866991a01b950e0812eb69334b33ce7bb6a9f 100644 --- a/src/plugins/value/domains/cvalue/builtins.ml +++ b/src/plugins/value/domains/cvalue/builtins.ml @@ -211,7 +211,9 @@ let dump_args name initial_state actuals = let typ = Cil.typeOf actual in V_Offsetmap.pretty_generic ~typ () fmt offsm; Eval_op.pretty_stitched_offsetmap fmt typ offsm - end else + end else if card = 0 then (* the value as a Cvalue.V is misleading *) + Format.fprintf fmt "%s" (Unicode.emptyset_string ()) + else V.pretty fmt v; Format.fprintf fmt "@]"; in diff --git a/src/plugins/value/domains/cvalue/builtins_nonfree_string.ml b/src/plugins/value/domains/cvalue/builtins_nonfree_string.ml index b1027bb90dd5e68921f85c7e98efa274759535f7..ac10d7501f9311cce4d217e1fcb0e5076ad72d34 100644 --- a/src/plugins/value/domains/cvalue/builtins_nonfree_string.ml +++ b/src/plugins/value/domains/cvalue/builtins_nonfree_string.ml @@ -192,6 +192,12 @@ end module SL = Str_lattice module Bytecharmap = Offsetmap.Make_bitwise(Str_lattice) +(* Boolean-like flag to indicate if the built-in is imprecise for the given + arguments. A future version may remove this restriction. *) +type imprecise_builtin = + | Imprecise + | Not_imprecise + (* converts bits to bytes, emitting a warning in case of inexact division. *) let bytes_of_bits ?inexact i = if I.(i % eight <> zero) && @@ -411,6 +417,14 @@ module Problem = struct | Base of Base.t | Misc of string + (* [compare] is based on [Pervasives.compare], but for better clarity during + pretty-printing, we ensure [Misc] is smaller than all other elements *) + let compare p1 p2 = match p1, p2 with + | Misc s1, Misc s2 -> String.compare s1 s2 + | Misc _, _ -> -1 + | _, Misc _ -> 1 + | _, _ -> Pervasives.compare p1 p2 + let pretty fmt = function | Init (sure) -> Format.fprintf fmt "%suninitialized values" @@ -428,14 +442,50 @@ module Problem = struct | Misc msg -> Format.fprintf fmt "%s" msg - (* [weaken] turns a "definitive problem" into a "maybe problem" *) - let weaken = function - | Init (_sure) -> Init(false) - | Esc (_sure) -> Esc(false) - | Indet (_sure) -> Indet(false) - | p -> p end +module Problems = struct + include Set.Make(struct + type t = Problem.t + (* compare is based on Pervasives.compare, but for better clarity during + pretty-printing, we ensure [Misc] is smaller than all other elements *) + let compare = Problem.compare + end) + + (* [weaken] turns "definitive problems" into "maybe problems" *) + let weaken s = + fold (fun p acc -> + if p = Problem.Init true then add (Problem.Init false) acc + else if p = Problem.Esc true then add (Problem.Esc false) acc + else if p = Problem.Indet true then add (Problem.Indet false) acc + else acc + ) empty s + + let pretty fmt s = + (* normalize to avoid printing twice for definite/possible problems *) + let normalize s = + let s = if mem (Problem.Init false) s && mem (Problem.Init true) s then + remove (Problem.Init true) s + else s + in + let s = if mem (Problem.Esc false) s && mem (Problem.Esc true) s then + remove (Problem.Esc true) s + else s + in + let s = if mem (Problem.Indet false) s && mem (Problem.Indet true) s then + remove (Problem.Indet true) s + else s + in + s + in + Format.fprintf fmt "@[<v>%a@]" + (Pretty_utils.pp_list ~pre:"" ~suf:"" ~sep:"@," Problem.pretty) + (elements (normalize s)) + +end + + + module BaseMap = Map.Make(struct type t = Base.t let compare b1 b2 = Base.compare b1 b2 @@ -447,15 +497,6 @@ let basemap_of_locmap (m : Cvalue.V.M.t) : Ival.t BaseMap.t = BaseMap.add base offs acc ) m BaseMap.empty -let pp_problems fmt problems = - Format.fprintf fmt "@[%a:@.%a@]" - Printer.pp_location (Cil_const.CurrentLoc.get()) - (Pretty_utils.pp_list ~pre:"@[" ~suf:"@]" ~sep:"@." Problem.pretty) problems - -let pp_problems_debug fmt problems = - Format.fprintf fmt "@[%a@]" - (Pretty_utils.pp_list ~pre:"@[" ~suf:"@]" ~sep:"@ " Problem.pretty) problems - type exhausted_status = Maybe_exhausted of Int.t (*relative*) | Non_exhausted let pp_exh_st fmt = function @@ -487,23 +528,23 @@ module Base_res = struct char_fs: FS.t; maybe_not_found: bool; es: exhausted_status; - problems: Problem.t list; + problems: Problems.t; } let bottom = {vals = Ival.bottom; abs_offs = Ival.bottom; char_fs = FS.Bottom; - maybe_not_found = false; es = Non_exhausted; problems = []} + maybe_not_found = false; es = Non_exhausted; problems = Problems.empty} let join br1 br2 : t = let vals = Ival.join br1.vals br2.vals in let abs_offs = Ival.join br1.abs_offs br2.abs_offs in let char_fs = FS.join br1.char_fs br2.char_fs in let maybe_not_found = br1.maybe_not_found || br2.maybe_not_found in let es = join_exh br1.es br2.es in - let problems = br1.problems @ br2.problems in + let problems = Problems.union br1.problems br2.problems in {vals; abs_offs; char_fs; maybe_not_found; es; (*has_null_result;*) problems} let pretty fmt br = Format.fprintf fmt "@[{vals:%a,abs_offs:%a,fs:%a,es:%a,problems:%a}@]" Ival.pretty br.vals Ival.pretty br.abs_offs FS.pretty br.char_fs pp_exh_st br.es - pp_problems_debug br.problems + Problems.pretty br.problems end module BR = Base_res @@ -1176,15 +1217,11 @@ module Search_ranges = struct fpf "search with small set, cur offset: %a, res: %a " Int.pretty offset pp_str_res_t res; res - ) init_acc a + ) init_acc a, Not_imprecise | _ -> (* less precise but more efficient version *) (* str functions returning pointers are currently imprecise for ranges *) - if not ret_rel_offs then begin - Value_util.alarm_report ~source:(fst (Cil_const.CurrentLoc.get())) - "built-in cannot deal with large imprecise ranges,@ \ - over-approximating"; - search_ptr_imprecise bytecharmap base offset_ival n_len last_byte_to_look - end + if not ret_rel_offs then + search_ptr_imprecise bytecharmap base offset_ival n_len last_byte_to_look, Imprecise else begin fpf "by_offset_ival: not a small set!"; let init_acc = @@ -1207,9 +1244,9 @@ module Search_ranges = struct Maybe_ok (Ival.inject_range adj_min adj_max, (*abs_offs not used by caller*)Ival.top, (*fs not used by caller*)FS.Top, res_acc.maybe_not_found, - res_acc.best_es, res_acc.is) + res_acc.best_es, res_acc.is), Not_imprecise | _, _ -> - Never_ok (res_acc.is) + Never_ok (res_acc.is), Not_imprecise end in res @@ -1223,41 +1260,53 @@ exception Top_res of Problem.t - [Some (base_max_sure_byte, base_end_byte, abs_offs)]: compute if there may have been an access to offsets past the validity of their bases. *) -let compute_problems is compute_maybe_invalid = - let prob_uninit = if is.IS.maybe_uninit then - [Problem.Init(false)] else [] +let compute_problems imprecise is compute_maybe_invalid = + let acc_probs = Problems.empty in + let acc_probs = match imprecise with + | Imprecise -> + Problems.add + (Problem.Misc "range too large and/or imprecise, approximating") + acc_probs + | Not_imprecise -> acc_probs in - let prob_esc = if is.IS.maybe_esc then - [Problem.Esc(false)] else [] + let acc_probs = if is.IS.maybe_uninit then + Problems.add (Problem.Init(false)) acc_probs + else acc_probs in - let prob_indet = if is.IS.maybe_indet then - [Problem.Indet(false)] else [] + let acc_probs = if is.IS.maybe_esc then + Problems.add (Problem.Esc(false)) acc_probs + else acc_probs in - let prob_maybe_invalid = + let acc_probs = if is.IS.maybe_indet then + Problems.add (Problem.Indet(false)) acc_probs + else acc_probs + in + let acc_probs = match compute_maybe_invalid with - | None -> (* do not compute *) [] + | None -> (* do not compute *) acc_probs | Some (base_max_sure_byte, base_end_byte, abs_offs) -> if Int.lt base_max_sure_byte base_end_byte && not (Ival.is_bottom abs_offs) then match Ival.max_int abs_offs with | None -> (* unbounded max: other warnings have already been - emitted, so omit this one *) [] + emitted, so omit this one *) acc_probs | Some max_byte_to_look -> if Int.(gt max_byte_to_look base_max_sure_byte) then - [Problem.Maybe_invalid] else [] - else [] + Problems.add Problem.Maybe_invalid acc_probs else acc_probs + else acc_probs in - prob_uninit @ prob_esc @ prob_indet @ prob_maybe_invalid + acc_probs (* Searches base [base+offset_arg], for up to [n_len] characters. *) let search_by_base bs_of_vu_f ~ret_rel_offs base offset_arg ?n_len state : - Ival.t * Ival.t * FS.t * bool * exhausted_status * Problem.t list = + Ival.t * Ival.t * FS.t * bool * exhausted_status * Problems.t = fpf "base: %a (validity: %a)" Base.pretty base Base.pretty_validity (Base.validity base); let offsetmap = Cvalue.Model.find_base_or_default base state in match offsetmap with | `Bottom -> (* possibly invalid base *) - (Ival.bottom, Ival.bottom, FS.Bottom, false, Non_exhausted, [Problem.Base base]) + (Ival.bottom, Ival.bottom, FS.Bottom, false, Non_exhausted, + Problems.singleton (Problem.Base base)) | `Top -> assert false | `Value offsetmap -> let base_max_sure_bit, base_end_bit = match Base.validity base with @@ -1313,24 +1362,24 @@ let search_by_base bs_of_vu_f ~ret_rel_offs base offset_arg ?n_len state : max_bit_to_look base_end_bit in fpf "bytecharmap: %a" Bytecharmap.pretty bytecharmap; - let res = + let res, imprecise = Search_ranges.search bytecharmap ~ret_rel_offs base offset_arg offset_start offset_end ?n_len max_byte_to_look in fpf "by_offset_ival returned: %a" pp_str_res_t res; match res with | Never_ok (is) -> - let problems = compute_problems is None in + let problems = compute_problems imprecise is None in (Ival.bottom, Ival.bottom, FS.Bottom, false, Non_exhausted, problems) | Maybe_ok (bounds, abs_offs, char_fs, maybe_found_stop, es, is) -> (* special case: vals is bottom, despite "Maybe_ok" => due to initialization (should only happen with an empty base) *) if Ival.is_bottom bounds && es = Non_exhausted then (Ival.bottom, Ival.bottom, FS.Bottom, maybe_found_stop, es, - [Problem.Indet(true)]) + Problems.singleton (Problem.Indet(true))) else let problems = - compute_problems is + compute_problems imprecise is (Some (base_max_sure_byte, base_end_byte, abs_offs)) in (bounds, abs_offs, char_fs, maybe_found_stop, es, problems) @@ -1370,7 +1419,7 @@ let search_by_base_wrapper bs_of_vu_f ~ret_rel_offs state base offs ?n_ival ~inc new_vals else vals in - let base_res = {BR.vals = vals'; abs_offs; char_fs; maybe_not_found; es; problems } in + let base_res = {BR.vals = vals'; abs_offs; char_fs; maybe_not_found; es; problems} in fpf "@[base_res: %a, n_ival: %a@]" BR.pretty base_res (Pretty_utils.pp_opt Ival.pretty) n_ival; if not (Ival.is_bottom base_res.BR.vals) then @@ -1583,19 +1632,19 @@ let search_char_n_wrapper name nb_args state actuals ~print_call str_builtin_typ ~include_exh:(not is_ret_pointer) str in let problems = BaseMap.fold (fun _base base_res acc -> - acc @ base_res.BR.problems) bm [] + Problems.union acc base_res.BR.problems) bm Problems.empty in res_of_base_res_f bm, problems with | Top_res prob -> - Cvalue.V.top_int, [prob] + Cvalue.V.top_int, Problems.singleton prob in (* In case at least one base has a valid result, 'weaken' alarm messages ("possibly ...") *) let problems = if not (Cvalue.V.is_bottom value) then - List.map Problem.weaken problems else problems + Problems.weaken problems else problems in - if problems <> [] then begin + if not (Problems.is_empty problems) then begin let s = Pretty_utils.sfprintf "@[<h>\\valid_nstring(%a,%s(%a))@]" Cil_datatype.Exp.pretty exp_str name @@ -1604,7 +1653,7 @@ let search_char_n_wrapper name nb_args state actuals ~print_call str_builtin_typ in Builtins.emit_alarm ~kind:kind_alarm_string ~text:s; Value_util.alarm_report ~source:(fst (Cil_const.CurrentLoc.get())) - "built-in %s: %a" name (pp_problems) problems + "@[builtin %s:@ %a@]" name Problems.pretty problems end; let res_c_value = if Cvalue.V.is_bottom value then None, Cvalue.Model.bottom diff --git a/src/plugins/value/domains/cvalue/cvalue_domain.ml b/src/plugins/value/domains/cvalue/cvalue_domain.ml index 78d7a8678b57f4690ee6aacea866fa3d2b41b5a7..932c265b621cf656a106409a7719b99e08ab6b44 100644 --- a/src/plugins/value/domains/cvalue/cvalue_domain.ml +++ b/src/plugins/value/domains/cvalue/cvalue_domain.ml @@ -50,28 +50,6 @@ module Model = struct | C_init_esc _ -> Alarmset.singleton (Alarms.Dangling lval) | C_init_noesc _ -> Alarmset.none - let imprecise_eval_one_loc state lval = - fun loc (acc_v, acc_alarms) -> - let size = Int_Base.project loc.Locations.size in - let _, offsm = copy_offsetmap loc.Locations.loc size state in - let process_one_v v (acc_v, acc_alarms) = - let vv = Cvalue.V_Or_Uninitialized.get_v v in - (* TODO: it is a bit problematic to create those garbled mix for - nothing. When the size of the location is imprecise, it is fine. - However, when the location is a non-scalar value, the result will - always be ignored at the end! Maybe we should start with Top in - acc? We use the 'Leaf' origin only because it is not tracked. *) - Cvalue.V.join (Cvalue.V.topify_leaf_origin vv) acc_v, - Alarmset.union (indeterminate_alarms lval v) acc_alarms - in - match offsm with - | `Bottom -> acc_v, acc_alarms - | `Value offsm -> - let v, alarms = - Cvalue.V_Offsetmap.fold_on_values - process_one_v offsm (acc_v, acc_alarms) - in - v, alarms let eval_one_loc state lval typ = let eval_one_loc single_loc = @@ -85,12 +63,7 @@ module Model = struct Cvalue.V.join result acc_result, Alarmset.union alarms acc_alarms let extract_lval _oracle state lval typ loc = - let process_one_loc = - if Cil.isArithmeticOrPointerType typ - || Int_Base.is_top (Main_locations.PLoc.size loc) - then eval_one_loc state lval typ - else imprecise_eval_one_loc state lval - in + let process_one_loc = eval_one_loc state lval typ in let acc = Cvalue.V.bottom, Alarmset.none in let value1, alarms1 = Precise_locs.fold process_one_loc loc acc in let expr = Cil.dummy_exp (Cil_types.Lval lval) in @@ -445,7 +418,18 @@ module State = struct let fdec = Kernel_function.get_definition kf in let state = Model.remove_variables block.blocals state in if body - then snd (Locals_scoping.top_addresses_of_locals fdec clob) state, clob + then + (* Remove formals that may have been written in the function from the + state, then topify pointers to local or formal variables. Formals + are also removed from the state in {!Cvalue_transfer.finalize_call}, + but it is important to it here too. Otherwise, we get warnings about + addresses escaping the scope of the function through a formal. *) + let written_formals = Value_util.written_formals kf in + let remove_vi vi state = Model.remove_base (Base.of_varinfo vi) state in + let state = + Cil_datatype.Varinfo.Set.fold remove_vi written_formals state + in + snd (Locals_scoping.top_addresses_of_locals fdec clob) state, clob else Locals_scoping.block_top_addresses_of_locals fdec clob [block] state, clob diff --git a/src/plugins/value/domains/symbolic_locs.ml b/src/plugins/value/domains/symbolic_locs.ml new file mode 100644 index 0000000000000000000000000000000000000000..f27e4a077748b0c6d9cec01d9facb0f8747044e1 --- /dev/null +++ b/src/plugins/value/domains/symbolic_locs.ml @@ -0,0 +1,706 @@ +(**************************************************************************) +(* *) +(* This file is part of Frama-C. *) +(* *) +(* Copyright (C) 2007-2016 *) +(* CEA (Commissariat à l'énergie atomique et aux énergies *) +(* alternatives) *) +(* *) +(* you can redistribute it and/or modify it under the terms of the GNU *) +(* Lesser General Public License as published by the Free Software *) +(* Foundation, version 2.1. *) +(* *) +(* It is distributed in the hope that it will be useful, *) +(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) +(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *) +(* GNU Lesser General Public License for more details. *) +(* *) +(* See the GNU Lesser General Public License version 2.1 *) +(* for more details (enclosed in the file licenses/LGPLv2.1). *) +(* *) +(**************************************************************************) + +open Cil_types +open Eval +open Locations + +let dkey = Value_parameters.register_category "d-symblocs" + +module Exp = Cil_datatype.ExpStructEq +module Lval = Cil_datatype.LvalStructEq + +(* Keys for which we will store a value. lvalues are never stored under + a constructor [E]. *) +type key = E of Exp.t | LV of Lval.t + +module DKey = Datatype.Make (struct + include Datatype.Serializable_undefined + + type t = key + let name = "Value.Symbolic_locs.key" + let reprs = [ E Cil_datatype.Exp.dummy ] + + let structural_descr = + Structural_descr.t_sum + [| [| Exp.packed_descr |] ; [| Lval.packed_descr |] ; |] + + let equal a b = match a, b with + | E e1, E e2 -> Exp.equal e1 e2 + | LV lv1, LV lv2 -> Lval.equal lv1 lv2 + | (E _ | LV _), _ -> false + + let compare a b = match a, b with + | E e1, E e2 -> Exp.compare e1 e2 + | LV lv1, LV lv2 -> Lval.compare lv1 lv2 + | LV _, E _ -> -1 + | E _, LV _ -> 1 + + let pretty fmt = function + | E e -> Format.fprintf fmt "(e)%a" Exp.pretty e + | LV lv -> Format.fprintf fmt "(l)%a" Lval.pretty lv + + let hash = function + | E e -> Exp.hash e + | LV lv -> Lval.hash lv + + let copy c = c + end) + +module Keys = struct + include State_builder.Hashcons(DKey) + (struct let dependencies = [Ast.self] let name = "" end) + + let of_lval lv = hashcons (LV lv) + + let of_exp exp = + match exp.enode with + | Lval lv -> of_lval lv + | _ -> hashcons (E exp) + +end + +module KeysSet = Hptset.Make(Keys) + (struct let v = [] end) + (struct let l = [Ast.self] end) + + +module V = Cvalue.V (* TODO: functorize (with locations too ?) *) + + +(* Map from expressions/lvalues to abstract values *) +module K2V = struct + module M = Hptmap.Make(Keys)(V)(Hptmap.Comp_unused) + (struct let v = [] end)(struct let l = [Ast.self] end) + + include M + + let cache_prefix = "Value.Symbolic_locs.K2V" + + let join = + (* Missing keys are bound to top -> use inter as base function *) + let cache_name = cache_prefix ^ ".join" in + let cache = Hptmap_sig.PersistentCache cache_name in + let symmetric = true in + let idempotent = true in + let decide _ v1 v2 = Some (V.join v1 v2) in + M.inter ~cache ~symmetric ~idempotent ~decide + + let is_included = + let cache_name = cache_prefix ^ ".is_included" in + let decide_fst _b _v1 = true (* v2 is top *) in + let decide_snd _b _v2 = false (* v1 is top, v2 should not be *) in + let decide_both _ v1 v2 = V.is_included v1 v2 in + let decide_fast s t = + if s == t || M.is_empty t (*all bases present in s but not in t + are implicitly bound to Top in t, hence the inclusion holds *) + then M.PTrue + else M.PUnknown + in + M.binary_predicate + (Hptmap_sig.PersistentCache cache_name) M.UniversalPredicate + ~decide_fast ~decide_fst ~decide_snd ~decide_both + + (* Return the subtrees of the left map whose keys are *not* present in the + right map. Values are ignored *) + let only_in_left = + let cache_name = cache_prefix ^ ".only_left" in + let cache = Hptmap_sig.PersistentCache cache_name in + let symmetric = false in + let idempotent = false in + let decide_both _ _ _ = None in + let decide_left = M.Neutral in + let decide_right = M.Absorbing in + M.merge ~cache + ~symmetric ~idempotent ~decide_both ~decide_left ~decide_right + +end + +(* Maps from keys to their memory dependencies, expressed as a zone. + Missing keys are implicitly mapped to Zone.top. *) +module K2Z = struct + + let cache_prefix = "Value.Symbolic_locs.K2Z" + + module M = Hptmap.Make(Keys)(Locations.Zone)(Hptmap.Comp_unused) + (struct let v = [] end)(struct let l = [Ast.self] end) + + let is_included = + let cache_name = cache_prefix ^ ".is_included" in + let decide_fst _b _v1 = true in + let decide_snd _b _v2 = false in + let decide_both _ v1 v2 = Zone.is_included v1 v2 in + let decide_fast s t = if s == t then M.PTrue else M.PUnknown in + M.binary_predicate + (Hptmap_sig.PersistentCache cache_name) M.UniversalPredicate + ~decide_fast ~decide_fst ~decide_snd ~decide_both + + let join = + let cache_name = cache_prefix ^ ".join" in + let cache = Hptmap_sig.PersistentCache cache_name in + let symmetric = true in + let idempotent = true in + let decide _ v1 v2 = Some (Zone.join v1 v2) in + M.inter ~cache ~symmetric ~idempotent ~decide + + let find_defaut k m = + try M.find k m + with Not_found -> Zone.bottom + +end + +(* (* not used for now: too costly *) +let rec interesting_exp (e: exp) = match e.enode with + | Const _ | SizeOf _ | SizeOfStr _ | SizeOfE _ | AlignOf _ | AlignOfE _ + | StartOf _ | AddrOf _ -> + false + | Lval lv -> true + | CastE (_,e) | UnOp (_,e,_) | Info (e,_) -> + interesting_exp e + | BinOp (op,e1,e2,_) -> + match op with + | Eq | Ne | Le | Ge | Lt | Gt -> false + | _ -> interesting_exp e1 || interesting_exp e2 +*) + +(* computes whether an expression depends on a location with an imprecise + location *) +let rec multiple_loc_exp get_locs (e: exp) = match e.enode with + | Const _ | SizeOf _ | SizeOfStr _ | SizeOfE _ | AlignOf _ | AlignOfE _ + | StartOf _ | AddrOf _ -> + false + | Lval lv -> + not (Precise_locs.cardinal_zero_or_one (get_locs lv)) + | CastE (_,e) | UnOp (_,e,_) | Info (e,_) -> + multiple_loc_exp get_locs e + | BinOp (_,e1,e2,_) -> + multiple_loc_exp get_locs e1 || multiple_loc_exp get_locs e2 + +let is_cond exp = match exp.enode with + | BinOp ((Eq | Ne | Le | Ge | Lt | Gt), _, _, _) -> true + | _ -> false + + +(* Maps from bases to the keys that depend on them *) +module B2K = struct + + module M = Hptmap.Make(Base)(KeysSet)(Hptmap.Comp_unused) + (struct let v = [] end)(struct let l = [Ast.self] end) + + let cache_prefix = "Value.Symbolic_locs.B2K" + + let join = + let cache_name = cache_prefix ^ ".join" in + let cache = Hptmap_sig.PersistentCache cache_name in + let symmetric = true in + let idempotent = true in + let decide _ v1 v2 = KeysSet.union v1 v2 in + M.join ~cache ~symmetric ~idempotent ~decide + + let find_default b m = + try M.find b m + with Not_found -> KeysSet.empty + +end + +(* (All) dependencies of an expression or lvalue, as a zone. The zones + for lvalues are found through [get_z]. *) +let rec deps_lv get_z (h, o as lv) = + let z = Zone.join (deps_host get_z h) (deps_offset get_z o) in + Zone.join (get_z lv) z +and deps_exp get_z (e: exp) = match e.enode with + | Const _ | SizeOf _ | SizeOfStr _ | SizeOfE _ | AlignOf _ | AlignOfE _ + | StartOf _ | AddrOf _ -> + Zone.bottom + | Lval lv -> + deps_lv get_z lv + | CastE (_,e) | UnOp (_,e,_) | Info (e,_) -> + deps_exp get_z e + | BinOp (_,e1,e2,_) -> + Zone.join (deps_exp get_z e1) (deps_exp get_z e2) +and deps_host get_z = function + | Var _ -> Zone.bottom (* handled by deps_lv *) + | Mem e -> deps_exp get_z e +and deps_offset get_z = function + | NoOffset -> Zone.bottom + | Field (_, o) -> deps_offset get_z o + | Index (e, o) -> Zone.join (deps_exp get_z e) (deps_offset get_z o) + +(* Locals and formals syntactically present in an expression or lvalue *) +let rec vars_lv (h, o) = Base.Set.union (vars_host h) (vars_offset o) +and vars_exp (e: exp) = match e.enode with + | Const _ | SizeOf _ | AlignOf _ | SizeOfStr _ -> + Base.Set.empty + | AddrOf lv | StartOf lv | Lval lv -> + vars_lv lv + | SizeOfE e | AlignOfE e | CastE (_,e) | UnOp (_,e,_) | Info (e,_) -> + vars_exp e + | BinOp (_,e1,e2,_) -> Base.Set.union (vars_exp e1) (vars_exp e2) +and vars_host = function + | Var vi -> + (* Global variables never go out of scope, no need to track them *) + if vi.vglob then Base.Set.empty else Base.(Set.singleton (of_varinfo vi)) + | Mem e -> vars_exp e +and vars_offset = function + | NoOffset -> Base.Set.empty + | Field (_, o) -> vars_offset o + | Index (e, o) -> Base.Set.union (vars_exp e) (vars_offset o) + + +module Memory = struct + + (* This is the abstract state for the 'Symbolic location' domains *) + type memory = { + values: K2V.t (* map from expressions/lvalues to their abstract value *); + zones: K2Z.M.t (* map from expressions/lvalues to the memory location + they depend on *); + deps: B2K.M.t (* map from bases to the expressions/lvalues that + depend on them according to [zones] *); + syntactic_deps: B2K.M.t (* map from bases to the expressions/lvalues + that syntactically refer to them *); + } + (* Invariants: [values] and [zones] have exactly the same keys. + [deps] and [syntactic_deps] are caches that can be rebuilt from [values] + and [vars_exp/lv] for [syntactic_deps], and from [zones] for [deps]. *) + + include Datatype.Make_with_collections(struct + include Datatype.Serializable_undefined + + type t = memory + let name = "Value.Symbolic_locs.Memory.t" + + let reprs = [ { values = List.hd K2V.M.reprs; + zones = List.hd K2Z.M.reprs; + deps = List.hd B2K.M.reprs; + syntactic_deps = List.hd B2K.M.reprs; + } ] + + let structural_descr = + Structural_descr.t_record [| + K2V.packed_descr; + K2Z.M.packed_descr; + B2K.M.packed_descr; + B2K.M.packed_descr; + |] + + let compare m1 m2 = + let c = K2V.compare m1.values m2.values in + if c <> 0 then c + else + let c = K2Z.M.compare m1.zones m2.zones in + if c <> 0 then c + else + let c = B2K.M.compare m1.deps m2.deps in + if c <> 0 then c + else B2K.M.compare m1.syntactic_deps m2.syntactic_deps + + let equal = Datatype.from_compare + + let pretty fmt m = + Format.fprintf fmt "@[<v>V: @[%a@]@ Z: @[%a@]@ I: @[%a@]@ S: @[%a@]@]" + K2V.M.pretty m.values K2Z.M.pretty m.zones + B2K.M.pretty m.deps B2K.M.pretty m.syntactic_deps + + let hash m = Hashtbl.hash + (K2V.hash m.values, K2Z.M.hash m.zones, + B2K.M.hash m.deps, B2K.M.hash m.syntactic_deps) + + let copy c = c + + end) + + let top = { + values = K2V.M.empty; + zones = K2Z.M.empty; + deps = B2K.M.empty; + syntactic_deps = B2K.M.empty; + } + + let empty_map = top + + let is_included m1 m2 = + K2V.is_included m1.values m2.values && + K2Z.is_included m1.zones m2.zones + (* No need to check the two other fields, that are only inverse mappings + from the first two ones *) + + (* bases on which a Cvalue.V depends *) + let v_deps v = + let aux b acc = + let add = + match b with + | Base.Var (vi, _) -> not vi.vglob + | Base.Allocated _ -> true (* can be freed. TODO: handle free *) + | Base.Null | Base.CLogic_Var _ -> false (* does not appear yet *) + | Base.String _ -> false (* can be seen as a global*) + in + if add then Base.Set.add b acc else acc + in + V.fold_bases aux v Base.Set.empty + + let key_deps k = + match Keys.get k with + | E e -> vars_exp e + | LV lv -> vars_lv lv + + (* Auxiliary function that add [k] to [state]. [v] is the value bound to + [k], [z] the dependency information. *) + let add_key k v z state = + let values = K2V.add k v state.values in + let zones = K2Z.M.add k z state.zones in + let add_dep b deps = + let s = B2K.find_default b deps in + let s' = KeysSet.add k s in + B2K.M.add b s' deps + in + try + let deps = Zone.fold_bases add_dep z state.deps in + let bases = Base.Set.union (key_deps k) (v_deps v) in + let syntactic_deps = Base.Set.fold add_dep bases state.syntactic_deps in + { values; zones; deps; syntactic_deps } + with Zone.Error_Top (* unknown dependencies *) -> state + + (* inverse operation of [add_key] *) + let remove_key k state = + try + let v = K2V.find k state.values in + let values = K2V.remove k state.values in + let zones = K2Z.M.remove k state.zones in + let aux_deps b d = + let set_b = try B2K.M.find b d with Not_found -> assert false in + let set_b' = KeysSet.remove k set_b in + if KeysSet.is_empty set_b' + then B2K.M.remove b d + else B2K.M.add b set_b' d + in + (* there exists a dependency associated to k because d(values)=d(zones) *) + let z = try K2Z.find_defaut k state.zones with Not_found ->assert false in + let deps = Zone.fold_bases aux_deps z state.deps in + let syn_deps = Base.Set.union (key_deps k) (v_deps v) in + let syntactic_deps = + Base.Set.fold aux_deps syn_deps state.syntactic_deps + in + { values; zones; deps; syntactic_deps } + with Not_found -> state + + let remove_keys keys state = + KeysSet.fold remove_key keys state + + let join m1 m2 = + if K2V.equal m1.values m2.values && K2Z.M.equal m1.zones m2.zones then m1 + else + let remove_m1 = K2V.only_in_left m1.values m2.values in + let remove_m2 = K2V.only_in_left m2.values m1.values in + let m1 = K2V.fold (fun k _ m -> remove_key k m) remove_m1 m1 in + let m2 = K2V.fold (fun k _ m -> remove_key k m) remove_m2 m2 in + { values = K2V.join m1.values m2.values; + zones = K2Z.join m1.zones m2.zones; + deps = B2K.join m1.deps m2.deps; + syntactic_deps = B2K.join m1.syntactic_deps m2.syntactic_deps; + } + + let join_and_is_included m1 m2 = + let m = join m1 m2 in + let incl = K2V.M.equal m.values m2.values && K2Z.M.equal m.zones m2.zones in + (m, incl) + + let widen _kf _wh m1 m2 = join m1 m2 (* TODO: widen values? *) + + (* ------------------------------------------------------------------------ *) + (* --- High-level functions --- *) + (* ------------------------------------------------------------------------ *) + + (* fold on all the keys of [state] overwritten when [z] is written *) + let fold_overwritten f state z acc = + (* Check if [k] is overwritten *) + let aux_key k acc = + let z_k = K2Z.M.find k state.zones in + if Zone.intersects z z_k then f k acc else acc + in + (* Check the keys overwritten among those depending on [b] *) + let aux_base b acc = + let keys = B2K.find_default b state.deps in + KeysSet.fold aux_key keys acc + in + try + (* Check all the keys overwritten *) + Zone.fold_bases aux_base z acc + with Zone.Error_Top -> top + + (* remove the keys that depend on the variables in [l] *) + let remove_variables l state = + let aux_vi state vi = + let b = Base.of_varinfo vi in + let keys = B2K.find_default b state.syntactic_deps in + remove_keys keys state + in + List.fold_left aux_vi state l + + let kill loc state = + let z = Locations.enumerate_valid_bits ~for_writing:false loc in + fold_overwritten remove_key state z state + + (* Add the the mapping [lv --> v] to [state] when possible. + [get_z] is a function that computes dependencies. *) + let add_lv state get_z lv v = + if Eval_typ.lval_contains_volatile lv then + state + else + let k = Keys.of_lval lv in + let z = deps_lv get_z lv in + add_key k v z state + + (* Add the mapping [e --> v] to [state] when possible and useful. + [get_z] is a function that computes dependencies. *) + let add_exp state get_z e v = + if Eval_typ.expr_contains_volatile e then + state + else + let k = Keys.of_exp e in + let z = deps_exp get_z e in + add_key k v z state + + let find k state = + try Some (K2V.find k state.values) + with Not_found -> None + + let find_lval lv state = + find (Keys.of_lval lv) state + + let find_expr expr state = + find (Keys.of_exp expr) state + +end + +module D : Abstract_domain.Internal + with type state = Memory.t + and type value = V.t + and type location = Precise_locs.precise_location += struct + type state = Memory.t + type value = V.t + type location = Precise_locs.precise_location + include (Memory: sig + include Datatype.S_with_collections with type t = state + include Abstract_domain.Lattice with type state := state + end) + + let structure = Abstract_domain.Void + + let empty _ = Memory.empty_map + + let open_block _kf _block ~body:_ state = + state (* default is Top, nothing to do *) + + let close_block kf block ~body state = + (* removed variables revert implicity to Top *) + let state = Memory.remove_variables block.blocals state in + if body then + let fdec = Kernel_function.get_definition kf in + Memory.remove_variables fdec.sformals state + else state + + let top_return = { v = `Value V.top; initialized = false; escaping = true } + + (* Call in which we do not use the body. Return Top, except for builtins + and functions that do not significantly alter the memory. *) + let approximate_call kf state = + let post_state = + let name = Kernel_function.get_name kf in + if Ast_info.is_frama_c_builtin name || + (name <> "free" && Eval_typ.kf_assigns_only_result_or_volatile kf) + then state + else top + in + `Value [{ post_state; return = Some (top_return, ()) }] + + type origin = unit + + type return = unit + module Return = Datatype.Unit + + module Transfer (Valuation: Abstract_domain.Valuation + with type value = value + and type origin = origin + and type loc = Precise_locs.precise_location) + : Abstract_domain.Transfer + with type state = state + and type return = unit + and type value = V.t + and type location = Precise_locs.precise_location + and type valuation = Valuation.t + = struct + type value = V.t + type state = Memory.t + type location = Precise_locs.precise_location + type return = unit + type valuation = Valuation.t + + (* build a [get_locs] function from a valuation *) + let get_locs valuation = + fun lv -> + let r = + match Valuation.find_loc valuation lv with + | `Top -> Precise_locs.loc_top + | `Value loc -> loc.Eval.loc + in + if Precise_locs.(equal_loc loc_top r) then + Value_parameters.fatal "Unknown location for %a" Printer.pp_lval lv + else r + + let get_z valuation = + let get_locs = get_locs valuation in + fun lv -> + Precise_locs.enumerate_valid_bits ~for_writing:false (get_locs lv) + + (* update the state according to the information known in the valuation. + Important, because on statements such as [if (t[i] + j <= 3)], the + interesting information on [t[i]] is only in the valuation. *) + let update valuation state = + let aux e r state = + let v = r.value in + (* TODO: incorporate DB criterion: only expressions that are immediate + lvalues, or that embed two non-singleton lvalues for the first + time. *) + match r.reductness, v.v, v.initialized, v.escaping with + | (Created | Reduced), `Value v, true, false -> + if not (is_cond e) && multiple_loc_exp (get_locs valuation) e then + Memory.add_exp state (get_z valuation) e v + else + state + | _ -> state + in + Valuation.fold aux valuation state + + let store_value valuation lv loc state v = + let loc = Precise_locs.imprecise_location loc in + (* Remove the keys that are overwritten because [loc] is written *) + let state = Memory.kill loc state in + if Locations.cardinal_zero_or_one loc then + (* Stored by the standard domain. Skip *) + `Value state + else + (* Add the new binding *) + `Value (Memory.add_lv state (get_z valuation) lv v) + + (* Assume we may be copying indeterminate bits. Kill existing information *) + let store_indeterminate state loc = + let loc = Precise_locs.imprecise_location loc in + `Value (Memory.kill loc state) + + let store_copy valuation lv loc state fv = + if Cil.isArithmeticOrPointerType lv.ltyp then + match fv.v, fv.initialized, fv.escaping with + | `Value v, true, false -> store_value valuation lv.lval loc state v + | _ -> store_indeterminate state loc + else + store_indeterminate state loc + + (* perform [lv = e] in [state] *) + let assign _kinstr lv _e v valuation state = + let state = update valuation state in + match v with + | Copy (_, vc) -> store_copy valuation lv lv.lloc state vc + | Assign v -> store_value valuation lv.lval lv.lloc state v + + let assume _stmt _exp _pos valuation state = `Value (update valuation state) + + let start_call _stmt _call valuation state = + let state = update valuation state in + Compute (Continue state, true) + + let make_return _kf _stmt _value _valuation _state = () + + let assign_return _stmt lv _kf () v valuation state = + match v with + | Copy (_, vf) -> store_copy valuation lv lv.lloc state vf + | Assign v -> store_value valuation lv.lval lv.lloc state v + + let dump_current_state state = + let l = fst (Cil.CurrentLoc.get ()) in + Value_parameters.result ~dkey "DUMPING SYMBLOCS STATE \ + of file %s line %d@.%a" + (Filepath.pretty l.Lexing.pos_fname) l.Lexing.pos_lnum + pretty state + + let finalize_call _stmt call ~pre:_ ~post = + let kf = call.kf in + let name = Kernel_function.get_name kf in + if Ast_info.is_cea_dump_function name && + Value_parameters.is_debug_key_enabled dkey + then dump_current_state post; + `Value post + + let default_call _stmt call state = + approximate_call call.kf state + + end + + let compute_using_specification _ki (kf, _spec) state = + approximate_call kf state + + let top_query = `Value (V.top, ()), Alarmset.all + + (* For extraction functions, if we have an information about the value, + this means that the key has been evaluated in all the paths that reach + this point. Hence, the alarms have already been emitted, and we can + return [Alarmset.none]. *) + + let extract_expr _oracle state expr = + match Memory.find_expr expr state with + | None -> top_query + | Some v -> `Value (v, ()), Alarmset.none + + let extract_lval _oracle state lv _typ _locs = + match Memory.find_lval lv state with + | None -> top_query + | Some v -> `Value (v, ()), Alarmset.none + + let backward_location _state _lval _typ loc value = + (* Nothing to do. We could check if [[lval]] intersects [value] and + return [`Bottom] if it is not the case, but we have already supplied + [[lval]] during the forward propagation, so the intersection is probably + always non-empty. *) + `Value (loc, value) + + let reduce_further _state _expr _value = [] (*Nothing intelligent to suggest*) + + (* Memexec *) + let filter_by_bases _bases state = state (* TODO *) + let reuse ~current_input:state ~previous_output:_ = + state (* TODO *) + + (* Initial state. Initializers are singletons, so we store nothing. *) + let global_state () = None + let initialize_var_using_type state _ = state + let initialize_var state _ _ _ = state + + (* Logic *) + type eval_env = state + let env_current_state state = `Value state + let env_annot ~pre:_ ~here () = here + let env_pre_f ~pre () = pre + let env_post_f ~pre:_ ~post ~result:_ () = post + let eval_predicate _ _ = Alarmset.Unknown + let reduce_by_predicate state _ _ = state + +end diff --git a/src/plugins/value/utils/mem_lvalue.mli b/src/plugins/value/domains/symbolic_locs.mli similarity index 87% rename from src/plugins/value/utils/mem_lvalue.mli rename to src/plugins/value/domains/symbolic_locs.mli index e98f57e7822460ef1daefc4f9346771f92b44447..c67989af6a33459522fbcf21df2fc52d5dd91440 100644 --- a/src/plugins/value/utils/mem_lvalue.mli +++ b/src/plugins/value/domains/symbolic_locs.mli @@ -20,9 +20,9 @@ (* *) (**************************************************************************) -(** Improved handling of l-values that are read/written multiple times in - a function. *) +(** Domain that store information on non-precise l-values such as + [t[i]] or [*p] when [i] or [p] is not exact. *) -val compute: unit -> unit -(** Create a new project in which repeated lvalues are accessed through - a temporary. *) +module D: Abstract_domain.Internal + with type value = Cvalue.V.t + and type location = Precise_locs.precise_location diff --git a/src/plugins/value/engine/abstractions.ml b/src/plugins/value/engine/abstractions.ml index cbde736227a8ae5bce344861d9075c9d08b4aacc..66290bdd5e01b2b574acbcff231e489f2e0f5907 100644 --- a/src/plugins/value/engine/abstractions.ml +++ b/src/plugins/value/engine/abstractions.ml @@ -25,6 +25,7 @@ type config = { cvalue : bool; equalities : bool; + symbolic_locs : bool; bitwise : bool; apron_oct : bool; apron_box : bool; @@ -36,6 +37,7 @@ type config = { let configure () = { cvalue = Value_parameters.CvalueDomain.get (); equalities = Value_parameters.EqualityDomain.get (); + symbolic_locs = Value_parameters.SymbolicLocsDomain.get (); bitwise = Value_parameters.BitwiseOffsmDomain.get (); apron_oct = Value_parameters.ApronOctagon.get (); apron_box = Value_parameters.ApronBox.get (); @@ -49,6 +51,7 @@ let default_config = configure () let legacy_config = { cvalue = true; equalities = false; + symbolic_locs = false; bitwise = false; apron_oct = false; apron_box = false; @@ -256,6 +259,25 @@ let add_offsm abstract = module Dom = Dom end : Abstract) +(* -------------------------------------------------------------------------- *) +(* Symbolic locations *) +(* -------------------------------------------------------------------------- *) + +let add_symbolic_locs abstract = + let module Abstract = (val abstract : Abstract) in + let module K = struct + type v = Cvalue.V.t + let key = Main_values.cvalue_key + end in + let module Conv = Convert (Abstract.Val) (K) in + let module SymbLocs = Domain_lift.Make (Symbolic_locs.D) (Conv) in + let module Dom = Domain_product.Make (Abstract.Val)(Abstract.Dom)(SymbLocs) in + (module struct + module Val = Abstract.Val + module Loc = Abstract.Loc + module Dom = Dom + end : Abstract) + (* -------------------------------------------------------------------------- *) (* Build Abstractions *) @@ -301,6 +323,11 @@ let build_abstractions config = then add_equalities abstractions else abstractions in + let abstractions = + if config.symbolic_locs + then add_symbolic_locs abstractions + else abstractions + in let abstractions = if config.bitwise then add_offsm abstractions diff --git a/src/plugins/value/engine/abstractions.mli b/src/plugins/value/engine/abstractions.mli index 812fe4ad1c89fc2aa17a8232735f1d4d670fdea5..e09c389c3abfea93d7bd6a05cb561ca8ff9b3327 100644 --- a/src/plugins/value/engine/abstractions.mli +++ b/src/plugins/value/engine/abstractions.mli @@ -26,6 +26,7 @@ type config = { cvalue : bool; equalities : bool; + symbolic_locs : bool; bitwise : bool; apron_oct : bool; apron_box : bool; diff --git a/src/plugins/value/engine/compute_functions.ml b/src/plugins/value/engine/compute_functions.ml index ea44badeee7d1f281b5974abfb8ead5dcedd3997..0bed6bf7239f47ab424662b8875f646845a0db00 100644 --- a/src/plugins/value/engine/compute_functions.ml +++ b/src/plugins/value/engine/compute_functions.ml @@ -61,7 +61,6 @@ module Make Value_results.mark_kf_as_called kf; let global = match call_kinstr with Kglobal -> true | _ -> false in let pp = not global && Value_parameters.ValShowProgress.get () in - let entry_time = if pp then Unix.time () else 0. in if pp then Value_parameters.feedback "@[computing for function %a.@\nCalled from %a.@]" @@ -85,15 +84,9 @@ module Make Db.Value.Call_Type_Value_Callbacks.apply (`Def, cvalue_state, call_stack); Computer.compute kf call_kinstr state in - if pp then begin - let compute_time = (Unix.time ()) -. entry_time in - if compute_time > Value_parameters.FloatTimingStep.get () - then Value_parameters.feedback "Done for function %a, in %a seconds." - Kernel_function.pretty kf - Datatype.Float.pretty compute_time - else Value_parameters.feedback "Done for function %a" - Kernel_function.pretty kf - end; + if pp then + Value_parameters.feedback + "Done for function %a" Kernel_function.pretty kf; result @@ -155,7 +148,8 @@ module Make let cvalue_state = get_cvalue init_state in Db.Value.merge_initial_state (Value_util.call_stack ()) cvalue_state; Db.Value.Call_Value_Callbacks.apply (cvalue_state, [kf, Kglobal]); - ignore (compute_using_spec_or_body Kglobal kf init_state) + ignore (compute_using_spec_or_body Kglobal kf init_state); + Value_util.pop_call_stack () end diff --git a/src/plugins/value/engine/evaluation.ml b/src/plugins/value/engine/evaluation.ml index a3d19f050d14d82ef007e7677372ee8b1022128e..1739afe25821fbab94acbb2c784604c08bb8c4af 100644 --- a/src/plugins/value/engine/evaluation.ml +++ b/src/plugins/value/engine/evaluation.ml @@ -1193,7 +1193,7 @@ module Make let reduce kf = cache := valuation; let vi_f = Kernel_function.get_vi kf in - let value = Loc.to_value (Loc.eval_varinfo vi_f) in + let value = Value.inject_address vi_f in backward_eval 0 state v (Some value) >>- fun () -> try second_forward_eval state v >>-: fun () -> !cache with Not_Exact_Reduction -> diff --git a/src/plugins/value/engine/transfer_stmt.ml b/src/plugins/value/engine/transfer_stmt.ml index 69a9a7a0f84174b0a4c82de717f83f55f958c239..4c104314a229c19cb013899d1ce577ccbd336c49 100644 --- a/src/plugins/value/engine/transfer_stmt.ml +++ b/src/plugins/value/engine/transfer_stmt.ml @@ -76,7 +76,13 @@ module Make (* Assignment by copying the value of a right lvalue. *) let assign_by_copy state valuation lval = - Eva.copy_lvalue ~valuation state lval >>=: fun (valuation, value) -> + (* This code about garbled mix is specific to the Cvalue domain. + Unfortunately, the current API for abstract_domain does not permit + distinguishing between an evaluation or a copy. *) + Locations.Location_Bytes.do_track_garbled_mix false; + let r = Eva.copy_lvalue ~valuation state lval in + Locations.Location_Bytes.do_track_garbled_mix true; + r >>=: fun (valuation, value) -> Copy (lval, value), valuation (* Should this l-value be evaluated, as opposed to being copied. *) diff --git a/src/plugins/value/gui_files/gui_types.ml b/src/plugins/value/gui_files/gui_types.ml index f5650b692b4a34ab9d2ab54e8c37a63fd8aac198..f4fae310c719f14ea4040f692808cce92575ef85 100644 --- a/src/plugins/value/gui_files/gui_types.ml +++ b/src/plugins/value/gui_files/gui_types.ml @@ -197,6 +197,29 @@ let pretty_callstack_short fmt cs = (fun fmt (kf, _) -> Kernel_function.pretty fmt kf) fmt q | _ -> assert false +let var_of_base base acc = + try (Base.to_varinfo base) :: acc + with Base.Not_a_C_variable -> acc + +(* [vars_in_gui_res r] returns a list of C variables present in [r]. *) +let vars_in_gui_res r = + let rev_vars = match r with + | GR_Offsm (m_res, _) -> + begin + match m_res with + | GO_Offsetmap m -> + Cvalue.V_Offsetmap.fold_on_values (fun vu acc -> + Cvalue.V.fold_bases var_of_base + (Cvalue.V_Or_Uninitialized.get_v vu) acc + ) m [] + | _ -> [] + end + | GR_Value (v, _) -> Cvalue.V.fold_bases var_of_base v [] + | GR_Zone z -> Locations.Zone.fold_bases var_of_base z [] + | GR_Status _ | GR_Empty -> [] + in + (* inverse the list to preserve the order of the offsetmap *) + List.rev rev_vars (* Local Variables: diff --git a/src/plugins/value/gui_files/register_gui.ml b/src/plugins/value/gui_files/register_gui.ml index 234252a0374953c68cfe9a31e89a58e557baab6e..9d7d51be5ef08eb23f595e8a4e9b1fc1c16ad77c 100644 --- a/src/plugins/value/gui_files/register_gui.ml +++ b/src/plugins/value/gui_files/register_gui.ml @@ -609,7 +609,7 @@ module Callstacks_manager = struct in (* This is the menu which is displayed when the user right-clicks on a data column. It can be used to filter lines *) - let popup_menu_filter expr v icon = + let popup_menu_filter expr v icon vars_to_display = let menu = GMenu.menu () in let callback_only_except oe () = let filter = expr, oe, v in @@ -623,6 +623,27 @@ module Callstacks_manager = struct menu#add different; ignore (equal#connect#activate (callback_only_except true)); ignore (different#connect#activate (callback_only_except false)); + (* add menu items for variables present in the selected expression *) + let callback_display_var vi () = + Extlib.may (fun loc -> + let opt_states = Gui_eval.callstacks_at_gui_loc loc in + Extlib.may + (fun { Gui_eval.states_before = before; states_after = after } -> + let lval = (Var vi, NoOffset) in + let _errors = Gui_eval.make_data_all_callstacks add_data + Gui_eval.lval_ev ~before ~after lval + in + render_session () + ) opt_states + ) model.loc + in + List.iter (fun vi -> + let label = Pretty_utils.sfprintf "Display values for '%a'" + Printer.pp_varinfo vi in + let varmenuitem = GMenu.menu_item ~label () in + menu#add varmenuitem; + ignore (varmenuitem#connect#activate (callback_display_var vi)); + ) vars_to_display; let time = GtkMain.Main.get_current_event_time () in menu#popup ~button:3 ~time in @@ -667,6 +688,11 @@ module Callstacks_manager = struct end | CAlarm _, _ | CEmpty, _ -> () ); + let gui_res_of_after f after = + match after with + | GA_After r -> f r + | GA_NA | GA_Unchanged -> [] + in w#on_right_click (fun (_, row) column -> match HColumns.find model.columns_type column with @@ -692,14 +718,16 @@ module Callstacks_manager = struct let data = find_data row expr in if data.Gui_eval.before <> GR_Empty then popup_menu_filter expr (FilterBefore data.Gui_eval.before) icon + (Gui_types.vars_in_gui_res data.Gui_eval.before); | CAfter expr, icon -> let data = find_data row expr in if data.Gui_eval.before <> GR_Empty then popup_menu_filter expr (FilterAfter data.Gui_eval.after) icon + (gui_res_of_after Gui_types.vars_in_gui_res data.Gui_eval.after) | CAlarm expr, icon -> let data = find_data row expr in if data.Gui_eval.before <> GR_Empty then - popup_menu_filter expr (FilterAlarm data.Gui_eval.alarm) icon + popup_menu_filter expr (FilterAlarm data.Gui_eval.alarm) icon [] | CEmpty, _ -> () ); frame, diff --git a/src/plugins/value/legacy/eval_annots.ml b/src/plugins/value/legacy/eval_annots.ml index 213c13abd6f2e97c29d7a520ea6e8a7865e42371..dcd75980e5ac2d77785ef1e15bb866fa0fd6b31f 100644 --- a/src/plugins/value/legacy/eval_annots.ml +++ b/src/plugins/value/legacy/eval_annots.ml @@ -717,6 +717,7 @@ let mark_rte () = let _, unsigned_ovf, _ = !Db.RteGen.get_unsignedOv_status () in let _, signed_downcast, _ = !Db.RteGen.get_signed_downCast_status () in let _, unsigned_downcast, _ = !Db.RteGen.get_unsignedDownCast_status () in + let _, pointer_call, _ = !Db.RteGen.get_pointerCall_status () in let b_signed_ovf = Kernel.SignedOverflow.get () in let b_unsigned_ovf = Kernel.UnsignedOverflow.get () in let b_signed_downcast = @@ -730,6 +731,7 @@ let mark_rte () = if !Db.Value.is_called kf then ( mem kf true; arith kf true; + pointer_call kf true; if b_signed_ovf then signed_ovf kf true; if b_unsigned_ovf then unsigned_ovf kf true; if b_signed_downcast then signed_downcast kf true; diff --git a/src/plugins/value/legacy/eval_funs.ml b/src/plugins/value/legacy/eval_funs.ml index b0df833fdf4706719f7cd48d2f81cff3ab42d0cf..97070c0745221ec4b68c37615b8cb22dd5ebdd55 100644 --- a/src/plugins/value/legacy/eval_funs.ml +++ b/src/plugins/value/legacy/eval_funs.ml @@ -111,7 +111,6 @@ let compute_using_specification (kf, spec) ~call_kinstr ~with_formals () = let compute_using_spec_or_body ~with_formals ~call_kinstr ~show_progress kf = Value_results.mark_kf_as_called kf; let pp = show_progress && Value_parameters.ValShowProgress.get() in - let entry_time = if pp then Unix.time () else 0. in if pp then Value_parameters.feedback "@[computing for function %a.@\nCalled from %a.@]" @@ -132,15 +131,8 @@ let compute_using_spec_or_body ~with_formals ~call_kinstr ~show_progress kf = Db.Value.Call_Type_Value_Callbacks.apply (`Def, with_formals, call_stack()); compute_using_body (kf, f) ~call_kinstr ~with_formals in - if pp then begin - let compute_time = (Unix.time ()) -. entry_time in - if compute_time > Value_parameters.FloatTimingStep.get () - then Value_parameters.feedback "Done for function %a, in %a seconds." - Kernel_function.pretty kf - Datatype.Float.pretty compute_time - else Value_parameters.feedback "Done for function %a" - Kernel_function.pretty kf - end; + if pp then + Value_parameters.feedback "Done for function %a" Kernel_function.pretty kf; result @@ -202,6 +194,7 @@ let compute_from_entry_point () = Db.Value.Call_Value_Callbacks.apply (with_formals, [ kf, Kglobal ]); ignore(compute_using_spec_or_body kf ~call_kinstr:Kglobal ~with_formals ~show_progress:false); + pop_call_stack (); Value_parameters.feedback "done for function %a" Kernel_function.pretty kf; Separate.epilogue(); end diff --git a/src/plugins/value/register.ml b/src/plugins/value/register.ml index c0f3de41edfdf7099f463245cd9e0a8fffff9a59..66f903fa3411a2ce7a43af45e50b4be09254a818 100644 --- a/src/plugins/value/register.ml +++ b/src/plugins/value/register.ml @@ -106,7 +106,6 @@ let main () = if Value_parameters.ForceValues.get () then begin !Db.Value.compute (); Value_parameters.ForceValues.output display_results; - if Value_parameters.ReusedExprs.get () then Mem_lvalue.compute (); end let () = Db.Main.extend main diff --git a/src/plugins/value/utils/mem_lvalue.ml b/src/plugins/value/utils/mem_lvalue.ml deleted file mode 100644 index eda4682869999b6c47d1280657e2a7fd9ea1bf00..0000000000000000000000000000000000000000 --- a/src/plugins/value/utils/mem_lvalue.ml +++ /dev/null @@ -1,530 +0,0 @@ -(**************************************************************************) -(* *) -(* This file is part of Frama-C. *) -(* *) -(* Copyright (C) 2007-2016 *) -(* CEA (Commissariat à l'énergie atomique et aux énergies *) -(* alternatives) *) -(* *) -(* you can redistribute it and/or modify it under the terms of the GNU *) -(* Lesser General Public License as published by the Free Software *) -(* Foundation, version 2.1. *) -(* *) -(* It is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *) -(* GNU Lesser General Public License for more details. *) -(* *) -(* See the GNU Lesser General Public License version 2.1 *) -(* for more details (enclosed in the file licenses/LGPLv2.1). *) -(* *) -(**************************************************************************) - -module KernelFile = File - -open Cil_types -open Cil_datatype -open Locations - -let debug = false - -(* ------------------------------------------------------------------------- *) -(* --- Constant or non-constant l-values --- *) -(* ------------------------------------------------------------------------- *) - -let lv_is_precise (lv: lval) = match lv with - | (Mem _, _) -> false - | (Var _, off) -> Cil.isConstantOffset off - -let lv_has_exact_loc stmt lv = - if Db.Value.is_computed () then - let exact state = - if Cvalue.Model.(equal bottom state) then - true - else - let loc = !Db.Value.lval_to_loc_state state lv in - Locations.cardinal_zero_or_one loc - in - match Db.Value.get_stmt_state_callstack ~after:false stmt with - | None -> exact (Db.Value.get_stmt_state stmt) - | Some by_stack -> - try - Value_types.Callstack.Hashtbl.iter - (fun _ state -> if not (exact state) then raise Exit) - by_stack; - true - with Exit -> false - else false - -let lv_imprecise_loc stmt lv = - not (lv_is_precise lv) && not (lv_has_exact_loc stmt lv) - - -(* ------------------------------------------------------------------------- *) -(* --- Use analysis --- *) -(* ------------------------------------------------------------------------- *) -type found = LV | Addr | Write - -module LatticeDirty = struct - type t = Bottom | Dirty | Known - - let join d1 d2 = match d1, d2 with - | Bottom, d | d, Bottom -> d - | Dirty, _ | _, Dirty -> Dirty - | Known, Known -> Known - - let bottom = Bottom - let is_included d1 d2 = match d1, d2 with - | _, Dirty | (Bottom | Known), Known | Bottom, Bottom -> true - | _ -> false - - let join_and_is_included d1 d2 = (join d1 d2, is_included d1 d2) - let pretty fmt = function - | Bottom -> Format.fprintf fmt "Bot" - | Dirty -> Format.fprintf fmt "dirty" - | Known -> Format.fprintf fmt "known" -end - -module Compute(X: sig - val kf: kernel_function - val lv: lval - val locs: (found * stmt) list -end) = struct - - include LatticeDirty - - (* Does the evaluation of [stmt] modifies the eventual value of [X.lv]? *) - let dirties stmt = match stmt.skind with - | Instr (Set _ | Call _) -> - let out = !Db.Outputs.statement stmt in - let state = Db.Value.get_stmt_state stmt in - let deps = Some Zone.bottom in - let for_writing = false in - let deps, z, _ = - !Db.Value.lval_to_zone_with_deps_state ~for_writing state ~deps X.lv - in - let r = Zone.intersects deps out || Zone.intersects z out in - if debug then Format.printf "S %d, %b, %a/%a|%a@." stmt.sid r - Zone.pretty out Zone.pretty deps Zone.pretty z; - r - | _ -> false - - let reads s = - let read (found, s') = Cil_datatype.Stmt.equal s s' && found = LV in - List.exists read X.locs - - let writes s = - let write (found, s') = Cil_datatype.Stmt.equal s s' && found = Write in - List.exists write X.locs - - let transfer_stmt stmt v = - if Db.Value.is_reachable_stmt stmt then - let v' = - if dirties stmt then - if writes stmt then Known else Dirty - else - if reads stmt then Known else v - in - List.map (fun s -> s, v') stmt.succs - else [] - - let init = [Kernel_function.find_first_stmt X.kf, Dirty] -end - -let compute kf lv locs = - let fenv = Dataflows.function_env kf in - let module Fenv = (val fenv: Dataflows.FUNCTION_ENV) in - let module Arg = struct - let kf = kf - let lv = lv - let locs = locs - end in - let module Arg2 = Compute(Arg) in - let module Dataflow = Dataflows.Simple_forward(Fenv)(Arg2) in - List.map - (fun (found, stmt) -> - let state = Dataflow.pre_state stmt in - found, stmt, state - ) - locs - - - -(* ------------------------------------------------------------------------- *) -(* --- Re-emitting statuses --- *) -(* ------------------------------------------------------------------------- *) - -let reemit = function - | Property.IPBehavior _ | Property.IPAxiom _ | Property.IPAxiomatic _ - | Property.IPPredicate (Property.PKAssumes _, _, _, _) -> false - | _ -> true - -let good_emitter emitter = - Emitter.Usable_emitter.get_name emitter = "Inferred annotations" - -let copy_ppt old_prj new_prj old_ppt new_ppt = - let module P = Property_status in - let emit s l = - Project.on new_prj - (fun s -> - let aux e = - let emitter = e.P.emitter in - if good_emitter emitter then - let emitter = Emitter.Usable_emitter.get emitter in - match s with - | P.True | P.False_and_reachable | P.Dont_know -> - let hyps = [] in (* TODO: sharing bug, we must convert the - property in the new project *) - P.emit emitter ~hyps new_ppt s - | P.False_if_reachable -> - (* in that case, the only hypothesis is "Reachable new_ppt" which - must be automatically added by the kernel *) - P.emit emitter ~hyps:[] new_ppt P.False_if_reachable - in - List.iter aux l - ) s - in - if reemit old_ppt then - match Project.on old_prj P.get old_ppt with - | P.Never_tried -> () - | P.Best(s, l) -> emit s l - | P.Inconsistent i -> - emit P.True i.P.valid; - emit P.False_and_reachable i.P.invalid - -(* Assumes the current project is old_prj *) -let dup_spec_status new_prj kf = - let kf_name = Kernel_function.get_name kf in - let new_kf = Project.on new_prj Globals.Functions.find_by_name kf_name in - let old_spec = Annotations.funspec ~populate:false kf in - let new_spec = - Project.on new_prj (Annotations.funspec ~populate:false) new_kf - in - let old_ppts = Property.ip_of_spec kf Kglobal [] old_spec in - let new_ppts = Property.ip_of_spec new_kf Kglobal [] new_spec in - let old_prj = Project.current () in -(* Project.set_current new_prj; *) - List.iter2 (copy_ppt old_prj new_prj) old_ppts new_ppts; -(* Project.set_current old_prj *) - - -(* ------------------------------------------------------------------------- *) -(* --- Results --- *) -(* ------------------------------------------------------------------------- *) - -module HLV = Cil_datatype.LvalStructEq.Hashtbl - -type _action = -| Read of varinfo * lval -| Invalidate of varinfo - -let lv_name lv = - (* Cabs2cil.fresh_global "tmplv" (* too fresh *) *) - let s = Pretty_utils.to_string Printer.pp_lval lv in - let regexp = Str.regexp "[^a-zA-Z0-9_]+" in - Str.global_replace regexp "_" s - -let instrument fundec lv locs hstmt hlv = - let typ = Cil.typeOfLval lv in - let size = Bit_utils.sizeof_lval lv in - match size with - | Int_Base.Top -> () - | Int_Base.Value _size -> - let typ = Cil.typeRemoveAttributes ["const"; "restrict"] typ in - let name = "__lv_" ^ lv_name lv in - (* TODOBUG: this local is registered in the AST of the original project *) - let vi = Cil.makeLocalVar fundec ~temp:false name typ in - HLV.add hlv lv vi; - let txt = Pretty_utils.to_string Printer.pp_lval lv in - vi.vdescr <- Some txt; -(* - let vtop = Cvalue.V_Or_Uninitialized.initialized Cvalue.V.top in - let default = Cvalue.V_Offsetmap.create_isotropic ~size vtop in - ignore (Cvalue.Default_offsetmap.create_initialized_var - vi (Base.validity_from_size size)) default); -*) - let h = Cil_datatype.Stmt.Hashtbl.create 16 in - let aux_occur (found, stmt, state) = - let i = try Stmt.Hashtbl.find h stmt with Not_found -> (false, false) in - match found with - | Addr -> () - | LV -> - if state = LatticeDirty.Dirty then - Stmt.Hashtbl.replace h stmt (true, snd i) - | Write -> - Stmt.Hashtbl.replace h stmt (fst i, true) - in - List.iter aux_occur locs; - Stmt.Hashtbl.iter - (fun stmt (before, after) -> - if before then Stmt.Hashtbl.add hstmt stmt (`Read lv); - if after then Stmt.Hashtbl.add hstmt stmt (`Write lv); - begin match stmt.skind with - | If (_, _, _, _) | Switch (_, _, _, _) -> - List.iter - (fun succ -> Stmt.Hashtbl.add hstmt succ (`Assert lv)) stmt.succs - | _ -> () - end; - ) h; -;; - -type skip_change = SkipChangeDeep | SkipOneChange - -module GraphDeps = struct - module V = struct - type t = varinfo * (varinfo list * stmt) - let compare (vi1, _) (vi2, _) = Cil_datatype.Varinfo.compare vi1 vi2 - let equal (vi1, _) (vi2, _) = Cil_datatype.Varinfo.equal vi1 vi2 - let hash (vi, _) = Cil_datatype.Varinfo.hash vi - end - - type t = V.t list - - let iter_vertex f (g:t) = List.iter f g - - let iter_succ f (g:t) ((_, (l, _)):V.t) = - let aux vi = - try - let assvi = List.assq vi g in - f (vi, assvi) - with Not_found -> () - in - List.iter aux l - -end - -module TopologicalBefore = Graph.Topological.Make(GraphDeps) - -class instrument project hstmt hlv = object (self) - inherit Visitor.frama_c_copy project - - val mutable change_lv = [] - val mutable is_alarm = false - val mutable changed = [] - - method private self = (self :> Visitor.frama_c_visitor) - - method! vlval lv = - match change_lv with - | SkipChangeDeep :: _ -> Cil.DoChildren - | SkipOneChange :: q -> begin - change_lv <- q; - Cil.DoChildren - end - | [] -> begin - try - let vi = HLV.find hlv lv in - let vi' = Visitor.visitFramacVarDecl self#self vi in - changed <- vi' :: changed; - Cil.ChangeTo (Var vi', NoOffset) - with Not_found -> Cil.DoChildren - end - - method! vexpr e = - match e.enode with - | StartOf _ | AddrOf _ -> - (* Skip to avoid unsoundness in codes such as - [int *p = t[i]; p++; y = *p; // does not read t[i] ] *) - change_lv <- SkipOneChange :: change_lv; - Cil.DoChildren - | SizeOfE _ | AlignOfE _ -> (* Skip for pretty-printing reasons *) - change_lv <- SkipChangeDeep :: change_lv; - Cil.DoChildrenPost (fun r -> change_lv <- List.tl change_lv; r) - | _ -> - Cil.DoChildren - - method! vpredicate_named named = - if is_alarm then - Cil.ChangeTo { named with content = Ptrue } - else Cil.DoChildren - - method! vcode_annot ca = - match Alarms.find ca with - | None -> Cil.DoChildren - | Some _ -> - is_alarm <- true; - Cil.DoChildrenPost (fun r -> is_alarm <- false; r) - - method private read_lv lv loc = - let vi = HLV.find hlv lv in - let vi' = Visitor.visitFramacVarDecl self#self vi in - change_lv <- SkipOneChange :: change_lv; - changed <- []; - let lv' = Visitor.visitFramacLval self#self lv in - let i = Set ((Var vi', NoOffset), Cil.new_exp ~loc (Lval lv'), loc) in - (vi', (changed, Cil.mkStmtOneInstr ~valid_sid:true i)) - - method private write_lv lv loc = - let vi = HLV.find hlv lv in - let vi' = Visitor.visitFramacVarDecl self#self vi in - change_lv <- SkipOneChange :: change_lv; - let lv' = Visitor.visitFramacLval self#self lv in - let i = Set (lv', Cil.new_exp ~loc (Lval (Var vi', NoOffset)), loc) in - Cil.mkStmtOneInstr ~valid_sid:true i - - method! vstmt_aux stmt = - let loc = Stmt.loc stmt in - let actions = Stmt.Hashtbl.find_all hstmt stmt in - let before = ref [] in - let after = ref [] in - let aux action = - match action with - | `Read lv -> before := self#read_lv lv loc :: !before - | `Write lv -> after := self#write_lv lv loc :: !after - | `Assert _lv -> () - in - List.iter aux actions; - match !before, !after with - | [], [] -> Cil.DoChildren - | _, _ -> - let aux (_, (_, stmt)) acc = stmt :: acc in - let before = TopologicalBefore.fold aux !before [] in - Cil.DoChildrenPost - (fun stmt' -> - let stmt'' = Cil.mkStmt stmt'.skind in - let stmts = before @ [stmt''] @ !after in - stmt'.skind <- Block (Cil.mkBlock stmts); - stmt') -end - -let print_lv lv locs = - match locs with - | [] -> [] - | _ :: _ -> - let stmts = List.map snd locs in - let dom = Dominators.nearest_common_ancestor stmts in - let loc = Cil_datatype.Stmt.loc dom in - let kf = Kernel_function.find_englobing_kf dom in - let locs' = compute kf lv locs in - let one_known = - List.exists (fun (found, _, state) -> - found = LV && state = LatticeDirty.Known) locs' - in - if one_known then - let aux fmt (k, stmt, state) = - let loc = Cil_datatype.Stmt.loc stmt in - Format.fprintf fmt - "function %a (%a), %s, %t" - Kernel_function.pretty kf Cil_datatype.Location.pretty loc - (match k with LV -> "read" | Addr -> "address" | Write -> "write") - (fun fmt -> if k <> Write then LatticeDirty.pretty fmt state) - in - Value_parameters.warning ~source:(fst loc) - "@[<v 2>%a@ %a@]" Printer.pp_lval lv - (Pretty_utils.pp_list ~pre:"" ~suf:"" aux) locs'; - locs' - else [] - - -class reused_lval = object (self) - inherit Visitor.frama_c_inplace - - val found = HLV.create 17 - - val hstmt = Stmt.Hashtbl.create 17 - val hlv = HLV.create 17 - - method instrument = - KernelFile.create_project_from_visitor "lvalue" - (fun p -> new instrument p hstmt hlv) - - method private add lv v = - (* TODO: check that no sub-lvalue is volatile *) - let typ = Cil.typeOfLval lv in - if not (Cil.typeHasQualifier "volatile" typ) then - try - let prev = HLV.find found lv in - HLV.replace found lv (v :: prev) - with Not_found -> - HLV.add found lv [v] - - method! vstmt_aux stmt = - match stmt.skind with - | UnspecifiedSequence seq -> - List.iter - (fun (stmt,_,_,_,_) -> - ignore (Visitor.visitFramacStmt (self:>Visitor.frama_c_visitor) stmt)) - seq; - Cil.SkipChildren (* do not visit the additional lvals *) - | _ -> Cil.DoChildren - - method private is_scalar lv = - match Cil.unrollType (Cil.typeOfLval lv) with - | TEnum _ | TInt _ | TFloat _ | TPtr _ -> true - | _ -> false - - method! vinst i = - let stmt = Extlib.the self#current_stmt in - match i with - | Set (lv, _, _) | Call (Some lv, _, _, _) when self#is_scalar lv -> - if lv_imprecise_loc stmt lv then self#add lv (Write, stmt); - Cil.DoChildren - | _ -> Cil.DoChildren - - method! vexpr e = - match self#current_stmt with - | None -> Cil.SkipChildren (* initializers *) - | Some stmt -> - match e.enode with - | SizeOf _ | SizeOfE _ | SizeOfStr _ | AlignOf _ | AlignOfE _ -> - Cil.SkipChildren (* skip things such as 'sizeof( *p )' *) - | Lval lv when self#is_scalar lv -> - if lv_imprecise_loc stmt lv then self#add lv (LV, stmt); - Cil.DoChildren - | StartOf lv | AddrOf lv when self#is_scalar lv -> - if false && lv_imprecise_loc stmt lv then self#add lv (Addr, stmt); - Cil.DoChildren - | _ -> Cil.DoChildren - - method! vglob_aux g = - match g with - | GFun (fdec, _) -> - Cil.DoChildrenPost - (fun g' -> - HLV.iter_sorted - (fun lv locs -> - let sort_loc (_, s1) (_, s2) = - Cil_datatype.(Location.compare (Stmt.loc s1) (Stmt.loc s2)) - in - let locs = List.sort sort_loc locs in - let locs' = print_lv lv locs in - if locs' <> [] then - instrument fdec lv locs' hstmt hlv - ) found; - HLV.clear found; - g') - - | _ -> Cil.SkipChildren - -end - -let compute () = - let vis = new reused_lval in - Visitor.visitFramacFileSameGlobals - (vis:> Visitor.frama_c_visitor) (Ast.get ()); - let new_prj = vis#instrument in - Project.on new_prj - (fun () -> - Cfg.clearFileCFG ~clear_id:false (Ast.get()); - Cfg.computeFileCFG (Ast.get()) - ) (); - Globals.Functions.iter (dup_spec_status new_prj) - -let compute, _ = - State_builder.apply_once "Value.Mem_lvalue" [Db.Value.self] compute - - -let () = Db.Main.extend - (fun () -> - if Value_parameters.(not (ForceValues.get ()) && ReusedExprs.get ()) then - (* Analysis done by Value itsefl otherwise *) - compute () - ) - - - -(* -Local Variables: -compile-command: "make -C ../../../.." -End: -*) diff --git a/src/plugins/value/utils/value_perf.ml b/src/plugins/value/utils/value_perf.ml index ea82848f31f2cca03a53d9da6bde8abbf11ab2f7..a0213cec72c75a1f922306da02e36194e7fd9b61 100644 --- a/src/plugins/value/utils/value_perf.ml +++ b/src/plugins/value/utils/value_perf.ml @@ -303,7 +303,7 @@ let caller_callee_callinfo = function | [] -> assert false ;; -let start_doing callstack = +let start_doing_perf callstack = if Value_parameters.ValShowPerf.get() then begin let time = Sys.time() in @@ -326,7 +326,7 @@ let start_doing callstack = end ;; -let stop_doing callstack = +let stop_doing_perf callstack = if Value_parameters.ValShowPerf.get() then begin let time = Sys.time() in @@ -339,7 +339,7 @@ let stop_doing callstack = end ;; -let reset() = +let reset_perf () = let reset_callinfo ci = ci.Call_info.nb_calls <- 0; ci.Call_info.nb_effective_calls <- 0; @@ -352,12 +352,123 @@ let reset() = Perf_by_callstack.reset perf ;; -(* TODO: Output files with more graphical outputs, such as +(* -------------------------------------------------------------------------- *) +(* --- Flamegraphs --- *) +(* -------------------------------------------------------------------------- *) + +(* Set to [Some _] if option [-val-dump-flamegraph] is set and [main] is + currently being analyzed and the file is ok. Otherwise, set to [None]. *) +let oc_flamegraph = ref None + +let stack_flamegraph = ref [] +(* Callstack for flamegraphs. The most recent function is at the top of the + list. The elements of the list are [(starting_time, self_total_time)]. + [starting_time] is the time when we started analyzing the function. + [total_time] is the time spent so far in the function itself, _without the + callees_. [total_time] is updated from [starting_time] when we start a + callee, or when the analysis of the function ends. This stack is never + empty when an analysis is in progress. *) + +(* pretty-prints the functions in a Value callstack, starting by main (i.e. + in reverse order). *) +let pretty_callstack oc l = + let rec aux oc = function + | [] -> () (* does not happen in theory *) + | [main, _] -> Printf.fprintf oc "%s" (Kernel_function.get_name main) + | (f, _) :: q -> + Printf.fprintf oc "%a;%s" aux q (Kernel_function.get_name f) + in + aux oc l + +(* update the [self_total_time] information for the function being analyzed, + assuming that the current time is [time] *) +let update_self_total_time time = + match !stack_flamegraph with + | [] -> assert false + | (start_caller, total) :: q -> + let d = duration start_caller time in + stack_flamegraph := (start_caller, d +. total) :: q + +(* called when a new function is being analyzed *) +let start_doing_flamegraph callstack = + match callstack with + | [] -> assert false + | [_] -> + (* Analysis of main *) + let file = Value_parameters.ValPerfFlamegraphs.get () in + if file <> "" then begin + try + (* Flamegraphs must be computed. Set up the stack and the output file *) + let oc = open_out file in + oc_flamegraph := Some oc; + stack_flamegraph := [ (Sys.time (), 0.) ] + with e -> + Value_parameters.error "cannot open flamegraph file: %s" + (Printexc.to_string e); + oc_flamegraph := None (* to be on the safe side *) + end + | _ :: _ :: _ -> + if !oc_flamegraph <> None then + (* Flamegraphs are being computed. Update time spent in current function + so far, then push a slot for the analysis of the new function *) + let time = Sys.time () in + update_self_total_time time; + stack_flamegraph := (time, 0.) :: !stack_flamegraph; +;; + +(* called when the analysis of a function ends. This function is at the top + of [callstack] *) +let stop_doing_flamegraph callstack = + match !oc_flamegraph with + | None -> () + | Some oc -> (* Flamegraphs are being recorded *) + let time = Sys.time() in + update_self_total_time time; (* update current function *) + match !stack_flamegraph with + | [] -> assert false + | (_, total) :: q -> + (* dump the total time (that we just updated) for the current function *) + Printf.fprintf oc "%a %.3f\n%!" + pretty_callstack callstack (total *. 1000.); + match q with + | [] -> stack_flamegraph := [] (* we are back to the main function *) + | (_, total_caller) :: q' -> + (* drop the current function from the flamegraph stack AND update + the 'current time' information, so that the time spent in the + callee is not counted. *) + stack_flamegraph := (time, total_caller) :: q' +;; + +let reset_flamegraph () = + match !oc_flamegraph with + | None -> () + | Some fd -> close_out fd; stack_flamegraph := [] + + +(* -------------------------------------------------------------------------- *) +(* --- Exported interface --- *) +(* -------------------------------------------------------------------------- *) - Flame graph output: - https://github.com/brendangregg/FlameGraph +let start_doing callgraph = + start_doing_perf callgraph; + start_doing_flamegraph callgraph; +;; + +let stop_doing callgraph = + stop_doing_perf callgraph; + stop_doing_flamegraph callgraph; +;; + + +let reset () = + reset_perf (); + reset_flamegraph (); +;; + + +(* TODO: Output files with more graphical outputs, such as - Gprof2dot-like output: (directoly outputu the dot) + Gprof2dot-like output: (directoly output the dot) http://code.google.com/p/jrfonseca/wiki/Gprof2Dot The latter would be useful to see when imbricated loops multiply diff --git a/src/plugins/value/value_parameters.ml b/src/plugins/value/value_parameters.ml index f6fea0ad3ea4e6df4ff1d467d6430cf3a5badf83..bc445448b23ebc9ce55cff301027e4038ccf13b6 100644 --- a/src/plugins/value/value_parameters.ml +++ b/src/plugins/value/value_parameters.ml @@ -116,6 +116,15 @@ module EqualityDomain = end) let () = add_precision_dep EqualityDomain.parameter +let () = Parameter_customize.set_group domains +module SymbolicLocsDomain = + False + (struct + let option_name = "-eva-symbolic-locations-domain" + let help = "Use dedicated domain for symbolic equalities. Experimental." + end) +let () = add_precision_dep SymbolicLocsDomain.parameter + let apron_help = "Experimental binding of the numerical domains provided \ by the APRON library: http://apron.cri.ensmp.fr/library \n" @@ -265,19 +274,6 @@ let () = starting point." Binary_cache.memory_footprint_var_name ) -(* ------------------------------------------------------------------------- *) -(* --- Relational analyses --- *) -(* ------------------------------------------------------------------------- *) - -let () = Parameter_customize.set_group performance -module ReusedExprs = - Bool - (struct - let option_name = "-val-reused-expressions" - let help = "undocumented" - let default = false - end) - (* ------------------------------------------------------------------------- *) (* --- Non-standard alarms --- *) @@ -897,24 +893,6 @@ let () = it has been replaced by -val-msg-key=-initial-state @]" ) -let () = Parameter_customize.set_group messages -module TimingStep = - Int - (struct - let option_name = "-val-show-time" - let default = 0 - let arg_name = "n" - let help = "Prints the time spent analyzing function calls, when it exceeds <n> seconds" - end) -module FloatTimingStep = - State_builder.Float_ref - (struct - let default () = Pervasives.infinity - let name = "Value_parameters.FloatTimingStep" - let dependencies = [TimingStep.self] - end) -let () = TimingStep.add_set_hook (fun _ x -> FloatTimingStep.set (float x)) - let () = Parameter_customize.set_group messages module ValShowPerf = False @@ -923,6 +901,19 @@ module ValShowPerf = let help = "Compute and shows a summary of the time spent analyzing function calls" end) +let () = Parameter_customize.set_group messages +module ValPerfFlamegraphs = + String + (struct + let option_name = "-val-flamegraph" + let help = "Dumps a summary of the time spent analyzing function calls \ + in a format suitable for the Flamegraph tool \ + (http://www.brendangregg.com/flamegraphs.html)" + let arg_name = "file" + let default = "" + end) + + let () = Parameter_customize.set_group messages module ShowSlevel = Int diff --git a/src/plugins/value/value_parameters.mli b/src/plugins/value/value_parameters.mli index 00319cd4c292341bfe359e6cd67e9245a658b2cd..850250856bf137999c65c50f2259942c9b6ae787 100644 --- a/src/plugins/value/value_parameters.mli +++ b/src/plugins/value/value_parameters.mli @@ -32,6 +32,7 @@ module ReductionDepth: Parameter_sig.Int module CvalueDomain: Parameter_sig.Bool module EqualityDomain: Parameter_sig.Bool +module SymbolicLocsDomain: Parameter_sig.Bool module BitwiseOffsmDomain: Parameter_sig.Bool module ApronOctagon: Parameter_sig.Bool @@ -107,8 +108,8 @@ module SplitGlobalStrategy: State_builder.Ref with type data = Split_strategy.t module ValShowProgress: Parameter_sig.Bool module ValShowInitialState: Parameter_sig.Bool -module FloatTimingStep: State_builder.Ref with type data = float module ValShowPerf: Parameter_sig.Bool +module ValPerfFlamegraphs: Parameter_sig.String module ShowSlevel: Parameter_sig.Int module PrintCallstacks: Parameter_sig.Bool module AlarmsWarnings: Parameter_sig.Bool @@ -121,8 +122,6 @@ module ObviouslyTerminatesAll: Parameter_sig.Bool module ObviouslyTerminatesFunctions: Parameter_sig.Fundec_set module StopAtNthAlarm: Parameter_sig.Int -module ReusedExprs: Parameter_sig.Bool - (** Dynamic allocation *) diff --git a/src/plugins/value/values/abstract_value.mli b/src/plugins/value/values/abstract_value.mli index 891de90f08f21868b97c00974e5e2e95630c5994..4eeae11615e7c06979c54a251da5a611f398373f 100644 --- a/src/plugins/value/values/abstract_value.mli +++ b/src/plugins/value/values/abstract_value.mli @@ -34,7 +34,6 @@ module type S = sig val top : t val is_included : t -> t -> bool val join : t -> t -> t - val join_and_is_included : t -> t -> t * bool val narrow : t -> t -> t or_bottom (** {3 Constructors } *) @@ -43,9 +42,9 @@ module type S = sig val float_zeros: t val top_int : t val inject_int : typ -> Integer.t -> t - - (** Creates all abstract values corresponding to the given type. *) - val all_values : typ -> t + val inject_address: varinfo -> t + (** Abstract address for the given varinfo. (With type "pointer to the type + of the variable" if the abstract values are typed.) *) (** {3 Forward Operations } *) diff --git a/src/plugins/value/values/main_values.ml b/src/plugins/value/values/main_values.ml index d6d93ca58aa53f2a8ac69aff49f9a1a50ebdf595..a1b7b0870a84bfb8e236d074fb4a3cc1c64a34e6 100644 --- a/src/plugins/value/values/main_values.ml +++ b/src/plugins/value/values/main_values.ml @@ -37,22 +37,19 @@ module CVal = struct let top = Cvalue.V.top let top_int = Cvalue.V.top_int let inject_int _typ = Cvalue.V.inject_int + let inject_address vi = + let base = Base.of_varinfo vi in + Cvalue.V.inject base Ival.zero let equal = Cvalue.V.equal let is_included = Cvalue.V.is_included let join = Cvalue.V.join - let join_and_is_included = Cvalue.V.join_and_is_included let narrow a b = let n = Cvalue.V.narrow a b in if Cvalue.V.is_bottom n then `Bottom else `Value n - let all_values typ = - let size = Cil.bitsSizeOf typ in - let sityp = Bit_utils.is_signed_int_enum_pointer typ in - Cvalue.V.create_all_values ~size ~signed:sityp - let constant exp = function | CInt64 (i,_k,_s) -> (* Integer constants never overflow, because the front-end chooses a suitable type. *) @@ -154,11 +151,6 @@ module Interval = struct | None, _ | _, None -> None | Some a, Some b -> Some (Ival.join a b) - let join_and_is_included a b = match a, b with - | _, None -> None, true - | None, _ -> None, false - | Some a, Some b -> let r, i = Ival.join_and_is_included a b in Some r, i - let narrow a b = match a, b with | None, x | x, None -> `Value x | Some a, Some b -> @@ -169,8 +161,7 @@ module Interval = struct let float_zeros = None let top_int = None let inject_int _typ _i = None - - let all_values _typ = None + let inject_address _ = None let top_eval = `Value top, Alarmset.all let constant _ _ = top_eval diff --git a/src/plugins/value/values/offsm_value.ml b/src/plugins/value/values/offsm_value.ml index 608d4d4443fa7774a426dc63f8c5439090e32976..b0dd168346df8f9b61a0fc19528bd2749d0807c4 100644 --- a/src/plugins/value/values/offsm_value.ml +++ b/src/plugins/value/values/offsm_value.ml @@ -388,15 +388,9 @@ module Offsm : Abstract_value.Internal with type t = offsm_or_top = struct | Top, _ | _, Top -> Top | O o1, O o2 -> O (V_Offsetmap.join o1 o2) - let join_and_is_included o1 o2 = match o1, o2 with - | _, Top -> Top, true - | Top, O _ -> Top, false - | O o1, O o2 -> O (V_Offsetmap.join o1 o2), V_Offsetmap.is_included o1 o2 - let narrow o1 o2 = match o1, o2 with | Top, o | o, Top -> `Value o | O o1, O o2 -> - let open Bottom.Type in V_Offsetmap.narrow o1 o2 >>-: (fun o -> O o) (* Simple values cannot be injected because we do not known their type @@ -404,7 +398,6 @@ module Offsm : Abstract_value.Internal with type t = offsm_or_top = struct let zero = Top let float_zeros = Top let top_int = Top - let all_values _ = Top let inject_int typ i = try @@ -412,6 +405,8 @@ module Offsm : Abstract_value.Internal with type t = offsm_or_top = struct O (inject ~size (V.inject_int i)) with Cil.SizeOfError _ -> Top + let inject_address _ = Top + let constant e _c = let o = if store_redundant then diff --git a/src/plugins/value/values/value_product.ml b/src/plugins/value/values/value_product.ml index 9f41a46b5b6193a3c8c5a2b5d6f27a130c476480..535353d523f6874dbbe6c5a11131172addad010e 100644 --- a/src/plugins/value/values/value_product.ml +++ b/src/plugins/value/values/value_product.ml @@ -48,10 +48,6 @@ module Make Left.is_included l1 l2 && Right.is_included r1 r2 let join (l1, r1) (l2, r2) = Left.join l1 l2, Right.join r1 r2 - let join_and_is_included (l1, r1) (l2, r2) = - let left, b1 = Left.join_and_is_included l1 l2 - and right, b2 = Right.join_and_is_included r1 r2 in - (left, right), b1 && b2 let narrow (l1, r1) (l2, r2) = Left.narrow l1 l2 >>- fun left -> Right.narrow r1 r2 >>-: fun right -> @@ -61,8 +57,7 @@ module Make let float_zeros = Left.float_zeros, Right.float_zeros let top_int = Left.top_int, Right.top_int let inject_int typ i = Left.inject_int typ i, Right.inject_int typ i - - let all_values typ = Left.all_values typ, Right.all_values typ + let inject_address vi = Left.inject_address vi, Right.inject_address vi let constant expr constant = Left.constant expr constant >>= fun left -> diff --git a/src/plugins/value/vtests b/src/plugins/value/vtests index 3834696c912535ab4e3e86b962b35ceba35a8179..55740e920cce55ccf863a3469d69aaf107adba53 100755 --- a/src/plugins/value/vtests +++ b/src/plugins/value/vtests @@ -25,3 +25,6 @@ echo Legacy echo Bitwise ./bin/ptests.opt -config bitwise $TESTS + +echo Symbolic locations +./bin/ptests.opt -config symblocs $TESTS diff --git a/src/plugins/value_types/precise_locs.ml b/src/plugins/value_types/precise_locs.ml index fa7e485e37aadf724cc67e372b46bf654302ef47..beaae5e8c4ccf9c918b80b6bf33b3d994ad9c154 100644 --- a/src/plugins/value_types/precise_locs.ml +++ b/src/plugins/value_types/precise_locs.ml @@ -257,6 +257,12 @@ let loc_bottom = { } let is_bottom_loc pl = pl.loc = PLBottom +let loc_top = { + loc = PLLoc Location_Bits.top; + size = Int_Base.top; +} +let is_top_loc pl = equal_loc loc_top pl + let rec fold_offset f po acc = match po with | POBottom -> f Ival.bottom acc diff --git a/src/plugins/value_types/precise_locs.mli b/src/plugins/value_types/precise_locs.mli index e75cf6993d587a67fd7e926ca73495f5fdd75cbf..aa235ea629a694c18112ff6770ef20e1c4162ace 100644 --- a/src/plugins/value_types/precise_locs.mli +++ b/src/plugins/value_types/precise_locs.mli @@ -81,6 +81,9 @@ val imprecise_location : precise_location -> Locations.location val loc_bottom : precise_location val is_bottom_loc: precise_location -> bool +val loc_top : precise_location +val is_top_loc: precise_location -> bool + val fold: (Locations.location -> 'a -> 'a) -> precise_location -> 'a -> 'a diff --git a/src/plugins/variadic/Makefile.in b/src/plugins/variadic/Makefile.in index 6a6737f222e8d50825713cbdbbfbd01b8433af98..5c984b67a2be0d926189d622341317a51e5d6d91 100644 --- a/src/plugins/variadic/Makefile.in +++ b/src/plugins/variadic/Makefile.in @@ -23,7 +23,7 @@ # Do not use ?= to initialize both below variables # (fixed efficiency issue, see GNU Make manual, Section 8.11) ifndef FRAMAC_SHARE -FRAMAC_SHARE :=$(shell frama-c-config -print-path) +FRAMAC_SHARE :=$(shell frama-c-config -print-share-path) endif ifndef FRAMAC_LIBDIR FRAMAC_LIBDIR :=$(shell frama-c-config -print-libpath) diff --git a/src/plugins/variadic/standard.ml b/src/plugins/variadic/standard.ml index 886160225e8791d2f79ddde3dfe0e1f345b2bae6..9744aeac05702e99912885ac0d57527d8af8c839 100644 --- a/src/plugins/variadic/standard.ml +++ b/src/plugins/variadic/standard.ml @@ -102,12 +102,12 @@ let match_args tparams args = (* translate a call by applying argument matching/pruning and changing callee *) -let match_call stmt loc lval new_callee new_tparams args = +let match_call ~fundec stmt loc lval new_callee new_tparams args = let block = Cil.mkBlock [] in let block_stmt = {stmt with skind = Block block} in let new_args, unused_args = match_args new_tparams args in let call = Build.call ~loc lval new_callee new_args in - let reads = List.map (Build.read ~loc) unused_args in + let reads = List.map (Cil.mkPureExpr ~fundec ~loc) unused_args in block.bstmts <- reads @ [call]; block_stmt @@ -121,7 +121,7 @@ let find_null exp_list = List.ifind (fun e -> Cil.isZero (Cil.constFold false e)) exp_list -let aggregator_call {a_target; a_pos; a_type; a_param} caller vf stmt = +let aggregator_call ~fundec {a_target; a_pos; a_type; a_param} vf stmt = (* Extract call informations *) let lval, args, loc = match stmt.skind with | Instr(Call(lval, _, args, loc)) -> lval, args, loc @@ -169,13 +169,13 @@ let aggregator_call {a_target; a_pos; a_type; a_param} caller vf stmt = let block = Cil.mkBlock [] in let block_stmt = {stmt with skind = Block block} in let pname = if pname = "" then "param" else pname in - let vaggr, assigns = Build.array_init ~loc caller block + let vaggr, assigns = Build.array_init ~loc fundec block pname ptyp args_middle in let new_arg = Cil.mkAddrOrStartOf ~loc (Cil.var vaggr) in let new_args = args_left @ [new_arg] @ args_right in let new_args,_ = match_args tparams new_args in let call = Build.call ~loc lval a_target new_args in - let reads = List.map (Build.read ~loc) unused_args in + let reads = List.map (Cil.mkPureExpr ~fundec ~loc) unused_args in block.bstmts <- assigns @ reads @ [call]; (* Return the created block *) @@ -222,7 +222,7 @@ let filter_matching_prototypes overload args = List.map fst candidates -let overloaded_call overload vf stmt = +let overloaded_call ~fundec overload vf stmt = (* Extract call informations *) let lval, args, loc = match stmt.skind with | Instr(Call(lval, _, args, loc)) -> lval, args, loc @@ -255,7 +255,7 @@ let overloaded_call overload vf stmt = Self.result ~current:true ~level:2 "Translating call to the specialized version %a." (pp_prototype name) tparams; - match_call stmt loc lval new_callee tparams args + match_call ~fundec stmt loc lval new_callee tparams args @@ -425,7 +425,7 @@ let build_fun_spec env loc vf format_fun tvparams formals = (* --- Call translation --- *) -let format_fun_call env format_fun vf stmt = +let format_fun_call ~fundec env format_fun vf stmt = (* Extract call informations *) let lval, args, loc = match stmt.skind with | Instr(Call(lval, _, args, loc)) -> lval, args, loc @@ -479,6 +479,6 @@ let format_fun_call env format_fun vf stmt = "Translating call to %s to a call to the specialized version %s." name new_callee.vname; let tparams = params_types new_params in - match_call stmt loc lval new_callee tparams args; + match_call ~fundec stmt loc lval new_callee tparams args diff --git a/src/plugins/variadic/tests/defined/oracle/multiple-va_start.0.res.oracle b/src/plugins/variadic/tests/defined/oracle/multiple-va_start.0.res.oracle index 3ecb6b7b0deba5f848afece736d1940bdbbaa705..b823cb7723a5785217f5be8e6870bd8c760afb1a 100644 --- a/src/plugins/variadic/tests/defined/oracle/multiple-va_start.0.res.oracle +++ b/src/plugins/variadic/tests/defined/oracle/multiple-va_start.0.res.oracle @@ -54,8 +54,32 @@ extern float strtof(char const *nptr, char **endptr); extern long double strtold(char const *nptr, char **endptr); /*@ assigns \result, *endptr; - assigns \result \from *(nptr+(0 ..)), base; - assigns *endptr \from nptr, *(nptr+(0 ..)), base; + assigns \result + \from (indirect: nptr), (indirect: *(nptr+(0 ..))), (indirect: base); + assigns *endptr + \from nptr, (indirect: *(nptr+(0 ..))), (indirect: endptr), + (indirect: base); + + behavior null_endptr: + assumes endptr ≡ \null; + assigns \result; + assigns \result + \from (indirect: nptr), (indirect: *(nptr+(0 ..))), (indirect: base); + + behavior nonnull_endptr: + assumes endptr ≢ \null; + requires \valid(endptr); + ensures \initialized(\old(endptr)); + ensures \subset(*\old(endptr), \old(nptr)+(0 ..)); + assigns \result, *endptr; + assigns \result + \from (indirect: nptr), (indirect: *(nptr+(0 ..))), (indirect: base); + assigns *endptr + \from nptr, (indirect: *(nptr+(0 ..))), (indirect: endptr), + (indirect: base); + + complete behaviors nonnull_endptr, null_endptr; + disjoint behaviors nonnull_endptr, null_endptr; */ extern long strtol(char const *nptr, char **endptr, int base); diff --git a/src/plugins/variadic/tests/defined/oracle/va_copy.0.res.oracle b/src/plugins/variadic/tests/defined/oracle/va_copy.0.res.oracle index 1883da6e5d0b32899a73b58836fb83c3599cb3a2..be7d397061984805be67e6cc28ddf1317c212c40 100644 --- a/src/plugins/variadic/tests/defined/oracle/va_copy.0.res.oracle +++ b/src/plugins/variadic/tests/defined/oracle/va_copy.0.res.oracle @@ -54,8 +54,32 @@ extern float strtof(char const *nptr, char **endptr); extern long double strtold(char const *nptr, char **endptr); /*@ assigns \result, *endptr; - assigns \result \from *(nptr+(0 ..)), base; - assigns *endptr \from nptr, *(nptr+(0 ..)), base; + assigns \result + \from (indirect: nptr), (indirect: *(nptr+(0 ..))), (indirect: base); + assigns *endptr + \from nptr, (indirect: *(nptr+(0 ..))), (indirect: endptr), + (indirect: base); + + behavior null_endptr: + assumes endptr ≡ \null; + assigns \result; + assigns \result + \from (indirect: nptr), (indirect: *(nptr+(0 ..))), (indirect: base); + + behavior nonnull_endptr: + assumes endptr ≢ \null; + requires \valid(endptr); + ensures \initialized(\old(endptr)); + ensures \subset(*\old(endptr), \old(nptr)+(0 ..)); + assigns \result, *endptr; + assigns \result + \from (indirect: nptr), (indirect: *(nptr+(0 ..))), (indirect: base); + assigns *endptr + \from nptr, (indirect: *(nptr+(0 ..))), (indirect: endptr), + (indirect: base); + + complete behaviors nonnull_endptr, null_endptr; + disjoint behaviors nonnull_endptr, null_endptr; */ extern long strtol(char const *nptr, char **endptr, int base); diff --git a/src/plugins/variadic/tests/known/oracle/exec.0.res.oracle b/src/plugins/variadic/tests/known/oracle/exec.0.res.oracle index 758986bbd5bac40c64fd78f4aaf9c0b51de577f8..93f14d2718a0602c0f589dafe5bed63509b621c9 100644 --- a/src/plugins/variadic/tests/known/oracle/exec.0.res.oracle +++ b/src/plugins/variadic/tests/known/oracle/exec.0.res.oracle @@ -529,24 +529,36 @@ int main(void) argv_5[1] = (char *)"-l"; argv_5[2] = (char *)"--color"; argv_5[3] = (char *)0; - if (42) ; + { + int tmp; + tmp = 42; + } execv("ls",(char * const *)(argv_5)); } { - char *argv_7[3]; - argv_7[0] = (char *)"ls"; - argv_7[1] = (char *)"-all"; - argv_7[2] = (char *)0; - if ((void *)0) ; - execvp("ls",(char * const *)(argv_7)); + char *argv_8[3]; + argv_8[0] = (char *)"ls"; + argv_8[1] = (char *)"-all"; + argv_8[2] = (char *)0; + { + void *tmp_10; + tmp_10 = (void *)0; + } + execvp("ls",(char * const *)(argv_8)); } { - char *argv_9[2]; - argv_9[0] = (char *)"ls"; - argv_9[1] = (char *)0; - if (42) ; - if ((void *)0) ; - execve("ls",(char * const *)(argv_9),(char * const *)(env)); + char *argv_12[2]; + argv_12[0] = (char *)"ls"; + argv_12[1] = (char *)0; + { + int tmp_14; + tmp_14 = 42; + } + { + void *tmp_16; + tmp_16 = (void *)0; + } + execve("ls",(char * const *)(argv_12),(char * const *)(env)); } { void *__va_args[2]; diff --git a/src/plugins/variadic/tests/known/oracle/fcntl.0.res.oracle b/src/plugins/variadic/tests/known/oracle/fcntl.0.res.oracle index d1c69182b6e0cf3bcb1adaf20ac238cce38cdea6..c833fd499796cd9a9fc4874e547b52d58d477749 100644 --- a/src/plugins/variadic/tests/known/oracle/fcntl.0.res.oracle +++ b/src/plugins/variadic/tests/known/oracle/fcntl.0.res.oracle @@ -93,11 +93,17 @@ int main(void) __va_fcntl_int(0,3,flags); __va_fcntl_flock(0,6,& fl); switch (choice) { - case 1: if (5) ; + case 1: { + int tmp; + tmp = 5; + } __va_fcntl_int(0,3,flags); case 2: __va_fcntl_void(0,3); case 3: __va_fcntl_flock(0,3,& fl); - case 4: if (0.5) ; + case 4: { + double tmp_7; + tmp_7 = 0.5; + } __va_fcntl_void(0,3); } __retres = 0; diff --git a/src/plugins/variadic/tests/known/oracle/open.0.res.oracle b/src/plugins/variadic/tests/known/oracle/open.0.res.oracle index 9eedec7fc47063374ca48c8cec9c593575f19b3c..938752f33ab9af89af9f2e652771f8ed21e7beb7 100644 --- a/src/plugins/variadic/tests/known/oracle/open.0.res.oracle +++ b/src/plugins/variadic/tests/known/oracle/open.0.res.oracle @@ -93,9 +93,18 @@ int main(void) file = (char *)"file"; fd1 = __va_open_mode_t((char const *)file,flag,(mode_t)mode); fd2 = __va_open_void((char const *)file,flag); - if (3) ; - if ("arg4") ; - if (5) ; + { + int tmp; + tmp = 3; + } + { + char const *tmp_12; + tmp_12 = "arg4"; + } + { + int tmp_14; + tmp_14 = 5; + } fd3 = __va_open_mode_t((char const *)file,flag,(mode_t)mode); __retres = 0; return __retres; diff --git a/src/plugins/variadic/tests/known/oracle/open_wrong.0.res.oracle b/src/plugins/variadic/tests/known/oracle/open_wrong.0.res.oracle index c6deb9847769884dcf22c2b90af97d51ce3acc13..75e44239dd7bd3ab11acd4aa8cb68197bfbfa82d 100644 --- a/src/plugins/variadic/tests/known/oracle/open_wrong.0.res.oracle +++ b/src/plugins/variadic/tests/known/oracle/open_wrong.0.res.oracle @@ -82,7 +82,10 @@ int main(void) int flag; file = (char *)"file"; flag = 0; - if ("") ; + { + char const *tmp; + tmp = ""; + } __va_open_void((char const *)file,flag); __retres = 0; return __retres; diff --git a/src/plugins/variadic/tests/known/oracle/openat.0.res.oracle b/src/plugins/variadic/tests/known/oracle/openat.0.res.oracle index 87bf8c27aecd858f769795e376f5ba1a3cdcfb79..697898521153f3baf92281c338589f12b195c033 100644 --- a/src/plugins/variadic/tests/known/oracle/openat.0.res.oracle +++ b/src/plugins/variadic/tests/known/oracle/openat.0.res.oracle @@ -91,7 +91,10 @@ int main(void) file = (char *)"file"; __va_openat_mode_t(0,(char const *)file,flag,mode1); __va_openat_mode_t(0,(char const *)file,flag,(mode_t)mode2); - if (3.0) ; + { + double tmp; + tmp = 3.0; + } __va_openat_void(0,(char const *)file,flag); __retres = 0; return __retres; diff --git a/src/plugins/variadic/tests/known/oracle/printf.0.res.oracle b/src/plugins/variadic/tests/known/oracle/printf.0.res.oracle index 62a95513efbd798bf4fa7365d5253ffa326ccbf4..47598f09c172d505c38b0facdb62e02ffc38da03 100644 --- a/src/plugins/variadic/tests/known/oracle/printf.0.res.oracle +++ b/src/plugins/variadic/tests/known/oracle/printf.0.res.oracle @@ -1,33 +1,33 @@ -FRAMAC_SHARE/libc/stdio.h:133:[va] Declaration of variadic function fprintf. -FRAMAC_SHARE/libc/stdio.h:138:[va] Declaration of variadic function fscanf. -FRAMAC_SHARE/libc/stdio.h:144:[va] Declaration of variadic function printf. -FRAMAC_SHARE/libc/stdio.h:149:[va] Declaration of variadic function scanf. -FRAMAC_SHARE/libc/stdio.h:154:[va] Declaration of variadic function snprintf. -FRAMAC_SHARE/libc/stdio.h:160:[va] Declaration of variadic function sprintf. -tests/known/printf.c:34:[va] Translating call to printf to a call to the specialized version printf_0. -tests/known/printf.c:35:[va] Translating call to printf to a call to the specialized version printf_1. -tests/known/printf.c:36:[va] Translating call to printf to a call to the specialized version printf_2. -tests/known/printf.c:38:[va] Translating call to printf to a call to the specialized version printf_3. -tests/known/printf.c:39:[va] Translating call to printf to a call to the specialized version printf_4. -tests/known/printf.c:40:[va] Translating call to printf to a call to the specialized version printf_5. -tests/known/printf.c:41:[va] Translating call to printf to a call to the specialized version printf_6. -tests/known/printf.c:42:[va] Translating call to printf to a call to the specialized version printf_7. -tests/known/printf.c:43:[va] Translating call to printf to a call to the specialized version printf_8. -tests/known/printf.c:44:[va] Translating call to printf to a call to the specialized version printf_9. -tests/known/printf.c:45:[va] Translating call to printf to a call to the specialized version printf_10. -tests/known/printf.c:47:[va] Translating call to printf to a call to the specialized version printf_11. -tests/known/printf.c:48:[va] Translating call to printf to a call to the specialized version printf_12. -tests/known/printf.c:49:[va] Translating call to printf to a call to the specialized version printf_13. -tests/known/printf.c:50:[va] Translating call to printf to a call to the specialized version printf_14. -tests/known/printf.c:51:[va] Translating call to printf to a call to the specialized version printf_15. -tests/known/printf.c:52:[va] Translating call to printf to a call to the specialized version printf_16. -tests/known/printf.c:53:[va] Translating call to printf to a call to the specialized version printf_17. -tests/known/printf.c:55:[va] Translating call to printf to a call to the specialized version printf_18. -tests/known/printf.c:57:[va] Translating call to printf to a call to the specialized version printf_19. -tests/known/printf.c:60:[va] Translating call to printf to a call to the specialized version printf_20. -tests/known/printf.c:61:[va] Translating call to printf to a call to the specialized version printf_21. -tests/known/printf.c:63:[va] warning: Flag ' ' and conversion specififer x are not compatibles. -tests/known/printf.c:63:[va] Generic translation of call to variadic function. +FRAMAC_SHARE/libc/stdio.h:134:[va] Declaration of variadic function fprintf. +FRAMAC_SHARE/libc/stdio.h:139:[va] Declaration of variadic function fscanf. +FRAMAC_SHARE/libc/stdio.h:145:[va] Declaration of variadic function printf. +FRAMAC_SHARE/libc/stdio.h:150:[va] Declaration of variadic function scanf. +FRAMAC_SHARE/libc/stdio.h:155:[va] Declaration of variadic function snprintf. +FRAMAC_SHARE/libc/stdio.h:161:[va] Declaration of variadic function sprintf. +tests/known/printf.c:33:[va] Translating call to printf to a call to the specialized version printf_0. +tests/known/printf.c:34:[va] Translating call to printf to a call to the specialized version printf_1. +tests/known/printf.c:35:[va] Translating call to printf to a call to the specialized version printf_2. +tests/known/printf.c:37:[va] Translating call to printf to a call to the specialized version printf_3. +tests/known/printf.c:38:[va] Translating call to printf to a call to the specialized version printf_4. +tests/known/printf.c:39:[va] Translating call to printf to a call to the specialized version printf_5. +tests/known/printf.c:40:[va] Translating call to printf to a call to the specialized version printf_6. +tests/known/printf.c:41:[va] Translating call to printf to a call to the specialized version printf_7. +tests/known/printf.c:42:[va] Translating call to printf to a call to the specialized version printf_8. +tests/known/printf.c:43:[va] Translating call to printf to a call to the specialized version printf_9. +tests/known/printf.c:44:[va] Translating call to printf to a call to the specialized version printf_10. +tests/known/printf.c:46:[va] Translating call to printf to a call to the specialized version printf_11. +tests/known/printf.c:47:[va] Translating call to printf to a call to the specialized version printf_12. +tests/known/printf.c:48:[va] Translating call to printf to a call to the specialized version printf_13. +tests/known/printf.c:49:[va] Translating call to printf to a call to the specialized version printf_14. +tests/known/printf.c:50:[va] Translating call to printf to a call to the specialized version printf_15. +tests/known/printf.c:51:[va] Translating call to printf to a call to the specialized version printf_16. +tests/known/printf.c:52:[va] Translating call to printf to a call to the specialized version printf_17. +tests/known/printf.c:54:[va] Translating call to printf to a call to the specialized version printf_18. +tests/known/printf.c:56:[va] Translating call to printf to a call to the specialized version printf_19. +tests/known/printf.c:59:[va] Translating call to printf to a call to the specialized version printf_20. +tests/known/printf.c:60:[va] Translating call to printf to a call to the specialized version printf_21. +tests/known/printf.c:62:[va] warning: Flag ' ' and conversion specififer x are not compatibles. +tests/known/printf.c:62:[va] Generic translation of call to variadic function. /* Generated by Frama-C */ typedef unsigned int size_t; typedef int wchar_t; @@ -130,8 +130,32 @@ extern float strtof(char const *nptr, char **endptr); extern long double strtold(char const *nptr, char **endptr); /*@ assigns \result, *endptr; - assigns \result \from *(nptr+(0 ..)), base; - assigns *endptr \from nptr, *(nptr+(0 ..)), base; + assigns \result + \from (indirect: nptr), (indirect: *(nptr+(0 ..))), (indirect: base); + assigns *endptr + \from nptr, (indirect: *(nptr+(0 ..))), (indirect: endptr), + (indirect: base); + + behavior null_endptr: + assumes endptr ≡ \null; + assigns \result; + assigns \result + \from (indirect: nptr), (indirect: *(nptr+(0 ..))), (indirect: base); + + behavior nonnull_endptr: + assumes endptr ≢ \null; + requires \valid(endptr); + ensures \initialized(\old(endptr)); + ensures \subset(*\old(endptr), \old(nptr)+(0 ..)); + assigns \result, *endptr; + assigns \result + \from (indirect: nptr), (indirect: *(nptr+(0 ..))), (indirect: base); + assigns *endptr + \from nptr, (indirect: *(nptr+(0 ..))), (indirect: endptr), + (indirect: base); + + complete behaviors nonnull_endptr, null_endptr; + disjoint behaviors nonnull_endptr, null_endptr; */ extern long strtol(char const *nptr, char **endptr, int base); @@ -386,8 +410,406 @@ extern imaxdiv_t imaxdiv(intmax_t numer, intmax_t denom); assigns *(endptr+(..)) \from *(nptr+(..)), base; assigns __FC_errno \from *(nptr+(..)), base; */ -extern intmax_t strtoimax(char const *nptr, char **endptr, int base); - +extern intmax_t strtoimax(char const *nptr, char **endptr, int base); + +/*@ ensures \result ≡ \null ∨ \subset(\result, \old(s)+(0 .. \old(n)-1)); + assigns \result; + assigns \result + \from s, (indirect: *(s+(0 .. n-1))), (indirect: c), (indirect: n); + */ +extern wchar_t *wmemchr(wchar_t const *s, wchar_t c, size_t n); + +/*@ assigns \result; + assigns \result + \from (indirect: *(s1+(0 .. n-1))), (indirect: *(s2+(0 .. n-1))), + (indirect: n); + */ +extern int wmemcmp(wchar_t const *s1, wchar_t const *s2, size_t n); + +/*@ requires \separated(dest+(0 .. n-1), src+(0 .. n-1)); + ensures \result ≡ \old(dest); + assigns *(dest+(0 .. n-1)), \result; + assigns *(dest+(0 .. n-1)) + \from *(src+(0 .. n-1)), (indirect: src), (indirect: n); + assigns \result \from dest; + */ +extern wchar_t *wmemcpy(wchar_t *dest, wchar_t const *src, size_t n); + +/*@ ensures \result ≡ \old(dest); + assigns *(dest+(0 .. n-1)), \result; + assigns *(dest+(0 .. n-1)) + \from *(src+(0 .. n-1)), (indirect: src), (indirect: n); + assigns \result \from dest; + */ +extern wchar_t *wmemmove(wchar_t *dest, wchar_t const *src, size_t n); + +/*@ ensures \result ≡ \old(wcs); + assigns *(wcs+(0 .. n-1)), \result; + assigns *(wcs+(0 .. n-1)) \from wc, (indirect: n); + assigns \result \from wcs; + */ +extern wchar_t *wmemset(wchar_t *wcs, wchar_t wc, size_t n); + +/*@ ensures \result ≡ \old(dest); + assigns *(dest+(0 ..)), \result; + assigns *(dest+(0 ..)) + \from *(dest+(0 ..)), (indirect: dest), *(src+(0 ..)), (indirect: src); + assigns \result \from dest; + */ +extern wchar_t *wcscat(wchar_t *dest, wchar_t const *src); + +/*@ ensures \result ≡ \null ∨ \subset(\result, \old(wcs)+(0 ..)); + assigns \result; + assigns \result \from wcs, (indirect: wc); + */ +extern wchar_t *wcschr(wchar_t const *wcs, wchar_t wc); + +/*@ assigns \result; + assigns \result \from (indirect: *(s1+(0 ..))), (indirect: *(s2+(0 ..))); + */ +extern int wcscmp(wchar_t const *s1, wchar_t const *s2); + +/*@ ensures \result ≡ \old(dest); + assigns *(dest+(0 ..)), \result; + assigns *(dest+(0 ..)) + \from *(src+(0 ..)), (indirect: src), *(dest+(0 ..)), (indirect: dest); + assigns \result \from dest; + */ +extern wchar_t *wcscpy(wchar_t *dest, wchar_t const *src); + +/*@ assigns \result; + assigns \result + \from (indirect: *(wcs+(0 ..))), (indirect: *(accept+(0 ..))); + */ +extern size_t wcscspn(wchar_t const *wcs, wchar_t const *accept); + +/*@ assigns *(dest+(0 ..)), \result; + assigns *(dest+(0 ..)) + \from *(dest+(0 ..)), (indirect: dest), *(src+(0 .. n-1)), + (indirect: src), (indirect: n); + assigns \result + \from (indirect: *(dest+(0 ..))), (indirect: *(src+(0 .. n-1))), + (indirect: n); + */ +extern size_t wcslcat(wchar_t *dest, wchar_t const *src, size_t n); + +/*@ requires \separated(dest+(0 .. n-1), src+(0 .. n-1)); + assigns *(dest+(0 .. n-1)), \result; + assigns *(dest+(0 .. n-1)) + \from *(src+(0 .. n-1)), (indirect: src), (indirect: n); + assigns \result + \from (indirect: *(dest+(0 .. n-1))), (indirect: dest), + (indirect: *(src+(0 .. n-1))), (indirect: src), (indirect: n); + */ +extern size_t wcslcpy(wchar_t *dest, wchar_t const *src, size_t n); + +/*@ assigns \result; + assigns \result \from (indirect: *(s+(0 ..))); */ +extern size_t wcslen(wchar_t const *s); + +/*@ ensures \result ≡ \old(dest); + assigns *(dest+(0 ..)), \result; + assigns *(dest+(0 ..)) + \from *(dest+(0 ..)), (indirect: dest), *(src+(0 .. n-1)), + (indirect: src), (indirect: n); + assigns \result \from dest; + */ +extern wchar_t *wcsncat(wchar_t *dest, wchar_t const *src, size_t n); + +/*@ assigns \result; + assigns \result + \from (indirect: *(s1+(0 .. n-1))), (indirect: *(s2+(0 .. n-1))), + (indirect: n); + */ +extern int wcsncmp(wchar_t const *s1, wchar_t const *s2, size_t n); + +/*@ requires \separated(dest+(0 .. n-1), src+(0 .. n-1)); + ensures \result ≡ \old(dest); + assigns *(dest+(0 .. n-1)), \result; + assigns *(dest+(0 .. n-1)) + \from *(src+(0 .. n-1)), (indirect: src), (indirect: n); + assigns \result \from dest; + */ +extern wchar_t *wcsncpy(wchar_t *dest, wchar_t const *src, size_t n); + +/*@ ensures \result ≡ \null ∨ \subset(\result, \old(wcs)+(0 ..)); + assigns \result; + assigns \result + \from wcs, (indirect: *(wcs+(0 ..))), (indirect: *(accept+(0 ..))); + */ +extern wchar_t *wcspbrk(wchar_t const *wcs, wchar_t const *accept); + +/*@ ensures \result ≡ \null ∨ \subset(\result, \old(wcs)+(0 ..)); + assigns \result; + assigns \result \from wcs, (indirect: *(wcs+(0 ..))), (indirect: wc); + */ +extern wchar_t *wcsrchr(wchar_t const *wcs, wchar_t wc); + +/*@ assigns \result; + assigns \result + \from (indirect: *(wcs+(0 ..))), (indirect: *(accept+(0 ..))); + */ +extern size_t wcsspn(wchar_t const *wcs, wchar_t const *accept); + +/*@ ensures \result ≡ \null ∨ \subset(\result, \old(haystack)+(0 ..)); + assigns \result; + assigns \result + \from haystack, (indirect: *(haystack+(0 ..))), + (indirect: *(needle+(0 ..))); + */ +extern wchar_t *wcsstr(wchar_t const *haystack, wchar_t const *needle); + +/*@ +axiomatic MemCmp { + logic ℤ memcmp{L1, L2}(char *s1, char *s2, ℤ n) + reads \at(*(s1+(0 .. n-1)),L1), \at(*(s2+(0 .. n-1)),L2); + + axiom memcmp_zero{L1, L2}: + ∀ char *s1, char *s2; + ∀ ℤ n; + memcmp{L1, L2}(s1, s2, n) ≡ 0 ⇔ + (∀ ℤ i; 0 ≤ i < n ⇒ \at(*(s1+i),L1) ≡ \at(*(s2+i),L2)); + + } + */ +/*@ +axiomatic MemChr { + logic 𔹠memchr{L}(char *s, ℤ c, ℤ n) + reads *(s+(0 .. n-1)); + + axiom memchr_def{L}: + ∀ char *s; + ∀ ℤ c; + ∀ ℤ n; + memchr(s, c, n) ≡ \true ⇔ (∃ int i; 0 ≤ i < n ∧ *(s+i) ≡ c); + + } + */ +/*@ +axiomatic MemSet { + logic 𔹠memset{L}(char *s, ℤ c, ℤ n) + reads *(s+(0 .. n-1)); + + axiom memset_def{L}: + ∀ char *s; + ∀ ℤ c; + ∀ ℤ n; + memset(s, c, n) ≡ \true ⇔ (∀ ℤ i; 0 ≤ i < n ⇒ *(s+i) ≡ c); + + } + */ +/*@ +axiomatic StrLen { + logic ℤ strlen{L}(char *s) + reads *(s+(0 ..)); + + axiom strlen_pos_or_null{L}: + ∀ char *s; + ∀ ℤ i; + 0 ≤ i ∧ (∀ ℤ j; 0 ≤ j < i ⇒ *(s+j) ≢ '\000') ∧ + *(s+i) ≡ '\000' ⇒ strlen(s) ≡ i; + + axiom strlen_neg{L}: + ∀ char *s; (∀ ℤ i; 0 ≤ i ⇒ *(s+i) ≢ '\000') ⇒ strlen(s) < 0; + + axiom strlen_before_null{L}: + ∀ char *s; + ∀ ℤ i; 0 ≤ i < strlen(s) ⇒ *(s+i) ≢ '\000'; + + axiom strlen_at_null{L}: + ∀ char *s; 0 ≤ strlen(s) ⇒ *(s+strlen(s)) ≡ '\000'; + + axiom strlen_not_zero{L}: + ∀ char *s; + ∀ ℤ i; 0 ≤ i ≤ strlen(s) ∧ *(s+i) ≢ '\000' ⇒ i < strlen(s); + + axiom strlen_zero{L}: + ∀ char *s; + ∀ ℤ i; + 0 ≤ i ≤ strlen(s) ∧ *(s+i) ≡ '\000' ⇒ i ≡ strlen(s); + + axiom strlen_sup{L}: + ∀ char *s; + ∀ ℤ i; 0 ≤ i ∧ *(s+i) ≡ '\000' ⇒ 0 ≤ strlen(s) ≤ i; + + axiom strlen_shift{L}: + ∀ char *s; + ∀ ℤ i; 0 ≤ i ≤ strlen(s) ⇒ strlen(s+i) ≡ strlen(s)-i; + + axiom strlen_create{L}: + ∀ char *s; + ∀ ℤ i; 0 ≤ i ∧ *(s+i) ≡ '\000' ⇒ 0 ≤ strlen(s) ≤ i; + + axiom strlen_create_shift{L}: + ∀ char *s; + ∀ ℤ i; + ∀ ℤ k; + 0 ≤ k ≤ i ∧ *(s+i) ≡ '\000' ⇒ 0 ≤ strlen(s+k) ≤ i-k; + + axiom memcmp_strlen_left{L}: + ∀ char *s1, char *s2; + ∀ ℤ n; + memcmp{L, L}(s1, s2, n) ≡ 0 ∧ strlen(s1) < n ⇒ + strlen(s1) ≡ strlen(s2); + + axiom memcmp_strlen_right{L}: + ∀ char *s1, char *s2; + ∀ ℤ n; + memcmp{L, L}(s1, s2, n) ≡ 0 ∧ strlen(s2) < n ⇒ + strlen(s1) ≡ strlen(s2); + + axiom memcmp_strlen_shift_left{L}: + ∀ char *s1, char *s2; + ∀ ℤ k, ℤ n; + memcmp{L, L}(s1, s2+k, n) ≡ 0 ≤ k ∧ strlen(s1) < n ⇒ + 0 ≤ strlen(s2) ≤ k+strlen(s1); + + axiom memcmp_strlen_shift_right{L}: + ∀ char *s1, char *s2; + ∀ ℤ k, ℤ n; + memcmp{L, L}(s1+k, s2, n) ≡ 0 ≤ k ∧ strlen(s2) < n ⇒ + 0 ≤ strlen(s1) ≤ k+strlen(s2); + + } + */ +/*@ +axiomatic StrCmp { + logic ℤ strcmp{L}(char *s1, char *s2) + reads *(s1+(0 .. strlen(s1))), *(s2+(0 .. strlen(s2))); + + axiom strcmp_zero{L}: + ∀ char *s1, char *s2; + strcmp(s1, s2) ≡ 0 ⇔ + strlen(s1) ≡ strlen(s2) ∧ + (∀ ℤ i; 0 ≤ i ≤ strlen(s1) ⇒ *(s1+i) ≡ *(s2+i)); + + } + */ +/*@ +axiomatic StrNCmp { + logic ℤ strncmp{L}(char *s1, char *s2, ℤ n) + reads *(s1+(0 .. n-1)), *(s2+(0 .. n-1)); + + axiom strncmp_zero{L}: + ∀ char *s1, char *s2; + ∀ ℤ n; + strncmp(s1, s2, n) ≡ 0 ⇔ + (strlen(s1) < n ∧ strcmp(s1, s2) ≡ 0) ∨ + (∀ ℤ i; 0 ≤ i < n ⇒ *(s1+i) ≡ *(s2+i)); + + } + */ +/*@ +axiomatic StrChr { + logic 𔹠strchr{L}(char *s, ℤ c) + reads *(s+(0 .. strlen(s))); + + axiom strchr_def{L}: + ∀ char *s; + ∀ ℤ c; + strchr(s, c) ≡ \true ⇔ + (∃ ℤ i; 0 ≤ i ≤ strlen(s) ∧ *(s+i) ≡ c); + + } + */ +/*@ +axiomatic WcsLen { + logic ℤ wcslen{L}(wchar_t *s) + reads *(s+(0 ..)); + + axiom wcslen_pos_or_null{L}: + ∀ wchar_t *s; + ∀ ℤ i; + 0 ≤ i ∧ (∀ ℤ j; 0 ≤ j < i ⇒ *(s+j) ≢ 0) ∧ *(s+i) ≡ 0 ⇒ + wcslen(s) ≡ i; + + axiom wcslen_neg{L}: + ∀ wchar_t *s; (∀ ℤ i; 0 ≤ i ⇒ *(s+i) ≢ 0) ⇒ wcslen(s) < 0; + + axiom wcslen_before_null{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i < wcslen(s) ⇒ *(s+i) ≢ 0; + + axiom wcslen_at_null{L}: + ∀ wchar_t *s; 0 ≤ wcslen(s) ⇒ *(s+wcslen(s)) ≡ 0; + + axiom wcslen_not_zero{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i ≤ wcslen(s) ∧ *(s+i) ≢ 0 ⇒ i < wcslen(s); + + axiom wcslen_zero{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i ≤ wcslen(s) ∧ *(s+i) ≡ 0 ⇒ i ≡ wcslen(s); + + axiom wcslen_sup{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i ∧ *(s+i) ≡ 0 ⇒ 0 ≤ wcslen(s) ≤ i; + + axiom wcslen_shift{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i ≤ wcslen(s) ⇒ wcslen(s+i) ≡ wcslen(s)-i; + + axiom wcslen_create{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i ∧ *(s+i) ≡ 0 ⇒ 0 ≤ wcslen(s) ≤ i; + + axiom wcslen_create_shift{L}: + ∀ wchar_t *s; + ∀ int i; + ∀ int k; 0 ≤ k ≤ i ∧ *(s+i) ≡ 0 ⇒ 0 ≤ wcslen(s+k) ≤ i-k; + + } + */ +/*@ +axiomatic WcsCmp { + logic ℤ wcscmp{L}(wchar_t *s1, wchar_t *s2) + reads *(s1+(0 .. wcslen(s1))), *(s2+(0 .. wcslen(s2))); + + axiom wcscmp_zero{L}: + ∀ wchar_t *s1, wchar_t *s2; + wcscmp(s1, s2) ≡ 0 ⇔ + wcslen(s1) ≡ wcslen(s2) ∧ + (∀ ℤ i; 0 ≤ i ≤ wcslen(s1) ⇒ *(s1+i) ≡ *(s2+i)); + + } + */ +/*@ +axiomatic WcsNCmp { + logic ℤ wcsncmp{L}(wchar_t *s1, wchar_t *s2, ℤ n) + reads *(s1+(0 .. n-1)), *(s2+(0 .. n-1)); + + axiom wcsncmp_zero{L}: + ∀ wchar_t *s1, wchar_t *s2; + ∀ ℤ n; + wcsncmp(s1, s2, n) ≡ 0 ⇔ + (wcslen(s1) < n ∧ wcscmp(s1, s2) ≡ 0) ∨ + (∀ ℤ i; 0 ≤ i < n ⇒ *(s1+i) ≡ *(s2+i)); + + } + */ +/*@ logic ℤ minimum(ℤ i, ℤ j) = i<j? i: j; + */ +/*@ logic ℤ maximum(ℤ i, ℤ j) = i<j? j: i; + */ +/*@ +predicate valid_string{L}(char *s) = + 0 ≤ strlen(s) ∧ \valid(s+(0 .. strlen(s))); + */ +/*@ +predicate valid_read_string{L}(char *s) = + 0 ≤ strlen(s) ∧ \valid_read(s+(0 .. strlen(s))); + */ +/*@ +predicate valid_string_or_null{L}(char *s) = s ≡ \null ∨ valid_string(s); + */ +/*@ +predicate valid_wstring{L}(wchar_t *s) = + 0 ≤ wcslen(s) ∧ \valid(s+(0 .. wcslen(s))); + */ +/*@ +predicate valid_wstring_or_null{L}(wchar_t *s) = + s ≡ \null ∨ valid_wstring(s); + */ FILE *__fc_stderr; FILE *__fc_stdin; @@ -694,257 +1116,6 @@ FILE __fc_initial_stdin = .__fc_real_data = (unsigned char *)0, .__fc_real_data_max_size = 0}; FILE *__fc_stdin = & __fc_initial_stdin; -/*@ -axiomatic MemCmp { - logic ℤ memcmp{L1, L2}(char *s1, char *s2, ℤ n) - reads \at(*(s1+(0 .. n-1)),L1), \at(*(s2+(0 .. n-1)),L2); - - axiom memcmp_zero{L1, L2}: - ∀ char *s1, char *s2; - ∀ ℤ n; - memcmp{L1, L2}(s1, s2, n) ≡ 0 ⇔ - (∀ ℤ i; 0 ≤ i < n ⇒ \at(*(s1+i),L1) ≡ \at(*(s2+i),L2)); - - } - */ -/*@ -axiomatic MemChr { - logic 𔹠memchr{L}(char *s, ℤ c, ℤ n) - reads *(s+(0 .. n-1)); - - axiom memchr_def{L}: - ∀ char *s; - ∀ ℤ c; - ∀ ℤ n; - memchr(s, c, n) ≡ \true ⇔ (∃ int i; 0 ≤ i < n ∧ *(s+i) ≡ c); - - } - */ -/*@ -axiomatic MemSet { - logic 𔹠memset{L}(char *s, ℤ c, ℤ n) - reads *(s+(0 .. n-1)); - - axiom memset_def{L}: - ∀ char *s; - ∀ ℤ c; - ∀ ℤ n; - memset(s, c, n) ≡ \true ⇔ (∀ ℤ i; 0 ≤ i < n ⇒ *(s+i) ≡ c); - - } - */ -/*@ -axiomatic StrLen { - logic ℤ strlen{L}(char *s) - reads *(s+(0 ..)); - - axiom strlen_pos_or_null{L}: - ∀ char *s; - ∀ ℤ i; - 0 ≤ i ∧ (∀ ℤ j; 0 ≤ j < i ⇒ *(s+j) ≢ '\000') ∧ - *(s+i) ≡ '\000' ⇒ strlen(s) ≡ i; - - axiom strlen_neg{L}: - ∀ char *s; (∀ ℤ i; 0 ≤ i ⇒ *(s+i) ≢ '\000') ⇒ strlen(s) < 0; - - axiom strlen_before_null{L}: - ∀ char *s; - ∀ ℤ i; 0 ≤ i < strlen(s) ⇒ *(s+i) ≢ '\000'; - - axiom strlen_at_null{L}: - ∀ char *s; 0 ≤ strlen(s) ⇒ *(s+strlen(s)) ≡ '\000'; - - axiom strlen_not_zero{L}: - ∀ char *s; - ∀ ℤ i; 0 ≤ i ≤ strlen(s) ∧ *(s+i) ≢ '\000' ⇒ i < strlen(s); - - axiom strlen_zero{L}: - ∀ char *s; - ∀ ℤ i; - 0 ≤ i ≤ strlen(s) ∧ *(s+i) ≡ '\000' ⇒ i ≡ strlen(s); - - axiom strlen_sup{L}: - ∀ char *s; - ∀ ℤ i; 0 ≤ i ∧ *(s+i) ≡ '\000' ⇒ 0 ≤ strlen(s) ≤ i; - - axiom strlen_shift{L}: - ∀ char *s; - ∀ ℤ i; 0 ≤ i ≤ strlen(s) ⇒ strlen(s+i) ≡ strlen(s)-i; - - axiom strlen_create{L}: - ∀ char *s; - ∀ ℤ i; 0 ≤ i ∧ *(s+i) ≡ '\000' ⇒ 0 ≤ strlen(s) ≤ i; - - axiom strlen_create_shift{L}: - ∀ char *s; - ∀ ℤ i; - ∀ ℤ k; - 0 ≤ k ≤ i ∧ *(s+i) ≡ '\000' ⇒ 0 ≤ strlen(s+k) ≤ i-k; - - axiom memcmp_strlen_left{L}: - ∀ char *s1, char *s2; - ∀ ℤ n; - memcmp{L, L}(s1, s2, n) ≡ 0 ∧ strlen(s1) < n ⇒ - strlen(s1) ≡ strlen(s2); - - axiom memcmp_strlen_right{L}: - ∀ char *s1, char *s2; - ∀ ℤ n; - memcmp{L, L}(s1, s2, n) ≡ 0 ∧ strlen(s2) < n ⇒ - strlen(s1) ≡ strlen(s2); - - axiom memcmp_strlen_shift_left{L}: - ∀ char *s1, char *s2; - ∀ ℤ k, ℤ n; - memcmp{L, L}(s1, s2+k, n) ≡ 0 ≤ k ∧ strlen(s1) < n ⇒ - 0 ≤ strlen(s2) ≤ k+strlen(s1); - - axiom memcmp_strlen_shift_right{L}: - ∀ char *s1, char *s2; - ∀ ℤ k, ℤ n; - memcmp{L, L}(s1+k, s2, n) ≡ 0 ≤ k ∧ strlen(s2) < n ⇒ - 0 ≤ strlen(s1) ≤ k+strlen(s2); - - } - */ -/*@ -axiomatic StrCmp { - logic ℤ strcmp{L}(char *s1, char *s2) - reads *(s1+(0 .. strlen(s1))), *(s2+(0 .. strlen(s2))); - - axiom strcmp_zero{L}: - ∀ char *s1, char *s2; - strcmp(s1, s2) ≡ 0 ⇔ - strlen(s1) ≡ strlen(s2) ∧ - (∀ ℤ i; 0 ≤ i ≤ strlen(s1) ⇒ *(s1+i) ≡ *(s2+i)); - - } - */ -/*@ -axiomatic StrNCmp { - logic ℤ strncmp{L}(char *s1, char *s2, ℤ n) - reads *(s1+(0 .. n-1)), *(s2+(0 .. n-1)); - - axiom strncmp_zero{L}: - ∀ char *s1, char *s2; - ∀ ℤ n; - strncmp(s1, s2, n) ≡ 0 ⇔ - (strlen(s1) < n ∧ strcmp(s1, s2) ≡ 0) ∨ - (∀ ℤ i; 0 ≤ i < n ⇒ *(s1+i) ≡ *(s2+i)); - - } - */ -/*@ -axiomatic StrChr { - logic 𔹠strchr{L}(char *s, ℤ c) - reads *(s+(0 .. strlen(s))); - - axiom strchr_def{L}: - ∀ char *s; - ∀ ℤ c; - strchr(s, c) ≡ \true ⇔ - (∃ ℤ i; 0 ≤ i ≤ strlen(s) ∧ *(s+i) ≡ c); - - } - */ -/*@ -axiomatic WcsLen { - logic ℤ wcslen{L}(wchar_t *s) - reads *(s+(0 ..)); - - axiom wcslen_pos_or_null{L}: - ∀ wchar_t *s; - ∀ ℤ i; - 0 ≤ i ∧ (∀ ℤ j; 0 ≤ j < i ⇒ *(s+j) ≢ 0) ∧ *(s+i) ≡ 0 ⇒ - wcslen(s) ≡ i; - - axiom wcslen_neg{L}: - ∀ wchar_t *s; (∀ ℤ i; 0 ≤ i ⇒ *(s+i) ≢ 0) ⇒ wcslen(s) < 0; - - axiom wcslen_before_null{L}: - ∀ wchar_t *s; - ∀ int i; 0 ≤ i < wcslen(s) ⇒ *(s+i) ≢ 0; - - axiom wcslen_at_null{L}: - ∀ wchar_t *s; 0 ≤ wcslen(s) ⇒ *(s+wcslen(s)) ≡ 0; - - axiom wcslen_not_zero{L}: - ∀ wchar_t *s; - ∀ int i; 0 ≤ i ≤ wcslen(s) ∧ *(s+i) ≢ 0 ⇒ i < wcslen(s); - - axiom wcslen_zero{L}: - ∀ wchar_t *s; - ∀ int i; 0 ≤ i ≤ wcslen(s) ∧ *(s+i) ≡ 0 ⇒ i ≡ wcslen(s); - - axiom wcslen_sup{L}: - ∀ wchar_t *s; - ∀ int i; 0 ≤ i ∧ *(s+i) ≡ 0 ⇒ 0 ≤ wcslen(s) ≤ i; - - axiom wcslen_shift{L}: - ∀ wchar_t *s; - ∀ int i; 0 ≤ i ≤ wcslen(s) ⇒ wcslen(s+i) ≡ wcslen(s)-i; - - axiom wcslen_create{L}: - ∀ wchar_t *s; - ∀ int i; 0 ≤ i ∧ *(s+i) ≡ 0 ⇒ 0 ≤ wcslen(s) ≤ i; - - axiom wcslen_create_shift{L}: - ∀ wchar_t *s; - ∀ int i; - ∀ int k; 0 ≤ k ≤ i ∧ *(s+i) ≡ 0 ⇒ 0 ≤ wcslen(s+k) ≤ i-k; - - } - */ -/*@ -axiomatic WcsCmp { - logic ℤ wcscmp{L}(wchar_t *s1, wchar_t *s2) - reads *(s1+(0 .. wcslen(s1))), *(s2+(0 .. wcslen(s2))); - - axiom wcscmp_zero{L}: - ∀ wchar_t *s1, wchar_t *s2; - wcscmp(s1, s2) ≡ 0 ⇔ - wcslen(s1) ≡ wcslen(s2) ∧ - (∀ ℤ i; 0 ≤ i ≤ wcslen(s1) ⇒ *(s1+i) ≡ *(s2+i)); - - } - */ -/*@ -axiomatic WcsNCmp { - logic ℤ wcsncmp{L}(wchar_t *s1, wchar_t *s2, ℤ n) - reads *(s1+(0 .. n-1)), *(s2+(0 .. n-1)); - - axiom wcsncmp_zero{L}: - ∀ wchar_t *s1, wchar_t *s2; - ∀ ℤ n; - wcsncmp(s1, s2, n) ≡ 0 ⇔ - (wcslen(s1) < n ∧ wcscmp(s1, s2) ≡ 0) ∨ - (∀ ℤ i; 0 ≤ i < n ⇒ *(s1+i) ≡ *(s2+i)); - - } - */ -/*@ logic ℤ minimum(ℤ i, ℤ j) = i<j? i: j; - */ -/*@ logic ℤ maximum(ℤ i, ℤ j) = i<j? j: i; - */ -/*@ -predicate valid_string{L}(char *s) = - 0 ≤ strlen(s) ∧ \valid(s+(0 .. strlen(s))); - */ -/*@ -predicate valid_read_string{L}(char *s) = - 0 ≤ strlen(s) ∧ \valid_read(s+(0 .. strlen(s))); - */ -/*@ -predicate valid_string_or_null{L}(char *s) = s ≡ \null ∨ valid_string(s); - */ -/*@ -predicate valid_wstring{L}(wchar_t *s) = - 0 ≤ wcslen(s) ∧ \valid(s+(0 .. wcslen(s))); - */ -/*@ -predicate valid_wstring_or_null{L}(wchar_t *s) = - s ≡ \null ∨ valid_wstring(s); - */ /*@ requires valid_read_string(format); assigns \result, *__fc_stdout; assigns \result \from *__fc_stdout, *(format+(0 ..)); diff --git a/src/plugins/variadic/tests/known/oracle/printf.1.res.oracle b/src/plugins/variadic/tests/known/oracle/printf.1.res.oracle index 89f775d575ced741426ea78221c2795c41a9b92f..7a6bd9218120d88dd0018ad0792ade02af73bbf0 100644 --- a/src/plugins/variadic/tests/known/oracle/printf.1.res.oracle +++ b/src/plugins/variadic/tests/known/oracle/printf.1.res.oracle @@ -1,4 +1,4 @@ -tests/known/printf.c:63:[va] warning: Flag ' ' and conversion specififer x are not compatibles. +tests/known/printf.c:62:[va] warning: Flag ' ' and conversion specififer x are not compatibles. [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed @@ -6,7 +6,7 @@ tests/known/printf.c:63:[va] warning: Flag ' ' and conversion specififer x are n [value] using specification for function printf_0 [value] using specification for function printf_1 [value] using specification for function printf_2 -tests/known/printf.c:36:[value] warning: function printf_2: precondition got status unknown. +tests/known/printf.c:35:[value] warning: function printf_2: precondition got status unknown. [value] using specification for function printf_3 [value] using specification for function printf_4 [value] using specification for function printf_5 diff --git a/src/plugins/variadic/tests/known/oracle/printf_wrong_arity.0.res.oracle b/src/plugins/variadic/tests/known/oracle/printf_wrong_arity.0.res.oracle index f2c194b1fa45c51c351d0bdda1e1624b9b2cedf1..92ec6df8486f676c42b7a1aa7dce805fce05be6e 100644 --- a/src/plugins/variadic/tests/known/oracle/printf_wrong_arity.0.res.oracle +++ b/src/plugins/variadic/tests/known/oracle/printf_wrong_arity.0.res.oracle @@ -1,18 +1,18 @@ -FRAMAC_SHARE/libc/stdio.h:133:[va] Declaration of variadic function fprintf. -FRAMAC_SHARE/libc/stdio.h:138:[va] Declaration of variadic function fscanf. -FRAMAC_SHARE/libc/stdio.h:144:[va] Declaration of variadic function printf. -FRAMAC_SHARE/libc/stdio.h:149:[va] Declaration of variadic function scanf. -FRAMAC_SHARE/libc/stdio.h:154:[va] Declaration of variadic function snprintf. -FRAMAC_SHARE/libc/stdio.h:160:[va] Declaration of variadic function sprintf. -tests/known/printf_wrong_arity.c:9:[va] Translating call to printf to a call to the specialized version printf_0. -tests/known/printf_wrong_arity.c:9:[va] warning: Too many arguments: expected 2, given 3. Superfluous arguments will be removed. -tests/known/printf_wrong_arity.c:10:[va] Translating call to printf to a call to the specialized version printf_1. -tests/known/printf_wrong_arity.c:10:[va] warning: Not enough arguments: expected 3, given 2. -tests/known/printf_wrong_arity.c:10:[va] Generic translation of call to variadic function. +FRAMAC_SHARE/libc/stdio.h:134:[va] Declaration of variadic function fprintf. +FRAMAC_SHARE/libc/stdio.h:139:[va] Declaration of variadic function fscanf. +FRAMAC_SHARE/libc/stdio.h:145:[va] Declaration of variadic function printf. +FRAMAC_SHARE/libc/stdio.h:150:[va] Declaration of variadic function scanf. +FRAMAC_SHARE/libc/stdio.h:155:[va] Declaration of variadic function snprintf. +FRAMAC_SHARE/libc/stdio.h:161:[va] Declaration of variadic function sprintf. +tests/known/printf_wrong_arity.c:8:[va] Translating call to printf to a call to the specialized version printf_0. +tests/known/printf_wrong_arity.c:8:[va] warning: Too many arguments: expected 2, given 3. Superfluous arguments will be removed. +tests/known/printf_wrong_arity.c:9:[va] Translating call to printf to a call to the specialized version printf_1. +tests/known/printf_wrong_arity.c:9:[va] warning: Not enough arguments: expected 3, given 2. +tests/known/printf_wrong_arity.c:9:[va] Generic translation of call to variadic function. /* Generated by Frama-C */ +typedef int wchar_t; typedef void * const *va_list; typedef unsigned int size_t; -typedef int wchar_t; typedef unsigned int ino_t; typedef unsigned int gid_t; typedef unsigned int uid_t; @@ -53,6 +53,257 @@ struct __fc_FILE { int __fc_real_data_max_size ; }; typedef struct __fc_FILE FILE; +/*@ +axiomatic MemCmp { + logic ℤ memcmp{L1, L2}(char *s1, char *s2, ℤ n) + reads \at(*(s1+(0 .. n-1)),L1), \at(*(s2+(0 .. n-1)),L2); + + axiom memcmp_zero{L1, L2}: + ∀ char *s1, char *s2; + ∀ ℤ n; + memcmp{L1, L2}(s1, s2, n) ≡ 0 ⇔ + (∀ ℤ i; 0 ≤ i < n ⇒ \at(*(s1+i),L1) ≡ \at(*(s2+i),L2)); + + } + */ +/*@ +axiomatic MemChr { + logic 𔹠memchr{L}(char *s, ℤ c, ℤ n) + reads *(s+(0 .. n-1)); + + axiom memchr_def{L}: + ∀ char *s; + ∀ ℤ c; + ∀ ℤ n; + memchr(s, c, n) ≡ \true ⇔ (∃ int i; 0 ≤ i < n ∧ *(s+i) ≡ c); + + } + */ +/*@ +axiomatic MemSet { + logic 𔹠memset{L}(char *s, ℤ c, ℤ n) + reads *(s+(0 .. n-1)); + + axiom memset_def{L}: + ∀ char *s; + ∀ ℤ c; + ∀ ℤ n; + memset(s, c, n) ≡ \true ⇔ (∀ ℤ i; 0 ≤ i < n ⇒ *(s+i) ≡ c); + + } + */ +/*@ +axiomatic StrLen { + logic ℤ strlen{L}(char *s) + reads *(s+(0 ..)); + + axiom strlen_pos_or_null{L}: + ∀ char *s; + ∀ ℤ i; + 0 ≤ i ∧ (∀ ℤ j; 0 ≤ j < i ⇒ *(s+j) ≢ '\000') ∧ + *(s+i) ≡ '\000' ⇒ strlen(s) ≡ i; + + axiom strlen_neg{L}: + ∀ char *s; (∀ ℤ i; 0 ≤ i ⇒ *(s+i) ≢ '\000') ⇒ strlen(s) < 0; + + axiom strlen_before_null{L}: + ∀ char *s; + ∀ ℤ i; 0 ≤ i < strlen(s) ⇒ *(s+i) ≢ '\000'; + + axiom strlen_at_null{L}: + ∀ char *s; 0 ≤ strlen(s) ⇒ *(s+strlen(s)) ≡ '\000'; + + axiom strlen_not_zero{L}: + ∀ char *s; + ∀ ℤ i; 0 ≤ i ≤ strlen(s) ∧ *(s+i) ≢ '\000' ⇒ i < strlen(s); + + axiom strlen_zero{L}: + ∀ char *s; + ∀ ℤ i; + 0 ≤ i ≤ strlen(s) ∧ *(s+i) ≡ '\000' ⇒ i ≡ strlen(s); + + axiom strlen_sup{L}: + ∀ char *s; + ∀ ℤ i; 0 ≤ i ∧ *(s+i) ≡ '\000' ⇒ 0 ≤ strlen(s) ≤ i; + + axiom strlen_shift{L}: + ∀ char *s; + ∀ ℤ i; 0 ≤ i ≤ strlen(s) ⇒ strlen(s+i) ≡ strlen(s)-i; + + axiom strlen_create{L}: + ∀ char *s; + ∀ ℤ i; 0 ≤ i ∧ *(s+i) ≡ '\000' ⇒ 0 ≤ strlen(s) ≤ i; + + axiom strlen_create_shift{L}: + ∀ char *s; + ∀ ℤ i; + ∀ ℤ k; + 0 ≤ k ≤ i ∧ *(s+i) ≡ '\000' ⇒ 0 ≤ strlen(s+k) ≤ i-k; + + axiom memcmp_strlen_left{L}: + ∀ char *s1, char *s2; + ∀ ℤ n; + memcmp{L, L}(s1, s2, n) ≡ 0 ∧ strlen(s1) < n ⇒ + strlen(s1) ≡ strlen(s2); + + axiom memcmp_strlen_right{L}: + ∀ char *s1, char *s2; + ∀ ℤ n; + memcmp{L, L}(s1, s2, n) ≡ 0 ∧ strlen(s2) < n ⇒ + strlen(s1) ≡ strlen(s2); + + axiom memcmp_strlen_shift_left{L}: + ∀ char *s1, char *s2; + ∀ ℤ k, ℤ n; + memcmp{L, L}(s1, s2+k, n) ≡ 0 ≤ k ∧ strlen(s1) < n ⇒ + 0 ≤ strlen(s2) ≤ k+strlen(s1); + + axiom memcmp_strlen_shift_right{L}: + ∀ char *s1, char *s2; + ∀ ℤ k, ℤ n; + memcmp{L, L}(s1+k, s2, n) ≡ 0 ≤ k ∧ strlen(s2) < n ⇒ + 0 ≤ strlen(s1) ≤ k+strlen(s2); + + } + */ +/*@ +axiomatic StrCmp { + logic ℤ strcmp{L}(char *s1, char *s2) + reads *(s1+(0 .. strlen(s1))), *(s2+(0 .. strlen(s2))); + + axiom strcmp_zero{L}: + ∀ char *s1, char *s2; + strcmp(s1, s2) ≡ 0 ⇔ + strlen(s1) ≡ strlen(s2) ∧ + (∀ ℤ i; 0 ≤ i ≤ strlen(s1) ⇒ *(s1+i) ≡ *(s2+i)); + + } + */ +/*@ +axiomatic StrNCmp { + logic ℤ strncmp{L}(char *s1, char *s2, ℤ n) + reads *(s1+(0 .. n-1)), *(s2+(0 .. n-1)); + + axiom strncmp_zero{L}: + ∀ char *s1, char *s2; + ∀ ℤ n; + strncmp(s1, s2, n) ≡ 0 ⇔ + (strlen(s1) < n ∧ strcmp(s1, s2) ≡ 0) ∨ + (∀ ℤ i; 0 ≤ i < n ⇒ *(s1+i) ≡ *(s2+i)); + + } + */ +/*@ +axiomatic StrChr { + logic 𔹠strchr{L}(char *s, ℤ c) + reads *(s+(0 .. strlen(s))); + + axiom strchr_def{L}: + ∀ char *s; + ∀ ℤ c; + strchr(s, c) ≡ \true ⇔ + (∃ ℤ i; 0 ≤ i ≤ strlen(s) ∧ *(s+i) ≡ c); + + } + */ +/*@ +axiomatic WcsLen { + logic ℤ wcslen{L}(wchar_t *s) + reads *(s+(0 ..)); + + axiom wcslen_pos_or_null{L}: + ∀ wchar_t *s; + ∀ ℤ i; + 0 ≤ i ∧ (∀ ℤ j; 0 ≤ j < i ⇒ *(s+j) ≢ 0) ∧ *(s+i) ≡ 0 ⇒ + wcslen(s) ≡ i; + + axiom wcslen_neg{L}: + ∀ wchar_t *s; (∀ ℤ i; 0 ≤ i ⇒ *(s+i) ≢ 0) ⇒ wcslen(s) < 0; + + axiom wcslen_before_null{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i < wcslen(s) ⇒ *(s+i) ≢ 0; + + axiom wcslen_at_null{L}: + ∀ wchar_t *s; 0 ≤ wcslen(s) ⇒ *(s+wcslen(s)) ≡ 0; + + axiom wcslen_not_zero{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i ≤ wcslen(s) ∧ *(s+i) ≢ 0 ⇒ i < wcslen(s); + + axiom wcslen_zero{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i ≤ wcslen(s) ∧ *(s+i) ≡ 0 ⇒ i ≡ wcslen(s); + + axiom wcslen_sup{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i ∧ *(s+i) ≡ 0 ⇒ 0 ≤ wcslen(s) ≤ i; + + axiom wcslen_shift{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i ≤ wcslen(s) ⇒ wcslen(s+i) ≡ wcslen(s)-i; + + axiom wcslen_create{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i ∧ *(s+i) ≡ 0 ⇒ 0 ≤ wcslen(s) ≤ i; + + axiom wcslen_create_shift{L}: + ∀ wchar_t *s; + ∀ int i; + ∀ int k; 0 ≤ k ≤ i ∧ *(s+i) ≡ 0 ⇒ 0 ≤ wcslen(s+k) ≤ i-k; + + } + */ +/*@ +axiomatic WcsCmp { + logic ℤ wcscmp{L}(wchar_t *s1, wchar_t *s2) + reads *(s1+(0 .. wcslen(s1))), *(s2+(0 .. wcslen(s2))); + + axiom wcscmp_zero{L}: + ∀ wchar_t *s1, wchar_t *s2; + wcscmp(s1, s2) ≡ 0 ⇔ + wcslen(s1) ≡ wcslen(s2) ∧ + (∀ ℤ i; 0 ≤ i ≤ wcslen(s1) ⇒ *(s1+i) ≡ *(s2+i)); + + } + */ +/*@ +axiomatic WcsNCmp { + logic ℤ wcsncmp{L}(wchar_t *s1, wchar_t *s2, ℤ n) + reads *(s1+(0 .. n-1)), *(s2+(0 .. n-1)); + + axiom wcsncmp_zero{L}: + ∀ wchar_t *s1, wchar_t *s2; + ∀ ℤ n; + wcsncmp(s1, s2, n) ≡ 0 ⇔ + (wcslen(s1) < n ∧ wcscmp(s1, s2) ≡ 0) ∨ + (∀ ℤ i; 0 ≤ i < n ⇒ *(s1+i) ≡ *(s2+i)); + + } + */ +/*@ logic ℤ minimum(ℤ i, ℤ j) = i<j? i: j; + */ +/*@ logic ℤ maximum(ℤ i, ℤ j) = i<j? j: i; + */ +/*@ +predicate valid_string{L}(char *s) = + 0 ≤ strlen(s) ∧ \valid(s+(0 .. strlen(s))); + */ +/*@ +predicate valid_read_string{L}(char *s) = + 0 ≤ strlen(s) ∧ \valid_read(s+(0 .. strlen(s))); + */ +/*@ +predicate valid_string_or_null{L}(char *s) = s ≡ \null ∨ valid_string(s); + */ +/*@ +predicate valid_wstring{L}(wchar_t *s) = + 0 ≤ wcslen(s) ∧ \valid(s+(0 .. wcslen(s))); + */ +/*@ +predicate valid_wstring_or_null{L}(wchar_t *s) = + s ≡ \null ∨ valid_wstring(s); + */ extern int __FC_errno; FILE *__fc_stderr; @@ -361,257 +612,6 @@ FILE __fc_initial_stdin = .__fc_real_data = (unsigned char *)0, .__fc_real_data_max_size = 0}; FILE *__fc_stdin = & __fc_initial_stdin; -/*@ -axiomatic MemCmp { - logic ℤ memcmp{L1, L2}(char *s1, char *s2, ℤ n) - reads \at(*(s1+(0 .. n-1)),L1), \at(*(s2+(0 .. n-1)),L2); - - axiom memcmp_zero{L1, L2}: - ∀ char *s1, char *s2; - ∀ ℤ n; - memcmp{L1, L2}(s1, s2, n) ≡ 0 ⇔ - (∀ ℤ i; 0 ≤ i < n ⇒ \at(*(s1+i),L1) ≡ \at(*(s2+i),L2)); - - } - */ -/*@ -axiomatic MemChr { - logic 𔹠memchr{L}(char *s, ℤ c, ℤ n) - reads *(s+(0 .. n-1)); - - axiom memchr_def{L}: - ∀ char *s; - ∀ ℤ c; - ∀ ℤ n; - memchr(s, c, n) ≡ \true ⇔ (∃ int i; 0 ≤ i < n ∧ *(s+i) ≡ c); - - } - */ -/*@ -axiomatic MemSet { - logic 𔹠memset{L}(char *s, ℤ c, ℤ n) - reads *(s+(0 .. n-1)); - - axiom memset_def{L}: - ∀ char *s; - ∀ ℤ c; - ∀ ℤ n; - memset(s, c, n) ≡ \true ⇔ (∀ ℤ i; 0 ≤ i < n ⇒ *(s+i) ≡ c); - - } - */ -/*@ -axiomatic StrLen { - logic ℤ strlen{L}(char *s) - reads *(s+(0 ..)); - - axiom strlen_pos_or_null{L}: - ∀ char *s; - ∀ ℤ i; - 0 ≤ i ∧ (∀ ℤ j; 0 ≤ j < i ⇒ *(s+j) ≢ '\000') ∧ - *(s+i) ≡ '\000' ⇒ strlen(s) ≡ i; - - axiom strlen_neg{L}: - ∀ char *s; (∀ ℤ i; 0 ≤ i ⇒ *(s+i) ≢ '\000') ⇒ strlen(s) < 0; - - axiom strlen_before_null{L}: - ∀ char *s; - ∀ ℤ i; 0 ≤ i < strlen(s) ⇒ *(s+i) ≢ '\000'; - - axiom strlen_at_null{L}: - ∀ char *s; 0 ≤ strlen(s) ⇒ *(s+strlen(s)) ≡ '\000'; - - axiom strlen_not_zero{L}: - ∀ char *s; - ∀ ℤ i; 0 ≤ i ≤ strlen(s) ∧ *(s+i) ≢ '\000' ⇒ i < strlen(s); - - axiom strlen_zero{L}: - ∀ char *s; - ∀ ℤ i; - 0 ≤ i ≤ strlen(s) ∧ *(s+i) ≡ '\000' ⇒ i ≡ strlen(s); - - axiom strlen_sup{L}: - ∀ char *s; - ∀ ℤ i; 0 ≤ i ∧ *(s+i) ≡ '\000' ⇒ 0 ≤ strlen(s) ≤ i; - - axiom strlen_shift{L}: - ∀ char *s; - ∀ ℤ i; 0 ≤ i ≤ strlen(s) ⇒ strlen(s+i) ≡ strlen(s)-i; - - axiom strlen_create{L}: - ∀ char *s; - ∀ ℤ i; 0 ≤ i ∧ *(s+i) ≡ '\000' ⇒ 0 ≤ strlen(s) ≤ i; - - axiom strlen_create_shift{L}: - ∀ char *s; - ∀ ℤ i; - ∀ ℤ k; - 0 ≤ k ≤ i ∧ *(s+i) ≡ '\000' ⇒ 0 ≤ strlen(s+k) ≤ i-k; - - axiom memcmp_strlen_left{L}: - ∀ char *s1, char *s2; - ∀ ℤ n; - memcmp{L, L}(s1, s2, n) ≡ 0 ∧ strlen(s1) < n ⇒ - strlen(s1) ≡ strlen(s2); - - axiom memcmp_strlen_right{L}: - ∀ char *s1, char *s2; - ∀ ℤ n; - memcmp{L, L}(s1, s2, n) ≡ 0 ∧ strlen(s2) < n ⇒ - strlen(s1) ≡ strlen(s2); - - axiom memcmp_strlen_shift_left{L}: - ∀ char *s1, char *s2; - ∀ ℤ k, ℤ n; - memcmp{L, L}(s1, s2+k, n) ≡ 0 ≤ k ∧ strlen(s1) < n ⇒ - 0 ≤ strlen(s2) ≤ k+strlen(s1); - - axiom memcmp_strlen_shift_right{L}: - ∀ char *s1, char *s2; - ∀ ℤ k, ℤ n; - memcmp{L, L}(s1+k, s2, n) ≡ 0 ≤ k ∧ strlen(s2) < n ⇒ - 0 ≤ strlen(s1) ≤ k+strlen(s2); - - } - */ -/*@ -axiomatic StrCmp { - logic ℤ strcmp{L}(char *s1, char *s2) - reads *(s1+(0 .. strlen(s1))), *(s2+(0 .. strlen(s2))); - - axiom strcmp_zero{L}: - ∀ char *s1, char *s2; - strcmp(s1, s2) ≡ 0 ⇔ - strlen(s1) ≡ strlen(s2) ∧ - (∀ ℤ i; 0 ≤ i ≤ strlen(s1) ⇒ *(s1+i) ≡ *(s2+i)); - - } - */ -/*@ -axiomatic StrNCmp { - logic ℤ strncmp{L}(char *s1, char *s2, ℤ n) - reads *(s1+(0 .. n-1)), *(s2+(0 .. n-1)); - - axiom strncmp_zero{L}: - ∀ char *s1, char *s2; - ∀ ℤ n; - strncmp(s1, s2, n) ≡ 0 ⇔ - (strlen(s1) < n ∧ strcmp(s1, s2) ≡ 0) ∨ - (∀ ℤ i; 0 ≤ i < n ⇒ *(s1+i) ≡ *(s2+i)); - - } - */ -/*@ -axiomatic StrChr { - logic 𔹠strchr{L}(char *s, ℤ c) - reads *(s+(0 .. strlen(s))); - - axiom strchr_def{L}: - ∀ char *s; - ∀ ℤ c; - strchr(s, c) ≡ \true ⇔ - (∃ ℤ i; 0 ≤ i ≤ strlen(s) ∧ *(s+i) ≡ c); - - } - */ -/*@ -axiomatic WcsLen { - logic ℤ wcslen{L}(wchar_t *s) - reads *(s+(0 ..)); - - axiom wcslen_pos_or_null{L}: - ∀ wchar_t *s; - ∀ ℤ i; - 0 ≤ i ∧ (∀ ℤ j; 0 ≤ j < i ⇒ *(s+j) ≢ 0) ∧ *(s+i) ≡ 0 ⇒ - wcslen(s) ≡ i; - - axiom wcslen_neg{L}: - ∀ wchar_t *s; (∀ ℤ i; 0 ≤ i ⇒ *(s+i) ≢ 0) ⇒ wcslen(s) < 0; - - axiom wcslen_before_null{L}: - ∀ wchar_t *s; - ∀ int i; 0 ≤ i < wcslen(s) ⇒ *(s+i) ≢ 0; - - axiom wcslen_at_null{L}: - ∀ wchar_t *s; 0 ≤ wcslen(s) ⇒ *(s+wcslen(s)) ≡ 0; - - axiom wcslen_not_zero{L}: - ∀ wchar_t *s; - ∀ int i; 0 ≤ i ≤ wcslen(s) ∧ *(s+i) ≢ 0 ⇒ i < wcslen(s); - - axiom wcslen_zero{L}: - ∀ wchar_t *s; - ∀ int i; 0 ≤ i ≤ wcslen(s) ∧ *(s+i) ≡ 0 ⇒ i ≡ wcslen(s); - - axiom wcslen_sup{L}: - ∀ wchar_t *s; - ∀ int i; 0 ≤ i ∧ *(s+i) ≡ 0 ⇒ 0 ≤ wcslen(s) ≤ i; - - axiom wcslen_shift{L}: - ∀ wchar_t *s; - ∀ int i; 0 ≤ i ≤ wcslen(s) ⇒ wcslen(s+i) ≡ wcslen(s)-i; - - axiom wcslen_create{L}: - ∀ wchar_t *s; - ∀ int i; 0 ≤ i ∧ *(s+i) ≡ 0 ⇒ 0 ≤ wcslen(s) ≤ i; - - axiom wcslen_create_shift{L}: - ∀ wchar_t *s; - ∀ int i; - ∀ int k; 0 ≤ k ≤ i ∧ *(s+i) ≡ 0 ⇒ 0 ≤ wcslen(s+k) ≤ i-k; - - } - */ -/*@ -axiomatic WcsCmp { - logic ℤ wcscmp{L}(wchar_t *s1, wchar_t *s2) - reads *(s1+(0 .. wcslen(s1))), *(s2+(0 .. wcslen(s2))); - - axiom wcscmp_zero{L}: - ∀ wchar_t *s1, wchar_t *s2; - wcscmp(s1, s2) ≡ 0 ⇔ - wcslen(s1) ≡ wcslen(s2) ∧ - (∀ ℤ i; 0 ≤ i ≤ wcslen(s1) ⇒ *(s1+i) ≡ *(s2+i)); - - } - */ -/*@ -axiomatic WcsNCmp { - logic ℤ wcsncmp{L}(wchar_t *s1, wchar_t *s2, ℤ n) - reads *(s1+(0 .. n-1)), *(s2+(0 .. n-1)); - - axiom wcsncmp_zero{L}: - ∀ wchar_t *s1, wchar_t *s2; - ∀ ℤ n; - wcsncmp(s1, s2, n) ≡ 0 ⇔ - (wcslen(s1) < n ∧ wcscmp(s1, s2) ≡ 0) ∨ - (∀ ℤ i; 0 ≤ i < n ⇒ *(s1+i) ≡ *(s2+i)); - - } - */ -/*@ logic ℤ minimum(ℤ i, ℤ j) = i<j? i: j; - */ -/*@ logic ℤ maximum(ℤ i, ℤ j) = i<j? j: i; - */ -/*@ -predicate valid_string{L}(char *s) = - 0 ≤ strlen(s) ∧ \valid(s+(0 .. strlen(s))); - */ -/*@ -predicate valid_read_string{L}(char *s) = - 0 ≤ strlen(s) ∧ \valid_read(s+(0 .. strlen(s))); - */ -/*@ -predicate valid_string_or_null{L}(char *s) = s ≡ \null ∨ valid_string(s); - */ -/*@ -predicate valid_wstring{L}(wchar_t *s) = - 0 ≤ wcslen(s) ∧ \valid(s+(0 .. wcslen(s))); - */ -/*@ -predicate valid_wstring_or_null{L}(wchar_t *s) = - s ≡ \null ∨ valid_wstring(s); - */ /*@ requires valid_read_string(format); assigns \result, *__fc_stdout; assigns \result \from *__fc_stdout, *(format+(0 ..)), param0; @@ -630,7 +630,10 @@ int printf_1(char const *format, int param0, int param1); int main(void) { int __retres; - if (2) ; + { + int tmp; + tmp = 2; + } printf_0("%d",1); { void *__va_args[1]; diff --git a/src/plugins/variadic/tests/known/oracle/printf_wrong_arity.1.res.oracle b/src/plugins/variadic/tests/known/oracle/printf_wrong_arity.1.res.oracle index 1706228ba572007f023ee7c3a0ce435ec56d73a0..6c0bf215da8e4e6e250f7fb273a887e25880fd8d 100644 --- a/src/plugins/variadic/tests/known/oracle/printf_wrong_arity.1.res.oracle +++ b/src/plugins/variadic/tests/known/oracle/printf_wrong_arity.1.res.oracle @@ -1,5 +1,5 @@ -tests/known/printf_wrong_arity.c:9:[va] warning: Too many arguments: expected 2, given 3. Superfluous arguments will be removed. -tests/known/printf_wrong_arity.c:10:[va] warning: Not enough arguments: expected 3, given 2. +tests/known/printf_wrong_arity.c:8:[va] warning: Too many arguments: expected 2, given 3. Superfluous arguments will be removed. +tests/known/printf_wrong_arity.c:9:[va] warning: Not enough arguments: expected 3, given 2. [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed diff --git a/src/plugins/variadic/tests/known/oracle/printf_wrong_pointers.0.res.oracle b/src/plugins/variadic/tests/known/oracle/printf_wrong_pointers.0.res.oracle index 0782a2c1fa34a263d36f3b85482a407e911306ff..0e8ca5da5ef5eee0fa31dbbe2339bbeeeb8fbb1f 100644 --- a/src/plugins/variadic/tests/known/oracle/printf_wrong_pointers.0.res.oracle +++ b/src/plugins/variadic/tests/known/oracle/printf_wrong_pointers.0.res.oracle @@ -1,18 +1,18 @@ -FRAMAC_SHARE/libc/stdio.h:133:[va] Declaration of variadic function fprintf. -FRAMAC_SHARE/libc/stdio.h:138:[va] Declaration of variadic function fscanf. -FRAMAC_SHARE/libc/stdio.h:144:[va] Declaration of variadic function printf. -FRAMAC_SHARE/libc/stdio.h:149:[va] Declaration of variadic function scanf. -FRAMAC_SHARE/libc/stdio.h:154:[va] Declaration of variadic function snprintf. -FRAMAC_SHARE/libc/stdio.h:160:[va] Declaration of variadic function sprintf. -tests/known/printf_wrong_pointers.c:15:[va] Translating call to printf to a call to the specialized version printf_0. -tests/known/printf_wrong_pointers.c:16:[va] Translating call to printf to a call to the specialized version printf_1. -tests/known/printf_wrong_pointers.c:17:[va] Translating call to printf to a call to the specialized version printf_2. -tests/known/printf_wrong_pointers.c:18:[va] Translating call to printf to a call to the specialized version printf_3. -tests/known/printf_wrong_pointers.c:19:[va] Translating call to printf to a call to the specialized version printf_4. +FRAMAC_SHARE/libc/stdio.h:134:[va] Declaration of variadic function fprintf. +FRAMAC_SHARE/libc/stdio.h:139:[va] Declaration of variadic function fscanf. +FRAMAC_SHARE/libc/stdio.h:145:[va] Declaration of variadic function printf. +FRAMAC_SHARE/libc/stdio.h:150:[va] Declaration of variadic function scanf. +FRAMAC_SHARE/libc/stdio.h:155:[va] Declaration of variadic function snprintf. +FRAMAC_SHARE/libc/stdio.h:161:[va] Declaration of variadic function sprintf. +tests/known/printf_wrong_pointers.c:14:[va] Translating call to printf to a call to the specialized version printf_0. +tests/known/printf_wrong_pointers.c:15:[va] Translating call to printf to a call to the specialized version printf_1. +tests/known/printf_wrong_pointers.c:16:[va] Translating call to printf to a call to the specialized version printf_2. +tests/known/printf_wrong_pointers.c:17:[va] Translating call to printf to a call to the specialized version printf_3. +tests/known/printf_wrong_pointers.c:18:[va] Translating call to printf to a call to the specialized version printf_4. /* Generated by Frama-C */ +typedef int wchar_t; typedef void * const *va_list; typedef unsigned int size_t; -typedef int wchar_t; typedef unsigned int ino_t; typedef unsigned int gid_t; typedef unsigned int uid_t; @@ -53,6 +53,257 @@ struct __fc_FILE { int __fc_real_data_max_size ; }; typedef struct __fc_FILE FILE; +/*@ +axiomatic MemCmp { + logic ℤ memcmp{L1, L2}(char *s1, char *s2, ℤ n) + reads \at(*(s1+(0 .. n-1)),L1), \at(*(s2+(0 .. n-1)),L2); + + axiom memcmp_zero{L1, L2}: + ∀ char *s1, char *s2; + ∀ ℤ n; + memcmp{L1, L2}(s1, s2, n) ≡ 0 ⇔ + (∀ ℤ i; 0 ≤ i < n ⇒ \at(*(s1+i),L1) ≡ \at(*(s2+i),L2)); + + } + */ +/*@ +axiomatic MemChr { + logic 𔹠memchr{L}(char *s, ℤ c, ℤ n) + reads *(s+(0 .. n-1)); + + axiom memchr_def{L}: + ∀ char *s; + ∀ ℤ c; + ∀ ℤ n; + memchr(s, c, n) ≡ \true ⇔ (∃ int i; 0 ≤ i < n ∧ *(s+i) ≡ c); + + } + */ +/*@ +axiomatic MemSet { + logic 𔹠memset{L}(char *s, ℤ c, ℤ n) + reads *(s+(0 .. n-1)); + + axiom memset_def{L}: + ∀ char *s; + ∀ ℤ c; + ∀ ℤ n; + memset(s, c, n) ≡ \true ⇔ (∀ ℤ i; 0 ≤ i < n ⇒ *(s+i) ≡ c); + + } + */ +/*@ +axiomatic StrLen { + logic ℤ strlen{L}(char *s) + reads *(s+(0 ..)); + + axiom strlen_pos_or_null{L}: + ∀ char *s; + ∀ ℤ i; + 0 ≤ i ∧ (∀ ℤ j; 0 ≤ j < i ⇒ *(s+j) ≢ '\000') ∧ + *(s+i) ≡ '\000' ⇒ strlen(s) ≡ i; + + axiom strlen_neg{L}: + ∀ char *s; (∀ ℤ i; 0 ≤ i ⇒ *(s+i) ≢ '\000') ⇒ strlen(s) < 0; + + axiom strlen_before_null{L}: + ∀ char *s; + ∀ ℤ i; 0 ≤ i < strlen(s) ⇒ *(s+i) ≢ '\000'; + + axiom strlen_at_null{L}: + ∀ char *s; 0 ≤ strlen(s) ⇒ *(s+strlen(s)) ≡ '\000'; + + axiom strlen_not_zero{L}: + ∀ char *s; + ∀ ℤ i; 0 ≤ i ≤ strlen(s) ∧ *(s+i) ≢ '\000' ⇒ i < strlen(s); + + axiom strlen_zero{L}: + ∀ char *s; + ∀ ℤ i; + 0 ≤ i ≤ strlen(s) ∧ *(s+i) ≡ '\000' ⇒ i ≡ strlen(s); + + axiom strlen_sup{L}: + ∀ char *s; + ∀ ℤ i; 0 ≤ i ∧ *(s+i) ≡ '\000' ⇒ 0 ≤ strlen(s) ≤ i; + + axiom strlen_shift{L}: + ∀ char *s; + ∀ ℤ i; 0 ≤ i ≤ strlen(s) ⇒ strlen(s+i) ≡ strlen(s)-i; + + axiom strlen_create{L}: + ∀ char *s; + ∀ ℤ i; 0 ≤ i ∧ *(s+i) ≡ '\000' ⇒ 0 ≤ strlen(s) ≤ i; + + axiom strlen_create_shift{L}: + ∀ char *s; + ∀ ℤ i; + ∀ ℤ k; + 0 ≤ k ≤ i ∧ *(s+i) ≡ '\000' ⇒ 0 ≤ strlen(s+k) ≤ i-k; + + axiom memcmp_strlen_left{L}: + ∀ char *s1, char *s2; + ∀ ℤ n; + memcmp{L, L}(s1, s2, n) ≡ 0 ∧ strlen(s1) < n ⇒ + strlen(s1) ≡ strlen(s2); + + axiom memcmp_strlen_right{L}: + ∀ char *s1, char *s2; + ∀ ℤ n; + memcmp{L, L}(s1, s2, n) ≡ 0 ∧ strlen(s2) < n ⇒ + strlen(s1) ≡ strlen(s2); + + axiom memcmp_strlen_shift_left{L}: + ∀ char *s1, char *s2; + ∀ ℤ k, ℤ n; + memcmp{L, L}(s1, s2+k, n) ≡ 0 ≤ k ∧ strlen(s1) < n ⇒ + 0 ≤ strlen(s2) ≤ k+strlen(s1); + + axiom memcmp_strlen_shift_right{L}: + ∀ char *s1, char *s2; + ∀ ℤ k, ℤ n; + memcmp{L, L}(s1+k, s2, n) ≡ 0 ≤ k ∧ strlen(s2) < n ⇒ + 0 ≤ strlen(s1) ≤ k+strlen(s2); + + } + */ +/*@ +axiomatic StrCmp { + logic ℤ strcmp{L}(char *s1, char *s2) + reads *(s1+(0 .. strlen(s1))), *(s2+(0 .. strlen(s2))); + + axiom strcmp_zero{L}: + ∀ char *s1, char *s2; + strcmp(s1, s2) ≡ 0 ⇔ + strlen(s1) ≡ strlen(s2) ∧ + (∀ ℤ i; 0 ≤ i ≤ strlen(s1) ⇒ *(s1+i) ≡ *(s2+i)); + + } + */ +/*@ +axiomatic StrNCmp { + logic ℤ strncmp{L}(char *s1, char *s2, ℤ n) + reads *(s1+(0 .. n-1)), *(s2+(0 .. n-1)); + + axiom strncmp_zero{L}: + ∀ char *s1, char *s2; + ∀ ℤ n; + strncmp(s1, s2, n) ≡ 0 ⇔ + (strlen(s1) < n ∧ strcmp(s1, s2) ≡ 0) ∨ + (∀ ℤ i; 0 ≤ i < n ⇒ *(s1+i) ≡ *(s2+i)); + + } + */ +/*@ +axiomatic StrChr { + logic 𔹠strchr{L}(char *s, ℤ c) + reads *(s+(0 .. strlen(s))); + + axiom strchr_def{L}: + ∀ char *s; + ∀ ℤ c; + strchr(s, c) ≡ \true ⇔ + (∃ ℤ i; 0 ≤ i ≤ strlen(s) ∧ *(s+i) ≡ c); + + } + */ +/*@ +axiomatic WcsLen { + logic ℤ wcslen{L}(wchar_t *s) + reads *(s+(0 ..)); + + axiom wcslen_pos_or_null{L}: + ∀ wchar_t *s; + ∀ ℤ i; + 0 ≤ i ∧ (∀ ℤ j; 0 ≤ j < i ⇒ *(s+j) ≢ 0) ∧ *(s+i) ≡ 0 ⇒ + wcslen(s) ≡ i; + + axiom wcslen_neg{L}: + ∀ wchar_t *s; (∀ ℤ i; 0 ≤ i ⇒ *(s+i) ≢ 0) ⇒ wcslen(s) < 0; + + axiom wcslen_before_null{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i < wcslen(s) ⇒ *(s+i) ≢ 0; + + axiom wcslen_at_null{L}: + ∀ wchar_t *s; 0 ≤ wcslen(s) ⇒ *(s+wcslen(s)) ≡ 0; + + axiom wcslen_not_zero{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i ≤ wcslen(s) ∧ *(s+i) ≢ 0 ⇒ i < wcslen(s); + + axiom wcslen_zero{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i ≤ wcslen(s) ∧ *(s+i) ≡ 0 ⇒ i ≡ wcslen(s); + + axiom wcslen_sup{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i ∧ *(s+i) ≡ 0 ⇒ 0 ≤ wcslen(s) ≤ i; + + axiom wcslen_shift{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i ≤ wcslen(s) ⇒ wcslen(s+i) ≡ wcslen(s)-i; + + axiom wcslen_create{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i ∧ *(s+i) ≡ 0 ⇒ 0 ≤ wcslen(s) ≤ i; + + axiom wcslen_create_shift{L}: + ∀ wchar_t *s; + ∀ int i; + ∀ int k; 0 ≤ k ≤ i ∧ *(s+i) ≡ 0 ⇒ 0 ≤ wcslen(s+k) ≤ i-k; + + } + */ +/*@ +axiomatic WcsCmp { + logic ℤ wcscmp{L}(wchar_t *s1, wchar_t *s2) + reads *(s1+(0 .. wcslen(s1))), *(s2+(0 .. wcslen(s2))); + + axiom wcscmp_zero{L}: + ∀ wchar_t *s1, wchar_t *s2; + wcscmp(s1, s2) ≡ 0 ⇔ + wcslen(s1) ≡ wcslen(s2) ∧ + (∀ ℤ i; 0 ≤ i ≤ wcslen(s1) ⇒ *(s1+i) ≡ *(s2+i)); + + } + */ +/*@ +axiomatic WcsNCmp { + logic ℤ wcsncmp{L}(wchar_t *s1, wchar_t *s2, ℤ n) + reads *(s1+(0 .. n-1)), *(s2+(0 .. n-1)); + + axiom wcsncmp_zero{L}: + ∀ wchar_t *s1, wchar_t *s2; + ∀ ℤ n; + wcsncmp(s1, s2, n) ≡ 0 ⇔ + (wcslen(s1) < n ∧ wcscmp(s1, s2) ≡ 0) ∨ + (∀ ℤ i; 0 ≤ i < n ⇒ *(s1+i) ≡ *(s2+i)); + + } + */ +/*@ logic ℤ minimum(ℤ i, ℤ j) = i<j? i: j; + */ +/*@ logic ℤ maximum(ℤ i, ℤ j) = i<j? j: i; + */ +/*@ +predicate valid_string{L}(char *s) = + 0 ≤ strlen(s) ∧ \valid(s+(0 .. strlen(s))); + */ +/*@ +predicate valid_read_string{L}(char *s) = + 0 ≤ strlen(s) ∧ \valid_read(s+(0 .. strlen(s))); + */ +/*@ +predicate valid_string_or_null{L}(char *s) = s ≡ \null ∨ valid_string(s); + */ +/*@ +predicate valid_wstring{L}(wchar_t *s) = + 0 ≤ wcslen(s) ∧ \valid(s+(0 .. wcslen(s))); + */ +/*@ +predicate valid_wstring_or_null{L}(wchar_t *s) = + s ≡ \null ∨ valid_wstring(s); + */ extern int __FC_errno; extern FILE *__fc_stdin; @@ -329,257 +580,6 @@ extern int ferror_unlocked(FILE *stream); assigns \result \from *stream; */ extern int fileno_unlocked(FILE *stream); -/*@ -axiomatic MemCmp { - logic ℤ memcmp{L1, L2}(char *s1, char *s2, ℤ n) - reads \at(*(s1+(0 .. n-1)),L1), \at(*(s2+(0 .. n-1)),L2); - - axiom memcmp_zero{L1, L2}: - ∀ char *s1, char *s2; - ∀ ℤ n; - memcmp{L1, L2}(s1, s2, n) ≡ 0 ⇔ - (∀ ℤ i; 0 ≤ i < n ⇒ \at(*(s1+i),L1) ≡ \at(*(s2+i),L2)); - - } - */ -/*@ -axiomatic MemChr { - logic 𔹠memchr{L}(char *s, ℤ c, ℤ n) - reads *(s+(0 .. n-1)); - - axiom memchr_def{L}: - ∀ char *s; - ∀ ℤ c; - ∀ ℤ n; - memchr(s, c, n) ≡ \true ⇔ (∃ int i; 0 ≤ i < n ∧ *(s+i) ≡ c); - - } - */ -/*@ -axiomatic MemSet { - logic 𔹠memset{L}(char *s, ℤ c, ℤ n) - reads *(s+(0 .. n-1)); - - axiom memset_def{L}: - ∀ char *s; - ∀ ℤ c; - ∀ ℤ n; - memset(s, c, n) ≡ \true ⇔ (∀ ℤ i; 0 ≤ i < n ⇒ *(s+i) ≡ c); - - } - */ -/*@ -axiomatic StrLen { - logic ℤ strlen{L}(char *s) - reads *(s+(0 ..)); - - axiom strlen_pos_or_null{L}: - ∀ char *s; - ∀ ℤ i; - 0 ≤ i ∧ (∀ ℤ j; 0 ≤ j < i ⇒ *(s+j) ≢ '\000') ∧ - *(s+i) ≡ '\000' ⇒ strlen(s) ≡ i; - - axiom strlen_neg{L}: - ∀ char *s; (∀ ℤ i; 0 ≤ i ⇒ *(s+i) ≢ '\000') ⇒ strlen(s) < 0; - - axiom strlen_before_null{L}: - ∀ char *s; - ∀ ℤ i; 0 ≤ i < strlen(s) ⇒ *(s+i) ≢ '\000'; - - axiom strlen_at_null{L}: - ∀ char *s; 0 ≤ strlen(s) ⇒ *(s+strlen(s)) ≡ '\000'; - - axiom strlen_not_zero{L}: - ∀ char *s; - ∀ ℤ i; 0 ≤ i ≤ strlen(s) ∧ *(s+i) ≢ '\000' ⇒ i < strlen(s); - - axiom strlen_zero{L}: - ∀ char *s; - ∀ ℤ i; - 0 ≤ i ≤ strlen(s) ∧ *(s+i) ≡ '\000' ⇒ i ≡ strlen(s); - - axiom strlen_sup{L}: - ∀ char *s; - ∀ ℤ i; 0 ≤ i ∧ *(s+i) ≡ '\000' ⇒ 0 ≤ strlen(s) ≤ i; - - axiom strlen_shift{L}: - ∀ char *s; - ∀ ℤ i; 0 ≤ i ≤ strlen(s) ⇒ strlen(s+i) ≡ strlen(s)-i; - - axiom strlen_create{L}: - ∀ char *s; - ∀ ℤ i; 0 ≤ i ∧ *(s+i) ≡ '\000' ⇒ 0 ≤ strlen(s) ≤ i; - - axiom strlen_create_shift{L}: - ∀ char *s; - ∀ ℤ i; - ∀ ℤ k; - 0 ≤ k ≤ i ∧ *(s+i) ≡ '\000' ⇒ 0 ≤ strlen(s+k) ≤ i-k; - - axiom memcmp_strlen_left{L}: - ∀ char *s1, char *s2; - ∀ ℤ n; - memcmp{L, L}(s1, s2, n) ≡ 0 ∧ strlen(s1) < n ⇒ - strlen(s1) ≡ strlen(s2); - - axiom memcmp_strlen_right{L}: - ∀ char *s1, char *s2; - ∀ ℤ n; - memcmp{L, L}(s1, s2, n) ≡ 0 ∧ strlen(s2) < n ⇒ - strlen(s1) ≡ strlen(s2); - - axiom memcmp_strlen_shift_left{L}: - ∀ char *s1, char *s2; - ∀ ℤ k, ℤ n; - memcmp{L, L}(s1, s2+k, n) ≡ 0 ≤ k ∧ strlen(s1) < n ⇒ - 0 ≤ strlen(s2) ≤ k+strlen(s1); - - axiom memcmp_strlen_shift_right{L}: - ∀ char *s1, char *s2; - ∀ ℤ k, ℤ n; - memcmp{L, L}(s1+k, s2, n) ≡ 0 ≤ k ∧ strlen(s2) < n ⇒ - 0 ≤ strlen(s1) ≤ k+strlen(s2); - - } - */ -/*@ -axiomatic StrCmp { - logic ℤ strcmp{L}(char *s1, char *s2) - reads *(s1+(0 .. strlen(s1))), *(s2+(0 .. strlen(s2))); - - axiom strcmp_zero{L}: - ∀ char *s1, char *s2; - strcmp(s1, s2) ≡ 0 ⇔ - strlen(s1) ≡ strlen(s2) ∧ - (∀ ℤ i; 0 ≤ i ≤ strlen(s1) ⇒ *(s1+i) ≡ *(s2+i)); - - } - */ -/*@ -axiomatic StrNCmp { - logic ℤ strncmp{L}(char *s1, char *s2, ℤ n) - reads *(s1+(0 .. n-1)), *(s2+(0 .. n-1)); - - axiom strncmp_zero{L}: - ∀ char *s1, char *s2; - ∀ ℤ n; - strncmp(s1, s2, n) ≡ 0 ⇔ - (strlen(s1) < n ∧ strcmp(s1, s2) ≡ 0) ∨ - (∀ ℤ i; 0 ≤ i < n ⇒ *(s1+i) ≡ *(s2+i)); - - } - */ -/*@ -axiomatic StrChr { - logic 𔹠strchr{L}(char *s, ℤ c) - reads *(s+(0 .. strlen(s))); - - axiom strchr_def{L}: - ∀ char *s; - ∀ ℤ c; - strchr(s, c) ≡ \true ⇔ - (∃ ℤ i; 0 ≤ i ≤ strlen(s) ∧ *(s+i) ≡ c); - - } - */ -/*@ -axiomatic WcsLen { - logic ℤ wcslen{L}(wchar_t *s) - reads *(s+(0 ..)); - - axiom wcslen_pos_or_null{L}: - ∀ wchar_t *s; - ∀ ℤ i; - 0 ≤ i ∧ (∀ ℤ j; 0 ≤ j < i ⇒ *(s+j) ≢ 0) ∧ *(s+i) ≡ 0 ⇒ - wcslen(s) ≡ i; - - axiom wcslen_neg{L}: - ∀ wchar_t *s; (∀ ℤ i; 0 ≤ i ⇒ *(s+i) ≢ 0) ⇒ wcslen(s) < 0; - - axiom wcslen_before_null{L}: - ∀ wchar_t *s; - ∀ int i; 0 ≤ i < wcslen(s) ⇒ *(s+i) ≢ 0; - - axiom wcslen_at_null{L}: - ∀ wchar_t *s; 0 ≤ wcslen(s) ⇒ *(s+wcslen(s)) ≡ 0; - - axiom wcslen_not_zero{L}: - ∀ wchar_t *s; - ∀ int i; 0 ≤ i ≤ wcslen(s) ∧ *(s+i) ≢ 0 ⇒ i < wcslen(s); - - axiom wcslen_zero{L}: - ∀ wchar_t *s; - ∀ int i; 0 ≤ i ≤ wcslen(s) ∧ *(s+i) ≡ 0 ⇒ i ≡ wcslen(s); - - axiom wcslen_sup{L}: - ∀ wchar_t *s; - ∀ int i; 0 ≤ i ∧ *(s+i) ≡ 0 ⇒ 0 ≤ wcslen(s) ≤ i; - - axiom wcslen_shift{L}: - ∀ wchar_t *s; - ∀ int i; 0 ≤ i ≤ wcslen(s) ⇒ wcslen(s+i) ≡ wcslen(s)-i; - - axiom wcslen_create{L}: - ∀ wchar_t *s; - ∀ int i; 0 ≤ i ∧ *(s+i) ≡ 0 ⇒ 0 ≤ wcslen(s) ≤ i; - - axiom wcslen_create_shift{L}: - ∀ wchar_t *s; - ∀ int i; - ∀ int k; 0 ≤ k ≤ i ∧ *(s+i) ≡ 0 ⇒ 0 ≤ wcslen(s+k) ≤ i-k; - - } - */ -/*@ -axiomatic WcsCmp { - logic ℤ wcscmp{L}(wchar_t *s1, wchar_t *s2) - reads *(s1+(0 .. wcslen(s1))), *(s2+(0 .. wcslen(s2))); - - axiom wcscmp_zero{L}: - ∀ wchar_t *s1, wchar_t *s2; - wcscmp(s1, s2) ≡ 0 ⇔ - wcslen(s1) ≡ wcslen(s2) ∧ - (∀ ℤ i; 0 ≤ i ≤ wcslen(s1) ⇒ *(s1+i) ≡ *(s2+i)); - - } - */ -/*@ -axiomatic WcsNCmp { - logic ℤ wcsncmp{L}(wchar_t *s1, wchar_t *s2, ℤ n) - reads *(s1+(0 .. n-1)), *(s2+(0 .. n-1)); - - axiom wcsncmp_zero{L}: - ∀ wchar_t *s1, wchar_t *s2; - ∀ ℤ n; - wcsncmp(s1, s2, n) ≡ 0 ⇔ - (wcslen(s1) < n ∧ wcscmp(s1, s2) ≡ 0) ∨ - (∀ ℤ i; 0 ≤ i < n ⇒ *(s1+i) ≡ *(s2+i)); - - } - */ -/*@ logic ℤ minimum(ℤ i, ℤ j) = i<j? i: j; - */ -/*@ logic ℤ maximum(ℤ i, ℤ j) = i<j? j: i; - */ -/*@ -predicate valid_string{L}(char *s) = - 0 ≤ strlen(s) ∧ \valid(s+(0 .. strlen(s))); - */ -/*@ -predicate valid_read_string{L}(char *s) = - 0 ≤ strlen(s) ∧ \valid_read(s+(0 .. strlen(s))); - */ -/*@ -predicate valid_string_or_null{L}(char *s) = s ≡ \null ∨ valid_string(s); - */ -/*@ -predicate valid_wstring{L}(wchar_t *s) = - 0 ≤ wcslen(s) ∧ \valid(s+(0 .. wcslen(s))); - */ -/*@ -predicate valid_wstring_or_null{L}(wchar_t *s) = - s ≡ \null ∨ valid_wstring(s); - */ /*@ requires valid_read_string(format); requires \valid(param0); ensures \initialized(param0); diff --git a/src/plugins/variadic/tests/known/oracle/printf_wrong_pointers.1.res.oracle b/src/plugins/variadic/tests/known/oracle/printf_wrong_pointers.1.res.oracle index 532b6bb07d536ef40bd9ff9ea285476d282790b2..554737852036e72a050ca86e0f61998a747d03dd 100644 --- a/src/plugins/variadic/tests/known/oracle/printf_wrong_pointers.1.res.oracle +++ b/src/plugins/variadic/tests/known/oracle/printf_wrong_pointers.1.res.oracle @@ -2,14 +2,14 @@ [value] Computing initial state [value] Initial state computed [value] using specification for function printf_0 -tests/known/printf_wrong_pointers.c:15:[value] warning: function printf_0: precondition got status invalid. +tests/known/printf_wrong_pointers.c:14:[value] warning: function printf_0: precondition got status invalid. [value] using specification for function printf_1 [value] using specification for function printf_2 -tests/known/printf_wrong_pointers.c:17:[value] warning: function printf_2: precondition got status invalid. +tests/known/printf_wrong_pointers.c:16:[value] warning: function printf_2: precondition got status invalid. [value] using specification for function printf_3 -tests/known/printf_wrong_pointers.c:18:[value] warning: function printf_3: precondition got status unknown. +tests/known/printf_wrong_pointers.c:17:[value] warning: function printf_3: precondition got status unknown. [value] using specification for function printf_4 -tests/known/printf_wrong_pointers.c:19:[value] warning: function printf_4: precondition got status unknown. +tests/known/printf_wrong_pointers.c:18:[value] warning: function printf_4: precondition got status unknown. [value] done for function main [value] ====== VALUES COMPUTED ====== [value:final-states] Values at end of function main: @@ -21,15 +21,15 @@ tests/known/printf_wrong_pointers.c:19:[value] warning: function printf_4: preco S___fc_stdout[0]{.__fc_stdio_id; .__fc_position; .__fc_error; .__fc_eof} ∈ {{ garbled mix of &{S___fc_inode_0_S___fc_stdout; S___fc_real_data_0_S___fc_stdout} - (origin: Misaligned {tests/known/printf_wrong_pointers.c:19}) }} + (origin: Misaligned {tests/known/printf_wrong_pointers.c:18}) }} [0].[bits 80 to 95] ∈ {{ garbled mix of &{S___fc_inode_0_S___fc_stdout; S___fc_real_data_0_S___fc_stdout} - (origin: Misaligned {tests/known/printf_wrong_pointers.c:19}) }} or UNINITIALIZED + (origin: Misaligned {tests/known/printf_wrong_pointers.c:18}) }} or UNINITIALIZED [0]{.__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size} ∈ {{ garbled mix of &{S___fc_inode_0_S___fc_stdout; S___fc_real_data_0_S___fc_stdout} - (origin: Misaligned {tests/known/printf_wrong_pointers.c:19}) }} + (origin: Misaligned {tests/known/printf_wrong_pointers.c:18}) }} [1]{.__fc_stdio_id; .__fc_position; .__fc_error; .__fc_eof} ∈ [--..--] [1].[bits 80 to 95] ∈ UNINITIALIZED diff --git a/src/plugins/variadic/tests/known/oracle/printf_wrong_types.0.res.oracle b/src/plugins/variadic/tests/known/oracle/printf_wrong_types.0.res.oracle index ab6598cbcee90395ae544db80460519f76cd08dd..bb60e97f418296d4998586322134afc5f07f2d27 100644 --- a/src/plugins/variadic/tests/known/oracle/printf_wrong_types.0.res.oracle +++ b/src/plugins/variadic/tests/known/oracle/printf_wrong_types.0.res.oracle @@ -1,37 +1,37 @@ -FRAMAC_SHARE/libc/stdio.h:133:[va] Declaration of variadic function fprintf. -FRAMAC_SHARE/libc/stdio.h:138:[va] Declaration of variadic function fscanf. -FRAMAC_SHARE/libc/stdio.h:144:[va] Declaration of variadic function printf. -FRAMAC_SHARE/libc/stdio.h:149:[va] Declaration of variadic function scanf. -FRAMAC_SHARE/libc/stdio.h:154:[va] Declaration of variadic function snprintf. -FRAMAC_SHARE/libc/stdio.h:160:[va] Declaration of variadic function sprintf. -tests/known/printf_wrong_types.c:20:[va] Translating call to printf to a call to the specialized version printf_0. -tests/known/printf_wrong_types.c:21:[va] Translating call to printf to a call to the specialized version printf_1. -tests/known/printf_wrong_types.c:21:[va] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. -tests/known/printf_wrong_types.c:22:[va] Translating call to printf to a call to the specialized version printf_2. -tests/known/printf_wrong_types.c:22:[va] warning: Incorrect type for argument 2. The argument will be cast from int to unsigned int. -tests/known/printf_wrong_types.c:23:[va] Translating call to printf to a call to the specialized version printf_3. -tests/known/printf_wrong_types.c:23:[va] warning: Incorrect type for argument 2. The argument will be cast from int to long. -tests/known/printf_wrong_types.c:24:[va] Translating call to printf to a call to the specialized version printf_4. -tests/known/printf_wrong_types.c:24:[va] warning: Incorrect type for argument 2. The argument will be cast from long to int. -tests/known/printf_wrong_types.c:25:[va] Translating call to printf to a call to the specialized version printf_5. -tests/known/printf_wrong_types.c:25:[va] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to unsigned long. -tests/known/printf_wrong_types.c:26:[va] Translating call to printf to a call to the specialized version printf_6. -tests/known/printf_wrong_types.c:26:[va] warning: Incorrect type for argument 2. The argument will be cast from unsigned long to unsigned int. -tests/known/printf_wrong_types.c:27:[va] Translating call to printf to a call to the specialized version printf_7. -tests/known/printf_wrong_types.c:27:[va] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to void *. -tests/known/printf_wrong_types.c:28:[va] Translating call to printf to a call to the specialized version printf_8. -tests/known/printf_wrong_types.c:29:[va] Translating call to printf to a call to the specialized version printf_9. +FRAMAC_SHARE/libc/stdio.h:134:[va] Declaration of variadic function fprintf. +FRAMAC_SHARE/libc/stdio.h:139:[va] Declaration of variadic function fscanf. +FRAMAC_SHARE/libc/stdio.h:145:[va] Declaration of variadic function printf. +FRAMAC_SHARE/libc/stdio.h:150:[va] Declaration of variadic function scanf. +FRAMAC_SHARE/libc/stdio.h:155:[va] Declaration of variadic function snprintf. +FRAMAC_SHARE/libc/stdio.h:161:[va] Declaration of variadic function sprintf. +tests/known/printf_wrong_types.c:19:[va] Translating call to printf to a call to the specialized version printf_0. +tests/known/printf_wrong_types.c:20:[va] Translating call to printf to a call to the specialized version printf_1. +tests/known/printf_wrong_types.c:20:[va] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +tests/known/printf_wrong_types.c:21:[va] Translating call to printf to a call to the specialized version printf_2. +tests/known/printf_wrong_types.c:21:[va] warning: Incorrect type for argument 2. The argument will be cast from int to unsigned int. +tests/known/printf_wrong_types.c:22:[va] Translating call to printf to a call to the specialized version printf_3. +tests/known/printf_wrong_types.c:22:[va] warning: Incorrect type for argument 2. The argument will be cast from int to long. +tests/known/printf_wrong_types.c:23:[va] Translating call to printf to a call to the specialized version printf_4. +tests/known/printf_wrong_types.c:23:[va] warning: Incorrect type for argument 2. The argument will be cast from long to int. +tests/known/printf_wrong_types.c:24:[va] Translating call to printf to a call to the specialized version printf_5. +tests/known/printf_wrong_types.c:24:[va] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to unsigned long. +tests/known/printf_wrong_types.c:25:[va] Translating call to printf to a call to the specialized version printf_6. +tests/known/printf_wrong_types.c:25:[va] warning: Incorrect type for argument 2. The argument will be cast from unsigned long to unsigned int. +tests/known/printf_wrong_types.c:26:[va] Translating call to printf to a call to the specialized version printf_7. +tests/known/printf_wrong_types.c:26:[va] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to void *. +tests/known/printf_wrong_types.c:27:[va] Translating call to printf to a call to the specialized version printf_8. +tests/known/printf_wrong_types.c:28:[va] Translating call to printf to a call to the specialized version printf_9. +tests/known/printf_wrong_types.c:28:[va] warning: Incorrect type for argument 2. The argument will be cast from long double to double. +tests/known/printf_wrong_types.c:29:[va] Translating call to printf to a call to the specialized version printf_10. tests/known/printf_wrong_types.c:29:[va] warning: Incorrect type for argument 2. The argument will be cast from long double to double. -tests/known/printf_wrong_types.c:30:[va] Translating call to printf to a call to the specialized version printf_10. -tests/known/printf_wrong_types.c:30:[va] warning: Incorrect type for argument 2. The argument will be cast from long double to double. -tests/known/printf_wrong_types.c:31:[va] Translating call to printf to a call to the specialized version printf_11. -tests/known/printf_wrong_types.c:31:[va] warning: Incorrect type for argument 2. The argument will be cast from int to char *. -tests/known/printf_wrong_types.c:32:[va] Translating call to printf to a call to the specialized version printf_12. -tests/known/printf_wrong_types.c:32:[va] warning: Incorrect type for argument 2. The argument will be cast from char * to int. +tests/known/printf_wrong_types.c:30:[va] Translating call to printf to a call to the specialized version printf_11. +tests/known/printf_wrong_types.c:30:[va] warning: Incorrect type for argument 2. The argument will be cast from int to char *. +tests/known/printf_wrong_types.c:31:[va] Translating call to printf to a call to the specialized version printf_12. +tests/known/printf_wrong_types.c:31:[va] warning: Incorrect type for argument 2. The argument will be cast from char * to int. /* Generated by Frama-C */ +typedef int wchar_t; typedef void * const *va_list; typedef unsigned int size_t; -typedef int wchar_t; typedef unsigned int ino_t; typedef unsigned int gid_t; typedef unsigned int uid_t; @@ -72,6 +72,257 @@ struct __fc_FILE { int __fc_real_data_max_size ; }; typedef struct __fc_FILE FILE; +/*@ +axiomatic MemCmp { + logic ℤ memcmp{L1, L2}(char *s1, char *s2, ℤ n) + reads \at(*(s1+(0 .. n-1)),L1), \at(*(s2+(0 .. n-1)),L2); + + axiom memcmp_zero{L1, L2}: + ∀ char *s1, char *s2; + ∀ ℤ n; + memcmp{L1, L2}(s1, s2, n) ≡ 0 ⇔ + (∀ ℤ i; 0 ≤ i < n ⇒ \at(*(s1+i),L1) ≡ \at(*(s2+i),L2)); + + } + */ +/*@ +axiomatic MemChr { + logic 𔹠memchr{L}(char *s, ℤ c, ℤ n) + reads *(s+(0 .. n-1)); + + axiom memchr_def{L}: + ∀ char *s; + ∀ ℤ c; + ∀ ℤ n; + memchr(s, c, n) ≡ \true ⇔ (∃ int i; 0 ≤ i < n ∧ *(s+i) ≡ c); + + } + */ +/*@ +axiomatic MemSet { + logic 𔹠memset{L}(char *s, ℤ c, ℤ n) + reads *(s+(0 .. n-1)); + + axiom memset_def{L}: + ∀ char *s; + ∀ ℤ c; + ∀ ℤ n; + memset(s, c, n) ≡ \true ⇔ (∀ ℤ i; 0 ≤ i < n ⇒ *(s+i) ≡ c); + + } + */ +/*@ +axiomatic StrLen { + logic ℤ strlen{L}(char *s) + reads *(s+(0 ..)); + + axiom strlen_pos_or_null{L}: + ∀ char *s; + ∀ ℤ i; + 0 ≤ i ∧ (∀ ℤ j; 0 ≤ j < i ⇒ *(s+j) ≢ '\000') ∧ + *(s+i) ≡ '\000' ⇒ strlen(s) ≡ i; + + axiom strlen_neg{L}: + ∀ char *s; (∀ ℤ i; 0 ≤ i ⇒ *(s+i) ≢ '\000') ⇒ strlen(s) < 0; + + axiom strlen_before_null{L}: + ∀ char *s; + ∀ ℤ i; 0 ≤ i < strlen(s) ⇒ *(s+i) ≢ '\000'; + + axiom strlen_at_null{L}: + ∀ char *s; 0 ≤ strlen(s) ⇒ *(s+strlen(s)) ≡ '\000'; + + axiom strlen_not_zero{L}: + ∀ char *s; + ∀ ℤ i; 0 ≤ i ≤ strlen(s) ∧ *(s+i) ≢ '\000' ⇒ i < strlen(s); + + axiom strlen_zero{L}: + ∀ char *s; + ∀ ℤ i; + 0 ≤ i ≤ strlen(s) ∧ *(s+i) ≡ '\000' ⇒ i ≡ strlen(s); + + axiom strlen_sup{L}: + ∀ char *s; + ∀ ℤ i; 0 ≤ i ∧ *(s+i) ≡ '\000' ⇒ 0 ≤ strlen(s) ≤ i; + + axiom strlen_shift{L}: + ∀ char *s; + ∀ ℤ i; 0 ≤ i ≤ strlen(s) ⇒ strlen(s+i) ≡ strlen(s)-i; + + axiom strlen_create{L}: + ∀ char *s; + ∀ ℤ i; 0 ≤ i ∧ *(s+i) ≡ '\000' ⇒ 0 ≤ strlen(s) ≤ i; + + axiom strlen_create_shift{L}: + ∀ char *s; + ∀ ℤ i; + ∀ ℤ k; + 0 ≤ k ≤ i ∧ *(s+i) ≡ '\000' ⇒ 0 ≤ strlen(s+k) ≤ i-k; + + axiom memcmp_strlen_left{L}: + ∀ char *s1, char *s2; + ∀ ℤ n; + memcmp{L, L}(s1, s2, n) ≡ 0 ∧ strlen(s1) < n ⇒ + strlen(s1) ≡ strlen(s2); + + axiom memcmp_strlen_right{L}: + ∀ char *s1, char *s2; + ∀ ℤ n; + memcmp{L, L}(s1, s2, n) ≡ 0 ∧ strlen(s2) < n ⇒ + strlen(s1) ≡ strlen(s2); + + axiom memcmp_strlen_shift_left{L}: + ∀ char *s1, char *s2; + ∀ ℤ k, ℤ n; + memcmp{L, L}(s1, s2+k, n) ≡ 0 ≤ k ∧ strlen(s1) < n ⇒ + 0 ≤ strlen(s2) ≤ k+strlen(s1); + + axiom memcmp_strlen_shift_right{L}: + ∀ char *s1, char *s2; + ∀ ℤ k, ℤ n; + memcmp{L, L}(s1+k, s2, n) ≡ 0 ≤ k ∧ strlen(s2) < n ⇒ + 0 ≤ strlen(s1) ≤ k+strlen(s2); + + } + */ +/*@ +axiomatic StrCmp { + logic ℤ strcmp{L}(char *s1, char *s2) + reads *(s1+(0 .. strlen(s1))), *(s2+(0 .. strlen(s2))); + + axiom strcmp_zero{L}: + ∀ char *s1, char *s2; + strcmp(s1, s2) ≡ 0 ⇔ + strlen(s1) ≡ strlen(s2) ∧ + (∀ ℤ i; 0 ≤ i ≤ strlen(s1) ⇒ *(s1+i) ≡ *(s2+i)); + + } + */ +/*@ +axiomatic StrNCmp { + logic ℤ strncmp{L}(char *s1, char *s2, ℤ n) + reads *(s1+(0 .. n-1)), *(s2+(0 .. n-1)); + + axiom strncmp_zero{L}: + ∀ char *s1, char *s2; + ∀ ℤ n; + strncmp(s1, s2, n) ≡ 0 ⇔ + (strlen(s1) < n ∧ strcmp(s1, s2) ≡ 0) ∨ + (∀ ℤ i; 0 ≤ i < n ⇒ *(s1+i) ≡ *(s2+i)); + + } + */ +/*@ +axiomatic StrChr { + logic 𔹠strchr{L}(char *s, ℤ c) + reads *(s+(0 .. strlen(s))); + + axiom strchr_def{L}: + ∀ char *s; + ∀ ℤ c; + strchr(s, c) ≡ \true ⇔ + (∃ ℤ i; 0 ≤ i ≤ strlen(s) ∧ *(s+i) ≡ c); + + } + */ +/*@ +axiomatic WcsLen { + logic ℤ wcslen{L}(wchar_t *s) + reads *(s+(0 ..)); + + axiom wcslen_pos_or_null{L}: + ∀ wchar_t *s; + ∀ ℤ i; + 0 ≤ i ∧ (∀ ℤ j; 0 ≤ j < i ⇒ *(s+j) ≢ 0) ∧ *(s+i) ≡ 0 ⇒ + wcslen(s) ≡ i; + + axiom wcslen_neg{L}: + ∀ wchar_t *s; (∀ ℤ i; 0 ≤ i ⇒ *(s+i) ≢ 0) ⇒ wcslen(s) < 0; + + axiom wcslen_before_null{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i < wcslen(s) ⇒ *(s+i) ≢ 0; + + axiom wcslen_at_null{L}: + ∀ wchar_t *s; 0 ≤ wcslen(s) ⇒ *(s+wcslen(s)) ≡ 0; + + axiom wcslen_not_zero{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i ≤ wcslen(s) ∧ *(s+i) ≢ 0 ⇒ i < wcslen(s); + + axiom wcslen_zero{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i ≤ wcslen(s) ∧ *(s+i) ≡ 0 ⇒ i ≡ wcslen(s); + + axiom wcslen_sup{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i ∧ *(s+i) ≡ 0 ⇒ 0 ≤ wcslen(s) ≤ i; + + axiom wcslen_shift{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i ≤ wcslen(s) ⇒ wcslen(s+i) ≡ wcslen(s)-i; + + axiom wcslen_create{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i ∧ *(s+i) ≡ 0 ⇒ 0 ≤ wcslen(s) ≤ i; + + axiom wcslen_create_shift{L}: + ∀ wchar_t *s; + ∀ int i; + ∀ int k; 0 ≤ k ≤ i ∧ *(s+i) ≡ 0 ⇒ 0 ≤ wcslen(s+k) ≤ i-k; + + } + */ +/*@ +axiomatic WcsCmp { + logic ℤ wcscmp{L}(wchar_t *s1, wchar_t *s2) + reads *(s1+(0 .. wcslen(s1))), *(s2+(0 .. wcslen(s2))); + + axiom wcscmp_zero{L}: + ∀ wchar_t *s1, wchar_t *s2; + wcscmp(s1, s2) ≡ 0 ⇔ + wcslen(s1) ≡ wcslen(s2) ∧ + (∀ ℤ i; 0 ≤ i ≤ wcslen(s1) ⇒ *(s1+i) ≡ *(s2+i)); + + } + */ +/*@ +axiomatic WcsNCmp { + logic ℤ wcsncmp{L}(wchar_t *s1, wchar_t *s2, ℤ n) + reads *(s1+(0 .. n-1)), *(s2+(0 .. n-1)); + + axiom wcsncmp_zero{L}: + ∀ wchar_t *s1, wchar_t *s2; + ∀ ℤ n; + wcsncmp(s1, s2, n) ≡ 0 ⇔ + (wcslen(s1) < n ∧ wcscmp(s1, s2) ≡ 0) ∨ + (∀ ℤ i; 0 ≤ i < n ⇒ *(s1+i) ≡ *(s2+i)); + + } + */ +/*@ logic ℤ minimum(ℤ i, ℤ j) = i<j? i: j; + */ +/*@ logic ℤ maximum(ℤ i, ℤ j) = i<j? j: i; + */ +/*@ +predicate valid_string{L}(char *s) = + 0 ≤ strlen(s) ∧ \valid(s+(0 .. strlen(s))); + */ +/*@ +predicate valid_read_string{L}(char *s) = + 0 ≤ strlen(s) ∧ \valid_read(s+(0 .. strlen(s))); + */ +/*@ +predicate valid_string_or_null{L}(char *s) = s ≡ \null ∨ valid_string(s); + */ +/*@ +predicate valid_wstring{L}(wchar_t *s) = + 0 ≤ wcslen(s) ∧ \valid(s+(0 .. wcslen(s))); + */ +/*@ +predicate valid_wstring_or_null{L}(wchar_t *s) = + s ≡ \null ∨ valid_wstring(s); + */ extern int __FC_errno; extern FILE *__fc_stdin; @@ -348,257 +599,6 @@ extern int ferror_unlocked(FILE *stream); assigns \result \from *stream; */ extern int fileno_unlocked(FILE *stream); -/*@ -axiomatic MemCmp { - logic ℤ memcmp{L1, L2}(char *s1, char *s2, ℤ n) - reads \at(*(s1+(0 .. n-1)),L1), \at(*(s2+(0 .. n-1)),L2); - - axiom memcmp_zero{L1, L2}: - ∀ char *s1, char *s2; - ∀ ℤ n; - memcmp{L1, L2}(s1, s2, n) ≡ 0 ⇔ - (∀ ℤ i; 0 ≤ i < n ⇒ \at(*(s1+i),L1) ≡ \at(*(s2+i),L2)); - - } - */ -/*@ -axiomatic MemChr { - logic 𔹠memchr{L}(char *s, ℤ c, ℤ n) - reads *(s+(0 .. n-1)); - - axiom memchr_def{L}: - ∀ char *s; - ∀ ℤ c; - ∀ ℤ n; - memchr(s, c, n) ≡ \true ⇔ (∃ int i; 0 ≤ i < n ∧ *(s+i) ≡ c); - - } - */ -/*@ -axiomatic MemSet { - logic 𔹠memset{L}(char *s, ℤ c, ℤ n) - reads *(s+(0 .. n-1)); - - axiom memset_def{L}: - ∀ char *s; - ∀ ℤ c; - ∀ ℤ n; - memset(s, c, n) ≡ \true ⇔ (∀ ℤ i; 0 ≤ i < n ⇒ *(s+i) ≡ c); - - } - */ -/*@ -axiomatic StrLen { - logic ℤ strlen{L}(char *s) - reads *(s+(0 ..)); - - axiom strlen_pos_or_null{L}: - ∀ char *s; - ∀ ℤ i; - 0 ≤ i ∧ (∀ ℤ j; 0 ≤ j < i ⇒ *(s+j) ≢ '\000') ∧ - *(s+i) ≡ '\000' ⇒ strlen(s) ≡ i; - - axiom strlen_neg{L}: - ∀ char *s; (∀ ℤ i; 0 ≤ i ⇒ *(s+i) ≢ '\000') ⇒ strlen(s) < 0; - - axiom strlen_before_null{L}: - ∀ char *s; - ∀ ℤ i; 0 ≤ i < strlen(s) ⇒ *(s+i) ≢ '\000'; - - axiom strlen_at_null{L}: - ∀ char *s; 0 ≤ strlen(s) ⇒ *(s+strlen(s)) ≡ '\000'; - - axiom strlen_not_zero{L}: - ∀ char *s; - ∀ ℤ i; 0 ≤ i ≤ strlen(s) ∧ *(s+i) ≢ '\000' ⇒ i < strlen(s); - - axiom strlen_zero{L}: - ∀ char *s; - ∀ ℤ i; - 0 ≤ i ≤ strlen(s) ∧ *(s+i) ≡ '\000' ⇒ i ≡ strlen(s); - - axiom strlen_sup{L}: - ∀ char *s; - ∀ ℤ i; 0 ≤ i ∧ *(s+i) ≡ '\000' ⇒ 0 ≤ strlen(s) ≤ i; - - axiom strlen_shift{L}: - ∀ char *s; - ∀ ℤ i; 0 ≤ i ≤ strlen(s) ⇒ strlen(s+i) ≡ strlen(s)-i; - - axiom strlen_create{L}: - ∀ char *s; - ∀ ℤ i; 0 ≤ i ∧ *(s+i) ≡ '\000' ⇒ 0 ≤ strlen(s) ≤ i; - - axiom strlen_create_shift{L}: - ∀ char *s; - ∀ ℤ i; - ∀ ℤ k; - 0 ≤ k ≤ i ∧ *(s+i) ≡ '\000' ⇒ 0 ≤ strlen(s+k) ≤ i-k; - - axiom memcmp_strlen_left{L}: - ∀ char *s1, char *s2; - ∀ ℤ n; - memcmp{L, L}(s1, s2, n) ≡ 0 ∧ strlen(s1) < n ⇒ - strlen(s1) ≡ strlen(s2); - - axiom memcmp_strlen_right{L}: - ∀ char *s1, char *s2; - ∀ ℤ n; - memcmp{L, L}(s1, s2, n) ≡ 0 ∧ strlen(s2) < n ⇒ - strlen(s1) ≡ strlen(s2); - - axiom memcmp_strlen_shift_left{L}: - ∀ char *s1, char *s2; - ∀ ℤ k, ℤ n; - memcmp{L, L}(s1, s2+k, n) ≡ 0 ≤ k ∧ strlen(s1) < n ⇒ - 0 ≤ strlen(s2) ≤ k+strlen(s1); - - axiom memcmp_strlen_shift_right{L}: - ∀ char *s1, char *s2; - ∀ ℤ k, ℤ n; - memcmp{L, L}(s1+k, s2, n) ≡ 0 ≤ k ∧ strlen(s2) < n ⇒ - 0 ≤ strlen(s1) ≤ k+strlen(s2); - - } - */ -/*@ -axiomatic StrCmp { - logic ℤ strcmp{L}(char *s1, char *s2) - reads *(s1+(0 .. strlen(s1))), *(s2+(0 .. strlen(s2))); - - axiom strcmp_zero{L}: - ∀ char *s1, char *s2; - strcmp(s1, s2) ≡ 0 ⇔ - strlen(s1) ≡ strlen(s2) ∧ - (∀ ℤ i; 0 ≤ i ≤ strlen(s1) ⇒ *(s1+i) ≡ *(s2+i)); - - } - */ -/*@ -axiomatic StrNCmp { - logic ℤ strncmp{L}(char *s1, char *s2, ℤ n) - reads *(s1+(0 .. n-1)), *(s2+(0 .. n-1)); - - axiom strncmp_zero{L}: - ∀ char *s1, char *s2; - ∀ ℤ n; - strncmp(s1, s2, n) ≡ 0 ⇔ - (strlen(s1) < n ∧ strcmp(s1, s2) ≡ 0) ∨ - (∀ ℤ i; 0 ≤ i < n ⇒ *(s1+i) ≡ *(s2+i)); - - } - */ -/*@ -axiomatic StrChr { - logic 𔹠strchr{L}(char *s, ℤ c) - reads *(s+(0 .. strlen(s))); - - axiom strchr_def{L}: - ∀ char *s; - ∀ ℤ c; - strchr(s, c) ≡ \true ⇔ - (∃ ℤ i; 0 ≤ i ≤ strlen(s) ∧ *(s+i) ≡ c); - - } - */ -/*@ -axiomatic WcsLen { - logic ℤ wcslen{L}(wchar_t *s) - reads *(s+(0 ..)); - - axiom wcslen_pos_or_null{L}: - ∀ wchar_t *s; - ∀ ℤ i; - 0 ≤ i ∧ (∀ ℤ j; 0 ≤ j < i ⇒ *(s+j) ≢ 0) ∧ *(s+i) ≡ 0 ⇒ - wcslen(s) ≡ i; - - axiom wcslen_neg{L}: - ∀ wchar_t *s; (∀ ℤ i; 0 ≤ i ⇒ *(s+i) ≢ 0) ⇒ wcslen(s) < 0; - - axiom wcslen_before_null{L}: - ∀ wchar_t *s; - ∀ int i; 0 ≤ i < wcslen(s) ⇒ *(s+i) ≢ 0; - - axiom wcslen_at_null{L}: - ∀ wchar_t *s; 0 ≤ wcslen(s) ⇒ *(s+wcslen(s)) ≡ 0; - - axiom wcslen_not_zero{L}: - ∀ wchar_t *s; - ∀ int i; 0 ≤ i ≤ wcslen(s) ∧ *(s+i) ≢ 0 ⇒ i < wcslen(s); - - axiom wcslen_zero{L}: - ∀ wchar_t *s; - ∀ int i; 0 ≤ i ≤ wcslen(s) ∧ *(s+i) ≡ 0 ⇒ i ≡ wcslen(s); - - axiom wcslen_sup{L}: - ∀ wchar_t *s; - ∀ int i; 0 ≤ i ∧ *(s+i) ≡ 0 ⇒ 0 ≤ wcslen(s) ≤ i; - - axiom wcslen_shift{L}: - ∀ wchar_t *s; - ∀ int i; 0 ≤ i ≤ wcslen(s) ⇒ wcslen(s+i) ≡ wcslen(s)-i; - - axiom wcslen_create{L}: - ∀ wchar_t *s; - ∀ int i; 0 ≤ i ∧ *(s+i) ≡ 0 ⇒ 0 ≤ wcslen(s) ≤ i; - - axiom wcslen_create_shift{L}: - ∀ wchar_t *s; - ∀ int i; - ∀ int k; 0 ≤ k ≤ i ∧ *(s+i) ≡ 0 ⇒ 0 ≤ wcslen(s+k) ≤ i-k; - - } - */ -/*@ -axiomatic WcsCmp { - logic ℤ wcscmp{L}(wchar_t *s1, wchar_t *s2) - reads *(s1+(0 .. wcslen(s1))), *(s2+(0 .. wcslen(s2))); - - axiom wcscmp_zero{L}: - ∀ wchar_t *s1, wchar_t *s2; - wcscmp(s1, s2) ≡ 0 ⇔ - wcslen(s1) ≡ wcslen(s2) ∧ - (∀ ℤ i; 0 ≤ i ≤ wcslen(s1) ⇒ *(s1+i) ≡ *(s2+i)); - - } - */ -/*@ -axiomatic WcsNCmp { - logic ℤ wcsncmp{L}(wchar_t *s1, wchar_t *s2, ℤ n) - reads *(s1+(0 .. n-1)), *(s2+(0 .. n-1)); - - axiom wcsncmp_zero{L}: - ∀ wchar_t *s1, wchar_t *s2; - ∀ ℤ n; - wcsncmp(s1, s2, n) ≡ 0 ⇔ - (wcslen(s1) < n ∧ wcscmp(s1, s2) ≡ 0) ∨ - (∀ ℤ i; 0 ≤ i < n ⇒ *(s1+i) ≡ *(s2+i)); - - } - */ -/*@ logic ℤ minimum(ℤ i, ℤ j) = i<j? i: j; - */ -/*@ logic ℤ maximum(ℤ i, ℤ j) = i<j? j: i; - */ -/*@ -predicate valid_string{L}(char *s) = - 0 ≤ strlen(s) ∧ \valid(s+(0 .. strlen(s))); - */ -/*@ -predicate valid_read_string{L}(char *s) = - 0 ≤ strlen(s) ∧ \valid_read(s+(0 .. strlen(s))); - */ -/*@ -predicate valid_string_or_null{L}(char *s) = s ≡ \null ∨ valid_string(s); - */ -/*@ -predicate valid_wstring{L}(wchar_t *s) = - 0 ≤ wcslen(s) ∧ \valid(s+(0 .. wcslen(s))); - */ -/*@ -predicate valid_wstring_or_null{L}(wchar_t *s) = - s ≡ \null ∨ valid_wstring(s); - */ /*@ requires valid_read_string(format); assigns \result, *__fc_stdout; assigns \result \from *__fc_stdout, *(format+(0 ..)), param0; diff --git a/src/plugins/variadic/tests/known/oracle/printf_wrong_types.1.res.oracle b/src/plugins/variadic/tests/known/oracle/printf_wrong_types.1.res.oracle index 3698dee30fb8974d6e0fd2a9a2ddc54789885b46..781959404fb5a3879abe5894531ca6e3748a0acb 100644 --- a/src/plugins/variadic/tests/known/oracle/printf_wrong_types.1.res.oracle +++ b/src/plugins/variadic/tests/known/oracle/printf_wrong_types.1.res.oracle @@ -1,33 +1,33 @@ -FRAMAC_SHARE/libc/stdio.h:133:[va] Declaration of variadic function fprintf. -FRAMAC_SHARE/libc/stdio.h:138:[va] Declaration of variadic function fscanf. -FRAMAC_SHARE/libc/stdio.h:144:[va] Declaration of variadic function printf. -FRAMAC_SHARE/libc/stdio.h:149:[va] Declaration of variadic function scanf. -FRAMAC_SHARE/libc/stdio.h:154:[va] Declaration of variadic function snprintf. -FRAMAC_SHARE/libc/stdio.h:160:[va] Declaration of variadic function sprintf. -tests/known/printf_wrong_types.c:20:[va] Translating call to printf to a call to the specialized version printf_0. -tests/known/printf_wrong_types.c:21:[va] Translating call to printf to a call to the specialized version printf_1. -tests/known/printf_wrong_types.c:21:[va] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. -tests/known/printf_wrong_types.c:22:[va] Translating call to printf to a call to the specialized version printf_2. -tests/known/printf_wrong_types.c:22:[va] warning: Incorrect type for argument 2. The argument will be cast from int to unsigned int. -tests/known/printf_wrong_types.c:23:[va] Translating call to printf to a call to the specialized version printf_3. -tests/known/printf_wrong_types.c:24:[va] Translating call to printf to a call to the specialized version printf_4. -tests/known/printf_wrong_types.c:25:[va] Translating call to printf to a call to the specialized version printf_5. -tests/known/printf_wrong_types.c:26:[va] Translating call to printf to a call to the specialized version printf_6. -tests/known/printf_wrong_types.c:27:[va] Translating call to printf to a call to the specialized version printf_7. -tests/known/printf_wrong_types.c:27:[va] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to void *. -tests/known/printf_wrong_types.c:28:[va] Translating call to printf to a call to the specialized version printf_8. -tests/known/printf_wrong_types.c:29:[va] Translating call to printf to a call to the specialized version printf_9. +FRAMAC_SHARE/libc/stdio.h:134:[va] Declaration of variadic function fprintf. +FRAMAC_SHARE/libc/stdio.h:139:[va] Declaration of variadic function fscanf. +FRAMAC_SHARE/libc/stdio.h:145:[va] Declaration of variadic function printf. +FRAMAC_SHARE/libc/stdio.h:150:[va] Declaration of variadic function scanf. +FRAMAC_SHARE/libc/stdio.h:155:[va] Declaration of variadic function snprintf. +FRAMAC_SHARE/libc/stdio.h:161:[va] Declaration of variadic function sprintf. +tests/known/printf_wrong_types.c:19:[va] Translating call to printf to a call to the specialized version printf_0. +tests/known/printf_wrong_types.c:20:[va] Translating call to printf to a call to the specialized version printf_1. +tests/known/printf_wrong_types.c:20:[va] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +tests/known/printf_wrong_types.c:21:[va] Translating call to printf to a call to the specialized version printf_2. +tests/known/printf_wrong_types.c:21:[va] warning: Incorrect type for argument 2. The argument will be cast from int to unsigned int. +tests/known/printf_wrong_types.c:22:[va] Translating call to printf to a call to the specialized version printf_3. +tests/known/printf_wrong_types.c:23:[va] Translating call to printf to a call to the specialized version printf_4. +tests/known/printf_wrong_types.c:24:[va] Translating call to printf to a call to the specialized version printf_5. +tests/known/printf_wrong_types.c:25:[va] Translating call to printf to a call to the specialized version printf_6. +tests/known/printf_wrong_types.c:26:[va] Translating call to printf to a call to the specialized version printf_7. +tests/known/printf_wrong_types.c:26:[va] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to void *. +tests/known/printf_wrong_types.c:27:[va] Translating call to printf to a call to the specialized version printf_8. +tests/known/printf_wrong_types.c:28:[va] Translating call to printf to a call to the specialized version printf_9. +tests/known/printf_wrong_types.c:28:[va] warning: Incorrect type for argument 2. The argument will be cast from long double to double. +tests/known/printf_wrong_types.c:29:[va] Translating call to printf to a call to the specialized version printf_10. tests/known/printf_wrong_types.c:29:[va] warning: Incorrect type for argument 2. The argument will be cast from long double to double. -tests/known/printf_wrong_types.c:30:[va] Translating call to printf to a call to the specialized version printf_10. -tests/known/printf_wrong_types.c:30:[va] warning: Incorrect type for argument 2. The argument will be cast from long double to double. -tests/known/printf_wrong_types.c:31:[va] Translating call to printf to a call to the specialized version printf_11. -tests/known/printf_wrong_types.c:31:[va] warning: Incorrect type for argument 2. The argument will be cast from int to char *. -tests/known/printf_wrong_types.c:32:[va] Translating call to printf to a call to the specialized version printf_12. -tests/known/printf_wrong_types.c:32:[va] warning: Incorrect type for argument 2. The argument will be cast from char * to int. +tests/known/printf_wrong_types.c:30:[va] Translating call to printf to a call to the specialized version printf_11. +tests/known/printf_wrong_types.c:30:[va] warning: Incorrect type for argument 2. The argument will be cast from int to char *. +tests/known/printf_wrong_types.c:31:[va] Translating call to printf to a call to the specialized version printf_12. +tests/known/printf_wrong_types.c:31:[va] warning: Incorrect type for argument 2. The argument will be cast from char * to int. /* Generated by Frama-C */ +typedef int wchar_t; typedef void * const *va_list; typedef unsigned int size_t; -typedef int wchar_t; typedef unsigned int ino_t; typedef unsigned int gid_t; typedef unsigned int uid_t; @@ -68,6 +68,257 @@ struct __fc_FILE { int __fc_real_data_max_size ; }; typedef struct __fc_FILE FILE; +/*@ +axiomatic MemCmp { + logic ℤ memcmp{L1, L2}(char *s1, char *s2, ℤ n) + reads \at(*(s1+(0 .. n-1)),L1), \at(*(s2+(0 .. n-1)),L2); + + axiom memcmp_zero{L1, L2}: + ∀ char *s1, char *s2; + ∀ ℤ n; + memcmp{L1, L2}(s1, s2, n) ≡ 0 ⇔ + (∀ ℤ i; 0 ≤ i < n ⇒ \at(*(s1+i),L1) ≡ \at(*(s2+i),L2)); + + } + */ +/*@ +axiomatic MemChr { + logic 𔹠memchr{L}(char *s, ℤ c, ℤ n) + reads *(s+(0 .. n-1)); + + axiom memchr_def{L}: + ∀ char *s; + ∀ ℤ c; + ∀ ℤ n; + memchr(s, c, n) ≡ \true ⇔ (∃ int i; 0 ≤ i < n ∧ *(s+i) ≡ c); + + } + */ +/*@ +axiomatic MemSet { + logic 𔹠memset{L}(char *s, ℤ c, ℤ n) + reads *(s+(0 .. n-1)); + + axiom memset_def{L}: + ∀ char *s; + ∀ ℤ c; + ∀ ℤ n; + memset(s, c, n) ≡ \true ⇔ (∀ ℤ i; 0 ≤ i < n ⇒ *(s+i) ≡ c); + + } + */ +/*@ +axiomatic StrLen { + logic ℤ strlen{L}(char *s) + reads *(s+(0 ..)); + + axiom strlen_pos_or_null{L}: + ∀ char *s; + ∀ ℤ i; + 0 ≤ i ∧ (∀ ℤ j; 0 ≤ j < i ⇒ *(s+j) ≢ '\000') ∧ + *(s+i) ≡ '\000' ⇒ strlen(s) ≡ i; + + axiom strlen_neg{L}: + ∀ char *s; (∀ ℤ i; 0 ≤ i ⇒ *(s+i) ≢ '\000') ⇒ strlen(s) < 0; + + axiom strlen_before_null{L}: + ∀ char *s; + ∀ ℤ i; 0 ≤ i < strlen(s) ⇒ *(s+i) ≢ '\000'; + + axiom strlen_at_null{L}: + ∀ char *s; 0 ≤ strlen(s) ⇒ *(s+strlen(s)) ≡ '\000'; + + axiom strlen_not_zero{L}: + ∀ char *s; + ∀ ℤ i; 0 ≤ i ≤ strlen(s) ∧ *(s+i) ≢ '\000' ⇒ i < strlen(s); + + axiom strlen_zero{L}: + ∀ char *s; + ∀ ℤ i; + 0 ≤ i ≤ strlen(s) ∧ *(s+i) ≡ '\000' ⇒ i ≡ strlen(s); + + axiom strlen_sup{L}: + ∀ char *s; + ∀ ℤ i; 0 ≤ i ∧ *(s+i) ≡ '\000' ⇒ 0 ≤ strlen(s) ≤ i; + + axiom strlen_shift{L}: + ∀ char *s; + ∀ ℤ i; 0 ≤ i ≤ strlen(s) ⇒ strlen(s+i) ≡ strlen(s)-i; + + axiom strlen_create{L}: + ∀ char *s; + ∀ ℤ i; 0 ≤ i ∧ *(s+i) ≡ '\000' ⇒ 0 ≤ strlen(s) ≤ i; + + axiom strlen_create_shift{L}: + ∀ char *s; + ∀ ℤ i; + ∀ ℤ k; + 0 ≤ k ≤ i ∧ *(s+i) ≡ '\000' ⇒ 0 ≤ strlen(s+k) ≤ i-k; + + axiom memcmp_strlen_left{L}: + ∀ char *s1, char *s2; + ∀ ℤ n; + memcmp{L, L}(s1, s2, n) ≡ 0 ∧ strlen(s1) < n ⇒ + strlen(s1) ≡ strlen(s2); + + axiom memcmp_strlen_right{L}: + ∀ char *s1, char *s2; + ∀ ℤ n; + memcmp{L, L}(s1, s2, n) ≡ 0 ∧ strlen(s2) < n ⇒ + strlen(s1) ≡ strlen(s2); + + axiom memcmp_strlen_shift_left{L}: + ∀ char *s1, char *s2; + ∀ ℤ k, ℤ n; + memcmp{L, L}(s1, s2+k, n) ≡ 0 ≤ k ∧ strlen(s1) < n ⇒ + 0 ≤ strlen(s2) ≤ k+strlen(s1); + + axiom memcmp_strlen_shift_right{L}: + ∀ char *s1, char *s2; + ∀ ℤ k, ℤ n; + memcmp{L, L}(s1+k, s2, n) ≡ 0 ≤ k ∧ strlen(s2) < n ⇒ + 0 ≤ strlen(s1) ≤ k+strlen(s2); + + } + */ +/*@ +axiomatic StrCmp { + logic ℤ strcmp{L}(char *s1, char *s2) + reads *(s1+(0 .. strlen(s1))), *(s2+(0 .. strlen(s2))); + + axiom strcmp_zero{L}: + ∀ char *s1, char *s2; + strcmp(s1, s2) ≡ 0 ⇔ + strlen(s1) ≡ strlen(s2) ∧ + (∀ ℤ i; 0 ≤ i ≤ strlen(s1) ⇒ *(s1+i) ≡ *(s2+i)); + + } + */ +/*@ +axiomatic StrNCmp { + logic ℤ strncmp{L}(char *s1, char *s2, ℤ n) + reads *(s1+(0 .. n-1)), *(s2+(0 .. n-1)); + + axiom strncmp_zero{L}: + ∀ char *s1, char *s2; + ∀ ℤ n; + strncmp(s1, s2, n) ≡ 0 ⇔ + (strlen(s1) < n ∧ strcmp(s1, s2) ≡ 0) ∨ + (∀ ℤ i; 0 ≤ i < n ⇒ *(s1+i) ≡ *(s2+i)); + + } + */ +/*@ +axiomatic StrChr { + logic 𔹠strchr{L}(char *s, ℤ c) + reads *(s+(0 .. strlen(s))); + + axiom strchr_def{L}: + ∀ char *s; + ∀ ℤ c; + strchr(s, c) ≡ \true ⇔ + (∃ ℤ i; 0 ≤ i ≤ strlen(s) ∧ *(s+i) ≡ c); + + } + */ +/*@ +axiomatic WcsLen { + logic ℤ wcslen{L}(wchar_t *s) + reads *(s+(0 ..)); + + axiom wcslen_pos_or_null{L}: + ∀ wchar_t *s; + ∀ ℤ i; + 0 ≤ i ∧ (∀ ℤ j; 0 ≤ j < i ⇒ *(s+j) ≢ 0) ∧ *(s+i) ≡ 0 ⇒ + wcslen(s) ≡ i; + + axiom wcslen_neg{L}: + ∀ wchar_t *s; (∀ ℤ i; 0 ≤ i ⇒ *(s+i) ≢ 0) ⇒ wcslen(s) < 0; + + axiom wcslen_before_null{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i < wcslen(s) ⇒ *(s+i) ≢ 0; + + axiom wcslen_at_null{L}: + ∀ wchar_t *s; 0 ≤ wcslen(s) ⇒ *(s+wcslen(s)) ≡ 0; + + axiom wcslen_not_zero{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i ≤ wcslen(s) ∧ *(s+i) ≢ 0 ⇒ i < wcslen(s); + + axiom wcslen_zero{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i ≤ wcslen(s) ∧ *(s+i) ≡ 0 ⇒ i ≡ wcslen(s); + + axiom wcslen_sup{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i ∧ *(s+i) ≡ 0 ⇒ 0 ≤ wcslen(s) ≤ i; + + axiom wcslen_shift{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i ≤ wcslen(s) ⇒ wcslen(s+i) ≡ wcslen(s)-i; + + axiom wcslen_create{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i ∧ *(s+i) ≡ 0 ⇒ 0 ≤ wcslen(s) ≤ i; + + axiom wcslen_create_shift{L}: + ∀ wchar_t *s; + ∀ int i; + ∀ int k; 0 ≤ k ≤ i ∧ *(s+i) ≡ 0 ⇒ 0 ≤ wcslen(s+k) ≤ i-k; + + } + */ +/*@ +axiomatic WcsCmp { + logic ℤ wcscmp{L}(wchar_t *s1, wchar_t *s2) + reads *(s1+(0 .. wcslen(s1))), *(s2+(0 .. wcslen(s2))); + + axiom wcscmp_zero{L}: + ∀ wchar_t *s1, wchar_t *s2; + wcscmp(s1, s2) ≡ 0 ⇔ + wcslen(s1) ≡ wcslen(s2) ∧ + (∀ ℤ i; 0 ≤ i ≤ wcslen(s1) ⇒ *(s1+i) ≡ *(s2+i)); + + } + */ +/*@ +axiomatic WcsNCmp { + logic ℤ wcsncmp{L}(wchar_t *s1, wchar_t *s2, ℤ n) + reads *(s1+(0 .. n-1)), *(s2+(0 .. n-1)); + + axiom wcsncmp_zero{L}: + ∀ wchar_t *s1, wchar_t *s2; + ∀ ℤ n; + wcsncmp(s1, s2, n) ≡ 0 ⇔ + (wcslen(s1) < n ∧ wcscmp(s1, s2) ≡ 0) ∨ + (∀ ℤ i; 0 ≤ i < n ⇒ *(s1+i) ≡ *(s2+i)); + + } + */ +/*@ logic ℤ minimum(ℤ i, ℤ j) = i<j? i: j; + */ +/*@ logic ℤ maximum(ℤ i, ℤ j) = i<j? j: i; + */ +/*@ +predicate valid_string{L}(char *s) = + 0 ≤ strlen(s) ∧ \valid(s+(0 .. strlen(s))); + */ +/*@ +predicate valid_read_string{L}(char *s) = + 0 ≤ strlen(s) ∧ \valid_read(s+(0 .. strlen(s))); + */ +/*@ +predicate valid_string_or_null{L}(char *s) = s ≡ \null ∨ valid_string(s); + */ +/*@ +predicate valid_wstring{L}(wchar_t *s) = + 0 ≤ wcslen(s) ∧ \valid(s+(0 .. wcslen(s))); + */ +/*@ +predicate valid_wstring_or_null{L}(wchar_t *s) = + s ≡ \null ∨ valid_wstring(s); + */ extern int __FC_errno; extern FILE *__fc_stdin; @@ -344,257 +595,6 @@ extern int ferror_unlocked(FILE *stream); assigns \result \from *stream; */ extern int fileno_unlocked(FILE *stream); -/*@ -axiomatic MemCmp { - logic ℤ memcmp{L1, L2}(char *s1, char *s2, ℤ n) - reads \at(*(s1+(0 .. n-1)),L1), \at(*(s2+(0 .. n-1)),L2); - - axiom memcmp_zero{L1, L2}: - ∀ char *s1, char *s2; - ∀ ℤ n; - memcmp{L1, L2}(s1, s2, n) ≡ 0 ⇔ - (∀ ℤ i; 0 ≤ i < n ⇒ \at(*(s1+i),L1) ≡ \at(*(s2+i),L2)); - - } - */ -/*@ -axiomatic MemChr { - logic 𔹠memchr{L}(char *s, ℤ c, ℤ n) - reads *(s+(0 .. n-1)); - - axiom memchr_def{L}: - ∀ char *s; - ∀ ℤ c; - ∀ ℤ n; - memchr(s, c, n) ≡ \true ⇔ (∃ int i; 0 ≤ i < n ∧ *(s+i) ≡ c); - - } - */ -/*@ -axiomatic MemSet { - logic 𔹠memset{L}(char *s, ℤ c, ℤ n) - reads *(s+(0 .. n-1)); - - axiom memset_def{L}: - ∀ char *s; - ∀ ℤ c; - ∀ ℤ n; - memset(s, c, n) ≡ \true ⇔ (∀ ℤ i; 0 ≤ i < n ⇒ *(s+i) ≡ c); - - } - */ -/*@ -axiomatic StrLen { - logic ℤ strlen{L}(char *s) - reads *(s+(0 ..)); - - axiom strlen_pos_or_null{L}: - ∀ char *s; - ∀ ℤ i; - 0 ≤ i ∧ (∀ ℤ j; 0 ≤ j < i ⇒ *(s+j) ≢ '\000') ∧ - *(s+i) ≡ '\000' ⇒ strlen(s) ≡ i; - - axiom strlen_neg{L}: - ∀ char *s; (∀ ℤ i; 0 ≤ i ⇒ *(s+i) ≢ '\000') ⇒ strlen(s) < 0; - - axiom strlen_before_null{L}: - ∀ char *s; - ∀ ℤ i; 0 ≤ i < strlen(s) ⇒ *(s+i) ≢ '\000'; - - axiom strlen_at_null{L}: - ∀ char *s; 0 ≤ strlen(s) ⇒ *(s+strlen(s)) ≡ '\000'; - - axiom strlen_not_zero{L}: - ∀ char *s; - ∀ ℤ i; 0 ≤ i ≤ strlen(s) ∧ *(s+i) ≢ '\000' ⇒ i < strlen(s); - - axiom strlen_zero{L}: - ∀ char *s; - ∀ ℤ i; - 0 ≤ i ≤ strlen(s) ∧ *(s+i) ≡ '\000' ⇒ i ≡ strlen(s); - - axiom strlen_sup{L}: - ∀ char *s; - ∀ ℤ i; 0 ≤ i ∧ *(s+i) ≡ '\000' ⇒ 0 ≤ strlen(s) ≤ i; - - axiom strlen_shift{L}: - ∀ char *s; - ∀ ℤ i; 0 ≤ i ≤ strlen(s) ⇒ strlen(s+i) ≡ strlen(s)-i; - - axiom strlen_create{L}: - ∀ char *s; - ∀ ℤ i; 0 ≤ i ∧ *(s+i) ≡ '\000' ⇒ 0 ≤ strlen(s) ≤ i; - - axiom strlen_create_shift{L}: - ∀ char *s; - ∀ ℤ i; - ∀ ℤ k; - 0 ≤ k ≤ i ∧ *(s+i) ≡ '\000' ⇒ 0 ≤ strlen(s+k) ≤ i-k; - - axiom memcmp_strlen_left{L}: - ∀ char *s1, char *s2; - ∀ ℤ n; - memcmp{L, L}(s1, s2, n) ≡ 0 ∧ strlen(s1) < n ⇒ - strlen(s1) ≡ strlen(s2); - - axiom memcmp_strlen_right{L}: - ∀ char *s1, char *s2; - ∀ ℤ n; - memcmp{L, L}(s1, s2, n) ≡ 0 ∧ strlen(s2) < n ⇒ - strlen(s1) ≡ strlen(s2); - - axiom memcmp_strlen_shift_left{L}: - ∀ char *s1, char *s2; - ∀ ℤ k, ℤ n; - memcmp{L, L}(s1, s2+k, n) ≡ 0 ≤ k ∧ strlen(s1) < n ⇒ - 0 ≤ strlen(s2) ≤ k+strlen(s1); - - axiom memcmp_strlen_shift_right{L}: - ∀ char *s1, char *s2; - ∀ ℤ k, ℤ n; - memcmp{L, L}(s1+k, s2, n) ≡ 0 ≤ k ∧ strlen(s2) < n ⇒ - 0 ≤ strlen(s1) ≤ k+strlen(s2); - - } - */ -/*@ -axiomatic StrCmp { - logic ℤ strcmp{L}(char *s1, char *s2) - reads *(s1+(0 .. strlen(s1))), *(s2+(0 .. strlen(s2))); - - axiom strcmp_zero{L}: - ∀ char *s1, char *s2; - strcmp(s1, s2) ≡ 0 ⇔ - strlen(s1) ≡ strlen(s2) ∧ - (∀ ℤ i; 0 ≤ i ≤ strlen(s1) ⇒ *(s1+i) ≡ *(s2+i)); - - } - */ -/*@ -axiomatic StrNCmp { - logic ℤ strncmp{L}(char *s1, char *s2, ℤ n) - reads *(s1+(0 .. n-1)), *(s2+(0 .. n-1)); - - axiom strncmp_zero{L}: - ∀ char *s1, char *s2; - ∀ ℤ n; - strncmp(s1, s2, n) ≡ 0 ⇔ - (strlen(s1) < n ∧ strcmp(s1, s2) ≡ 0) ∨ - (∀ ℤ i; 0 ≤ i < n ⇒ *(s1+i) ≡ *(s2+i)); - - } - */ -/*@ -axiomatic StrChr { - logic 𔹠strchr{L}(char *s, ℤ c) - reads *(s+(0 .. strlen(s))); - - axiom strchr_def{L}: - ∀ char *s; - ∀ ℤ c; - strchr(s, c) ≡ \true ⇔ - (∃ ℤ i; 0 ≤ i ≤ strlen(s) ∧ *(s+i) ≡ c); - - } - */ -/*@ -axiomatic WcsLen { - logic ℤ wcslen{L}(wchar_t *s) - reads *(s+(0 ..)); - - axiom wcslen_pos_or_null{L}: - ∀ wchar_t *s; - ∀ ℤ i; - 0 ≤ i ∧ (∀ ℤ j; 0 ≤ j < i ⇒ *(s+j) ≢ 0) ∧ *(s+i) ≡ 0 ⇒ - wcslen(s) ≡ i; - - axiom wcslen_neg{L}: - ∀ wchar_t *s; (∀ ℤ i; 0 ≤ i ⇒ *(s+i) ≢ 0) ⇒ wcslen(s) < 0; - - axiom wcslen_before_null{L}: - ∀ wchar_t *s; - ∀ int i; 0 ≤ i < wcslen(s) ⇒ *(s+i) ≢ 0; - - axiom wcslen_at_null{L}: - ∀ wchar_t *s; 0 ≤ wcslen(s) ⇒ *(s+wcslen(s)) ≡ 0; - - axiom wcslen_not_zero{L}: - ∀ wchar_t *s; - ∀ int i; 0 ≤ i ≤ wcslen(s) ∧ *(s+i) ≢ 0 ⇒ i < wcslen(s); - - axiom wcslen_zero{L}: - ∀ wchar_t *s; - ∀ int i; 0 ≤ i ≤ wcslen(s) ∧ *(s+i) ≡ 0 ⇒ i ≡ wcslen(s); - - axiom wcslen_sup{L}: - ∀ wchar_t *s; - ∀ int i; 0 ≤ i ∧ *(s+i) ≡ 0 ⇒ 0 ≤ wcslen(s) ≤ i; - - axiom wcslen_shift{L}: - ∀ wchar_t *s; - ∀ int i; 0 ≤ i ≤ wcslen(s) ⇒ wcslen(s+i) ≡ wcslen(s)-i; - - axiom wcslen_create{L}: - ∀ wchar_t *s; - ∀ int i; 0 ≤ i ∧ *(s+i) ≡ 0 ⇒ 0 ≤ wcslen(s) ≤ i; - - axiom wcslen_create_shift{L}: - ∀ wchar_t *s; - ∀ int i; - ∀ int k; 0 ≤ k ≤ i ∧ *(s+i) ≡ 0 ⇒ 0 ≤ wcslen(s+k) ≤ i-k; - - } - */ -/*@ -axiomatic WcsCmp { - logic ℤ wcscmp{L}(wchar_t *s1, wchar_t *s2) - reads *(s1+(0 .. wcslen(s1))), *(s2+(0 .. wcslen(s2))); - - axiom wcscmp_zero{L}: - ∀ wchar_t *s1, wchar_t *s2; - wcscmp(s1, s2) ≡ 0 ⇔ - wcslen(s1) ≡ wcslen(s2) ∧ - (∀ ℤ i; 0 ≤ i ≤ wcslen(s1) ⇒ *(s1+i) ≡ *(s2+i)); - - } - */ -/*@ -axiomatic WcsNCmp { - logic ℤ wcsncmp{L}(wchar_t *s1, wchar_t *s2, ℤ n) - reads *(s1+(0 .. n-1)), *(s2+(0 .. n-1)); - - axiom wcsncmp_zero{L}: - ∀ wchar_t *s1, wchar_t *s2; - ∀ ℤ n; - wcsncmp(s1, s2, n) ≡ 0 ⇔ - (wcslen(s1) < n ∧ wcscmp(s1, s2) ≡ 0) ∨ - (∀ ℤ i; 0 ≤ i < n ⇒ *(s1+i) ≡ *(s2+i)); - - } - */ -/*@ logic ℤ minimum(ℤ i, ℤ j) = i<j? i: j; - */ -/*@ logic ℤ maximum(ℤ i, ℤ j) = i<j? j: i; - */ -/*@ -predicate valid_string{L}(char *s) = - 0 ≤ strlen(s) ∧ \valid(s+(0 .. strlen(s))); - */ -/*@ -predicate valid_read_string{L}(char *s) = - 0 ≤ strlen(s) ∧ \valid_read(s+(0 .. strlen(s))); - */ -/*@ -predicate valid_string_or_null{L}(char *s) = s ≡ \null ∨ valid_string(s); - */ -/*@ -predicate valid_wstring{L}(wchar_t *s) = - 0 ≤ wcslen(s) ∧ \valid(s+(0 .. wcslen(s))); - */ -/*@ -predicate valid_wstring_or_null{L}(wchar_t *s) = - s ≡ \null ∨ valid_wstring(s); - */ /*@ requires valid_read_string(format); assigns \result, *__fc_stdout; assigns \result \from *__fc_stdout, *(format+(0 ..)), param0; diff --git a/src/plugins/variadic/tests/known/oracle/scanf.0.res.oracle b/src/plugins/variadic/tests/known/oracle/scanf.0.res.oracle index bd0f79e67e4bcd5f45b02131a1b78768055ce334..a7d622a57cafc5e1d9309990dc40f210b85ba8ab 100644 --- a/src/plugins/variadic/tests/known/oracle/scanf.0.res.oracle +++ b/src/plugins/variadic/tests/known/oracle/scanf.0.res.oracle @@ -1,12 +1,12 @@ -FRAMAC_SHARE/libc/stdio.h:133:[va] Declaration of variadic function fprintf. -FRAMAC_SHARE/libc/stdio.h:138:[va] Declaration of variadic function fscanf. -FRAMAC_SHARE/libc/stdio.h:144:[va] Declaration of variadic function printf. -FRAMAC_SHARE/libc/stdio.h:149:[va] Declaration of variadic function scanf. -FRAMAC_SHARE/libc/stdio.h:154:[va] Declaration of variadic function snprintf. -FRAMAC_SHARE/libc/stdio.h:160:[va] Declaration of variadic function sprintf. -[va] warning: Unable to locate ACSL predicate valid_read_string. +FRAMAC_SHARE/libc/stdio.h:134:[va] Declaration of variadic function fprintf. +FRAMAC_SHARE/libc/stdio.h:139:[va] Declaration of variadic function fscanf. +FRAMAC_SHARE/libc/stdio.h:145:[va] Declaration of variadic function printf. +FRAMAC_SHARE/libc/stdio.h:150:[va] Declaration of variadic function scanf. +FRAMAC_SHARE/libc/stdio.h:155:[va] Declaration of variadic function snprintf. +FRAMAC_SHARE/libc/stdio.h:161:[va] Declaration of variadic function sprintf. tests/known/scanf.c:7:[va] Translating call to scanf to a call to the specialized version scanf_0. /* Generated by Frama-C */ +typedef int wchar_t; typedef void * const *va_list; typedef unsigned int size_t; typedef unsigned int ino_t; @@ -49,6 +49,257 @@ struct __fc_FILE { int __fc_real_data_max_size ; }; typedef struct __fc_FILE FILE; +/*@ +axiomatic MemCmp { + logic ℤ memcmp{L1, L2}(char *s1, char *s2, ℤ n) + reads \at(*(s1+(0 .. n-1)),L1), \at(*(s2+(0 .. n-1)),L2); + + axiom memcmp_zero{L1, L2}: + ∀ char *s1, char *s2; + ∀ ℤ n; + memcmp{L1, L2}(s1, s2, n) ≡ 0 ⇔ + (∀ ℤ i; 0 ≤ i < n ⇒ \at(*(s1+i),L1) ≡ \at(*(s2+i),L2)); + + } + */ +/*@ +axiomatic MemChr { + logic 𔹠memchr{L}(char *s, ℤ c, ℤ n) + reads *(s+(0 .. n-1)); + + axiom memchr_def{L}: + ∀ char *s; + ∀ ℤ c; + ∀ ℤ n; + memchr(s, c, n) ≡ \true ⇔ (∃ int i; 0 ≤ i < n ∧ *(s+i) ≡ c); + + } + */ +/*@ +axiomatic MemSet { + logic 𔹠memset{L}(char *s, ℤ c, ℤ n) + reads *(s+(0 .. n-1)); + + axiom memset_def{L}: + ∀ char *s; + ∀ ℤ c; + ∀ ℤ n; + memset(s, c, n) ≡ \true ⇔ (∀ ℤ i; 0 ≤ i < n ⇒ *(s+i) ≡ c); + + } + */ +/*@ +axiomatic StrLen { + logic ℤ strlen{L}(char *s) + reads *(s+(0 ..)); + + axiom strlen_pos_or_null{L}: + ∀ char *s; + ∀ ℤ i; + 0 ≤ i ∧ (∀ ℤ j; 0 ≤ j < i ⇒ *(s+j) ≢ '\000') ∧ + *(s+i) ≡ '\000' ⇒ strlen(s) ≡ i; + + axiom strlen_neg{L}: + ∀ char *s; (∀ ℤ i; 0 ≤ i ⇒ *(s+i) ≢ '\000') ⇒ strlen(s) < 0; + + axiom strlen_before_null{L}: + ∀ char *s; + ∀ ℤ i; 0 ≤ i < strlen(s) ⇒ *(s+i) ≢ '\000'; + + axiom strlen_at_null{L}: + ∀ char *s; 0 ≤ strlen(s) ⇒ *(s+strlen(s)) ≡ '\000'; + + axiom strlen_not_zero{L}: + ∀ char *s; + ∀ ℤ i; 0 ≤ i ≤ strlen(s) ∧ *(s+i) ≢ '\000' ⇒ i < strlen(s); + + axiom strlen_zero{L}: + ∀ char *s; + ∀ ℤ i; + 0 ≤ i ≤ strlen(s) ∧ *(s+i) ≡ '\000' ⇒ i ≡ strlen(s); + + axiom strlen_sup{L}: + ∀ char *s; + ∀ ℤ i; 0 ≤ i ∧ *(s+i) ≡ '\000' ⇒ 0 ≤ strlen(s) ≤ i; + + axiom strlen_shift{L}: + ∀ char *s; + ∀ ℤ i; 0 ≤ i ≤ strlen(s) ⇒ strlen(s+i) ≡ strlen(s)-i; + + axiom strlen_create{L}: + ∀ char *s; + ∀ ℤ i; 0 ≤ i ∧ *(s+i) ≡ '\000' ⇒ 0 ≤ strlen(s) ≤ i; + + axiom strlen_create_shift{L}: + ∀ char *s; + ∀ ℤ i; + ∀ ℤ k; + 0 ≤ k ≤ i ∧ *(s+i) ≡ '\000' ⇒ 0 ≤ strlen(s+k) ≤ i-k; + + axiom memcmp_strlen_left{L}: + ∀ char *s1, char *s2; + ∀ ℤ n; + memcmp{L, L}(s1, s2, n) ≡ 0 ∧ strlen(s1) < n ⇒ + strlen(s1) ≡ strlen(s2); + + axiom memcmp_strlen_right{L}: + ∀ char *s1, char *s2; + ∀ ℤ n; + memcmp{L, L}(s1, s2, n) ≡ 0 ∧ strlen(s2) < n ⇒ + strlen(s1) ≡ strlen(s2); + + axiom memcmp_strlen_shift_left{L}: + ∀ char *s1, char *s2; + ∀ ℤ k, ℤ n; + memcmp{L, L}(s1, s2+k, n) ≡ 0 ≤ k ∧ strlen(s1) < n ⇒ + 0 ≤ strlen(s2) ≤ k+strlen(s1); + + axiom memcmp_strlen_shift_right{L}: + ∀ char *s1, char *s2; + ∀ ℤ k, ℤ n; + memcmp{L, L}(s1+k, s2, n) ≡ 0 ≤ k ∧ strlen(s2) < n ⇒ + 0 ≤ strlen(s1) ≤ k+strlen(s2); + + } + */ +/*@ +axiomatic StrCmp { + logic ℤ strcmp{L}(char *s1, char *s2) + reads *(s1+(0 .. strlen(s1))), *(s2+(0 .. strlen(s2))); + + axiom strcmp_zero{L}: + ∀ char *s1, char *s2; + strcmp(s1, s2) ≡ 0 ⇔ + strlen(s1) ≡ strlen(s2) ∧ + (∀ ℤ i; 0 ≤ i ≤ strlen(s1) ⇒ *(s1+i) ≡ *(s2+i)); + + } + */ +/*@ +axiomatic StrNCmp { + logic ℤ strncmp{L}(char *s1, char *s2, ℤ n) + reads *(s1+(0 .. n-1)), *(s2+(0 .. n-1)); + + axiom strncmp_zero{L}: + ∀ char *s1, char *s2; + ∀ ℤ n; + strncmp(s1, s2, n) ≡ 0 ⇔ + (strlen(s1) < n ∧ strcmp(s1, s2) ≡ 0) ∨ + (∀ ℤ i; 0 ≤ i < n ⇒ *(s1+i) ≡ *(s2+i)); + + } + */ +/*@ +axiomatic StrChr { + logic 𔹠strchr{L}(char *s, ℤ c) + reads *(s+(0 .. strlen(s))); + + axiom strchr_def{L}: + ∀ char *s; + ∀ ℤ c; + strchr(s, c) ≡ \true ⇔ + (∃ ℤ i; 0 ≤ i ≤ strlen(s) ∧ *(s+i) ≡ c); + + } + */ +/*@ +axiomatic WcsLen { + logic ℤ wcslen{L}(wchar_t *s) + reads *(s+(0 ..)); + + axiom wcslen_pos_or_null{L}: + ∀ wchar_t *s; + ∀ ℤ i; + 0 ≤ i ∧ (∀ ℤ j; 0 ≤ j < i ⇒ *(s+j) ≢ 0) ∧ *(s+i) ≡ 0 ⇒ + wcslen(s) ≡ i; + + axiom wcslen_neg{L}: + ∀ wchar_t *s; (∀ ℤ i; 0 ≤ i ⇒ *(s+i) ≢ 0) ⇒ wcslen(s) < 0; + + axiom wcslen_before_null{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i < wcslen(s) ⇒ *(s+i) ≢ 0; + + axiom wcslen_at_null{L}: + ∀ wchar_t *s; 0 ≤ wcslen(s) ⇒ *(s+wcslen(s)) ≡ 0; + + axiom wcslen_not_zero{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i ≤ wcslen(s) ∧ *(s+i) ≢ 0 ⇒ i < wcslen(s); + + axiom wcslen_zero{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i ≤ wcslen(s) ∧ *(s+i) ≡ 0 ⇒ i ≡ wcslen(s); + + axiom wcslen_sup{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i ∧ *(s+i) ≡ 0 ⇒ 0 ≤ wcslen(s) ≤ i; + + axiom wcslen_shift{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i ≤ wcslen(s) ⇒ wcslen(s+i) ≡ wcslen(s)-i; + + axiom wcslen_create{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i ∧ *(s+i) ≡ 0 ⇒ 0 ≤ wcslen(s) ≤ i; + + axiom wcslen_create_shift{L}: + ∀ wchar_t *s; + ∀ int i; + ∀ int k; 0 ≤ k ≤ i ∧ *(s+i) ≡ 0 ⇒ 0 ≤ wcslen(s+k) ≤ i-k; + + } + */ +/*@ +axiomatic WcsCmp { + logic ℤ wcscmp{L}(wchar_t *s1, wchar_t *s2) + reads *(s1+(0 .. wcslen(s1))), *(s2+(0 .. wcslen(s2))); + + axiom wcscmp_zero{L}: + ∀ wchar_t *s1, wchar_t *s2; + wcscmp(s1, s2) ≡ 0 ⇔ + wcslen(s1) ≡ wcslen(s2) ∧ + (∀ ℤ i; 0 ≤ i ≤ wcslen(s1) ⇒ *(s1+i) ≡ *(s2+i)); + + } + */ +/*@ +axiomatic WcsNCmp { + logic ℤ wcsncmp{L}(wchar_t *s1, wchar_t *s2, ℤ n) + reads *(s1+(0 .. n-1)), *(s2+(0 .. n-1)); + + axiom wcsncmp_zero{L}: + ∀ wchar_t *s1, wchar_t *s2; + ∀ ℤ n; + wcsncmp(s1, s2, n) ≡ 0 ⇔ + (wcslen(s1) < n ∧ wcscmp(s1, s2) ≡ 0) ∨ + (∀ ℤ i; 0 ≤ i < n ⇒ *(s1+i) ≡ *(s2+i)); + + } + */ +/*@ logic ℤ minimum(ℤ i, ℤ j) = i<j? i: j; + */ +/*@ logic ℤ maximum(ℤ i, ℤ j) = i<j? j: i; + */ +/*@ +predicate valid_string{L}(char *s) = + 0 ≤ strlen(s) ∧ \valid(s+(0 .. strlen(s))); + */ +/*@ +predicate valid_read_string{L}(char *s) = + 0 ≤ strlen(s) ∧ \valid_read(s+(0 .. strlen(s))); + */ +/*@ +predicate valid_string_or_null{L}(char *s) = s ≡ \null ∨ valid_string(s); + */ +/*@ +predicate valid_wstring{L}(wchar_t *s) = + 0 ≤ wcslen(s) ∧ \valid(s+(0 .. wcslen(s))); + */ +/*@ +predicate valid_wstring_or_null{L}(wchar_t *s) = + s ≡ \null ∨ valid_wstring(s); + */ extern int __FC_errno; extern FILE *__fc_stdin; @@ -325,7 +576,8 @@ extern int ferror_unlocked(FILE *stream); assigns \result \from *stream; */ extern int fileno_unlocked(FILE *stream); -/*@ requires \valid(param2); +/*@ requires valid_read_string(format); + requires \valid(param2); requires \valid(param1); ensures \initialized(param2); ensures \initialized(param1); diff --git a/src/plugins/variadic/tests/known/oracle/scanf.1.res.oracle b/src/plugins/variadic/tests/known/oracle/scanf.1.res.oracle index 9685e51715efe3d381503b2ecb3b58cf94776154..97c68ab67e78d1f7d3239eea5248ad2a3cef9189 100644 --- a/src/plugins/variadic/tests/known/oracle/scanf.1.res.oracle +++ b/src/plugins/variadic/tests/known/oracle/scanf.1.res.oracle @@ -1,4 +1,3 @@ -[va] warning: Unable to locate ACSL predicate valid_read_string. [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed diff --git a/src/plugins/variadic/tests/known/oracle/scanf_wrong.0.res.oracle b/src/plugins/variadic/tests/known/oracle/scanf_wrong.0.res.oracle index 91f1fe3cfcabead245a10fa46c5727be71305e46..cda7a32ae25c4a3831f8dbf35734bdbf4fc534a3 100644 --- a/src/plugins/variadic/tests/known/oracle/scanf_wrong.0.res.oracle +++ b/src/plugins/variadic/tests/known/oracle/scanf_wrong.0.res.oracle @@ -1,13 +1,13 @@ -FRAMAC_SHARE/libc/stdio.h:133:[va] Declaration of variadic function fprintf. -FRAMAC_SHARE/libc/stdio.h:138:[va] Declaration of variadic function fscanf. -FRAMAC_SHARE/libc/stdio.h:144:[va] Declaration of variadic function printf. -FRAMAC_SHARE/libc/stdio.h:149:[va] Declaration of variadic function scanf. -FRAMAC_SHARE/libc/stdio.h:154:[va] Declaration of variadic function snprintf. -FRAMAC_SHARE/libc/stdio.h:160:[va] Declaration of variadic function sprintf. -[va] warning: Unable to locate ACSL predicate valid_read_string. +FRAMAC_SHARE/libc/stdio.h:134:[va] Declaration of variadic function fprintf. +FRAMAC_SHARE/libc/stdio.h:139:[va] Declaration of variadic function fscanf. +FRAMAC_SHARE/libc/stdio.h:145:[va] Declaration of variadic function printf. +FRAMAC_SHARE/libc/stdio.h:150:[va] Declaration of variadic function scanf. +FRAMAC_SHARE/libc/stdio.h:155:[va] Declaration of variadic function snprintf. +FRAMAC_SHARE/libc/stdio.h:161:[va] Declaration of variadic function sprintf. tests/known/scanf_wrong.c:8:[va] Translating call to scanf to a call to the specialized version scanf_0. tests/known/scanf_wrong.c:8:[va] warning: Incorrect type for argument 2. The argument will be cast from double to char *. /* Generated by Frama-C */ +typedef int wchar_t; typedef void * const *va_list; typedef unsigned int size_t; typedef unsigned int ino_t; @@ -50,6 +50,257 @@ struct __fc_FILE { int __fc_real_data_max_size ; }; typedef struct __fc_FILE FILE; +/*@ +axiomatic MemCmp { + logic ℤ memcmp{L1, L2}(char *s1, char *s2, ℤ n) + reads \at(*(s1+(0 .. n-1)),L1), \at(*(s2+(0 .. n-1)),L2); + + axiom memcmp_zero{L1, L2}: + ∀ char *s1, char *s2; + ∀ ℤ n; + memcmp{L1, L2}(s1, s2, n) ≡ 0 ⇔ + (∀ ℤ i; 0 ≤ i < n ⇒ \at(*(s1+i),L1) ≡ \at(*(s2+i),L2)); + + } + */ +/*@ +axiomatic MemChr { + logic 𔹠memchr{L}(char *s, ℤ c, ℤ n) + reads *(s+(0 .. n-1)); + + axiom memchr_def{L}: + ∀ char *s; + ∀ ℤ c; + ∀ ℤ n; + memchr(s, c, n) ≡ \true ⇔ (∃ int i; 0 ≤ i < n ∧ *(s+i) ≡ c); + + } + */ +/*@ +axiomatic MemSet { + logic 𔹠memset{L}(char *s, ℤ c, ℤ n) + reads *(s+(0 .. n-1)); + + axiom memset_def{L}: + ∀ char *s; + ∀ ℤ c; + ∀ ℤ n; + memset(s, c, n) ≡ \true ⇔ (∀ ℤ i; 0 ≤ i < n ⇒ *(s+i) ≡ c); + + } + */ +/*@ +axiomatic StrLen { + logic ℤ strlen{L}(char *s) + reads *(s+(0 ..)); + + axiom strlen_pos_or_null{L}: + ∀ char *s; + ∀ ℤ i; + 0 ≤ i ∧ (∀ ℤ j; 0 ≤ j < i ⇒ *(s+j) ≢ '\000') ∧ + *(s+i) ≡ '\000' ⇒ strlen(s) ≡ i; + + axiom strlen_neg{L}: + ∀ char *s; (∀ ℤ i; 0 ≤ i ⇒ *(s+i) ≢ '\000') ⇒ strlen(s) < 0; + + axiom strlen_before_null{L}: + ∀ char *s; + ∀ ℤ i; 0 ≤ i < strlen(s) ⇒ *(s+i) ≢ '\000'; + + axiom strlen_at_null{L}: + ∀ char *s; 0 ≤ strlen(s) ⇒ *(s+strlen(s)) ≡ '\000'; + + axiom strlen_not_zero{L}: + ∀ char *s; + ∀ ℤ i; 0 ≤ i ≤ strlen(s) ∧ *(s+i) ≢ '\000' ⇒ i < strlen(s); + + axiom strlen_zero{L}: + ∀ char *s; + ∀ ℤ i; + 0 ≤ i ≤ strlen(s) ∧ *(s+i) ≡ '\000' ⇒ i ≡ strlen(s); + + axiom strlen_sup{L}: + ∀ char *s; + ∀ ℤ i; 0 ≤ i ∧ *(s+i) ≡ '\000' ⇒ 0 ≤ strlen(s) ≤ i; + + axiom strlen_shift{L}: + ∀ char *s; + ∀ ℤ i; 0 ≤ i ≤ strlen(s) ⇒ strlen(s+i) ≡ strlen(s)-i; + + axiom strlen_create{L}: + ∀ char *s; + ∀ ℤ i; 0 ≤ i ∧ *(s+i) ≡ '\000' ⇒ 0 ≤ strlen(s) ≤ i; + + axiom strlen_create_shift{L}: + ∀ char *s; + ∀ ℤ i; + ∀ ℤ k; + 0 ≤ k ≤ i ∧ *(s+i) ≡ '\000' ⇒ 0 ≤ strlen(s+k) ≤ i-k; + + axiom memcmp_strlen_left{L}: + ∀ char *s1, char *s2; + ∀ ℤ n; + memcmp{L, L}(s1, s2, n) ≡ 0 ∧ strlen(s1) < n ⇒ + strlen(s1) ≡ strlen(s2); + + axiom memcmp_strlen_right{L}: + ∀ char *s1, char *s2; + ∀ ℤ n; + memcmp{L, L}(s1, s2, n) ≡ 0 ∧ strlen(s2) < n ⇒ + strlen(s1) ≡ strlen(s2); + + axiom memcmp_strlen_shift_left{L}: + ∀ char *s1, char *s2; + ∀ ℤ k, ℤ n; + memcmp{L, L}(s1, s2+k, n) ≡ 0 ≤ k ∧ strlen(s1) < n ⇒ + 0 ≤ strlen(s2) ≤ k+strlen(s1); + + axiom memcmp_strlen_shift_right{L}: + ∀ char *s1, char *s2; + ∀ ℤ k, ℤ n; + memcmp{L, L}(s1+k, s2, n) ≡ 0 ≤ k ∧ strlen(s2) < n ⇒ + 0 ≤ strlen(s1) ≤ k+strlen(s2); + + } + */ +/*@ +axiomatic StrCmp { + logic ℤ strcmp{L}(char *s1, char *s2) + reads *(s1+(0 .. strlen(s1))), *(s2+(0 .. strlen(s2))); + + axiom strcmp_zero{L}: + ∀ char *s1, char *s2; + strcmp(s1, s2) ≡ 0 ⇔ + strlen(s1) ≡ strlen(s2) ∧ + (∀ ℤ i; 0 ≤ i ≤ strlen(s1) ⇒ *(s1+i) ≡ *(s2+i)); + + } + */ +/*@ +axiomatic StrNCmp { + logic ℤ strncmp{L}(char *s1, char *s2, ℤ n) + reads *(s1+(0 .. n-1)), *(s2+(0 .. n-1)); + + axiom strncmp_zero{L}: + ∀ char *s1, char *s2; + ∀ ℤ n; + strncmp(s1, s2, n) ≡ 0 ⇔ + (strlen(s1) < n ∧ strcmp(s1, s2) ≡ 0) ∨ + (∀ ℤ i; 0 ≤ i < n ⇒ *(s1+i) ≡ *(s2+i)); + + } + */ +/*@ +axiomatic StrChr { + logic 𔹠strchr{L}(char *s, ℤ c) + reads *(s+(0 .. strlen(s))); + + axiom strchr_def{L}: + ∀ char *s; + ∀ ℤ c; + strchr(s, c) ≡ \true ⇔ + (∃ ℤ i; 0 ≤ i ≤ strlen(s) ∧ *(s+i) ≡ c); + + } + */ +/*@ +axiomatic WcsLen { + logic ℤ wcslen{L}(wchar_t *s) + reads *(s+(0 ..)); + + axiom wcslen_pos_or_null{L}: + ∀ wchar_t *s; + ∀ ℤ i; + 0 ≤ i ∧ (∀ ℤ j; 0 ≤ j < i ⇒ *(s+j) ≢ 0) ∧ *(s+i) ≡ 0 ⇒ + wcslen(s) ≡ i; + + axiom wcslen_neg{L}: + ∀ wchar_t *s; (∀ ℤ i; 0 ≤ i ⇒ *(s+i) ≢ 0) ⇒ wcslen(s) < 0; + + axiom wcslen_before_null{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i < wcslen(s) ⇒ *(s+i) ≢ 0; + + axiom wcslen_at_null{L}: + ∀ wchar_t *s; 0 ≤ wcslen(s) ⇒ *(s+wcslen(s)) ≡ 0; + + axiom wcslen_not_zero{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i ≤ wcslen(s) ∧ *(s+i) ≢ 0 ⇒ i < wcslen(s); + + axiom wcslen_zero{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i ≤ wcslen(s) ∧ *(s+i) ≡ 0 ⇒ i ≡ wcslen(s); + + axiom wcslen_sup{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i ∧ *(s+i) ≡ 0 ⇒ 0 ≤ wcslen(s) ≤ i; + + axiom wcslen_shift{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i ≤ wcslen(s) ⇒ wcslen(s+i) ≡ wcslen(s)-i; + + axiom wcslen_create{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i ∧ *(s+i) ≡ 0 ⇒ 0 ≤ wcslen(s) ≤ i; + + axiom wcslen_create_shift{L}: + ∀ wchar_t *s; + ∀ int i; + ∀ int k; 0 ≤ k ≤ i ∧ *(s+i) ≡ 0 ⇒ 0 ≤ wcslen(s+k) ≤ i-k; + + } + */ +/*@ +axiomatic WcsCmp { + logic ℤ wcscmp{L}(wchar_t *s1, wchar_t *s2) + reads *(s1+(0 .. wcslen(s1))), *(s2+(0 .. wcslen(s2))); + + axiom wcscmp_zero{L}: + ∀ wchar_t *s1, wchar_t *s2; + wcscmp(s1, s2) ≡ 0 ⇔ + wcslen(s1) ≡ wcslen(s2) ∧ + (∀ ℤ i; 0 ≤ i ≤ wcslen(s1) ⇒ *(s1+i) ≡ *(s2+i)); + + } + */ +/*@ +axiomatic WcsNCmp { + logic ℤ wcsncmp{L}(wchar_t *s1, wchar_t *s2, ℤ n) + reads *(s1+(0 .. n-1)), *(s2+(0 .. n-1)); + + axiom wcsncmp_zero{L}: + ∀ wchar_t *s1, wchar_t *s2; + ∀ ℤ n; + wcsncmp(s1, s2, n) ≡ 0 ⇔ + (wcslen(s1) < n ∧ wcscmp(s1, s2) ≡ 0) ∨ + (∀ ℤ i; 0 ≤ i < n ⇒ *(s1+i) ≡ *(s2+i)); + + } + */ +/*@ logic ℤ minimum(ℤ i, ℤ j) = i<j? i: j; + */ +/*@ logic ℤ maximum(ℤ i, ℤ j) = i<j? j: i; + */ +/*@ +predicate valid_string{L}(char *s) = + 0 ≤ strlen(s) ∧ \valid(s+(0 .. strlen(s))); + */ +/*@ +predicate valid_read_string{L}(char *s) = + 0 ≤ strlen(s) ∧ \valid_read(s+(0 .. strlen(s))); + */ +/*@ +predicate valid_string_or_null{L}(char *s) = s ≡ \null ∨ valid_string(s); + */ +/*@ +predicate valid_wstring{L}(wchar_t *s) = + 0 ≤ wcslen(s) ∧ \valid(s+(0 .. wcslen(s))); + */ +/*@ +predicate valid_wstring_or_null{L}(wchar_t *s) = + s ≡ \null ∨ valid_wstring(s); + */ extern int __FC_errno; extern FILE *__fc_stdin; @@ -326,7 +577,8 @@ extern int ferror_unlocked(FILE *stream); assigns \result \from *stream; */ extern int fileno_unlocked(FILE *stream); -/*@ requires \valid(param2); +/*@ requires valid_read_string(format); + requires \valid(param2); requires \valid(param1); ensures \initialized(param2); ensures \initialized(param1); diff --git a/src/plugins/variadic/tests/known/oracle/scanf_wrong.1.res.oracle b/src/plugins/variadic/tests/known/oracle/scanf_wrong.1.res.oracle index f35b6b4a1e531cab29faffb244f877104f2cb1ab..993e4a1d4656677a8992f39bf2394e44d7fecb79 100644 --- a/src/plugins/variadic/tests/known/oracle/scanf_wrong.1.res.oracle +++ b/src/plugins/variadic/tests/known/oracle/scanf_wrong.1.res.oracle @@ -1,4 +1,3 @@ -[va] warning: Unable to locate ACSL predicate valid_read_string. tests/known/scanf_wrong.c:8:[va] warning: Incorrect type for argument 2. The argument will be cast from double to char *. [value] Analyzing a complete application starting at main [value] Computing initial state diff --git a/src/plugins/variadic/tests/known/oracle/stdio_print.0.res.oracle b/src/plugins/variadic/tests/known/oracle/stdio_print.0.res.oracle index e23305792cc2a57e698ade3ea4a5068350dcbcfd..30785941ac4d335423ff6e97832afa45654330f1 100644 --- a/src/plugins/variadic/tests/known/oracle/stdio_print.0.res.oracle +++ b/src/plugins/variadic/tests/known/oracle/stdio_print.0.res.oracle @@ -1,22 +1,22 @@ -tests/known/stdio_print.c:14:[kernel] warning: Calling undeclared function dprintf. Old style K&R code? -FRAMAC_SHARE/libc/stdio.h:133:[va] Declaration of variadic function fprintf. -FRAMAC_SHARE/libc/stdio.h:138:[va] Declaration of variadic function fscanf. -FRAMAC_SHARE/libc/stdio.h:144:[va] Declaration of variadic function printf. -FRAMAC_SHARE/libc/stdio.h:149:[va] Declaration of variadic function scanf. -FRAMAC_SHARE/libc/stdio.h:154:[va] Declaration of variadic function snprintf. -FRAMAC_SHARE/libc/stdio.h:160:[va] Declaration of variadic function sprintf. +tests/known/stdio_print.c:13:[kernel] warning: Calling undeclared function dprintf. Old style K&R code? +FRAMAC_SHARE/libc/stdio.h:134:[va] Declaration of variadic function fprintf. +FRAMAC_SHARE/libc/stdio.h:139:[va] Declaration of variadic function fscanf. +FRAMAC_SHARE/libc/stdio.h:145:[va] Declaration of variadic function printf. +FRAMAC_SHARE/libc/stdio.h:150:[va] Declaration of variadic function scanf. +FRAMAC_SHARE/libc/stdio.h:155:[va] Declaration of variadic function snprintf. +FRAMAC_SHARE/libc/stdio.h:161:[va] Declaration of variadic function sprintf. +tests/known/stdio_print.c:9:[va] Generic translation of call to variadic function. tests/known/stdio_print.c:10:[va] Generic translation of call to variadic function. tests/known/stdio_print.c:11:[va] Generic translation of call to variadic function. tests/known/stdio_print.c:12:[va] Generic translation of call to variadic function. -tests/known/stdio_print.c:13:[va] Generic translation of call to variadic function. -tests/known/stdio_print.c:16:[va] Translating call to fprintf to a call to the specialized version fprintf_0. -tests/known/stdio_print.c:17:[va] Translating call to printf to a call to the specialized version printf_0. -tests/known/stdio_print.c:18:[va] Translating call to snprintf to a call to the specialized version snprintf_0. -tests/known/stdio_print.c:19:[va] Translating call to sprintf to a call to the specialized version sprintf_0. +tests/known/stdio_print.c:15:[va] Translating call to fprintf to a call to the specialized version fprintf_0. +tests/known/stdio_print.c:16:[va] Translating call to printf to a call to the specialized version printf_0. +tests/known/stdio_print.c:17:[va] Translating call to snprintf to a call to the specialized version snprintf_0. +tests/known/stdio_print.c:18:[va] Translating call to sprintf to a call to the specialized version sprintf_0. /* Generated by Frama-C */ +typedef int wchar_t; typedef void * const *va_list; typedef unsigned int size_t; -typedef int wchar_t; typedef unsigned int ino_t; typedef unsigned int gid_t; typedef unsigned int uid_t; @@ -57,6 +57,257 @@ struct __fc_FILE { int __fc_real_data_max_size ; }; typedef struct __fc_FILE FILE; +/*@ +axiomatic MemCmp { + logic ℤ memcmp{L1, L2}(char *s1, char *s2, ℤ n) + reads \at(*(s1+(0 .. n-1)),L1), \at(*(s2+(0 .. n-1)),L2); + + axiom memcmp_zero{L1, L2}: + ∀ char *s1, char *s2; + ∀ ℤ n; + memcmp{L1, L2}(s1, s2, n) ≡ 0 ⇔ + (∀ ℤ i; 0 ≤ i < n ⇒ \at(*(s1+i),L1) ≡ \at(*(s2+i),L2)); + + } + */ +/*@ +axiomatic MemChr { + logic 𔹠memchr{L}(char *s, ℤ c, ℤ n) + reads *(s+(0 .. n-1)); + + axiom memchr_def{L}: + ∀ char *s; + ∀ ℤ c; + ∀ ℤ n; + memchr(s, c, n) ≡ \true ⇔ (∃ int i; 0 ≤ i < n ∧ *(s+i) ≡ c); + + } + */ +/*@ +axiomatic MemSet { + logic 𔹠memset{L}(char *s, ℤ c, ℤ n) + reads *(s+(0 .. n-1)); + + axiom memset_def{L}: + ∀ char *s; + ∀ ℤ c; + ∀ ℤ n; + memset(s, c, n) ≡ \true ⇔ (∀ ℤ i; 0 ≤ i < n ⇒ *(s+i) ≡ c); + + } + */ +/*@ +axiomatic StrLen { + logic ℤ strlen{L}(char *s) + reads *(s+(0 ..)); + + axiom strlen_pos_or_null{L}: + ∀ char *s; + ∀ ℤ i; + 0 ≤ i ∧ (∀ ℤ j; 0 ≤ j < i ⇒ *(s+j) ≢ '\000') ∧ + *(s+i) ≡ '\000' ⇒ strlen(s) ≡ i; + + axiom strlen_neg{L}: + ∀ char *s; (∀ ℤ i; 0 ≤ i ⇒ *(s+i) ≢ '\000') ⇒ strlen(s) < 0; + + axiom strlen_before_null{L}: + ∀ char *s; + ∀ ℤ i; 0 ≤ i < strlen(s) ⇒ *(s+i) ≢ '\000'; + + axiom strlen_at_null{L}: + ∀ char *s; 0 ≤ strlen(s) ⇒ *(s+strlen(s)) ≡ '\000'; + + axiom strlen_not_zero{L}: + ∀ char *s; + ∀ ℤ i; 0 ≤ i ≤ strlen(s) ∧ *(s+i) ≢ '\000' ⇒ i < strlen(s); + + axiom strlen_zero{L}: + ∀ char *s; + ∀ ℤ i; + 0 ≤ i ≤ strlen(s) ∧ *(s+i) ≡ '\000' ⇒ i ≡ strlen(s); + + axiom strlen_sup{L}: + ∀ char *s; + ∀ ℤ i; 0 ≤ i ∧ *(s+i) ≡ '\000' ⇒ 0 ≤ strlen(s) ≤ i; + + axiom strlen_shift{L}: + ∀ char *s; + ∀ ℤ i; 0 ≤ i ≤ strlen(s) ⇒ strlen(s+i) ≡ strlen(s)-i; + + axiom strlen_create{L}: + ∀ char *s; + ∀ ℤ i; 0 ≤ i ∧ *(s+i) ≡ '\000' ⇒ 0 ≤ strlen(s) ≤ i; + + axiom strlen_create_shift{L}: + ∀ char *s; + ∀ ℤ i; + ∀ ℤ k; + 0 ≤ k ≤ i ∧ *(s+i) ≡ '\000' ⇒ 0 ≤ strlen(s+k) ≤ i-k; + + axiom memcmp_strlen_left{L}: + ∀ char *s1, char *s2; + ∀ ℤ n; + memcmp{L, L}(s1, s2, n) ≡ 0 ∧ strlen(s1) < n ⇒ + strlen(s1) ≡ strlen(s2); + + axiom memcmp_strlen_right{L}: + ∀ char *s1, char *s2; + ∀ ℤ n; + memcmp{L, L}(s1, s2, n) ≡ 0 ∧ strlen(s2) < n ⇒ + strlen(s1) ≡ strlen(s2); + + axiom memcmp_strlen_shift_left{L}: + ∀ char *s1, char *s2; + ∀ ℤ k, ℤ n; + memcmp{L, L}(s1, s2+k, n) ≡ 0 ≤ k ∧ strlen(s1) < n ⇒ + 0 ≤ strlen(s2) ≤ k+strlen(s1); + + axiom memcmp_strlen_shift_right{L}: + ∀ char *s1, char *s2; + ∀ ℤ k, ℤ n; + memcmp{L, L}(s1+k, s2, n) ≡ 0 ≤ k ∧ strlen(s2) < n ⇒ + 0 ≤ strlen(s1) ≤ k+strlen(s2); + + } + */ +/*@ +axiomatic StrCmp { + logic ℤ strcmp{L}(char *s1, char *s2) + reads *(s1+(0 .. strlen(s1))), *(s2+(0 .. strlen(s2))); + + axiom strcmp_zero{L}: + ∀ char *s1, char *s2; + strcmp(s1, s2) ≡ 0 ⇔ + strlen(s1) ≡ strlen(s2) ∧ + (∀ ℤ i; 0 ≤ i ≤ strlen(s1) ⇒ *(s1+i) ≡ *(s2+i)); + + } + */ +/*@ +axiomatic StrNCmp { + logic ℤ strncmp{L}(char *s1, char *s2, ℤ n) + reads *(s1+(0 .. n-1)), *(s2+(0 .. n-1)); + + axiom strncmp_zero{L}: + ∀ char *s1, char *s2; + ∀ ℤ n; + strncmp(s1, s2, n) ≡ 0 ⇔ + (strlen(s1) < n ∧ strcmp(s1, s2) ≡ 0) ∨ + (∀ ℤ i; 0 ≤ i < n ⇒ *(s1+i) ≡ *(s2+i)); + + } + */ +/*@ +axiomatic StrChr { + logic 𔹠strchr{L}(char *s, ℤ c) + reads *(s+(0 .. strlen(s))); + + axiom strchr_def{L}: + ∀ char *s; + ∀ ℤ c; + strchr(s, c) ≡ \true ⇔ + (∃ ℤ i; 0 ≤ i ≤ strlen(s) ∧ *(s+i) ≡ c); + + } + */ +/*@ +axiomatic WcsLen { + logic ℤ wcslen{L}(wchar_t *s) + reads *(s+(0 ..)); + + axiom wcslen_pos_or_null{L}: + ∀ wchar_t *s; + ∀ ℤ i; + 0 ≤ i ∧ (∀ ℤ j; 0 ≤ j < i ⇒ *(s+j) ≢ 0) ∧ *(s+i) ≡ 0 ⇒ + wcslen(s) ≡ i; + + axiom wcslen_neg{L}: + ∀ wchar_t *s; (∀ ℤ i; 0 ≤ i ⇒ *(s+i) ≢ 0) ⇒ wcslen(s) < 0; + + axiom wcslen_before_null{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i < wcslen(s) ⇒ *(s+i) ≢ 0; + + axiom wcslen_at_null{L}: + ∀ wchar_t *s; 0 ≤ wcslen(s) ⇒ *(s+wcslen(s)) ≡ 0; + + axiom wcslen_not_zero{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i ≤ wcslen(s) ∧ *(s+i) ≢ 0 ⇒ i < wcslen(s); + + axiom wcslen_zero{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i ≤ wcslen(s) ∧ *(s+i) ≡ 0 ⇒ i ≡ wcslen(s); + + axiom wcslen_sup{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i ∧ *(s+i) ≡ 0 ⇒ 0 ≤ wcslen(s) ≤ i; + + axiom wcslen_shift{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i ≤ wcslen(s) ⇒ wcslen(s+i) ≡ wcslen(s)-i; + + axiom wcslen_create{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i ∧ *(s+i) ≡ 0 ⇒ 0 ≤ wcslen(s) ≤ i; + + axiom wcslen_create_shift{L}: + ∀ wchar_t *s; + ∀ int i; + ∀ int k; 0 ≤ k ≤ i ∧ *(s+i) ≡ 0 ⇒ 0 ≤ wcslen(s+k) ≤ i-k; + + } + */ +/*@ +axiomatic WcsCmp { + logic ℤ wcscmp{L}(wchar_t *s1, wchar_t *s2) + reads *(s1+(0 .. wcslen(s1))), *(s2+(0 .. wcslen(s2))); + + axiom wcscmp_zero{L}: + ∀ wchar_t *s1, wchar_t *s2; + wcscmp(s1, s2) ≡ 0 ⇔ + wcslen(s1) ≡ wcslen(s2) ∧ + (∀ ℤ i; 0 ≤ i ≤ wcslen(s1) ⇒ *(s1+i) ≡ *(s2+i)); + + } + */ +/*@ +axiomatic WcsNCmp { + logic ℤ wcsncmp{L}(wchar_t *s1, wchar_t *s2, ℤ n) + reads *(s1+(0 .. n-1)), *(s2+(0 .. n-1)); + + axiom wcsncmp_zero{L}: + ∀ wchar_t *s1, wchar_t *s2; + ∀ ℤ n; + wcsncmp(s1, s2, n) ≡ 0 ⇔ + (wcslen(s1) < n ∧ wcscmp(s1, s2) ≡ 0) ∨ + (∀ ℤ i; 0 ≤ i < n ⇒ *(s1+i) ≡ *(s2+i)); + + } + */ +/*@ logic ℤ minimum(ℤ i, ℤ j) = i<j? i: j; + */ +/*@ logic ℤ maximum(ℤ i, ℤ j) = i<j? j: i; + */ +/*@ +predicate valid_string{L}(char *s) = + 0 ≤ strlen(s) ∧ \valid(s+(0 .. strlen(s))); + */ +/*@ +predicate valid_read_string{L}(char *s) = + 0 ≤ strlen(s) ∧ \valid_read(s+(0 .. strlen(s))); + */ +/*@ +predicate valid_string_or_null{L}(char *s) = s ≡ \null ∨ valid_string(s); + */ +/*@ +predicate valid_wstring{L}(wchar_t *s) = + 0 ≤ wcslen(s) ∧ \valid(s+(0 .. wcslen(s))); + */ +/*@ +predicate valid_wstring_or_null{L}(wchar_t *s) = + s ≡ \null ∨ valid_wstring(s); + */ extern int __FC_errno; extern FILE *__fc_stdin; @@ -333,257 +584,6 @@ extern int ferror_unlocked(FILE *stream); assigns \result \from *stream; */ extern int fileno_unlocked(FILE *stream); -/*@ -axiomatic MemCmp { - logic ℤ memcmp{L1, L2}(char *s1, char *s2, ℤ n) - reads \at(*(s1+(0 .. n-1)),L1), \at(*(s2+(0 .. n-1)),L2); - - axiom memcmp_zero{L1, L2}: - ∀ char *s1, char *s2; - ∀ ℤ n; - memcmp{L1, L2}(s1, s2, n) ≡ 0 ⇔ - (∀ ℤ i; 0 ≤ i < n ⇒ \at(*(s1+i),L1) ≡ \at(*(s2+i),L2)); - - } - */ -/*@ -axiomatic MemChr { - logic 𔹠memchr{L}(char *s, ℤ c, ℤ n) - reads *(s+(0 .. n-1)); - - axiom memchr_def{L}: - ∀ char *s; - ∀ ℤ c; - ∀ ℤ n; - memchr(s, c, n) ≡ \true ⇔ (∃ int i; 0 ≤ i < n ∧ *(s+i) ≡ c); - - } - */ -/*@ -axiomatic MemSet { - logic 𔹠memset{L}(char *s, ℤ c, ℤ n) - reads *(s+(0 .. n-1)); - - axiom memset_def{L}: - ∀ char *s; - ∀ ℤ c; - ∀ ℤ n; - memset(s, c, n) ≡ \true ⇔ (∀ ℤ i; 0 ≤ i < n ⇒ *(s+i) ≡ c); - - } - */ -/*@ -axiomatic StrLen { - logic ℤ strlen{L}(char *s) - reads *(s+(0 ..)); - - axiom strlen_pos_or_null{L}: - ∀ char *s; - ∀ ℤ i; - 0 ≤ i ∧ (∀ ℤ j; 0 ≤ j < i ⇒ *(s+j) ≢ '\000') ∧ - *(s+i) ≡ '\000' ⇒ strlen(s) ≡ i; - - axiom strlen_neg{L}: - ∀ char *s; (∀ ℤ i; 0 ≤ i ⇒ *(s+i) ≢ '\000') ⇒ strlen(s) < 0; - - axiom strlen_before_null{L}: - ∀ char *s; - ∀ ℤ i; 0 ≤ i < strlen(s) ⇒ *(s+i) ≢ '\000'; - - axiom strlen_at_null{L}: - ∀ char *s; 0 ≤ strlen(s) ⇒ *(s+strlen(s)) ≡ '\000'; - - axiom strlen_not_zero{L}: - ∀ char *s; - ∀ ℤ i; 0 ≤ i ≤ strlen(s) ∧ *(s+i) ≢ '\000' ⇒ i < strlen(s); - - axiom strlen_zero{L}: - ∀ char *s; - ∀ ℤ i; - 0 ≤ i ≤ strlen(s) ∧ *(s+i) ≡ '\000' ⇒ i ≡ strlen(s); - - axiom strlen_sup{L}: - ∀ char *s; - ∀ ℤ i; 0 ≤ i ∧ *(s+i) ≡ '\000' ⇒ 0 ≤ strlen(s) ≤ i; - - axiom strlen_shift{L}: - ∀ char *s; - ∀ ℤ i; 0 ≤ i ≤ strlen(s) ⇒ strlen(s+i) ≡ strlen(s)-i; - - axiom strlen_create{L}: - ∀ char *s; - ∀ ℤ i; 0 ≤ i ∧ *(s+i) ≡ '\000' ⇒ 0 ≤ strlen(s) ≤ i; - - axiom strlen_create_shift{L}: - ∀ char *s; - ∀ ℤ i; - ∀ ℤ k; - 0 ≤ k ≤ i ∧ *(s+i) ≡ '\000' ⇒ 0 ≤ strlen(s+k) ≤ i-k; - - axiom memcmp_strlen_left{L}: - ∀ char *s1, char *s2; - ∀ ℤ n; - memcmp{L, L}(s1, s2, n) ≡ 0 ∧ strlen(s1) < n ⇒ - strlen(s1) ≡ strlen(s2); - - axiom memcmp_strlen_right{L}: - ∀ char *s1, char *s2; - ∀ ℤ n; - memcmp{L, L}(s1, s2, n) ≡ 0 ∧ strlen(s2) < n ⇒ - strlen(s1) ≡ strlen(s2); - - axiom memcmp_strlen_shift_left{L}: - ∀ char *s1, char *s2; - ∀ ℤ k, ℤ n; - memcmp{L, L}(s1, s2+k, n) ≡ 0 ≤ k ∧ strlen(s1) < n ⇒ - 0 ≤ strlen(s2) ≤ k+strlen(s1); - - axiom memcmp_strlen_shift_right{L}: - ∀ char *s1, char *s2; - ∀ ℤ k, ℤ n; - memcmp{L, L}(s1+k, s2, n) ≡ 0 ≤ k ∧ strlen(s2) < n ⇒ - 0 ≤ strlen(s1) ≤ k+strlen(s2); - - } - */ -/*@ -axiomatic StrCmp { - logic ℤ strcmp{L}(char *s1, char *s2) - reads *(s1+(0 .. strlen(s1))), *(s2+(0 .. strlen(s2))); - - axiom strcmp_zero{L}: - ∀ char *s1, char *s2; - strcmp(s1, s2) ≡ 0 ⇔ - strlen(s1) ≡ strlen(s2) ∧ - (∀ ℤ i; 0 ≤ i ≤ strlen(s1) ⇒ *(s1+i) ≡ *(s2+i)); - - } - */ -/*@ -axiomatic StrNCmp { - logic ℤ strncmp{L}(char *s1, char *s2, ℤ n) - reads *(s1+(0 .. n-1)), *(s2+(0 .. n-1)); - - axiom strncmp_zero{L}: - ∀ char *s1, char *s2; - ∀ ℤ n; - strncmp(s1, s2, n) ≡ 0 ⇔ - (strlen(s1) < n ∧ strcmp(s1, s2) ≡ 0) ∨ - (∀ ℤ i; 0 ≤ i < n ⇒ *(s1+i) ≡ *(s2+i)); - - } - */ -/*@ -axiomatic StrChr { - logic 𔹠strchr{L}(char *s, ℤ c) - reads *(s+(0 .. strlen(s))); - - axiom strchr_def{L}: - ∀ char *s; - ∀ ℤ c; - strchr(s, c) ≡ \true ⇔ - (∃ ℤ i; 0 ≤ i ≤ strlen(s) ∧ *(s+i) ≡ c); - - } - */ -/*@ -axiomatic WcsLen { - logic ℤ wcslen{L}(wchar_t *s) - reads *(s+(0 ..)); - - axiom wcslen_pos_or_null{L}: - ∀ wchar_t *s; - ∀ ℤ i; - 0 ≤ i ∧ (∀ ℤ j; 0 ≤ j < i ⇒ *(s+j) ≢ 0) ∧ *(s+i) ≡ 0 ⇒ - wcslen(s) ≡ i; - - axiom wcslen_neg{L}: - ∀ wchar_t *s; (∀ ℤ i; 0 ≤ i ⇒ *(s+i) ≢ 0) ⇒ wcslen(s) < 0; - - axiom wcslen_before_null{L}: - ∀ wchar_t *s; - ∀ int i; 0 ≤ i < wcslen(s) ⇒ *(s+i) ≢ 0; - - axiom wcslen_at_null{L}: - ∀ wchar_t *s; 0 ≤ wcslen(s) ⇒ *(s+wcslen(s)) ≡ 0; - - axiom wcslen_not_zero{L}: - ∀ wchar_t *s; - ∀ int i; 0 ≤ i ≤ wcslen(s) ∧ *(s+i) ≢ 0 ⇒ i < wcslen(s); - - axiom wcslen_zero{L}: - ∀ wchar_t *s; - ∀ int i; 0 ≤ i ≤ wcslen(s) ∧ *(s+i) ≡ 0 ⇒ i ≡ wcslen(s); - - axiom wcslen_sup{L}: - ∀ wchar_t *s; - ∀ int i; 0 ≤ i ∧ *(s+i) ≡ 0 ⇒ 0 ≤ wcslen(s) ≤ i; - - axiom wcslen_shift{L}: - ∀ wchar_t *s; - ∀ int i; 0 ≤ i ≤ wcslen(s) ⇒ wcslen(s+i) ≡ wcslen(s)-i; - - axiom wcslen_create{L}: - ∀ wchar_t *s; - ∀ int i; 0 ≤ i ∧ *(s+i) ≡ 0 ⇒ 0 ≤ wcslen(s) ≤ i; - - axiom wcslen_create_shift{L}: - ∀ wchar_t *s; - ∀ int i; - ∀ int k; 0 ≤ k ≤ i ∧ *(s+i) ≡ 0 ⇒ 0 ≤ wcslen(s+k) ≤ i-k; - - } - */ -/*@ -axiomatic WcsCmp { - logic ℤ wcscmp{L}(wchar_t *s1, wchar_t *s2) - reads *(s1+(0 .. wcslen(s1))), *(s2+(0 .. wcslen(s2))); - - axiom wcscmp_zero{L}: - ∀ wchar_t *s1, wchar_t *s2; - wcscmp(s1, s2) ≡ 0 ⇔ - wcslen(s1) ≡ wcslen(s2) ∧ - (∀ ℤ i; 0 ≤ i ≤ wcslen(s1) ⇒ *(s1+i) ≡ *(s2+i)); - - } - */ -/*@ -axiomatic WcsNCmp { - logic ℤ wcsncmp{L}(wchar_t *s1, wchar_t *s2, ℤ n) - reads *(s1+(0 .. n-1)), *(s2+(0 .. n-1)); - - axiom wcsncmp_zero{L}: - ∀ wchar_t *s1, wchar_t *s2; - ∀ ℤ n; - wcsncmp(s1, s2, n) ≡ 0 ⇔ - (wcslen(s1) < n ∧ wcscmp(s1, s2) ≡ 0) ∨ - (∀ ℤ i; 0 ≤ i < n ⇒ *(s1+i) ≡ *(s2+i)); - - } - */ -/*@ logic ℤ minimum(ℤ i, ℤ j) = i<j? i: j; - */ -/*@ logic ℤ maximum(ℤ i, ℤ j) = i<j? j: i; - */ -/*@ -predicate valid_string{L}(char *s) = - 0 ≤ strlen(s) ∧ \valid(s+(0 .. strlen(s))); - */ -/*@ -predicate valid_read_string{L}(char *s) = - 0 ≤ strlen(s) ∧ \valid_read(s+(0 .. strlen(s))); - */ -/*@ -predicate valid_string_or_null{L}(char *s) = s ≡ \null ∨ valid_string(s); - */ -/*@ -predicate valid_wstring{L}(wchar_t *s) = - 0 ≤ wcslen(s) ∧ \valid(s+(0 .. wcslen(s))); - */ -/*@ -predicate valid_wstring_or_null{L}(wchar_t *s) = - s ≡ \null ∨ valid_wstring(s); - */ extern int ( /* missing proto */ dprintf)(int x_0, char *x_1, int x_2, char const *x_3, char const *x_4); diff --git a/src/plugins/variadic/tests/known/oracle/stdio_print.1.res.oracle b/src/plugins/variadic/tests/known/oracle/stdio_print.1.res.oracle index 8d4854164fa3b14508e80fb67051380a5ab85b00..ba1060fb0e3639ae25d4f7dc21eee4d5e52a4b71 100644 --- a/src/plugins/variadic/tests/known/oracle/stdio_print.1.res.oracle +++ b/src/plugins/variadic/tests/known/oracle/stdio_print.1.res.oracle @@ -1,10 +1,10 @@ -tests/known/stdio_print.c:14:[kernel] warning: Calling undeclared function dprintf. Old style K&R code? +tests/known/stdio_print.c:13:[kernel] warning: Calling undeclared function dprintf. Old style K&R code? [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed -tests/known/stdio_print.c:10:[value] warning: accessing uninitialized left-value. assert \initialized(&format); +tests/known/stdio_print.c:9:[value] warning: accessing uninitialized left-value. assert \initialized(&format); [value] done for function main -tests/known/stdio_print.c:10:[value] assertion 'Value,initialisation' got final status invalid. +tests/known/stdio_print.c:9:[value] assertion 'Value,initialisation' got final status invalid. [value] ====== VALUES COMPUTED ====== [value:final-states] Values at end of function main: NON TERMINATING FUNCTION diff --git a/src/plugins/variadic/tests/known/oracle/stdio_scan.0.res.oracle b/src/plugins/variadic/tests/known/oracle/stdio_scan.0.res.oracle index 8d45883697e4d20c3da19b8948781e8eb11e020a..043a2d0a0a7e6fc6a103870e63c78dced561e3f2 100644 --- a/src/plugins/variadic/tests/known/oracle/stdio_scan.0.res.oracle +++ b/src/plugins/variadic/tests/known/oracle/stdio_scan.0.res.oracle @@ -1,20 +1,20 @@ -FRAMAC_SHARE/libc/stdio.h:133:[va] Declaration of variadic function fprintf. -FRAMAC_SHARE/libc/stdio.h:138:[va] Declaration of variadic function fscanf. -FRAMAC_SHARE/libc/stdio.h:144:[va] Declaration of variadic function printf. -FRAMAC_SHARE/libc/stdio.h:149:[va] Declaration of variadic function scanf. -FRAMAC_SHARE/libc/stdio.h:154:[va] Declaration of variadic function snprintf. -FRAMAC_SHARE/libc/stdio.h:160:[va] Declaration of variadic function sprintf. -FRAMAC_SHARE/libc/stdio.h:167:[va] Declaration of variadic function sscanf. +FRAMAC_SHARE/libc/stdio.h:134:[va] Declaration of variadic function fprintf. +FRAMAC_SHARE/libc/stdio.h:139:[va] Declaration of variadic function fscanf. +FRAMAC_SHARE/libc/stdio.h:145:[va] Declaration of variadic function printf. +FRAMAC_SHARE/libc/stdio.h:150:[va] Declaration of variadic function scanf. +FRAMAC_SHARE/libc/stdio.h:155:[va] Declaration of variadic function snprintf. +FRAMAC_SHARE/libc/stdio.h:161:[va] Declaration of variadic function sprintf. +FRAMAC_SHARE/libc/stdio.h:168:[va] Declaration of variadic function sscanf. +tests/known/stdio_scan.c:11:[va] Generic translation of call to variadic function. tests/known/stdio_scan.c:12:[va] Generic translation of call to variadic function. tests/known/stdio_scan.c:13:[va] Generic translation of call to variadic function. -tests/known/stdio_scan.c:14:[va] Generic translation of call to variadic function. -tests/known/stdio_scan.c:16:[va] Translating call to fscanf to a call to the specialized version fscanf_0. -tests/known/stdio_scan.c:17:[va] Translating call to scanf to a call to the specialized version scanf_0. -tests/known/stdio_scan.c:18:[va] Translating call to sscanf to a call to the specialized version sscanf_0. +tests/known/stdio_scan.c:15:[va] Translating call to fscanf to a call to the specialized version fscanf_0. +tests/known/stdio_scan.c:16:[va] Translating call to scanf to a call to the specialized version scanf_0. +tests/known/stdio_scan.c:17:[va] Translating call to sscanf to a call to the specialized version sscanf_0. /* Generated by Frama-C */ +typedef int wchar_t; typedef void * const *va_list; typedef unsigned int size_t; -typedef int wchar_t; typedef unsigned int ino_t; typedef unsigned int gid_t; typedef unsigned int uid_t; @@ -55,6 +55,257 @@ struct __fc_FILE { int __fc_real_data_max_size ; }; typedef struct __fc_FILE FILE; +/*@ +axiomatic MemCmp { + logic ℤ memcmp{L1, L2}(char *s1, char *s2, ℤ n) + reads \at(*(s1+(0 .. n-1)),L1), \at(*(s2+(0 .. n-1)),L2); + + axiom memcmp_zero{L1, L2}: + ∀ char *s1, char *s2; + ∀ ℤ n; + memcmp{L1, L2}(s1, s2, n) ≡ 0 ⇔ + (∀ ℤ i; 0 ≤ i < n ⇒ \at(*(s1+i),L1) ≡ \at(*(s2+i),L2)); + + } + */ +/*@ +axiomatic MemChr { + logic 𔹠memchr{L}(char *s, ℤ c, ℤ n) + reads *(s+(0 .. n-1)); + + axiom memchr_def{L}: + ∀ char *s; + ∀ ℤ c; + ∀ ℤ n; + memchr(s, c, n) ≡ \true ⇔ (∃ int i; 0 ≤ i < n ∧ *(s+i) ≡ c); + + } + */ +/*@ +axiomatic MemSet { + logic 𔹠memset{L}(char *s, ℤ c, ℤ n) + reads *(s+(0 .. n-1)); + + axiom memset_def{L}: + ∀ char *s; + ∀ ℤ c; + ∀ ℤ n; + memset(s, c, n) ≡ \true ⇔ (∀ ℤ i; 0 ≤ i < n ⇒ *(s+i) ≡ c); + + } + */ +/*@ +axiomatic StrLen { + logic ℤ strlen{L}(char *s) + reads *(s+(0 ..)); + + axiom strlen_pos_or_null{L}: + ∀ char *s; + ∀ ℤ i; + 0 ≤ i ∧ (∀ ℤ j; 0 ≤ j < i ⇒ *(s+j) ≢ '\000') ∧ + *(s+i) ≡ '\000' ⇒ strlen(s) ≡ i; + + axiom strlen_neg{L}: + ∀ char *s; (∀ ℤ i; 0 ≤ i ⇒ *(s+i) ≢ '\000') ⇒ strlen(s) < 0; + + axiom strlen_before_null{L}: + ∀ char *s; + ∀ ℤ i; 0 ≤ i < strlen(s) ⇒ *(s+i) ≢ '\000'; + + axiom strlen_at_null{L}: + ∀ char *s; 0 ≤ strlen(s) ⇒ *(s+strlen(s)) ≡ '\000'; + + axiom strlen_not_zero{L}: + ∀ char *s; + ∀ ℤ i; 0 ≤ i ≤ strlen(s) ∧ *(s+i) ≢ '\000' ⇒ i < strlen(s); + + axiom strlen_zero{L}: + ∀ char *s; + ∀ ℤ i; + 0 ≤ i ≤ strlen(s) ∧ *(s+i) ≡ '\000' ⇒ i ≡ strlen(s); + + axiom strlen_sup{L}: + ∀ char *s; + ∀ ℤ i; 0 ≤ i ∧ *(s+i) ≡ '\000' ⇒ 0 ≤ strlen(s) ≤ i; + + axiom strlen_shift{L}: + ∀ char *s; + ∀ ℤ i; 0 ≤ i ≤ strlen(s) ⇒ strlen(s+i) ≡ strlen(s)-i; + + axiom strlen_create{L}: + ∀ char *s; + ∀ ℤ i; 0 ≤ i ∧ *(s+i) ≡ '\000' ⇒ 0 ≤ strlen(s) ≤ i; + + axiom strlen_create_shift{L}: + ∀ char *s; + ∀ ℤ i; + ∀ ℤ k; + 0 ≤ k ≤ i ∧ *(s+i) ≡ '\000' ⇒ 0 ≤ strlen(s+k) ≤ i-k; + + axiom memcmp_strlen_left{L}: + ∀ char *s1, char *s2; + ∀ ℤ n; + memcmp{L, L}(s1, s2, n) ≡ 0 ∧ strlen(s1) < n ⇒ + strlen(s1) ≡ strlen(s2); + + axiom memcmp_strlen_right{L}: + ∀ char *s1, char *s2; + ∀ ℤ n; + memcmp{L, L}(s1, s2, n) ≡ 0 ∧ strlen(s2) < n ⇒ + strlen(s1) ≡ strlen(s2); + + axiom memcmp_strlen_shift_left{L}: + ∀ char *s1, char *s2; + ∀ ℤ k, ℤ n; + memcmp{L, L}(s1, s2+k, n) ≡ 0 ≤ k ∧ strlen(s1) < n ⇒ + 0 ≤ strlen(s2) ≤ k+strlen(s1); + + axiom memcmp_strlen_shift_right{L}: + ∀ char *s1, char *s2; + ∀ ℤ k, ℤ n; + memcmp{L, L}(s1+k, s2, n) ≡ 0 ≤ k ∧ strlen(s2) < n ⇒ + 0 ≤ strlen(s1) ≤ k+strlen(s2); + + } + */ +/*@ +axiomatic StrCmp { + logic ℤ strcmp{L}(char *s1, char *s2) + reads *(s1+(0 .. strlen(s1))), *(s2+(0 .. strlen(s2))); + + axiom strcmp_zero{L}: + ∀ char *s1, char *s2; + strcmp(s1, s2) ≡ 0 ⇔ + strlen(s1) ≡ strlen(s2) ∧ + (∀ ℤ i; 0 ≤ i ≤ strlen(s1) ⇒ *(s1+i) ≡ *(s2+i)); + + } + */ +/*@ +axiomatic StrNCmp { + logic ℤ strncmp{L}(char *s1, char *s2, ℤ n) + reads *(s1+(0 .. n-1)), *(s2+(0 .. n-1)); + + axiom strncmp_zero{L}: + ∀ char *s1, char *s2; + ∀ ℤ n; + strncmp(s1, s2, n) ≡ 0 ⇔ + (strlen(s1) < n ∧ strcmp(s1, s2) ≡ 0) ∨ + (∀ ℤ i; 0 ≤ i < n ⇒ *(s1+i) ≡ *(s2+i)); + + } + */ +/*@ +axiomatic StrChr { + logic 𔹠strchr{L}(char *s, ℤ c) + reads *(s+(0 .. strlen(s))); + + axiom strchr_def{L}: + ∀ char *s; + ∀ ℤ c; + strchr(s, c) ≡ \true ⇔ + (∃ ℤ i; 0 ≤ i ≤ strlen(s) ∧ *(s+i) ≡ c); + + } + */ +/*@ +axiomatic WcsLen { + logic ℤ wcslen{L}(wchar_t *s) + reads *(s+(0 ..)); + + axiom wcslen_pos_or_null{L}: + ∀ wchar_t *s; + ∀ ℤ i; + 0 ≤ i ∧ (∀ ℤ j; 0 ≤ j < i ⇒ *(s+j) ≢ 0) ∧ *(s+i) ≡ 0 ⇒ + wcslen(s) ≡ i; + + axiom wcslen_neg{L}: + ∀ wchar_t *s; (∀ ℤ i; 0 ≤ i ⇒ *(s+i) ≢ 0) ⇒ wcslen(s) < 0; + + axiom wcslen_before_null{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i < wcslen(s) ⇒ *(s+i) ≢ 0; + + axiom wcslen_at_null{L}: + ∀ wchar_t *s; 0 ≤ wcslen(s) ⇒ *(s+wcslen(s)) ≡ 0; + + axiom wcslen_not_zero{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i ≤ wcslen(s) ∧ *(s+i) ≢ 0 ⇒ i < wcslen(s); + + axiom wcslen_zero{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i ≤ wcslen(s) ∧ *(s+i) ≡ 0 ⇒ i ≡ wcslen(s); + + axiom wcslen_sup{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i ∧ *(s+i) ≡ 0 ⇒ 0 ≤ wcslen(s) ≤ i; + + axiom wcslen_shift{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i ≤ wcslen(s) ⇒ wcslen(s+i) ≡ wcslen(s)-i; + + axiom wcslen_create{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i ∧ *(s+i) ≡ 0 ⇒ 0 ≤ wcslen(s) ≤ i; + + axiom wcslen_create_shift{L}: + ∀ wchar_t *s; + ∀ int i; + ∀ int k; 0 ≤ k ≤ i ∧ *(s+i) ≡ 0 ⇒ 0 ≤ wcslen(s+k) ≤ i-k; + + } + */ +/*@ +axiomatic WcsCmp { + logic ℤ wcscmp{L}(wchar_t *s1, wchar_t *s2) + reads *(s1+(0 .. wcslen(s1))), *(s2+(0 .. wcslen(s2))); + + axiom wcscmp_zero{L}: + ∀ wchar_t *s1, wchar_t *s2; + wcscmp(s1, s2) ≡ 0 ⇔ + wcslen(s1) ≡ wcslen(s2) ∧ + (∀ ℤ i; 0 ≤ i ≤ wcslen(s1) ⇒ *(s1+i) ≡ *(s2+i)); + + } + */ +/*@ +axiomatic WcsNCmp { + logic ℤ wcsncmp{L}(wchar_t *s1, wchar_t *s2, ℤ n) + reads *(s1+(0 .. n-1)), *(s2+(0 .. n-1)); + + axiom wcsncmp_zero{L}: + ∀ wchar_t *s1, wchar_t *s2; + ∀ ℤ n; + wcsncmp(s1, s2, n) ≡ 0 ⇔ + (wcslen(s1) < n ∧ wcscmp(s1, s2) ≡ 0) ∨ + (∀ ℤ i; 0 ≤ i < n ⇒ *(s1+i) ≡ *(s2+i)); + + } + */ +/*@ logic ℤ minimum(ℤ i, ℤ j) = i<j? i: j; + */ +/*@ logic ℤ maximum(ℤ i, ℤ j) = i<j? j: i; + */ +/*@ +predicate valid_string{L}(char *s) = + 0 ≤ strlen(s) ∧ \valid(s+(0 .. strlen(s))); + */ +/*@ +predicate valid_read_string{L}(char *s) = + 0 ≤ strlen(s) ∧ \valid_read(s+(0 .. strlen(s))); + */ +/*@ +predicate valid_string_or_null{L}(char *s) = s ≡ \null ∨ valid_string(s); + */ +/*@ +predicate valid_wstring{L}(wchar_t *s) = + 0 ≤ wcslen(s) ∧ \valid(s+(0 .. wcslen(s))); + */ +/*@ +predicate valid_wstring_or_null{L}(wchar_t *s) = + s ≡ \null ∨ valid_wstring(s); + */ extern int __FC_errno; extern FILE *__fc_stdin; @@ -334,257 +585,6 @@ extern int ferror_unlocked(FILE *stream); assigns \result \from *stream; */ extern int fileno_unlocked(FILE *stream); -/*@ -axiomatic MemCmp { - logic ℤ memcmp{L1, L2}(char *s1, char *s2, ℤ n) - reads \at(*(s1+(0 .. n-1)),L1), \at(*(s2+(0 .. n-1)),L2); - - axiom memcmp_zero{L1, L2}: - ∀ char *s1, char *s2; - ∀ ℤ n; - memcmp{L1, L2}(s1, s2, n) ≡ 0 ⇔ - (∀ ℤ i; 0 ≤ i < n ⇒ \at(*(s1+i),L1) ≡ \at(*(s2+i),L2)); - - } - */ -/*@ -axiomatic MemChr { - logic 𔹠memchr{L}(char *s, ℤ c, ℤ n) - reads *(s+(0 .. n-1)); - - axiom memchr_def{L}: - ∀ char *s; - ∀ ℤ c; - ∀ ℤ n; - memchr(s, c, n) ≡ \true ⇔ (∃ int i; 0 ≤ i < n ∧ *(s+i) ≡ c); - - } - */ -/*@ -axiomatic MemSet { - logic 𔹠memset{L}(char *s, ℤ c, ℤ n) - reads *(s+(0 .. n-1)); - - axiom memset_def{L}: - ∀ char *s; - ∀ ℤ c; - ∀ ℤ n; - memset(s, c, n) ≡ \true ⇔ (∀ ℤ i; 0 ≤ i < n ⇒ *(s+i) ≡ c); - - } - */ -/*@ -axiomatic StrLen { - logic ℤ strlen{L}(char *s) - reads *(s+(0 ..)); - - axiom strlen_pos_or_null{L}: - ∀ char *s; - ∀ ℤ i; - 0 ≤ i ∧ (∀ ℤ j; 0 ≤ j < i ⇒ *(s+j) ≢ '\000') ∧ - *(s+i) ≡ '\000' ⇒ strlen(s) ≡ i; - - axiom strlen_neg{L}: - ∀ char *s; (∀ ℤ i; 0 ≤ i ⇒ *(s+i) ≢ '\000') ⇒ strlen(s) < 0; - - axiom strlen_before_null{L}: - ∀ char *s; - ∀ ℤ i; 0 ≤ i < strlen(s) ⇒ *(s+i) ≢ '\000'; - - axiom strlen_at_null{L}: - ∀ char *s; 0 ≤ strlen(s) ⇒ *(s+strlen(s)) ≡ '\000'; - - axiom strlen_not_zero{L}: - ∀ char *s; - ∀ ℤ i; 0 ≤ i ≤ strlen(s) ∧ *(s+i) ≢ '\000' ⇒ i < strlen(s); - - axiom strlen_zero{L}: - ∀ char *s; - ∀ ℤ i; - 0 ≤ i ≤ strlen(s) ∧ *(s+i) ≡ '\000' ⇒ i ≡ strlen(s); - - axiom strlen_sup{L}: - ∀ char *s; - ∀ ℤ i; 0 ≤ i ∧ *(s+i) ≡ '\000' ⇒ 0 ≤ strlen(s) ≤ i; - - axiom strlen_shift{L}: - ∀ char *s; - ∀ ℤ i; 0 ≤ i ≤ strlen(s) ⇒ strlen(s+i) ≡ strlen(s)-i; - - axiom strlen_create{L}: - ∀ char *s; - ∀ ℤ i; 0 ≤ i ∧ *(s+i) ≡ '\000' ⇒ 0 ≤ strlen(s) ≤ i; - - axiom strlen_create_shift{L}: - ∀ char *s; - ∀ ℤ i; - ∀ ℤ k; - 0 ≤ k ≤ i ∧ *(s+i) ≡ '\000' ⇒ 0 ≤ strlen(s+k) ≤ i-k; - - axiom memcmp_strlen_left{L}: - ∀ char *s1, char *s2; - ∀ ℤ n; - memcmp{L, L}(s1, s2, n) ≡ 0 ∧ strlen(s1) < n ⇒ - strlen(s1) ≡ strlen(s2); - - axiom memcmp_strlen_right{L}: - ∀ char *s1, char *s2; - ∀ ℤ n; - memcmp{L, L}(s1, s2, n) ≡ 0 ∧ strlen(s2) < n ⇒ - strlen(s1) ≡ strlen(s2); - - axiom memcmp_strlen_shift_left{L}: - ∀ char *s1, char *s2; - ∀ ℤ k, ℤ n; - memcmp{L, L}(s1, s2+k, n) ≡ 0 ≤ k ∧ strlen(s1) < n ⇒ - 0 ≤ strlen(s2) ≤ k+strlen(s1); - - axiom memcmp_strlen_shift_right{L}: - ∀ char *s1, char *s2; - ∀ ℤ k, ℤ n; - memcmp{L, L}(s1+k, s2, n) ≡ 0 ≤ k ∧ strlen(s2) < n ⇒ - 0 ≤ strlen(s1) ≤ k+strlen(s2); - - } - */ -/*@ -axiomatic StrCmp { - logic ℤ strcmp{L}(char *s1, char *s2) - reads *(s1+(0 .. strlen(s1))), *(s2+(0 .. strlen(s2))); - - axiom strcmp_zero{L}: - ∀ char *s1, char *s2; - strcmp(s1, s2) ≡ 0 ⇔ - strlen(s1) ≡ strlen(s2) ∧ - (∀ ℤ i; 0 ≤ i ≤ strlen(s1) ⇒ *(s1+i) ≡ *(s2+i)); - - } - */ -/*@ -axiomatic StrNCmp { - logic ℤ strncmp{L}(char *s1, char *s2, ℤ n) - reads *(s1+(0 .. n-1)), *(s2+(0 .. n-1)); - - axiom strncmp_zero{L}: - ∀ char *s1, char *s2; - ∀ ℤ n; - strncmp(s1, s2, n) ≡ 0 ⇔ - (strlen(s1) < n ∧ strcmp(s1, s2) ≡ 0) ∨ - (∀ ℤ i; 0 ≤ i < n ⇒ *(s1+i) ≡ *(s2+i)); - - } - */ -/*@ -axiomatic StrChr { - logic 𔹠strchr{L}(char *s, ℤ c) - reads *(s+(0 .. strlen(s))); - - axiom strchr_def{L}: - ∀ char *s; - ∀ ℤ c; - strchr(s, c) ≡ \true ⇔ - (∃ ℤ i; 0 ≤ i ≤ strlen(s) ∧ *(s+i) ≡ c); - - } - */ -/*@ -axiomatic WcsLen { - logic ℤ wcslen{L}(wchar_t *s) - reads *(s+(0 ..)); - - axiom wcslen_pos_or_null{L}: - ∀ wchar_t *s; - ∀ ℤ i; - 0 ≤ i ∧ (∀ ℤ j; 0 ≤ j < i ⇒ *(s+j) ≢ 0) ∧ *(s+i) ≡ 0 ⇒ - wcslen(s) ≡ i; - - axiom wcslen_neg{L}: - ∀ wchar_t *s; (∀ ℤ i; 0 ≤ i ⇒ *(s+i) ≢ 0) ⇒ wcslen(s) < 0; - - axiom wcslen_before_null{L}: - ∀ wchar_t *s; - ∀ int i; 0 ≤ i < wcslen(s) ⇒ *(s+i) ≢ 0; - - axiom wcslen_at_null{L}: - ∀ wchar_t *s; 0 ≤ wcslen(s) ⇒ *(s+wcslen(s)) ≡ 0; - - axiom wcslen_not_zero{L}: - ∀ wchar_t *s; - ∀ int i; 0 ≤ i ≤ wcslen(s) ∧ *(s+i) ≢ 0 ⇒ i < wcslen(s); - - axiom wcslen_zero{L}: - ∀ wchar_t *s; - ∀ int i; 0 ≤ i ≤ wcslen(s) ∧ *(s+i) ≡ 0 ⇒ i ≡ wcslen(s); - - axiom wcslen_sup{L}: - ∀ wchar_t *s; - ∀ int i; 0 ≤ i ∧ *(s+i) ≡ 0 ⇒ 0 ≤ wcslen(s) ≤ i; - - axiom wcslen_shift{L}: - ∀ wchar_t *s; - ∀ int i; 0 ≤ i ≤ wcslen(s) ⇒ wcslen(s+i) ≡ wcslen(s)-i; - - axiom wcslen_create{L}: - ∀ wchar_t *s; - ∀ int i; 0 ≤ i ∧ *(s+i) ≡ 0 ⇒ 0 ≤ wcslen(s) ≤ i; - - axiom wcslen_create_shift{L}: - ∀ wchar_t *s; - ∀ int i; - ∀ int k; 0 ≤ k ≤ i ∧ *(s+i) ≡ 0 ⇒ 0 ≤ wcslen(s+k) ≤ i-k; - - } - */ -/*@ -axiomatic WcsCmp { - logic ℤ wcscmp{L}(wchar_t *s1, wchar_t *s2) - reads *(s1+(0 .. wcslen(s1))), *(s2+(0 .. wcslen(s2))); - - axiom wcscmp_zero{L}: - ∀ wchar_t *s1, wchar_t *s2; - wcscmp(s1, s2) ≡ 0 ⇔ - wcslen(s1) ≡ wcslen(s2) ∧ - (∀ ℤ i; 0 ≤ i ≤ wcslen(s1) ⇒ *(s1+i) ≡ *(s2+i)); - - } - */ -/*@ -axiomatic WcsNCmp { - logic ℤ wcsncmp{L}(wchar_t *s1, wchar_t *s2, ℤ n) - reads *(s1+(0 .. n-1)), *(s2+(0 .. n-1)); - - axiom wcsncmp_zero{L}: - ∀ wchar_t *s1, wchar_t *s2; - ∀ ℤ n; - wcsncmp(s1, s2, n) ≡ 0 ⇔ - (wcslen(s1) < n ∧ wcscmp(s1, s2) ≡ 0) ∨ - (∀ ℤ i; 0 ≤ i < n ⇒ *(s1+i) ≡ *(s2+i)); - - } - */ -/*@ logic ℤ minimum(ℤ i, ℤ j) = i<j? i: j; - */ -/*@ logic ℤ maximum(ℤ i, ℤ j) = i<j? j: i; - */ -/*@ -predicate valid_string{L}(char *s) = - 0 ≤ strlen(s) ∧ \valid(s+(0 .. strlen(s))); - */ -/*@ -predicate valid_read_string{L}(char *s) = - 0 ≤ strlen(s) ∧ \valid_read(s+(0 .. strlen(s))); - */ -/*@ -predicate valid_string_or_null{L}(char *s) = s ≡ \null ∨ valid_string(s); - */ -/*@ -predicate valid_wstring{L}(wchar_t *s) = - 0 ≤ wcslen(s) ∧ \valid(s+(0 .. wcslen(s))); - */ -/*@ -predicate valid_wstring_or_null{L}(wchar_t *s) = - s ≡ \null ∨ valid_wstring(s); - */ /*@ requires valid_read_string(format); requires \valid(param2); requires \valid(param0); diff --git a/src/plugins/variadic/tests/known/oracle/stdio_scan.1.res.oracle b/src/plugins/variadic/tests/known/oracle/stdio_scan.1.res.oracle index 8dd4b82a32fd236686e845c41f207c7aad396f28..a8fada96d175e061c82532a3b16ce3ef14914d72 100644 --- a/src/plugins/variadic/tests/known/oracle/stdio_scan.1.res.oracle +++ b/src/plugins/variadic/tests/known/oracle/stdio_scan.1.res.oracle @@ -1,9 +1,9 @@ [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed -tests/known/stdio_scan.c:12:[value] warning: accessing uninitialized left-value. assert \initialized(&format); +tests/known/stdio_scan.c:11:[value] warning: accessing uninitialized left-value. assert \initialized(&format); [value] done for function main -tests/known/stdio_scan.c:12:[value] assertion 'Value,initialisation' got final status invalid. +tests/known/stdio_scan.c:11:[value] assertion 'Value,initialisation' got final status invalid. [value] ====== VALUES COMPUTED ====== [value:final-states] Values at end of function main: NON TERMINATING FUNCTION diff --git a/src/plugins/variadic/tests/known/printf.c b/src/plugins/variadic/tests/known/printf.c index b242ae7d7bfc64ddd5e7a3584b25866614eafc3a..c8ec8933617f7098f7658949174211b826560522 100644 --- a/src/plugins/variadic/tests/known/printf.c +++ b/src/plugins/variadic/tests/known/printf.c @@ -5,7 +5,6 @@ #include <stdio.h> #include <stdio.c> -#include <__fc_string_axiomatic.h> int main() diff --git a/src/plugins/variadic/tests/known/printf_wrong_arity.c b/src/plugins/variadic/tests/known/printf_wrong_arity.c index 35b60148dbeeaff0b890d5c15124ee31e8d13f0c..03d42dc01ae2611d40762f4f899bb2d18d0038e4 100644 --- a/src/plugins/variadic/tests/known/printf_wrong_arity.c +++ b/src/plugins/variadic/tests/known/printf_wrong_arity.c @@ -1,7 +1,6 @@ #include <stdio.h> #include <stdio.c> -#include <__fc_string_axiomatic.h> int main() diff --git a/src/plugins/variadic/tests/known/printf_wrong_pointers.c b/src/plugins/variadic/tests/known/printf_wrong_pointers.c index d91632f22203413be3682c64fa2a2f2f5e8641f5..6f70884be9c9f57bcf36b7ffea57b52a203b8211 100644 --- a/src/plugins/variadic/tests/known/printf_wrong_pointers.c +++ b/src/plugins/variadic/tests/known/printf_wrong_pointers.c @@ -1,5 +1,4 @@ #include <stdio.h> -#include <__fc_string_axiomatic.h> int main(){ signed short tt; diff --git a/src/plugins/variadic/tests/known/printf_wrong_types.c b/src/plugins/variadic/tests/known/printf_wrong_types.c index ae47a962795f47b9e657552529d8e330abab49b4..11de99a6d4f08035c866e3838afcef97cdc13743 100644 --- a/src/plugins/variadic/tests/known/printf_wrong_types.c +++ b/src/plugins/variadic/tests/known/printf_wrong_types.c @@ -4,7 +4,6 @@ OPT: -va -print -kernel-verbose 0 -verbose 2 -va-no-strict */ #include <stdio.h> -#include <__fc_string_axiomatic.h> int main(){ int i = 42; diff --git a/src/plugins/variadic/tests/known/stdio_print.c b/src/plugins/variadic/tests/known/stdio_print.c index 4a8464295e89aa1bd0c50ac1bcdc1c82c06844ae..acbe3c2897af1e4f3d26b43c67a3925bd244f8d2 100644 --- a/src/plugins/variadic/tests/known/stdio_print.c +++ b/src/plugins/variadic/tests/known/stdio_print.c @@ -1,5 +1,4 @@ #include <stdio.h> -#include <__fc_string_axiomatic.h> int main(){ FILE *stream; diff --git a/src/plugins/variadic/tests/known/stdio_scan.c b/src/plugins/variadic/tests/known/stdio_scan.c index e99e1fd610e90bd14db9bf5404ad8af9de210da5..4fde0c969dee9ce2d81a42fd171da6a4f439e5b9 100644 --- a/src/plugins/variadic/tests/known/stdio_scan.c +++ b/src/plugins/variadic/tests/known/stdio_scan.c @@ -1,5 +1,4 @@ #include <stdio.h> -#include <__fc_string_axiomatic.h> int main(){ FILE *stream; diff --git a/src/plugins/variadic/translate.ml b/src/plugins/variadic/translate.ml index a52f0ef00a6f794239c9ff6720636e04070fd77c..2babde48823f9f0ceb63c1856639e8588e8b617a 100644 --- a/src/plugins/variadic/translate.ml +++ b/src/plugins/variadic/translate.ml @@ -99,14 +99,14 @@ let translate_variadics (file : file) = let vf = Table.find classification vi in let s' = try let call_translator = match vf.vf_class with - | Overload o -> Standard.overloaded_call o - | Aggregator a -> Standard.aggregator_call a fundec - | FormatFun f -> Standard.format_fun_call env f + | Overload o -> Standard.overloaded_call ~fundec o + | Aggregator a -> Standard.aggregator_call ~fundec a + | FormatFun f -> Standard.format_fun_call ~fundec env f | _ -> raise Standard.Translate_call_exn in call_translator vf s with Standard.Translate_call_exn -> - Generic.translate_call fundec s + Generic.translate_call ~fundec s in File.must_recompute_cfg fundec; Cil.ChangeTo (s') diff --git a/src/plugins/variadic/va_build.ml b/src/plugins/variadic/va_build.ml index 01ac262e62bb2202bc9c0e07c4a5b384e7bc288e..779882b2edc7948b042778e75cebfe3ab65e3c6c 100644 --- a/src/plugins/variadic/va_build.ml +++ b/src/plugins/variadic/va_build.ml @@ -60,11 +60,6 @@ let call ~loc lval callee args = let instr = Call (lval, (Cil.evar ~loc callee), args, loc) in Cil.mkStmtOneInstr ~valid_sid:true instr -let read ~loc exp = - let empty_block = {battrs = []; blocals = []; bstmts = []} in - let stmtkind = If (exp, empty_block, empty_block, loc) in - Cil.mkStmt ~valid_sid:true stmtkind - (* --- Logic builders --- *) diff --git a/src/plugins/wp/Cint.ml b/src/plugins/wp/Cint.ml index 26865f07617d89bf5bfda7f761fa3cbec0e7f451..4a2aaf3046ce05a8251b3ab4dfbe9c3a87e7456a 100644 --- a/src/plugins/wp/Cint.ml +++ b/src/plugins/wp/Cint.ml @@ -98,8 +98,9 @@ let match_integer t = (* integration with qed should be improved! *) let rec is_positive_or_null e = match F.repr e with | Logic.Fun( f , [e] ) when Fun.equal f f_lnot -> is_negative e - | Logic.Fun( f , es ) when Fun.equal f f_land -> List.exists is_positive_or_null es + | Logic.Fun( f , es ) when Fun.equal f f_land -> List.exists is_positive_or_null es | Logic.Fun( f , es ) when Fun.equal f f_lor -> List.for_all is_positive_or_null es + | Logic.Fun( f , es ) when Fun.equal f f_lxor -> (match xor_sign es with | Some b -> b | _ -> false) | Logic.Fun( f , es ) when Fun.equal f f_lsr || Fun.equal f f_lsl -> List.for_all is_positive_or_null es | _ -> (* try some improvement first then ask to qed *) @@ -114,6 +115,7 @@ and is_negative e = match F.repr e with | Logic.Fun( f , [e] ) when Fun.equal f f_lnot -> is_positive_or_null e | Logic.Fun( f , es ) when Fun.equal f f_lor -> List.exists is_negative es | Logic.Fun( f , es ) when Fun.equal f f_land -> List.for_all is_negative es + | Logic.Fun( f , es ) when Fun.equal f f_lxor -> (match xor_sign es with | Some b -> (not b) | _ -> false) | Logic.Fun( f , [k;n] ) when Fun.equal f f_lsr || Fun.equal f f_lsl -> is_positive_or_null n && is_negative k | _ -> (* try some improvement first then ask to qed *) @@ -124,6 +126,12 @@ and is_negative e = match F.repr e with else match F.is_true (F.e_lt e e_zero) with | Logic.Yes -> true | Logic.No | Logic.Maybe -> false +and xor_sign es = try + Some (List.fold_left (fun acc e -> + if is_positive_or_null e then acc (* as previous *) + else if is_negative e then (not acc) (* opposite sign *) + else raise Not_found) true es) + with Not_found -> None let match_power2, match_power2_minus1 = let highest_bit_number = diff --git a/src/plugins/wp/Conditions.ml b/src/plugins/wp/Conditions.ml index 46fcd5c78f9356d0d0b4e6e59940d84c705e79fc..f7cf816387da07def8be01b24e02a8ed17e36786 100644 --- a/src/plugins/wp/Conditions.ml +++ b/src/plugins/wp/Conditions.ml @@ -153,7 +153,7 @@ let is_cond_true = function | State _ -> Yes | Have p | Type p | When p | Core p | Init p -> F.is_ptrue p | Either [] -> No (* FALSE context *) - | Either [ s ] when is_empty s -> Yes + | Either cs when List.for_all is_empty cs -> Yes | Branch(_,a,b) when is_empty a && is_empty b -> Yes | Branch _ | Either _ -> Maybe diff --git a/src/plugins/wp/Footprint.ml b/src/plugins/wp/Footprint.ml index 6fc622327940e4529d94375dfcbac9f53d1d1ff4..0f3eb64803904bfdf5a927458c5113b49910d1a9 100644 --- a/src/plugins/wp/Footprint.ml +++ b/src/plugins/wp/Footprint.ml @@ -44,7 +44,7 @@ let once f e = let e = Queue.pop q in f e ; F.lc_iter (fun e -> if once m e then Queue.push e q) e done - + (* -------------------------------------------------------------------------- *) (* --- Head Footprint --- *) (* -------------------------------------------------------------------------- *) @@ -93,10 +93,11 @@ let head e = let pattern e = let buffer = Buffer.create 32 in - (try iter (fun e -> - Buffer.add_string buffer (head e) ; - if Buffer.length buffer >= 32 then raise Exit ; - true) e + (try + iter (fun e -> + Buffer.add_string buffer (head e) ; + if Buffer.length buffer >= 32 then raise Exit) + e with Exit -> ()) ; Buffer.contents buffer diff --git a/src/plugins/wp/GuiGoal.ml b/src/plugins/wp/GuiGoal.ml index c5868a2574a5d448a146826f79957c54d00b1ab3..56867c9fde41661e20f47d625b646e03e7b5f1ea 100644 --- a/src/plugins/wp/GuiGoal.ml +++ b/src/plugins/wp/GuiGoal.ml @@ -138,7 +138,7 @@ class pane (proverpane : GuiConfig.provers) = Wbox.(toolbar [ w prev ; w next ; w cancel ; w forward ; w autofocus ; w play_script ; w save_script ; - w ~padding:6 icon ; f ~padding:6 status ] + w ~padding:6 icon ; h ~padding:6 status ] [ label ~padding:64 ~align:`Left ~style:`Title "Tacticals" ; w delete ]) in layout#populate (Wbox.panel ~top:toolbar ~right:palette#widget text) ; diff --git a/src/plugins/wp/GuiTactic.ml b/src/plugins/wp/GuiTactic.ml index 92c641f153dc32aa3d26e92951e266c8adeb3345..d29eed5c3162ed9381f2d759888aaf2ae6794231 100644 --- a/src/plugins/wp/GuiTactic.ml +++ b/src/plugins/wp/GuiTactic.ml @@ -109,7 +109,7 @@ class mkcomposer let s = Tactical.signature field in let head = new Widget.label ~style:`Label ~align:`Left () in let edit = new Widget.button ~icon:`EDIT ~tooltip:s.descr () in - let hbox = Wbox.(hbox [ f head ; w ~padding:8 edit ]) in + let hbox = Wbox.(hbox [ h head ; w ~padding:8 edit ]) in object(self) initializer begin diff --git a/src/plugins/wp/LogicCompiler.ml b/src/plugins/wp/LogicCompiler.ml index 1a090c41dfb1b9d1bee7fbe0c42a75df3872228f..77cfa192fe06e53027fc819151751f4a9d7c7c94 100644 --- a/src/plugins/wp/LogicCompiler.ml +++ b/src/plugins/wp/LogicCompiler.ml @@ -336,6 +336,9 @@ struct (* --- Generic Compiler --- *) (* -------------------------------------------------------------------------- *) + let occurs_pvars f p = Vars.exists f (F.varsp p) + let occurs_ps x ps = List.exists (F.occursp x) ps + let compile_step (name:string) (types:string list) @@ -351,12 +354,15 @@ struct let env,domain,sigv = profile_env Logic_var.Map.empty [] [] profile in let env = default_label env labels in let result = cc env data in - let used = List.filter (fun (_,x) -> filter result x) sigv in + let used_domain p = occurs_pvars (filter result) p in + let domain = List.filter used_domain domain in + let used_var (_,x) = filter result x || occurs_ps x domain in + let used = List.filter used_var sigv in let parp = List.map snd used in let sigp = List.map (fun (lv,_) -> Sig_value lv) used in let (parm,sigm) = LabelMap.fold - (fun label sigma -> + (fun label sigma acc -> Heap.Set.fold_sorted (fun chunk acc -> if filter result (Sigma.get sigma chunk) then @@ -365,7 +371,7 @@ struct let s = Sig_chunk(chunk,label) in ( x::parm , s::sigm ) else acc) - (Sigma.domain sigma)) + (Sigma.domain sigma) acc) frame.labels (parp,sigp) in parm , frame.triggers , domain , result , sigm diff --git a/src/plugins/wp/Makefile.in b/src/plugins/wp/Makefile.in index d2f7dfd8471e8655f031c72475e960d1865d9e72..a420945e5f3e8e3465aa9753c3e13b1b6ecea982 100644 --- a/src/plugins/wp/Makefile.in +++ b/src/plugins/wp/Makefile.in @@ -23,7 +23,7 @@ # Do not use ?= to initialize both below variables # (fixed efficiency issue, see GNU Make manual, Section 8.11) ifndef FRAMAC_SHARE -FRAMAC_SHARE :=$(shell frama-c-config -print-path) +FRAMAC_SHARE :=$(shell frama-c-config -print-share-path) endif ifndef FRAMAC_LIBDIR FRAMAC_LIBDIR :=$(shell frama-c-config -print-libpath) diff --git a/src/plugins/wp/MemVar.ml b/src/plugins/wp/MemVar.ml index 2d266bc8834627a86a177eef930bc2b35a357680..e58e68f368fcffdfcfd33749a2dc0c87cceb6d2f 100644 --- a/src/plugins/wp/MemVar.ml +++ b/src/plugins/wp/MemVar.ml @@ -170,6 +170,9 @@ struct type t = sigma type chunk = Chunk.t type domain = Heap.set + let empty = Heap.Set.empty + let union = Heap.Set.union + let create () = { vars = SIGMA.create () ; alloc = ALLOC.create () ; @@ -483,6 +486,12 @@ struct | CTXT -> Format.pp_print_string fmt "ptr" | CARR -> Format.pp_print_string fmt "arr" | HEAP -> Format.pp_print_string fmt "mem" + + let pp_var_model fmt = function (* re-uses strings that are used into the description of -wp-xxx-vars *) + | ByValue | NotUsed -> Format.pp_print_string fmt "non-aliased" (* cf. -wp-unalias-vars *) + | ByRef -> Format.pp_print_string fmt "by reference" (* cf. -wp-ref-vars *) + | InContext | InArray -> Format.pp_print_string fmt "in an isolated context" (* cf. -wp-context-vars *) + | InHeap -> Format.pp_print_string fmt "aliased" (* cf. -wp-alias-vars *) let pretty fmt = function | Ref x -> VAR.pretty fmt x @@ -493,6 +502,14 @@ struct pp_mem m VAR.pretty x (pp_offset ~obj) ofs + let noref ~op var = + Warning.error + "forbidden %s variable '%a' considered %a.@\n\ + Use model 'Typed' instead or specify '-wp-unalias-vars %a'" + op Varinfo.pretty var + pp_var_model (V.param var) + Varinfo.pretty var + (* -------------------------------------------------------------------------- *) (* --- Basic Constructors --- *) (* -------------------------------------------------------------------------- *) @@ -529,7 +546,7 @@ struct let field l f = match l with | Loc l -> Loc (M.field l f) - | Ref x -> Wp_parameters.fatal "Field of ref-var '%a'" Varinfo.pretty x + | Ref x -> noref ~op:"field access to" x | Val(m,x,ofs) -> Val(m,x,ofs @ [Field f]) let rec ofs_shift obj k = function @@ -539,17 +556,17 @@ struct let shift l obj k = match l with | Loc l -> Loc (M.shift l obj k) - | Ref _ -> Wp_parameters.fatal "Shift of ref-var" + | Ref x -> noref ~op:"array access to" x | Val(m,x,ofs) -> Val(m,x,ofs_shift obj k ofs) let base_addr = function | Loc l -> Loc (M.base_addr l) - | Ref _ -> Wp_parameters.fatal "Base-addr of ref-var" + | Ref x -> noref ~op:"base address of" x (* ??? ~suggest:ByValue *) | Val(m,x,_) -> Val(m,x,[]) let block_length sigma obj = function | Loc l -> M.block_length sigma.mem obj l - | Ref _ -> Wp_parameters.fatal "Block-length of ref-var" + | Ref x -> noref ~op:"block-length of" x | Val(m,x,_) -> let obj = Ctypes.object_of (vtype m x) in let size = @@ -609,7 +626,7 @@ struct (* -------------------------------------------------------------------------- *) let stored seq obj l v = match l with - | Ref x -> Warning.error "Write to ref-var '%a'" Varinfo.pretty x + | Ref x -> noref ~op:"write to" x | Val((CREF|CVAL),x,ofs) -> let v1 = get_term seq.pre x in let v2 = get_term seq.post x in @@ -773,8 +790,7 @@ struct end | Rrange(l,elt,a,b) -> begin match l with - | Ref x -> - Wp_parameters.fatal "range of ref-var '%a'" Varinfo.pretty x + | Ref x -> noref ~op:"valid sub-range of" x | Loc l -> M.valid sigma.mem acs (Rrange(l,elt,a,b)) | Val(m,x,p) -> match a,b with @@ -908,7 +924,7 @@ struct (* -------------------------------------------------------------------------- *) let assigned_loc seq obj = function - | Ref x -> Warning.error "assigned of ref-var '%a'" Varinfo.pretty x + | Ref x -> noref ~op:"assigns to" x | Val((CVAL|CREF),_,[]) -> [] (* full update *) | Val((CVAL|CREF),_,_) as vloc -> let v = Lang.freshvar ~basename:"v" (Lang.tau_of_object obj) in @@ -920,7 +936,7 @@ struct let assigned_array seq obj l elt n = match l with - | Ref x -> Warning.error "assigned of ref-var '%a'" Varinfo.pretty x + | Ref x -> noref ~op:"assigns to" x | Val((CVAL|CREF),_,[]) -> [] (* full update *) | Val((CVAL|CREF),_,_) as vloc -> let te = Lang.tau_of_object elt in @@ -934,7 +950,7 @@ struct let assigned_range seq obj l elt a b = match l with - | Ref x -> Warning.error "assigned of ref-var '%a'" Varinfo.pretty x + | Ref x -> noref ~op:"assigns to" x | Loc l -> M.assigned (mseq_of_seq seq) obj (Srange(l,elt,a,b)) | Val((HEAP|CTXT|CARR) as m,x,ofs) -> @@ -947,7 +963,7 @@ struct let assigned_descr seq obj xs l p = match l with - | Ref x -> Warning.error "assigned of ref-var '%a'" Varinfo.pretty x + | Ref x -> noref ~op:"assigns to" x | Loc l -> M.assigned (mseq_of_seq seq) obj (Sdescr(xs,l,p)) | Val((HEAP|CTXT|CARR) as m,x,ofs) -> @@ -990,8 +1006,7 @@ struct let locseg = function | Rloc(_,Ref x) -> Rseg x - | Rrange(Ref x,_,_,_) -> - Warning.error "range of ref-var '%a'" Varinfo.pretty x + | Rrange(Ref x,_,_,_) -> noref ~op:"sub-range of" x | Rloc(obj,Loc l) -> Lseg (Rloc(obj,l)) | Rloc(_,Val((CVAL|CREF),x,ofs)) -> Fseg(x,delta ofs) diff --git a/src/plugins/wp/Memory.ml b/src/plugins/wp/Memory.ml index 8ee01329d5fd21a4cb81e5b050a61b21254f848a..beb2d767c007d47d6099ce6468287dc0970aa15a 100644 --- a/src/plugins/wp/Memory.ml +++ b/src/plugins/wp/Memory.ml @@ -106,7 +106,9 @@ sig val havoc_chunk : t -> chunk -> t val havoc_any : call:bool -> t -> t val domain : t -> domain - + val union : domain -> domain -> domain + val empty : domain + val pretty : Format.formatter -> t -> unit end diff --git a/src/plugins/wp/Pcond.ml b/src/plugins/wp/Pcond.ml index 7d023370b9e876f1a6b2d4d17db38f9b1a762749..d7a68ec7d5f0eecc4874c0945951ab633cfe375c 100644 --- a/src/plugins/wp/Pcond.ml +++ b/src/plugins/wp/Pcond.ml @@ -63,7 +63,7 @@ class state = inherit Pcfg.engine val mutable env = Pcfg.create () val mutable context = NoWhere - + method clear = begin env <- Pcfg.create () ; @@ -77,7 +77,7 @@ class state = end method label_at ~id = Pcfg.at env ~id - + method private at : 'a. ?lbl:Pcfg.label -> (Format.formatter -> 'a -> unit) -> Format.formatter -> 'a -> unit = begin fun ?lbl pp fmt w -> @@ -98,7 +98,7 @@ class state = Format.fprintf fmt "( %a )%a" pp w self#pp_at l ; context <- here ; end - + method private atflow : 'a. ?lbl:Pcfg.label -> (Format.formatter -> 'a -> unit) -> Format.formatter -> 'a -> unit = begin fun ?lbl pp fmt w -> @@ -121,7 +121,7 @@ class state = val mutable force = false method! pp_var fmt x = Format.pp_print_char fmt '`' ; Format.pp_print_string fmt x - + method! pp_repr fmt e = if force then (force <- false ; super#pp_repr fmt e) else begin @@ -148,7 +148,7 @@ class state = if not (Pcfg.subterms env f e) then super#subterms f e method updates seq vars = Pcfg.updates env seq vars - + method pp_update lbl fmt = function | Memory.Mstore(lv,v) -> let stack = context in @@ -156,7 +156,7 @@ class state = Format.fprintf fmt "@[<hov 2>%a =@ %a;@]" self#pp_lval lv self#pp_value v ; context <- stack ; - + end (* -------------------------------------------------------------------------- *) @@ -183,7 +183,7 @@ class engine (lang : #Plang.engine) = (* -------------------------------------------------------------------------- *) (* --- Horizontal Printers --- *) (* -------------------------------------------------------------------------- *) - + method pp_clause fmt s = Format.fprintf fmt "@{<wp:clause>%s@}" s method pp_name = Format.pp_print_string method pp_core = lang#pp_sort @@ -200,7 +200,7 @@ class engine (lang : #Plang.engine) = method pp_definition fmt x e = Format.fprintf fmt "@[<hov 4>%a %a = %a.@]" self#pp_clause "Let" self#pp_name x self#pp_core e - + method pp_intro ~step ~clause ?(dot=".") fmt p = ignore step ; Format.fprintf fmt "@[<hov 4>%a %a%s@]" @@ -209,7 +209,7 @@ class engine (lang : #Plang.engine) = (* -------------------------------------------------------------------------- *) (* --- Block Printers --- *) (* -------------------------------------------------------------------------- *) - + method pp_condition ~step fmt = function | State _ -> () | Core p -> self#pp_intro ~step ~clause:"Core:" fmt p @@ -236,7 +236,7 @@ class engine (lang : #Plang.engine) = ) cases ; pp_close_block fmt "}" ; end - + method pp_step fmt step = match step.condition with | State _ -> @@ -244,7 +244,7 @@ class engine (lang : #Plang.engine) = | _ -> begin ( match step.descr with None -> () | Some s -> - spaced self#pp_comment fmt s ) ; + spaced self#pp_comment fmt s ) ; Warning.Set.iter (spaced self#pp_warning fmt) step.warn ; List.iter (spaced self#pp_property fmt) step.deps ; spaced (self#pp_condition ~step) fmt step.condition ; @@ -252,7 +252,7 @@ class engine (lang : #Plang.engine) = method private sequence ~clause fmt seq = Format.pp_print_space fmt () ; self#pp_block ~clause fmt seq - + method pp_block ~clause fmt seq = if Conditions.is_empty seq then Format.fprintf fmt "%a {}" self#pp_clause clause @@ -285,9 +285,9 @@ class engine (lang : #Plang.engine) = Format.fprintf fmt "@[<hov 4>%a %a.@]" self#pp_clause "Prove:" lang#pp_pred goal - method pp_sequence ~title fmt seq = - lang#global (fun () -> self#pp_block ~clause:title fmt seq) - + method pp_sequence ~clause fmt seq = + lang#global (fun () -> self#pp_block ~clause fmt seq) + method pp_sequent fmt seq = lang#global (self#dump fmt seq) @@ -299,7 +299,7 @@ class engine (lang : #Plang.engine) = method mark m s = mark m s method name env e = Env.fresh env (F.basename e) - + method private define env fmt e = let name = self#name env e in lang#scope env (fun () -> self#pp_definition fmt name e) ; @@ -313,7 +313,7 @@ class engine (lang : #Plang.engine) = lang#scope env (fun () -> Conditions.iter (self#pp_step fmt) seq) ; end end - + (* -------------------------------------------------------------------------- *) (* --- All-In-One Printers --- *) (* -------------------------------------------------------------------------- *) @@ -336,7 +336,7 @@ class sequence (lang : #state) = | Some( lbl , upd ) -> if not (Bag.is_empty upd) then Bag.iter ((spaced (lang#pp_update lbl)) fmt) upd - + method! pp_condition ~step fmt cond = match self#label step cond with | None -> super#pp_condition ~step fmt cond @@ -388,18 +388,18 @@ class sequence (lang : #state) = val mutable active = true method set_state s = active <- s method get_state = active - + method private set_sequence seq = if active then lang#set_sequence seq else lang#clear - - method! pp_sequence ~title fmt seq = + + method! pp_sequence ~clause fmt seq = begin domain <- Conditions.vars_hyp seq ; self#set_sequence seq ; - super#pp_sequence ~title fmt seq ; + super#pp_sequence ~clause fmt seq ; end method! pp_sequent fmt seq = @@ -431,10 +431,15 @@ let engine () = let pretty fmt seq = (engine())#pp_sequent fmt seq -let sequence ?(title="Assume") fmt seq = - (engine())#pp_sequence ~title fmt seq +let sequence ?(clause="Assume") fmt seq = + let plang = new Plang.engine in + let pcond = new engine plang in + plang#global + (fun () -> + Vars.iter (fun x -> ignore (plang#bind x)) (Conditions.vars_hyp seq) ; + pcond#pp_sequence ~clause fmt seq) -let bundle ?title fmt bundle = - sequence ?title fmt (Conditions.sequence bundle) +let bundle ?clause fmt bundle = + sequence ?clause fmt (Conditions.sequence bundle) -let dump = bundle ~title:"Assume" +let dump = bundle ~clause:"Assume" diff --git a/src/plugins/wp/Pcond.mli b/src/plugins/wp/Pcond.mli index 2bbdb0eba34bc23bed042733b6cf5a3e8957bac6..c02bea93c01dcfe280dd73d9f198324df86accac 100644 --- a/src/plugins/wp/Pcond.mli +++ b/src/plugins/wp/Pcond.mli @@ -26,8 +26,8 @@ open Conditions (** {2 All-in-one printers} *) val dump : bundle printer -val bundle : ?title:string -> bundle printer -val sequence : ?title:string -> sequence printer +val bundle : ?clause:string -> bundle printer +val sequence : ?clause:string -> sequence printer val pretty : sequent printer (** {2 Low-level API} *) @@ -46,7 +46,7 @@ val xmark_seq : Plang.pool -> (var -> unit) -> sequent -> unit - ["wp:"] *) -class engine : #Plang.engine -> +class engine : #Plang.engine -> object (** {2 Printer Components} *) method name : env -> term -> string (** Generate a name for marked term *) @@ -61,26 +61,23 @@ class engine : #Plang.engine -> method pp_definition : Format.formatter -> string -> term -> unit method pp_intro : step:step -> clause:string -> ?dot:string -> pred printer method pp_condition : step:step -> condition printer - + method pp_block : clause:string -> sequence printer + method pp_goal : pred printer + method pp_step : step printer (** Assumes an "<hv>" box is opened. *) - - method pp_block : clause:string -> sequence printer - (** Assumes an "<hv>" box is opened. Default spacing is true. *) - method pp_goal : pred printer - (** Assumes an "<hv>" box os opened. *) - - method pp_sequence : title:string -> sequence printer - (** Print the sequen in global environement. *) + method pp_sequence : clause:string -> sequence printer + (** Assumes an "<hv>" box is opened {i and} all variables are declared. + (recursively used) *) method pp_sequent : sequent printer (** Print the sequent in global environment. *) - + method pp_esequent : env -> sequent printer (** Print the sequent in the given environment. - The environment is enrich with the shared terms. *) - + The environment is enriched with the shared terms. *) + end (* -------------------------------------------------------------------------- *) diff --git a/src/plugins/wp/ProverErgo.ml b/src/plugins/wp/ProverErgo.ml index 9fffbbac8b5a37d2fc0d2bf1abebd1c10e34bf3c..c4ed36922c99663bed623268b8989e1c964091d2 100644 --- a/src/plugins/wp/ProverErgo.ml +++ b/src/plugins/wp/ProverErgo.ml @@ -81,6 +81,11 @@ type depend = | D_file of string | D_cluster of cluster +let pp_depend fmt = function + | D_file file -> Format.fprintf fmt "File %s" file + | D_cluster cluster -> Format.fprintf fmt "Cluster %a" + Definitions.pp_cluster cluster + module TYPES = Model.Index (struct type key = adt @@ -471,10 +476,11 @@ let prove_prop ~config ~pid ~mode ~model ~axioms ~prop = let title = Pretty_utils.to_string WpPropId.pretty pid in let lines = Model.with_model model (assemble_goal ~file ~id ~title ~axioms) prop in - Model.with_model model (fun () -> - let goal = cluster ~id ~title () in - Wp_parameters.print_generated (cluster_file goal) - ) (); + if Wp_parameters.has_print_generated () then + Model.with_model model (fun () -> + let goal = cluster ~id ~title () in + Wp_parameters.print_generated (cluster_file goal) + ) () ; if Wp_parameters.Generate.get () then Task.return VCS.no_result else prove_file ~config ~pid ~mode ~file ~lines ~logout ~logerr diff --git a/src/plugins/wp/Sigma.ml b/src/plugins/wp/Sigma.ml index 0a842e3e80e9dd875b8e1fdcfd41d828aaab4051..e25547c666edfc13ee58bc120c52829e9f876d6a 100644 --- a/src/plugins/wp/Sigma.ml +++ b/src/plugins/wp/Sigma.ml @@ -35,6 +35,9 @@ struct type chunk = C.t type domain = H.set + let empty = H.Set.empty + let union = H.Set.union + type t = { id : int ; mutable map : var H.map } let id = ref 0 (* for debugging purpose *) diff --git a/src/plugins/wp/cfgWP.ml b/src/plugins/wp/cfgWP.ml index be349ef8c611b6e9315e4046e39d40c34dc952ff..dac5644c456c602b8086e22cc64f160935d4dce6 100644 --- a/src/plugins/wp/cfgWP.ml +++ b/src/plugins/wp/cfgWP.ml @@ -813,8 +813,11 @@ struct let ks,vs = cc_case_values [] [] sigma es in let pa = join_with sigma wp.sigma in let eq = p_any (p_equal v) vs in - vs , cc_group_case stmt warn "Case" - (Splitter.switch_cases stmt ks) pa [eq] wp.vcs + let msg = match ks with + | [k] -> "Case " ^ Int64.to_string k + | _ -> "Cases " ^ String.concat "," (List.map Int64.to_string ks) in + let tag = Splitter.switch_cases stmt ks in + vs , cc_group_case stmt warn msg tag pa [eq] wp.vcs let cc_default stmt sigma neq default = let pa = join_with sigma default.sigma in @@ -823,7 +826,13 @@ struct let switch wenv stmt exp cases default = L.in_frame wenv.frame (fun () -> - let sigma = Sigma.create () in + let domain = + List.fold_left (fun d (_,wp) -> + match wp.sigma with + | None -> d + | Some s -> Sigma.union d (Sigma.domain s) + ) Sigma.empty cases in + let sigma = Sigma.havoc (Sigma.create ()) domain in let warn,value = match Warning.catch ~source:"Switch" ~severe:false ~effect:"Skip switched value" diff --git a/src/plugins/wp/share/coqwp/Cbits.v b/src/plugins/wp/share/coqwp/Cbits.v index 2b3c67d61b693a189a41cd4f7ec332dc38e07cf0..ebb22a09238e4c2e29f25120a866990c2a4b7d8b 100644 --- a/src/plugins/wp/share/coqwp/Cbits.v +++ b/src/plugins/wp/share/coqwp/Cbits.v @@ -961,6 +961,14 @@ Proof. intros x y; rewrite Cint.to_uint_64; apply to_uint_lor. Qed. +(* Why3 goal *) +Lemma is_uint_lxor : forall (n:Z) (x:Z) (y:Z), (Cint.is_uint n x) -> + ((Cint.is_uint n y) -> ((Cint.to_uint n (Cint.lxor x y)) = (Cint.lxor x + y))). +Proof. + intro n; is_uint_bitwise xorb (Zabs_nat n). +Qed. + (** * Some C-Integer Bits Conversions are identity *) (** ** Unsigned conversions *) (* Why3 goal *) @@ -1038,6 +1046,13 @@ Proof. Qed. (** *** Cast to uint8 C type *) +(* Why3 goal *) +Lemma is_uint8_lxor : forall (x:Z) (y:Z), (Cint.is_uint8 x) -> + ((Cint.is_uint8 y) -> ((Cint.to_uint8 (Cint.lxor x y)) = (Cint.lxor x y))). +Proof. + intros; rewrite Cint.to_uint_8; apply is_uint_lxor; trivial. +Qed. + (* Why3 goal *) Lemma is_uint8_lor : forall (x:Z) (y:Z), (Cint.is_uint8 x) -> ((Cint.is_uint8 y) -> ((Cint.to_uint8 (Cint.lor x y)) = (Cint.lor x y))). @@ -1074,6 +1089,14 @@ Proof. Qed. (** *** Cast to uint16 C type *) +(* Why3 goal *) +Lemma is_uint16_lxor : forall (x:Z) (y:Z), (Cint.is_uint16 x) -> + ((Cint.is_uint16 y) -> ((Cint.to_uint16 (Cint.lxor x y)) = (Cint.lxor x + y))). +Proof. + intros; rewrite Cint.to_uint_16; apply is_uint_lxor; trivial. +Qed. + (* Why3 goal *) Lemma is_uint16_lor : forall (x:Z) (y:Z), (Cint.is_uint16 x) -> ((Cint.is_uint16 y) -> ((Cint.to_uint16 (Cint.lor x y)) = (Cint.lor x y))). @@ -1111,6 +1134,14 @@ Proof. Qed. (** *** Cast to uint32 C type *) +(* Why3 goal *) +Lemma is_uint32_lxor : forall (x:Z) (y:Z), (Cint.is_uint32 x) -> + ((Cint.is_uint32 y) -> ((Cint.to_uint32 (Cint.lxor x y)) = (Cint.lxor x + y))). +Proof. + intros; rewrite Cint.to_uint_32; apply is_uint_lxor; trivial. +Qed. + (* Why3 goal *) Lemma is_uint32_lor : forall (x:Z) (y:Z), (Cint.is_uint32 x) -> ((Cint.is_uint32 y) -> ((Cint.to_uint32 (Cint.lor x y)) = (Cint.lor x y))). @@ -1148,6 +1179,14 @@ Proof. Qed. (** *** Cast to uint64 C type *) +(* Why3 goal *) +Lemma is_uint64_lxor : forall (x:Z) (y:Z), (Cint.is_uint64 x) -> + ((Cint.is_uint64 y) -> ((Cint.to_uint64 (Cint.lxor x y)) = (Cint.lxor x + y))). +Proof. + intros; rewrite Cint.to_uint_64; apply is_uint_lxor; trivial. +Qed. + (* Why3 goal *) Lemma is_uint64_lor : forall (x:Z) (y:Z), (Cint.is_uint64 x) -> ((Cint.is_uint64 y) -> ((Cint.to_uint64 (Cint.lor x y)) = (Cint.lor x y))). diff --git a/src/plugins/wp/share/ergo/Cbits.mlw b/src/plugins/wp/share/ergo/Cbits.mlw index 9ee6c8702a802c3b0dd52eb4bffbab6520e47dab..a18e6aa8ca3b860c31fa759f25081f5ce730e4ae 100644 --- a/src/plugins/wp/share/ergo/Cbits.mlw +++ b/src/plugins/wp/share/ergo/Cbits.mlw @@ -253,6 +253,14 @@ axiom to_sint64_extraction_inf1 : (forall x:int. forall i:int [bit_test(to_sint64(x), i)]. (((0 <= i) and (i < 63)) -> (bit_test(x, i) -> bit_test(to_sint64(x), i)))) +axiom is_uint_lxor : + (forall n:int. forall x:int. forall y:int. (is_uint(n, x) -> (is_uint(n, + y) -> (to_uint(n, lxor(x, y)) = lxor(x, y))))) + +axiom is_uint8_lxor : + (forall x:int. forall y:int [to_uint8(lxor(x, y))]. (is_uint8(x) -> + (is_uint8(y) -> (to_uint8(lxor(x, y)) = lxor(x, y))))) + axiom is_uint8_lor : (forall x:int. forall y:int [to_uint8(lor(x, y))]. (is_uint8(x) -> (is_uint8(y) -> (to_uint8(lor(x, y)) = lor(x, y))))) @@ -273,6 +281,10 @@ axiom is_uint8_lsl1_sup : (forall y:int [to_uint8(lsl(1, y))]. ((8 <= y) -> (to_uint8(lsl(1, y)) = 0))) +axiom is_uint16_lxor : + (forall x:int. forall y:int [to_uint16(lxor(x, y))]. (is_uint16(x) -> + (is_uint16(y) -> (to_uint16(lxor(x, y)) = lxor(x, y))))) + axiom is_uint16_lor : (forall x:int. forall y:int [to_uint16(lor(x, y))]. (is_uint16(x) -> (is_uint16(y) -> (to_uint16(lor(x, y)) = lor(x, y))))) @@ -293,6 +305,10 @@ axiom is_uint16_lsl1_sup : (forall y:int [to_uint16(lsl(1, y))]. ((16 <= y) -> (to_uint16(lsl(1, y)) = 0))) +axiom is_uint32_lxor : + (forall x:int. forall y:int [to_uint32(lxor(x, y))]. (is_uint32(x) -> + (is_uint32(y) -> (to_uint32(lxor(x, y)) = lxor(x, y))))) + axiom is_uint32_lor : (forall x:int. forall y:int [to_uint32(lor(x, y))]. (is_uint32(x) -> (is_uint32(y) -> (to_uint32(lor(x, y)) = lor(x, y))))) @@ -313,6 +329,10 @@ axiom is_uint32_lsl1_sup : (forall y:int [to_uint32(lsl(1, y))]. ((32 <= y) -> (to_uint32(lsl(1, y)) = 0))) +axiom is_uint64_lxor : + (forall x:int. forall y:int [to_uint64(lxor(x, y))]. (is_uint64(x) -> + (is_uint64(y) -> (to_uint64(lxor(x, y)) = lxor(x, y))))) + axiom is_uint64_lor : (forall x:int. forall y:int [to_uint64(lor(x, y))]. (is_uint64(x) -> (is_uint64(y) -> (to_uint64(lor(x, y)) = lor(x, y))))) diff --git a/src/plugins/wp/share/src/.gitignore b/src/plugins/wp/share/src/.gitignore index 4a7201d4c08e87bbc051fcce5002809b55562c6e..4a16ab828bffe9ecc203a375b66470017ab1cac8 100644 --- a/src/plugins/wp/share/src/.gitignore +++ b/src/plugins/wp/share/src/.gitignore @@ -12,4 +12,5 @@ /*.vo /*.glob /*.why_theory +/.*.aux /lia.cache diff --git a/src/plugins/wp/share/src/Cbits.v b/src/plugins/wp/share/src/Cbits.v index 311e5b0900f643ee9f1e07538a5b28c4273672b9..e1e6d6d587edce4af4af00055c53def12b81621d 100644 --- a/src/plugins/wp/share/src/Cbits.v +++ b/src/plugins/wp/share/src/Cbits.v @@ -939,6 +939,14 @@ Proof. intros x y; rewrite Cint.to_uint_64; apply to_uint_lor. Qed. +(* Why3 goal *) +Lemma is_uint_lxor : forall (n:Z) (x:Z) (y:Z), (Cint.is_uint n x) -> + ((Cint.is_uint n y) -> ((Cint.to_uint n (Cint.lxor x y)) = (Cint.lxor x + y))). +Proof. + intro n; is_uint_bitwise xorb (Zabs_nat n). +Qed. + (** * Some C-Integer Bits Conversions are identity *) (** ** Unsigned conversions *) (* Why3 goal *) @@ -1016,6 +1024,13 @@ Proof. Qed. (** *** Cast to uint8 C type *) +(* Why3 goal *) +Lemma is_uint8_lxor : forall (x:Z) (y:Z), (Cint.is_uint8 x) -> + ((Cint.is_uint8 y) -> ((Cint.to_uint8 (Cint.lxor x y)) = (Cint.lxor x y))). +Proof. + intros; rewrite Cint.to_uint_8; apply is_uint_lxor; trivial. +Qed. + (* Why3 goal *) Lemma is_uint8_lor : forall (x:Z) (y:Z), (Cint.is_uint8 x) -> ((Cint.is_uint8 y) -> ((Cint.to_uint8 (Cint.lor x y)) = (Cint.lor x y))). @@ -1052,6 +1067,14 @@ Proof. Qed. (** *** Cast to uint16 C type *) +(* Why3 goal *) +Lemma is_uint16_lxor : forall (x:Z) (y:Z), (Cint.is_uint16 x) -> + ((Cint.is_uint16 y) -> ((Cint.to_uint16 (Cint.lxor x y)) = (Cint.lxor x + y))). +Proof. + intros; rewrite Cint.to_uint_16; apply is_uint_lxor; trivial. +Qed. + (* Why3 goal *) Lemma is_uint16_lor : forall (x:Z) (y:Z), (Cint.is_uint16 x) -> ((Cint.is_uint16 y) -> ((Cint.to_uint16 (Cint.lor x y)) = (Cint.lor x y))). @@ -1089,6 +1112,14 @@ Proof. Qed. (** *** Cast to uint32 C type *) +(* Why3 goal *) +Lemma is_uint32_lxor : forall (x:Z) (y:Z), (Cint.is_uint32 x) -> + ((Cint.is_uint32 y) -> ((Cint.to_uint32 (Cint.lxor x y)) = (Cint.lxor x + y))). +Proof. + intros; rewrite Cint.to_uint_32; apply is_uint_lxor; trivial. +Qed. + (* Why3 goal *) Lemma is_uint32_lor : forall (x:Z) (y:Z), (Cint.is_uint32 x) -> ((Cint.is_uint32 y) -> ((Cint.to_uint32 (Cint.lor x y)) = (Cint.lor x y))). @@ -1126,6 +1157,14 @@ Proof. Qed. (** *** Cast to uint64 C type *) +(* Why3 goal *) +Lemma is_uint64_lxor : forall (x:Z) (y:Z), (Cint.is_uint64 x) -> + ((Cint.is_uint64 y) -> ((Cint.to_uint64 (Cint.lxor x y)) = (Cint.lxor x + y))). +Proof. + intros; rewrite Cint.to_uint_64; apply is_uint_lxor; trivial. +Qed. + (* Why3 goal *) Lemma is_uint64_lor : forall (x:Z) (y:Z), (Cint.is_uint64 x) -> ((Cint.is_uint64 y) -> ((Cint.to_uint64 (Cint.lor x y)) = (Cint.lor x y))). diff --git a/src/plugins/wp/share/src/cbits.why b/src/plugins/wp/share/src/cbits.why index 6d04592eca4e1d8694674791da11d634dda569b8..be254bc7f1d91ffe7cc87ce0b5760f1784419675 100644 --- a/src/plugins/wp/share/src/cbits.why +++ b/src/plugins/wp/share/src/cbits.why @@ -307,6 +307,8 @@ theory Cbits (** * Some C-Integer Bits Conversions are identity *) (** ** Unsigned conversions *) + lemma is_uint_lxor : forall n x y:int. + is_uint n x -> is_uint n y -> to_uint n (lxor x y) = lxor x y lemma is_uint_lor : forall n x y:int. is_uint n x -> is_uint n y -> to_uint n (lor x y) = lor x y lemma is_uint_land : forall n x y:int. @@ -324,6 +326,9 @@ theory Cbits meta "remove_for_" prop is_uint_lsl1_sup (** *** Cast to uint8 C type *) + axiom is_uint8_lxor : forall x y:int [to_uint8 (lxor x y)]. + is_uint8 x -> is_uint8 y -> to_uint8 (lxor x y) = lxor x y + axiom is_uint8_lor : forall x y:int [to_uint8 (lor x y)]. is_uint8 x -> is_uint8 y -> to_uint8 (lor x y) = lor x y @@ -340,6 +345,9 @@ theory Cbits 8<=y -> to_uint8 (lsl 1 y) = 0 (** *** Cast to uint16 C type *) + axiom is_uint16_lxor : forall x y:int [to_uint16 (lxor x y)]. + is_uint16 x -> is_uint16 y -> to_uint16 (lxor x y) = lxor x y + axiom is_uint16_lor : forall x y:int [to_uint16 (lor x y)]. is_uint16 x -> is_uint16 y -> to_uint16 (lor x y) = lor x y @@ -356,6 +364,9 @@ theory Cbits 16<=y -> to_uint16 (lsl 1 y) = 0 (** *** Cast to uint32 C type *) + axiom is_uint32_lxor : forall x y:int [to_uint32 (lxor x y)]. + is_uint32 x -> is_uint32 y -> to_uint32 (lxor x y) = lxor x y + axiom is_uint32_lor : forall x y:int [to_uint32 (lor x y)]. is_uint32 x -> is_uint32 y -> to_uint32 (lor x y) = lor x y @@ -372,6 +383,9 @@ theory Cbits 32<=y -> to_uint32 (lsl 1 y) = 0 (** *** Cast to uint64 C type *) + axiom is_uint64_lxor : forall x y:int [to_uint64 (lxor x y)]. + is_uint64 x -> is_uint64 y -> to_uint64 (lxor x y) = lxor x y + axiom is_uint64_lor : forall x y:int [to_uint64 (lor x y)]. is_uint64 x -> is_uint64 y -> to_uint64 (lor x y) = lor x y diff --git a/src/plugins/wp/share/why3/Cbits.v b/src/plugins/wp/share/why3/Cbits.v index 2b3c67d61b693a189a41cd4f7ec332dc38e07cf0..ebb22a09238e4c2e29f25120a866990c2a4b7d8b 100644 --- a/src/plugins/wp/share/why3/Cbits.v +++ b/src/plugins/wp/share/why3/Cbits.v @@ -961,6 +961,14 @@ Proof. intros x y; rewrite Cint.to_uint_64; apply to_uint_lor. Qed. +(* Why3 goal *) +Lemma is_uint_lxor : forall (n:Z) (x:Z) (y:Z), (Cint.is_uint n x) -> + ((Cint.is_uint n y) -> ((Cint.to_uint n (Cint.lxor x y)) = (Cint.lxor x + y))). +Proof. + intro n; is_uint_bitwise xorb (Zabs_nat n). +Qed. + (** * Some C-Integer Bits Conversions are identity *) (** ** Unsigned conversions *) (* Why3 goal *) @@ -1038,6 +1046,13 @@ Proof. Qed. (** *** Cast to uint8 C type *) +(* Why3 goal *) +Lemma is_uint8_lxor : forall (x:Z) (y:Z), (Cint.is_uint8 x) -> + ((Cint.is_uint8 y) -> ((Cint.to_uint8 (Cint.lxor x y)) = (Cint.lxor x y))). +Proof. + intros; rewrite Cint.to_uint_8; apply is_uint_lxor; trivial. +Qed. + (* Why3 goal *) Lemma is_uint8_lor : forall (x:Z) (y:Z), (Cint.is_uint8 x) -> ((Cint.is_uint8 y) -> ((Cint.to_uint8 (Cint.lor x y)) = (Cint.lor x y))). @@ -1074,6 +1089,14 @@ Proof. Qed. (** *** Cast to uint16 C type *) +(* Why3 goal *) +Lemma is_uint16_lxor : forall (x:Z) (y:Z), (Cint.is_uint16 x) -> + ((Cint.is_uint16 y) -> ((Cint.to_uint16 (Cint.lxor x y)) = (Cint.lxor x + y))). +Proof. + intros; rewrite Cint.to_uint_16; apply is_uint_lxor; trivial. +Qed. + (* Why3 goal *) Lemma is_uint16_lor : forall (x:Z) (y:Z), (Cint.is_uint16 x) -> ((Cint.is_uint16 y) -> ((Cint.to_uint16 (Cint.lor x y)) = (Cint.lor x y))). @@ -1111,6 +1134,14 @@ Proof. Qed. (** *** Cast to uint32 C type *) +(* Why3 goal *) +Lemma is_uint32_lxor : forall (x:Z) (y:Z), (Cint.is_uint32 x) -> + ((Cint.is_uint32 y) -> ((Cint.to_uint32 (Cint.lxor x y)) = (Cint.lxor x + y))). +Proof. + intros; rewrite Cint.to_uint_32; apply is_uint_lxor; trivial. +Qed. + (* Why3 goal *) Lemma is_uint32_lor : forall (x:Z) (y:Z), (Cint.is_uint32 x) -> ((Cint.is_uint32 y) -> ((Cint.to_uint32 (Cint.lor x y)) = (Cint.lor x y))). @@ -1148,6 +1179,14 @@ Proof. Qed. (** *** Cast to uint64 C type *) +(* Why3 goal *) +Lemma is_uint64_lxor : forall (x:Z) (y:Z), (Cint.is_uint64 x) -> + ((Cint.is_uint64 y) -> ((Cint.to_uint64 (Cint.lxor x y)) = (Cint.lxor x + y))). +Proof. + intros; rewrite Cint.to_uint_64; apply is_uint_lxor; trivial. +Qed. + (* Why3 goal *) Lemma is_uint64_lor : forall (x:Z) (y:Z), (Cint.is_uint64 x) -> ((Cint.is_uint64 y) -> ((Cint.to_uint64 (Cint.lor x y)) = (Cint.lor x y))). diff --git a/src/plugins/wp/share/why3/Cbits.why b/src/plugins/wp/share/why3/Cbits.why index 402950f2aea5f2ef85cb5c30c9d4676b5f5817c9..6e8110eb1ec3f440059550e3c14c0e219dda1cb4 100644 --- a/src/plugins/wp/share/why3/Cbits.why +++ b/src/plugins/wp/share/why3/Cbits.why @@ -148,6 +148,13 @@ axiom to_sint64_extraction_inf : forall x:int, i:int [Cint.bit_test (Cint.to_sint64 x) i]. (Int.(<=) (0) (i)) /\ (Int.(<) (i) (63)) -> Cint.bit_test (Cint.to_sint64 x) i <-> Cint.bit_test x i +axiom is_uint_lxor : forall n:int, x:int, y:int. Cint.is_uint n x -> + Cint.is_uint n y -> ((Cint.to_uint n (Cint.lxor x y)) = (Cint.lxor x y)) + +axiom is_uint8_lxor : forall x:int, y:int [Cint.to_uint8 (Cint.lxor x y)]. + Cint.is_uint8 x -> Cint.is_uint8 y -> ((Cint.to_uint8 (Cint.lxor x + y)) = (Cint.lxor x y)) + axiom is_uint8_lor : forall x:int, y:int [Cint.to_uint8 (Cint.lor x y)]. Cint.is_uint8 x -> Cint.is_uint8 y -> ((Cint.to_uint8 (Cint.lor x y)) = (Cint.lor x y)) @@ -167,6 +174,10 @@ axiom is_uint8_lsl1_inf : forall y:int [Cint.to_uint8 (Cint.lsl 1 y)]. axiom is_uint8_lsl1_sup : forall y:int [Cint.to_uint8 (Cint.lsl 1 y)]. (Int.(<=) (8) (y)) -> ((Cint.to_uint8 (Cint.lsl 1 y)) = (0)) +axiom is_uint16_lxor : forall x:int, y:int [Cint.to_uint16 (Cint.lxor x y)]. + Cint.is_uint16 x -> Cint.is_uint16 y -> ((Cint.to_uint16 (Cint.lxor x + y)) = (Cint.lxor x y)) + axiom is_uint16_lor : forall x:int, y:int [Cint.to_uint16 (Cint.lor x y)]. Cint.is_uint16 x -> Cint.is_uint16 y -> ((Cint.to_uint16 (Cint.lor x y)) = (Cint.lor x y)) @@ -186,6 +197,10 @@ axiom is_uint16_lsl1_inf : forall y:int [Cint.to_uint16 (Cint.lsl 1 y)]. axiom is_uint16_lsl1_sup : forall y:int [Cint.to_uint16 (Cint.lsl 1 y)]. (Int.(<=) (16) (y)) -> ((Cint.to_uint16 (Cint.lsl 1 y)) = (0)) +axiom is_uint32_lxor : forall x:int, y:int [Cint.to_uint32 (Cint.lxor x y)]. + Cint.is_uint32 x -> Cint.is_uint32 y -> ((Cint.to_uint32 (Cint.lxor x + y)) = (Cint.lxor x y)) + axiom is_uint32_lor : forall x:int, y:int [Cint.to_uint32 (Cint.lor x y)]. Cint.is_uint32 x -> Cint.is_uint32 y -> ((Cint.to_uint32 (Cint.lor x y)) = (Cint.lor x y)) @@ -205,6 +220,10 @@ axiom is_uint32_lsl1_inf : forall y:int [Cint.to_uint32 (Cint.lsl 1 y)]. axiom is_uint32_lsl1_sup : forall y:int [Cint.to_uint32 (Cint.lsl 1 y)]. (Int.(<=) (32) (y)) -> ((Cint.to_uint32 (Cint.lsl 1 y)) = (0)) +axiom is_uint64_lxor : forall x:int, y:int [Cint.to_uint64 (Cint.lxor x y)]. + Cint.is_uint64 x -> Cint.is_uint64 y -> ((Cint.to_uint64 (Cint.lxor x + y)) = (Cint.lxor x y)) + axiom is_uint64_lor : forall x:int, y:int [Cint.to_uint64 (Cint.lor x y)]. Cint.is_uint64 x -> Cint.is_uint64 y -> ((Cint.to_uint64 (Cint.lor x y)) = (Cint.lor x y)) diff --git a/src/plugins/wp/tests/wp_bts/bts_2246.i b/src/plugins/wp/tests/wp_bts/bts_2246.i new file mode 100644 index 0000000000000000000000000000000000000000..1abd862e7fe400e97adf55e716aa06274738bc3d --- /dev/null +++ b/src/plugins/wp/tests/wp_bts/bts_2246.i @@ -0,0 +1,16 @@ +/* run.config_qualif + DONTRUN: +*/ + +int x; + +/*@ + requires x == 1; + ensures x == 1; +*/ +void bad (int e) { + switch (e) { + case 0: break; + case 1: x = 2; break; + } +} diff --git a/src/plugins/wp/tests/wp_bts/issue_198.i b/src/plugins/wp/tests/wp_bts/issue_198.i new file mode 100644 index 0000000000000000000000000000000000000000..8cfe7bda16145380a36149511d0e01332b38c28f --- /dev/null +++ b/src/plugins/wp/tests/wp_bts/issue_198.i @@ -0,0 +1 @@ +/*@ lemma broken: \forall int k ; \forall int b ; b > 0 ==> b/b == 1 ; */ diff --git a/tests/idct/oracle_bitwise/idct.err.oracle b/src/plugins/wp/tests/wp_bts/oracle/bts_2246.err.oracle similarity index 100% rename from tests/idct/oracle_bitwise/idct.err.oracle rename to src/plugins/wp/tests/wp_bts/oracle/bts_2246.err.oracle diff --git a/src/plugins/wp/tests/wp_bts/oracle/bts_2246.res.oracle b/src/plugins/wp/tests/wp_bts/oracle/bts_2246.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e942c65cf7af5e3d523d7a22996230f28e8f4acb --- /dev/null +++ b/src/plugins/wp/tests/wp_bts/oracle/bts_2246.res.oracle @@ -0,0 +1,27 @@ +# frama-c -wp [...] +[kernel] Parsing FRAMAC_SHARE/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/wp_bts/bts_2246.i (no preprocessing) +[wp] Running WP plugin... +[wp] Loading driver 'share/wp.driver' +[wp] warning: Missing RTE guards +------------------------------------------------------------ + Function bad +------------------------------------------------------------ + +Goal Post-condition (file tests/wp_bts/bts_2246.i, line 9) in 'bad' (1/3): +Tags: Default. +Prove: true. + +------------------------------------------------------------ + +Goal Post-condition (file tests/wp_bts/bts_2246.i, line 9) in 'bad' (2/3): +Tags: Case 1. +Prove: false. + +------------------------------------------------------------ + +Goal Post-condition (file tests/wp_bts/bts_2246.i, line 9) in 'bad' (3/3): +Tags: Case 0. +Prove: true. + +------------------------------------------------------------ diff --git a/tests/idct/oracle_equalities/idct.err.oracle b/src/plugins/wp/tests/wp_bts/oracle/issue_198.err.oracle similarity index 100% rename from tests/idct/oracle_equalities/idct.err.oracle rename to src/plugins/wp/tests/wp_bts/oracle/issue_198.err.oracle diff --git a/src/plugins/wp/tests/wp_bts/oracle/issue_198.res.oracle b/src/plugins/wp/tests/wp_bts/oracle/issue_198.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..bcf632b7cfe46f54f35074975f29c1226eb4efbd --- /dev/null +++ b/src/plugins/wp/tests/wp_bts/oracle/issue_198.res.oracle @@ -0,0 +1,13 @@ +# frama-c -wp [...] +[kernel] Parsing FRAMAC_SHARE/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/wp_bts/issue_198.i (no preprocessing) +[wp] Running WP plugin... +[wp] Loading driver 'share/wp.driver' +------------------------------------------------------------ + Global +------------------------------------------------------------ + +Lemma broken: +Prove: (0<b_0) -> (is_sint32 b_0) -> ((b_0 div b_0)=1) + +------------------------------------------------------------ diff --git a/tests/idct/oracle_legacy/idct.err.oracle b/src/plugins/wp/tests/wp_bts/oracle_qualif/issue_198.err.oracle similarity index 100% rename from tests/idct/oracle_legacy/idct.err.oracle rename to src/plugins/wp/tests/wp_bts/oracle_qualif/issue_198.err.oracle diff --git a/src/plugins/wp/tests/wp_bts/oracle_qualif/issue_198.res.oracle b/src/plugins/wp/tests/wp_bts/oracle_qualif/issue_198.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..8a5998407e936731182dc5e71ff6daf72e615eb3 --- /dev/null +++ b/src/plugins/wp/tests/wp_bts/oracle_qualif/issue_198.res.oracle @@ -0,0 +1,14 @@ +# frama-c -wp [...] +[kernel] Parsing FRAMAC_SHARE/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/wp_bts/issue_198.i (no preprocessing) +[wp] Running WP plugin... +[wp] Loading driver 'share/wp.driver' +[wp] 1 goal scheduled +[wp] [Alt-Ergo] Goal typed_lemma_broken : Valid +[wp] Proved goals: 1 / 1 + Qed: 0 + Alt-Ergo: 1 +---------------------------------------------------------- +Axiomatics WP Alt-Ergo Total Success +Lemma - 1 (5) 1 100% +---------------------------------------------------------- diff --git a/src/plugins/wp/tests/wp_typed/oracle/unit_bitwise.res.oracle b/src/plugins/wp/tests/wp_typed/oracle/unit_bitwise.res.oracle index 070e8ce8b241fe3dd2ce16f5f898fced38e6d355..7a26f2d4d25257d32244b81a9ee627bee67a9cfd 100644 --- a/src/plugins/wp/tests/wp_typed/oracle/unit_bitwise.res.oracle +++ b/src/plugins/wp/tests/wp_typed/oracle/unit_bitwise.res.oracle @@ -345,7 +345,7 @@ Prove: true. ------------------------------------------------------------ -Goal Post-condition 'ko' in 'bxor_uchar': +Goal Post-condition 'ok' in 'bxor_uchar': Let x = lxor(a, b). Assume { Type: is_uint8(a) /\ is_uint8(b). } Prove: to_uint8(x) = x. @@ -359,7 +359,7 @@ Prove: true. ------------------------------------------------------------ -Goal Post-condition 'ko' in 'bxor_uint': +Goal Post-condition 'ok' in 'bxor_uint': Let x = lxor(a, b). Assume { Type: is_uint32(a) /\ is_uint32(b). } Prove: to_uint32(x) = x. diff --git a/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_bitwise.0.res.oracle b/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_bitwise.0.res.oracle index c45e18724034066c1f20285c7eb5e5ab4439ebf2..a62a3b92d28f30512a799b62001f2bb3bd0c17d8 100644 --- a/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_bitwise.0.res.oracle +++ b/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_bitwise.0.res.oracle @@ -4,7 +4,7 @@ [wp] Running WP plugin... [wp] Loading driver 'share/wp.driver' [wp] warning: Missing RTE guards -[wp] 59 goals scheduled +[wp] 61 goals scheduled [wp] [Alt-Ergo] Goal typed_lemma_band_sint8 : Valid [wp] [Alt-Ergo] Goal typed_lemma_band_uint8 : Valid [wp] [Alt-Ergo] Goal typed_lemma_blsr_sint8 : Valid @@ -47,7 +47,9 @@ [wp] [Alt-Ergo] Goal typed_bxor_char_post_ok : Valid [wp] [Qed] Goal typed_bxor_int_post_ok : Valid [wp] [Qed] Goal typed_bxor_uchar_post_ok : Valid +[wp] [Alt-Ergo] Goal typed_bxor_uchar_post_ok_2 : Valid [wp] [Qed] Goal typed_bxor_uint_post_ok : Valid +[wp] [Alt-Ergo] Goal typed_bxor_uint_post_ok_2 : Valid [wp] [Alt-Ergo] Goal typed_cast_post_ok : Valid [wp] [Alt-Ergo] Goal typed_cast_assert_ok : Valid [wp] [Qed] Goal typed_cast_assert_ok_2 : Valid @@ -64,9 +66,9 @@ [wp] [Qed] Goal typed_rshift_int_post_ok : Valid [wp] [Alt-Ergo] Goal typed_rshift_uchar_post_ok : Valid [wp] [Qed] Goal typed_rshift_uint_post_ok : Valid -[wp] Proved goals: 59 / 59 +[wp] Proved goals: 61 / 61 Qed: 38 - Alt-Ergo: 21 + Alt-Ergo: 23 ---------------------------------------------------------- Axiomatics WP Alt-Ergo Total Success Lemma 10 8 (37) 18 100% @@ -81,7 +83,7 @@ rshift_int 1 - 1 100% band1_uint 1 1 (14) 2 100% band_uint 1 - 1 100% bor_uint 1 - 1 100% -bxor_uint 1 - 1 100% +bxor_uint 1 1 (12) 2 100% bnot_uint 1 - 1 100% lshift_uint 1 - 1 100% rshift_uint 1 - 1 100% @@ -94,7 +96,7 @@ rshift_char 1 - 1 100% band1_uchar 1 1 (14) 2 100% band_uchar - 1 (12) 1 100% bor_uchar - 1 (11) 1 100% -bxor_uchar 1 - 1 100% +bxor_uchar 1 1 (12) 2 100% bnot_uchar 1 - 1 100% lshift_uchar 1 - 1 100% rshift_uchar - 1 (16) 1 100% diff --git a/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_bitwise.1.res.oracle b/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_bitwise.1.res.oracle index 26220351be338db1d4ff46c5fbfdf52a52e3052e..688bf0e7a79dce58eabeecea611371e5a95986c5 100644 --- a/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_bitwise.1.res.oracle +++ b/src/plugins/wp/tests/wp_typed/oracle_qualif/unit_bitwise.1.res.oracle @@ -4,21 +4,17 @@ [wp] Running WP plugin... [wp] Loading driver 'share/wp.driver' [wp] warning: Missing RTE guards -[wp] 6 goals scheduled +[wp] 4 goals scheduled [wp] [Alt-Ergo] Goal typed_band_int_assert_ko : Unknown [wp] [Alt-Ergo] Goal typed_bnot_uchar_post_ko : Unknown [wp] [Alt-Ergo] Goal typed_bnot_uint_post_ko : Unknown -[wp] [Alt-Ergo] Goal typed_bxor_uchar_post_ko : Unknown -[wp] [Alt-Ergo] Goal typed_bxor_uint_post_ko : Unknown [wp] [Alt-Ergo] Goal typed_cast_assert_ko : Unknown -[wp] Proved goals: 0 / 6 - Alt-Ergo: 0 (unknown: 6) +[wp] Proved goals: 0 / 4 + Alt-Ergo: 0 (unknown: 4) ---------------------------------------------------------- Functions WP Alt-Ergo Total Success band_int - - 1 0.0% -bxor_uint - - 1 0.0% bnot_uint - - 1 0.0% -bxor_uchar - - 1 0.0% bnot_uchar - - 1 0.0% cast - - 1 0.0% ---------------------------------------------------------- diff --git a/src/plugins/wp/tests/wp_typed/unit_bitwise.c b/src/plugins/wp/tests/wp_typed/unit_bitwise.c index 6d194bb144a1ce51e969d2a29762e3d278173849..5176553ee138ade6a1bd996abdd4581adbb575dd 100644 --- a/src/plugins/wp/tests/wp_typed/unit_bitwise.c +++ b/src/plugins/wp/tests/wp_typed/unit_bitwise.c @@ -61,7 +61,7 @@ uint band_uint(uint a,uint b) { return a & b ; } uint bor_uint(uint a,uint b) { return a | b ; } /*@ ensures ok: \result == (uint)(a ^ b); - ensures ko: \result == (a ^ b); + ensures ok: \result == (a ^ b); */ uint bxor_uint(uint a,uint b) { return a ^ b ; } @@ -126,7 +126,7 @@ uchar band_uchar(uchar a,uchar b) { return a & b ; } uchar bor_uchar(uchar a,uchar b) { return a | b ; } /*@ ensures ok: \result == (uchar)(a ^ b); - ensures ko: \result == (a ^ b); + ensures ok: \result == (a ^ b); */ uchar bxor_uchar(uchar a,uchar b) { return a ^ b ; } diff --git a/src/plugins/wp/tests/wp_usage/issue-189-bis.i b/src/plugins/wp/tests/wp_usage/issue-189-bis.i new file mode 100644 index 0000000000000000000000000000000000000000..b9efde987e7234acac4a1913e61a668b89a1cb3f --- /dev/null +++ b/src/plugins/wp/tests/wp_usage/issue-189-bis.i @@ -0,0 +1,65 @@ +/* run.config + OPT: -wp-model Typed -wp-alias-vars src,dst + OPT: -wp-model Typed -wp-context-vars src,dst -wp-fct memcpy_context_vars +*/ + +/* run.config_qualif + OPT: -wp -wp-model Typed -wp-alias-vars src,dst -wp-par 1 + OPT: -wp -wp-model Typed -wp-context-vars src,dst -wp-prop ok -wp-par 1 +*/ + +//----------------------------------------------------------------------------- +// FUNCTION memcpy_alias_vars: since input pointers are MODIFIED, Caveat +// model (setting 'src' and 'dst' in context) CANNOT be used. +//----------------------------------------------------------------------------- +/*@ requires write_access: \valid( dst + (0 .. len-1) ); + @ requires read_access: \valid_read( src + (0 .. len-1) ); + @ requires unaliasing: \separated( dst + (0 .. len-1) , src + (0 .. len-1) ); + @ assigns dst[ 0 .. len-1 ]; + @ ensures memcpy: \forall integer k; 0 <= k < len-1 ==> dst[k] == \old( src[k] ); + @ ensures unmodified: \forall integer k; 0 <= k < len-1 ==> src[k] == \old( src[k] ); + @*/ +void memcpy_alias_vars (unsigned char *src, unsigned char *dst, unsigned long len) { + /*@ loop invariant len: len <= \at( len, LoopEntry ); + @ loop invariant src: src + len == \at( src + len, LoopEntry ); + @ loop invariant dst: dst + len == \at( dst + len, LoopEntry ); + @ loop assigns src, dst, len, \at( dst[0 .. len-1], LoopEntry ) ; + @ loop invariant cpy: \let idx = \at( len, LoopEntry ) - len ; + @ \forall integer k; 0 <= k < idx + @ ==> \at( dst, LoopEntry )[k] == \at( src, LoopEntry )[k]; + @*/ + while (len > 0) { + *(dst++) = *(src++); + len--; + } +} + +//----------------------------------------------------------------------------- +// FUNCTION memcpy_context_vars: since input pointers are UNMODIFIED, Caveat +// model (setting 'src' and 'dst' in context) CAN be used. +//----------------------------------------------------------------------------- +/*@ requires write_access: \valid( dst + (0 .. len-1) ); + @ requires read_access: \valid_read( src + (0 .. len-1) ); + @ requires unaliasing: \separated( dst + (0 .. len-1) , src + (0 .. len-1) ); + @ assigns dst[ 0 .. len-1 ]; + @ ensures memcpy: ok: \forall integer k; 0 <= k < len-1 ==> dst[k] == \old( src[k] ); + @ ensures unmodified: ok: \forall integer k; 0 <= k < len-1 ==> src[k] == \old( src[k] ); + @*/ +void memcpy_context_vars (unsigned char *src, unsigned char *dst, unsigned long len) { + unsigned char *src2=src, *dst2=dst; + + /*@ loop invariant ok: len: len <= \at( len, LoopEntry ); + @ loop invariant ok: src: src2 + len == \at( src2 + len, LoopEntry ); + @ loop invariant ok: dst: dst2 + len == \at( dst2 + len, LoopEntry ); + @ loop assigns src2, dst2, len, \at( dst2[0 .. len-1], LoopEntry ) ; + @ loop invariant ok: cpy: \let idx = \at( len, LoopEntry ) - len ; + @ \forall integer k; 0 <= k < idx + @ ==> \at( dst2, LoopEntry )[k] == \at( src2, LoopEntry )[k]; + @*/ + while (len > 0) { + *(dst2++) = *(src2++); + len--; + } +} + +//----------------------------------------------------------------------------- diff --git a/src/plugins/wp/tests/wp_usage/issue-189.i b/src/plugins/wp/tests/wp_usage/issue-189.i new file mode 100644 index 0000000000000000000000000000000000000000..9309a4ad71c5e73869a74c107b3a3a10a8f5a220 --- /dev/null +++ b/src/plugins/wp/tests/wp_usage/issue-189.i @@ -0,0 +1,19 @@ +/* run.config + OPT: + OPT: -wp-msg-key refusage -wp-model Caveat + OPT: -wp-msg-key refusage -wp-model Caveat -wp-unalias-vars src +*/ + +/* run.config_qualif + DONTRUN: +*/ + +/*@ requires v1: \valid( ptr ); + @ requires v2: \valid_read( src + idx ); + @ requires s1: \separated( ptr, src + idx ); + @ assigns *ptr; + @*/ +void f (char *ptr, char const *src, unsigned idx) { + src += idx; + *ptr = *src; +} diff --git a/tests/non-free/oracle/allocated.err.oracle b/src/plugins/wp/tests/wp_usage/oracle/issue-189-bis.0.err.oracle similarity index 100% rename from tests/non-free/oracle/allocated.err.oracle rename to src/plugins/wp/tests/wp_usage/oracle/issue-189-bis.0.err.oracle diff --git a/src/plugins/wp/tests/wp_usage/oracle/issue-189-bis.0.res.oracle b/src/plugins/wp/tests/wp_usage/oracle/issue-189-bis.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..80a2bd9b43f63cbde0ccd77cfd60e4a8d9f4e65a --- /dev/null +++ b/src/plugins/wp/tests/wp_usage/oracle/issue-189-bis.0.res.oracle @@ -0,0 +1,591 @@ +# frama-c -wp [...] +[kernel] Parsing FRAMAC_SHARE/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/wp_usage/issue-189-bis.i (no preprocessing) +[wp] Running WP plugin... +[wp] Loading driver 'share/wp.driver' +[wp] warning: Missing RTE guards +------------------------------------------------------------ + Function memcpy_alias_vars +------------------------------------------------------------ + +Goal Post-condition 'memcpy' in 'memcpy_alias_vars': +Let a = Mptr_0[shift_PTR(global(P_src_71), 0)]. +Let a_1 = Mptr_0[shift_PTR(global(P_dst_72), 0)]. +Let a_2 = shift_uint8(a_1, 0). +Let a_3 = shift_uint8(a, 0). +Assume { + Type: is_uint32(len_0) /\ is_uint32(len_1). + (* Goal *) + When: (0 <= i) /\ ((2 + i) <= len_0). + (* Heap *) + Have: framed(Mptr_0) /\ linked(Malloc_0). + (* Pre-condition 'write_access' *) + Have: valid_rw(Malloc_0, a_2, len_0). + (* Pre-condition 'read_access' *) + Have: valid_rd(Malloc_0, a_3, len_0). + (* Pre-condition 'unaliasing' *) + Have: separated(a_2, len_0, a_3, len_0). + (* Loop assigns ... *) + Have: havoc(Mint_1, Mint_0, a_2, len_0). + (* Invariant 'cpy' *) + Have: forall i_1 : Z. ((0 <= i_1) -> (((len_1 + i_1) < len_0) -> + (Mint_0[shift_uint8(a, i_1)] = Mint_0[shift_uint8(a_1, i_1)]))). + (* Invariant 'dst' *) + Have: shift_uint8(a_1, len_0) = shift_uint8(v, len_1). + (* Invariant 'src' *) + Have: shift_uint8(a, len_0) = shift_uint8(v_1, len_1). + (* Invariant 'len' *) + Have: len_1 <= len_0. + (* Else *) + Have: len_1 <= 0. +} +Prove: Mint_0[shift_uint8(a_1, i)] = Mint_1[shift_uint8(a, i)]. + +------------------------------------------------------------ + +Goal Post-condition 'unmodified' in 'memcpy_alias_vars': +Let a = Mptr_0[shift_PTR(global(P_src_71), 0)]. +Let a_1 = Mptr_0[shift_PTR(global(P_dst_72), 0)]. +Let a_2 = shift_uint8(a_1, 0). +Let a_3 = shift_uint8(a, 0). +Let a_4 = shift_uint8(a, i). +Assume { + Type: is_uint32(len_0) /\ is_uint32(len_1). + (* Goal *) + When: (0 <= i) /\ ((2 + i) <= len_0). + (* Heap *) + Have: framed(Mptr_0) /\ linked(Malloc_0). + (* Pre-condition 'write_access' *) + Have: valid_rw(Malloc_0, a_2, len_0). + (* Pre-condition 'read_access' *) + Have: valid_rd(Malloc_0, a_3, len_0). + (* Pre-condition 'unaliasing' *) + Have: separated(a_2, len_0, a_3, len_0). + (* Loop assigns ... *) + Have: havoc(Mint_1, Mint_0, a_2, len_0). + (* Invariant 'cpy' *) + Have: forall i_1 : Z. ((0 <= i_1) -> (((len_1 + i_1) < len_0) -> + (Mint_0[shift_uint8(a, i_1)] = Mint_0[shift_uint8(a_1, i_1)]))). + (* Invariant 'dst' *) + Have: shift_uint8(a_1, len_0) = shift_uint8(v, len_1). + (* Invariant 'src' *) + Have: shift_uint8(a, len_0) = shift_uint8(v_1, len_1). + (* Invariant 'len' *) + Have: len_1 <= len_0. + (* Else *) + Have: len_1 <= 0. +} +Prove: Mint_0[a_4] = Mint_1[a_4]. + +------------------------------------------------------------ + +Goal Preservation of Invariant 'cpy' (file tests/wp_usage/issue-189-bis.i, line 27): +Let a = Mptr_0[shift_PTR(global(P_src_71), 0)]. +Let a_1 = Mptr_0[shift_PTR(global(P_dst_72), 0)]. +Let a_2 = shift_uint8(a_1, 0). +Let a_3 = shift_uint8(a, 0). +Let m = Mint_0[v <- Mint_0[v_1]]. +Assume { + Type: is_uint32(len_0) /\ is_uint32(len_1) /\ is_uint32(len_1 - 1). + (* Goal *) + When: (0 <= i) /\ ((i + len_1) <= len_0). + (* Heap *) + Have: framed(Mptr_0) /\ linked(Malloc_0). + (* Pre-condition 'write_access' *) + Have: valid_rw(Malloc_0, a_2, len_0). + (* Pre-condition 'read_access' *) + Have: valid_rd(Malloc_0, a_3, len_0). + (* Pre-condition 'unaliasing' *) + Have: separated(a_2, len_0, a_3, len_0). + (* Loop assigns ... *) + Have: havoc(Mint_1, Mint_0, a_2, len_0). + (* Invariant 'cpy' *) + Have: forall i_1 : Z. ((0 <= i_1) -> (((len_1 + i_1) < len_0) -> + (Mint_0[shift_uint8(a, i_1)] = Mint_0[shift_uint8(a_1, i_1)]))). + (* Invariant 'dst' *) + Have: shift_uint8(a_1, len_0) = shift_uint8(v, len_1). + (* Invariant 'src' *) + Have: shift_uint8(a, len_0) = shift_uint8(v_1, len_1). + (* Invariant 'len' *) + Have: len_1 <= len_0. + (* Then *) + Have: 0 < len_1. +} +Prove: m[shift_uint8(a, i)] = m[shift_uint8(a_1, i)]. + +------------------------------------------------------------ + +Goal Establishment of Invariant 'cpy' (file tests/wp_usage/issue-189-bis.i, line 27): +Prove: true. + +------------------------------------------------------------ + +Goal Preservation of Invariant 'dst' (file tests/wp_usage/issue-189-bis.i, line 25): +Prove: true. + +------------------------------------------------------------ + +Goal Establishment of Invariant 'dst' (file tests/wp_usage/issue-189-bis.i, line 25): +Prove: true. + +------------------------------------------------------------ + +Goal Preservation of Invariant 'len' (file tests/wp_usage/issue-189-bis.i, line 23): +Let a = Mptr_0[shift_PTR(global(P_src_71), 0)]. +Let a_1 = Mptr_0[shift_PTR(global(P_dst_72), 0)]. +Let a_2 = shift_uint8(a_1, 0). +Let a_3 = shift_uint8(a, 0). +Assume { + Type: is_uint32(len_1) /\ is_uint32(len_0) /\ is_uint32(len_0 - 1). + (* Heap *) + Have: framed(Mptr_0) /\ linked(Malloc_0). + (* Pre-condition 'write_access' *) + Have: valid_rw(Malloc_0, a_2, len_1). + (* Pre-condition 'read_access' *) + Have: valid_rd(Malloc_0, a_3, len_1). + (* Pre-condition 'unaliasing' *) + Have: separated(a_2, len_1, a_3, len_1). + (* Loop assigns ... *) + Have: havoc(Mint_0, Mint_1, a_2, len_1). + (* Invariant 'cpy' *) + Have: forall i : Z. ((0 <= i) -> (((len_0 + i) < len_1) -> + (Mint_1[shift_uint8(a, i)] = Mint_1[shift_uint8(a_1, i)]))). + (* Invariant 'dst' *) + Have: shift_uint8(a_1, len_1) = shift_uint8(v, len_0). + (* Invariant 'src' *) + Have: shift_uint8(a, len_1) = shift_uint8(v_1, len_0). + (* Invariant 'len' *) + Have: len_0 <= len_1. + (* Then *) + Have: 0 < len_0. +} +Prove: len_0 <= (1 + len_1). + +------------------------------------------------------------ + +Goal Establishment of Invariant 'len' (file tests/wp_usage/issue-189-bis.i, line 23): +Prove: true. + +------------------------------------------------------------ + +Goal Preservation of Invariant 'src' (file tests/wp_usage/issue-189-bis.i, line 24): +Prove: true. + +------------------------------------------------------------ + +Goal Establishment of Invariant 'src' (file tests/wp_usage/issue-189-bis.i, line 24): +Prove: true. + +------------------------------------------------------------ + +Goal Loop assigns (file tests/wp_usage/issue-189-bis.i, line 26) (1/5): +Prove: true. + +------------------------------------------------------------ + +Goal Loop assigns (file tests/wp_usage/issue-189-bis.i, line 26) (2/5): +Effect at line 31 +Let a = shift_PTR(global(P_src_71), 0). +Let a_1 = Mptr_0[a]. +Let a_2 = shift_PTR(global(P_dst_72), 0). +Let a_3 = Mptr_0[a_2]. +Let a_4 = shift_uint8(a_3, 0). +Let a_5 = shift_uint8(a_1, 0). +Assume { + Type: is_uint32(len_0) /\ is_uint32(len_1). + (* Goal *) + When: valid_rd(Malloc_0[P_src_71 <- 1][P_dst_72 <- 1], a_4, len_0). + (* Heap *) + Have: framed(Mptr_0) /\ linked(Malloc_0). + (* Pre-condition 'write_access' *) + Have: valid_rw(Malloc_0, a_4, len_0). + (* Pre-condition 'read_access' *) + Have: valid_rd(Malloc_0, a_5, len_0). + (* Pre-condition 'unaliasing' *) + Have: separated(a_4, len_0, a_5, len_0). + (* Loop assigns ... *) + Have: havoc(Mint_0, Mint_1, a_4, len_0). + (* Invariant 'cpy' *) + Have: forall i : Z. ((0 <= i) -> (((len_1 + i) < len_0) -> + (Mint_1[shift_uint8(a_1, i)] = Mint_1[shift_uint8(a_3, i)]))). + (* Invariant 'dst' *) + Have: shift_uint8(a_3, len_0) = shift_uint8(v, len_1). + (* Invariant 'src' *) + Have: shift_uint8(a_1, len_0) = shift_uint8(v_1, len_1). + (* Invariant 'len' *) + Have: len_1 <= len_0. + (* Then *) + Have: 0 < len_1. +} +Prove: included(a_4, len_0, a_2, 1) \/ included(a_4, len_0, a, 1) \/ + included(a_4, len_0, a_4, len_0). + +------------------------------------------------------------ + +Goal Loop assigns (file tests/wp_usage/issue-189-bis.i, line 26) (3/5): +Effect at line 32 +Prove: true. + +------------------------------------------------------------ + +Goal Loop assigns (file tests/wp_usage/issue-189-bis.i, line 26) (4/5): +Effect at line 32 +Prove: true. + +------------------------------------------------------------ + +Goal Loop assigns (file tests/wp_usage/issue-189-bis.i, line 26) (5/5): +Effect at line 32 +Let a = shift_PTR(global(P_src_71), 0). +Let a_1 = Mptr_0[a]. +Let a_2 = shift_PTR(global(P_dst_72), 0). +Let a_3 = Mptr_0[a_2]. +Let a_4 = shift_uint8(a_3, 0). +Let a_5 = shift_uint8(a_1, 0). +Assume { + Type: is_uint32(len_0) /\ is_uint32(len_1). + (* Goal *) + When: valid_rd(Malloc_0[P_src_71 <- 1][P_dst_72 <- 1], v, 1). + (* Heap *) + Have: framed(Mptr_0) /\ linked(Malloc_0). + (* Pre-condition 'write_access' *) + Have: valid_rw(Malloc_0, a_4, len_0). + (* Pre-condition 'read_access' *) + Have: valid_rd(Malloc_0, a_5, len_0). + (* Pre-condition 'unaliasing' *) + Have: separated(a_4, len_0, a_5, len_0). + (* Loop assigns ... *) + Have: havoc(Mint_0, Mint_1, a_4, len_0). + (* Invariant 'cpy' *) + Have: forall i : Z. ((0 <= i) -> (((len_1 + i) < len_0) -> + (Mint_1[shift_uint8(a_1, i)] = Mint_1[shift_uint8(a_3, i)]))). + (* Invariant 'dst' *) + Have: shift_uint8(a_3, len_0) = shift_uint8(v, len_1). + (* Invariant 'src' *) + Have: shift_uint8(a_1, len_0) = shift_uint8(v_1, len_1). + (* Invariant 'len' *) + Have: len_1 <= len_0. + (* Then *) + Have: 0 < len_1. +} +Prove: (a_2 = v) \/ (a = v) \/ included(v, 1, a_4, len_0). + +------------------------------------------------------------ + +Goal Assigns (file tests/wp_usage/issue-189-bis.i, line 18) in 'memcpy_alias_vars': +Effect at line 31 +Let a = shift_uint8(Mptr_0[shift_PTR(global(P_dst_72), 0)], 0). +Let a_1 = shift_uint8(Mptr_0[shift_PTR(global(P_src_71), 0)], 0). +Assume { + Have: valid_rd(Malloc_0, a, len_0). + Type: is_uint32(len_0). + (* Heap *) + Have: framed(Mptr_0) /\ linked(Malloc_0). + (* Pre-condition 'write_access' *) + Have: valid_rw(Malloc_0, a, len_0). + (* Pre-condition 'read_access' *) + Have: valid_rd(Malloc_0, a_1, len_0). + (* Pre-condition 'unaliasing' *) + Have: separated(a, len_0, a_1, len_0). + (* Loop assigns ... *) + Have: havoc(Mint_0, Mint_1, a, len_0). +} +Prove: included(a, len_0, a, len_0). + +------------------------------------------------------------ +------------------------------------------------------------ + Function memcpy_context_vars +------------------------------------------------------------ + +Goal Post-condition 'memcpy,ok' in 'memcpy_context_vars': +Let a = Mptr_0[shift_PTR(global(P_src_89), 0)]. +Let a_1 = Mptr_0[shift_PTR(global(P_dst_90), 0)]. +Let a_2 = shift_uint8(a_1, 0). +Let a_3 = shift_uint8(a, 0). +Assume { + Type: is_uint32(len_0) /\ is_uint32(len_1). + (* Goal *) + When: (0 <= i) /\ ((2 + i) <= len_0). + (* Heap *) + Have: framed(Mptr_0) /\ linked(Malloc_0). + (* Pre-condition 'write_access' *) + Have: valid_rw(Malloc_0, a_2, len_0). + (* Pre-condition 'read_access' *) + Have: valid_rd(Malloc_0, a_3, len_0). + (* Pre-condition 'unaliasing' *) + Have: separated(a_2, len_0, a_3, len_0). + (* Loop assigns ... *) + Have: havoc(Mint_1, Mint_0, a_2, len_0). + (* Invariant 'ok,cpy' *) + Have: forall i_1 : Z. ((0 <= i_1) -> (((len_1 + i_1) < len_0) -> + (Mint_0[shift_uint8(a, i_1)] = Mint_0[shift_uint8(a_1, i_1)]))). + (* Invariant 'ok,dst' *) + Have: shift_uint8(a_1, len_0) = shift_uint8(dst2_0, len_1). + (* Invariant 'ok,src' *) + Have: shift_uint8(a, len_0) = shift_uint8(src2_0, len_1). + (* Invariant 'ok,len' *) + Have: len_1 <= len_0. + (* Else *) + Have: len_1 <= 0. +} +Prove: Mint_0[shift_uint8(a_1, i)] = Mint_1[shift_uint8(a, i)]. + +------------------------------------------------------------ + +Goal Post-condition 'unmodified,ok' in 'memcpy_context_vars': +Let a = Mptr_0[shift_PTR(global(P_src_89), 0)]. +Let a_1 = Mptr_0[shift_PTR(global(P_dst_90), 0)]. +Let a_2 = shift_uint8(a_1, 0). +Let a_3 = shift_uint8(a, 0). +Let a_4 = shift_uint8(a, i). +Assume { + Type: is_uint32(len_0) /\ is_uint32(len_1). + (* Goal *) + When: (0 <= i) /\ ((2 + i) <= len_0). + (* Heap *) + Have: framed(Mptr_0) /\ linked(Malloc_0). + (* Pre-condition 'write_access' *) + Have: valid_rw(Malloc_0, a_2, len_0). + (* Pre-condition 'read_access' *) + Have: valid_rd(Malloc_0, a_3, len_0). + (* Pre-condition 'unaliasing' *) + Have: separated(a_2, len_0, a_3, len_0). + (* Loop assigns ... *) + Have: havoc(Mint_1, Mint_0, a_2, len_0). + (* Invariant 'ok,cpy' *) + Have: forall i_1 : Z. ((0 <= i_1) -> (((len_1 + i_1) < len_0) -> + (Mint_0[shift_uint8(a, i_1)] = Mint_0[shift_uint8(a_1, i_1)]))). + (* Invariant 'ok,dst' *) + Have: shift_uint8(a_1, len_0) = shift_uint8(dst2_0, len_1). + (* Invariant 'ok,src' *) + Have: shift_uint8(a, len_0) = shift_uint8(src2_0, len_1). + (* Invariant 'ok,len' *) + Have: len_1 <= len_0. + (* Else *) + Have: len_1 <= 0. +} +Prove: Mint_0[a_4] = Mint_1[a_4]. + +------------------------------------------------------------ + +Goal Preservation of Invariant 'ok,cpy' (file tests/wp_usage/issue-189-bis.i, line 55): +Let a = Mptr_0[shift_PTR(global(P_src_89), 0)]. +Let a_1 = Mptr_0[shift_PTR(global(P_dst_90), 0)]. +Let a_2 = shift_uint8(a_1, 0). +Let a_3 = shift_uint8(a, 0). +Let m = Mint_0[dst2_0 <- Mint_0[src2_0]]. +Assume { + Type: is_uint32(len_0) /\ is_uint32(len_1) /\ is_uint32(len_1 - 1). + (* Goal *) + When: (0 <= i) /\ ((i + len_1) <= len_0). + (* Heap *) + Have: framed(Mptr_0) /\ linked(Malloc_0). + (* Pre-condition 'write_access' *) + Have: valid_rw(Malloc_0, a_2, len_0). + (* Pre-condition 'read_access' *) + Have: valid_rd(Malloc_0, a_3, len_0). + (* Pre-condition 'unaliasing' *) + Have: separated(a_2, len_0, a_3, len_0). + (* Loop assigns ... *) + Have: havoc(Mint_1, Mint_0, a_2, len_0). + (* Invariant 'ok,cpy' *) + Have: forall i_1 : Z. ((0 <= i_1) -> (((len_1 + i_1) < len_0) -> + (Mint_0[shift_uint8(a, i_1)] = Mint_0[shift_uint8(a_1, i_1)]))). + (* Invariant 'ok,dst' *) + Have: shift_uint8(a_1, len_0) = shift_uint8(dst2_0, len_1). + (* Invariant 'ok,src' *) + Have: shift_uint8(a, len_0) = shift_uint8(src2_0, len_1). + (* Invariant 'ok,len' *) + Have: len_1 <= len_0. + (* Then *) + Have: 0 < len_1. +} +Prove: m[shift_uint8(a, i)] = m[shift_uint8(a_1, i)]. + +------------------------------------------------------------ + +Goal Establishment of Invariant 'ok,cpy' (file tests/wp_usage/issue-189-bis.i, line 55): +Prove: true. + +------------------------------------------------------------ + +Goal Preservation of Invariant 'ok,dst' (file tests/wp_usage/issue-189-bis.i, line 53): +Prove: true. + +------------------------------------------------------------ + +Goal Establishment of Invariant 'ok,dst' (file tests/wp_usage/issue-189-bis.i, line 53): +Prove: true. + +------------------------------------------------------------ + +Goal Preservation of Invariant 'ok,len' (file tests/wp_usage/issue-189-bis.i, line 51): +Let a = Mptr_0[shift_PTR(global(P_src_89), 0)]. +Let a_1 = Mptr_0[shift_PTR(global(P_dst_90), 0)]. +Let a_2 = shift_uint8(a_1, 0). +Let a_3 = shift_uint8(a, 0). +Assume { + Type: is_uint32(len_1) /\ is_uint32(len_0) /\ is_uint32(len_0 - 1). + (* Heap *) + Have: framed(Mptr_0) /\ linked(Malloc_0). + (* Pre-condition 'write_access' *) + Have: valid_rw(Malloc_0, a_2, len_1). + (* Pre-condition 'read_access' *) + Have: valid_rd(Malloc_0, a_3, len_1). + (* Pre-condition 'unaliasing' *) + Have: separated(a_2, len_1, a_3, len_1). + (* Loop assigns ... *) + Have: havoc(Mint_0, Mint_1, a_2, len_1). + (* Invariant 'ok,cpy' *) + Have: forall i : Z. ((0 <= i) -> (((len_0 + i) < len_1) -> + (Mint_1[shift_uint8(a, i)] = Mint_1[shift_uint8(a_1, i)]))). + (* Invariant 'ok,dst' *) + Have: shift_uint8(a_1, len_1) = shift_uint8(dst2_0, len_0). + (* Invariant 'ok,src' *) + Have: shift_uint8(a, len_1) = shift_uint8(src2_0, len_0). + (* Invariant 'ok,len' *) + Have: len_0 <= len_1. + (* Then *) + Have: 0 < len_0. +} +Prove: len_0 <= (1 + len_1). + +------------------------------------------------------------ + +Goal Establishment of Invariant 'ok,len' (file tests/wp_usage/issue-189-bis.i, line 51): +Prove: true. + +------------------------------------------------------------ + +Goal Preservation of Invariant 'ok,src' (file tests/wp_usage/issue-189-bis.i, line 52): +Prove: true. + +------------------------------------------------------------ + +Goal Establishment of Invariant 'ok,src' (file tests/wp_usage/issue-189-bis.i, line 52): +Prove: true. + +------------------------------------------------------------ + +Goal Loop assigns (file tests/wp_usage/issue-189-bis.i, line 54) (1/5): +Prove: true. + +------------------------------------------------------------ + +Goal Loop assigns (file tests/wp_usage/issue-189-bis.i, line 54) (2/5): +Effect at line 59 +Let a = Mptr_0[shift_PTR(global(P_src_89), 0)]. +Let a_1 = Mptr_0[shift_PTR(global(P_dst_90), 0)]. +Let a_2 = shift_uint8(a_1, 0). +Let a_3 = shift_uint8(a, 0). +Assume { + Type: is_uint32(len_0) /\ is_uint32(len_1). + (* Goal *) + When: valid_rd(Malloc_0[P_src_89 <- 1][P_dst_90 <- 1], a_2, len_0). + (* Heap *) + Have: framed(Mptr_0) /\ linked(Malloc_0). + (* Pre-condition 'write_access' *) + Have: valid_rw(Malloc_0, a_2, len_0). + (* Pre-condition 'read_access' *) + Have: valid_rd(Malloc_0, a_3, len_0). + (* Pre-condition 'unaliasing' *) + Have: separated(a_2, len_0, a_3, len_0). + (* Loop assigns ... *) + Have: havoc(Mint_0, Mint_1, a_2, len_0). + (* Invariant 'ok,cpy' *) + Have: forall i : Z. ((0 <= i) -> (((len_1 + i) < len_0) -> + (Mint_1[shift_uint8(a, i)] = Mint_1[shift_uint8(a_1, i)]))). + (* Invariant 'ok,dst' *) + Have: shift_uint8(a_1, len_0) = shift_uint8(dst2_0, len_1). + (* Invariant 'ok,src' *) + Have: shift_uint8(a, len_0) = shift_uint8(src2_0, len_1). + (* Invariant 'ok,len' *) + Have: len_1 <= len_0. + (* Then *) + Have: 0 < len_1. +} +Prove: included(a_2, len_0, a_2, len_0). + +------------------------------------------------------------ + +Goal Loop assigns (file tests/wp_usage/issue-189-bis.i, line 54) (3/5): +Effect at line 60 +Prove: true. + +------------------------------------------------------------ + +Goal Loop assigns (file tests/wp_usage/issue-189-bis.i, line 54) (4/5): +Effect at line 60 +Prove: true. + +------------------------------------------------------------ + +Goal Loop assigns (file tests/wp_usage/issue-189-bis.i, line 54) (5/5): +Effect at line 60 +Let a = Mptr_0[shift_PTR(global(P_src_89), 0)]. +Let a_1 = Mptr_0[shift_PTR(global(P_dst_90), 0)]. +Let a_2 = shift_uint8(a_1, 0). +Let a_3 = shift_uint8(a, 0). +Assume { + Type: is_uint32(len_0) /\ is_uint32(len_1). + (* Goal *) + When: valid_rd(Malloc_0[P_src_89 <- 1][P_dst_90 <- 1], tmp_0, 1). + (* Heap *) + Have: framed(Mptr_0) /\ linked(Malloc_0). + (* Pre-condition 'write_access' *) + Have: valid_rw(Malloc_0, a_2, len_0). + (* Pre-condition 'read_access' *) + Have: valid_rd(Malloc_0, a_3, len_0). + (* Pre-condition 'unaliasing' *) + Have: separated(a_2, len_0, a_3, len_0). + (* Loop assigns ... *) + Have: havoc(Mint_0, Mint_1, a_2, len_0). + (* Invariant 'ok,cpy' *) + Have: forall i : Z. ((0 <= i) -> (((len_1 + i) < len_0) -> + (Mint_1[shift_uint8(a, i)] = Mint_1[shift_uint8(a_1, i)]))). + (* Invariant 'ok,dst' *) + Have: shift_uint8(a_1, len_0) = shift_uint8(tmp_0, len_1). + (* Invariant 'ok,src' *) + Have: shift_uint8(a, len_0) = shift_uint8(src2_0, len_1). + (* Invariant 'ok,len' *) + Have: len_1 <= len_0. + (* Then *) + Have: 0 < len_1. +} +Prove: included(tmp_0, 1, a_2, len_0). + +------------------------------------------------------------ + +Goal Assigns (file tests/wp_usage/issue-189-bis.i, line 44) in 'memcpy_context_vars' (1/3): +Effect at line 49 +Prove: true. + +------------------------------------------------------------ + +Goal Assigns (file tests/wp_usage/issue-189-bis.i, line 44) in 'memcpy_context_vars' (2/3): +Effect at line 49 +Prove: true. + +------------------------------------------------------------ + +Goal Assigns (file tests/wp_usage/issue-189-bis.i, line 44) in 'memcpy_context_vars' (3/3): +Effect at line 59 +Let a = shift_uint8(Mptr_0[shift_PTR(global(P_dst_90), 0)], 0). +Let a_1 = shift_uint8(Mptr_0[shift_PTR(global(P_src_89), 0)], 0). +Assume { + Have: valid_rd(Malloc_0, a, len_0). + Type: is_uint32(len_0). + (* Heap *) + Have: framed(Mptr_0) /\ linked(Malloc_0). + (* Pre-condition 'write_access' *) + Have: valid_rw(Malloc_0, a, len_0). + (* Pre-condition 'read_access' *) + Have: valid_rd(Malloc_0, a_1, len_0). + (* Pre-condition 'unaliasing' *) + Have: separated(a, len_0, a_1, len_0). + (* Loop assigns ... *) + Have: havoc(Mint_0, Mint_1, a, len_0). +} +Prove: included(a, len_0, a, len_0). + +------------------------------------------------------------ diff --git a/tests/non-free/oracle/strcmp.err.oracle b/src/plugins/wp/tests/wp_usage/oracle/issue-189-bis.1.err.oracle similarity index 100% rename from tests/non-free/oracle/strcmp.err.oracle rename to src/plugins/wp/tests/wp_usage/oracle/issue-189-bis.1.err.oracle diff --git a/src/plugins/wp/tests/wp_usage/oracle/issue-189-bis.1.res.oracle b/src/plugins/wp/tests/wp_usage/oracle/issue-189-bis.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..bbdce8b3f4f45da6a13c1aaff5e72d3610e77a1a --- /dev/null +++ b/src/plugins/wp/tests/wp_usage/oracle/issue-189-bis.1.res.oracle @@ -0,0 +1,274 @@ +# frama-c -wp [...] +[kernel] Parsing FRAMAC_SHARE/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/wp_usage/issue-189-bis.i (no preprocessing) +[wp] Running WP plugin... +[wp] Loading driver 'share/wp.driver' +[wp] warning: Missing RTE guards + +Goal Post-condition 'memcpy,ok' in 'memcpy_context_vars': +Let a = global(G_src_89). +Let a_1 = global(G_dst_90). +Assume { + Type: is_uint32(len_0) /\ is_uint32(len_1). + (* Goal *) + When: (0 <= i) /\ ((2 + i) <= len_0). + (* Heap *) + Have: linked(Malloc_0). + (* Pre-condition 'write_access' *) + Have: ((0 < len_0) -> (len_0 <= 1)). + (* Pre-condition 'read_access' *) + Have: ((0 < len_0) -> (len_0 <= 1)). + (* Loop assigns ... *) + Have: havoc(Mint_1, Mint_0, shift_uint8(a_1, 0), len_0). + (* Invariant 'ok,cpy' *) + Have: forall i_1 : Z. ((0 <= i_1) -> (((len_1 + i_1) < len_0) -> + (Mint_0[shift_uint8(a, i_1)] = Mint_0[shift_uint8(a_1, i_1)]))). + (* Invariant 'ok,dst' *) + Have: shift_uint8(a_1, len_0) = shift_uint8(dst2_0, len_1). + (* Invariant 'ok,src' *) + Have: shift_uint8(a, len_0) = shift_uint8(src2_0, len_1). + (* Invariant 'ok,len' *) + Have: len_1 <= len_0. + (* Else *) + Have: len_1 <= 0. +} +Prove: Mint_0[shift_uint8(a_1, i)] = Mint_1[shift_uint8(a, i)]. + +------------------------------------------------------------ + +Goal Post-condition 'unmodified,ok' in 'memcpy_context_vars': +Let a = global(G_src_89). +Let a_1 = global(G_dst_90). +Let a_2 = shift_uint8(a, i). +Assume { + Type: is_uint32(len_0) /\ is_uint32(len_1). + (* Goal *) + When: (0 <= i) /\ ((2 + i) <= len_0). + (* Heap *) + Have: linked(Malloc_0). + (* Pre-condition 'write_access' *) + Have: ((0 < len_0) -> (len_0 <= 1)). + (* Pre-condition 'read_access' *) + Have: ((0 < len_0) -> (len_0 <= 1)). + (* Loop assigns ... *) + Have: havoc(Mint_1, Mint_0, shift_uint8(a_1, 0), len_0). + (* Invariant 'ok,cpy' *) + Have: forall i_1 : Z. ((0 <= i_1) -> (((len_1 + i_1) < len_0) -> + (Mint_0[shift_uint8(a, i_1)] = Mint_0[shift_uint8(a_1, i_1)]))). + (* Invariant 'ok,dst' *) + Have: shift_uint8(a_1, len_0) = shift_uint8(dst2_0, len_1). + (* Invariant 'ok,src' *) + Have: shift_uint8(a, len_0) = shift_uint8(src2_0, len_1). + (* Invariant 'ok,len' *) + Have: len_1 <= len_0. + (* Else *) + Have: len_1 <= 0. +} +Prove: Mint_0[a_2] = Mint_1[a_2]. + +------------------------------------------------------------ + +Goal Preservation of Invariant 'ok,cpy' (file tests/wp_usage/issue-189-bis.i, line 55): +Let a = global(G_src_89). +Let a_1 = global(G_dst_90). +Let m = Mint_0[dst2_0 <- Mint_0[src2_0]]. +Assume { + Type: is_uint32(len_0) /\ is_uint32(len_1) /\ is_uint32(len_1 - 1). + (* Goal *) + When: (0 <= i) /\ ((i + len_1) <= len_0). + (* Heap *) + Have: linked(Malloc_0). + (* Pre-condition 'write_access' *) + Have: ((0 < len_0) -> (len_0 <= 1)). + (* Pre-condition 'read_access' *) + Have: ((0 < len_0) -> (len_0 <= 1)). + (* Loop assigns ... *) + Have: havoc(Mint_1, Mint_0, shift_uint8(a_1, 0), len_0). + (* Invariant 'ok,cpy' *) + Have: forall i_1 : Z. ((0 <= i_1) -> (((len_1 + i_1) < len_0) -> + (Mint_0[shift_uint8(a, i_1)] = Mint_0[shift_uint8(a_1, i_1)]))). + (* Invariant 'ok,dst' *) + Have: shift_uint8(a_1, len_0) = shift_uint8(dst2_0, len_1). + (* Invariant 'ok,src' *) + Have: shift_uint8(a, len_0) = shift_uint8(src2_0, len_1). + (* Invariant 'ok,len' *) + Have: len_1 <= len_0. + (* Then *) + Have: 0 < len_1. +} +Prove: m[shift_uint8(a, i)] = m[shift_uint8(a_1, i)]. + +------------------------------------------------------------ + +Goal Establishment of Invariant 'ok,cpy' (file tests/wp_usage/issue-189-bis.i, line 55): +Prove: true. + +------------------------------------------------------------ + +Goal Preservation of Invariant 'ok,dst' (file tests/wp_usage/issue-189-bis.i, line 53): +Prove: true. + +------------------------------------------------------------ + +Goal Establishment of Invariant 'ok,dst' (file tests/wp_usage/issue-189-bis.i, line 53): +Prove: true. + +------------------------------------------------------------ + +Goal Preservation of Invariant 'ok,len' (file tests/wp_usage/issue-189-bis.i, line 51): +Let a = global(G_src_89). +Let a_1 = global(G_dst_90). +Assume { + Type: is_uint32(len_1) /\ is_uint32(len_0) /\ is_uint32(len_0 - 1). + (* Heap *) + Have: linked(Malloc_0). + (* Pre-condition 'write_access' *) + Have: ((0 < len_1) -> (len_1 <= 1)). + (* Pre-condition 'read_access' *) + Have: ((0 < len_1) -> (len_1 <= 1)). + (* Loop assigns ... *) + Have: havoc(Mint_0, Mint_1, shift_uint8(a_1, 0), len_1). + (* Invariant 'ok,cpy' *) + Have: forall i : Z. ((0 <= i) -> (((len_0 + i) < len_1) -> + (Mint_1[shift_uint8(a, i)] = Mint_1[shift_uint8(a_1, i)]))). + (* Invariant 'ok,dst' *) + Have: shift_uint8(a_1, len_1) = shift_uint8(dst2_0, len_0). + (* Invariant 'ok,src' *) + Have: shift_uint8(a, len_1) = shift_uint8(src2_0, len_0). + (* Invariant 'ok,len' *) + Have: len_0 <= len_1. + (* Then *) + Have: 0 < len_0. +} +Prove: len_0 <= (1 + len_1). + +------------------------------------------------------------ + +Goal Establishment of Invariant 'ok,len' (file tests/wp_usage/issue-189-bis.i, line 51): +Prove: true. + +------------------------------------------------------------ + +Goal Preservation of Invariant 'ok,src' (file tests/wp_usage/issue-189-bis.i, line 52): +Prove: true. + +------------------------------------------------------------ + +Goal Establishment of Invariant 'ok,src' (file tests/wp_usage/issue-189-bis.i, line 52): +Prove: true. + +------------------------------------------------------------ + +Goal Loop assigns (file tests/wp_usage/issue-189-bis.i, line 54) (1/5): +Prove: true. + +------------------------------------------------------------ + +Goal Loop assigns (file tests/wp_usage/issue-189-bis.i, line 54) (2/5): +Effect at line 59 +Let a = global(G_src_89). +Let a_1 = global(G_dst_90). +Let a_2 = shift_uint8(a_1, 0). +Assume { + Type: is_uint32(len_0) /\ is_uint32(len_1). + (* Goal *) + When: valid_rd(Malloc_0, a_2, len_0). + (* Heap *) + Have: linked(Malloc_0). + (* Pre-condition 'write_access' *) + Have: ((0 < len_0) -> (len_0 <= 1)). + (* Pre-condition 'read_access' *) + Have: ((0 < len_0) -> (len_0 <= 1)). + (* Loop assigns ... *) + Have: havoc(Mint_0, Mint_1, a_2, len_0). + (* Invariant 'ok,cpy' *) + Have: forall i : Z. ((0 <= i) -> (((len_1 + i) < len_0) -> + (Mint_1[shift_uint8(a, i)] = Mint_1[shift_uint8(a_1, i)]))). + (* Invariant 'ok,dst' *) + Have: shift_uint8(a_1, len_0) = shift_uint8(dst2_0, len_1). + (* Invariant 'ok,src' *) + Have: shift_uint8(a, len_0) = shift_uint8(src2_0, len_1). + (* Invariant 'ok,len' *) + Have: len_1 <= len_0. + (* Then *) + Have: 0 < len_1. +} +Prove: included(a_2, len_0, a_2, len_0). + +------------------------------------------------------------ + +Goal Loop assigns (file tests/wp_usage/issue-189-bis.i, line 54) (3/5): +Effect at line 60 +Prove: true. + +------------------------------------------------------------ + +Goal Loop assigns (file tests/wp_usage/issue-189-bis.i, line 54) (4/5): +Effect at line 60 +Prove: true. + +------------------------------------------------------------ + +Goal Loop assigns (file tests/wp_usage/issue-189-bis.i, line 54) (5/5): +Effect at line 60 +Let a = global(G_src_89). +Let a_1 = global(G_dst_90). +Let a_2 = shift_uint8(a_1, 0). +Assume { + Type: is_uint32(len_0) /\ is_uint32(len_1). + (* Goal *) + When: valid_rd(Malloc_0, tmp_0, 1). + (* Heap *) + Have: linked(Malloc_0). + (* Pre-condition 'write_access' *) + Have: ((0 < len_0) -> (len_0 <= 1)). + (* Pre-condition 'read_access' *) + Have: ((0 < len_0) -> (len_0 <= 1)). + (* Loop assigns ... *) + Have: havoc(Mint_0, Mint_1, a_2, len_0). + (* Invariant 'ok,cpy' *) + Have: forall i : Z. ((0 <= i) -> (((len_1 + i) < len_0) -> + (Mint_1[shift_uint8(a, i)] = Mint_1[shift_uint8(a_1, i)]))). + (* Invariant 'ok,dst' *) + Have: shift_uint8(a_1, len_0) = shift_uint8(tmp_0, len_1). + (* Invariant 'ok,src' *) + Have: shift_uint8(a, len_0) = shift_uint8(src2_0, len_1). + (* Invariant 'ok,len' *) + Have: len_1 <= len_0. + (* Then *) + Have: 0 < len_1. +} +Prove: included(tmp_0, 1, a_2, len_0). + +------------------------------------------------------------ + +Goal Assigns (file tests/wp_usage/issue-189-bis.i, line 44) in 'memcpy_context_vars' (1/3): +Effect at line 49 +Prove: true. + +------------------------------------------------------------ + +Goal Assigns (file tests/wp_usage/issue-189-bis.i, line 44) in 'memcpy_context_vars' (2/3): +Effect at line 49 +Prove: true. + +------------------------------------------------------------ + +Goal Assigns (file tests/wp_usage/issue-189-bis.i, line 44) in 'memcpy_context_vars' (3/3): +Effect at line 59 +Let a = shift_uint8(global(G_dst_90), 0). +Assume { + Have: valid_rd(Malloc_0, a, len_0). + Type: is_uint32(len_0). + (* Heap *) + Have: linked(Malloc_0). + (* Pre-condition 'write_access' *) + Have: ((0 < len_0) -> (len_0 <= 1)). + (* Pre-condition 'read_access' *) + Have: ((0 < len_0) -> (len_0 <= 1)). + (* Loop assigns ... *) + Have: havoc(Mint_0, Mint_1, a, len_0). +} +Prove: included(a, len_0, a, len_0). + +------------------------------------------------------------ diff --git a/tests/slicing2/oracle/adpcm.err.oracle b/src/plugins/wp/tests/wp_usage/oracle/issue-189.0.err.oracle similarity index 100% rename from tests/slicing2/oracle/adpcm.err.oracle rename to src/plugins/wp/tests/wp_usage/oracle/issue-189.0.err.oracle diff --git a/src/plugins/wp/tests/wp_usage/oracle/issue-189.0.res.oracle b/src/plugins/wp/tests/wp_usage/oracle/issue-189.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..f9515467e72216a904ad3b179a8bc4b8a94dd6fd --- /dev/null +++ b/src/plugins/wp/tests/wp_usage/oracle/issue-189.0.res.oracle @@ -0,0 +1,21 @@ +# frama-c -wp [...] +[kernel] Parsing FRAMAC_SHARE/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/wp_usage/issue-189.i (no preprocessing) +[wp] Running WP plugin... +[wp] Loading driver 'share/wp.driver' +[wp] warning: Missing RTE guards +------------------------------------------------------------ + Function f +------------------------------------------------------------ + +Goal Assigns (file tests/wp_usage/issue-189.i, line 14) in 'f' (1/2): +Effect at line 17 +Prove: true. + +------------------------------------------------------------ + +Goal Assigns (file tests/wp_usage/issue-189.i, line 14) in 'f' (2/2): +Effect at line 18 +Prove: true. + +------------------------------------------------------------ diff --git a/tests/value/oracle/fun_ptr.err.oracle b/src/plugins/wp/tests/wp_usage/oracle/issue-189.1.err.oracle similarity index 100% rename from tests/value/oracle/fun_ptr.err.oracle rename to src/plugins/wp/tests/wp_usage/oracle/issue-189.1.err.oracle diff --git a/src/plugins/wp/tests/wp_usage/oracle/issue-189.1.res.oracle b/src/plugins/wp/tests/wp_usage/oracle/issue-189.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..b1e0e7050488c0b094ef81a8a3df4204b9e467cd --- /dev/null +++ b/src/plugins/wp/tests/wp_usage/oracle/issue-189.1.res.oracle @@ -0,0 +1,22 @@ +# frama-c -wp -wp-model 'Typed (Caveat)' [...] +[kernel] Parsing FRAMAC_SHARE/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/wp_usage/issue-189.i (no preprocessing) +[wp] Running WP plugin... +................................................. +... Ref Usage +................................................. +... Initial state + Nothing +............ +... Function f + *ptr + src + idx +................................................. +[wp] Loading driver 'share/wp.driver' +[wp] warning: Missing RTE guards +tests/wp_usage/issue-189.i:17:[wp] warning: forbidden write to variable 'src' considered in an isolated context. + Use model 'Typed' instead or specify '-wp-unalias-vars src' +tests/wp_usage/issue-189.i:17:[wp] user error: forbidden assigns to variable 'src' considered in an isolated context. + Use model 'Typed' instead or specify '-wp-unalias-vars src' +[kernel] Plug-in wp aborted: invalid user input. diff --git a/tests/value/oracle/paths.err.oracle b/src/plugins/wp/tests/wp_usage/oracle/issue-189.2.err.oracle similarity index 100% rename from tests/value/oracle/paths.err.oracle rename to src/plugins/wp/tests/wp_usage/oracle/issue-189.2.err.oracle diff --git a/src/plugins/wp/tests/wp_usage/oracle/issue-189.2.res.oracle b/src/plugins/wp/tests/wp_usage/oracle/issue-189.2.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..fac23bc5f603ebd4bbe862385702203dc4abab5c --- /dev/null +++ b/src/plugins/wp/tests/wp_usage/oracle/issue-189.2.res.oracle @@ -0,0 +1,31 @@ +# frama-c -wp -wp-model 'Typed (Caveat)' [...] +[kernel] Parsing FRAMAC_SHARE/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/wp_usage/issue-189.i (no preprocessing) +[wp] Running WP plugin... +................................................. +... Ref Usage +................................................. +... Initial state + Nothing +............ +... Function f + *ptr + src + idx +................................................. +[wp] Loading driver 'share/wp.driver' +[wp] warning: Missing RTE guards +------------------------------------------------------------ + Function f +------------------------------------------------------------ + +Goal Assigns (file tests/wp_usage/issue-189.i, line 14) in 'f' (1/2): +Prove: true. + +------------------------------------------------------------ + +Goal Assigns (file tests/wp_usage/issue-189.i, line 14) in 'f' (2/2): +Effect at line 17 +Prove: true. + +------------------------------------------------------------ diff --git a/src/plugins/wp/tests/wp_usage/oracle_qualif/frama_c_exo3_solved.old.res.oracle b/src/plugins/wp/tests/wp_usage/oracle_qualif/frama_c_exo3_solved.old.res.oracle index 75c4e998f1e8435ab6697f560eed547d3d7b8c8b..9a01b845eb209beb391107c6e035fe55d92bb198 100644 --- a/src/plugins/wp/tests/wp_usage/oracle_qualif/frama_c_exo3_solved.old.res.oracle +++ b/src/plugins/wp/tests/wp_usage/oracle_qualif/frama_c_exo3_solved.old.res.oracle @@ -47,5 +47,5 @@ Alt-Ergo: 16 ---------------------------------------------------------- Functions WP Alt-Ergo Total Success -equal_elements 21 16 (419) 37 100% +equal_elements 21 16 (379) 37 100% ---------------------------------------------------------- diff --git a/tests/value/oracle_apron/fun_ptr.err.oracle b/src/plugins/wp/tests/wp_usage/oracle_qualif/issue-189-bis.0.err.oracle similarity index 100% rename from tests/value/oracle_apron/fun_ptr.err.oracle rename to src/plugins/wp/tests/wp_usage/oracle_qualif/issue-189-bis.0.err.oracle diff --git a/src/plugins/wp/tests/wp_usage/oracle_qualif/issue-189-bis.0.res.oracle b/src/plugins/wp/tests/wp_usage/oracle_qualif/issue-189-bis.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..a4745a31fe3c7913b60fac494f918bd2c8f26d41 --- /dev/null +++ b/src/plugins/wp/tests/wp_usage/oracle_qualif/issue-189-bis.0.res.oracle @@ -0,0 +1,49 @@ +# frama-c -wp [...] +[kernel] Parsing FRAMAC_SHARE/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/wp_usage/issue-189-bis.i (no preprocessing) +[wp] Running WP plugin... +[wp] Loading driver 'share/wp.driver' +[wp] warning: Missing RTE guards +[wp] 34 goals scheduled +[wp] [Alt-Ergo] Goal typed_memcpy_alias_vars_post_memcpy : Valid +[wp] [Alt-Ergo] Goal typed_memcpy_alias_vars_post_unmodified : Valid +[wp] [Alt-Ergo] Goal typed_memcpy_alias_vars_loop_inv_cpy_preserved : Valid +[wp] [Qed] Goal typed_memcpy_alias_vars_loop_inv_cpy_established : Valid +[wp] [Qed] Goal typed_memcpy_alias_vars_loop_inv_dst_preserved : Valid +[wp] [Qed] Goal typed_memcpy_alias_vars_loop_inv_dst_established : Valid +[wp] [Alt-Ergo] Goal typed_memcpy_alias_vars_loop_inv_len_preserved : Valid +[wp] [Qed] Goal typed_memcpy_alias_vars_loop_inv_len_established : Valid +[wp] [Qed] Goal typed_memcpy_alias_vars_loop_inv_src_preserved : Valid +[wp] [Qed] Goal typed_memcpy_alias_vars_loop_inv_src_established : Valid +[wp] [Qed] Goal typed_memcpy_alias_vars_loop_assign_part1 : Valid +[wp] [Alt-Ergo] Goal typed_memcpy_alias_vars_loop_assign_part2 : Valid +[wp] [Qed] Goal typed_memcpy_alias_vars_loop_assign_part3 : Valid +[wp] [Qed] Goal typed_memcpy_alias_vars_loop_assign_part4 : Valid +[wp] [Alt-Ergo] Goal typed_memcpy_alias_vars_loop_assign_part5 : Valid +[wp] [Alt-Ergo] Goal typed_memcpy_alias_vars_assign : Valid +[wp] [Alt-Ergo] Goal typed_memcpy_context_vars_post_memcpy_ok : Valid +[wp] [Alt-Ergo] Goal typed_memcpy_context_vars_post_unmodified_ok : Valid +[wp] [Alt-Ergo] Goal typed_memcpy_context_vars_loop_inv_ok_cpy_preserved : Valid +[wp] [Qed] Goal typed_memcpy_context_vars_loop_inv_ok_cpy_established : Valid +[wp] [Qed] Goal typed_memcpy_context_vars_loop_inv_ok_dst_preserved : Valid +[wp] [Qed] Goal typed_memcpy_context_vars_loop_inv_ok_dst_established : Valid +[wp] [Alt-Ergo] Goal typed_memcpy_context_vars_loop_inv_ok_len_preserved : Valid +[wp] [Qed] Goal typed_memcpy_context_vars_loop_inv_ok_len_established : Valid +[wp] [Qed] Goal typed_memcpy_context_vars_loop_inv_ok_src_preserved : Valid +[wp] [Qed] Goal typed_memcpy_context_vars_loop_inv_ok_src_established : Valid +[wp] [Qed] Goal typed_memcpy_context_vars_loop_assign_part1 : Valid +[wp] [Alt-Ergo] Goal typed_memcpy_context_vars_loop_assign_part2 : Valid +[wp] [Qed] Goal typed_memcpy_context_vars_loop_assign_part3 : Valid +[wp] [Qed] Goal typed_memcpy_context_vars_loop_assign_part4 : Valid +[wp] [Alt-Ergo] Goal typed_memcpy_context_vars_loop_assign_part5 : Valid +[wp] [Qed] Goal typed_memcpy_context_vars_assign_part1 : Valid +[wp] [Qed] Goal typed_memcpy_context_vars_assign_part2 : Valid +[wp] [Alt-Ergo] Goal typed_memcpy_context_vars_assign_part3 : Valid +[wp] Proved goals: 34 / 34 + Qed: 20 + Alt-Ergo: 14 +---------------------------------------------------------- +Functions WP Alt-Ergo Total Success +memcpy_alias_vars 9 7 (1010) 16 100% +memcpy_context_vars 11 7 (1010) 18 100% +---------------------------------------------------------- diff --git a/tests/value/oracle_apron/paths.err.oracle b/src/plugins/wp/tests/wp_usage/oracle_qualif/issue-189-bis.1.err.oracle similarity index 100% rename from tests/value/oracle_apron/paths.err.oracle rename to src/plugins/wp/tests/wp_usage/oracle_qualif/issue-189-bis.1.err.oracle diff --git a/src/plugins/wp/tests/wp_usage/oracle_qualif/issue-189-bis.1.res.oracle b/src/plugins/wp/tests/wp_usage/oracle_qualif/issue-189-bis.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..b2b91bc934167f728d299d5753268304c5b8de4b --- /dev/null +++ b/src/plugins/wp/tests/wp_usage/oracle_qualif/issue-189-bis.1.res.oracle @@ -0,0 +1,24 @@ +# frama-c -wp [...] +[kernel] Parsing FRAMAC_SHARE/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/wp_usage/issue-189-bis.i (no preprocessing) +[wp] Running WP plugin... +[wp] Loading driver 'share/wp.driver' +[wp] warning: Missing RTE guards +[wp] 10 goals scheduled +[wp] [Alt-Ergo] Goal typed_memcpy_context_vars_post_memcpy_ok : Valid +[wp] [Alt-Ergo] Goal typed_memcpy_context_vars_post_unmodified_ok : Valid +[wp] [Alt-Ergo] Goal typed_memcpy_context_vars_loop_inv_ok_cpy_preserved : Valid +[wp] [Qed] Goal typed_memcpy_context_vars_loop_inv_ok_cpy_established : Valid +[wp] [Qed] Goal typed_memcpy_context_vars_loop_inv_ok_dst_preserved : Valid +[wp] [Qed] Goal typed_memcpy_context_vars_loop_inv_ok_dst_established : Valid +[wp] [Alt-Ergo] Goal typed_memcpy_context_vars_loop_inv_ok_len_preserved : Valid +[wp] [Qed] Goal typed_memcpy_context_vars_loop_inv_ok_len_established : Valid +[wp] [Qed] Goal typed_memcpy_context_vars_loop_inv_ok_src_preserved : Valid +[wp] [Qed] Goal typed_memcpy_context_vars_loop_inv_ok_src_established : Valid +[wp] Proved goals: 10 / 10 + Qed: 6 + Alt-Ergo: 4 +---------------------------------------------------------- +Functions WP Alt-Ergo Total Success +memcpy_context_vars 6 4 (54) 10 100% +---------------------------------------------------------- diff --git a/src/plugins/wp/wp_parameters.ml b/src/plugins/wp/wp_parameters.ml index 8e53ea31c80fe954b0fe65a3b06353fe0d5a4468..1054a86ce0817941d3c122ac291bbb63c0a27e0a 100644 --- a/src/plugins/wp/wp_parameters.ml +++ b/src/plugins/wp/wp_parameters.ml @@ -856,6 +856,8 @@ let get_includes () = let cat_print_generated = register_category "print-generated" +let has_print_generated () = has_dkey "print-generated" + let print_generated file = debug ~dkey:cat_print_generated "%a@." diff --git a/src/plugins/wp/wp_parameters.mli b/src/plugins/wp/wp_parameters.mli index 10264a4310b0917ca11e906b663bb4852c194003..5c1cdbab3f75905e9a150731ead89f09c2d46748 100644 --- a/src/plugins/wp/wp_parameters.mli +++ b/src/plugins/wp/wp_parameters.mli @@ -128,6 +128,7 @@ val get_includes: unit -> string list val make_output_dir: string -> unit (** {2 Debugging Categories} *) +val has_print_generated: unit -> bool val print_generated: string -> unit (** print the given file if the debugging category "print-generated" is set *) diff --git a/tests/cil/duplicate-labels.c b/tests/cil/duplicate-labels.c index 91888f38b1616464a5e515799eb606641251c7e3..526e45d32c0f0e9328221d720ffc4367ff41f575 100644 --- a/tests/cil/duplicate-labels.c +++ b/tests/cil/duplicate-labels.c @@ -1,5 +1,5 @@ /* run.config - OPT: -keep-switch -print -check -journal-disable + OPT: -keep-switch -print -journal-disable */ int foo18(int a) { diff --git a/tests/constant_propagation/declaration.c b/tests/constant_propagation/declaration.c index c9368f2b5e87d6f52951533493790f4ef2189ccb..2c2fdcff46b4e2c5f94d0cc6b9e61faf78b17897 100644 --- a/tests/constant_propagation/declaration.c +++ b/tests/constant_propagation/declaration.c @@ -1,5 +1,5 @@ /* run.config - OPT: -val -then -scf -then-on propagated -check -scf + OPT: -val -then -scf -then-on propagated -scf */ void f(int *x, int *y, void (*p)(int *x, int *y)) { diff --git a/tests/constant_propagation/enum.i b/tests/constant_propagation/enum.i index d52874b0c80f9544df7a0340ca5e3d17f7a6c94b..5ac0b9374663a9e890c850d4281df162b1ee8461 100644 --- a/tests/constant_propagation/enum.i +++ b/tests/constant_propagation/enum.i @@ -1,5 +1,5 @@ /* run.config -OPT: -semantic-const-folding -check +OPT: -semantic-const-folding */ enum E { A, B, C, D }; diff --git a/tests/constant_propagation/fct_ptr.i b/tests/constant_propagation/fct_ptr.i index 9043ecb2e945c8f9366a9e549fab2dc003503838..29ff3df6d9970095dca5051e64b7acb01fca55c5 100644 --- a/tests/constant_propagation/fct_ptr.i +++ b/tests/constant_propagation/fct_ptr.i @@ -1,5 +1,5 @@ /* run.config -OPT: -scf -check -then-on propagated -check +OPT: -scf -then-on propagated */ void (*pf)(void); diff --git a/tests/value/oracle_bitwise/fun_ptr.err.oracle b/tests/float/oracle_symblocs/absorb.err.oracle similarity index 100% rename from tests/value/oracle_bitwise/fun_ptr.err.oracle rename to tests/float/oracle_symblocs/absorb.err.oracle diff --git a/tests/float/oracle_symblocs/absorb.res.oracle b/tests/float/oracle_symblocs/absorb.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..bb9d21dcc436348807cc132a21efe7b1bf553f17 --- /dev/null +++ b/tests/float/oracle_symblocs/absorb.res.oracle @@ -0,0 +1,57 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/float/absorb.c (with preprocessing) +tests/float/absorb.c:15:[kernel] warning: Floating-point constant 1e-286 is not represented exactly. Will use 0x1.e74404f3daadbp-951. See documentation for option -warn-decimal-float +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + Frama_C_entropy_source ∈ [--..--] + x ∈ {1.} + y ∈ {0} + z ∈ {0} + t ∈ {0} + min_f ∈ {0} + min_fl ∈ {0} + den ∈ {0} +[value] computing for function Frama_C_interval <- main. + Called from tests/float/absorb.c:13. +[value] using specification for function Frama_C_interval +share/libc/__fc_builtin.h:50:[value] function Frama_C_interval: precondition got status valid. +[value] Done for function Frama_C_interval +tests/float/absorb.c:16:[value] entering loop for the first time +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + Frama_C_entropy_source ∈ [--..--] + x ∈ {1.} + y ∈ {1.} + z ∈ {0} + t ∈ [-3.99999993723e+18 .. 3.99999993723e+18] + min_f ∈ {1.17549435082e-38} + min_fl ∈ {-1.17549435082e-38} + den ∈ {9.1835496158e-41} + b ∈ [-4000000004000000001..4000000004000000001] +[from] Computing for function main +[from] Computing for function Frama_C_interval <-main +[from] Done for function Frama_C_interval +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function Frama_C_interval: + Frama_C_entropy_source FROM Frama_C_entropy_source (and SELF) + \result FROM Frama_C_entropy_source; min; max +[from] Function main: + Frama_C_entropy_source FROM Frama_C_entropy_source (and SELF) + x FROM x; y (and SELF) + y FROM x; y (and SELF) + z FROM y + t FROM Frama_C_entropy_source + min_f FROM \nothing + min_fl FROM \nothing + den FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + Frama_C_entropy_source; x; y; z; t; min_f; min_fl; den; b +[inout] Inputs for function main: + Frama_C_entropy_source; x; y; min_f diff --git a/tests/value/oracle_bitwise/paths.err.oracle b/tests/float/oracle_symblocs/alarms.err.oracle similarity index 100% rename from tests/value/oracle_bitwise/paths.err.oracle rename to tests/float/oracle_symblocs/alarms.err.oracle diff --git a/tests/float/oracle_symblocs/alarms.res.oracle b/tests/float/oracle_symblocs/alarms.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..9f8531eaba7ef4e09c047e0fa786b325f034909e --- /dev/null +++ b/tests/float/oracle_symblocs/alarms.res.oracle @@ -0,0 +1,99 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/float/alarms.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + u1 ∈ {0} + u2 ∈ {0} + f ∈ {0} + d ∈ {0} + big ∈ {0} + ull ∈ {0} +tests/float/alarms.i:9:[value] warning: non-finite float value. assert \is_finite(u1.f); +tests/float/alarms.i:11:[value] warning: non-finite double value. assert \is_finite(u2.d); +[value] DUMPING STATE of file tests/float/alarms.i line 12 + u1{.l[bits 0 to 31]; .f; .d[bits 0 to 31]} ∈ + [-3.40282346639e+38 .. 3.40282346639e+38] + {.l[bits 32 to 63]; .f[bits 32 to 63]; .d[bits 32 to 63]} ∈ [--..--] + u2{.l; .f[bits 0 to 63]; .d} ∈ [-1.79769313486e+308 .. 1.79769313486e+308] + f ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + d ∈ [-1.79769313486e+308 .. 1.79769313486e+308] + big ∈ {0} + ull ∈ {0} + l ∈ [--..--] + vf ∈ UNINITIALIZED + tmp ∈ UNINITIALIZED + vd ∈ UNINITIALIZED + i ∈ UNINITIALIZED + j ∈ UNINITIALIZED + mvd ∈ UNINITIALIZED + __retres ∈ UNINITIALIZED + =END OF DUMP== +[value] computing for function fd <- main. + Called from tests/float/alarms.i:14. +tests/float/alarms.i:14:[kernel] warning: Neither code nor specification for function fd, generating default assigns from the prototype +[value] using specification for function fd +[value] Done for function fd +tests/float/alarms.i:14:[value] warning: non-finite double value. assert \is_finite(tmp); + (tmp from fd()) +tests/float/alarms.i:14:[value] warning: non-finite float value. assert \is_finite((float)tmp); + (tmp from fd()) +[value] computing for function fd <- main. + Called from tests/float/alarms.i:15. +[value] Done for function fd +tests/float/alarms.i:16:[value] warning: non-finite double value. assert \is_finite(vd); +tests/float/alarms.i:16:[value] warning: overflow in conversion from floating-point to integer. + assert -9223372036854775809 < vd; +tests/float/alarms.i:16:[value] warning: overflow in conversion from floating-point to integer. + assert vd < 9223372036854775808; +tests/float/alarms.i:17:[value] warning: overflow in conversion from floating-point to integer. + assert -9223372036854775809 < vf; +tests/float/alarms.i:17:[value] warning: overflow in conversion from floating-point to integer. + assert vf < 9223372036854775808; +[value] computing for function fd <- main. + Called from tests/float/alarms.i:18. +[value] Done for function fd +tests/float/alarms.i:19:[value] warning: non-finite double value. assert \is_finite(vd); +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + u1{.l[bits 0 to 31]; .f; .d[bits 0 to 31]} ∈ + [-3.40282346639e+38 .. 3.40282346639e+38] + {.l[bits 32 to 63]; .f[bits 32 to 63]; .d[bits 32 to 63]} ∈ [--..--] + u2{.l; .f[bits 0 to 63]; .d} ∈ + [-1.79769313486e+308 .. 1.79769313486e+308] + f ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + d ∈ [-1.79769313486e+308 .. 1.79769313486e+308] + big ∈ {1.38350580553e+19} + ull ∈ {13835058055282163712} + vf ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + vd ∈ [-1.79769313486e+308 .. 1.79769313486e+308] + i ∈ [--..--] + j ∈ [--..--] + mvd ∈ [-4.49423283716e+307 .. 4.49423283716e+307] + __retres ∈ {0} +[from] Computing for function main +[from] Computing for function Frama_C_dump_each <-main +[from] Done for function Frama_C_dump_each +[from] Computing for function fd <-main +[from] Done for function fd +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function fd: + \result FROM \nothing +[from] Function main: + u1 FROM l + u2 FROM l + f FROM l + d FROM l + big FROM \nothing + ull FROM \nothing + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + u1; u2; f; d; big; ull; vf; tmp; vd; i; j; mvd; __retres +[inout] Inputs for function main: + u1{.l[bits 0 to 31]; .f; .d[bits 0 to 31]}; u2; big diff --git a/tests/value/oracle_equalities/paths.err.oracle b/tests/float/oracle_symblocs/builtins.err.oracle similarity index 100% rename from tests/value/oracle_equalities/paths.err.oracle rename to tests/float/oracle_symblocs/builtins.err.oracle diff --git a/tests/float/oracle_symblocs/builtins.res.oracle b/tests/float/oracle_symblocs/builtins.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..bc31038a5692fbc5f3cd539641bcf51726b3a02e --- /dev/null +++ b/tests/float/oracle_symblocs/builtins.res.oracle @@ -0,0 +1,297 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/float/builtins.c (with preprocessing) +tests/float/builtins.c:55:[kernel] warning: Floating-point constant 2.72 is not represented exactly. Will use 0x1.5c28f5c28f5c3p1. See documentation for option -warn-decimal-float +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + Frama_C_entropy_source ∈ [--..--] + v ∈ [--..--] +[value] computing for function Frama_C_float_interval <- main. + Called from tests/float/builtins.c:11. +[value] using specification for function Frama_C_float_interval +share/libc/__fc_builtin.h:141:[value] function Frama_C_float_interval: precondition got status valid. +share/libc/__fc_builtin.h:142:[value] function Frama_C_float_interval: precondition got status valid. +[value] Done for function Frama_C_float_interval +[value] computing for function Frama_C_double_interval <- main. + Called from tests/float/builtins.c:12. +[value] using specification for function Frama_C_double_interval +share/libc/__fc_builtin.h:149:[value] function Frama_C_double_interval: precondition got status valid. +share/libc/__fc_builtin.h:150:[value] function Frama_C_double_interval: precondition got status valid. +[value] Done for function Frama_C_double_interval +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + Frama_C_entropy_source ∈ [--..--] + f ∈ [-1. .. 1.] + d ∈ [-1. .. 1.] +[value] Analyzing a complete application starting at main_log_exp +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + Frama_C_entropy_source ∈ [--..--] + v ∈ [--..--] +[value] computing for function log <- main_log_exp. + Called from tests/float/builtins.c:51. +tests/float/builtins.c:22:[value] function log: precondition got status valid. +tests/float/builtins.c:23:[value] function log: precondition got status valid. +tests/float/builtins.c:24:[value] function log: postcondition got status valid. +[value] Recording results for log +[value] Done for function log +[value] computing for function log10 <- main_log_exp. + Called from tests/float/builtins.c:52. +tests/float/builtins.c:29:[value] function log10: precondition got status valid. +tests/float/builtins.c:30:[value] function log10: precondition got status valid. +tests/float/builtins.c:31:[value] function log10: postcondition got status valid. +[value] Recording results for log10 +[value] Done for function log10 +[value] computing for function log <- main_log_exp. + Called from tests/float/builtins.c:55. +[value] Recording results for log +[value] Done for function log +[value] computing for function log10 <- main_log_exp. + Called from tests/float/builtins.c:56. +[value] Recording results for log10 +[value] Done for function log10 +[value] computing for function log <- main_log_exp. + Called from tests/float/builtins.c:59. +[value] Recording results for log +[value] Done for function log +[value] computing for function log10 <- main_log_exp. + Called from tests/float/builtins.c:60. +[value] Recording results for log10 +[value] Done for function log10 +tests/float/builtins.c:63:[value] warning: assertion got status unknown. +[value] computing for function log <- main_log_exp. + Called from tests/float/builtins.c:64. +[value] Recording results for log +[value] Done for function log +tests/float/builtins.c:67:[value] warning: assertion got status unknown. +[value] computing for function log10 <- main_log_exp. + Called from tests/float/builtins.c:68. +[value] Recording results for log10 +[value] Done for function log10 +[value] computing for function log <- main_log_exp. + Called from tests/float/builtins.c:72. +tests/float/builtins.c:23:[value] warning: function log: precondition got status unknown. +[value] Recording results for log +[value] Done for function log +[value] computing for function log10 <- main_log_exp. + Called from tests/float/builtins.c:75. +tests/float/builtins.c:30:[value] warning: function log10: precondition got status unknown. +[value] Recording results for log10 +[value] Done for function log10 +[value] computing for function log <- main_log_exp. + Called from tests/float/builtins.c:78. +tests/float/builtins.c:23:[value] warning: function log: precondition got status invalid. +[value] Recording results for log +[value] Done for function log +[value] computing for function log10 <- main_log_exp. + Called from tests/float/builtins.c:81. +tests/float/builtins.c:30:[value] warning: function log10: precondition got status invalid. +[value] Recording results for log10 +[value] Done for function log10 +[value] computing for function exp <- main_log_exp. + Called from tests/float/builtins.c:85. +tests/float/builtins.c:36:[value] function exp: precondition got status valid. +tests/float/builtins.c:37:[value] function exp: precondition got status valid. +tests/float/builtins.c:38:[value] function exp: postcondition got status valid. +[value] Recording results for exp +[value] Done for function exp +[value] computing for function exp <- main_log_exp. + Called from tests/float/builtins.c:88. +[value] Recording results for exp +[value] Done for function exp +[value] computing for function exp <- main_log_exp. + Called from tests/float/builtins.c:91. +[value] Recording results for exp +[value] Done for function exp +tests/float/builtins.c:94:[value] warning: assertion got status unknown. +[value] computing for function exp <- main_log_exp. + Called from tests/float/builtins.c:95. +tests/float/builtins.c:37:[value] warning: function exp: precondition got status unknown. +[value] Recording results for exp +[value] Done for function exp +[value] computing for function exp <- main_log_exp. + Called from tests/float/builtins.c:98. +tests/float/builtins.c:37:[value] warning: function exp: precondition got status invalid. +[value] Recording results for exp +[value] Done for function exp +[value] computing for function log <- main_log_exp. + Called from tests/float/builtins.c:102. +[value] Recording results for log +[value] Done for function log +tests/float/builtins.c:103:[value] assertion got status valid. +tests/float/builtins.c:107:[value] warning: non-finite double value. assert \is_finite((double)((int)(&d))); +[value] computing for function log <- main_log_exp. + Called from tests/float/builtins.c:107. +tests/float/builtins.c:22:[value] warning: function log: precondition got status unknown. +tests/float/builtins.c:26:[value] warning: non-finite double value. assert \is_finite(d); +tests/float/builtins.c:26:[value] Reading left-value d. + It contains a garbled mix of {d} because of Arithmetic + {tests/float/builtins.c:107}. +tests/float/builtins.c:26:[value] warning: builtin Frama_C_log: out-of-range argument {{ garbled mix of &{d} + (origin: Arithmetic) }} +tests/float/builtins.c:26:[value] function Frama_C_log applied to address +tests/float/builtins.c:24:[value] warning: function log: postcondition got status unknown. +tests/float/builtins.c:26:[value] warning: non-finite double value. assert \is_finite(tmp); + (tmp from Frama_C_log(d)) +[value] Recording results for log +[value] Done for function log +tests/float/builtins.c:111:[value] warning: accessing uninitialized left-value. assert \initialized(&x); +[value] Recording results for main_log_exp +[value] done for function main_log_exp +tests/float/builtins.c:111:[value] assertion 'Value,initialisation' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function exp: + +[value:final-states] Values at end of function log: + +[value:final-states] Values at end of function log10: + +[value:final-states] Values at end of function main_log_exp: + l1 ∈ {0} or UNINITIALIZED + l2 ∈ {1.00063188031} or UNINITIALIZED + l3 ∈ {1.09861228867} or UNINITIALIZED + l4 ∈ [2.30258509299 .. 4.60517018599] or UNINITIALIZED + l5 ∈ [-744.440071921 .. 709.782712893] or UNINITIALIZED + l6 ∈ UNINITIALIZED + l7 ∈ {{ garbled mix of &{d} (origin: Arithmetic) }} or UNINITIALIZED + l8 ∈ UNINITIALIZED + m1 ∈ {0} or UNINITIALIZED + m2 ∈ {1.} or UNINITIALIZED + m3 ∈ {1.30102999566} or UNINITIALIZED + m4 ∈ [1. .. 2.00432137378] or UNINITIALIZED + m5 ∈ [-323.306215343 .. 308.25471556] or UNINITIALIZED + m6 ∈ UNINITIALIZED + e1 ∈ {1.} or UNINITIALIZED + e2 ∈ {0} or UNINITIALIZED + e3 ∈ {2.68811714182e+43} or UNINITIALIZED + e4 ∈ [2.68811714182e+43 .. 1.79769313486e+308] or UNINITIALIZED + e5 ∈ UNINITIALIZED + e6 ∈ {1.79769313486e+308} or UNINITIALIZED +[value] Analyzing a complete application starting at main_log_exp +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + Frama_C_entropy_source ∈ [--..--] + v ∈ [--..--] +[value] computing for function log <- main_log_exp. + Called from tests/float/builtins.c:51. +[value] warning: option -all-rounding-modes is not supported for builtin Frama_C_log +[value] Recording results for log +[value] Done for function log +[value] computing for function log10 <- main_log_exp. + Called from tests/float/builtins.c:52. +[value] warning: option -all-rounding-modes is not supported for builtin Frama_C_log10 +[value] Recording results for log10 +[value] Done for function log10 +[value] computing for function log <- main_log_exp. + Called from tests/float/builtins.c:55. +[value] Recording results for log +[value] Done for function log +[value] computing for function log10 <- main_log_exp. + Called from tests/float/builtins.c:56. +[value] Recording results for log10 +[value] Done for function log10 +[value] computing for function log <- main_log_exp. + Called from tests/float/builtins.c:59. +[value] Recording results for log +[value] Done for function log +[value] computing for function log10 <- main_log_exp. + Called from tests/float/builtins.c:60. +[value] Recording results for log10 +[value] Done for function log10 +[value] computing for function log <- main_log_exp. + Called from tests/float/builtins.c:64. +[value] Recording results for log +[value] Done for function log +[value] computing for function log10 <- main_log_exp. + Called from tests/float/builtins.c:68. +[value] Recording results for log10 +[value] Done for function log10 +[value] computing for function log <- main_log_exp. + Called from tests/float/builtins.c:72. +tests/float/builtins.c:26:[value] warning: builtin Frama_C_log: out-of-range argument ([-0. .. 1.79769313486e+308]): + negative argument, computation may result in NaN +[value] Recording results for log +[value] Done for function log +[value] computing for function log10 <- main_log_exp. + Called from tests/float/builtins.c:75. +tests/float/builtins.c:33:[value] warning: builtin Frama_C_log10: out-of-range argument ([-0. .. 1.79769313486e+308]): + negative argument, computation may result in NaN +[value] Recording results for log10 +[value] Done for function log10 +[value] computing for function log <- main_log_exp. + Called from tests/float/builtins.c:78. +[value] Recording results for log +[value] Done for function log +[value] computing for function log10 <- main_log_exp. + Called from tests/float/builtins.c:81. +[value] Recording results for log10 +[value] Done for function log10 +[value] computing for function exp <- main_log_exp. + Called from tests/float/builtins.c:85. +[value] warning: option -all-rounding-modes is not supported for builtin Frama_C_exp +[value] Recording results for exp +[value] Done for function exp +[value] computing for function exp <- main_log_exp. + Called from tests/float/builtins.c:88. +[value] Recording results for exp +[value] Done for function exp +[value] computing for function exp <- main_log_exp. + Called from tests/float/builtins.c:91. +[value] Recording results for exp +[value] Done for function exp +[value] computing for function exp <- main_log_exp. + Called from tests/float/builtins.c:95. +[value] Recording results for exp +[value] Done for function exp +[value] computing for function exp <- main_log_exp. + Called from tests/float/builtins.c:98. +[value] Recording results for exp +[value] Done for function exp +[value] computing for function log <- main_log_exp. + Called from tests/float/builtins.c:102. +[value] Recording results for log +[value] Done for function log +tests/float/builtins.c:107:[value] warning: non-finite double value. assert \is_finite((double)((int)(&d))); +[value] computing for function log <- main_log_exp. + Called from tests/float/builtins.c:107. +tests/float/builtins.c:26:[value] warning: non-finite double value. assert \is_finite(d); +tests/float/builtins.c:26:[value] warning: non-finite double value. assert \is_finite(tmp); + (tmp from Frama_C_log(d)) +[value] Recording results for log +[value] Done for function log +tests/float/builtins.c:111:[value] warning: accessing uninitialized left-value. assert \initialized(&x); +[value] Recording results for main_log_exp +[value] done for function main_log_exp +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function exp: + +[value:final-states] Values at end of function log: + +[value:final-states] Values at end of function log10: + +[value:final-states] Values at end of function main_log_exp: + l1 ∈ {0} or UNINITIALIZED + l2 ∈ {1.00063188031} or UNINITIALIZED + l3 ∈ {1.09861228867} or UNINITIALIZED + l4 ∈ [2.30258509299 .. 4.60517018599] or UNINITIALIZED + l5 ∈ [-744.440071921 .. 709.782712893] or UNINITIALIZED + l6 ∈ UNINITIALIZED + l7 ∈ {{ garbled mix of &{d} (origin: Arithmetic) }} or UNINITIALIZED + l8 ∈ UNINITIALIZED + m1 ∈ {0} or UNINITIALIZED + m2 ∈ {1.} or UNINITIALIZED + m3 ∈ {1.30102999566} or UNINITIALIZED + m4 ∈ [1. .. 2.00432137378] or UNINITIALIZED + m5 ∈ [-323.306215343 .. 308.25471556] or UNINITIALIZED + m6 ∈ UNINITIALIZED + e1 ∈ {1.} or UNINITIALIZED + e2 ∈ {0} or UNINITIALIZED + e3 ∈ {2.68811714182e+43} or UNINITIALIZED + e4 ∈ [2.68811714182e+43 .. 1.79769313486e+308] or UNINITIALIZED + e5 ∈ UNINITIALIZED + e6 ∈ {1.79769313486e+308} or UNINITIALIZED diff --git a/tests/value/oracle_legacy/fun_ptr.err.oracle b/tests/float/oracle_symblocs/cond.err.oracle similarity index 100% rename from tests/value/oracle_legacy/fun_ptr.err.oracle rename to tests/float/oracle_symblocs/cond.err.oracle diff --git a/tests/float/oracle_symblocs/cond.res.oracle b/tests/float/oracle_symblocs/cond.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e8217e8d2adb8a8fa6f8334dff16bae13ee9d487 --- /dev/null +++ b/tests/float/oracle_symblocs/cond.res.oracle @@ -0,0 +1,39 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/float/cond.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + Frama_C_entropy_source ∈ [--..--] + x ∈ {0} + y ∈ {0} + z ∈ {0} + dx ∈ {0} + dy ∈ {0} + dz ∈ {0} + dt ∈ {0} + c1 ∈ {0} + c2 ∈ {0} +[value] computing for function Frama_C_float_interval <- main. + Called from tests/float/cond.c:12. +[value] using specification for function Frama_C_float_interval +share/libc/__fc_builtin.h:141:[value] function Frama_C_float_interval: precondition got status valid. +share/libc/__fc_builtin.h:142:[value] function Frama_C_float_interval: precondition got status valid. +[value] Done for function Frama_C_float_interval +[value] computing for function Frama_C_float_interval <- main. + Called from tests/float/cond.c:15. +[value] Done for function Frama_C_float_interval +tests/float/cond.c:18:[value] warning: assertion got status unknown. +[value] computing for function Frama_C_float_interval <- main. + Called from tests/float/cond.c:20. +[value] Done for function Frama_C_float_interval +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + Frama_C_entropy_source ∈ [--..--] + x ∈ [-0x0.0000000000000p-1022 .. 0x1.4000000000000p3] + dx ∈ [0x1.0000000000001p0 .. 0x1.4000000000000p3] + dz ∈ [0x1.0000000000001p0 .. 0x1.4000000000000p3] + dt ∈ [-0x1.4000000000000p3 .. 0x1.fffffffffffffp-1] + c1 ∈ {1} diff --git a/tests/value/oracle_legacy/paths.err.oracle b/tests/float/oracle_symblocs/cond_cast_int_to_float.err.oracle similarity index 100% rename from tests/value/oracle_legacy/paths.err.oracle rename to tests/float/oracle_symblocs/cond_cast_int_to_float.err.oracle diff --git a/tests/float/oracle_symblocs/cond_cast_int_to_float.res.oracle b/tests/float/oracle_symblocs/cond_cast_int_to_float.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..c6662b84bea1af4aadfd53a66f64368d7cdb2695 --- /dev/null +++ b/tests/float/oracle_symblocs/cond_cast_int_to_float.res.oracle @@ -0,0 +1,79 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/float/cond_cast_int_to_float.c (with preprocessing) +tests/float/cond_cast_int_to_float.c:18:[kernel] warning: Floating-point constant 30.1f is not represented exactly. Will use 0x1.e1999a0000000p4. See documentation for option -warn-decimal-float +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + v ∈ [--..--] +tests/float/cond_cast_int_to_float.c:15:[value] warning: function main: precondition got status unknown. +[value] computing for function assert <- main. + Called from tests/float/cond_cast_int_to_float.c:18. +[value] using specification for function assert +tests/float/cond_cast_int_to_float.c:3:[value] function assert: precondition got status valid. +[value] Done for function assert +[value] Called Frama_C_show_each_then({18}, [31..10000]) +[value] computing for function assert <- main. + Called from tests/float/cond_cast_int_to_float.c:18. +[value] Done for function assert +[value] Called Frama_C_show_each_else({18}, [-10000..30]) +[value] computing for function assert <- main. + Called from tests/float/cond_cast_int_to_float.c:19. +[value] Done for function assert +[value] Called Frama_C_show_each_then({19}, [31..10000]) +[value] computing for function assert <- main. + Called from tests/float/cond_cast_int_to_float.c:19. +[value] Done for function assert +[value] Called Frama_C_show_each_else({19}, [-10000..30]) +[value] computing for function assert <- main. + Called from tests/float/cond_cast_int_to_float.c:20. +[value] Done for function assert +[value] Called Frama_C_show_each_then({20}, [30..10000]) +[value] computing for function assert <- main. + Called from tests/float/cond_cast_int_to_float.c:20. +[value] Done for function assert +[value] Called Frama_C_show_each_else({20}, [-10000..29]) +[value] computing for function assert <- main. + Called from tests/float/cond_cast_int_to_float.c:22. +[value] Done for function assert +[value] Called Frama_C_show_each_then({22}, [-30..10000]) +[value] computing for function assert <- main. + Called from tests/float/cond_cast_int_to_float.c:22. +[value] Done for function assert +[value] Called Frama_C_show_each_else({22}, [-10000..-31]) +[value] computing for function assert <- main. + Called from tests/float/cond_cast_int_to_float.c:23. +[value] Done for function assert +[value] Called Frama_C_show_each_then({23}, [-30..10000]) +[value] computing for function assert <- main. + Called from tests/float/cond_cast_int_to_float.c:23. +[value] Done for function assert +[value] Called Frama_C_show_each_else({23}, [-10000..-31]) +[value] computing for function assert <- main. + Called from tests/float/cond_cast_int_to_float.c:24. +[value] Done for function assert +[value] Called Frama_C_show_each_then({24}, [-29..10000]) +[value] computing for function assert <- main. + Called from tests/float/cond_cast_int_to_float.c:24. +[value] Done for function assert +[value] Called Frama_C_show_each_else({24}, [-10000..-30]) +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + +[from] Computing for function main +[from] Computing for function assert <-main +[from] Done for function assert +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function assert: + NO EFFECTS +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + \nothing +[inout] Inputs for function main: + \nothing diff --git a/tests/float/oracle_symblocs/const.err.oracle b/tests/float/oracle_symblocs/const.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/float/oracle_symblocs/const.res.oracle b/tests/float/oracle_symblocs/const.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..eda7617317c442ccf686fb9a34a6642ddd263bd0 --- /dev/null +++ b/tests/float/oracle_symblocs/const.res.oracle @@ -0,0 +1,295 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/float/const.i (no preprocessing) +tests/float/const.i:21:[kernel] warning: Floating-point constant 0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024703282292062327208828439643411068618252990130716238221279284125033775363510437593264991818081799618989828234772285886546332835517796989819938739800539093906315035659515570226392290858392449105184435931802849936536152500319370457678249219365623669863658480757001585769269903706311928279558551332927834338409351978015531246597263579574622766465272827220056374006485499977096599470454020828166226237857393450736339007967761930577506740176324673600968951340535537458516661134223766678604162159680461914467291840300530057530849048765391711386591646239524912623653881879636239373280423891018672348497668235089863388587925628302755995657524455507255189313690836254779186948667994968324049705821028513185451396213837722826145437693412532098591327667236328125 is not represented exactly. Will use 0x0.0000000000000p-1022 +tests/float/const.i:22:[kernel] warning: Floating-point constant 0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002470328229206232720882843964341106861825299013071623822127928412503377536351043759326499181808179961898982823477228588654633283551779698981993873980053909390631503565951557022639229085839244910518443593180284993653615250031937045767824921936562366986365848075700158576926990370631192827955855133292783433840935197801553124659726357957462276646527282722005637400648549997709659947045402082816622623785739345073633900796776193057750674017632467360096895134053553745851666113422376667860416215968046191446729184030053005753084904876539171138659164623952491262365388187963623937328042389101867234849766823508986338858792562830275599565752445550725518931369083625477918694866799496832404970582102851318545139621383772282614543769341253209859132766723632812501 is not represented exactly. Will use 0x0.0000000000001p-1022 +tests/float/const.i:23:[kernel] warning: Floating-point constant 0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002470328229206232720882843964341106861825299013071623822127928412503377536351043759326499181808179961898982823477228588654633283551779698981993873980053909390631503565951557022639229085839244910518443593180284993653615250031937045767824921936562366986365848075700158576926990370631192827955855133292783433840935197801553124659726357957462276646527282722005637400648549997709659947045402082816622623785739345073633900796776193057750674017632467360096895134053553745851666113422376667860416215968046191446729184030053005753084904876539171138659164623952491262365388187963623937328042389101867234849766823508986338858792562830275599565752445550725518931369083625477918694866799496832404970582102851318545139621383772282614543769341253209859132766723632812499 is not represented exactly. Will use 0x0.0000000000000p-1022 +tests/float/const.i:26:[kernel] warning: Floating-point constant 0.0000000000000000000000000000000000000000000014012984643248170709237295832899161312802619418765157717570682838897910826858606014866381883621215820312499 is not represented exactly. Will use 0x1.0000000000000p-149 +tests/float/const.i:27:[kernel] warning: Floating-point constant 0.0000000000000000000000000000000000000000000014012984643248170709237295832899161312802619418765157717570682838897910826858606014866381883621215820312501 is not represented exactly. Will use 0x1.0000000000000p-149 +tests/float/const.i:29:[kernel] warning: Floating-point constant 0.0000000000000000000000000000000000000000000014012984643248170709237295832899161312802619418765157717570682838897910826858606014866381883621215820312499f is not represented exactly. Will use 0x1.0000000000000p-149 +tests/float/const.i:30:[kernel] warning: Floating-point constant 0.0000000000000000000000000000000000000000000014012984643248170709237295832899161312802619418765157717570682838897910826858606014866381883621215820312501f is not represented exactly. Will use 0x1.0000000000000p-149 +tests/float/const.i:33:[kernel] warning: Floating-point constant 0.00000000000000000000000000000000000000000000070064923216240853546186479164495806564013097093825788587853414194489554134293030074331909418106079101562499 is not represented exactly. Will use 0x1.0000000000000p-150 +tests/float/const.i:34:[kernel] warning: Floating-point constant 0.00000000000000000000000000000000000000000000070064923216240853546186479164495806564013097093825788587853414194489554134293030074331909418106079101562501 is not represented exactly. Will use 0x1.0000000000000p-150 +tests/float/const.i:35:[kernel] warning: Floating-point constant 0.000000000000000000000000000000000000000000000700649232162408535461864791644958065640130970938257885878534141944895541342930300743319094181060791015625f is not represented exactly. Will use 0x0.0000000000000p-1022 +tests/float/const.i:36:[kernel] warning: Floating-point constant 0.00000000000000000000000000000000000000000000070064923216240853546186479164495806564013097093825788587853414194489554134293030074331909418106079101562499f is not represented exactly. Will use 0x0.0000000000000p-1022 +tests/float/const.i:37:[kernel] warning: Floating-point constant 0.00000000000000000000000000000000000000000000070064923216240853546186479164495806564013097093825788587853414194489554134293030074331909418106079101562501f is not represented exactly. Will use 0x1.0000000000000p-149 +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + f0 ∈ {0} + f_ ∈ {0} + f00 ∈ {0} + f1 ∈ {0x1.8000000000000p1} + f2 ∈ {0} + f3 ∈ {0} + f_0 ∈ {0} + f13 ∈ {0} + f26 ∈ {0} + fic0 ∈ {0} + fic1 ∈ {0} + fic2 ∈ {0} + fic4 ∈ {0} + fec0 ∈ {0} + fec2 ∈ {0} + fec4 ∈ {0} + m0 ∈ {0} + m_ ∈ {0} + m00 ∈ {0} + m1 ∈ {0x1.8000000000000p1} + m2 ∈ {0} + m3 ∈ {0} + m_0 ∈ {0} + m13 ∈ {0} + m26 ∈ {0} + d0 ∈ {0} + d1 ∈ {0x1.8000000000000p1} + d2 ∈ {0} + d3 ∈ {0} + d4 ∈ {0} + d5 ∈ {0} + d6 ∈ {0} + d7 ∈ {0} + A ∈ {0} + B ∈ {0} + C ∈ {0} + D ∈ {0} + E ∈ {0} + F ∈ {0} + G ∈ {0} + H ∈ {0} + I ∈ {0} + J ∈ {0} + K ∈ {0} + L ∈ {0} + P ∈ {0} + Q ∈ {0} + R ∈ {0} + Am ∈ {0} + Bm ∈ {0} + Cm ∈ {0} + Dm ∈ {0} + Em ∈ {0} + Fm ∈ {0} + Gm ∈ {0} + Hm ∈ {0} + Im ∈ {0} + Jm ∈ {0} + Km ∈ {0} + Lm ∈ {0} + t1 ∈ {0} + t2 ∈ {0} + t3 ∈ {0} + t4 ∈ {0} + t5 ∈ {0} + t6 ∈ {0} + t7 ∈ {0} + t8 ∈ {0} + t9 ∈ {0} + C0 ∈ {0} + C2 ∈ {2} + s1 ∈ {0} + s2 ∈ {0} + s3 ∈ {0} + s4 ∈ {0} + s5 ∈ {0} + s6 ∈ {0} + s7 ∈ {0} + s8 ∈ {0} + s9 ∈ {0} + if1 ∈ {0} + if2 ∈ {0} + if3 ∈ {0} + ite1 ∈ {0} + ite2 ∈ {0} + ite3 ∈ {0} + ca1 ∈ {0} + ca2 ∈ {0} + ca3 ∈ {0} + ca4 ∈ {0} + corner_case_small0 ∈ {0} + corner_case_small1 ∈ {0x0.0000000000001p-1022} + corner_case_small2 ∈ {0} + smallest_pos0 ∈ {0x1.0000000000000p-149} + smallest_pos1 ∈ {0x1.0000000000000p-149} + smallest_pos2 ∈ {0x1.0000000000000p-149} + smallest_pos3 ∈ {0x1.0000000000000p-149} + smallest_pos4 ∈ {0x1.0000000000000p-149} + smallest_pos5 ∈ {0x1.0000000000000p-149} + half_smallest_pos0 ∈ {0} + half_smallest_pos1 ∈ {0} + half_smallest_pos2 ∈ {0} + half_smallest_pos3 ∈ {0} + half_smallest_pos4 ∈ {0} + half_smallest_pos5 ∈ {0x1.0000000000000p-149} +tests/float/const.i:48:[value] assertion got status valid. +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + f_ ∈ {-0x0.0000000000000p-1022} + f00 ∈ {0} + f2 ∈ {0x1.8000000000000p1} + f3 ∈ {0x1.8000000000000p1} + f_0 ∈ [-0x0.0000000000000p-1022 .. 0x0.0000000000000p-1022] + f13 ∈ [0x1.0000000000000p0 .. 0x1.8000000000000p1] + f26 ∈ [0x1.0000000000000p1 .. 0x1.8000000000000p2] + fic0 ∈ {0} + fic1 ∈ {0x1.0000000000000p0} + fic2 ∈ {0x1.0000000000000p1} + fic4 ∈ {0x1.0000000000000p2} + fec0 ∈ {0} + fec2 ∈ {0x1.0000000000000p1} + fec4 ∈ {0x1.0000000000000p2} + m_ ∈ {-0x0.0000000000000p-1022} + m00 ∈ {0} + m2 ∈ {0x1.8000000000000p1} + m_0 ∈ [-0x0.0000000000000p-1022 .. 0x0.0000000000000p-1022] + m13 ∈ [0x1.0000000000000p0 .. 0x1.8000000000000p1] + m26 ∈ [0x1.0000000000000p1 .. 0x1.8000000000000p2] + d2 ∈ {0x1.8000000000000p1} + d3 ∈ {0x1.4000000000000p2} + d4 ∈ {0x1.4000000000000p2} + d5 ∈ [-0x1.8000000000000p1 .. 0x1.2000000000000p3] + d6 ∈ {0x1.8000000000000p1} + d7 ∈ [-0x1.2000000000000p3 .. 0x1.8000000000000p1] + A ∈ {1} + B ∈ {0} + C ∈ {1} + D ∈ {0} + E ∈ {1} + F ∈ {1} + G ∈ {1} + H ∈ {0; 1} + I ∈ {0; 1} + J ∈ {0} + K ∈ {0} + L ∈ {0; 1} + P ∈ {0; 1} + Q ∈ {0} + R ∈ {1} + Am ∈ {1} + Bm ∈ {0} + Cm ∈ {1} + Dm ∈ {0} + Em ∈ {1} + Fm ∈ {1} + Gm ∈ {1} + Hm ∈ {0; 1} + Im ∈ {0; 1} + Jm ∈ {0} + Km ∈ {0} + Lm ∈ {0; 1} + t1 ∈ {1} + t2 ∈ {1} + t3 ∈ {1} + t4 ∈ {0; 1} + t5 ∈ {0; 1} + t6 ∈ {1} + t7 ∈ {0} + t8 ∈ {1} + s1 ∈ {0} + s2 ∈ {0} + s3 ∈ {1} + s4 ∈ {0; 1} + s5 ∈ {0; 1} + s6 ∈ {1} + s7 ∈ {0} + s8 ∈ {0} + if1 ∈ {1} + ite1 ∈ {1} + ite2 ∈ {2} + ite3 ∈ {2} + ca1 ∈ {0} + ca2 ∈ {1; 2; 3} + ca3 ∈ {0} + ca4 ∈ {0} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + f_ FROM f0 + f00 FROM f0 + f2 FROM f1 + f3 FROM f0; f1 + f_0 FROM f0; c1 + f13 FROM c1 + f26 FROM c1 + fic0 FROM C0 + fic1 FROM \nothing + fic2 FROM C2 + fic4 FROM C2 + fec0 FROM C0 + fec2 FROM C2 + fec4 FROM C2 + m_ FROM m0 + m00 FROM m0 + m2 FROM m1 + m_0 FROM m0; c1 + m13 FROM c1 + m26 FROM c1 + d2 FROM f1; d1 + d3 FROM d1 + d4 FROM d1 + d5 FROM c1; c2 + d6 FROM f0; f1; d1 + d7 FROM c1; c2 + A FROM f0 + B FROM f0; f1 + C FROM f0 + D FROM f0; f1 + E FROM f0 + F FROM f0; c1 + G FROM f0; c1 + H FROM f0; c1 + I FROM f0; c1 + J FROM f0; c1 + K FROM f0; c1 + L FROM c1; c2 + P FROM c1; c2 + Q FROM f0 + R FROM f0; f1 + Am FROM m0 + Bm FROM m0; m1 + Cm FROM m0 + Dm FROM m0; m1 + Em FROM m0 + Fm FROM m0; c1 + Gm FROM m0; c1 + Hm FROM m0; c1 + Im FROM m0; c1 + Jm FROM m0; c1 + Km FROM m0; c1 + Lm FROM c1; c2 + t1 FROM f0; c1 + t2 FROM f0; c1 + t3 FROM f0; c1 + t4 FROM c1 + t5 FROM c1 + t6 FROM c1 + t7 FROM c1 + t8 FROM f1 + s1 FROM f0; c1 + s2 FROM f0; c1 + s3 FROM f0; c1 + s4 FROM c1 + s5 FROM c1 + s6 FROM c1 + s7 FROM c1 + s8 FROM f1 + if1 FROM \nothing (and SELF) + ite1 FROM \nothing + ite2 FROM \nothing + ite3 FROM \nothing + ca1 FROM f0; c1 + ca2 FROM c1 + ca3 FROM f0 + ca4 FROM f0 +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + f_; f00; f2; f3; f_0; f13; f26; fic0; fic1; fic2; fic4; fec0; fec2; + fec4; m_; m00; m2; m_0; m13; m26; d2; d3; d4; d5; d6; d7; A; B; C; + D; E; F; G; H; I; J; K; L; P; Q; R; Am; Bm; Cm; Dm; Em; Fm; Gm; Hm; + Im; Jm; Km; Lm; t1; t2; t3; t4; t5; t6; t7; t8; s1; s2; s3; s4; s5; + s6; s7; s8; if1; ite1; ite2; ite3; ca1; ca2; ca3; ca4; tmp; tmp_0; + tmp_1; tmp_2; tmp_3; tmp_4; tmp_5; tmp_6; tmp_7 diff --git a/tests/float/oracle_symblocs/const1.err.oracle b/tests/float/oracle_symblocs/const1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/float/oracle_symblocs/const1.res.oracle b/tests/float/oracle_symblocs/const1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..eec4cef0547130ebebaabff8070867916f170f6f --- /dev/null +++ b/tests/float/oracle_symblocs/const1.res.oracle @@ -0,0 +1,24 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/float/const1.i (no preprocessing) +tests/float/const1.i:1:[kernel] warning: Floating-point constant 1e40f is not represented exactly. Will use inf. See documentation for option -warn-decimal-float +[value] Analyzing a complete application starting at main +[value] Computing initial state +tests/float/const1.i:1:[value] warning: non-finite float value. assert \is_finite(1e40f); +tests/float/const1.i:1:[value] Evaluation of initializer '(unsigned long long)1e40f' failed +[value] Initial state computed +[value:initial-state] Values of globals at initialization + NOT ACCESSIBLE +[value] Value analysis not started because globals initialization is not computable. +[value] ====== VALUES COMPUTED ====== +[from] Computing for function main +[from] Non-terminating function main (no dependencies) +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NON TERMINATING - NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + \nothing +[inout] Inputs for function main: + \nothing diff --git a/tests/float/oracle_symblocs/const2.err.oracle b/tests/float/oracle_symblocs/const2.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/float/oracle_symblocs/const2.res.oracle b/tests/float/oracle_symblocs/const2.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..48dbb314e70138993ecc65b0d7fb4010efb0098b --- /dev/null +++ b/tests/float/oracle_symblocs/const2.res.oracle @@ -0,0 +1,24 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/float/const2.i (no preprocessing) +tests/float/const2.i:1:[kernel] warning: Floating-point constant 1e-40f is not represented exactly. Will use 0x1.16c2000000000p-133. See documentation for option -warn-decimal-float +[value] Analyzing a complete application starting at main +[value] Computing initial state +tests/float/const2.i:2:[value] warning: non-finite float value. assert \is_finite(1e40f); +tests/float/const2.i:2:[value] Evaluation of initializer '1e40f' failed +[value] Initial state computed +[value:initial-state] Values of globals at initialization + NOT ACCESSIBLE +[value] Value analysis not started because globals initialization is not computable. +[value] ====== VALUES COMPUTED ====== +[from] Computing for function main +[from] Non-terminating function main (no dependencies) +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NON TERMINATING - NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + \nothing +[inout] Inputs for function main: + \nothing diff --git a/tests/float/oracle_symblocs/const3.0.err.oracle b/tests/float/oracle_symblocs/const3.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/float/oracle_symblocs/const3.0.res.oracle b/tests/float/oracle_symblocs/const3.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..a6fb67c12d4683afd7394d0c901f92f1d8f97ec7 --- /dev/null +++ b/tests/float/oracle_symblocs/const3.0.res.oracle @@ -0,0 +1,35 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/float/const3.i (no preprocessing) +tests/float/const3.i:6:[kernel] warning: Floating-point constant 1e-40f is not represented exactly. Will use 0x1.16c2000000000p-133 +tests/float/const3.i:7:[kernel] warning: Floating-point constant 1e-40 is not represented exactly. Will use 0x1.16c262777579cp-133 +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + f1 ∈ {9.99994610111e-41} + d0 ∈ {1e-40} +[value] DUMPING STATE of file tests/float/const3.i line 11 + f1 ∈ {9.99994610111e-41} + d0 ∈ {1e-40} + d1 ∈ UNINITIALIZED + __retres ∈ UNINITIALIZED + =END OF DUMP== +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + d1 ∈ {9.99994610111e-41} + __retres ∈ {0} +[from] Computing for function main +[from] Computing for function Frama_C_dump_each <-main +[from] Done for function Frama_C_dump_each +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + d1; __retres +[inout] Inputs for function main: + f1 diff --git a/tests/float/oracle_symblocs/const3.1.err.oracle b/tests/float/oracle_symblocs/const3.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/float/oracle_symblocs/const3.1.res.oracle b/tests/float/oracle_symblocs/const3.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e1c2cbfcba4880c5668f95fbce719b98710c50e2 --- /dev/null +++ b/tests/float/oracle_symblocs/const3.1.res.oracle @@ -0,0 +1,35 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/float/const3.i (no preprocessing) +tests/float/const3.i:6:[kernel] warning: Floating-point constant 1e-40f is not represented exactly. Will use 0x1.16c2000000000p-133 +tests/float/const3.i:7:[kernel] warning: Floating-point constant 1e-40 is not represented exactly. Will use 0x1.16c262777579cp-133 +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + f1 ∈ [0x1.16c2000000000p-133 .. 0x1.16c3000000000p-133] + d0 ∈ [0x1.16c262777579cp-133 .. 0x1.16c262777579dp-133] +[value] DUMPING STATE of file tests/float/const3.i line 11 + f1 ∈ [0x1.16c2000000000p-133 .. 0x1.16c3000000000p-133] + d0 ∈ [0x1.16c262777579cp-133 .. 0x1.16c262777579dp-133] + d1 ∈ UNINITIALIZED + __retres ∈ UNINITIALIZED + =END OF DUMP== +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + d1 ∈ [0x1.16c2000000000p-133 .. 0x1.16c3000000000p-133] + __retres ∈ {0} +[from] Computing for function main +[from] Computing for function Frama_C_dump_each <-main +[from] Done for function Frama_C_dump_each +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + d1; __retres +[inout] Inputs for function main: + f1 diff --git a/tests/float/oracle_symblocs/const4.0.err.oracle b/tests/float/oracle_symblocs/const4.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/float/oracle_symblocs/const4.0.res.oracle b/tests/float/oracle_symblocs/const4.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..795011ffb9785fe2e075f7cc2f0909d169083172 --- /dev/null +++ b/tests/float/oracle_symblocs/const4.0.res.oracle @@ -0,0 +1,25 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/float/const4.i (no preprocessing) +tests/float/const4.i:6:[kernel] warning: Floating-point constant 3.4e38f is not represented exactly. Will use 0x1.ff933c0000000p127 +tests/float/const4.i:7:[kernel] warning: Floating-point constant 3.405e38f is not represented exactly. Will use inf +[value] Analyzing a complete application starting at main +[value] Computing initial state +tests/float/const4.i:7:[value] warning: non-finite float value. assert \is_finite(3.405e38f); +tests/float/const4.i:7:[value] Evaluation of initializer '(double)3.405e38f' failed +[value] Initial state computed +[value:initial-state] Values of globals at initialization + NOT ACCESSIBLE +[value] Value analysis not started because globals initialization is not computable. +[value] ====== VALUES COMPUTED ====== +[from] Computing for function main +[from] Non-terminating function main (no dependencies) +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NON TERMINATING - NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + \nothing +[inout] Inputs for function main: + \nothing diff --git a/tests/float/oracle_symblocs/const4.1.err.oracle b/tests/float/oracle_symblocs/const4.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/float/oracle_symblocs/const4.1.res.oracle b/tests/float/oracle_symblocs/const4.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..c6a7cb5ee7cf326f97d009ea0446157ed3fa3f5f --- /dev/null +++ b/tests/float/oracle_symblocs/const4.1.res.oracle @@ -0,0 +1,36 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/float/const4.i (no preprocessing) +tests/float/const4.i:6:[kernel] warning: Floating-point constant 3.4e38f is not represented exactly. Will use 0x1.ff933c0000000p127 +tests/float/const4.i:7:[kernel] warning: Floating-point constant 3.405e38f is not represented exactly. Will use inf +[value] Analyzing a complete application starting at main +[value] Computing initial state +tests/float/const4.i:7:[value] warning: non-finite float value. assert \is_finite(3.405e38f); +[value] Initial state computed +[value:initial-state] Values of globals at initialization + f1 ∈ [3.39999995214e+38 .. 3.40000015497e+38] + f2 ∈ {3.40282346639e+38} +[value] DUMPING STATE of file tests/float/const4.i line 11 + f1 ∈ [3.39999995214e+38 .. 3.40000015497e+38] + f2 ∈ {3.40282346639e+38} + d2 ∈ UNINITIALIZED + __retres ∈ UNINITIALIZED + =END OF DUMP== +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + d2 ∈ {3.40282346639e+38} + __retres ∈ {0} +[from] Computing for function main +[from] Computing for function Frama_C_dump_each <-main +[from] Done for function Frama_C_dump_each +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + d2; __retres +[inout] Inputs for function main: + f2 diff --git a/tests/float/oracle_symblocs/conv.err.oracle b/tests/float/oracle_symblocs/conv.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/float/oracle_symblocs/conv.res.oracle b/tests/float/oracle_symblocs/conv.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..28b908f801466787461847a4d5228aea30dc3018 --- /dev/null +++ b/tests/float/oracle_symblocs/conv.res.oracle @@ -0,0 +1,100 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/float/conv.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + f ∈ {0} + d ∈ {0} + v ∈ [--..--] +[value] computing for function main1 <- main. + Called from tests/float/conv.i:105. +[value] Called Frama_C_show_each({0}) +[value] Called Frama_C_show_each({1.40129846432e-45}) +[value] Called Frama_C_show_each([1.40129846432e-43 .. 2.40330263757e+12]) +tests/float/conv.i:24:[value] warning: assertion got status unknown. +[value] Called Frama_C_show_each({3.40282346639e+38}) +tests/float/conv.i:29:[value] assertion got status valid. +tests/float/conv.i:32:[value] warning: non-finite float value. assert \is_finite(*((float *)(&i))); +[value] Called Frama_C_show_each([-3.40282346639e+38 .. 3.40282346639e+38]) +[value] Called Frama_C_show_each({-3.40282346639e+38}) +tests/float/conv.i:38:[value] assertion got status valid. +tests/float/conv.i:41:[value] warning: non-finite float value. assert \is_finite(*((float *)(&i))); +[value] Called Frama_C_show_each([-3.40282346639e+38 .. 3.40282346639e+38]) +[value] Called Frama_C_show_each([0. .. 1.40129846432e-45]) +tests/float/conv.i:48:[value] warning: assertion got status unknown. +tests/float/conv.i:49:[value] warning: non-finite float value. assert \is_finite(*((float *)(&i))); +[value] Called Frama_C_show_each([-3.40282346639e+38 .. 3.40282346639e+38]) +tests/float/conv.i:52:[value] warning: non-finite float value. assert \is_finite(*((float *)(&i))); +[value] Called Frama_C_show_each([-3.40282346639e+38 .. 3.40282346639e+38]) +tests/float/conv.i:55:[value] warning: non-finite float value. assert \is_finite(*((float *)(&ui))); +[value] Called Frama_C_show_each([-3.40282346639e+38 .. 3.40282346639e+38]) +[value] Recording results for main1 +[value] Done for function main1 +[value] computing for function main2 <- main. + Called from tests/float/conv.i:106. +[value] Called Frama_C_show_each({0}) +[value] Called Frama_C_show_each({4.94065645841e-324}) +[value] Called Frama_C_show_each([4.94065645841e-322 .. 9.22442153475e+159]) +[value] Called Frama_C_show_each({1.79769313486e+308}) +tests/float/conv.i:74:[value] assertion got status valid. +tests/float/conv.i:77:[value] warning: non-finite double value. assert \is_finite(*((double *)(&i))); +[value] Called Frama_C_show_each([-1.79769313486e+308 .. 1.79769313486e+308]) +tests/float/conv.i:80:[value] warning: non-finite double value. assert \is_finite(*((double *)(&i))); +[value] Called Frama_C_show_each([-1.79769313486e+308 .. 1.79769313486e+308]) +[value] Called Frama_C_show_each({-1.79769313486e+308}) +tests/float/conv.i:85:[value] assertion got status valid. +tests/float/conv.i:88:[value] warning: non-finite double value. assert \is_finite(*((double *)(&i))); +[value] Called Frama_C_show_each([-1.79769313486e+308 .. 1.79769313486e+308]) +[value] Called Frama_C_show_each([0. .. 4.94065645841e-324]) +tests/float/conv.i:94:[value] warning: assertion got status unknown. +tests/float/conv.i:95:[value] warning: non-finite double value. assert \is_finite(*((double *)(&i))); +[value] Called Frama_C_show_each([-1.79769313486e+308 .. 1.79769313486e+308]) +tests/float/conv.i:98:[value] warning: non-finite double value. assert \is_finite(*((double *)(&i))); +[value] Called Frama_C_show_each([-1.79769313486e+308 .. 1.79769313486e+308]) +tests/float/conv.i:101:[value] warning: non-finite double value. assert \is_finite(*((double *)(&ui))); +[value] Called Frama_C_show_each([-1.79769313486e+308 .. 1.79769313486e+308]) +[value] Recording results for main2 +[value] Done for function main2 +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main1: + f ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + i ∈ {0; 0x7FFFFFFF} + ui ∈ {0xFFFFFFFF} +[value:final-states] Values at end of function main2: + d ∈ {-1.79769313486e+308} + i ∈ {-1; 0} + ui ∈ {0xFFFFFFFFFFFFFFFF} +[value:final-states] Values at end of function main: + f ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + d ∈ {-1.79769313486e+308} +[from] Computing for function main1 +[from] Done for function main1 +[from] Computing for function main2 +[from] Done for function main2 +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main1: + f FROM \nothing +[from] Function main2: + d FROM \nothing +[from] Function main: + f FROM \nothing + d FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main1: + f; i; ui +[inout] Inputs for function main1: + f; v +[inout] Out (internal) for function main2: + d; i; ui +[inout] Inputs for function main2: + d; v +[inout] Out (internal) for function main: + f; d +[inout] Inputs for function main: + f; d; v diff --git a/tests/float/oracle_symblocs/cte_overflow.err.oracle b/tests/float/oracle_symblocs/cte_overflow.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/float/oracle_symblocs/cte_overflow.res.oracle b/tests/float/oracle_symblocs/cte_overflow.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..8ee7263887eadcbaa81094585255ef10a3f2426c --- /dev/null +++ b/tests/float/oracle_symblocs/cte_overflow.res.oracle @@ -0,0 +1,30 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/float/cte_overflow.i (no preprocessing) +tests/float/cte_overflow.i:12:[kernel] warning: Floating-point constant 1e500 is not represented exactly. Will use inf +tests/float/cte_overflow.i:12:[kernel] warning: Floating-point constant 1e500 is not represented exactly. Will use inf +tests/float/cte_overflow.i:17:[kernel] warning: Floating-point constant 1e80f is not represented exactly. Will use inf +tests/float/cte_overflow.i:17:[kernel] warning: Floating-point constant 1e500f is not represented exactly. Will use inf +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + v ∈ [--..--] +tests/float/cte_overflow.i:12:[value] warning: non-finite double value. assert \is_finite(1e500); +tests/float/cte_overflow.i:17:[value] warning: non-finite float value. assert \is_finite(1e80f); +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + t ∈ {0} + __retres ∈ {0} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + t; __retres +[inout] Inputs for function main: + v diff --git a/tests/float/oracle_symblocs/dr.0.err.oracle b/tests/float/oracle_symblocs/dr.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/float/oracle_symblocs/dr.0.res.oracle b/tests/float/oracle_symblocs/dr.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..f24ae0e40a5aafd6859c9d96e8923375688edb06 --- /dev/null +++ b/tests/float/oracle_symblocs/dr.0.res.oracle @@ -0,0 +1,53 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/float/dr.i (no preprocessing) +tests/float/dr.i:6:[kernel] warning: Floating-point constant 100e30f is not represented exactly. Will use 0x1.3b8b5c0000000p106. See documentation for option -warn-decimal-float +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + big ∈ {1.00000003318e+32} + big2 ∈ {1.00126002403e+32} + ne1 ∈ {-0.10000000149} + ne2 ∈ {-0.5} + nodigits ∈ {10.} + smaller ∈ {0} + he ∈ {3.} + g1 ∈ {0.10000000149} + f1 ∈ {0.10000000149} + f9 ∈ {1.} + ep ∈ {12499999744.} + g2 ∈ {1.01161122322} + f2 ∈ {1.01161134243} + d2 ∈ {1.01161128283} + e1 ∈ {0} + e2 ∈ {0} +[value] computing for function printf <- main. + Called from tests/float/dr.i:27. +tests/float/dr.i:27:[kernel] warning: Neither code nor specification for function printf, generating default assigns from the prototype +[value] using specification for function printf +[value] Done for function printf +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + e1 ∈ {1} + e2 ∈ {0} + __retres ∈ {0} +[from] Computing for function main +[from] Computing for function printf <-main +[from] Done for function printf +tests/float/dr.i:27:[from] warning: variadic call detected. Using only 1 argument(s). +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function printf: + \result FROM "%d %d\n"[bits 0 to 55] +[from] Function main: + e1 FROM g1; f1 + e2 FROM g2; f2 + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + e1; e2; __retres +[inout] Inputs for function main: + g1; f1; g2; f2; e1; e2; "%d %d\n"[bits 0 to 55] diff --git a/tests/float/oracle_symblocs/dr.1.err.oracle b/tests/float/oracle_symblocs/dr.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/float/oracle_symblocs/dr.1.res.oracle b/tests/float/oracle_symblocs/dr.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..a1821a3db2a18bb62f9838266e0e6ebbe037a5cd --- /dev/null +++ b/tests/float/oracle_symblocs/dr.1.res.oracle @@ -0,0 +1,53 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/float/dr.i (no preprocessing) +tests/float/dr.i:6:[kernel] warning: Floating-point constant 100e30f is not represented exactly. Will use 0x1.3b8b5c0000000p106. See documentation for option -warn-decimal-float +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + big ∈ {0x1.3b8b5c0000000p106} + big2 ∈ {0x1.3bf1240000000p106} + ne1 ∈ {-0x1.99999a0000000p-4} + ne2 ∈ {-0x1.0000000000000p-1} + nodigits ∈ {0x1.4000000000000p3} + smaller ∈ {0} + he ∈ {0x1.8000000000000p1} + g1 ∈ {0x1.99999a0000000p-4} + f1 ∈ {0x1.99999a0000000p-4} + f9 ∈ {0x1.0000000000000p0} + ep ∈ {0x1.74876e0000000p33} + g2 ∈ {0x1.02f8f40000000p0} + f2 ∈ {0x1.02f8f60000000p0} + d2 ∈ {0x1.02f8f50000000p0} + e1 ∈ {0} + e2 ∈ {0} +[value] computing for function printf <- main. + Called from tests/float/dr.i:27. +tests/float/dr.i:27:[kernel] warning: Neither code nor specification for function printf, generating default assigns from the prototype +[value] using specification for function printf +[value] Done for function printf +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + e1 ∈ {1} + e2 ∈ {0} + __retres ∈ {0} +[from] Computing for function main +[from] Computing for function printf <-main +[from] Done for function printf +tests/float/dr.i:27:[from] warning: variadic call detected. Using only 1 argument(s). +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function printf: + \result FROM "%d %d\n"[bits 0 to 55] +[from] Function main: + e1 FROM g1; f1 + e2 FROM g2; f2 + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + e1; e2; __retres +[inout] Inputs for function main: + g1; f1; g2; f2; e1; e2; "%d %d\n"[bits 0 to 55] diff --git a/tests/float/oracle_symblocs/dr_infinity.err.oracle b/tests/float/oracle_symblocs/dr_infinity.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/float/oracle_symblocs/dr_infinity.res.oracle b/tests/float/oracle_symblocs/dr_infinity.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..7db9b42344fb61011c978892bfc9b4e941e47919 --- /dev/null +++ b/tests/float/oracle_symblocs/dr_infinity.res.oracle @@ -0,0 +1,40 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/float/dr_infinity.i (no preprocessing) +tests/float/dr_infinity.i:8:[kernel] warning: Floating-point constant 3.4028235677973366e+38f is not represented exactly. Will use 0x1.fffffe0000000p127 +tests/float/dr_infinity.i:11:[kernel] warning: Floating-point constant 3.402823567797366e+38 is not represented exactly. Will use 0x1.ffffff000004ep127 +tests/float/dr_infinity.i:15:[kernel] warning: Floating-point constant 3.4e38 is not represented exactly. Will use 0x1.ff933c78cdfadp127 +tests/float/dr_infinity.i:20:[kernel] warning: Floating-point constant 1e308 is not represented exactly. Will use 0x1.1ccf385ebc8a0p1023 +tests/float/dr_infinity.i:30:[kernel] warning: Floating-point constant 1e308 is not represented exactly. Will use 0x1.1ccf385ebc8a0p1023 +tests/float/dr_infinity.i:31:[kernel] warning: Floating-point constant 0.01 is not represented exactly. Will use 0x1.47ae147ae147bp-7 +tests/float/dr_infinity.i:35:[kernel] warning: Floating-point constant 1e38 is not represented exactly. Will use 0x1.2ced32a16a1b1p126 +tests/float/dr_infinity.i:36:[kernel] warning: Floating-point constant 0.001 is not represented exactly. Will use 0x1.0624dd2f1a9fcp-10 +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + v ∈ [--..--] +[value] Called Frama_C_show_each({0x1.fffffe0000000p127}) +tests/float/dr_infinity.i:11:[value] warning: non-finite float value. assert \is_finite((float)3.402823567797366e+38); +tests/float/dr_infinity.i:16:[value] warning: non-finite float value. assert \is_finite((float)(x*x)); +tests/float/dr_infinity.i:21:[value] warning: non-finite double value. assert \is_finite((double)(d*(double)10)); +tests/float/dr_infinity.i:26:[value] warning: non-finite double value. assert \is_finite((double)((double)2/d)); +tests/float/dr_infinity.i:31:[value] warning: non-finite double value. assert \is_finite((double)(d/0.01)); +tests/float/dr_infinity.i:36:[value] warning: non-finite float value. + assert \is_finite((float)((double)((double)x/0.001))); +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + x ∈ {0x1.fffffe0000000p127} + d ∈ UNINITIALIZED +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + x; d +[inout] Inputs for function main: + v diff --git a/tests/float/oracle_symblocs/extract_bits.0.err.oracle b/tests/float/oracle_symblocs/extract_bits.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/float/oracle_symblocs/extract_bits.0.res.oracle b/tests/float/oracle_symblocs/extract_bits.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..07254c1d183a9623aa37d12fa1b168e56204da53 --- /dev/null +++ b/tests/float/oracle_symblocs/extract_bits.0.res.oracle @@ -0,0 +1,34 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/float/extract_bits.i (no preprocessing) +tests/float/extract_bits.i:6:[kernel] warning: Floating-point constant 3.14 is not represented exactly. Will use 0x1.91eb851eb851fp1 +tests/float/extract_bits.i:7:[kernel] warning: Floating-point constant 2.71 is not represented exactly. Will use 0x1.5ae147ae147aep1 +tests/float/extract_bits.i:9:[kernel] warning: Floating-point constant 1.8254370818746402660437411213933955878019332885742187 is not represented exactly. Will use 0x1.d34fd8378ea83p0 +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + f ∈ {3.1400001049041748} + d ∈ {2.7099999999999999} + stdtod_bug ∈ {1.8254370818746401} + fr[0..0x3] ∈ {0} + dr[0..0x7] ∈ {0} +[value] user error: type long double not implemented. Using double instead +[value] Called Frama_C_show_each([0..0xFF]) +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + fr[0] ∈ {0x40} + [0x1] ∈ {0x48} + [0x2] ∈ {0xF5} + [0x3] ∈ {0xC3} + dr[0] ∈ {0x40} + [0x1] ∈ {0x5} + [0x2] ∈ {0xAE} + [0x3] ∈ {0x14} + [0x4] ∈ {0x7A} + [0x5] ∈ {0xE1} + [0x6] ∈ {0x47} + [0x7] ∈ {0xAE} + i ∈ {0x8} + x ∈ {1.0000000000000000} diff --git a/tests/float/oracle_symblocs/extract_bits.1.err.oracle b/tests/float/oracle_symblocs/extract_bits.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/float/oracle_symblocs/extract_bits.1.res.oracle b/tests/float/oracle_symblocs/extract_bits.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e6c1e9d712c7dbb91cc2c0f959f4dea949ee862c --- /dev/null +++ b/tests/float/oracle_symblocs/extract_bits.1.res.oracle @@ -0,0 +1,34 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/float/extract_bits.i (no preprocessing) +tests/float/extract_bits.i:6:[kernel] warning: Floating-point constant 3.14 is not represented exactly. Will use 0x1.91eb851eb851fp1 +tests/float/extract_bits.i:7:[kernel] warning: Floating-point constant 2.71 is not represented exactly. Will use 0x1.5ae147ae147aep1 +tests/float/extract_bits.i:9:[kernel] warning: Floating-point constant 1.8254370818746402660437411213933955878019332885742187 is not represented exactly. Will use 0x1.d34fd8378ea83p0 +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + f ∈ {3.1400001049041748} + d ∈ {2.7099999999999999} + stdtod_bug ∈ {1.8254370818746401} + fr[0..0x3] ∈ {0} + dr[0..0x7] ∈ {0} +[value] user error: type long double not implemented. Using double instead +[value] Called Frama_C_show_each([0..0xFF]) +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + fr[0] ∈ {0xC3} + [0x1] ∈ {0xF5} + [0x2] ∈ {0x48} + [0x3] ∈ {0x40} + dr[0] ∈ {0xAE} + [0x1] ∈ {0x47} + [0x2] ∈ {0xE1} + [0x3] ∈ {0x7A} + [0x4] ∈ {0x14} + [0x5] ∈ {0xAE} + [0x6] ∈ {0x5} + [0x7] ∈ {0x40} + i ∈ {0x8} + x ∈ {1.0000000000000000} diff --git a/tests/float/oracle_symblocs/float_cast_implicite.err.oracle b/tests/float/oracle_symblocs/float_cast_implicite.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/float/oracle_symblocs/float_cast_implicite.res.oracle b/tests/float/oracle_symblocs/float_cast_implicite.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..903f5d3853e1bd2c2b56d5aef968d77dbf609cd1 --- /dev/null +++ b/tests/float/oracle_symblocs/float_cast_implicite.res.oracle @@ -0,0 +1,56 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/float/float_cast_implicite.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + C0 ∈ {0} + C2 ∈ {2} + CBP ∈ {2000000000} + fic0 ∈ {0} + fic1 ∈ {0} + fic2 ∈ {0} + fic4 ∈ {0} + fec0 ∈ {0} + fec2 ∈ {0} + fec4 ∈ {0} + ficbp ∈ {0} + ficbn ∈ {0} + fecbp ∈ {0} + fecbn ∈ {0} +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + fic0 ∈ {0} + fic1 ∈ {1.} + fic2 ∈ {2.} + fic4 ∈ {4.} + fec0 ∈ {0} + fec2 ∈ {2.} + fec4 ∈ {4.} + ficbp ∈ {2000000000.} + ficbn ∈ {-2000000000.} + fecbp ∈ {2000000000.} + fecbn ∈ {-2000000000.} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + fic0 FROM C0 + fic1 FROM \nothing + fic2 FROM C2 + fic4 FROM C2 + fec0 FROM C0 + fec2 FROM C2 + fec4 FROM C2 + ficbp FROM CBP + ficbn FROM CBP + fecbp FROM CBP + fecbn FROM CBP +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + fic0; fic1; fic2; fic4; fec0; fec2; fec4; ficbp; ficbn; fecbp; fecbn +[inout] Inputs for function main: + C0; C2; CBP diff --git a/tests/float/oracle_symblocs/init_float.err.oracle b/tests/float/oracle_symblocs/init_float.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/float/oracle_symblocs/init_float.res.oracle b/tests/float/oracle_symblocs/init_float.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..c948ef470e1505325d52ed29bb1071713df75a57 --- /dev/null +++ b/tests/float/oracle_symblocs/init_float.res.oracle @@ -0,0 +1,41 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/float/init_float.i (no preprocessing) +[value] Analyzing an incomplete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + s.y ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + r ∈ [-1.9999999999999998*2^1023 .. 1.9999999999999998*2^1023] + cv ∈ [-1.9999999999999998*2^1023 .. 1.9999999999999998*2^1023] + un ∈ [-1.9999999999999998*2^1023 .. 1.9999999999999998*2^1023] + zp ∈ [-1.9999999999999998*2^1023 .. 1.9999999999999998*2^1023] + zm ∈ [-1.9999999999999998*2^1023 .. 1.9999999999999998*2^1023] + zs ∈ [-1.9999999999999998*2^1023 .. 1.9999999999999998*2^1023] + l ∈ [--..--] + Ha[0..4] ∈ [-1.9999999999999998*2^1023 .. 1.9999999999999998*2^1023] + THa[0..4] ∈ [-1.9999999999999998*2^1023 .. 1.9999999999999998*2^1023] +tests/float/init_float.i:16:[value] warning: function main: precondition got status unknown. +tests/float/init_float.i:17:[value] warning: function main: precondition got status unknown. +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + s.y ∈ [-0.0000000000000000 .. 0.0000000000000000] + r ∈ [-1000.0000000000000000 .. 1000.0000000000000000] + cv ∈ [1.0000000715686179 .. 1.6096441013214644*2^20] + un ∈ {1.0000000000000000} + zp ∈ {0} + zm ∈ {-0.0000000000000000} + zs ∈ {0} + l ∈ [4500000000000000001..4700000000000000000] + Ha[0] ∈ {1.9999999999999982*2^-2} + [1] ∈ {1.9999999999999991*2^-2} + [2] ∈ {1.0000000000000000*2^-1} + [3] ∈ {1.0000000000000004*2^-1} + [4] ∈ {1.0000000000000008*2^-1} + THa[0] ∈ {1.4999999999999996} + [1] ∈ {1.4999999999999998} + [2] ∈ {1.5000000000000000} + [3] ∈ {1.5000000000000002} + [4] ∈ {1.5000000000000004} + __retres ∈ {1} diff --git a/tests/float/oracle_symblocs/leaf_ensures.err.oracle b/tests/float/oracle_symblocs/leaf_ensures.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/float/oracle_symblocs/leaf_ensures.res.oracle b/tests/float/oracle_symblocs/leaf_ensures.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..d5d303f2e09df33fcc6f9c9dd42a36a22c59926e --- /dev/null +++ b/tests/float/oracle_symblocs/leaf_ensures.res.oracle @@ -0,0 +1,73 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/float/leaf_ensures.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + d1 ∈ {0} + d2 ∈ {0} + d3 ∈ {0} + d4 ∈ {0} + f1 ∈ {0} + f2 ∈ {0} + f3 ∈ {0} + f4 ∈ {0} + y ∈ {0} +[value] computing for function d <- main. + Called from tests/float/leaf_ensures.i:24. +[value] using specification for function d +tests/float/leaf_ensures.i:4:[value] warning: no \from part for clause 'assigns d1, d2, d3;' of function d +tests/float/leaf_ensures.i:10:[value] warning: no 'assigns \result \from ...' clause specified for function d +[value] Done for function d +[value] computing for function f <- main. + Called from tests/float/leaf_ensures.i:25. +[value] using specification for function f +tests/float/leaf_ensures.i:14:[value] warning: no \from part for clause 'assigns f1, f2, f3;' of function f +tests/float/leaf_ensures.i:20:[value] warning: no 'assigns \result \from ...' clause specified for function f +[value] Done for function f +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + d1 ∈ [-1.79769313486e+308 .. 1.79769313486e+308] + d2 ∈ [-1. .. 1.] + d3 ∈ [--..--] + d4 ∈ [-1.79769313486e+308 .. 1.79769313486e+308] + f1 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + f2 ∈ [-0.999999940395 .. 0.999999940395] + f3 ∈ [--..--] + f4 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + __retres ∈ {0} +[from] Computing for function main +[from] Computing for function d <-main +[from] Done for function d +[from] Computing for function f <-main +[from] Done for function f +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function d: + d1 FROM ANYTHING(origin:Unknown) (and SELF) + d2 FROM ANYTHING(origin:Unknown) (and SELF) + d3 FROM ANYTHING(origin:Unknown) (and SELF) + \result FROM ANYTHING(origin:Unknown) +[from] Function f: + f1 FROM ANYTHING(origin:Unknown) (and SELF) + f2 FROM ANYTHING(origin:Unknown) (and SELF) + f3 FROM ANYTHING(origin:Unknown) (and SELF) + \result FROM ANYTHING(origin:Unknown) +[from] Function main: + d1 FROM ANYTHING(origin:Unknown) (and SELF) + d2 FROM ANYTHING(origin:Unknown) (and SELF) + d3 FROM ANYTHING(origin:Unknown) (and SELF) + d4 FROM ANYTHING(origin:Unknown) + f1 FROM ANYTHING(origin:Unknown) (and SELF) + f2 FROM ANYTHING(origin:Unknown) (and SELF) + f3 FROM ANYTHING(origin:Unknown) (and SELF) + f4 FROM ANYTHING(origin:Unknown) + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + d1; d2; d3; d4; f1; f2; f3; f4; __retres +[inout] Inputs for function main: + ANYTHING(origin:Unknown) diff --git a/tests/float/oracle_symblocs/logic.err.oracle b/tests/float/oracle_symblocs/logic.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/float/oracle_symblocs/logic.res.oracle b/tests/float/oracle_symblocs/logic.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..68f00bfad9d6b38c9f8645e93cfb0f591f1c5255 --- /dev/null +++ b/tests/float/oracle_symblocs/logic.res.oracle @@ -0,0 +1,99 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/float/logic.i (no preprocessing) +tests/float/logic.i:11:[kernel] warning: Floating-point constant 0.1 is not represented exactly. Will use 0x1.999999999999ap-4 +tests/float/logic.i:16:[kernel] warning: Floating-point constant 0.1 is not represented exactly. Will use 0x1.999999999999ap-4 +tests/float/logic.i:21:[kernel] warning: Floating-point constant 0.1 is not represented exactly. Will use 0x1.999999999999ap-4 +tests/float/logic.i:70:[kernel] warning: Floating-point constant 3.3 is not represented exactly. Will use 0x1.a666666666666p1 +tests/float/logic.i:71:[kernel] warning: Floating-point constant 3.3 is not represented exactly. Will use 0x1.a666666666666p1 +tests/float/logic.i:74:[kernel] warning: Floating-point constant 3.3 is not represented exactly. Will use 0x1.a666666666666p1 +tests/float/logic.i:77:[kernel] warning: Floating-point constant 3.3 is not represented exactly. Will use 0x1.a666666666666p1 +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + v ∈ [--..--] + undet ∈ [--..--] + top_int ∈ [--..--] +tests/float/logic.i:12:[value] warning: assertion got status unknown. +tests/float/logic.i:17:[value] warning: assertion got status invalid (stopping propagation). +tests/float/logic.i:22:[value] assertion got status valid. +[value] computing for function test_is_finite <- main. + Called from tests/float/logic.i:27. +tests/float/logic.i:50:[value] assertion got status valid. +tests/float/logic.i:51:[value] warning: assertion got status unknown. +tests/float/logic.i:59:[value] warning: assertion got status unknown. +tests/float/logic.i:67:[value] warning: assertion got status unknown. +[value] computing for function my_fabs <- test_is_finite <- main. + Called from tests/float/logic.i:70. +[value] using specification for function my_fabs +[value] Done for function my_fabs +[value] computing for function my_fabs <- test_is_finite <- main. + Called from tests/float/logic.i:71. +[value] Done for function my_fabs +[value] computing for function my_ratio <- test_is_finite <- main. + Called from tests/float/logic.i:74. +[value] using specification for function my_ratio +tests/float/logic.i:46:[value] warning: no 'assigns \result \from ...' clause specified for function my_ratio +[value] Done for function my_ratio +[value] computing for function my_ratio_body <- test_is_finite <- main. + Called from tests/float/logic.i:77. +[value] computing for function my_fabs <- my_ratio_body <- test_is_finite <- main. + Called from tests/float/logic.i:41. +[value] Done for function my_fabs +tests/float/logic.i:39:[value] function my_ratio_body: postcondition got status valid. +tests/float/logic.i:40:[value] function my_ratio_body: postcondition got status valid. +[value] Recording results for my_ratio_body +[value] Done for function my_ratio_body +[value] Recording results for test_is_finite +[value] Done for function test_is_finite +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function my_ratio_body: + __retres ∈ {-0x1.bca1b00000000p-1} +[value:final-states] Values at end of function test_is_finite: + f1 ∈ [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + f2 ∈ [--..--] + f3 ∈ [--..--] + p ∈ {{ &f2 ; &f3 }} + g1 ∈ {0x1.a666660000000p1} + g2 ∈ {0x1.a666660000000p1} + g3 ∈ [-0x1.fffffe0000000p-1 .. 0x1.fffffe0000000p-1] + g4 ∈ {-0x1.bca1b00000000p-1} +[value:final-states] Values at end of function main: + __retres ∈ {0} +[from] Computing for function my_ratio_body +[from] Computing for function my_fabs <-my_ratio_body +[from] Done for function my_fabs +[from] Done for function my_ratio_body +[from] Computing for function test_is_finite +[from] Computing for function my_ratio <-test_is_finite +[from] Done for function my_ratio +[from] Done for function test_is_finite +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function my_fabs: + \result FROM f +[from] Function my_ratio: + \result FROM ANYTHING(origin:Unknown) +[from] Function my_ratio_body: + \result FROM f +[from] Function test_is_finite: + NO EFFECTS +[from] Function main: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function my_ratio_body: + tmp; __retres +[inout] Inputs for function my_ratio_body: + \nothing +[inout] Out (internal) for function test_is_finite: + f1; f2; f3; p; g1; g2; g3; g4 +[inout] Inputs for function test_is_finite: + undet; top_int +[inout] Out (internal) for function main: + d; d_0; f; __retres +[inout] Inputs for function main: + v; undet; top_int diff --git a/tests/float/oracle_symblocs/math_builtins.err.oracle b/tests/float/oracle_symblocs/math_builtins.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/float/oracle_symblocs/math_builtins.res.oracle b/tests/float/oracle_symblocs/math_builtins.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..fe455f4116ff81d592a485ff4f26f8caeed89d76 --- /dev/null +++ b/tests/float/oracle_symblocs/math_builtins.res.oracle @@ -0,0 +1,3671 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/float/math_builtins.c (with preprocessing) +tests/float/math_builtins.c:248:[kernel] warning: Floating-point constant 5.8 is not represented exactly. Will use 0x1.7333333333333p2. See documentation for option -warn-decimal-float +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + __FC_errno ∈ [--..--] + nondet ∈ [--..--] +[value] computing for function test_cos_det <- main. + Called from tests/float/math_builtins.c:656. +[value] Recording results for test_cos_det +[value] Done for function test_cos_det +[value] computing for function test_sin_det <- main. + Called from tests/float/math_builtins.c:657. +[value] Recording results for test_sin_det +[value] Done for function test_sin_det +[value] computing for function test_atan2_det <- main. + Called from tests/float/math_builtins.c:658. +[value] Recording results for test_atan2_det +[value] Done for function test_atan2_det +[value] computing for function test_atan2 <- main. + Called from tests/float/math_builtins.c:659. +[value] computing for function double_interval <- test_atan2 <- main. + Called from tests/float/math_builtins.c:46. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_atan2 <- main. + Called from tests/float/math_builtins.c:47. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_atan2 <- main. + Called from tests/float/math_builtins.c:49. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_atan2 <- main. + Called from tests/float/math_builtins.c:51. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_atan2 <- main. + Called from tests/float/math_builtins.c:53. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_atan2 <- main. + Called from tests/float/math_builtins.c:55. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_atan2 <- main. + Called from tests/float/math_builtins.c:57. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_atan2 <- main. + Called from tests/float/math_builtins.c:58. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_atan2 <- main. + Called from tests/float/math_builtins.c:60. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_atan2 <- main. + Called from tests/float/math_builtins.c:62. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_atan2 <- main. + Called from tests/float/math_builtins.c:64. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_atan2 <- main. + Called from tests/float/math_builtins.c:66. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] Recording results for test_atan2 +[value] Done for function test_atan2 +[value] computing for function test_pow_det <- main. + Called from tests/float/math_builtins.c:660. +[value] Recording results for test_pow_det +[value] Done for function test_pow_det +[value] computing for function test_pow_singleton_exp <- main. + Called from tests/float/math_builtins.c:661. +[value] computing for function double_interval <- test_pow_singleton_exp <- main. + Called from tests/float/math_builtins.c:98. +[value] Recording results for double_interval +[value] Done for function double_interval +tests/float/math_builtins.c:100:[value] warning: builtin Frama_C_pow: completely out-of-range arguments + ([-3.5000000000000000 .. -2.7500000000000000], {1.5000000000000000}): + negative base and noninteger exponent, computation may result in NaN +tests/float/math_builtins.c:102:[value] warning: builtin Frama_C_pow: completely out-of-range arguments + ([-3.5000000000000000 .. -2.7500000000000000], {-1.5000000000000000}): + negative base and noninteger exponent, computation may result in NaN +[value] computing for function double_interval <- test_pow_singleton_exp <- main. + Called from tests/float/math_builtins.c:105. +[value] Recording results for double_interval +[value] Done for function double_interval +tests/float/math_builtins.c:106:[value] warning: builtin Frama_C_pow: out-of-range arguments + ([-3.5000000000000000 .. 2.7500000000000000], {1.5000000000000000}): + negative base and noninteger exponent, computation may result in NaN +tests/float/math_builtins.c:107:[value] warning: builtin Frama_C_pow: out-of-range arguments + ([-3.5000000000000000 .. 2.7500000000000000], {-1.5000000000000000}): + negative base and noninteger exponent, computation may result in +oo/NaN +tests/float/math_builtins.c:110:[value] warning: builtin Frama_C_pow: out-of-range arguments + ([-3.5000000000000000 .. 2.7500000000000000], {-3.0000000000000000}), + computation may result in +oo/-oo +tests/float/math_builtins.c:111:[value] warning: builtin Frama_C_pow: out-of-range arguments + ([-3.5000000000000000 .. 2.7500000000000000], {-2.0000000000000000}), + computation may result in +oo +[value] computing for function double_interval <- test_pow_singleton_exp <- main. + Called from tests/float/math_builtins.c:114. +[value] Recording results for double_interval +[value] Done for function double_interval +tests/float/math_builtins.c:115:[value] warning: builtin Frama_C_pow: out-of-range arguments + ([1.0000000000000000*2^50 .. 1.0000000000000000*2^62], {19.5000000000000000}) + , computation may result in +oo +[value] computing for function double_interval <- test_pow_singleton_exp <- main. + Called from tests/float/math_builtins.c:116. +[value] Recording results for double_interval +[value] Done for function double_interval +tests/float/math_builtins.c:117:[value] warning: builtin Frama_C_pow: out-of-range arguments + ([-1.0000000000000000*2^49 .. -1.5000000000000000*2^-1], {23.0000000000000000}) + , computation may result in -oo +[value] computing for function double_interval <- test_pow_singleton_exp <- main. + Called from tests/float/math_builtins.c:120. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] Called Frama_C_show_each_i([0.0000000000000000 .. 1.0000000000000000*2^-1000]) +[value] computing for function double_interval <- test_pow_singleton_exp <- main. + Called from tests/float/math_builtins.c:123. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] Called Frama_C_show_each_j([0.2500000000000000*2^-1022 .. 1.2707064924076672*2^-330]) +[value] computing for function double_interval <- test_pow_singleton_exp <- main. + Called from tests/float/math_builtins.c:132. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_pow_singleton_exp <- main. + Called from tests/float/math_builtins.c:139. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] Recording results for test_pow_singleton_exp +[value] Done for function test_pow_singleton_exp +[value] computing for function test_pow <- main. + Called from tests/float/math_builtins.c:662. +[value] computing for function double_interval <- test_pow <- main. + Called from tests/float/math_builtins.c:147. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_pow <- main. + Called from tests/float/math_builtins.c:149. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_pow <- main. + Called from tests/float/math_builtins.c:151. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_pow <- main. + Called from tests/float/math_builtins.c:158. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_pow <- main. + Called from tests/float/math_builtins.c:159. +[value] Recording results for double_interval +[value] Done for function double_interval +tests/float/math_builtins.c:160:[value] warning: builtin Frama_C_pow: out-of-range arguments + ([-4.0000000000000000 .. 7.5000000000000000], [2.1250000000000000 .. 2.8750000000000000]) + : negative base and noninteger exponent, computation may result in NaN +[value] computing for function double_interval <- test_pow <- main. + Called from tests/float/math_builtins.c:161. +[value] Recording results for double_interval +[value] Done for function double_interval +tests/float/math_builtins.c:162:[value] warning: builtin Frama_C_pow: out-of-range arguments + ([-4.0000000000000000 .. 7.5000000000000000], [2.1250000000000000 .. 4.8750000000000000]) + : negative base and noninteger exponent, computation may result in NaN +[value] computing for function double_interval <- test_pow <- main. + Called from tests/float/math_builtins.c:163. +[value] Recording results for double_interval +[value] Done for function double_interval +tests/float/math_builtins.c:164:[value] warning: builtin Frama_C_pow: out-of-range arguments + ([-4.0000000000000000 .. 7.5000000000000000], [2.0000000000000000 .. 3.0000000000000000]) + : negative base and noninteger exponent, computation may result in NaN +[value] computing for function double_interval <- test_pow <- main. + Called from tests/float/math_builtins.c:165. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_pow <- main. + Called from tests/float/math_builtins.c:166. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_pow <- main. + Called from tests/float/math_builtins.c:170. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_pow <- main. + Called from tests/float/math_builtins.c:171. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_pow <- main. + Called from tests/float/math_builtins.c:175. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_pow <- main. + Called from tests/float/math_builtins.c:176. +[value] Recording results for double_interval +[value] Done for function double_interval +tests/float/math_builtins.c:177:[value] warning: builtin Frama_C_pow: out-of-range arguments + ([-1.0000000000000000 .. 1.0000000000000000], [-1.0000000000000000 .. 1.0000000000000000]) + : negative base and noninteger exponent, + computation may result in +oo/-oo/NaN +[value] computing for function double_interval <- test_pow <- main. + Called from tests/float/math_builtins.c:178. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_pow <- main. + Called from tests/float/math_builtins.c:179. +[value] Recording results for double_interval +[value] Done for function double_interval +tests/float/math_builtins.c:180:[value] warning: builtin Frama_C_pow: out-of-range arguments + ([-1.0000000000000000 .. 1.0000000000000000], [-1.0000000000000000*2^-1 .. 1.0000000000000000]) + : negative base and noninteger exponent, computation may result in +oo/NaN +[value] computing for function double_interval <- test_pow <- main. + Called from tests/float/math_builtins.c:184. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_pow <- main. + Called from tests/float/math_builtins.c:185. +[value] Recording results for double_interval +[value] Done for function double_interval +tests/float/math_builtins.c:186:[value] warning: builtin Frama_C_pow: out-of-range arguments + ([-13.0000000000000000 .. 430.0000000000000000], [3.0000000000000000 .. 6.0000000000000000]) + : negative base and noninteger exponent, computation may result in NaN +[value] computing for function double_interval <- test_pow <- main. + Called from tests/float/math_builtins.c:189. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_pow <- main. + Called from tests/float/math_builtins.c:190. +[value] Recording results for double_interval +[value] Done for function double_interval +tests/float/math_builtins.c:191:[value] warning: builtin Frama_C_pow: out-of-range arguments + ([-4.0000000000000000 .. -2.0000000000000000], [3.0000000000000000 .. 5.0000000000000000]) + : negative base and noninteger exponent, computation may result in NaN +[value] computing for function double_interval <- test_pow <- main. + Called from tests/float/math_builtins.c:194. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_pow <- main. + Called from tests/float/math_builtins.c:195. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_pow <- main. + Called from tests/float/math_builtins.c:199. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_pow <- main. + Called from tests/float/math_builtins.c:200. +[value] Recording results for double_interval +[value] Done for function double_interval +tests/float/math_builtins.c:201:[value] warning: builtin Frama_C_pow: out-of-range arguments + ([-0.0000000000000000 .. 10.0000000000000000], [-3.5000000000000000 .. 4.5000000000000000]) + , computation may result in +oo/-oo +[value] computing for function double_interval <- test_pow <- main. + Called from tests/float/math_builtins.c:204. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_pow <- main. + Called from tests/float/math_builtins.c:205. +[value] Recording results for double_interval +[value] Done for function double_interval +tests/float/math_builtins.c:206:[value] warning: builtin Frama_C_pow: completely out-of-range arguments + ([-5.0000000000000000 .. -1.0000000000000000*2^-1], [-1.7500000000000000*2^-1 .. -1.0000000000000000*2^-3]) + : negative base and noninteger exponent, computation may result in NaN +[value] computing for function double_interval <- test_pow <- main. + Called from tests/float/math_builtins.c:207. +[value] Recording results for double_interval +[value] Done for function double_interval +tests/float/math_builtins.c:208:[value] warning: builtin Frama_C_pow: out-of-range arguments + ([-5.0000000000000000 .. -1.0000000000000000*2^-1], [-1.0000000000000000*2^-2 .. 1.0000000000000000*2^-2]) + : negative base and noninteger exponent, computation may result in NaN +[value] computing for function double_interval <- test_pow <- main. + Called from tests/float/math_builtins.c:209. +[value] Recording results for double_interval +[value] Done for function double_interval +tests/float/math_builtins.c:210:[value] warning: builtin Frama_C_pow: out-of-range arguments + ([-5.0000000000000000 .. -1.0000000000000000*2^-1], [10.0000000000000000 .. 11.5000000000000000]) + : negative base and noninteger exponent, computation may result in NaN +[value] computing for function double_interval <- test_pow <- main. + Called from tests/float/math_builtins.c:211. +[value] Recording results for double_interval +[value] Done for function double_interval +tests/float/math_builtins.c:212:[value] warning: builtin Frama_C_pow: out-of-range arguments + ([-5.0000000000000000 .. -1.0000000000000000*2^-1], [-1.2056274414062500*2^13 .. 1234.5000000000000000]) + : negative base and noninteger exponent, + computation may result in +oo/-oo/NaN +[value] computing for function double_interval <- test_pow <- main. + Called from tests/float/math_builtins.c:215. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_pow <- main. + Called from tests/float/math_builtins.c:216. +[value] Recording results for double_interval +[value] Done for function double_interval +tests/float/math_builtins.c:217:[value] warning: builtin Frama_C_pow: result is always non-finite +[value] computing for function double_interval <- test_pow <- main. + Called from tests/float/math_builtins.c:220. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_pow <- main. + Called from tests/float/math_builtins.c:221. +[value] Recording results for double_interval +[value] Done for function double_interval +tests/float/math_builtins.c:222:[value] warning: builtin Frama_C_pow: result is always non-finite +[value] computing for function double_interval <- test_pow <- main. + Called from tests/float/math_builtins.c:224. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] Recording results for test_pow +[value] Done for function test_pow +[value] computing for function test_fmod_det <- main. + Called from tests/float/math_builtins.c:663. +tests/float/math_builtins.c:341:[value] warning: builtin Frama_C_fmod: completely out-of-range arguments + ({1.0000000000000000*2^-3}, {0.0000000000000000}): division by zero, + computation may result in NaN +[value] Recording results for test_fmod_det +[value] Done for function test_fmod_det +[value] computing for function test_fmod <- main. + Called from tests/float/math_builtins.c:664. +[value] computing for function double_interval <- test_fmod <- main. + Called from tests/float/math_builtins.c:346. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_fmod <- main. + Called from tests/float/math_builtins.c:351. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_fmod <- main. + Called from tests/float/math_builtins.c:354. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_fmod <- main. + Called from tests/float/math_builtins.c:355. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_fmod <- main. + Called from tests/float/math_builtins.c:357. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_fmod <- main. + Called from tests/float/math_builtins.c:358. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_fmod <- main. + Called from tests/float/math_builtins.c:361. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_fmod <- main. + Called from tests/float/math_builtins.c:362. +[value] Recording results for double_interval +[value] Done for function double_interval +tests/float/math_builtins.c:363:[value] warning: builtin Frama_C_fmod: out-of-range arguments + ([-9.0000000000000000 .. 8.7500000000000000], [-2.0000000000000000 .. 4.5000000000000000]) + : division by zero, computation may result in NaN +[value] computing for function double_interval <- test_fmod <- main. + Called from tests/float/math_builtins.c:364. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_fmod <- main. + Called from tests/float/math_builtins.c:365. +[value] Recording results for double_interval +[value] Done for function double_interval +tests/float/math_builtins.c:366:[value] warning: builtin Frama_C_fmod: out-of-range arguments + ([-2.0000000000000000 .. 4.5000000000000000], [-9.0000000000000000 .. 8.7500000000000000]) + : division by zero, computation may result in NaN +[value] computing for function double_interval <- test_fmod <- main. + Called from tests/float/math_builtins.c:367. +[value] Recording results for double_interval +[value] Done for function double_interval +tests/float/math_builtins.c:368:[value] warning: builtin Frama_C_fmod: completely out-of-range arguments + ([-2.0000000000000000 .. 4.5000000000000000], [-0.0000000000000000 .. 0.0000000000000000]) + : division by zero, computation may result in NaN +[value] computing for function double_interval <- test_fmod <- main. + Called from tests/float/math_builtins.c:369. +[value] Recording results for double_interval +[value] Done for function double_interval +tests/float/math_builtins.c:370:[value] warning: builtin Frama_C_fmod: out-of-range arguments + ([-2.0000000000000000 .. 4.5000000000000000], [0.0000000000000000 .. 1.0000000000000000*2^-3]) + : division by zero, computation may result in NaN +[value] computing for function double_interval <- test_fmod <- main. + Called from tests/float/math_builtins.c:371. +[value] Recording results for double_interval +[value] Done for function double_interval +tests/float/math_builtins.c:372:[value] warning: builtin Frama_C_fmod: out-of-range arguments + ([-2.0000000000000000 .. 4.5000000000000000], [-1.0000000000000000*2^-3 .. -0.0000000000000000]) + : division by zero, computation may result in NaN +[value] computing for function double_interval <- test_fmod <- main. + Called from tests/float/math_builtins.c:373. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_fmod <- main. + Called from tests/float/math_builtins.c:375. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_fmod <- main. + Called from tests/float/math_builtins.c:377. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_fmod <- main. + Called from tests/float/math_builtins.c:379. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_fmod <- main. + Called from tests/float/math_builtins.c:381. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_fmod <- main. + Called from tests/float/math_builtins.c:383. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_fmod <- main. + Called from tests/float/math_builtins.c:385. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_fmod <- main. + Called from tests/float/math_builtins.c:387. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_fmod <- main. + Called from tests/float/math_builtins.c:389. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_fmod <- main. + Called from tests/float/math_builtins.c:390. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_fmod <- main. + Called from tests/float/math_builtins.c:392. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_fmod <- main. + Called from tests/float/math_builtins.c:394. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_fmod <- main. + Called from tests/float/math_builtins.c:396. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_fmod <- main. + Called from tests/float/math_builtins.c:398. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_fmod <- main. + Called from tests/float/math_builtins.c:399. +[value] Recording results for double_interval +[value] Done for function double_interval +tests/float/math_builtins.c:400:[value] warning: builtin Frama_C_fmod: out-of-range arguments + ([2.0000000000000000 .. 3.0000000000000000], [-4.0000000000000000 .. 5.0000000000000000]) + : division by zero, computation may result in NaN +[value] computing for function double_interval <- test_fmod <- main. + Called from tests/float/math_builtins.c:401. +[value] Recording results for double_interval +[value] Done for function double_interval +tests/float/math_builtins.c:402:[value] warning: builtin Frama_C_fmod: out-of-range arguments + ([-2.0000000000000000 .. 3.0000000000000000], [-4.0000000000000000 .. 5.0000000000000000]) + : division by zero, computation may result in NaN +[value] computing for function double_interval <- test_fmod <- main. + Called from tests/float/math_builtins.c:403. +[value] Recording results for double_interval +[value] Done for function double_interval +tests/float/math_builtins.c:404:[value] warning: builtin Frama_C_fmod: out-of-range arguments + ([-3.0000000000000000 .. 2.0000000000000000], [-4.0000000000000000 .. 5.0000000000000000]) + : division by zero, computation may result in NaN +[value] Recording results for test_fmod +[value] Done for function test_fmod +[value] computing for function test_sqrt_det <- main. + Called from tests/float/math_builtins.c:665. +tests/float/math_builtins.c:410:[value] warning: builtin Frama_C_sqrt: completely out-of-range argument + ({-2.0000000000000000}): negative argument, computation may result in NaN +[value] Recording results for test_sqrt_det +[value] Done for function test_sqrt_det +[value] computing for function test_sqrt <- main. + Called from tests/float/math_builtins.c:666. +[value] computing for function double_interval <- test_sqrt <- main. + Called from tests/float/math_builtins.c:416. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_sqrt <- main. + Called from tests/float/math_builtins.c:418. +[value] Recording results for double_interval +[value] Done for function double_interval +tests/float/math_builtins.c:419:[value] warning: builtin Frama_C_sqrt: out-of-range argument + ([-6.5000000000000000 .. 0.0000000000000000]): negative argument, + computation may result in NaN +[value] computing for function double_interval <- test_sqrt <- main. + Called from tests/float/math_builtins.c:420. +[value] Recording results for double_interval +[value] Done for function double_interval +tests/float/math_builtins.c:421:[value] warning: builtin Frama_C_sqrt: out-of-range argument + ([-6.5000000000000000 .. -0.0000000000000000]): negative argument, + computation may result in NaN +[value] computing for function double_interval <- test_sqrt <- main. + Called from tests/float/math_builtins.c:422. +[value] Recording results for double_interval +[value] Done for function double_interval +tests/float/math_builtins.c:423:[value] warning: builtin Frama_C_sqrt: completely out-of-range argument + ([-6.5000000000000000 .. -1.6000000000000000*2^-4]): negative argument, + computation may result in NaN +[value] Recording results for test_sqrt +[value] Done for function test_sqrt +[value] computing for function test_exp_det <- main. + Called from tests/float/math_builtins.c:667. +tests/float/math_builtins.c:451:[value] warning: builtin Frama_C_exp: result is always non-finite +[value] Recording results for test_exp_det +[value] Done for function test_exp_det +[value] computing for function test_log_det <- main. + Called from tests/float/math_builtins.c:668. +tests/float/math_builtins.c:465:[value] warning: builtin Frama_C_log: completely out-of-range argument ({-2.0000000000000000}) + : negative argument, computation may result in NaN +tests/float/math_builtins.c:466:[value] warning: builtin Frama_C_log: completely out-of-range argument ({0.0000000000000000}): + negative argument, computation may result in NaN +tests/float/math_builtins.c:467:[value] warning: builtin Frama_C_log: completely out-of-range argument ({-0.0000000000000000}) + : negative argument, computation may result in NaN +tests/float/math_builtins.c:468:[value] warning: builtin Frama_C_log: completely out-of-range argument ({-1.0000000000000000}) + : negative argument, computation may result in NaN +[value] Recording results for test_log_det +[value] Done for function test_log_det +[value] computing for function test_log10_det <- main. + Called from tests/float/math_builtins.c:669. +tests/float/math_builtins.c:483:[value] warning: builtin Frama_C_log10: completely out-of-range argument + ({-2.0000000000000000}): negative argument, computation may result in NaN +tests/float/math_builtins.c:484:[value] warning: builtin Frama_C_log10: completely out-of-range argument + ({0.0000000000000000}): negative argument, computation may result in NaN +tests/float/math_builtins.c:485:[value] warning: builtin Frama_C_log10: completely out-of-range argument + ({-0.0000000000000000}): negative argument, computation may result in NaN +tests/float/math_builtins.c:486:[value] warning: builtin Frama_C_log10: completely out-of-range argument + ({-1.0000000000000000}): negative argument, computation may result in NaN +[value] Recording results for test_log10_det +[value] Done for function test_log10_det +[value] computing for function test_powf_det <- main. + Called from tests/float/math_builtins.c:671. +[value] Recording results for test_powf_det +[value] Done for function test_powf_det +[value] computing for function test_powf_singleton_exp <- main. + Called from tests/float/math_builtins.c:672. +[value] computing for function double_interval <- test_powf_singleton_exp <- main. + Called from tests/float/math_builtins.c:231. +[value] Recording results for double_interval +[value] Done for function double_interval +tests/float/math_builtins.c:233:[value] warning: builtin Frama_C_powf: completely out-of-range arguments + ([-3.5000000000000000 .. -2.7500000000000000], {1.5000000000000000}): + negative base and noninteger exponent, computation may result in NaN +tests/float/math_builtins.c:235:[value] warning: builtin Frama_C_powf: completely out-of-range arguments + ([-3.5000000000000000 .. -2.7500000000000000], {-1.5000000000000000}): + negative base and noninteger exponent, computation may result in NaN +[value] computing for function double_interval <- test_powf_singleton_exp <- main. + Called from tests/float/math_builtins.c:238. +[value] Recording results for double_interval +[value] Done for function double_interval +tests/float/math_builtins.c:239:[value] warning: builtin Frama_C_powf: out-of-range arguments + ([-3.5000000000000000 .. 2.7500000000000000], {1.5000000000000000}): + negative base and noninteger exponent, computation may result in NaN +tests/float/math_builtins.c:240:[value] warning: builtin Frama_C_powf: out-of-range arguments + ([-3.5000000000000000 .. 2.7500000000000000], {-1.5000000000000000}): + negative base and noninteger exponent, computation may result in +oo/NaN +tests/float/math_builtins.c:243:[value] warning: builtin Frama_C_powf: out-of-range arguments + ([-3.5000000000000000 .. 2.7500000000000000], {-3.0000000000000000}), + computation may result in +oo/-oo +tests/float/math_builtins.c:244:[value] warning: builtin Frama_C_powf: out-of-range arguments + ([-3.5000000000000000 .. 2.7500000000000000], {-2.0000000000000000}), + computation may result in +oo +[value] computing for function double_interval <- test_powf_singleton_exp <- main. + Called from tests/float/math_builtins.c:247. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_powf_singleton_exp <- main. + Called from tests/float/math_builtins.c:249. +[value] Recording results for double_interval +[value] Done for function double_interval +tests/float/math_builtins.c:250:[value] warning: builtin Frama_C_powf: out-of-range arguments + ([-1.0000000000000000*2^49 .. -1.5000000000000000*2^-1], {23.0000000000000000}) + , computation may result in -oo +[value] computing for function double_interval <- test_powf_singleton_exp <- main. + Called from tests/float/math_builtins.c:253. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] Called Frama_C_show_each_i([0.0000000000000000 .. 1.0000000000000000*2^-120]) +[value] computing for function double_interval <- test_powf_singleton_exp <- main. + Called from tests/float/math_builtins.c:256. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] Called Frama_C_show_each_j({0}) +[value] computing for function double_interval <- test_powf_singleton_exp <- main. + Called from tests/float/math_builtins.c:265. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_powf_singleton_exp <- main. + Called from tests/float/math_builtins.c:272. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] Recording results for test_powf_singleton_exp +[value] Done for function test_powf_singleton_exp +[value] computing for function test_powf <- main. + Called from tests/float/math_builtins.c:673. +[value] computing for function double_interval <- test_powf <- main. + Called from tests/float/math_builtins.c:280. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_powf <- main. + Called from tests/float/math_builtins.c:282. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_powf <- main. + Called from tests/float/math_builtins.c:284. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_powf <- main. + Called from tests/float/math_builtins.c:291. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_powf <- main. + Called from tests/float/math_builtins.c:292. +[value] Recording results for double_interval +[value] Done for function double_interval +tests/float/math_builtins.c:293:[value] warning: builtin Frama_C_powf: out-of-range arguments + ([-4.0000000000000000 .. 7.5000000000000000], [2.1250000000000000 .. 2.8750000000000000]) + : negative base and noninteger exponent, computation may result in NaN +[value] computing for function double_interval <- test_powf <- main. + Called from tests/float/math_builtins.c:294. +[value] Recording results for double_interval +[value] Done for function double_interval +tests/float/math_builtins.c:295:[value] warning: builtin Frama_C_powf: out-of-range arguments + ([-4.0000000000000000 .. 7.5000000000000000], [2.1250000000000000 .. 4.8750000000000000]) + : negative base and noninteger exponent, computation may result in NaN +[value] computing for function double_interval <- test_powf <- main. + Called from tests/float/math_builtins.c:296. +[value] Recording results for double_interval +[value] Done for function double_interval +tests/float/math_builtins.c:297:[value] warning: builtin Frama_C_powf: out-of-range arguments + ([-4.0000000000000000 .. 7.5000000000000000], [2.0000000000000000 .. 3.0000000000000000]) + : negative base and noninteger exponent, computation may result in NaN +[value] computing for function double_interval <- test_powf <- main. + Called from tests/float/math_builtins.c:298. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_powf <- main. + Called from tests/float/math_builtins.c:299. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_powf <- main. + Called from tests/float/math_builtins.c:303. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_powf <- main. + Called from tests/float/math_builtins.c:304. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_powf <- main. + Called from tests/float/math_builtins.c:308. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_powf <- main. + Called from tests/float/math_builtins.c:309. +[value] Recording results for double_interval +[value] Done for function double_interval +tests/float/math_builtins.c:310:[value] warning: builtin Frama_C_powf: out-of-range arguments + ([-1.0000000000000000 .. 1.0000000000000000], [-1.0000000000000000 .. 1.0000000000000000]) + : negative base and noninteger exponent, + computation may result in +oo/-oo/NaN +[value] computing for function double_interval <- test_powf <- main. + Called from tests/float/math_builtins.c:313. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_powf <- main. + Called from tests/float/math_builtins.c:314. +[value] Recording results for double_interval +[value] Done for function double_interval +tests/float/math_builtins.c:315:[value] warning: builtin Frama_C_powf: out-of-range arguments + ([-1.0000000000000000 .. 1.0000000000000000], [-1.0000000000000000*2^-1 .. 1.0000000000000000]) + : negative base and noninteger exponent, computation may result in +oo/NaN +[value] computing for function double_interval <- test_powf <- main. + Called from tests/float/math_builtins.c:319. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_powf <- main. + Called from tests/float/math_builtins.c:320. +[value] Recording results for double_interval +[value] Done for function double_interval +tests/float/math_builtins.c:321:[value] warning: builtin Frama_C_powf: out-of-range arguments + ([-13.0000000000000000 .. 430.0000000000000000], [3.0000000000000000 .. 6.0000000000000000]) + : negative base and noninteger exponent, computation may result in NaN +[value] computing for function double_interval <- test_powf <- main. + Called from tests/float/math_builtins.c:324. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_powf <- main. + Called from tests/float/math_builtins.c:325. +[value] Recording results for double_interval +[value] Done for function double_interval +tests/float/math_builtins.c:326:[value] warning: builtin Frama_C_powf: out-of-range arguments + ([-4.0000000000000000 .. -2.0000000000000000], [3.0000000000000000 .. 5.0000000000000000]) + : negative base and noninteger exponent, computation may result in NaN +[value] computing for function double_interval <- test_powf <- main. + Called from tests/float/math_builtins.c:329. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_powf <- main. + Called from tests/float/math_builtins.c:330. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] Recording results for test_powf +[value] Done for function test_powf +[value] computing for function test_sqrtf_det <- main. + Called from tests/float/math_builtins.c:674. +tests/float/math_builtins.c:429:[value] warning: builtin Frama_C_sqrtf: completely out-of-range argument + ({-2.0000000000000000}): negative argument, computation may result in NaN +[value] Recording results for test_sqrtf_det +[value] Done for function test_sqrtf_det +[value] computing for function test_sqrtf <- main. + Called from tests/float/math_builtins.c:675. +[value] computing for function double_interval <- test_sqrtf <- main. + Called from tests/float/math_builtins.c:435. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_sqrtf <- main. + Called from tests/float/math_builtins.c:437. +[value] Recording results for double_interval +[value] Done for function double_interval +tests/float/math_builtins.c:438:[value] warning: builtin Frama_C_sqrtf: out-of-range argument + ([-6.5000000000000000 .. 0.0000000000000000]): negative argument, + computation may result in NaN +[value] computing for function double_interval <- test_sqrtf <- main. + Called from tests/float/math_builtins.c:439. +[value] Recording results for double_interval +[value] Done for function double_interval +tests/float/math_builtins.c:440:[value] warning: builtin Frama_C_sqrtf: out-of-range argument + ([-6.5000000000000000 .. -0.0000000000000000]): negative argument, + computation may result in NaN +[value] computing for function double_interval <- test_sqrtf <- main. + Called from tests/float/math_builtins.c:441. +[value] Recording results for double_interval +[value] Done for function double_interval +tests/float/math_builtins.c:442:[value] warning: builtin Frama_C_sqrt: completely out-of-range argument + ([-6.5000000000000000 .. -1.6000000238418579*2^-4]): negative argument, + computation may result in NaN +[value] Recording results for test_sqrtf +[value] Done for function test_sqrtf +[value] computing for function test_expf_det <- main. + Called from tests/float/math_builtins.c:676. +[value] Recording results for test_expf_det +[value] Done for function test_expf_det +[value] computing for function test_logf_det <- main. + Called from tests/float/math_builtins.c:677. +tests/float/math_builtins.c:474:[value] warning: builtin Frama_C_logf: completely out-of-range argument + ({-2.0000000000000000}): negative argument, computation may result in NaN +tests/float/math_builtins.c:475:[value] warning: builtin Frama_C_logf: completely out-of-range argument ({0.0000000000000000}) + : negative argument, computation may result in NaN +tests/float/math_builtins.c:476:[value] warning: builtin Frama_C_logf: completely out-of-range argument + ({-0.0000000000000000}): negative argument, computation may result in NaN +tests/float/math_builtins.c:477:[value] warning: builtin Frama_C_logf: completely out-of-range argument + ({-1.0000000000000000}): negative argument, computation may result in NaN +[value] Recording results for test_logf_det +[value] Done for function test_logf_det +[value] computing for function test_log10f_det <- main. + Called from tests/float/math_builtins.c:678. +tests/float/math_builtins.c:492:[value] warning: builtin Frama_C_log10f: completely out-of-range argument + ({-2.0000000000000000}): negative argument, computation may result in NaN +tests/float/math_builtins.c:493:[value] warning: builtin Frama_C_log10f: completely out-of-range argument + ({0.0000000000000000}): negative argument, computation may result in NaN +tests/float/math_builtins.c:494:[value] warning: builtin Frama_C_log10f: completely out-of-range argument + ({-0.0000000000000000}): negative argument, computation may result in NaN +tests/float/math_builtins.c:495:[value] warning: builtin Frama_C_log10f: completely out-of-range argument + ({-1.0000000000000000}): negative argument, computation may result in NaN +[value] Recording results for test_log10f_det +[value] Done for function test_log10f_det +[value] computing for function test_diff_pow_powf <- main. + Called from tests/float/math_builtins.c:680. +[value] Recording results for test_diff_pow_powf +[value] Done for function test_diff_pow_powf +[value] computing for function test_floor_det <- main. + Called from tests/float/math_builtins.c:682. +[value] Recording results for test_floor_det +[value] Done for function test_floor_det +[value] computing for function test_ceil_det <- main. + Called from tests/float/math_builtins.c:683. +[value] Recording results for test_ceil_det +[value] Done for function test_ceil_det +[value] computing for function test_trunc_det <- main. + Called from tests/float/math_builtins.c:684. +[value] Recording results for test_trunc_det +[value] Done for function test_trunc_det +[value] computing for function test_round_det <- main. + Called from tests/float/math_builtins.c:685. +[value] Recording results for test_round_det +[value] Done for function test_round_det +[value] computing for function test_floor <- main. + Called from tests/float/math_builtins.c:686. +[value] computing for function double_interval <- test_floor <- main. + Called from tests/float/math_builtins.c:541. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_floor <- main. + Called from tests/float/math_builtins.c:543. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_floor <- main. + Called from tests/float/math_builtins.c:545. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] Recording results for test_floor +[value] Done for function test_floor +[value] computing for function test_ceil <- main. + Called from tests/float/math_builtins.c:687. +[value] computing for function double_interval <- test_ceil <- main. + Called from tests/float/math_builtins.c:551. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_ceil <- main. + Called from tests/float/math_builtins.c:553. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_ceil <- main. + Called from tests/float/math_builtins.c:555. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] Recording results for test_ceil +[value] Done for function test_ceil +[value] computing for function test_trunc <- main. + Called from tests/float/math_builtins.c:688. +[value] computing for function double_interval <- test_trunc <- main. + Called from tests/float/math_builtins.c:561. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_trunc <- main. + Called from tests/float/math_builtins.c:563. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_trunc <- main. + Called from tests/float/math_builtins.c:565. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] Recording results for test_trunc +[value] Done for function test_trunc +[value] computing for function test_round <- main. + Called from tests/float/math_builtins.c:689. +[value] computing for function double_interval <- test_round <- main. + Called from tests/float/math_builtins.c:571. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_round <- main. + Called from tests/float/math_builtins.c:573. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_round <- main. + Called from tests/float/math_builtins.c:575. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] Recording results for test_round +[value] Done for function test_round +[value] computing for function test_floorf_det <- main. + Called from tests/float/math_builtins.c:691. +[value] Recording results for test_floorf_det +[value] Done for function test_floorf_det +[value] computing for function test_ceilf_det <- main. + Called from tests/float/math_builtins.c:692. +[value] Recording results for test_ceilf_det +[value] Done for function test_ceilf_det +[value] computing for function test_truncf_det <- main. + Called from tests/float/math_builtins.c:693. +[value] Recording results for test_truncf_det +[value] Done for function test_truncf_det +[value] computing for function test_roundf_det <- main. + Called from tests/float/math_builtins.c:694. +[value] Recording results for test_roundf_det +[value] Done for function test_roundf_det +[value] computing for function test_floorf <- main. + Called from tests/float/math_builtins.c:695. +[value] computing for function double_interval <- test_floorf <- main. + Called from tests/float/math_builtins.c:617. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_floorf <- main. + Called from tests/float/math_builtins.c:619. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_floorf <- main. + Called from tests/float/math_builtins.c:621. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] Recording results for test_floorf +[value] Done for function test_floorf +[value] computing for function test_ceilf <- main. + Called from tests/float/math_builtins.c:696. +[value] computing for function double_interval <- test_ceilf <- main. + Called from tests/float/math_builtins.c:627. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_ceilf <- main. + Called from tests/float/math_builtins.c:629. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_ceilf <- main. + Called from tests/float/math_builtins.c:631. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] Recording results for test_ceilf +[value] Done for function test_ceilf +[value] computing for function test_truncf <- main. + Called from tests/float/math_builtins.c:697. +[value] computing for function double_interval <- test_truncf <- main. + Called from tests/float/math_builtins.c:637. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_truncf <- main. + Called from tests/float/math_builtins.c:639. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_truncf <- main. + Called from tests/float/math_builtins.c:641. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] Recording results for test_truncf +[value] Done for function test_truncf +[value] computing for function test_roundf <- main. + Called from tests/float/math_builtins.c:698. +[value] computing for function double_interval <- test_roundf <- main. + Called from tests/float/math_builtins.c:647. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_roundf <- main. + Called from tests/float/math_builtins.c:649. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] computing for function double_interval <- test_roundf <- main. + Called from tests/float/math_builtins.c:651. +[value] Recording results for double_interval +[value] Done for function double_interval +[value] Recording results for test_roundf +[value] Done for function test_roundf +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function double_interval: + __retres ∈ [-1.2237906221789607*2^1023 .. 1.2237906221789607*2^1023] +[value:final-states] Values at end of function test_atan2: + x ∈ [1.0000000000000000 .. 5.0000000000000000] + y ∈ [-0.0000000000000000 .. 0.0000000000000000] + a ∈ [1.5999166744782948*2^-7 .. 1.5582969777755348] + b ∈ [1.3325625311548295*2^-5 .. 3.0916342578678506] + c ∈ [-2.9441970937399126 .. -1.3211894193170146*2^-3] + d ∈ [-2.9764439761751662 .. -2.6779450445889869] + e ∈ {-1.5707963267948965} + f ∈ [-1.5707963267948965*2^-1 .. -0.0000000000000000] + g ∈ [0.0000000000000000 .. 1.8545904360032243*2^-2] + h ∈ [-3.1415929794311523 .. 3.1415929794311523] + i ∈ [-3.1415929794311523 .. 3.1415929794311523] + j ∈ [-3.1415929794311523 .. 3.1415929794311523] + k ∈ {0} + l ∈ {-0.0000000000000000} + m ∈ {3.1415926535897931} + n ∈ {-3.1415926535897931} +[value:final-states] Values at end of function test_atan2_det: + a ∈ {1.5707963267948965} + b ∈ {0} + c ∈ {1.5707963267948965} + d ∈ {-0.0000000000000000} + e ∈ {-1.5707963267948965} + f ∈ {-1.5707963267948965} + g ∈ {-1.5707963267948965} + h ∈ {-1.5707963267948965} + i ∈ {0} + j ∈ {1.1071487177940904} + k ∈ {-1.1071487177940904} + l ∈ {2.0344439357957027} + m ∈ {-2.0344439357957027} +[value:final-states] Values at end of function test_ceil: + x ∈ [-2.5000000000000000 .. -1.0000000000000000*2^-1] + a ∈ [-0.0000000000000000 .. 2.0000000000000000] + b ∈ [-0.0000000000000000 .. 1.0000000000000000] + c ∈ [-2.0000000000000000 .. -0.0000000000000000] +[value:final-states] Values at end of function test_ceil_det: + a ∈ {2.0000000000000000} + b ∈ {1.0000000000000000} + c ∈ {0} + d ∈ {-0.0000000000000000} + e ∈ {-0.0000000000000000} + f ∈ {-1.0000000000000000} +[value:final-states] Values at end of function test_ceilf: + f32__x ∈ [-2.500000 .. -1.000000*2^-1] + f32__a ∈ [-0.000000 .. 2.000000] + f32__b ∈ [-0.000000 .. 1.000000] + f32__c ∈ [-2.000000 .. -0.000000] +[value:final-states] Values at end of function test_ceilf_det: + f32__a ∈ {2.000000} + f32__b ∈ {1.000000} + f32__c ∈ {0} + f32__d ∈ {-0.000000} + f32__e ∈ {-0.000000} + f32__f ∈ {-1.000000} +[value:final-states] Values at end of function test_cos_det: + x ∈ {1.0806046117362795*2^-1} + y ∈ {1.0000000000000000} + z ∈ {1.0806046117362795*2^-1} +[value:final-states] Values at end of function test_diff_pow_powf: + d ∈ {1.3824840787361052*2^-96} + f32__f ∈ {1.382483*2^-96} +[value:final-states] Values at end of function test_exp_det: + a ∈ {1.7094457008275896*2^60} + b ∈ {1.0826822658929016*2^-3} + c ∈ {1.0000000000000000} + d ∈ {1.0000000000000000} + e ∈ {1.4715177646857693*2^-2} +[value:final-states] Values at end of function test_expf_det: + f32__a ∈ {1.709445*2^60} + f32__b ∈ {1.082682*2^-3} + f32__c ∈ {1.000000} + f32__d ∈ {1.000000} + f32__e ∈ {1.471517*2^-2} +[value:final-states] Values at end of function test_floor: + x ∈ [-2.5000000000000000 .. -1.0000000000000000*2^-1] + a ∈ [-1.0000000000000000 .. 1.0000000000000000] + b ∈ [-0.0000000000000000 .. 0.0000000000000000] + c ∈ [-3.0000000000000000 .. -1.0000000000000000] +[value:final-states] Values at end of function test_floor_det: + a ∈ {1.0000000000000000} + b ∈ {0} + c ∈ {0} + d ∈ {-0.0000000000000000} + e ∈ {-1.0000000000000000} + f ∈ {-2.0000000000000000} +[value:final-states] Values at end of function test_floorf: + f32__x ∈ [-2.500000 .. -1.000000*2^-1] + f32__a ∈ [-1.000000 .. 1.000000] + f32__b ∈ [-0.000000 .. 0.000000] + f32__c ∈ [-3.000000 .. -1.000000] +[value:final-states] Values at end of function test_floorf_det: + f32__a ∈ {1.000000} + f32__b ∈ {0} + f32__c ∈ {0} + f32__d ∈ {-0.000000} + f32__e ∈ {-1.000000} + f32__f ∈ {-2.000000} +[value:final-states] Values at end of function test_fmod: + x ∈ [-3.0000000000000000 .. 2.0000000000000000] + y ∈ [-4.0000000000000000 .. 5.0000000000000000] + a ∈ [0.0000000000000000 .. 1.4999999999999998] + b ∈ [0.0000000000000000 .. 1.4999999999999998] + c ∈ [-1.4999999999999998 .. -0.0000000000000000] + d ∈ [-1.4999999999999998 .. -0.0000000000000000] + e ∈ [1.5000000000000000*2^-1 .. 1.2500000000000000] + f ∈ [1.5000000000000000*2^-1 .. 1.2500000000000000] + g ∈ [4.0000000000000000 .. 5.5000000000000000] + h ∈ [0.0000000000000000 .. 5.4999999999999991] + i ∈ [0.0000000000000000 .. 5.4999999999999991] + j ∈ [-4.4999999999999991 .. 4.4999999999999991] + k ∈ [-2.0000000000000000 .. 4.5000000000000000] + l ∈ [-1.9999999999999998*2^-4 .. 1.9999999999999998*2^-4] + m ∈ [-1.9999999999999998*2^-4 .. 1.9999999999999998*2^-4] + n ∈ [0.0000000000000000 .. 1.9999999999999998*2^-10] + o ∈ [-1.9999999999999998*2^-10 .. -0.0000000000000000] + p ∈ [0.0000000000000000 .. 1.9999999999999998*2^-10] + q ∈ [1.5000000000000000*2^-14 .. 1.0000000000000000*2^-11] + r ∈ [0.0000000000000000 .. 1.0000025599999997*2^-9] + s ∈ [0.0000000000000000 .. 1.5999999999999998*2^-4] + t ∈ [-1.5999999999999998*2^-4 .. -0.0000000000000000] + u ∈ [-3.9999999999999996 .. -0.0000000000000000] + v1 ∈ [1.0000000000000000 .. 3.0000000000000000] + v2 ∈ [1.0000000000000000 .. 3.0000000000000000] + v3 ∈ [-3.0000000000000000 .. -1.0000000000000000] + v4 ∈ [-3.0000000000000000 .. -1.0000000000000000] + w1 ∈ [0.0000000000000000 .. 3.0000000000000000] + w2 ∈ [-2.0000000000000000 .. 3.0000000000000000] + w3 ∈ [-3.0000000000000000 .. 2.0000000000000000] +[value:final-states] Values at end of function test_fmod_det: + a ∈ {1.7500000000000000} + b ∈ {-1.7500000000000000} + c ∈ {-0.0000000000000000} + d ∈ {0} + e ∈ {0} + f ∈ {0} +[value:final-states] Values at end of function test_log10_det: + a ∈ {1.6245399138793950} + b ∈ {-1.8061799739838871*2^-1} +[value:final-states] Values at end of function test_log10f_det: + f32__a ∈ {1.624539} + f32__b ∈ {-1.806180*2^-1} +[value:final-states] Values at end of function test_log_det: + a ∈ {3.7406413886725258} + b ∈ {-2.0794415416798357} +[value:final-states] Values at end of function test_logf_det: + f32__a ∈ {3.740641} + f32__b ∈ {-2.079441} +[value:final-states] Values at end of function test_pow: + x ∈ [-1.4551915228366852*2^36 .. -1.1641532182693481*2^33] + y ∈ [-1.0000000000000000*2^-1 .. 9.5000000000000000] + a ∈ {1.0000000000000000} + b ∈ {1.0000000000000000} + c ∈ {1.0000000000000000} + d ∈ [0.0000000000000000 .. 327.9450894181683225] + e ∈ [-64.0000000000000000 .. 1.1259101122907695*2^14] + f ∈ [-64.0000000000000000 .. 421.8750000000000000] + g ∈ [1.7652004904783322*2^-3 .. 4.7568284600108841] + h ∈ [1.4142135623730951*2^-3 .. 1.7469281074217106] + i ∈ [-1.9999999999999998*2^1023 .. 1.9999999999999998*2^1023] + j ∈ [-1.0000000000000000 .. 1.0000000000000000*2^537] + k ∈ [-1.4163703918457031*2^18 .. 1.4036245608028963*2^52] + l ∈ [-1024.0000000000000000 .. 256.0000000000000000] + m ∈ [-0.0000000000000000 .. 1.5258789062500000*2^16] + n ∈ [-0.0000000000000000 .. 1.9999999999999998*2^1023] + o ∈ {1.0000000000000000} + p ∈ [-1.4551915228366852*2^25 .. 1.1641532182693481*2^23] + q ∈ [-1.9999999999999998*2^1023 .. 1.9999999999999998*2^1023] + r ∈ [1.2649110640673517*2^-2 .. 1.4725502860585131*2^31] +[value:final-states] Values at end of function test_pow_det: + a ∈ {1.0000000000000000} + b ∈ {0} + c ∈ {1.0000000000000000} + d ∈ {1.2247448713915889} + e ∈ {3.6539061185009513} + f ∈ {1.1857484052378015*2^-2} + g ∈ {1.6817928305074290*2^-21} + h ∈ {1.0000000000000000} +[value:final-states] Values at end of function test_pow_singleton_exp: + x ∈ [-3.5000000000000000 .. -1.0000000000000000*2^-3] + c ∈ [0.0000000000000000 .. 4.5603590867386749] + d ∈ [1.7542478229978975*2^-3 .. 1.9999999999999998*2^1023] + e ∈ [-1.9999999999999998*2^1023 .. 1.9999999999999998*2^1023] + f ∈ [1.3061224489795917*2^-4 .. 1.9999999999999998*2^1023] + g ∈ [1.0000000000000000*2^975 .. 1.9999999999999998*2^1023] + h ∈ [-1.9999999999999998*2^1023 .. -1.3699635576194850*2^-10] + i ∈ [0.0000000000000000 .. 1.0000000000000000*2^-1000] + j ∈ [0.2500000000000000*2^-1022 .. 1.2707064924076672*2^-330] + k ∈ [1.7469281074217106 .. 5.6568542494923805] + l ∈ [2.1836601342771384 .. 11.3137084989847611] + m ∈ [1.3196114778086369*2^-5 .. 22.6274169979695223] + n ∈ [1.9097831327702532*2^-4 .. 8.0000000000000000] + o ∈ [1.4142135623730951*2^-1 .. 1.4251349413858991] + p ∈ [1.6817928305074290*2^-4 .. 10.0014719999210708] + q ∈ [1.0000000000000000*2^-8 .. 289.5314941406250000] + r ∈ [1.3061224489795917*2^-4 .. 64.0000000000000000] + s ∈ [-8.0000000000000000 .. -1.1428571428571428*2^-2] +[value:final-states] Values at end of function test_powf: + f32__x ∈ [-0.000000 .. 10.000000] + f32__y ∈ [-0.000000 .. 5.000000] + f32__a ∈ {1.000000} + f32__b ∈ {1.000000} + f32__c ∈ {1.000000} + f32__d ∈ [0.000000 .. 327.945098] + f32__e ∈ [-64.000000 .. 1.125910*2^14] + f32__f ∈ [-64.000000 .. 421.875000] + f32__g ∈ [1.765200*2^-3 .. 4.756828] + f32__h ∈ [1.414213*2^-3 .. 1.746928] + f32__i ∈ [-1.999999*2^127 .. 1.999999*2^127] + f32__j ∈ [-1.000000 .. 1.414213*2^74] + f32__k ∈ [-1.416370*2^18 .. 1.403624*2^52] + f32__l ∈ [-1024.000000 .. 256.000000] + f32__m ∈ [-0.000000 .. 1.525878*2^16] +[value:final-states] Values at end of function test_powf_det: + f32__a ∈ {1.000000} + f32__b ∈ {0} + f32__c ∈ {1.000000} + f32__d ∈ {1.224744} + f32__e ∈ {3.653906} + f32__f ∈ {1.185748*2^-2} + f32__g ∈ {1.681792*2^-21} + f32__h ∈ {1.000000} +[value:final-states] Values at end of function test_powf_singleton_exp: + f32__x ∈ [-3.500000 .. -1.000000*2^-3] + f32__c ∈ [0.000000 .. 4.560359] + f32__d ∈ [1.754247*2^-3 .. 1.999999*2^127] + f32__e ∈ [-1.999999*2^127 .. 1.999999*2^127] + f32__f ∈ [1.306122*2^-4 .. 1.999999*2^127] + f32__g ∈ [1.000002*2^116 .. 1.741105*2^121] + f32__h ∈ [-1.999999*2^127 .. -1.369963*2^-10] + f32__i ∈ [0.000000 .. 1.000000*2^-120] + f32__j ∈ {0} + f32__k ∈ [1.746928 .. 5.656854] + f32__l ∈ [2.183660 .. 11.313708] + f32__m ∈ [1.319611*2^-5 .. 22.627416] + f32__n ∈ [1.909783*2^-4 .. 8.000000] + f32__o ∈ [1.414213*2^-1 .. 1.425134] + f32__p ∈ [1.681792*2^-4 .. 10.001472] + f32__q ∈ [1.000000*2^-8 .. 289.531494] + f32__r ∈ [1.306122*2^-4 .. 64.000000] + f32__s ∈ [-8.000000 .. -1.142857*2^-2] +[value:final-states] Values at end of function test_round: + x ∈ [-2.5000000000000000 .. -1.0000000000000000*2^-1] + a ∈ [-1.0000000000000000 .. 2.0000000000000000] + b ∈ [-0.0000000000000000 .. 1.0000000000000000] + c ∈ [-3.0000000000000000 .. -1.0000000000000000] +[value:final-states] Values at end of function test_round_det: + a ∈ {2.0000000000000000} + b ∈ {1.0000000000000000} + c ∈ {0} + d ∈ {-0.0000000000000000} + e ∈ {-1.0000000000000000} + f ∈ {-2.0000000000000000} +[value:final-states] Values at end of function test_roundf: + f32__x ∈ [-2.500000 .. -1.000000*2^-1] + f32__a ∈ [-1.000000 .. 2.000000] + f32__b ∈ [-0.000000 .. 1.000000] + f32__c ∈ [-3.000000 .. -1.000000] +[value:final-states] Values at end of function test_roundf_det: + f32__a ∈ {2.000000} + f32__b ∈ {1.000000} + f32__c ∈ {0} + f32__d ∈ {-0.000000} + f32__e ∈ {-1.000000} + f32__f ∈ {-2.000000} +[value:final-states] Values at end of function test_sin_det: + x ∈ {1.6829419696157930*2^-1} + y ∈ {0} + z ∈ {-1.6829419696157930*2^-1} +[value:final-states] Values at end of function test_sqrt: + x ∈ [-6.5000000000000000 .. -1.6000000000000000*2^-4] + a ∈ [-0.0000000000000000 .. 2.2360679774997898] + b ∈ [-0.0000000000000000 .. 0.0000000000000000] + c ∈ {-0.0000000000000000} +[value:final-states] Values at end of function test_sqrt_det: + a ∈ {6.4903774928735851} + b ∈ {1.4142135623730951*2^-2} + c ∈ {0} + d ∈ {-0.0000000000000000} +[value:final-states] Values at end of function test_sqrtf: + f32__x ∈ [-6.500000 .. -1.600000*2^-4] + f32__a ∈ [-0.000000 .. 2.236068] + b ∈ [-0.0000000000000000 .. 0.0000000000000000] + c ∈ {-0.0000000000000000} +[value:final-states] Values at end of function test_sqrtf_det: + f32__a ∈ {6.490377} + f32__b ∈ {1.414213*2^-2} + f32__c ∈ {0} + f32__d ∈ {-0.000000} +[value:final-states] Values at end of function test_trunc: + x ∈ [-2.5000000000000000 .. -1.0000000000000000*2^-1] + a ∈ [-0.0000000000000000 .. 1.0000000000000000] + b ∈ [-0.0000000000000000 .. 0.0000000000000000] + c ∈ [-2.0000000000000000 .. -0.0000000000000000] +[value:final-states] Values at end of function test_trunc_det: + a ∈ {1.0000000000000000} + b ∈ {0} + c ∈ {0} + d ∈ {-0.0000000000000000} + e ∈ {-0.0000000000000000} + f ∈ {-1.0000000000000000} +[value:final-states] Values at end of function test_truncf: + f32__x ∈ [-2.500000 .. -1.000000*2^-1] + f32__a ∈ [-0.000000 .. 1.000000] + f32__b ∈ [-0.000000 .. 0.000000] + f32__c ∈ [-2.000000 .. -0.000000] +[value:final-states] Values at end of function test_truncf_det: + f32__a ∈ {1.000000} + f32__b ∈ {0} + f32__c ∈ {0} + f32__d ∈ {-0.000000} + f32__e ∈ {-0.000000} + f32__f ∈ {-1.000000} +[value:final-states] Values at end of function main: + __retres ∈ {0} +[from] Computing for function double_interval +[from] Done for function double_interval +[from] Computing for function test_atan2 +[from] Computing for function atan2 <-test_atan2 +[from] Done for function atan2 +[from] Done for function test_atan2 +[from] Computing for function test_atan2_det +[from] Done for function test_atan2_det +[from] Computing for function test_ceil +[from] Computing for function ceil <-test_ceil +[from] Done for function ceil +[from] Done for function test_ceil +[from] Computing for function test_ceil_det +[from] Done for function test_ceil_det +[from] Computing for function test_ceilf +[from] Computing for function ceilf <-test_ceilf +[from] Done for function ceilf +[from] Done for function test_ceilf +[from] Computing for function test_ceilf_det +[from] Done for function test_ceilf_det +[from] Computing for function test_cos_det +[from] Computing for function cos <-test_cos_det +[from] Done for function cos +[from] Done for function test_cos_det +[from] Computing for function test_diff_pow_powf +[from] Computing for function pow <-test_diff_pow_powf +[from] Done for function pow +[from] Computing for function powf <-test_diff_pow_powf +[from] Done for function powf +[from] Done for function test_diff_pow_powf +[from] Computing for function test_exp_det +[from] Computing for function exp <-test_exp_det +[from] Done for function exp +[from] Done for function test_exp_det +[from] Computing for function test_expf_det +[from] Computing for function expf <-test_expf_det +[from] Done for function expf +[from] Done for function test_expf_det +[from] Computing for function test_floor +[from] Computing for function floor <-test_floor +[from] Done for function floor +[from] Done for function test_floor +[from] Computing for function test_floor_det +[from] Done for function test_floor_det +[from] Computing for function test_floorf +[from] Computing for function floorf <-test_floorf +[from] Done for function floorf +[from] Done for function test_floorf +[from] Computing for function test_floorf_det +[from] Done for function test_floorf_det +[from] Computing for function test_fmod +[from] Computing for function fmod <-test_fmod +[from] Done for function fmod +[from] Done for function test_fmod +[from] Computing for function test_fmod_det +[from] Done for function test_fmod_det +[from] Computing for function test_log10_det +[from] Computing for function log10 <-test_log10_det +[from] Done for function log10 +[from] Done for function test_log10_det +[from] Computing for function test_log10f_det +[from] Computing for function log10f <-test_log10f_det +[from] Done for function log10f +[from] Done for function test_log10f_det +[from] Computing for function test_log_det +[from] Computing for function log <-test_log_det +[from] Done for function log +[from] Done for function test_log_det +[from] Computing for function test_logf_det +[from] Computing for function logf <-test_logf_det +[from] Done for function logf +[from] Done for function test_logf_det +[from] Computing for function test_pow +[from] Done for function test_pow +[from] Computing for function test_pow_det +[from] Done for function test_pow_det +[from] Computing for function test_pow_singleton_exp +[from] Done for function test_pow_singleton_exp +[from] Computing for function test_powf +[from] Done for function test_powf +[from] Computing for function test_powf_det +[from] Done for function test_powf_det +[from] Computing for function test_powf_singleton_exp +[from] Done for function test_powf_singleton_exp +[from] Computing for function test_round +[from] Computing for function round <-test_round +[from] Done for function round +[from] Done for function test_round +[from] Computing for function test_round_det +[from] Done for function test_round_det +[from] Computing for function test_roundf +[from] Computing for function roundf <-test_roundf +[from] Done for function roundf +[from] Done for function test_roundf +[from] Computing for function test_roundf_det +[from] Done for function test_roundf_det +[from] Computing for function test_sin_det +[from] Computing for function sin <-test_sin_det +[from] Done for function sin +[from] Done for function test_sin_det +[from] Computing for function test_sqrt +[from] Computing for function sqrt <-test_sqrt +[from] Done for function sqrt +[from] Done for function test_sqrt +[from] Computing for function test_sqrt_det +[from] Done for function test_sqrt_det +[from] Computing for function test_sqrtf +[from] Computing for function sqrtf <-test_sqrtf +[from] Done for function sqrtf +[from] Done for function test_sqrtf +[from] Computing for function test_sqrtf_det +[from] Done for function test_sqrtf_det +[from] Computing for function test_trunc +[from] Computing for function trunc <-test_trunc +[from] Done for function trunc +[from] Done for function test_trunc +[from] Computing for function test_trunc_det +[from] Done for function test_trunc_det +[from] Computing for function test_truncf +[from] Computing for function truncf <-test_truncf +[from] Done for function truncf +[from] Done for function test_truncf +[from] Computing for function test_truncf_det +[from] Done for function test_truncf_det +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function atan2: + \result FROM y; x +[from] Function ceil: + \result FROM x +[from] Function ceilf: + \result FROM x +[from] Function cos: + \result FROM x +[from] Function double_interval: + \result FROM min; max; nondet +[from] Function exp: + \result FROM x +[from] Function expf: + \result FROM x +[from] Function floor: + \result FROM x +[from] Function floorf: + \result FROM x +[from] Function fmod: + \result FROM x; y +[from] Function log: + \result FROM x +[from] Function log10: + \result FROM x +[from] Function log10f: + \result FROM x +[from] Function logf: + \result FROM x +[from] Function pow: + \result FROM x; y +[from] Function powf: + \result FROM x; y +[from] Function round: + \result FROM x +[from] Function roundf: + \result FROM x +[from] Function sin: + \result FROM x +[from] Function sqrt: + \result FROM x +[from] Function sqrtf: + \result FROM x +[from] Function test_atan2: + NO EFFECTS +[from] Function test_atan2_det: + NO EFFECTS +[from] Function test_ceil: + NO EFFECTS +[from] Function test_ceil_det: + NO EFFECTS +[from] Function test_ceilf: + NO EFFECTS +[from] Function test_ceilf_det: + NO EFFECTS +[from] Function test_cos_det: + NO EFFECTS +[from] Function test_diff_pow_powf: + NO EFFECTS +[from] Function test_exp_det: + NO EFFECTS +[from] Function test_expf_det: + NO EFFECTS +[from] Function test_floor: + NO EFFECTS +[from] Function test_floor_det: + NO EFFECTS +[from] Function test_floorf: + NO EFFECTS +[from] Function test_floorf_det: + NO EFFECTS +[from] Function test_fmod: + NO EFFECTS +[from] Function test_fmod_det: + NO EFFECTS +[from] Function test_log10_det: + NO EFFECTS +[from] Function test_log10f_det: + NO EFFECTS +[from] Function test_log_det: + NO EFFECTS +[from] Function test_logf_det: + NO EFFECTS +[from] Function test_pow: + NO EFFECTS +[from] Function test_pow_det: + NO EFFECTS +[from] Function test_pow_singleton_exp: + NO EFFECTS +[from] Function test_powf: + NO EFFECTS +[from] Function test_powf_det: + NO EFFECTS +[from] Function test_powf_singleton_exp: + NO EFFECTS +[from] Function test_round: + NO EFFECTS +[from] Function test_round_det: + NO EFFECTS +[from] Function test_roundf: + NO EFFECTS +[from] Function test_roundf_det: + NO EFFECTS +[from] Function test_sin_det: + NO EFFECTS +[from] Function test_sqrt: + NO EFFECTS +[from] Function test_sqrt_det: + NO EFFECTS +[from] Function test_sqrtf: + NO EFFECTS +[from] Function test_sqrtf_det: + NO EFFECTS +[from] Function trunc: + \result FROM x +[from] Function test_trunc: + NO EFFECTS +[from] Function test_trunc_det: + NO EFFECTS +[from] Function truncf: + \result FROM x +[from] Function test_truncf: + NO EFFECTS +[from] Function test_truncf_det: + NO EFFECTS +[from] Function main: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function double_interval: + __retres +[inout] Inputs for function double_interval: + nondet +[inout] Out (internal) for function test_atan2: + x; y; a; b; c; d; e; f; g; h; i; j; k; l; m; n +[inout] Inputs for function test_atan2: + nondet +[inout] Out (internal) for function test_atan2_det: + a; b; c; d; e; f; g; h; i; j; k; l; m +[inout] Inputs for function test_atan2_det: + \nothing +[inout] Out (internal) for function test_ceil: + x; a; b; c +[inout] Inputs for function test_ceil: + nondet +[inout] Out (internal) for function test_ceil_det: + a; b; c; d; e; f +[inout] Inputs for function test_ceil_det: + \nothing +[inout] Out (internal) for function test_ceilf: + f32__x; tmp; f32__a; tmp_1; f32__b; tmp_3; f32__c +[inout] Inputs for function test_ceilf: + nondet +[inout] Out (internal) for function test_ceilf_det: + f32__a; f32__b; f32__c; f32__d; f32__e; f32__f +[inout] Inputs for function test_ceilf_det: + \nothing +[inout] Out (internal) for function test_cos_det: + x; y; z +[inout] Inputs for function test_cos_det: + \nothing +[inout] Out (internal) for function test_diff_pow_powf: + d; f32__f +[inout] Inputs for function test_diff_pow_powf: + \nothing +[inout] Out (internal) for function test_exp_det: + a; b; c; d; e +[inout] Inputs for function test_exp_det: + nondet +[inout] Out (internal) for function test_expf_det: + f32__a; f32__b; f32__c; f32__d; f32__e +[inout] Inputs for function test_expf_det: + \nothing +[inout] Out (internal) for function test_floor: + x; a; b; c +[inout] Inputs for function test_floor: + nondet +[inout] Out (internal) for function test_floor_det: + a; b; c; d; e; f +[inout] Inputs for function test_floor_det: + \nothing +[inout] Out (internal) for function test_floorf: + f32__x; tmp; f32__a; tmp_1; f32__b; tmp_3; f32__c +[inout] Inputs for function test_floorf: + nondet +[inout] Out (internal) for function test_floorf_det: + f32__a; f32__b; f32__c; f32__d; f32__e; f32__f +[inout] Inputs for function test_floorf_det: + \nothing +[inout] Out (internal) for function test_fmod: + x; y; a; b; c; d; e; f; g; h; i; j; k; l; m; n; o; p; q; r; s; tmp_18; + t; u; v1; v2; v3; v4; w1; w2; w3 +[inout] Inputs for function test_fmod: + nondet +[inout] Out (internal) for function test_fmod_det: + a; b; c; d; e; f +[inout] Inputs for function test_fmod_det: + nondet +[inout] Out (internal) for function test_log10_det: + a; b +[inout] Inputs for function test_log10_det: + nondet +[inout] Out (internal) for function test_log10f_det: + f32__a; f32__b +[inout] Inputs for function test_log10f_det: + nondet +[inout] Out (internal) for function test_log_det: + a; b +[inout] Inputs for function test_log_det: + nondet +[inout] Out (internal) for function test_logf_det: + f32__a; f32__b +[inout] Inputs for function test_logf_det: + nondet +[inout] Out (internal) for function test_pow: + x; y; a; b; c; d; e; f; g; h; i; j; k; l; m; n; o; p; q; r +[inout] Inputs for function test_pow: + nondet +[inout] Out (internal) for function test_pow_det: + a; b; c; d; e; f; g; h +[inout] Inputs for function test_pow_det: + \nothing +[inout] Out (internal) for function test_pow_singleton_exp: + x; c; d; e; f; g; h; i; j; k; l; m; n; o; p; q; r; s +[inout] Inputs for function test_pow_singleton_exp: + nondet +[inout] Out (internal) for function test_powf: + f32__x; f32__y; tmp; f32__a; tmp_1; f32__b; tmp_3; f32__c; tmp_5; tmp_6; + f32__d; tmp_8; f32__e; tmp_10; f32__f; tmp_12; tmp_13; f32__g; tmp_15; + tmp_16; f32__h; tmp_18; tmp_19; f32__i; tmp_21; tmp_22; f32__j; tmp_24; + tmp_25; f32__k; tmp_27; tmp_28; f32__l; tmp_30; tmp_31; f32__m +[inout] Inputs for function test_powf: + nondet +[inout] Out (internal) for function test_powf_det: + f32__a; f32__b; f32__c; f32__d; f32__e; f32__f; f32__g; f32__h +[inout] Inputs for function test_powf_det: + \nothing +[inout] Out (internal) for function test_powf_singleton_exp: + f32__x; tmp; tmp_0; f32__c; f32__d; f32__e; f32__f; tmp_5; f32__g; + tmp_7; f32__h; tmp_9; f32__i; tmp_11; f32__j; f32__k; f32__l; tmp_15; + f32__m; f32__n; f32__o; f32__p; f32__q; tmp_21; f32__r; f32__s +[inout] Inputs for function test_powf_singleton_exp: + nondet +[inout] Out (internal) for function test_round: + x; a; b; c +[inout] Inputs for function test_round: + nondet +[inout] Out (internal) for function test_round_det: + a; b; c; d; e; f +[inout] Inputs for function test_round_det: + \nothing +[inout] Out (internal) for function test_roundf: + f32__x; tmp; f32__a; tmp_1; f32__b; tmp_3; f32__c +[inout] Inputs for function test_roundf: + nondet +[inout] Out (internal) for function test_roundf_det: + f32__a; f32__b; f32__c; f32__d; f32__e; f32__f +[inout] Inputs for function test_roundf_det: + \nothing +[inout] Out (internal) for function test_sin_det: + x; y; z +[inout] Inputs for function test_sin_det: + \nothing +[inout] Out (internal) for function test_sqrt: + x; a; b; c +[inout] Inputs for function test_sqrt: + nondet +[inout] Out (internal) for function test_sqrt_det: + a; b; c; d +[inout] Inputs for function test_sqrt_det: + nondet +[inout] Out (internal) for function test_sqrtf: + f32__x; tmp; f32__a; tmp_1; b; tmp_3; c; tmp_5 +[inout] Inputs for function test_sqrtf: + nondet +[inout] Out (internal) for function test_sqrtf_det: + f32__a; f32__b; f32__c; f32__d +[inout] Inputs for function test_sqrtf_det: + nondet +[inout] Out (internal) for function test_trunc: + x; a; b; c +[inout] Inputs for function test_trunc: + nondet +[inout] Out (internal) for function test_trunc_det: + a; b; c; d; e; f +[inout] Inputs for function test_trunc_det: + \nothing +[inout] Out (internal) for function test_truncf: + f32__x; tmp; f32__a; tmp_1; f32__b; tmp_3; f32__c +[inout] Inputs for function test_truncf: + nondet +[inout] Out (internal) for function test_truncf_det: + f32__a; f32__b; f32__c; f32__d; f32__e; f32__f +[inout] Inputs for function test_truncf_det: + \nothing +[inout] Out (internal) for function main: + __retres +[inout] Inputs for function main: + nondet +/* Generated by Frama-C */ +typedef int wchar_t; +/*@ +axiomatic MemCmp { + logic ℤ memcmp{L1, L2}(char *s1, char *s2, ℤ n) + reads \at(*(s1+(0 .. n-1)),L1), \at(*(s2+(0 .. n-1)),L2); + + axiom memcmp_zero{L1, L2}: + ∀ char *s1, char *s2; + ∀ ℤ n; + memcmp{L1, L2}(s1, s2, n) ≡ 0 ⇔ + (∀ ℤ i; 0 ≤ i < n ⇒ \at(*(s1+i),L1) ≡ \at(*(s2+i),L2)); + + } + */ +/*@ +axiomatic MemChr { + logic 𔹠memchr{L}(char *s, ℤ c, ℤ n) + reads *(s+(0 .. n-1)); + + axiom memchr_def{L}: + ∀ char *s; + ∀ ℤ c; + ∀ ℤ n; + memchr(s, c, n) ≡ \true ⇔ (∃ int i; 0 ≤ i < n ∧ *(s+i) ≡ c); + + } + */ +/*@ +axiomatic MemSet { + logic 𔹠memset{L}(char *s, ℤ c, ℤ n) + reads *(s+(0 .. n-1)); + + axiom memset_def{L}: + ∀ char *s; + ∀ ℤ c; + ∀ ℤ n; + memset(s, c, n) ≡ \true ⇔ (∀ ℤ i; 0 ≤ i < n ⇒ *(s+i) ≡ c); + + } + */ +/*@ +axiomatic StrLen { + logic ℤ strlen{L}(char *s) + reads *(s+(0 ..)); + + axiom strlen_pos_or_null{L}: + ∀ char *s; + ∀ ℤ i; + 0 ≤ i ∧ (∀ ℤ j; 0 ≤ j < i ⇒ *(s+j) ≢ '\000') ∧ + *(s+i) ≡ '\000' ⇒ strlen(s) ≡ i; + + axiom strlen_neg{L}: + ∀ char *s; (∀ ℤ i; 0 ≤ i ⇒ *(s+i) ≢ '\000') ⇒ strlen(s) < 0; + + axiom strlen_before_null{L}: + ∀ char *s; + ∀ ℤ i; 0 ≤ i < strlen(s) ⇒ *(s+i) ≢ '\000'; + + axiom strlen_at_null{L}: + ∀ char *s; 0 ≤ strlen(s) ⇒ *(s+strlen(s)) ≡ '\000'; + + axiom strlen_not_zero{L}: + ∀ char *s; + ∀ ℤ i; 0 ≤ i ≤ strlen(s) ∧ *(s+i) ≢ '\000' ⇒ i < strlen(s); + + axiom strlen_zero{L}: + ∀ char *s; + ∀ ℤ i; + 0 ≤ i ≤ strlen(s) ∧ *(s+i) ≡ '\000' ⇒ i ≡ strlen(s); + + axiom strlen_sup{L}: + ∀ char *s; + ∀ ℤ i; 0 ≤ i ∧ *(s+i) ≡ '\000' ⇒ 0 ≤ strlen(s) ≤ i; + + axiom strlen_shift{L}: + ∀ char *s; + ∀ ℤ i; 0 ≤ i ≤ strlen(s) ⇒ strlen(s+i) ≡ strlen(s)-i; + + axiom strlen_create{L}: + ∀ char *s; + ∀ ℤ i; 0 ≤ i ∧ *(s+i) ≡ '\000' ⇒ 0 ≤ strlen(s) ≤ i; + + axiom strlen_create_shift{L}: + ∀ char *s; + ∀ ℤ i; + ∀ ℤ k; + 0 ≤ k ≤ i ∧ *(s+i) ≡ '\000' ⇒ 0 ≤ strlen(s+k) ≤ i-k; + + axiom memcmp_strlen_left{L}: + ∀ char *s1, char *s2; + ∀ ℤ n; + memcmp{L, L}(s1, s2, n) ≡ 0 ∧ strlen(s1) < n ⇒ + strlen(s1) ≡ strlen(s2); + + axiom memcmp_strlen_right{L}: + ∀ char *s1, char *s2; + ∀ ℤ n; + memcmp{L, L}(s1, s2, n) ≡ 0 ∧ strlen(s2) < n ⇒ + strlen(s1) ≡ strlen(s2); + + axiom memcmp_strlen_shift_left{L}: + ∀ char *s1, char *s2; + ∀ ℤ k, ℤ n; + memcmp{L, L}(s1, s2+k, n) ≡ 0 ≤ k ∧ strlen(s1) < n ⇒ + 0 ≤ strlen(s2) ≤ k+strlen(s1); + + axiom memcmp_strlen_shift_right{L}: + ∀ char *s1, char *s2; + ∀ ℤ k, ℤ n; + memcmp{L, L}(s1+k, s2, n) ≡ 0 ≤ k ∧ strlen(s2) < n ⇒ + 0 ≤ strlen(s1) ≤ k+strlen(s2); + + } + */ +/*@ +axiomatic StrCmp { + logic ℤ strcmp{L}(char *s1, char *s2) + reads *(s1+(0 .. strlen(s1))), *(s2+(0 .. strlen(s2))); + + axiom strcmp_zero{L}: + ∀ char *s1, char *s2; + strcmp(s1, s2) ≡ 0 ⇔ + strlen(s1) ≡ strlen(s2) ∧ + (∀ ℤ i; 0 ≤ i ≤ strlen(s1) ⇒ *(s1+i) ≡ *(s2+i)); + + } + */ +/*@ +axiomatic StrNCmp { + logic ℤ strncmp{L}(char *s1, char *s2, ℤ n) + reads *(s1+(0 .. n-1)), *(s2+(0 .. n-1)); + + axiom strncmp_zero{L}: + ∀ char *s1, char *s2; + ∀ ℤ n; + strncmp(s1, s2, n) ≡ 0 ⇔ + (strlen(s1) < n ∧ strcmp(s1, s2) ≡ 0) ∨ + (∀ ℤ i; 0 ≤ i < n ⇒ *(s1+i) ≡ *(s2+i)); + + } + */ +/*@ +axiomatic StrChr { + logic 𔹠strchr{L}(char *s, ℤ c) + reads *(s+(0 .. strlen(s))); + + axiom strchr_def{L}: + ∀ char *s; + ∀ ℤ c; + strchr(s, c) ≡ \true ⇔ + (∃ ℤ i; 0 ≤ i ≤ strlen(s) ∧ *(s+i) ≡ c); + + } + */ +/*@ +axiomatic WcsLen { + logic ℤ wcslen{L}(wchar_t *s) + reads *(s+(0 ..)); + + axiom wcslen_pos_or_null{L}: + ∀ wchar_t *s; + ∀ ℤ i; + 0 ≤ i ∧ (∀ ℤ j; 0 ≤ j < i ⇒ *(s+j) ≢ 0) ∧ *(s+i) ≡ 0 ⇒ + wcslen(s) ≡ i; + + axiom wcslen_neg{L}: + ∀ wchar_t *s; (∀ ℤ i; 0 ≤ i ⇒ *(s+i) ≢ 0) ⇒ wcslen(s) < 0; + + axiom wcslen_before_null{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i < wcslen(s) ⇒ *(s+i) ≢ 0; + + axiom wcslen_at_null{L}: + ∀ wchar_t *s; 0 ≤ wcslen(s) ⇒ *(s+wcslen(s)) ≡ 0; + + axiom wcslen_not_zero{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i ≤ wcslen(s) ∧ *(s+i) ≢ 0 ⇒ i < wcslen(s); + + axiom wcslen_zero{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i ≤ wcslen(s) ∧ *(s+i) ≡ 0 ⇒ i ≡ wcslen(s); + + axiom wcslen_sup{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i ∧ *(s+i) ≡ 0 ⇒ 0 ≤ wcslen(s) ≤ i; + + axiom wcslen_shift{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i ≤ wcslen(s) ⇒ wcslen(s+i) ≡ wcslen(s)-i; + + axiom wcslen_create{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i ∧ *(s+i) ≡ 0 ⇒ 0 ≤ wcslen(s) ≤ i; + + axiom wcslen_create_shift{L}: + ∀ wchar_t *s; + ∀ int i; + ∀ int k; 0 ≤ k ≤ i ∧ *(s+i) ≡ 0 ⇒ 0 ≤ wcslen(s+k) ≤ i-k; + + } + */ +/*@ +axiomatic WcsCmp { + logic ℤ wcscmp{L}(wchar_t *s1, wchar_t *s2) + reads *(s1+(0 .. wcslen(s1))), *(s2+(0 .. wcslen(s2))); + + axiom wcscmp_zero{L}: + ∀ wchar_t *s1, wchar_t *s2; + wcscmp(s1, s2) ≡ 0 ⇔ + wcslen(s1) ≡ wcslen(s2) ∧ + (∀ ℤ i; 0 ≤ i ≤ wcslen(s1) ⇒ *(s1+i) ≡ *(s2+i)); + + } + */ +/*@ +axiomatic WcsNCmp { + logic ℤ wcsncmp{L}(wchar_t *s1, wchar_t *s2, ℤ n) + reads *(s1+(0 .. n-1)), *(s2+(0 .. n-1)); + + axiom wcsncmp_zero{L}: + ∀ wchar_t *s1, wchar_t *s2; + ∀ ℤ n; + wcsncmp(s1, s2, n) ≡ 0 ⇔ + (wcslen(s1) < n ∧ wcscmp(s1, s2) ≡ 0) ∨ + (∀ ℤ i; 0 ≤ i < n ⇒ *(s1+i) ≡ *(s2+i)); + + } + */ +/*@ logic ℤ minimum(ℤ i, ℤ j) = i<j? i: j; + */ +/*@ logic ℤ maximum(ℤ i, ℤ j) = i<j? j: i; + */ +/*@ +predicate valid_string{L}(char *s) = + 0 ≤ strlen(s) ∧ \valid(s+(0 .. strlen(s))); + */ +/*@ +predicate valid_read_string{L}(char *s) = + 0 ≤ strlen(s) ∧ \valid_read(s+(0 .. strlen(s))); + */ +/*@ +predicate valid_string_or_null{L}(char *s) = s ≡ \null ∨ valid_string(s); + */ +/*@ +predicate valid_wstring{L}(wchar_t *s) = + 0 ≤ wcslen(s) ∧ \valid(s+(0 .. wcslen(s))); + */ +/*@ +predicate valid_wstring_or_null{L}(wchar_t *s) = + s ≡ \null ∨ valid_wstring(s); + */ +extern int __FC_errno; + +/*@ behavior normal: + assumes \is_finite(x) ∧ \abs(x) ≤ 1; + ensures \is_finite(\result) ∧ \result ≥ 0; + assigns \nothing; + + behavior edom: + assumes \is_infinite(x) ∨ (\is_finite(x) ∧ \abs(x) > 1); + ensures __FC_errno ≡ 1; + assigns __FC_errno; + + disjoint behaviors normal, edom; + */ +extern double acos(double x); + +/*@ behavior normal: + assumes \is_finite(x) ∧ \abs(x) ≤ 1; + ensures \is_finite(\result) ∧ \result ≥ 0; + assigns \nothing; + + behavior edom: + assumes \is_infinite(x) ∨ (\is_finite(x) ∧ \abs(x) > 1); + ensures __FC_errno ≡ 1; + assigns __FC_errno; + + disjoint behaviors normal, edom; + */ +extern float acosf(float x); + +/*@ behavior normal: + assumes \is_finite(x) ∧ \abs(x) ≤ 1; + ensures \is_finite(\result) ∧ \result ≥ 0; + assigns \nothing; + + behavior edom: + assumes \is_infinite(x) ∨ (\is_finite(x) ∧ \abs(x) > 1); + ensures __FC_errno ≡ 1; + assigns __FC_errno; + + disjoint behaviors normal, edom; + */ +extern long double acosl(long double x); + +/*@ behavior normal: + assumes \is_finite(x) ∧ \abs(x) ≤ 1; + ensures \is_finite(\result); + assigns \nothing; + + behavior edom: + assumes \is_infinite(x) ∨ (\is_finite(x) ∧ \abs(x) > 1); + ensures __FC_errno ≡ 1; + assigns __FC_errno; + + disjoint behaviors normal, edom; + */ +extern double asin(double x); + +/*@ behavior normal: + assumes \is_finite(x) ∧ \abs(x) ≤ 1; + ensures \is_finite(\result); + assigns \nothing; + + behavior edom: + assumes \is_infinite(x) ∨ (\is_finite(x) ∧ \abs(x) > 1); + ensures __FC_errno ≡ 1; + assigns __FC_errno; + + disjoint behaviors normal, edom; + */ +extern float asinf(float x); + +/*@ behavior normal: + assumes \is_finite(x) ∧ \abs(x) ≤ 1; + ensures \is_finite(\result); + assigns \nothing; + + behavior edom: + assumes \is_infinite(x) ∨ (\is_finite(x) ∧ \abs(x) > 1); + ensures __FC_errno ≡ 1; + assigns __FC_errno; + + disjoint behaviors normal, edom; + */ +extern long double asinl(long double x); + +/*@ assigns \result; + assigns \result \from y, x; */ +extern double atan2(double y, double x); + +/*@ assigns \result; + assigns \result \from x; */ +extern double cos(double x); + +/*@ assigns \result; + assigns \result \from x; */ +extern double sin(double x); + +/*@ behavior normal: + assumes \is_finite(x) ∧ x ≥ 1; + ensures \is_finite(\result) ∧ \result ≥ 0; + assigns \nothing; + + behavior infinite: + assumes \is_plus_infinity(x); + ensures \is_plus_infinity(\result); + assigns \nothing; + + behavior edom: + assumes \is_minus_infinity(x) ∨ (\is_finite(x) ∧ x < 1); + ensures __FC_errno ≡ 1; + assigns __FC_errno; + + disjoint behaviors normal, infinite, edom; + */ +extern double acosh(double x); + +/*@ behavior normal: + assumes \is_finite(x) ∧ x ≥ 1; + ensures \is_finite(\result) ∧ \result ≥ 0; + assigns \nothing; + + behavior infinite: + assumes \is_plus_infinity(x); + ensures \is_plus_infinity(\result); + assigns \nothing; + + behavior edom: + assumes \is_minus_infinity(x) ∨ (\is_finite(x) ∧ x < 1); + ensures __FC_errno ≡ 1; + assigns __FC_errno; + + disjoint behaviors normal, infinite, edom; + */ +extern float acoshf(float x); + +/*@ behavior normal: + assumes \is_finite(x) ∧ x ≥ 1; + ensures \is_finite(\result) ∧ \result ≥ 0; + assigns \nothing; + + behavior infinite: + assumes \is_plus_infinity(x); + ensures \is_plus_infinity(\result); + assigns \nothing; + + behavior edom: + assumes \is_minus_infinity(x) ∨ (\is_finite(x) ∧ x < 1); + ensures __FC_errno ≡ 1; + assigns __FC_errno; + + disjoint behaviors normal, infinite, edom; + */ +extern long double acoshl(long double x); + +/*@ assigns \result; + assigns \result \from x; */ +extern double exp(double x); + +/*@ assigns \result; + assigns \result \from x; */ +extern float expf(float x); + +/*@ assigns \result; + assigns \result \from x; */ +extern double log(double x); + +/*@ assigns \result; + assigns \result \from x; */ +extern float logf(float x); + +/*@ assigns \result; + assigns \result \from x; */ +extern double log10(double x); + +/*@ assigns \result; + assigns \result \from x; */ +extern float log10f(float x); + +/*@ assigns \result; + assigns \result \from x, y; */ +extern double pow(double x, double y); + +/*@ assigns \result; + assigns \result \from x, y; */ +extern float powf(float x, float y); + +/*@ assigns \result; + assigns \result \from x; */ +extern double sqrt(double x); + +/*@ assigns \result; + assigns \result \from x; */ +extern float sqrtf(float x); + +/*@ assigns \result; + assigns \result \from x; */ +extern double ceil(double x); + +/*@ assigns \result; + assigns \result \from x; */ +extern float ceilf(float x); + +/*@ assigns \result; + assigns \result \from x; */ +extern double floor(double x); + +/*@ assigns \result; + assigns \result \from x; */ +extern float floorf(float x); + +/*@ assigns \result; + assigns \result \from x; */ +extern double round(double x); + +/*@ assigns \result; + assigns \result \from x; */ +extern float roundf(float x); + +/*@ assigns \result; + assigns \result \from x; */ +extern double trunc(double x); + +/*@ assigns \result; + assigns \result \from x; */ +extern float truncf(float x); + +/*@ assigns \result; + assigns \result \from x, y; */ +extern double fmod(double x, double y); + +/*@ requires valid_read_string(tagp); + ensures \is_NaN(\result); + assigns \nothing; + */ +extern double nan(char const *tagp); + +/*@ requires valid_read_string(tagp); + ensures \is_NaN(\result); + assigns \nothing; + */ +extern float nanf(char const *tagp); + +/*@ requires valid_read_string(tagp); + ensures \is_NaN(\result); + assigns \nothing; + */ +extern long double nanl(char const *tagp); + +static int volatile nondet; +double double_interval(double min, double max) +{ + double __retres; + if (nondet) { + __retres = min; + goto return_label; + } + else { + __retres = max; + goto return_label; + } + return_label: return __retres; +} + +void test_cos_det(void) +{ + double x; + double y; + double z; + x = cos(1.); + y = cos(0.); + z = cos(- 1.); + return; +} + +void test_sin_det(void) +{ + double x; + double y; + double z; + x = sin(1.); + y = sin(0.); + z = sin(- 1.); + return; +} + +void test_atan2_det(void) +{ + double a; + double b; + double c; + double d; + double e; + double f; + double g; + double h; + double i; + double j; + double k; + double l; + double m; + a = atan2(1.,0.); + b = atan2(0.,1.); + c = atan2(1.,- 0.); + d = atan2(- 0.,1.); + e = atan2(- 1.,0.); + f = atan2(- 1.,0.); + g = atan2(- 1.,- 0.); + h = atan2(- 1.,- 0.); + i = atan2(0.,0.); + j = atan2(2.,1.); + k = atan2(- 2.,1.); + l = atan2(2.,- 1.); + m = atan2(- 2.,- 1.); + return; +} + +void test_atan2(void) +{ + double x; + double y; + double a; + double b; + double c; + double d; + double e; + double f; + double g; + double h; + double i; + double j; + double k; + double l; + double m; + double n; + y = double_interval(0.125,10.); + x = double_interval(0.125,10.); + a = atan2(y,x); + x = double_interval(- 2.5,3.); + b = atan2(y,x); + y = double_interval(- 1.25,- 0.5); + c = atan2(y,x); + x = double_interval(- 3.,- 2.5); + d = atan2(y,x); + x = double_interval(- 0.,0.); + e = atan2(y,x); + x = double_interval(1.,5.); + y = double_interval(- 1.,- 0.); + f = atan2(y,x); + y = double_interval(0.,0.5); + g = atan2(y,x); + y = double_interval(- 0.,0.5); + h = atan2(y,x); + y = double_interval(- 0.5,0.); + i = atan2(y,x); + y = double_interval(- 0.,0.); + j = atan2(y,x); + k = atan2(0.,x); + l = atan2(- 0.,x); + m = atan2(0.,- x); + n = atan2(- 0.,- x); + return; +} + +void test_pow_det(void) +{ + double a; + double b; + double c; + double d; + double e; + double f; + double g; + double h; + a = pow(1.,8.); + b = pow(0.,1.); + c = pow(12.,0.); + d = pow(2.25,0.25); + e = pow(178.25,0.25); + f = pow(129.5,- 0.25); + g = pow(512.,- 2.25); + h = pow(0.,0.); + return; +} + +void test_powf_det(void) +{ + float f32__a; + float f32__b; + float f32__c; + float f32__d; + float f32__e; + float f32__f; + float f32__g; + float f32__h; + f32__a = powf((float)1.,(float)8.); + f32__b = powf((float)0.,(float)1.); + f32__c = powf((float)12.,(float)0.); + f32__d = powf((float)2.25,(float)0.25); + f32__e = powf((float)178.25,(float)0.25); + f32__f = powf((float)129.5,(float)(- 0.25)); + f32__g = powf((float)512.,(float)(- 2.25)); + f32__h = powf((float)0.,(float)0.); + return; +} + +extern int ( /* missing proto */ Frama_C_show_each_unreachable)(); + +/*@ assigns \result; + assigns \result \from \nothing; */ +extern int ( /* missing proto */ Frama_C_show_each_i)(); + +/*@ assigns \result; + assigns \result \from \nothing; */ +extern int ( /* missing proto */ Frama_C_show_each_j)(); + +void test_pow_singleton_exp(void) +{ + double x; + double c; + double d; + double e; + double f; + double g; + double h; + double i; + double j; + double k; + double l; + double m; + double n; + double o; + double p; + double q; + double r; + double s; + x = double_interval(- 3.5,- 2.75); + if (nondet) { + /*@ assert + Value: is_nan_or_infinite: + \warning("\\is_finite(Frama_C_pow(x,1.5))"); + */ + pow(x,1.5); + Frama_C_show_each_unreachable(); + } + if (nondet) { + /*@ assert + Value: is_nan_or_infinite: + \warning("\\is_finite(Frama_C_pow(x,- 1.5))"); + */ + pow(x,- 1.5); + Frama_C_show_each_unreachable(); + } + x = double_interval(- 3.5,2.75); + /*@ assert + Value: is_nan_or_infinite: \warning("\\is_finite(Frama_C_pow(x,1.5))"); + */ + c = pow(x,1.5); + /*@ assert + Value: is_nan_or_infinite: + \warning("\\is_finite(Frama_C_pow(x,- 1.5))"); + */ + d = pow(x,- 1.5); + /*@ assert + Value: is_nan_or_infinite: \warning("\\is_finite(Frama_C_pow(x,- 3.))"); + */ + e = pow(x,- 3.); + /*@ assert + Value: is_nan_or_infinite: \warning("\\is_finite(Frama_C_pow(x,- 2.))"); + */ + f = pow(x,- 2.); + x = double_interval((double)(1LL << 50),(double)(1LL << 62)); + /*@ assert + Value: is_nan_or_infinite: \warning("\\is_finite(Frama_C_pow(x,19.5))"); + */ + g = pow(x,19.5); + x = double_interval((double)(- (1LL << 49)),- .75); + /*@ assert + Value: is_nan_or_infinite: \warning("\\is_finite(Frama_C_pow(x,23.0))"); + */ + h = pow(x,23.0); + x = double_interval(0.125,0.25); + i = pow(x,500.); + Frama_C_show_each_i(i); + x = double_interval(1.25,2.0); + j = pow(x,- 1024.); + Frama_C_show_each_j(j); + k = pow(x,2.5); + l = pow(x,3.5); + x = double_interval(0.25,4.125); + m = pow(x,- 2.25); + n = pow(x,- 1.5); + o = pow(x,0.25); + p = pow(x,1.625); + q = pow(x,4.); + x = double_interval(- 3.5,- 0.125); + r = pow(x,- 2.); + s = pow(x,- 1.); + return; +} + +void test_pow(void) +{ + double x; + double y; + double a; + double b; + double c; + double d; + double e; + double f; + double g; + double h; + double i; + double j; + double k; + double l; + double m; + double n; + double o; + double p; + double q; + double r; + y = double_interval(- 18.5,12.125); + a = pow(1.0,y); + x = double_interval(- 15.25,32.75); + b = pow(x,0.0); + y = double_interval(- 0.0,0.0); + c = pow(x,y); + x = double_interval(- 4.0,7.5); + y = double_interval(2.125,2.875); + /*@ assert + Value: is_nan_or_infinite: \warning("\\is_finite(Frama_C_pow(x,y))"); + */ + d = pow(x,y); + y = double_interval(2.125,4.875); + /*@ assert + Value: is_nan_or_infinite: \warning("\\is_finite(Frama_C_pow(x,y))"); + */ + e = pow(x,y); + y = double_interval(2.0,3.0); + /*@ assert + Value: is_nan_or_infinite: \warning("\\is_finite(Frama_C_pow(x,y))"); + */ + f = pow(x,y); + y = double_interval(- 0.75,- 0.); + x = double_interval(0.125,7.5); + g = pow(x,y); + y = double_interval(0.25,2.5); + x = double_interval(0.5,1.25); + h = pow(x,y); + x = double_interval(- 1.0,1.0); + y = double_interval(- 1.0,1.0); + /*@ assert + Value: is_nan_or_infinite: \warning("\\is_finite(Frama_C_pow(x,y))"); + */ + i = pow(x,y); + x = double_interval(- 1.0,1.0); + y = double_interval(- 0.5,1.0); + /*@ assert + Value: is_nan_or_infinite: \warning("\\is_finite(Frama_C_pow(x,y))"); + */ + j = pow(x,y); + x = double_interval(- 13.,430.); + y = double_interval(3.,6.); + /*@ assert + Value: is_nan_or_infinite: \warning("\\is_finite(Frama_C_pow(x,y))"); + */ + k = pow(x,y); + x = double_interval(- 4.,- 2.); + y = double_interval(3.,5.); + /*@ assert + Value: is_nan_or_infinite: \warning("\\is_finite(Frama_C_pow(x,y))"); + */ + l = pow(x,y); + x = double_interval(- 0.,10.); + y = double_interval(- 0.,5.); + m = pow(x,y); + x = double_interval(- 0.0,10.0); + y = double_interval(- 3.5,4.5); + /*@ assert + Value: is_nan_or_infinite: \warning("\\is_finite(Frama_C_pow(x,y))"); + */ + n = pow(x,y); + x = double_interval(- 5.,- 0.5); + y = double_interval(- 0.875,- 0.125); + if (nondet) { + /*@ assert + Value: is_nan_or_infinite: \warning("\\is_finite(Frama_C_pow(x,y))"); + */ + pow(x,y); + Frama_C_show_each_unreachable(); + } + y = double_interval(- 0.25,0.25); + /*@ assert + Value: is_nan_or_infinite: \warning("\\is_finite(Frama_C_pow(x,y))"); + */ + o = pow(x,y); + y = double_interval(10.,11.5); + /*@ assert + Value: is_nan_or_infinite: \warning("\\is_finite(Frama_C_pow(x,y))"); + */ + p = pow(x,y); + y = double_interval(- 9876.5,1234.5); + /*@ assert + Value: is_nan_or_infinite: \warning("\\is_finite(Frama_C_pow(x,y))"); + */ + q = pow(x,y); + x = double_interval(1e10,1e11); + y = double_interval(1e14,1e15); + if (nondet) { + /*@ assert + Value: is_nan_or_infinite: \warning("\\is_finite(Frama_C_pow(x,y))"); + */ + pow(x,y); + Frama_C_show_each_unreachable(); + } + x = double_interval(- 1e11,- 1e10); + y = double_interval(1e14,1e15); + if (nondet) { + /*@ assert + Value: is_nan_or_infinite: \warning("\\is_finite(Frama_C_pow(x,y))"); + */ + pow(x,y); + Frama_C_show_each_unreachable(); + } + y = double_interval(- 0.5,9.5); + r = pow(10.0,y); + return; +} + +void test_powf_singleton_exp(void) +{ + float f32__x; + double tmp; + double tmp_0; + float f32__c; + float f32__d; + float f32__e; + float f32__f; + double tmp_5; + float f32__g; + double tmp_7; + float f32__h; + double tmp_9; + float f32__i; + double tmp_11; + float f32__j; + float f32__k; + float f32__l; + double tmp_15; + float f32__m; + float f32__n; + float f32__o; + float f32__p; + float f32__q; + double tmp_21; + float f32__r; + float f32__s; + { /* sequence */ + tmp = double_interval(- 3.5,- 2.75); + f32__x = (float)tmp; + } + if (nondet) { + /*@ assert + Value: is_nan_or_infinite: + \warning("\\is_finite(Frama_C_powf(f32__x,(float)1.5))"); + */ + powf(f32__x,(float)1.5); + Frama_C_show_each_unreachable(); + } + if (nondet) { + /*@ assert + Value: is_nan_or_infinite: + \warning("\\is_finite(Frama_C_powf(f32__x,(float)(- 1.5)))"); + */ + powf(f32__x,(float)(- 1.5)); + Frama_C_show_each_unreachable(); + } + { /* sequence */ + tmp_0 = double_interval(- 3.5,2.75); + f32__x = (float)tmp_0; + } + /*@ assert + Value: is_nan_or_infinite: + \warning("\\is_finite(Frama_C_powf(f32__x,(float)1.5))"); + */ + f32__c = powf(f32__x,(float)1.5); + /*@ assert + Value: is_nan_or_infinite: + \warning("\\is_finite(Frama_C_powf(f32__x,(float)(- 1.5)))"); + */ + f32__d = powf(f32__x,(float)(- 1.5)); + /*@ assert + Value: is_nan_or_infinite: + \warning("\\is_finite(Frama_C_powf(f32__x,(float)(- 3.)))"); + */ + f32__e = powf(f32__x,(float)(- 3.)); + /*@ assert + Value: is_nan_or_infinite: + \warning("\\is_finite(Frama_C_powf(f32__x,(float)(- 2.)))"); + */ + f32__f = powf(f32__x,(float)(- 2.)); + { /* sequence */ + tmp_5 = double_interval((double)(1LL << 20),(double)(1LL << 21)); + f32__x = (float)tmp_5; + } + f32__g = powf(f32__x,(float)5.8); + { /* sequence */ + tmp_7 = double_interval((double)(- (1LL << 49)),- .75); + f32__x = (float)tmp_7; + } + /*@ assert + Value: is_nan_or_infinite: + \warning("\\is_finite(Frama_C_powf(f32__x,(float)23.0))"); + */ + f32__h = powf(f32__x,(float)23.0); + { /* sequence */ + tmp_9 = double_interval(0.125,0.25); + f32__x = (float)tmp_9; + } + f32__i = powf(f32__x,(float)60.); + Frama_C_show_each_i(f32__i); + { /* sequence */ + tmp_11 = double_interval(1.25,2.0); + f32__x = (float)tmp_11; + } + f32__j = powf(f32__x,(float)(- 1024.)); + Frama_C_show_each_j(f32__j); + f32__k = powf(f32__x,(float)2.5); + f32__l = powf(f32__x,(float)3.5); + { /* sequence */ + tmp_15 = double_interval(0.25,4.125); + f32__x = (float)tmp_15; + } + f32__m = powf(f32__x,(float)(- 2.25)); + f32__n = powf(f32__x,(float)(- 1.5)); + f32__o = powf(f32__x,(float)0.25); + f32__p = powf(f32__x,(float)1.625); + f32__q = powf(f32__x,(float)4.); + { /* sequence */ + tmp_21 = double_interval(- 3.5,- 0.125); + f32__x = (float)tmp_21; + } + f32__r = powf(f32__x,(float)(- 2.)); + f32__s = powf(f32__x,(float)(- 1.)); + return; +} + +void test_powf(void) +{ + float f32__x; + float f32__y; + double tmp; + float f32__a; + double tmp_1; + float f32__b; + double tmp_3; + float f32__c; + double tmp_5; + double tmp_6; + float f32__d; + double tmp_8; + float f32__e; + double tmp_10; + float f32__f; + double tmp_12; + double tmp_13; + float f32__g; + double tmp_15; + double tmp_16; + float f32__h; + double tmp_18; + double tmp_19; + float f32__i; + double tmp_21; + double tmp_22; + float f32__j; + double tmp_24; + double tmp_25; + float f32__k; + double tmp_27; + double tmp_28; + float f32__l; + double tmp_30; + double tmp_31; + float f32__m; + { /* sequence */ + tmp = double_interval(- 18.5,12.125); + f32__y = (float)tmp; + } + f32__a = powf((float)1.0,f32__y); + { /* sequence */ + tmp_1 = double_interval(- 15.25,32.75); + f32__x = (float)tmp_1; + } + f32__b = powf(f32__x,(float)0.0); + { /* sequence */ + tmp_3 = double_interval(- 0.0,0.0); + f32__y = (float)tmp_3; + } + f32__c = powf(f32__x,f32__y); + { /* sequence */ + tmp_5 = double_interval(- 4.0,7.5); + f32__x = (float)tmp_5; + } + { /* sequence */ + tmp_6 = double_interval(2.125,2.875); + f32__y = (float)tmp_6; + } + /*@ assert + Value: is_nan_or_infinite: + \warning("\\is_finite(Frama_C_powf(f32__x,f32__y))"); + */ + f32__d = powf(f32__x,f32__y); + { /* sequence */ + tmp_8 = double_interval(2.125,4.875); + f32__y = (float)tmp_8; + } + /*@ assert + Value: is_nan_or_infinite: + \warning("\\is_finite(Frama_C_powf(f32__x,f32__y))"); + */ + f32__e = powf(f32__x,f32__y); + { /* sequence */ + tmp_10 = double_interval(2.0,3.0); + f32__y = (float)tmp_10; + } + /*@ assert + Value: is_nan_or_infinite: + \warning("\\is_finite(Frama_C_powf(f32__x,f32__y))"); + */ + f32__f = powf(f32__x,f32__y); + { /* sequence */ + tmp_12 = double_interval(- 0.75,- 0.); + f32__y = (float)tmp_12; + } + { /* sequence */ + tmp_13 = double_interval(0.125,7.5); + f32__x = (float)tmp_13; + } + f32__g = powf(f32__x,f32__y); + { /* sequence */ + tmp_15 = double_interval(0.25,2.5); + f32__y = (float)tmp_15; + } + { /* sequence */ + tmp_16 = double_interval(0.5,1.25); + f32__x = (float)tmp_16; + } + f32__h = powf(f32__x,f32__y); + { /* sequence */ + tmp_18 = double_interval(- 1.0,1.0); + f32__x = (float)tmp_18; + } + { /* sequence */ + tmp_19 = double_interval(- 1.0,1.0); + f32__y = (float)tmp_19; + } + /*@ assert + Value: is_nan_or_infinite: + \warning("\\is_finite(Frama_C_powf(f32__x,f32__y))"); + */ + f32__i = powf(f32__x,f32__y); + { /* sequence */ + tmp_21 = double_interval(- 1.0,1.0); + f32__x = (float)tmp_21; + } + { /* sequence */ + tmp_22 = double_interval(- 0.5,1.0); + f32__y = (float)tmp_22; + } + /*@ assert + Value: is_nan_or_infinite: + \warning("\\is_finite(Frama_C_powf(f32__x,f32__y))"); + */ + f32__j = powf(f32__x,f32__y); + { /* sequence */ + tmp_24 = double_interval(- 13.,430.); + f32__x = (float)tmp_24; + } + { /* sequence */ + tmp_25 = double_interval(3.,6.); + f32__y = (float)tmp_25; + } + /*@ assert + Value: is_nan_or_infinite: + \warning("\\is_finite(Frama_C_powf(f32__x,f32__y))"); + */ + f32__k = powf(f32__x,f32__y); + { /* sequence */ + tmp_27 = double_interval(- 4.,- 2.); + f32__x = (float)tmp_27; + } + { /* sequence */ + tmp_28 = double_interval(3.,5.); + f32__y = (float)tmp_28; + } + /*@ assert + Value: is_nan_or_infinite: + \warning("\\is_finite(Frama_C_powf(f32__x,f32__y))"); + */ + f32__l = powf(f32__x,f32__y); + { /* sequence */ + tmp_30 = double_interval(- 0.,10.); + f32__x = (float)tmp_30; + } + { /* sequence */ + tmp_31 = double_interval(- 0.,5.); + f32__y = (float)tmp_31; + } + f32__m = powf(f32__x,f32__y); + return; +} + +void test_fmod_det(void) +{ + double a; + double b; + double c; + double d; + double e; + double f; + a = fmod(4.0,2.25); + b = fmod(- 4.0,2.25); + c = fmod(- 0.0,2.25); + d = fmod(0.0,2.25); + e = fmod(0.0,0.0009765625); + f = fmod(1.25,0.0009765625); + if (nondet) { + /*@ assert + Value: is_nan_or_infinite: + \warning("\\is_finite(Frama_C_fmod(0.125,0.0))"); + */ + fmod(0.125,0.0); + Frama_C_show_each_unreachable(); + } + return; +} + +void test_fmod(void) +{ + double x; + double y; + double a; + double b; + double c; + double d; + double e; + double f; + double g; + double h; + double i; + double j; + double k; + double l; + double m; + double n; + double o; + double p; + double q; + double r; + double s; + double tmp_18; + double t; + double u; + double v1; + double v2; + double v3; + double v4; + double w1; + double w2; + double w3; + x = double_interval(2.,9.5); + a = fmod(x,1.5); + b = fmod(x,- 1.5); + c = fmod(- x,1.5); + d = fmod(- x,- 1.5); + x = double_interval(.75,1.25); + e = fmod(x,1.5); + f = fmod(x,- 1.5); + x = double_interval(4.,5.5); + y = double_interval(6.5,8.); + g = fmod(x,y); + x = double_interval(6.5,8.); + y = double_interval(4.,5.5); + h = fmod(x,y); + i = fmod(x,- y); + x = double_interval(- 9.,8.75); + y = double_interval(- 2.,4.5); + /*@ assert + Value: is_nan_or_infinite: \warning("\\is_finite(Frama_C_fmod(x,y))"); + */ + j = fmod(x,y); + x = double_interval(- 2.,4.5); + y = double_interval(- 9.,8.75); + /*@ assert + Value: is_nan_or_infinite: \warning("\\is_finite(Frama_C_fmod(x,y))"); + */ + k = fmod(x,y); + y = double_interval(- 0.0,0.0); + if (nondet) { + /*@ assert + Value: is_nan_or_infinite: \warning("\\is_finite(Frama_C_fmod(x,y))"); + */ + fmod(x,y); + Frama_C_show_each_unreachable(); + } + y = double_interval(0.0,0.125); + /*@ assert + Value: is_nan_or_infinite: \warning("\\is_finite(Frama_C_fmod(x,y))"); + */ + l = fmod(x,y); + y = double_interval(- 0.125,- 0.0); + /*@ assert + Value: is_nan_or_infinite: \warning("\\is_finite(Frama_C_fmod(x,y))"); + */ + m = fmod(x,y); + x = double_interval(1e308,1.1e308); + n = fmod(x,0.001953125); + x = double_interval(- 1.1e308,- 1e308); + o = fmod(x,0.001953125); + x = double_interval(1e308,1.00001e308); + p = fmod(x,0.001953125); + x = double_interval(1.600000000000001e11,1.600000000000005e11); + q = fmod(x,0.001953125); + x = double_interval(1.759218604000011e13,1759218604000015e13); + r = fmod(x,0.00195313); + x = double_interval(0.5,0.505); + s = fmod(x,0.1); + { /* sequence */ + tmp_18 = double_interval(0.5,0.505); + x = - tmp_18; + } + t = fmod(x,0.1); + x = double_interval((double)(-8),- 6.5); + u = fmod(x,(double)4); + x = double_interval((double)6,(double)7); + y = double_interval((double)(-5),(double)(-4)); + v1 = fmod(x,y); + y = double_interval((double)4,(double)5); + v2 = fmod(x,y); + x = double_interval((double)(-7),(double)(-6)); + v3 = fmod(x,y); + y = double_interval((double)(-5),(double)(-4)); + v4 = fmod(x,y); + x = double_interval((double)2,(double)3); + y = double_interval((double)(-4),(double)5); + /*@ assert + Value: is_nan_or_infinite: \warning("\\is_finite(Frama_C_fmod(x,y))"); + */ + w1 = fmod(x,y); + x = double_interval((double)(-2),(double)3); + /*@ assert + Value: is_nan_or_infinite: \warning("\\is_finite(Frama_C_fmod(x,y))"); + */ + w2 = fmod(x,y); + x = double_interval((double)(-3),(double)2); + /*@ assert + Value: is_nan_or_infinite: \warning("\\is_finite(Frama_C_fmod(x,y))"); + */ + w3 = fmod(x,y); + return; +} + +void test_sqrt_det(void) +{ + double a; + double b; + double c; + double d; + a = sqrt(42.125); + b = sqrt(0.125); + if (nondet) { + /*@ assert + Value: is_nan_or_infinite: + \warning("\\is_finite(Frama_C_sqrt(- 2.))"); + */ + sqrt(- 2.); + Frama_C_show_each_unreachable(); + } + c = sqrt(0.); + d = sqrt(- 0.); + return; +} + +void test_sqrt(void) +{ + double x; + double a; + double b; + double c; + x = double_interval(- 0.0,5.0); + a = sqrt(x); + x = double_interval(- 6.5,0.0); + /*@ assert + Value: is_nan_or_infinite: \warning("\\is_finite(Frama_C_sqrt(x))"); + */ + b = sqrt(x); + x = double_interval(- 6.5,- 0.0); + /*@ assert + Value: is_nan_or_infinite: \warning("\\is_finite(Frama_C_sqrt(x))"); + */ + c = sqrt(x); + x = double_interval(- 6.5,- 0.1); + if (nondet) { + /*@ assert + Value: is_nan_or_infinite: \warning("\\is_finite(Frama_C_sqrt(x))"); + */ + sqrt(x); + Frama_C_show_each_unreachable(); + } + return; +} + +void test_sqrtf_det(void) +{ + float f32__a; + float f32__b; + float f32__c; + float f32__d; + f32__a = sqrtf((float)42.125); + f32__b = sqrtf((float)0.125); + if (nondet) { + /*@ assert + Value: is_nan_or_infinite: + \warning("\\is_finite(Frama_C_sqrtf((float)(- 2.)))"); + */ + sqrtf((float)(- 2.)); + Frama_C_show_each_unreachable(); + } + f32__c = sqrtf((float)0.); + f32__d = sqrtf((float)(- 0.)); + return; +} + +void test_sqrtf(void) +{ + float f32__x; + double tmp; + float f32__a; + double tmp_1; + float b; + double tmp_3; + float c; + double tmp_5; + tmp = double_interval(- 0.0,5.0); + f32__x = (float)tmp; + f32__a = sqrtf(f32__x); + { /* sequence */ + tmp_1 = double_interval(- 6.5,0.0); + f32__x = (float)tmp_1; + } + /*@ assert + Value: is_nan_or_infinite: + \warning("\\is_finite(Frama_C_sqrtf(f32__x))"); + */ + b = sqrtf(f32__x); + { /* sequence */ + tmp_3 = double_interval(- 6.5,- 0.0); + f32__x = (float)tmp_3; + } + /*@ assert + Value: is_nan_or_infinite: + \warning("\\is_finite(Frama_C_sqrtf(f32__x))"); + */ + c = sqrtf(f32__x); + { /* sequence */ + tmp_5 = double_interval(- 6.5,- 0.1); + f32__x = (float)tmp_5; + } + if (nondet) { + /*@ assert + Value: is_nan_or_infinite: + \warning("\\is_finite(Frama_C_sqrt((double)f32__x))"); + */ + sqrt((double)f32__x); + Frama_C_show_each_unreachable(); + } + return; +} + +void test_exp_det(void) +{ + double a; + double b; + double c; + double d; + double e; + a = exp(42.125); + b = exp(- 2.); + c = exp(0.); + d = exp(- 0.); + e = exp(- 1.); + if (nondet) { + /*@ assert + Value: is_nan_or_infinite: + \warning("\\is_finite(Frama_C_exp(1e100))"); + */ + exp(1e100); + Frama_C_show_each_unreachable(); + } + return; +} + +void test_expf_det(void) +{ + float f32__a; + float f32__b; + float f32__c; + float f32__d; + float f32__e; + f32__a = expf((float)42.125); + f32__b = expf((float)(- 2.)); + f32__c = expf((float)0.); + f32__d = expf((float)(- 0.)); + f32__e = expf((float)(- 1.)); + return; +} + +void test_log_det(void) +{ + double a; + double b; + a = log(42.125); + b = log(0.125); + if (nondet) { + /*@ assert + Value: is_nan_or_infinite: \warning("\\is_finite(Frama_C_log(- 2.))"); + */ + log(- 2.); + Frama_C_show_each_unreachable(); + } + if (nondet) { + /*@ assert + Value: is_nan_or_infinite: \warning("\\is_finite(Frama_C_log(0.))"); + */ + log(0.); + Frama_C_show_each_unreachable(); + } + if (nondet) { + /*@ assert + Value: is_nan_or_infinite: \warning("\\is_finite(Frama_C_log(- 0.))"); + */ + log(- 0.); + Frama_C_show_each_unreachable(); + } + if (nondet) { + /*@ assert + Value: is_nan_or_infinite: \warning("\\is_finite(Frama_C_log(- 1.))"); + */ + log(- 1.); + Frama_C_show_each_unreachable(); + } + return; +} + +void test_logf_det(void) +{ + float f32__a; + float f32__b; + f32__a = logf((float)42.125); + f32__b = logf((float)0.125); + if (nondet) { + /*@ assert + Value: is_nan_or_infinite: + \warning("\\is_finite(Frama_C_logf((float)(- 2.)))"); + */ + logf((float)(- 2.)); + Frama_C_show_each_unreachable(); + } + if (nondet) { + /*@ assert + Value: is_nan_or_infinite: + \warning("\\is_finite(Frama_C_logf((float)0.))"); + */ + logf((float)0.); + Frama_C_show_each_unreachable(); + } + if (nondet) { + /*@ assert + Value: is_nan_or_infinite: + \warning("\\is_finite(Frama_C_logf((float)(- 0.)))"); + */ + logf((float)(- 0.)); + Frama_C_show_each_unreachable(); + } + if (nondet) { + /*@ assert + Value: is_nan_or_infinite: + \warning("\\is_finite(Frama_C_logf((float)(- 1.)))"); + */ + logf((float)(- 1.)); + Frama_C_show_each_unreachable(); + } + return; +} + +void test_log10_det(void) +{ + double a; + double b; + a = log10(42.125); + b = log10(0.125); + if (nondet) { + /*@ assert + Value: is_nan_or_infinite: + \warning("\\is_finite(Frama_C_log10(- 2.))"); + */ + log10(- 2.); + Frama_C_show_each_unreachable(); + } + if (nondet) { + /*@ assert + Value: is_nan_or_infinite: \warning("\\is_finite(Frama_C_log10(0.))"); + */ + log10(0.); + Frama_C_show_each_unreachable(); + } + if (nondet) { + /*@ assert + Value: is_nan_or_infinite: + \warning("\\is_finite(Frama_C_log10(- 0.))"); + */ + log10(- 0.); + Frama_C_show_each_unreachable(); + } + if (nondet) { + /*@ assert + Value: is_nan_or_infinite: + \warning("\\is_finite(Frama_C_log10(- 1.))"); + */ + log10(- 1.); + Frama_C_show_each_unreachable(); + } + return; +} + +void test_log10f_det(void) +{ + float f32__a; + float f32__b; + f32__a = log10f((float)42.125); + f32__b = log10f((float)0.125); + if (nondet) { + /*@ assert + Value: is_nan_or_infinite: + \warning("\\is_finite(Frama_C_log10f((float)(- 2.)))"); + */ + log10f((float)(- 2.)); + Frama_C_show_each_unreachable(); + } + if (nondet) { + /*@ assert + Value: is_nan_or_infinite: + \warning("\\is_finite(Frama_C_log10f((float)0.))"); + */ + log10f((float)0.); + Frama_C_show_each_unreachable(); + } + if (nondet) { + /*@ assert + Value: is_nan_or_infinite: + \warning("\\is_finite(Frama_C_log10f((float)(- 0.)))"); + */ + log10f((float)(- 0.)); + Frama_C_show_each_unreachable(); + } + if (nondet) { + /*@ assert + Value: is_nan_or_infinite: + \warning("\\is_finite(Frama_C_log10f((float)(- 1.)))"); + */ + log10f((float)(- 1.)); + Frama_C_show_each_unreachable(); + } + return; +} + +void test_diff_pow_powf(void) +{ + double d; + float f32__f; + d = pow(0.11,30.); + f32__f = powf((float)0.11,(float)30.); + return; +} + +void test_floor_det(void) +{ + double a; + double b; + double c; + double d; + double e; + double f; + a = floor(1.5); + b = floor(0.5); + c = floor(0.0); + d = floor(- 0.0); + e = floor(- 0.5); + f = floor(- 1.5); + return; +} + +void test_ceil_det(void) +{ + double a; + double b; + double c; + double d; + double e; + double f; + a = ceil(1.5); + b = ceil(0.5); + c = ceil(0.0); + d = ceil(- 0.0); + e = ceil(- 0.5); + f = ceil(- 1.5); + return; +} + +void test_trunc_det(void) +{ + double a; + double b; + double c; + double d; + double e; + double f; + a = trunc(1.5); + b = trunc(0.5); + c = trunc(0.0); + d = trunc(- 0.0); + e = trunc(- 0.5); + f = trunc(- 1.5); + return; +} + +void test_round_det(void) +{ + double a; + double b; + double c; + double d; + double e; + double f; + a = round(1.5); + b = round(0.5); + c = round(0.0); + d = round(- 0.0); + e = round(- 0.5); + f = round(- 1.5); + return; +} + +void test_floor(void) +{ + double x; + double a; + double b; + double c; + x = double_interval(- 0.5,1.5); + a = floor(x); + x = double_interval(- 0.0,0.5); + b = floor(x); + x = double_interval(- 2.5,- 0.5); + c = floor(x); + return; +} + +void test_ceil(void) +{ + double x; + double a; + double b; + double c; + x = double_interval(- 0.5,1.5); + a = ceil(x); + x = double_interval(- 0.0,0.5); + b = ceil(x); + x = double_interval(- 2.5,- 0.5); + c = ceil(x); + return; +} + +void test_trunc(void) +{ + double x; + double a; + double b; + double c; + x = double_interval(- 0.5,1.5); + a = trunc(x); + x = double_interval(- 0.0,0.5); + b = trunc(x); + x = double_interval(- 2.5,- 0.5); + c = trunc(x); + return; +} + +void test_round(void) +{ + double x; + double a; + double b; + double c; + x = double_interval(- 0.5,1.5); + a = round(x); + x = double_interval(- 0.0,0.5); + b = round(x); + x = double_interval(- 2.5,- 0.5); + c = round(x); + return; +} + +void test_floorf_det(void) +{ + float f32__a; + float f32__b; + float f32__c; + float f32__d; + float f32__e; + float f32__f; + f32__a = floorf((float)1.5); + f32__b = floorf((float)0.5); + f32__c = floorf((float)0.0); + f32__d = floorf((float)(- 0.0)); + f32__e = floorf((float)(- 0.5)); + f32__f = floorf((float)(- 1.5)); + return; +} + +void test_ceilf_det(void) +{ + float f32__a; + float f32__b; + float f32__c; + float f32__d; + float f32__e; + float f32__f; + f32__a = ceilf((float)1.5); + f32__b = ceilf((float)0.5); + f32__c = ceilf((float)0.0); + f32__d = ceilf((float)(- 0.0)); + f32__e = ceilf((float)(- 0.5)); + f32__f = ceilf((float)(- 1.5)); + return; +} + +void test_truncf_det(void) +{ + float f32__a; + float f32__b; + float f32__c; + float f32__d; + float f32__e; + float f32__f; + f32__a = truncf((float)1.5); + f32__b = truncf((float)0.5); + f32__c = truncf((float)0.0); + f32__d = truncf((float)(- 0.0)); + f32__e = truncf((float)(- 0.5)); + f32__f = truncf((float)(- 1.5)); + return; +} + +void test_roundf_det(void) +{ + float f32__a; + float f32__b; + float f32__c; + float f32__d; + float f32__e; + float f32__f; + f32__a = roundf((float)1.5); + f32__b = roundf((float)0.5); + f32__c = roundf((float)0.0); + f32__d = roundf((float)(- 0.0)); + f32__e = roundf((float)(- 0.5)); + f32__f = roundf((float)(- 1.5)); + return; +} + +void test_floorf(void) +{ + float f32__x; + double tmp; + float f32__a; + double tmp_1; + float f32__b; + double tmp_3; + float f32__c; + { /* sequence */ + tmp = double_interval(- 0.5,1.5); + f32__x = (float)tmp; + } + f32__a = floorf(f32__x); + { /* sequence */ + tmp_1 = double_interval(- 0.0,0.5); + f32__x = (float)tmp_1; + } + f32__b = floorf(f32__x); + { /* sequence */ + tmp_3 = double_interval(- 2.5,- 0.5); + f32__x = (float)tmp_3; + } + f32__c = floorf(f32__x); + return; +} + +void test_ceilf(void) +{ + float f32__x; + double tmp; + float f32__a; + double tmp_1; + float f32__b; + double tmp_3; + float f32__c; + { /* sequence */ + tmp = double_interval(- 0.5,1.5); + f32__x = (float)tmp; + } + f32__a = ceilf(f32__x); + { /* sequence */ + tmp_1 = double_interval(- 0.0,0.5); + f32__x = (float)tmp_1; + } + f32__b = ceilf(f32__x); + { /* sequence */ + tmp_3 = double_interval(- 2.5,- 0.5); + f32__x = (float)tmp_3; + } + f32__c = ceilf(f32__x); + return; +} + +void test_truncf(void) +{ + float f32__x; + double tmp; + float f32__a; + double tmp_1; + float f32__b; + double tmp_3; + float f32__c; + { /* sequence */ + tmp = double_interval(- 0.5,1.5); + f32__x = (float)tmp; + } + f32__a = truncf(f32__x); + { /* sequence */ + tmp_1 = double_interval(- 0.0,0.5); + f32__x = (float)tmp_1; + } + f32__b = truncf(f32__x); + { /* sequence */ + tmp_3 = double_interval(- 2.5,- 0.5); + f32__x = (float)tmp_3; + } + f32__c = truncf(f32__x); + return; +} + +void test_roundf(void) +{ + float f32__x; + double tmp; + float f32__a; + double tmp_1; + float f32__b; + double tmp_3; + float f32__c; + { /* sequence */ + tmp = double_interval(- 0.5,1.5); + f32__x = (float)tmp; + } + f32__a = roundf(f32__x); + { /* sequence */ + tmp_1 = double_interval(- 0.0,0.5); + f32__x = (float)tmp_1; + } + f32__b = roundf(f32__x); + { /* sequence */ + tmp_3 = double_interval(- 2.5,- 0.5); + f32__x = (float)tmp_3; + } + f32__c = roundf(f32__x); + return; +} + +int main(void) +{ + int __retres; + test_cos_det(); + test_sin_det(); + test_atan2_det(); + test_atan2(); + test_pow_det(); + test_pow_singleton_exp(); + test_pow(); + test_fmod_det(); + test_fmod(); + test_sqrt_det(); + test_sqrt(); + test_exp_det(); + test_log_det(); + test_log10_det(); + test_powf_det(); + test_powf_singleton_exp(); + test_powf(); + test_sqrtf_det(); + test_sqrtf(); + test_expf_det(); + test_logf_det(); + test_log10f_det(); + test_diff_pow_powf(); + test_floor_det(); + test_ceil_det(); + test_trunc_det(); + test_round_det(); + test_floor(); + test_ceil(); + test_trunc(); + test_round(); + test_floorf_det(); + test_ceilf_det(); + test_truncf_det(); + test_roundf_det(); + test_floorf(); + test_ceilf(); + test_truncf(); + test_roundf(); + __retres = 0; + return __retres; +} + + diff --git a/tests/float/oracle_symblocs/nonlin.0.err.oracle b/tests/float/oracle_symblocs/nonlin.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/float/oracle_symblocs/nonlin.0.res.oracle b/tests/float/oracle_symblocs/nonlin.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..bd3f0097dd13a6ffc546bd7c3f9539c47c7a9f9f --- /dev/null +++ b/tests/float/oracle_symblocs/nonlin.0.res.oracle @@ -0,0 +1,264 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/float/nonlin.c (with preprocessing) +tests/float/nonlin.c:75:[kernel] warning: Floating-point constant 0.000000001 is not represented exactly. Will use 0x1.12e0be826d695p-30. See documentation for option -warn-decimal-float +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + Frama_C_entropy_source ∈ [--..--] + a ∈ {0} + b ∈ {0} + c ∈ {0} + r1 ∈ {0} + r2 ∈ {0} + d ∈ {0} + i ∈ {0} + s ∈ {0} + zf ∈ {0} + s2 ∈ {0} + sq ∈ {0} + h ∈ {0} + t[0] ∈ {1} + [1] ∈ {2} + [2] ∈ {3} + [3] ∈ {4} + [4] ∈ {5} + [5] ∈ {6} + [6] ∈ {7} + [7] ∈ {8} + [8] ∈ {9} + [9] ∈ {10} + r ∈ {0} + x ∈ {0} + y ∈ {0} + z ∈ {0} + rbits1 ∈ {0} + rbits2 ∈ {0} + v ∈ [--..--] +[value] computing for function nonlin_f <- main. + Called from tests/float/nonlin.c:85. +[value] computing for function Frama_C_float_interval <- nonlin_f <- main. + Called from tests/float/nonlin.c:16. +[value] using specification for function Frama_C_float_interval +share/libc/__fc_builtin.h:141:[value] function Frama_C_float_interval: precondition got status valid. +share/libc/__fc_builtin.h:142:[value] function Frama_C_float_interval: precondition got status valid. +[value] Done for function Frama_C_float_interval +[value] computing for function Frama_C_float_interval <- nonlin_f <- main. + Called from tests/float/nonlin.c:17. +[value] Done for function Frama_C_float_interval +tests/float/nonlin.c:20:[value] assertion got status valid. +tests/float/nonlin.c:24:[value] assertion got status valid. +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.4000000000000p2 .. 0x1.4800000000000p2], + {{ "r2" }}, + [0x1.4000000000000p2 .. 0x1.c800000000000p2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.4800000000000p2 .. 0x1.5000000000000p2], + {{ "r2" }}, + [0x1.4800000000000p2 .. 0x1.c800000000000p2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.5000000000000p2 .. 0x1.5800000000000p2], + {{ "r2" }}, + [0x1.5000000000000p2 .. 0x1.c800000000000p2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.5800000000000p2 .. 0x1.6000000000000p2], + {{ "r2" }}, + [0x1.5800000000000p2 .. 0x1.c800000000000p2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.6000000000000p2 .. 0x1.6800000000000p2], + {{ "r2" }}, + [0x1.6000000000000p2 .. 0x1.c800000000000p2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.6800000000000p2 .. 0x1.7000000000000p2], + {{ "r2" }}, + [0x1.6800000000000p2 .. 0x1.c800000000000p2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.7000000000000p2 .. 0x1.7800000000000p2], + {{ "r2" }}, + [0x1.7000000000000p2 .. 0x1.c800000000000p2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.7800000000000p2 .. 0x1.8000000000000p2], + {{ "r2" }}, + [0x1.7800000000000p2 .. 0x1.c800000000000p2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.8000000000000p2 .. 0x1.8800000000000p2], + {{ "r2" }}, + [0x1.8000000000000p2 .. 0x1.c800000000000p2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.8800000000000p2 .. 0x1.9000000000000p2], + {{ "r2" }}, + [0x1.8800000000000p2 .. 0x1.c800000000000p2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.9000000000000p2 .. 0x1.9800000000000p2], + {{ "r2" }}, + [0x1.9000000000000p2 .. 0x1.c800000000000p2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.9800000000000p2 .. 0x1.a000000000000p2], + {{ "r2" }}, + [0x1.9800000000000p2 .. 0x1.c800000000000p2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.a000000000000p2 .. 0x1.a800000000000p2], + {{ "r2" }}, + [0x1.a000000000000p2 .. 0x1.c800000000000p2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.a800000000000p2 .. 0x1.b000000000000p2], + {{ "r2" }}, + [0x1.a800000000000p2 .. 0x1.c800000000000p2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.b000000000000p2 .. 0x1.b800000000000p2], + {{ "r2" }}, + [0x1.b000000000000p2 .. 0x1.c800000000000p2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.b800000000000p2 .. 0x1.c000000000000p2], + {{ "r2" }}, + [0x1.b800000000000p2 .. 0x1.c800000000000p2]) +[value] Recording results for nonlin_f +[value] Done for function nonlin_f +[value] computing for function other <- main. + Called from tests/float/nonlin.c:86. +[value] computing for function Frama_C_float_interval <- other <- main. + Called from tests/float/nonlin.c:59. +[value] Done for function Frama_C_float_interval +[value] computing for function Frama_C_float_interval <- other <- main. + Called from tests/float/nonlin.c:60. +[value] Done for function Frama_C_float_interval +tests/float/nonlin.c:61:[value] warning: accessing out of bounds index. + assert 0 ≤ (int)((double)((double)(i*i)+2.0)); +tests/float/nonlin.c:61:[value] warning: accessing out of bounds index. + assert (int)((double)((double)(i*i)+2.0)) < 10; +[value] computing for function access_bits <- other <- main. + Called from tests/float/nonlin.c:67. +[value] Recording results for access_bits +[value] Done for function access_bits +[value] computing for function Frama_C_interval <- other <- main. + Called from tests/float/nonlin.c:69. +[value] using specification for function Frama_C_interval +share/libc/__fc_builtin.h:50:[value] function Frama_C_interval: precondition got status valid. +[value] Done for function Frama_C_interval +tests/float/nonlin.c:70:[value] warning: division by zero. assert x ≢ 0; +[value] Recording results for other +[value] Done for function other +[value] computing for function split_alarm <- main. + Called from tests/float/nonlin.c:87. +tests/float/nonlin.c:74:[value] warning: non-finite float value. assert \is_finite(v); +tests/float/nonlin.c:75:[value] warning: non-finite double value. + assert + \is_finite((double)((double)1/(double)((double)((double)ff*(double)ff)+0.000000001))); +[value] Recording results for split_alarm +[value] Done for function split_alarm +[value] computing for function norm <- main. + Called from tests/float/nonlin.c:88. +tests/float/nonlin.c:79:[value] warning: non-finite float value. assert \is_finite(v); +tests/float/nonlin.c:80:[value] warning: non-finite float value. assert \is_finite(v); +[value] Recording results for norm +[value] Done for function norm +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function access_bits: + rbits1 ∈ {0; 1; 2} + x0 ∈ [--..--] + __retres ∈ {0; 1} +[value:final-states] Values at end of function nonlin_f: + Frama_C_entropy_source ∈ [--..--] + a ∈ [0x1.4000000000000p2 .. 0x1.c000000000000p2] + b ∈ [-0x0.0000000000000p-1022 .. 0x1.0000000000000p0] + c ∈ {0x1.c000000000000p2} + r1 ∈ [0x1.4000000000000p2 .. 0x1.2000000000000p3] + r2 ∈ [0x1.4000000000000p2 .. 0x1.c800000000000p2] + d ∈ [0x1.4000000000000p2 .. 0x1.c000000000000p2] +[value:final-states] Values at end of function norm: + v1 ∈ [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + v2 ∈ [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + square ∈ [-0x1.fffffc0000020p256 .. 0x1.fffffc0000020p256] +[value:final-states] Values at end of function other: + Frama_C_entropy_source ∈ [--..--] + i ∈ [-0x1.0a00000000000p7 .. 0x1.1c00000000000p7] + s ∈ [-0x1.0a00000000000p7 .. 0x1.1c00000000000p7] + zf ∈ [-0x1.1300000000000p8 .. 0x1.1300000000000p8] + s2 ∈ [-0x1.0a00000000000p8 .. 0x1.1c00000000000p8] + sq ∈ [-0x1.2718000000000p14 .. 0x1.3b10000000000p14] + h ∈ [-0x1.38d8000000000p14 .. 0x1.2950000000000p14] + r ∈ [2..11] + x ∈ [0..42] + y ∈ [0..42] + z ∈ [-2750000..2750000] + rbits1 ∈ {0; 1; 2} + rbits2 ∈ {0; 1} +[value:final-states] Values at end of function split_alarm: + ff ∈ [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + d_0 ∈ [-0x1.fffffffffffffp1023 .. 0x1.fffffffffffffp1023] +[value:final-states] Values at end of function main: + Frama_C_entropy_source ∈ [--..--] + a ∈ [0x1.4000000000000p2 .. 0x1.c000000000000p2] + b ∈ [-0x0.0000000000000p-1022 .. 0x1.0000000000000p0] + c ∈ {0x1.c000000000000p2} + r1 ∈ [0x1.4000000000000p2 .. 0x1.2000000000000p3] + r2 ∈ [0x1.4000000000000p2 .. 0x1.c800000000000p2] + d ∈ [0x1.4000000000000p2 .. 0x1.c000000000000p2] + i ∈ [-0x1.0a00000000000p7 .. 0x1.1c00000000000p7] + s ∈ [-0x1.0a00000000000p7 .. 0x1.1c00000000000p7] + zf ∈ [-0x1.1300000000000p8 .. 0x1.1300000000000p8] + s2 ∈ [-0x1.0a00000000000p8 .. 0x1.1c00000000000p8] + sq ∈ [-0x1.2718000000000p14 .. 0x1.3b10000000000p14] + h ∈ [-0x1.38d8000000000p14 .. 0x1.2950000000000p14] + r ∈ [2..11] + x ∈ [0..42] + y ∈ [0..42] + z ∈ [-2750000..2750000] + rbits1 ∈ {0; 1; 2} + rbits2 ∈ {0; 1} +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function access_bits: + rbits1 ∈ {0; 1; 2} + x0 ∈ [--..--] + __retres ∈ {0; 1} +[value:final-states] Values at end of function nonlin_f: + Frama_C_entropy_source ∈ [--..--] + a ∈ [5. .. 7.] + b ∈ [-0. .. 1.] + c ∈ {7.} + r1 ∈ [5. .. 9.] + r2 ∈ [5. .. 7.125] + d ∈ [5. .. 7.] +[value:final-states] Values at end of function norm: + v1 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + v2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + square ∈ [-2.31584150868e+77 .. 2.31584150868e+77] +[value:final-states] Values at end of function other: + Frama_C_entropy_source ∈ [--..--] + i ∈ [-133. .. 142.] + s ∈ [-133. .. 142.] + zf ∈ [-275. .. 275.] + s2 ∈ [-266. .. 284.] + sq ∈ [-18886. .. 20164.] + h ∈ [-20022. .. 19028.] + r ∈ [2..11] + x ∈ [0..42] + y ∈ [0..42] + z ∈ [-2750000..2750000] + rbits1 ∈ {0; 1; 2} + rbits2 ∈ {0; 1} +[value:final-states] Values at end of function split_alarm: + ff ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + d_0 ∈ [-1.79769313486e+308 .. 1.79769313486e+308] +[value:final-states] Values at end of function main: + Frama_C_entropy_source ∈ [--..--] + a ∈ [5. .. 7.] + b ∈ [-0. .. 1.] + c ∈ {7.} + r1 ∈ [5. .. 9.] + r2 ∈ [5. .. 7.125] + d ∈ [5. .. 7.] + i ∈ [-133. .. 142.] + s ∈ [-133. .. 142.] + zf ∈ [-275. .. 275.] + s2 ∈ [-266. .. 284.] + sq ∈ [-18886. .. 20164.] + h ∈ [-20022. .. 19028.] + r ∈ [2..11] + x ∈ [0..42] + y ∈ [0..42] + z ∈ [-2750000..2750000] + rbits1 ∈ {0; 1; 2} + rbits2 ∈ {0; 1} diff --git a/tests/float/oracle_symblocs/nonlin.1.err.oracle b/tests/float/oracle_symblocs/nonlin.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/float/oracle_symblocs/nonlin.1.res.oracle b/tests/float/oracle_symblocs/nonlin.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..31d101b4c6288493de92bd2ac2fcfa15840bc671 --- /dev/null +++ b/tests/float/oracle_symblocs/nonlin.1.res.oracle @@ -0,0 +1,271 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/float/nonlin.c (with preprocessing) +tests/float/nonlin.c:75:[kernel] warning: Floating-point constant 0.000000001 is not represented exactly. Will use 0x1.12e0be826d695p-30. See documentation for option -warn-decimal-float +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + Frama_C_entropy_source ∈ [--..--] + a ∈ {0} + b ∈ {0} + c ∈ {0} + r1 ∈ {0} + r2 ∈ {0} + d ∈ {0} + i ∈ {0} + s ∈ {0} + zf ∈ {0} + s2 ∈ {0} + sq ∈ {0} + h ∈ {0} + t[0] ∈ {1} + [1] ∈ {2} + [2] ∈ {3} + [3] ∈ {4} + [4] ∈ {5} + [5] ∈ {6} + [6] ∈ {7} + [7] ∈ {8} + [8] ∈ {9} + [9] ∈ {10} + r ∈ {0} + x ∈ {0} + y ∈ {0} + z ∈ {0} + rbits1 ∈ {0} + rbits2 ∈ {0} + v ∈ [--..--] +[value] computing for function nonlin_f <- main. + Called from tests/float/nonlin.c:85. +[value] computing for function Frama_C_float_interval <- nonlin_f <- main. + Called from tests/float/nonlin.c:16. +[value] using specification for function Frama_C_float_interval +share/libc/__fc_builtin.h:141:[value] function Frama_C_float_interval: precondition got status valid. +share/libc/__fc_builtin.h:142:[value] function Frama_C_float_interval: precondition got status valid. +[value] Done for function Frama_C_float_interval +[value] computing for function Frama_C_float_interval <- nonlin_f <- main. + Called from tests/float/nonlin.c:17. +[value] Done for function Frama_C_float_interval +tests/float/nonlin.c:20:[value] assertion got status valid. +tests/float/nonlin.c:22:[value:nonlin] non-linear 'a + b * (c - a)', lv 'a' +tests/float/nonlin.c:24:[value] assertion got status valid. +tests/float/nonlin.c:41:[value:nonlin] non-linear 'b * (c - a) + a', lv 'a' +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.4000000000000p2 .. 0x1.4800000000000p2], + {{ "r2" }}, + [0x1.4000000000000p2 .. 0x1.c0fffffffffffp2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.4800000000000p2 .. 0x1.5000000000000p2], + {{ "r2" }}, + [0x1.4800000000000p2 .. 0x1.c0fffffffffffp2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.5000000000000p2 .. 0x1.5800000000000p2], + {{ "r2" }}, + [0x1.5000000000000p2 .. 0x1.c0fffffffffffp2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.5800000000000p2 .. 0x1.6000000000000p2], + {{ "r2" }}, + [0x1.5800000000000p2 .. 0x1.c0fffffffffffp2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.6000000000000p2 .. 0x1.6800000000000p2], + {{ "r2" }}, + [0x1.6000000000000p2 .. 0x1.c0fffffffffffp2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.6800000000000p2 .. 0x1.7000000000000p2], + {{ "r2" }}, + [0x1.6800000000000p2 .. 0x1.c0fffffffffffp2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.7000000000000p2 .. 0x1.7800000000000p2], + {{ "r2" }}, + [0x1.7000000000000p2 .. 0x1.c0fffffffffffp2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.7800000000000p2 .. 0x1.8000000000000p2], + {{ "r2" }}, + [0x1.7800000000000p2 .. 0x1.c0fffffffffffp2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.8000000000000p2 .. 0x1.8800000000000p2], + {{ "r2" }}, + [0x1.8000000000000p2 .. 0x1.c0fffffffffffp2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.8800000000000p2 .. 0x1.9000000000000p2], + {{ "r2" }}, + [0x1.8800000000000p2 .. 0x1.c0fffffffffffp2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.9000000000000p2 .. 0x1.9800000000000p2], + {{ "r2" }}, + [0x1.9000000000000p2 .. 0x1.c0fffffffffffp2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.9800000000000p2 .. 0x1.a000000000000p2], + {{ "r2" }}, + [0x1.9800000000000p2 .. 0x1.c0fffffffffffp2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.a000000000000p2 .. 0x1.a800000000000p2], + {{ "r2" }}, + [0x1.a000000000000p2 .. 0x1.c0fffffffffffp2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.a800000000000p2 .. 0x1.b000000000000p2], + {{ "r2" }}, + [0x1.a800000000000p2 .. 0x1.c0fffffffffffp2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.b000000000000p2 .. 0x1.b800000000000p2], + {{ "r2" }}, + [0x1.b000000000000p2 .. 0x1.c0fffffffffffp2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.b800000000000p2 .. 0x1.c000000000000p2], + {{ "r2" }}, + [0x1.b800000000000p2 .. 0x1.c0fffffffffffp2]) +[value] Recording results for nonlin_f +[value] Done for function nonlin_f +[value] computing for function other <- main. + Called from tests/float/nonlin.c:86. +[value] computing for function Frama_C_float_interval <- other <- main. + Called from tests/float/nonlin.c:59. +[value] Done for function Frama_C_float_interval +[value] computing for function Frama_C_float_interval <- other <- main. + Called from tests/float/nonlin.c:60. +[value] Done for function Frama_C_float_interval +tests/float/nonlin.c:61:[value:nonlin] non-linear 'i * i', lv 'i' +tests/float/nonlin.c:61:[value] warning: accessing out of bounds index. + assert (int)((double)((double)(i*i)+2.0)) < 10; +tests/float/nonlin.c:62:[value:nonlin] non-linear 's - s', lv 's' +tests/float/nonlin.c:63:[value:nonlin] non-linear 's - s', lv 's' +tests/float/nonlin.c:64:[value:nonlin] non-linear 's + s', lv 's' +tests/float/nonlin.c:65:[value:nonlin] non-linear 's * s', lv 's' +tests/float/nonlin.c:66:[value:nonlin] non-linear 's * ((double)1 - s)', lv 's' +[value] computing for function access_bits <- other <- main. + Called from tests/float/nonlin.c:67. +[value] Recording results for access_bits +[value] Done for function access_bits +[value] computing for function Frama_C_interval <- other <- main. + Called from tests/float/nonlin.c:69. +[value] using specification for function Frama_C_interval +share/libc/__fc_builtin.h:50:[value] function Frama_C_interval: precondition got status valid. +[value] Done for function Frama_C_interval +tests/float/nonlin.c:70:[value:nonlin] non-linear '(1 / x) * x', lv 'x' +tests/float/nonlin.c:70:[value] warning: division by zero. assert x ≢ 0; +[value] Recording results for other +[value] Done for function other +[value] computing for function split_alarm <- main. + Called from tests/float/nonlin.c:87. +tests/float/nonlin.c:74:[value] warning: non-finite float value. assert \is_finite(v); +tests/float/nonlin.c:75:[value:nonlin] non-linear '(double)ff * (double)ff', lv 'ff' +[value] Recording results for split_alarm +[value] Done for function split_alarm +[value] computing for function norm <- main. + Called from tests/float/nonlin.c:88. +tests/float/nonlin.c:79:[value] warning: non-finite float value. assert \is_finite(v); +tests/float/nonlin.c:80:[value] warning: non-finite float value. assert \is_finite(v); +tests/float/nonlin.c:81:[value:nonlin] non-linear '(double)v1 * (double)v1', lv 'v1' +tests/float/nonlin.c:81:[value:nonlin] non-linear '(double)v2 * (double)v2', lv 'v2' +[value] Recording results for norm +[value] Done for function norm +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function access_bits: + rbits1 ∈ {0; 1; 2} + x0 ∈ [--..--] + __retres ∈ {0; 1} +[value:final-states] Values at end of function nonlin_f: + Frama_C_entropy_source ∈ [--..--] + a ∈ [0x1.4000000000000p2 .. 0x1.c000000000000p2] + b ∈ [-0x0.0000000000000p-1022 .. 0x1.0000000000000p0] + c ∈ {0x1.c000000000000p2} + r1 ∈ [0x1.4000000000000p2 .. 0x1.cffffffffffffp2] + r2 ∈ [0x1.4000000000000p2 .. 0x1.c0fffffffffffp2] + d ∈ [0x1.4000000000000p2 .. 0x1.c000000000000p2] +[value:final-states] Values at end of function norm: + v1 ∈ [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + v2 ∈ [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + square ∈ [-0x0.0000000000000p-1022 .. 0x1.fffffc0000020p256] +[value:final-states] Values at end of function other: + Frama_C_entropy_source ∈ [--..--] + i ∈ [-0x1.05ffffffffffbp2 .. 0x1.6a3b000000004p1] + s ∈ [-0x1.0a00000000000p7 .. 0x1.1c00000000000p7] + zf ∈ [-0x1.12ffffffffffep4 .. 0x1.12ffffffffffep4] + s2 ∈ [-0x1.0a00000000000p8 .. 0x1.1c00000000000p8] + sq ∈ [-0x1.b37ffffffff34p-7 .. 0x1.3b10000000000p14] + h ∈ [-0x1.38d8000000000p14 .. 0x1.3250000000034p-1] + r ∈ [3..11] + x ∈ [1..42] + y ∈ {0; 1} + z ∈ [-171874..171874] + rbits1 ∈ {0; 1; 2} + rbits2 ∈ {0; 1} +[value:final-states] Values at end of function split_alarm: + ff ∈ [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + d_0 ∈ [0x1.0000020000030p-256 .. 0x1.dcd64ffffffffp29] +[value:final-states] Values at end of function main: + Frama_C_entropy_source ∈ [--..--] + a ∈ [0x1.4000000000000p2 .. 0x1.c000000000000p2] + b ∈ [-0x0.0000000000000p-1022 .. 0x1.0000000000000p0] + c ∈ {0x1.c000000000000p2} + r1 ∈ [0x1.4000000000000p2 .. 0x1.cffffffffffffp2] + r2 ∈ [0x1.4000000000000p2 .. 0x1.c0fffffffffffp2] + d ∈ [0x1.4000000000000p2 .. 0x1.c000000000000p2] + i ∈ [-0x1.05ffffffffffbp2 .. 0x1.6a3b000000004p1] + s ∈ [-0x1.0a00000000000p7 .. 0x1.1c00000000000p7] + zf ∈ [-0x1.12ffffffffffep4 .. 0x1.12ffffffffffep4] + s2 ∈ [-0x1.0a00000000000p8 .. 0x1.1c00000000000p8] + sq ∈ [-0x1.b37ffffffff34p-7 .. 0x1.3b10000000000p14] + h ∈ [-0x1.38d8000000000p14 .. 0x1.3250000000034p-1] + r ∈ [3..11] + x ∈ [1..42] + y ∈ {0; 1} + z ∈ [-171874..171874] + rbits1 ∈ {0; 1; 2} + rbits2 ∈ {0; 1} +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function access_bits: + rbits1 ∈ {0; 1; 2} + x0 ∈ [--..--] + __retres ∈ {0; 1} +[value:final-states] Values at end of function nonlin_f: + Frama_C_entropy_source ∈ [--..--] + a ∈ [5. .. 7.] + b ∈ [-0. .. 1.] + c ∈ {7.} + r1 ∈ [5. .. 7.25] + r2 ∈ [5. .. 7.015625] + d ∈ [5. .. 7.] +[value:final-states] Values at end of function norm: + v1 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + v2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + square ∈ [-0. .. 2.31584150868e+77] +[value:final-states] Values at end of function other: + Frama_C_entropy_source ∈ [--..--] + i ∈ [-4.09375 .. 2.82992553711] + s ∈ [-133. .. 142.] + zf ∈ [-17.1875 .. 17.1875] + s2 ∈ [-266. .. 284.] + sq ∈ [-0.0132904052734 .. 20164.] + h ∈ [-20022. .. 0.598266601563] + r ∈ [3..11] + x ∈ [1..42] + y ∈ {0; 1} + z ∈ [-171874..171874] + rbits1 ∈ {0; 1; 2} + rbits2 ∈ {0; 1} +[value:final-states] Values at end of function split_alarm: + ff ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + d_0 ∈ [8.63616958461e-78 .. 1000000000.] +[value:final-states] Values at end of function main: + Frama_C_entropy_source ∈ [--..--] + a ∈ [5. .. 7.] + b ∈ [-0. .. 1.] + c ∈ {7.} + r1 ∈ [5. .. 7.25] + r2 ∈ [5. .. 7.015625] + d ∈ [5. .. 7.] + i ∈ [-4.09375 .. 2.82992553711] + s ∈ [-133. .. 142.] + zf ∈ [-17.1875 .. 17.1875] + s2 ∈ [-266. .. 284.] + sq ∈ [-0.0132904052734 .. 20164.] + h ∈ [-20022. .. 0.598266601563] + r ∈ [3..11] + x ∈ [1..42] + y ∈ {0; 1} + z ∈ [-171874..171874] + rbits1 ∈ {0; 1; 2} + rbits2 ∈ {0; 1} diff --git a/tests/float/oracle_symblocs/nonlin.2.err.oracle b/tests/float/oracle_symblocs/nonlin.2.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/float/oracle_symblocs/nonlin.2.res.oracle b/tests/float/oracle_symblocs/nonlin.2.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..9157df0f7ed3b62a2211a710adc0860019ed56ba --- /dev/null +++ b/tests/float/oracle_symblocs/nonlin.2.res.oracle @@ -0,0 +1,264 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/float/nonlin.c (with preprocessing) +tests/float/nonlin.c:75:[kernel] warning: Floating-point constant 0.000000001 is not represented exactly. Will use 0x1.12e0be826d695p-30. See documentation for option -warn-decimal-float +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + Frama_C_entropy_source ∈ [--..--] + a ∈ {0} + b ∈ {0} + c ∈ {0} + r1 ∈ {0} + r2 ∈ {0} + d ∈ {0} + i ∈ {0} + s ∈ {0} + zf ∈ {0} + s2 ∈ {0} + sq ∈ {0} + h ∈ {0} + t[0] ∈ {1} + [1] ∈ {2} + [2] ∈ {3} + [3] ∈ {4} + [4] ∈ {5} + [5] ∈ {6} + [6] ∈ {7} + [7] ∈ {8} + [8] ∈ {9} + [9] ∈ {10} + r ∈ {0} + x ∈ {0} + y ∈ {0} + z ∈ {0} + rbits1 ∈ {0} + rbits2 ∈ {0} + v ∈ [--..--] +[value] computing for function nonlin_f <- main. + Called from tests/float/nonlin.c:85. +[value] computing for function Frama_C_float_interval <- nonlin_f <- main. + Called from tests/float/nonlin.c:16. +[value] using specification for function Frama_C_float_interval +share/libc/__fc_builtin.h:141:[value] function Frama_C_float_interval: precondition got status valid. +share/libc/__fc_builtin.h:142:[value] function Frama_C_float_interval: precondition got status valid. +[value] Done for function Frama_C_float_interval +[value] computing for function Frama_C_float_interval <- nonlin_f <- main. + Called from tests/float/nonlin.c:17. +[value] Done for function Frama_C_float_interval +tests/float/nonlin.c:20:[value] assertion got status valid. +tests/float/nonlin.c:24:[value] assertion got status valid. +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.4000000000000p2 .. 0x1.4800000000000p2], + {{ "r2" }}, + [0x1.4000000000000p2 .. 0x1.c800000000000p2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.4800000000000p2 .. 0x1.5000000000000p2], + {{ "r2" }}, + [0x1.4800000000000p2 .. 0x1.c800000000000p2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.5000000000000p2 .. 0x1.5800000000000p2], + {{ "r2" }}, + [0x1.5000000000000p2 .. 0x1.c800000000000p2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.5800000000000p2 .. 0x1.6000000000000p2], + {{ "r2" }}, + [0x1.5800000000000p2 .. 0x1.c800000000000p2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.6000000000000p2 .. 0x1.6800000000000p2], + {{ "r2" }}, + [0x1.6000000000000p2 .. 0x1.c800000000000p2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.6800000000000p2 .. 0x1.7000000000000p2], + {{ "r2" }}, + [0x1.6800000000000p2 .. 0x1.c800000000000p2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.7000000000000p2 .. 0x1.7800000000000p2], + {{ "r2" }}, + [0x1.7000000000000p2 .. 0x1.c800000000000p2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.7800000000000p2 .. 0x1.8000000000000p2], + {{ "r2" }}, + [0x1.7800000000000p2 .. 0x1.c800000000000p2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.8000000000000p2 .. 0x1.8800000000000p2], + {{ "r2" }}, + [0x1.8000000000000p2 .. 0x1.c800000000000p2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.8800000000000p2 .. 0x1.9000000000000p2], + {{ "r2" }}, + [0x1.8800000000000p2 .. 0x1.c800000000000p2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.9000000000000p2 .. 0x1.9800000000000p2], + {{ "r2" }}, + [0x1.9000000000000p2 .. 0x1.c800000000000p2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.9800000000000p2 .. 0x1.a000000000000p2], + {{ "r2" }}, + [0x1.9800000000000p2 .. 0x1.c800000000000p2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.a000000000000p2 .. 0x1.a800000000000p2], + {{ "r2" }}, + [0x1.a000000000000p2 .. 0x1.c800000000000p2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.a800000000000p2 .. 0x1.b000000000000p2], + {{ "r2" }}, + [0x1.a800000000000p2 .. 0x1.c800000000000p2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.b000000000000p2 .. 0x1.b800000000000p2], + {{ "r2" }}, + [0x1.b000000000000p2 .. 0x1.c800000000000p2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.b800000000000p2 .. 0x1.c000000000000p2], + {{ "r2" }}, + [0x1.b800000000000p2 .. 0x1.c800000000000p2]) +[value] Recording results for nonlin_f +[value] Done for function nonlin_f +[value] computing for function other <- main. + Called from tests/float/nonlin.c:86. +[value] computing for function Frama_C_float_interval <- other <- main. + Called from tests/float/nonlin.c:59. +[value] Done for function Frama_C_float_interval +[value] computing for function Frama_C_float_interval <- other <- main. + Called from tests/float/nonlin.c:60. +[value] Done for function Frama_C_float_interval +tests/float/nonlin.c:61:[value] warning: accessing out of bounds index. + assert 0 ≤ (int)((double)((double)((float)(i*i))+2.0)); +tests/float/nonlin.c:61:[value] warning: accessing out of bounds index. + assert (int)((double)((double)((float)(i*i))+2.0)) < 10; +[value] computing for function access_bits <- other <- main. + Called from tests/float/nonlin.c:67. +[value] Recording results for access_bits +[value] Done for function access_bits +[value] computing for function Frama_C_interval <- other <- main. + Called from tests/float/nonlin.c:69. +[value] using specification for function Frama_C_interval +share/libc/__fc_builtin.h:50:[value] function Frama_C_interval: precondition got status valid. +[value] Done for function Frama_C_interval +tests/float/nonlin.c:70:[value] warning: division by zero. assert x ≢ 0; +[value] Recording results for other +[value] Done for function other +[value] computing for function split_alarm <- main. + Called from tests/float/nonlin.c:87. +tests/float/nonlin.c:74:[value] warning: non-finite float value. assert \is_finite(v); +tests/float/nonlin.c:75:[value] warning: non-finite double value. + assert + \is_finite((double)((double)1/(double)((double)((double)ff*(double)ff)+0.000000001))); +[value] Recording results for split_alarm +[value] Done for function split_alarm +[value] computing for function norm <- main. + Called from tests/float/nonlin.c:88. +tests/float/nonlin.c:79:[value] warning: non-finite float value. assert \is_finite(v); +tests/float/nonlin.c:80:[value] warning: non-finite float value. assert \is_finite(v); +[value] Recording results for norm +[value] Done for function norm +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function access_bits: + rbits1 ∈ {0; 1; 2} + x0 ∈ [0..3271884800] + __retres ∈ {0; 1} +[value:final-states] Values at end of function nonlin_f: + Frama_C_entropy_source ∈ [--..--] + a ∈ [0x1.4000000000000p2 .. 0x1.c000000000000p2] + b ∈ [-0x0.0000000000000p-1022 .. 0x1.0000000000000p0] + c ∈ {0x1.c000000000000p2} + r1 ∈ [0x1.4000000000000p2 .. 0x1.2000000000000p3] + r2 ∈ [0x1.4000000000000p2 .. 0x1.c800000000000p2] + d ∈ [0x1.4000000000000p2 .. 0x1.c000000000000p2] +[value:final-states] Values at end of function norm: + v1 ∈ [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + v2 ∈ [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + square ∈ [-0x1.fffffc0000020p256 .. 0x1.fffffc0000020p256] +[value:final-states] Values at end of function other: + Frama_C_entropy_source ∈ [--..--] + i ∈ [-0x1.0a00000000000p7 .. 0x1.1c00000000000p7] + s ∈ [-0x1.0a00000000000p7 .. 0x1.1c00000000000p7] + zf ∈ [-0x1.1300000000000p8 .. 0x1.1300000000000p8] + s2 ∈ [-0x1.0a00000000000p8 .. 0x1.1c00000000000p8] + sq ∈ [-0x1.2718000000000p14 .. 0x1.3b10000000000p14] + h ∈ [-0x1.38d8000000000p14 .. 0x1.2950000000000p14] + r ∈ [2..11] + x ∈ [0..42] + y ∈ [0..42] + z ∈ [-2750000..2750000] + rbits1 ∈ {0; 1; 2} + rbits2 ∈ {0; 1} +[value:final-states] Values at end of function split_alarm: + ff ∈ [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + d_0 ∈ [-0x1.fffffffffffffp1023 .. 0x1.fffffffffffffp1023] +[value:final-states] Values at end of function main: + Frama_C_entropy_source ∈ [--..--] + a ∈ [0x1.4000000000000p2 .. 0x1.c000000000000p2] + b ∈ [-0x0.0000000000000p-1022 .. 0x1.0000000000000p0] + c ∈ {0x1.c000000000000p2} + r1 ∈ [0x1.4000000000000p2 .. 0x1.2000000000000p3] + r2 ∈ [0x1.4000000000000p2 .. 0x1.c800000000000p2] + d ∈ [0x1.4000000000000p2 .. 0x1.c000000000000p2] + i ∈ [-0x1.0a00000000000p7 .. 0x1.1c00000000000p7] + s ∈ [-0x1.0a00000000000p7 .. 0x1.1c00000000000p7] + zf ∈ [-0x1.1300000000000p8 .. 0x1.1300000000000p8] + s2 ∈ [-0x1.0a00000000000p8 .. 0x1.1c00000000000p8] + sq ∈ [-0x1.2718000000000p14 .. 0x1.3b10000000000p14] + h ∈ [-0x1.38d8000000000p14 .. 0x1.2950000000000p14] + r ∈ [2..11] + x ∈ [0..42] + y ∈ [0..42] + z ∈ [-2750000..2750000] + rbits1 ∈ {0; 1; 2} + rbits2 ∈ {0; 1} +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function access_bits: + rbits1 ∈ {0; 1; 2} + x0 ∈ [0..3271884800] + __retres ∈ {0; 1} +[value:final-states] Values at end of function nonlin_f: + Frama_C_entropy_source ∈ [--..--] + a ∈ [5. .. 7.] + b ∈ [-0. .. 1.] + c ∈ {7.} + r1 ∈ [5. .. 9.] + r2 ∈ [5. .. 7.125] + d ∈ [5. .. 7.] +[value:final-states] Values at end of function norm: + v1 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + v2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + square ∈ [-2.31584150868e+77 .. 2.31584150868e+77] +[value:final-states] Values at end of function other: + Frama_C_entropy_source ∈ [--..--] + i ∈ [-133. .. 142.] + s ∈ [-133. .. 142.] + zf ∈ [-275. .. 275.] + s2 ∈ [-266. .. 284.] + sq ∈ [-18886. .. 20164.] + h ∈ [-20022. .. 19028.] + r ∈ [2..11] + x ∈ [0..42] + y ∈ [0..42] + z ∈ [-2750000..2750000] + rbits1 ∈ {0; 1; 2} + rbits2 ∈ {0; 1} +[value:final-states] Values at end of function split_alarm: + ff ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + d_0 ∈ [-1.79769313486e+308 .. 1.79769313486e+308] +[value:final-states] Values at end of function main: + Frama_C_entropy_source ∈ [--..--] + a ∈ [5. .. 7.] + b ∈ [-0. .. 1.] + c ∈ {7.} + r1 ∈ [5. .. 9.] + r2 ∈ [5. .. 7.125] + d ∈ [5. .. 7.] + i ∈ [-133. .. 142.] + s ∈ [-133. .. 142.] + zf ∈ [-275. .. 275.] + s2 ∈ [-266. .. 284.] + sq ∈ [-18886. .. 20164.] + h ∈ [-20022. .. 19028.] + r ∈ [2..11] + x ∈ [0..42] + y ∈ [0..42] + z ∈ [-2750000..2750000] + rbits1 ∈ {0; 1; 2} + rbits2 ∈ {0; 1} diff --git a/tests/float/oracle_symblocs/nonlin.3.err.oracle b/tests/float/oracle_symblocs/nonlin.3.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/float/oracle_symblocs/nonlin.3.res.oracle b/tests/float/oracle_symblocs/nonlin.3.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..1255e4f3a7734e07ab1768528cb20851cd42a60e --- /dev/null +++ b/tests/float/oracle_symblocs/nonlin.3.res.oracle @@ -0,0 +1,271 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/float/nonlin.c (with preprocessing) +tests/float/nonlin.c:75:[kernel] warning: Floating-point constant 0.000000001 is not represented exactly. Will use 0x1.12e0be826d695p-30. See documentation for option -warn-decimal-float +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + Frama_C_entropy_source ∈ [--..--] + a ∈ {0} + b ∈ {0} + c ∈ {0} + r1 ∈ {0} + r2 ∈ {0} + d ∈ {0} + i ∈ {0} + s ∈ {0} + zf ∈ {0} + s2 ∈ {0} + sq ∈ {0} + h ∈ {0} + t[0] ∈ {1} + [1] ∈ {2} + [2] ∈ {3} + [3] ∈ {4} + [4] ∈ {5} + [5] ∈ {6} + [6] ∈ {7} + [7] ∈ {8} + [8] ∈ {9} + [9] ∈ {10} + r ∈ {0} + x ∈ {0} + y ∈ {0} + z ∈ {0} + rbits1 ∈ {0} + rbits2 ∈ {0} + v ∈ [--..--] +[value] computing for function nonlin_f <- main. + Called from tests/float/nonlin.c:85. +[value] computing for function Frama_C_float_interval <- nonlin_f <- main. + Called from tests/float/nonlin.c:16. +[value] using specification for function Frama_C_float_interval +share/libc/__fc_builtin.h:141:[value] function Frama_C_float_interval: precondition got status valid. +share/libc/__fc_builtin.h:142:[value] function Frama_C_float_interval: precondition got status valid. +[value] Done for function Frama_C_float_interval +[value] computing for function Frama_C_float_interval <- nonlin_f <- main. + Called from tests/float/nonlin.c:17. +[value] Done for function Frama_C_float_interval +tests/float/nonlin.c:20:[value] assertion got status valid. +tests/float/nonlin.c:22:[value:nonlin] non-linear 'a + b * (c - a)', lv 'a' +tests/float/nonlin.c:24:[value] assertion got status valid. +tests/float/nonlin.c:41:[value:nonlin] non-linear 'b * (c - a) + a', lv 'a' +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.4000000000000p2 .. 0x1.4800000000000p2], + {{ "r2" }}, + [0x1.4000000000000p2 .. 0x1.c0fffe0000000p2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.4800000000000p2 .. 0x1.5000000000000p2], + {{ "r2" }}, + [0x1.4800000000000p2 .. 0x1.c0fffe0000000p2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.5000000000000p2 .. 0x1.5800000000000p2], + {{ "r2" }}, + [0x1.5000000000000p2 .. 0x1.c0fffe0000000p2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.5800000000000p2 .. 0x1.6000000000000p2], + {{ "r2" }}, + [0x1.5800000000000p2 .. 0x1.c0fffe0000000p2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.6000000000000p2 .. 0x1.6800000000000p2], + {{ "r2" }}, + [0x1.6000000000000p2 .. 0x1.c0fffe0000000p2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.6800000000000p2 .. 0x1.7000000000000p2], + {{ "r2" }}, + [0x1.6800000000000p2 .. 0x1.c0fffe0000000p2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.7000000000000p2 .. 0x1.7800000000000p2], + {{ "r2" }}, + [0x1.7000000000000p2 .. 0x1.c0fffe0000000p2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.7800000000000p2 .. 0x1.8000000000000p2], + {{ "r2" }}, + [0x1.7800000000000p2 .. 0x1.c0fffe0000000p2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.8000000000000p2 .. 0x1.8800000000000p2], + {{ "r2" }}, + [0x1.8000000000000p2 .. 0x1.c0fffe0000000p2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.8800000000000p2 .. 0x1.9000000000000p2], + {{ "r2" }}, + [0x1.8800000000000p2 .. 0x1.c0fffe0000000p2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.9000000000000p2 .. 0x1.9800000000000p2], + {{ "r2" }}, + [0x1.9000000000000p2 .. 0x1.c0fffe0000000p2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.9800000000000p2 .. 0x1.a000000000000p2], + {{ "r2" }}, + [0x1.9800000000000p2 .. 0x1.c0fffe0000000p2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.a000000000000p2 .. 0x1.a800000000000p2], + {{ "r2" }}, + [0x1.a000000000000p2 .. 0x1.c0fffe0000000p2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.a800000000000p2 .. 0x1.b000000000000p2], + {{ "r2" }}, + [0x1.a800000000000p2 .. 0x1.c0fffe0000000p2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.b000000000000p2 .. 0x1.b800000000000p2], + {{ "r2" }}, + [0x1.b000000000000p2 .. 0x1.c0fffe0000000p2]) +[value] Called Frama_C_show_each_a_r2({{ "a" }}, + [0x1.b800000000000p2 .. 0x1.c000000000000p2], + {{ "r2" }}, + [0x1.b800000000000p2 .. 0x1.c0fffe0000000p2]) +[value] Recording results for nonlin_f +[value] Done for function nonlin_f +[value] computing for function other <- main. + Called from tests/float/nonlin.c:86. +[value] computing for function Frama_C_float_interval <- other <- main. + Called from tests/float/nonlin.c:59. +[value] Done for function Frama_C_float_interval +[value] computing for function Frama_C_float_interval <- other <- main. + Called from tests/float/nonlin.c:60. +[value] Done for function Frama_C_float_interval +tests/float/nonlin.c:61:[value:nonlin] non-linear 'i * i', lv 'i' +tests/float/nonlin.c:61:[value] warning: accessing out of bounds index. + assert (int)((double)((double)((float)(i*i))+2.0)) < 10; +tests/float/nonlin.c:62:[value:nonlin] non-linear 's - s', lv 's' +tests/float/nonlin.c:63:[value:nonlin] non-linear 's - s', lv 's' +tests/float/nonlin.c:64:[value:nonlin] non-linear 's + s', lv 's' +tests/float/nonlin.c:65:[value:nonlin] non-linear 's * s', lv 's' +tests/float/nonlin.c:66:[value:nonlin] non-linear 's * ((float)1 - s)', lv 's' +[value] computing for function access_bits <- other <- main. + Called from tests/float/nonlin.c:67. +[value] Recording results for access_bits +[value] Done for function access_bits +[value] computing for function Frama_C_interval <- other <- main. + Called from tests/float/nonlin.c:69. +[value] using specification for function Frama_C_interval +share/libc/__fc_builtin.h:50:[value] function Frama_C_interval: precondition got status valid. +[value] Done for function Frama_C_interval +tests/float/nonlin.c:70:[value:nonlin] non-linear '(1 / x) * x', lv 'x' +tests/float/nonlin.c:70:[value] warning: division by zero. assert x ≢ 0; +[value] Recording results for other +[value] Done for function other +[value] computing for function split_alarm <- main. + Called from tests/float/nonlin.c:87. +tests/float/nonlin.c:74:[value] warning: non-finite float value. assert \is_finite(v); +tests/float/nonlin.c:75:[value:nonlin] non-linear '(double)ff * (double)ff', lv 'ff' +[value] Recording results for split_alarm +[value] Done for function split_alarm +[value] computing for function norm <- main. + Called from tests/float/nonlin.c:88. +tests/float/nonlin.c:79:[value] warning: non-finite float value. assert \is_finite(v); +tests/float/nonlin.c:80:[value] warning: non-finite float value. assert \is_finite(v); +tests/float/nonlin.c:81:[value:nonlin] non-linear '(double)v1 * (double)v1', lv 'v1' +tests/float/nonlin.c:81:[value:nonlin] non-linear '(double)v2 * (double)v2', lv 'v2' +[value] Recording results for norm +[value] Done for function norm +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function access_bits: + rbits1 ∈ {0; 1; 2} + x0 ∈ [0..3229810683] + __retres ∈ {0; 1} +[value:final-states] Values at end of function nonlin_f: + Frama_C_entropy_source ∈ [--..--] + a ∈ [0x1.4000000000000p2 .. 0x1.c000000000000p2] + b ∈ [-0x0.0000000000000p-1022 .. 0x1.0000000000000p0] + c ∈ {0x1.c000000000000p2} + r1 ∈ [0x1.4000000000000p2 .. 0x1.cffffe0000000p2] + r2 ∈ [0x1.4000000000000p2 .. 0x1.c0fffe0000000p2] + d ∈ [0x1.4000000000000p2 .. 0x1.c000000000000p2] +[value:final-states] Values at end of function norm: + v1 ∈ [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + v2 ∈ [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + square ∈ [-0x0.0000000000000p-1022 .. 0x1.fffffc0000020p256] +[value:final-states] Values at end of function other: + Frama_C_entropy_source ∈ [--..--] + i ∈ [-0x1.05fff60000000p2 .. 0x1.6a3b040000000p1] + s ∈ [-0x1.0a00000000000p7 .. 0x1.1c00000000000p7] + zf ∈ [-0x1.12fffc0000000p4 .. 0x1.12fffc0000000p4] + s2 ∈ [-0x1.0a00000000000p8 .. 0x1.1c00000000000p8] + sq ∈ [-0x1.b37e680000000p-7 .. 0x1.3b10000000000p14] + h ∈ [-0x1.38d8000000000p14 .. 0x1.3250680000000p-1] + r ∈ [3..11] + x ∈ [1..42] + y ∈ {0; 1} + z ∈ [-171874..171874] + rbits1 ∈ {0; 1; 2} + rbits2 ∈ {0; 1} +[value:final-states] Values at end of function split_alarm: + ff ∈ [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + d_0 ∈ [0x1.0000020000030p-256 .. 0x1.dcd64ffffffffp29] +[value:final-states] Values at end of function main: + Frama_C_entropy_source ∈ [--..--] + a ∈ [0x1.4000000000000p2 .. 0x1.c000000000000p2] + b ∈ [-0x0.0000000000000p-1022 .. 0x1.0000000000000p0] + c ∈ {0x1.c000000000000p2} + r1 ∈ [0x1.4000000000000p2 .. 0x1.cffffe0000000p2] + r2 ∈ [0x1.4000000000000p2 .. 0x1.c0fffe0000000p2] + d ∈ [0x1.4000000000000p2 .. 0x1.c000000000000p2] + i ∈ [-0x1.05fff60000000p2 .. 0x1.6a3b040000000p1] + s ∈ [-0x1.0a00000000000p7 .. 0x1.1c00000000000p7] + zf ∈ [-0x1.12fffc0000000p4 .. 0x1.12fffc0000000p4] + s2 ∈ [-0x1.0a00000000000p8 .. 0x1.1c00000000000p8] + sq ∈ [-0x1.b37e680000000p-7 .. 0x1.3b10000000000p14] + h ∈ [-0x1.38d8000000000p14 .. 0x1.3250680000000p-1] + r ∈ [3..11] + x ∈ [1..42] + y ∈ {0; 1} + z ∈ [-171874..171874] + rbits1 ∈ {0; 1; 2} + rbits2 ∈ {0; 1} +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function access_bits: + rbits1 ∈ {0; 1; 2} + x0 ∈ [0..3229810683] + __retres ∈ {0; 1} +[value:final-states] Values at end of function nonlin_f: + Frama_C_entropy_source ∈ [--..--] + a ∈ [5. .. 7.] + b ∈ [-0. .. 1.] + c ∈ {7.} + r1 ∈ [5. .. 7.24999952316] + r2 ∈ [5. .. 7.01562452316] + d ∈ [5. .. 7.] +[value:final-states] Values at end of function norm: + v1 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + v2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + square ∈ [-0. .. 2.31584150868e+77] +[value:final-states] Values at end of function other: + Frama_C_entropy_source ∈ [--..--] + i ∈ [-4.09374761581 .. 2.82992601395] + s ∈ [-133. .. 142.] + zf ∈ [-17.1874961853 .. 17.1874961853] + s2 ∈ [-266. .. 284.] + sq ∈ [-0.0132902152836 .. 20164.] + h ∈ [-20022. .. 0.598269701004] + r ∈ [3..11] + x ∈ [1..42] + y ∈ {0; 1} + z ∈ [-171874..171874] + rbits1 ∈ {0; 1; 2} + rbits2 ∈ {0; 1} +[value:final-states] Values at end of function split_alarm: + ff ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + d_0 ∈ [8.63616958461e-78 .. 1000000000.] +[value:final-states] Values at end of function main: + Frama_C_entropy_source ∈ [--..--] + a ∈ [5. .. 7.] + b ∈ [-0. .. 1.] + c ∈ {7.} + r1 ∈ [5. .. 7.24999952316] + r2 ∈ [5. .. 7.01562452316] + d ∈ [5. .. 7.] + i ∈ [-4.09374761581 .. 2.82992601395] + s ∈ [-133. .. 142.] + zf ∈ [-17.1874961853 .. 17.1874961853] + s2 ∈ [-266. .. 284.] + sq ∈ [-0.0132902152836 .. 20164.] + h ∈ [-20022. .. 0.598269701004] + r ∈ [3..11] + x ∈ [1..42] + y ∈ {0; 1} + z ∈ [-171874..171874] + rbits1 ∈ {0; 1; 2} + rbits2 ∈ {0; 1} diff --git a/tests/float/oracle_symblocs/parse.err.oracle b/tests/float/oracle_symblocs/parse.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/float/oracle_symblocs/parse.res.oracle b/tests/float/oracle_symblocs/parse.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e03b608cea1b0d236eb0613594c11c38b2e1fa56 --- /dev/null +++ b/tests/float/oracle_symblocs/parse.res.oracle @@ -0,0 +1,30 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/float/parse.i (no preprocessing) +tests/float/parse.i:25:[kernel] warning: Floating-point constant 0.00000000000000000000000000000000000000001e310 is not represented exactly. Will use 0x1.83a99c3ec7eb0p893 +tests/float/parse.i:30:[kernel] warning: Floating-point constant 0.0000001E9999999999999999999 is not represented exactly. Will use inf +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + v ∈ [--..--] +[value] Called Frama_C_show_each({0}, {{ "reached" }}) +[value] Called Frama_C_show_each({0}, {{ "reached" }}) +[value] Called Frama_C_show_each({0}, {0}, {{ "reached" }}) +[value] Called Frama_C_show_each({0x1.83a99c3ec7eb0p893}, {{ "reached" }}) +tests/float/parse.i:30:[value] warning: non-finite double value. assert \is_finite(0.0000001E9999999999999999999); +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + __retres ∈ {0} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + d; d_0; d1; d2; d_1; d_2; __retres +[inout] Inputs for function main: + v diff --git a/tests/float/oracle_symblocs/precise_cos_sin.err.oracle b/tests/float/oracle_symblocs/precise_cos_sin.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/float/oracle_symblocs/precise_cos_sin.res.oracle b/tests/float/oracle_symblocs/precise_cos_sin.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..719d379d3a7d9c5a7ce98878c52de30c610ee8fd --- /dev/null +++ b/tests/float/oracle_symblocs/precise_cos_sin.res.oracle @@ -0,0 +1,68 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/float/precise_cos_sin.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + Frama_C_entropy_source ∈ [--..--] +[value] computing for function Frama_C_float_interval <- main. + Called from tests/float/precise_cos_sin.c:12. +[value] using specification for function Frama_C_float_interval +share/libc/__fc_builtin.h:141:[value] function Frama_C_float_interval: precondition got status valid. +share/libc/__fc_builtin.h:142:[value] function Frama_C_float_interval: precondition got status valid. +[value] Done for function Frama_C_float_interval +[value] Called Frama_C_show_each_s([-1.6214298009872436*2^-3 .. 1.4685190916061401*2^-5]) +[value] Called Frama_C_show_each_c([-1.0000000000000000 .. -1.9584906101226807*2^-1]) +[value] Called Frama_C_show_each_s([-1.7545883655548095*2^-2 .. -1.6214298009872436*2^-3]) +[value] Called Frama_C_show_each_c([-1.9584906101226807*2^-1 .. -1.7973188161849975*2^-1]) +[value] Called Frama_C_show_each_s([-1.2946850061416626*2^-1 .. -1.7545883655548095*2^-2]) +[value] Called Frama_C_show_each_c([-1.7973188161849975*2^-1 .. -1.5243984460830688*2^-1]) +[value] Called Frama_C_show_each_s([-1.6315786838531494*2^-1 .. -1.2946850061416626*2^-1]) +[value] Called Frama_C_show_each_c([-1.5243984460830688*2^-1 .. -1.1566983461380005*2^-1]) +[value] Called Frama_C_show_each_s([-1.8670285940170288*2^-1 .. -1.6315786838531494*2^-1]) +[value] Called Frama_C_show_each_c([-1.1566983461380005*2^-1 .. -1.4341608285903930*2^-2]) +[value] Called Frama_C_show_each_s([-1.9863957166671753*2^-1 .. -1.8670285940170288*2^-1]) +[value] Called Frama_C_show_each_c([-1.4341608285903930*2^-2 .. -1.8630230426788330*2^-4]) +[value] Called Frama_C_show_each_s([-1.0000000000000000 .. -1.9822584390640259*2^-1]) +[value] Called Frama_C_show_each_c([-1.8630230426788330*2^-4 .. 1.0632156133651733*2^-3]) +[value] Called Frama_C_show_each_s([-1.9822584390640259*2^-1 .. -1.8548737764358520*2^-1]) +[value] Called Frama_C_show_each_c([1.0632156133651733*2^-3 .. 1.4959185123443604*2^-2]) +[value] Called Frama_C_show_each_s([-1.8548737764358520*2^-1 .. -1.6121622323989868*2^-1]) +[value] Called Frama_C_show_each_c([1.4959185123443604*2^-2 .. 1.1836102008819580*2^-1]) +[value] Called Frama_C_show_each_s([-1.6121622323989868*2^-1 .. -1.2692141532897949*2^-1]) +[value] Called Frama_C_show_each_c([1.1836102008819580*2^-1 .. 1.5456699132919311*2^-1]) +[value] Called Frama_C_show_each_s([-1.2692141532897949*2^-1 .. -1.6947050094604492*2^-2]) +[value] Called Frama_C_show_each_c([1.5456699132919311*2^-1 .. 1.8116273880004883*2^-1]) +[value] Called Frama_C_show_each_s([-1.6947050094604492*2^-2 .. -1.4912263154983521*2^-3]) +[value] Called Frama_C_show_each_c([1.8116273880004883*2^-1 .. 1.9649466276168823*2^-1]) +[value] Called Frama_C_show_each_s([-1.4912263154983521*2^-3 .. 1.9986981153488159*2^-5]) +[value] Called Frama_C_show_each_c([1.9649466276168823*2^-1 .. 1.0000000000000000]) +[value] Called Frama_C_show_each_s([1.9986981153488159*2^-5 .. 1.2297540903091430*2^-2]) +[value] Called Frama_C_show_each_c([1.9031358957290649*2^-1 .. 1.9960950613021851*2^-1]) +[value] Called Frama_C_show_each_s([1.2297540903091430*2^-2 .. 1.0666053295135498*2^-1]) +[value] Called Frama_C_show_each_c([1.6918489933013916*2^-1 .. 1.9031358957290649*2^-1]) +[value] Called Frama_C_show_each_s([1.0666053295135498*2^-1 .. 1.4520173072814941*2^-1]) +[value] Called Frama_C_show_each_c([1.3753710985183716*2^-1 .. 1.6918489933013916*2^-1]) +[value] Called Frama_C_show_each_s([1.4520173072814941*2^-1 .. 1.7471498250961303*2^-1]) +[value] Called Frama_C_show_each_c([1.9467586278915405*2^-2 .. 1.3753710985183716*2^-1]) +[value] Called Frama_C_show_each_s([1.7471498250961303*2^-1 .. 1.9336531162261963*2^-1]) +[value] Called Frama_C_show_each_c([1.0217350721359252*2^-2 .. 1.9467586278915405*2^-2]) +[value] Called Frama_C_show_each_s([1.9336531162261963*2^-1 .. 1.9999312162399292*2^-1]) +[value] Called Frama_C_show_each_c([1.0619176626205444*2^-7 .. 1.0217350721359252*2^-2]) +[value] Called Frama_C_show_each_s([1.9418631792068481*2^-1 .. 1.0000000000000000]) +[value] Called Frama_C_show_each_c([-1.9148570299148559*2^-3 .. 1.0619176626205444*2^-7]) +[value] Called Frama_C_show_each_s([1.7630596160888672*2^-1 .. 1.9418631792068481*2^-1]) +[value] Called Frama_C_show_each_c([-1.8885136842727661*2^-2 .. -1.9148570299148559*2^-3]) +[value] Called Frama_C_show_each_s([1.4746373891830444*2^-1 .. 1.7630596160888672*2^-1]) +[value] Called Frama_C_show_each_c([-1.3510900735855102*2^-1 .. -1.8885136842727661*2^-2]) +[value] Called Frama_C_show_each_s([1.0945295095443725*2^-1 .. 1.4746373891830444*2^-1]) +[value] Called Frama_C_show_each_c([-1.6739190816879272*2^-1 .. -1.3510900735855102*2^-1]) +[value] Called Frama_C_show_each_s([1.2927380800247192*2^-2 .. 1.0945295095443725*2^-1]) +[value] Called Frama_C_show_each_c([-1.8926719427108764*2^-1 .. -1.6739190816879272*2^-1]) +[value] Called Frama_C_show_each_s([1.2641634941101074*2^-4 .. 1.2927380800247192*2^-2]) +[value] Called Frama_C_show_each_c([-1.9937475919723511*2^-1 .. -1.8926719427108764*2^-1]) +[value] Called Frama_C_show_each_s([-1.4685190916061401*2^-5 .. 1.2641634941101074*2^-4]) +[value] Called Frama_C_show_each_c([-1.0000000000000000 .. -1.9937475919723511*2^-1]) +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== diff --git a/tests/float/oracle_symblocs/round10d.0.err.oracle b/tests/float/oracle_symblocs/round10d.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/float/oracle_symblocs/round10d.0.res.oracle b/tests/float/oracle_symblocs/round10d.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..24ec6874e85a16abb58275ba24f43c59d52047d5 --- /dev/null +++ b/tests/float/oracle_symblocs/round10d.0.res.oracle @@ -0,0 +1,24 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/float/round10d.i (no preprocessing) +tests/float/round10d.i:9:[kernel] warning: Floating-point constant 0.1 is not represented exactly. Will use 0x1.999999999999ap-4. See documentation for option -warn-decimal-float +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] Called Frama_C_show_each_dixieme({1.6000000000000000*2^-4}) +[value] Called Frama_C_show_each_t({1.6000000000000000*2^-4}) +[value] Called Frama_C_show_each_t({1.6000000000000000*2^-3}) +[value] Called Frama_C_show_each_t({1.2000000000000001*2^-2}) +[value] Called Frama_C_show_each_t({1.6000000000000000*2^-2}) +[value] Called Frama_C_show_each_t({1.0000000000000000*2^-1}) +[value] Called Frama_C_show_each_t({1.1999999999999999*2^-1}) +[value] Called Frama_C_show_each_t({1.3999999999999999*2^-1}) +[value] Called Frama_C_show_each_t({1.5999999999999998*2^-1}) +[value] Called Frama_C_show_each_t({1.7999999999999998*2^-1}) +[value] Called Frama_C_show_each_t({1.9999999999999998*2^-1}) +tests/float/round10d.i:11:[value] entering loop for the first time +tests/float/round10d.i:16:[value] warning: assertion got status invalid (stopping propagation). +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== diff --git a/tests/float/oracle_symblocs/round10d.1.err.oracle b/tests/float/oracle_symblocs/round10d.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/float/oracle_symblocs/round10d.1.res.oracle b/tests/float/oracle_symblocs/round10d.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..aed555a508b0f5d9233154679f92e6a6d1cceee2 --- /dev/null +++ b/tests/float/oracle_symblocs/round10d.1.res.oracle @@ -0,0 +1,24 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/float/round10d.i (no preprocessing) +tests/float/round10d.i:9:[kernel] warning: Floating-point constant 0.1 is not represented exactly. Will use 0x1.999999999999ap-4. See documentation for option -warn-decimal-float +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] Called Frama_C_show_each_dixieme({1.6000000000000000*2^-4}) +[value] Called Frama_C_show_each_t({1.6000000000000000*2^-4}) +[value] Called Frama_C_show_each_t({1.6000000000000000*2^-3}) +[value] Called Frama_C_show_each_t([1.1999999999999999*2^-2 .. 1.2000000000000001*2^-2]) +[value] Called Frama_C_show_each_t([1.5999999999999998*2^-2 .. 1.6000000000000003*2^-2]) +[value] Called Frama_C_show_each_t([1.9999999999999998*2^-2 .. 1.0000000000000002*2^-1]) +[value] Called Frama_C_show_each_t([1.1999999999999997*2^-1 .. 1.2000000000000004*2^-1]) +[value] Called Frama_C_show_each_t([1.3999999999999997*2^-1 .. 1.4000000000000006*2^-1]) +[value] Called Frama_C_show_each_t([1.5999999999999996*2^-1 .. 1.6000000000000007*2^-1]) +[value] Called Frama_C_show_each_t([1.7999999999999996*2^-1 .. 1.8000000000000009*2^-1]) +[value] Called Frama_C_show_each_t([1.9999999999999996*2^-1 .. 1.0000000000000006]) +tests/float/round10d.i:11:[value] entering loop for the first time +tests/float/round10d.i:16:[value] warning: assertion got status unknown. +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== diff --git a/tests/float/oracle_symblocs/s.0.err.oracle b/tests/float/oracle_symblocs/s.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/float/oracle_symblocs/s.0.res.oracle b/tests/float/oracle_symblocs/s.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..8e0e24021f6d5b713547fcf8f126b79036e30889 --- /dev/null +++ b/tests/float/oracle_symblocs/s.0.res.oracle @@ -0,0 +1,340 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/float/s.i (no preprocessing) +tests/float/s.i:18:[kernel] warning: Floating-point constant 1.882f is not represented exactly. Will use 0x1.e1cac00000000p0. See documentation for option -warn-decimal-float +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + G3 ∈ {42} + G5[0..63] ∈ {0} + G6 ∈ {42} + G7 ∈ {0} + G8 ∈ {0} + G9[0] ∈ {0x1.0000000000000p1} + [1] ∈ {0x1.e1cac00000000p0} + [2] ∈ {0x1.c72b020000000p0} + [3] ∈ {0x1.af1aa00000000p0} + [4] ∈ {0x1.99999a0000000p0} + [5] ∈ {0x1.85e3540000000p0} + [6] ∈ {0x1.747ae20000000p0} + [7] ∈ {0x1.6418940000000p0} + [8] ∈ {0x1.553f7c0000000p0} + [9] ∈ {0x1.47ae140000000p0} + [10] ∈ {0x1.3b22d00000000p0} + [11] ∈ {0x1.2f5c280000000p0} + [12] ∈ {0x1.249ba60000000p0} + [13] ∈ {0x1.1020c40000000p0} + [14] ∈ {0x1.0000000000000p0} + [15] ∈ {0x1.e353f80000000p-1} + [16] ∈ {0x1.ca3d700000000p-1} + [17] ∈ {0x1.b333340000000p-1} + [18] ∈ {0x1.9eb8520000000p-1} + [19] ∈ {0x1.8bc6a80000000p-1} + [20] ∈ {0x1.7a5e360000000p-1} + [21] ∈ {0x1.6a7efa0000000p-1} + [22] ∈ {0x1.5c28f60000000p-1} + [23] ∈ {0x1.4ed9160000000p-1} + [24] ∈ {0x1.428f5c0000000p-1} + [25] ∈ {0x1.36c8b40000000p-1} + [26] ∈ {0x1.2c08320000000p-1} + [27] ∈ {0x1.224dd20000000p-1} + [28] ∈ {0x1.1893740000000p-1} + [29] ∈ {0x1.0000000000000p-1} + [30] ∈ {0x1.e24dd20000000p-2} + [31] ∈ {0x1.c6a7f00000000p-2} + [32] ∈ {0x1.af1aa00000000p-2} + [33] ∈ {0x1.99999a0000000p-2} + [34] ∈ {0x1.8624de0000000p-2} + [35] ∈ {0x1.74bc6a0000000p-2} + [36] ∈ {0x1.645a1c0000000p-2} + [37] ∈ {0x1.54fdf40000000p-2} + [38] ∈ {0x1.47ae140000000p-2} + [39] ∈ {0x1.3b645a0000000p-2} + [40] ∈ {0x1.2f1aa00000000p-2} + [41] ∈ {0x1.24dd300000000p-2} + [42] ∈ {0x1.1a9fbe0000000p-2} + [43] ∈ {0x1.1168720000000p-2} + [44] ∈ {0x1.0831260000000p-2} + [45] ∈ {0x1.0000000000000p-2} + [46] ∈ {0x1.e353f80000000p-3} + [47] ∈ {0x1.c6a7f00000000p-3} + [48] ∈ {0x1.b020c40000000p-3} + [49] ∈ {0x1.99999a0000000p-3} + [50] ∈ {0x1.851eb80000000p-3} + [51] ∈ {0x1.74bc6a0000000p-3} + [52] ∈ {0x1.645a1c0000000p-3} + [53] ∈ {0x1.5604180000000p-3} + [54] ∈ {0x1.47ae140000000p-3} + [55] ∈ {0x1.3b645a0000000p-3} + [56] ∈ {0x1.2f1aa00000000p-3} + [57] ∈ {0x1.24dd300000000p-3} + [58] ∈ {0x1.1a9fbe0000000p-3} + [59] ∈ {0x1.10624e0000000p-3} + [60] ∈ {0x1.0831260000000p-3} + [61] ∈ {0x1.0000000000000p-3} + [62] ∈ {0x1.e353f80000000p-4} + [63] ∈ {0x1.c6a7f00000000p-4} + G10[0] ∈ {0x1.a1e8c60000000p-5} + [1] ∈ {0x1.af8fa40000000p-5} + [2] ∈ {0x1.c09e7a0000000p-5} + [3] ∈ {0x1.ce42800000000p-5} + [4] ∈ {0x1.df4da60000000p-5} + [5] ∈ {0x1.f056a60000000p-5} + [6] ∈ {0x1.0262740000000p-4} + [7] ∈ {0x1.0c97e80000000p-4} + [8] ∈ {0x1.16cba00000000p-4} + [9] ∈ {0x1.2463180000000p-4} + [10] ∈ {0x1.3044e20000000p-4} + [11] ∈ {0x1.3f87cc0000000p-4} + [12] ∈ {0x1.4ec6100000000p-4} + [13] ∈ {0x1.6160dc0000000p-4} + [14] ∈ {0x1.73f3fa0000000p-4} + [15] ∈ {0x1.89dd340000000p-4} + [16] ∈ {0x1.a3167c0000000p-4} + [17] ∈ {0x1.b083800000000p-4} + [18] ∈ {0x1.bdeb8c0000000p-4} + [19] ∈ {0x1.ccfa780000000p-4} + [20] ∈ {0x1.ddadd40000000p-4} + [21] ∈ {0x1.f002ce0000000p-4} + [22] ∈ {0x1.0126800000000p-3} + [23] ∈ {0x1.0b1a0a0000000p-3} + [24] ∈ {0x1.15da100000000p-3} + [25] ∈ {0x1.2236fa0000000p-3} + [26] ∈ {0x1.2f59f00000000p-3} + [27] ∈ {0x1.3d3fca0000000p-3} + [28] ∈ {0x1.4cb4ae0000000p-3} + [29] ∈ {0x1.5db0f00000000p-3} + [30] ∈ {0x1.702b7a0000000p-3} + [31] ∈ {0x1.85aff00000000p-3} + [32] ∈ {0x1.9c93820000000p-3} + [33] ∈ {0x1.a9e1aa0000000p-3} + [34] ∈ {0x1.b719b40000000p-3} + [35] ∈ {0x1.c5c4dc0000000p-3} + [36] ∈ {0x1.d515d80000000p-3} + [37] ∈ {0x1.e5c7f00000000p-3} + [38] ∈ {0x1.f64fcc0000000p-3} + [39] ∈ {0x1.0471d00000000p-2} + [40] ∈ {0x1.0e59140000000p-2} + [41] ∈ {0x1.1930760000000p-2} + [42] ∈ {0x1.24e8cc0000000p-2} + [43] ∈ {0x1.3170760000000p-2} + [44] ∈ {0x1.3eb3140000000p-2} + [45] ∈ {0x1.4d402c0000000p-2} + [46] ∈ {0x1.5cebf20000000p-2} + [47] ∈ {0x1.6dcf5c0000000p-2} + [48] ∈ {0x1.7fea3e0000000p-2} + [49] ∈ {0x1.89682c0000000p-2} + [50] ∈ {0x1.935f9c0000000p-2} + [51] ∈ {0x1.9d75840000000p-2} + [52] ∈ {0x1.a8112c0000000p-2} + [53] ∈ {0x1.b2943c0000000p-2} + [54] ∈ {0x1.bd88ba0000000p-2} + [55] ∈ {0x1.c87cb20000000p-2} + [56] ∈ {0x1.d335de0000000p-2} + [57] ∈ {0x1.ddc3220000000p-2} + [58] ∈ {0x1.e7dc420000000p-2} + [59] ∈ {0x1.f0dc4a0000000p-2} + [60] ∈ {0x1.f88a800000000p-2} + [61] ∈ {0x1.fde7e00000000p-2} + [62] ∈ {0x1.fffff40000000p-2} + [63] ∈ {0x1.fd48c00000000p-2} + G11[0] ∈ {0x1.fd53fe0000000p0} + [1] ∈ {0x1.fd26740000000p0} + [2] ∈ {0x1.fceb760000000p0} + [3] ∈ {0x1.fcbaa00000000p0} + [4] ∈ {0x1.fc7b840000000p0} + [5] ∈ {0x1.fc3a220000000p0} + [6] ∈ {0x1.fbe8a60000000p0} + [7] ∈ {0x1.fb93e20000000p0} + [8] ∈ {0x1.fb3bd60000000p0} + [9] ∈ {0x1.fac1560000000p0} + [10] ∈ {0x1.fa51600000000p0} + [11] ∈ {0x1.f9bade0000000p0} + [12] ∈ {0x1.f91cfe0000000p0} + [13] ∈ {0x1.f852100000000p0} + [14] ∈ {0x1.f77c2c0000000p0} + [15] ∈ {0x1.f671460000000p0} + [16] ∈ {0x1.f52a5c0000000p0} + [17] ∈ {0x1.f473b80000000p0} + [18] ∈ {0x1.f3b7540000000p0} + [19] ∈ {0x1.f2dc840000000p0} + [20] ∈ {0x1.f1e0e00000000p0} + [21] ∈ {0x1.f0c1be0000000p0} + [22] ∈ {0x1.ef97ce0000000p0} + [23] ∈ {0x1.ee46800000000p0} + [24] ∈ {0x1.eccaa80000000p0} + [25] ∈ {0x1.eb01ca0000000p0} + [26] ∈ {0x1.e904940000000p0} + [27] ∈ {0x1.e6cee80000000p0} + [28] ∈ {0x1.e438c60000000p0} + [29] ∈ {0x1.e138680000000p0} + [30] ∈ {0x1.ddc3220000000p0} + [31] ∈ {0x1.d979fa0000000p0} + [32] ∈ {0x1.d49a7e0000000p0} + [33] ∈ {0x1.d19e3e0000000p0} + [34] ∈ {0x1.ce89d00000000p0} + [35] ∈ {0x1.cafc360000000p0} + [36] ∈ {0x1.c71e960000000p0} + [37] ∈ {0x1.c2b83a0000000p0} + [38] ∈ {0x1.be2aae0000000p0} + [39] ∈ {0x1.b8cf1e0000000p0} + [40] ∈ {0x1.b2ce400000000p0} + [41] ∈ {0x1.abdfde0000000p0} + [42] ∈ {0x1.a3f02e0000000p0} + [43] ∈ {0x1.9aea260000000p0} + [44] ∈ {0x1.90b7b60000000p0} + [45] ∈ {0x1.84b34c0000000p0} + [46] ∈ {0x1.76b2600000000p0} + [47] ∈ {0x1.663a460000000p0} + [48] ∈ {0x1.52c0a60000000p0} + [49] ∈ {0x1.47ae660000000p0} + [50] ∈ {0x1.3b54d20000000p0} + [51] ∈ {0x1.2dfc740000000p0} + [52] ∈ {0x1.1ee6300000000p0} + [53] ∈ {0x1.0eb64e0000000p0} + [54] ∈ {0x1.f88d840000000p-1} + [55] ∈ {0x1.cfbd460000000p-1} + [56] ∈ {0x1.a2d91c0000000p-1} + [57] ∈ {0x1.702b7a0000000p-1} + [58] ∈ {0x1.36b7840000000p-1} + [59] ∈ {0x1.ee589c0000000p-2} + [60] ∈ {0x1.5c4eaa0000000p-2} + [61] ∈ {0x1.7217880000000p-3} + [62] ∈ {-0x1.b739f80000000p-10} + [63] ∈ {-0x1.a5529a0000000p-3} + G12[0] ∈ {0x1.5555560000000p-1} + [1] ∈ {0x1.2f684c0000000p-1} + [2] ∈ {0x1.1111120000000p-1} + [3] ∈ {0x1.f07c200000000p-2} + [4] ∈ {0x1.c71c720000000p-2} + [5] ∈ {0x1.a41a420000000p-2} + [6] ∈ {0x1.8618620000000p-2} + [7] ∈ {0x1.6c16c20000000p-2} + [8] ∈ {0x1.5555560000000p-2} + [9] ∈ {0x1.2f684c0000000p-2} + [10] ∈ {0x1.1111120000000p-2} + [11] ∈ {0x1.f07c200000000p-3} + [12] ∈ {0x1.c71c720000000p-3} + [13] ∈ {0x1.a41a420000000p-3} + [14] ∈ {0x1.8618620000000p-3} + [15] ∈ {0x1.6c16c20000000p-3} + [16] ∈ {0x1.5555560000000p-3} + [17] ∈ {0x1.2f684c0000000p-3} + [18] ∈ {0x1.1111120000000p-3} + [19] ∈ {0x1.f07c200000000p-4} + [20] ∈ {0x1.c71c720000000p-4} + [21] ∈ {0x1.a41a420000000p-4} + [22] ∈ {0x1.8618620000000p-4} + [23] ∈ {0x1.6c16c20000000p-4} + [24] ∈ {0x1.5555560000000p-4} + [25] ∈ {0x1.2f684c0000000p-4} + [26] ∈ {0x1.1111120000000p-4} + [27] ∈ {0x1.f07c200000000p-5} + [28] ∈ {0x1.c71c720000000p-5} + [29] ∈ {0x1.a41a420000000p-5} + [30] ∈ {0x1.8618620000000p-5} + [31] ∈ {0x1.6c16c20000000p-5} + G13 ∈ {0} + G14 ∈ {0} + G15 ∈ {0} + G16 ∈ {0} + G17 ∈ {0} + G18 ∈ {0} + G19 ∈ {0} +[value] computing for function F4 <- main. + Called from tests/float/s.i:260. +[value] computing for function F1 <- F4 <- main. + Called from tests/float/s.i:230. +tests/float/s.i:230:[kernel] warning: Neither code nor specification for function F1, generating default assigns from the prototype +[value] using specification for function F1 +[value] Done for function F1 +tests/float/s.i:231:[value] warning: accessing out of bounds index. assert 0 ≤ V4; +tests/float/s.i:231:[value] warning: accessing out of bounds index. assert V4 < 64; +[value] computing for function F2 <- F4 <- main. + Called from tests/float/s.i:233. +tests/float/s.i:233:[kernel] warning: Neither code nor specification for function F2, generating default assigns from the prototype +[value] using specification for function F2 +[value] Done for function F2 +tests/float/s.i:238:[value] warning: accessing out of bounds index. assert 0 ≤ V5; +tests/float/s.i:238:[value] warning: accessing out of bounds index. assert V5 < 64; +[value] computing for function F2 <- F4 <- main. + Called from tests/float/s.i:241. +[value] Done for function F2 +tests/float/s.i:242:[value] warning: accessing out of bounds index. assert 0 ≤ V6; +tests/float/s.i:242:[value] warning: accessing out of bounds index. assert V6 < 64; +[value] computing for function F3 <- F4 <- main. + Called from tests/float/s.i:244. +tests/float/s.i:244:[kernel] warning: Neither code nor specification for function F3, generating default assigns from the prototype +[value] using specification for function F3 +[value] Done for function F3 +tests/float/s.i:245:[value] warning: accessing out of bounds index. assert 0 ≤ V7; +tests/float/s.i:245:[value] warning: accessing out of bounds index. assert V7 < 32; +[value] Recording results for F4 +[value] Done for function F4 +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function F4: + V1 ∈ {0} + V2 ∈ [-0x1.a4cfc20000000p-3 .. 0x1.fcb5d20000000p0] + V3 ∈ [-0x1.fec1fc0000000p-1 .. -0x1.f3f3f40000000p-1] + V4 ∈ [0..63] + V5 ∈ [0..63] + V6 ∈ [0..63] + V7 ∈ [0..31] + G14 ∈ [0x1.3e68340000000p-10 .. 0x1.86185a0000000p-7] + G15 ∈ [-0x1.a5529a0000000p-3 .. 0x1.fd53fe0000000p0] + G16 ∈ [0x1.c6a7f00000000p-4 .. 0x1.0000000000000p1] + G17 ∈ [0x1.6c16c20000000p-5 .. 0x1.5555560000000p-1] + G18 ∈ [0x1.f9f9fa0000000p-1 .. 0x1.ff60fe0000000p-1] + G19 ∈ [0x1.176b440000000p-13 .. 0x1.859f340000000p-6] +[value:final-states] Values at end of function main: + V8 ∈ {0} + G14 ∈ [0x1.3e68340000000p-10 .. 0x1.86185a0000000p-7] + G15 ∈ [-0x1.a5529a0000000p-3 .. 0x1.fd53fe0000000p0] + G16 ∈ [0x1.c6a7f00000000p-4 .. 0x1.0000000000000p1] + G17 ∈ [0x1.6c16c20000000p-5 .. 0x1.5555560000000p-1] + G18 ∈ [0x1.f9f9fa0000000p-1 .. 0x1.ff60fe0000000p-1] + G19 ∈ [0x1.176b440000000p-13 .. 0x1.859f340000000p-6] +[from] Computing for function F4 +[from] Computing for function F1 <-F4 +[from] Done for function F1 +[from] Computing for function F2 <-F4 +[from] Done for function F2 +[from] Computing for function F3 <-F4 +[from] Done for function F3 +[from] Done for function F4 +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function F1: + \result FROM G1 +[from] Function F2: + \result FROM G2 +[from] Function F3: + \result FROM G4 +[from] Function F4: + G14 FROM G3; G10[0..63]; G13 + G15 FROM G11[0..63]; G13 + G16 FROM G9[0..63]; G13 + G17 FROM G12[0..31]; G13 + G18 FROM G3; G10[0..63]; G13 + G19 FROM G3; G9[0..63]; G10[0..63]; G13 +[from] Function main: + G14 FROM G3; G10[0..63]; G13 + G15 FROM G11[0..63]; G13 + G16 FROM G9[0..63]; G13 + G17 FROM G12[0..31]; G13 + G18 FROM G3; G10[0..63]; G13 + G19 FROM G3; G9[0..63]; G10[0..63]; G13 + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function F4: + V1; V2; V3; V4; V5; V6; V7; G14; G15; G16; G17; G18; G19 +[inout] Inputs for function F4: + G3; G9[0..63]; G10[0..63]; G11[0..63]; G12[0..31]; G13; G14; G15; G16; G18 +[inout] Out (internal) for function main: + V8; G14; G15; G16; G17; G18; G19 +[inout] Inputs for function main: + G3; G9[0..63]; G10[0..63]; G11[0..63]; G12[0..31]; G13; G14; G15; G16; G18 diff --git a/tests/float/oracle_symblocs/s.1.err.oracle b/tests/float/oracle_symblocs/s.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/float/oracle_symblocs/s.1.res.oracle b/tests/float/oracle_symblocs/s.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..192c26c2be7f67c933c5974832b2fdea9e747490 --- /dev/null +++ b/tests/float/oracle_symblocs/s.1.res.oracle @@ -0,0 +1,340 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/float/s.i (no preprocessing) +tests/float/s.i:18:[kernel] warning: Floating-point constant 1.882f is not represented exactly. Will use 0x1.e1cac00000000p0. See documentation for option -warn-decimal-float +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + G3 ∈ {42} + G5[0..63] ∈ {0} + G6 ∈ {42} + G7 ∈ {0} + G8 ∈ {0} + G9[0] ∈ {0x1.0000000000000p1} + [1] ∈ {0x1.e1cac00000000p0} + [2] ∈ {0x1.c72b020000000p0} + [3] ∈ {0x1.af1aa00000000p0} + [4] ∈ {0x1.99999a0000000p0} + [5] ∈ {0x1.85e3540000000p0} + [6] ∈ {0x1.747ae20000000p0} + [7] ∈ {0x1.6418940000000p0} + [8] ∈ {0x1.553f7c0000000p0} + [9] ∈ {0x1.47ae140000000p0} + [10] ∈ {0x1.3b22d00000000p0} + [11] ∈ {0x1.2f5c280000000p0} + [12] ∈ {0x1.249ba60000000p0} + [13] ∈ {0x1.1020c40000000p0} + [14] ∈ {0x1.0000000000000p0} + [15] ∈ {0x1.e353f80000000p-1} + [16] ∈ {0x1.ca3d700000000p-1} + [17] ∈ {0x1.b333340000000p-1} + [18] ∈ {0x1.9eb8520000000p-1} + [19] ∈ {0x1.8bc6a80000000p-1} + [20] ∈ {0x1.7a5e360000000p-1} + [21] ∈ {0x1.6a7efa0000000p-1} + [22] ∈ {0x1.5c28f60000000p-1} + [23] ∈ {0x1.4ed9160000000p-1} + [24] ∈ {0x1.428f5c0000000p-1} + [25] ∈ {0x1.36c8b40000000p-1} + [26] ∈ {0x1.2c08320000000p-1} + [27] ∈ {0x1.224dd20000000p-1} + [28] ∈ {0x1.1893740000000p-1} + [29] ∈ {0x1.0000000000000p-1} + [30] ∈ {0x1.e24dd20000000p-2} + [31] ∈ {0x1.c6a7f00000000p-2} + [32] ∈ {0x1.af1aa00000000p-2} + [33] ∈ {0x1.99999a0000000p-2} + [34] ∈ {0x1.8624de0000000p-2} + [35] ∈ {0x1.74bc6a0000000p-2} + [36] ∈ {0x1.645a1c0000000p-2} + [37] ∈ {0x1.54fdf40000000p-2} + [38] ∈ {0x1.47ae140000000p-2} + [39] ∈ {0x1.3b645a0000000p-2} + [40] ∈ {0x1.2f1aa00000000p-2} + [41] ∈ {0x1.24dd300000000p-2} + [42] ∈ {0x1.1a9fbe0000000p-2} + [43] ∈ {0x1.1168720000000p-2} + [44] ∈ {0x1.0831260000000p-2} + [45] ∈ {0x1.0000000000000p-2} + [46] ∈ {0x1.e353f80000000p-3} + [47] ∈ {0x1.c6a7f00000000p-3} + [48] ∈ {0x1.b020c40000000p-3} + [49] ∈ {0x1.99999a0000000p-3} + [50] ∈ {0x1.851eb80000000p-3} + [51] ∈ {0x1.74bc6a0000000p-3} + [52] ∈ {0x1.645a1c0000000p-3} + [53] ∈ {0x1.5604180000000p-3} + [54] ∈ {0x1.47ae140000000p-3} + [55] ∈ {0x1.3b645a0000000p-3} + [56] ∈ {0x1.2f1aa00000000p-3} + [57] ∈ {0x1.24dd300000000p-3} + [58] ∈ {0x1.1a9fbe0000000p-3} + [59] ∈ {0x1.10624e0000000p-3} + [60] ∈ {0x1.0831260000000p-3} + [61] ∈ {0x1.0000000000000p-3} + [62] ∈ {0x1.e353f80000000p-4} + [63] ∈ {0x1.c6a7f00000000p-4} + G10[0] ∈ {0x1.a1e8c60000000p-5} + [1] ∈ {0x1.af8fa40000000p-5} + [2] ∈ {0x1.c09e7a0000000p-5} + [3] ∈ {0x1.ce42800000000p-5} + [4] ∈ {0x1.df4da60000000p-5} + [5] ∈ {0x1.f056a60000000p-5} + [6] ∈ {0x1.0262740000000p-4} + [7] ∈ {0x1.0c97e80000000p-4} + [8] ∈ {0x1.16cba00000000p-4} + [9] ∈ {0x1.2463180000000p-4} + [10] ∈ {0x1.3044e20000000p-4} + [11] ∈ {0x1.3f87cc0000000p-4} + [12] ∈ {0x1.4ec6100000000p-4} + [13] ∈ {0x1.6160dc0000000p-4} + [14] ∈ {0x1.73f3fa0000000p-4} + [15] ∈ {0x1.89dd340000000p-4} + [16] ∈ {0x1.a3167c0000000p-4} + [17] ∈ {0x1.b083800000000p-4} + [18] ∈ {0x1.bdeb8c0000000p-4} + [19] ∈ {0x1.ccfa780000000p-4} + [20] ∈ {0x1.ddadd40000000p-4} + [21] ∈ {0x1.f002ce0000000p-4} + [22] ∈ {0x1.0126800000000p-3} + [23] ∈ {0x1.0b1a0a0000000p-3} + [24] ∈ {0x1.15da100000000p-3} + [25] ∈ {0x1.2236fa0000000p-3} + [26] ∈ {0x1.2f59f00000000p-3} + [27] ∈ {0x1.3d3fca0000000p-3} + [28] ∈ {0x1.4cb4ae0000000p-3} + [29] ∈ {0x1.5db0f00000000p-3} + [30] ∈ {0x1.702b7a0000000p-3} + [31] ∈ {0x1.85aff00000000p-3} + [32] ∈ {0x1.9c93820000000p-3} + [33] ∈ {0x1.a9e1aa0000000p-3} + [34] ∈ {0x1.b719b40000000p-3} + [35] ∈ {0x1.c5c4dc0000000p-3} + [36] ∈ {0x1.d515d80000000p-3} + [37] ∈ {0x1.e5c7f00000000p-3} + [38] ∈ {0x1.f64fcc0000000p-3} + [39] ∈ {0x1.0471d00000000p-2} + [40] ∈ {0x1.0e59140000000p-2} + [41] ∈ {0x1.1930760000000p-2} + [42] ∈ {0x1.24e8cc0000000p-2} + [43] ∈ {0x1.3170760000000p-2} + [44] ∈ {0x1.3eb3140000000p-2} + [45] ∈ {0x1.4d402c0000000p-2} + [46] ∈ {0x1.5cebf20000000p-2} + [47] ∈ {0x1.6dcf5c0000000p-2} + [48] ∈ {0x1.7fea3e0000000p-2} + [49] ∈ {0x1.89682c0000000p-2} + [50] ∈ {0x1.935f9c0000000p-2} + [51] ∈ {0x1.9d75840000000p-2} + [52] ∈ {0x1.a8112c0000000p-2} + [53] ∈ {0x1.b2943c0000000p-2} + [54] ∈ {0x1.bd88ba0000000p-2} + [55] ∈ {0x1.c87cb20000000p-2} + [56] ∈ {0x1.d335de0000000p-2} + [57] ∈ {0x1.ddc3220000000p-2} + [58] ∈ {0x1.e7dc420000000p-2} + [59] ∈ {0x1.f0dc4a0000000p-2} + [60] ∈ {0x1.f88a800000000p-2} + [61] ∈ {0x1.fde7e00000000p-2} + [62] ∈ {0x1.fffff40000000p-2} + [63] ∈ {0x1.fd48c00000000p-2} + G11[0] ∈ {0x1.fd53fe0000000p0} + [1] ∈ {0x1.fd26740000000p0} + [2] ∈ {0x1.fceb760000000p0} + [3] ∈ {0x1.fcbaa00000000p0} + [4] ∈ {0x1.fc7b840000000p0} + [5] ∈ {0x1.fc3a220000000p0} + [6] ∈ {0x1.fbe8a60000000p0} + [7] ∈ {0x1.fb93e20000000p0} + [8] ∈ {0x1.fb3bd60000000p0} + [9] ∈ {0x1.fac1560000000p0} + [10] ∈ {0x1.fa51600000000p0} + [11] ∈ {0x1.f9bade0000000p0} + [12] ∈ {0x1.f91cfe0000000p0} + [13] ∈ {0x1.f852100000000p0} + [14] ∈ {0x1.f77c2c0000000p0} + [15] ∈ {0x1.f671460000000p0} + [16] ∈ {0x1.f52a5c0000000p0} + [17] ∈ {0x1.f473b80000000p0} + [18] ∈ {0x1.f3b7540000000p0} + [19] ∈ {0x1.f2dc840000000p0} + [20] ∈ {0x1.f1e0e00000000p0} + [21] ∈ {0x1.f0c1be0000000p0} + [22] ∈ {0x1.ef97ce0000000p0} + [23] ∈ {0x1.ee46800000000p0} + [24] ∈ {0x1.eccaa80000000p0} + [25] ∈ {0x1.eb01ca0000000p0} + [26] ∈ {0x1.e904940000000p0} + [27] ∈ {0x1.e6cee80000000p0} + [28] ∈ {0x1.e438c60000000p0} + [29] ∈ {0x1.e138680000000p0} + [30] ∈ {0x1.ddc3220000000p0} + [31] ∈ {0x1.d979fa0000000p0} + [32] ∈ {0x1.d49a7e0000000p0} + [33] ∈ {0x1.d19e3e0000000p0} + [34] ∈ {0x1.ce89d00000000p0} + [35] ∈ {0x1.cafc360000000p0} + [36] ∈ {0x1.c71e960000000p0} + [37] ∈ {0x1.c2b83a0000000p0} + [38] ∈ {0x1.be2aae0000000p0} + [39] ∈ {0x1.b8cf1e0000000p0} + [40] ∈ {0x1.b2ce400000000p0} + [41] ∈ {0x1.abdfde0000000p0} + [42] ∈ {0x1.a3f02e0000000p0} + [43] ∈ {0x1.9aea260000000p0} + [44] ∈ {0x1.90b7b60000000p0} + [45] ∈ {0x1.84b34c0000000p0} + [46] ∈ {0x1.76b2600000000p0} + [47] ∈ {0x1.663a460000000p0} + [48] ∈ {0x1.52c0a60000000p0} + [49] ∈ {0x1.47ae660000000p0} + [50] ∈ {0x1.3b54d20000000p0} + [51] ∈ {0x1.2dfc740000000p0} + [52] ∈ {0x1.1ee6300000000p0} + [53] ∈ {0x1.0eb64e0000000p0} + [54] ∈ {0x1.f88d840000000p-1} + [55] ∈ {0x1.cfbd460000000p-1} + [56] ∈ {0x1.a2d91c0000000p-1} + [57] ∈ {0x1.702b7a0000000p-1} + [58] ∈ {0x1.36b7840000000p-1} + [59] ∈ {0x1.ee589c0000000p-2} + [60] ∈ {0x1.5c4eaa0000000p-2} + [61] ∈ {0x1.7217880000000p-3} + [62] ∈ {-0x1.b739f80000000p-10} + [63] ∈ {-0x1.a5529a0000000p-3} + G12[0] ∈ {0x1.5555560000000p-1} + [1] ∈ {0x1.2f684c0000000p-1} + [2] ∈ {0x1.1111120000000p-1} + [3] ∈ {0x1.f07c200000000p-2} + [4] ∈ {0x1.c71c720000000p-2} + [5] ∈ {0x1.a41a420000000p-2} + [6] ∈ {0x1.8618620000000p-2} + [7] ∈ {0x1.6c16c20000000p-2} + [8] ∈ {0x1.5555560000000p-2} + [9] ∈ {0x1.2f684c0000000p-2} + [10] ∈ {0x1.1111120000000p-2} + [11] ∈ {0x1.f07c200000000p-3} + [12] ∈ {0x1.c71c720000000p-3} + [13] ∈ {0x1.a41a420000000p-3} + [14] ∈ {0x1.8618620000000p-3} + [15] ∈ {0x1.6c16c20000000p-3} + [16] ∈ {0x1.5555560000000p-3} + [17] ∈ {0x1.2f684c0000000p-3} + [18] ∈ {0x1.1111120000000p-3} + [19] ∈ {0x1.f07c200000000p-4} + [20] ∈ {0x1.c71c720000000p-4} + [21] ∈ {0x1.a41a420000000p-4} + [22] ∈ {0x1.8618620000000p-4} + [23] ∈ {0x1.6c16c20000000p-4} + [24] ∈ {0x1.5555560000000p-4} + [25] ∈ {0x1.2f684c0000000p-4} + [26] ∈ {0x1.1111120000000p-4} + [27] ∈ {0x1.f07c200000000p-5} + [28] ∈ {0x1.c71c720000000p-5} + [29] ∈ {0x1.a41a420000000p-5} + [30] ∈ {0x1.8618620000000p-5} + [31] ∈ {0x1.6c16c20000000p-5} + G13 ∈ {0} + G14 ∈ {0} + G15 ∈ {0} + G16 ∈ {0} + G17 ∈ {0} + G18 ∈ {0} + G19 ∈ {0} +[value] computing for function F4 <- main. + Called from tests/float/s.i:260. +[value] computing for function F1 <- F4 <- main. + Called from tests/float/s.i:230. +tests/float/s.i:230:[kernel] warning: Neither code nor specification for function F1, generating default assigns from the prototype +[value] using specification for function F1 +[value] Done for function F1 +tests/float/s.i:231:[value] warning: accessing out of bounds index. assert 0 ≤ V4; +tests/float/s.i:231:[value] warning: accessing out of bounds index. assert V4 < 64; +[value] computing for function F2 <- F4 <- main. + Called from tests/float/s.i:233. +tests/float/s.i:233:[kernel] warning: Neither code nor specification for function F2, generating default assigns from the prototype +[value] using specification for function F2 +[value] Done for function F2 +tests/float/s.i:238:[value] warning: accessing out of bounds index. assert 0 ≤ V5; +tests/float/s.i:238:[value] warning: accessing out of bounds index. assert V5 < 64; +[value] computing for function F2 <- F4 <- main. + Called from tests/float/s.i:241. +[value] Done for function F2 +tests/float/s.i:242:[value] warning: accessing out of bounds index. assert 0 ≤ V6; +tests/float/s.i:242:[value] warning: accessing out of bounds index. assert V6 < 64; +[value] computing for function F3 <- F4 <- main. + Called from tests/float/s.i:244. +tests/float/s.i:244:[kernel] warning: Neither code nor specification for function F3, generating default assigns from the prototype +[value] using specification for function F3 +[value] Done for function F3 +tests/float/s.i:245:[value] warning: accessing out of bounds index. assert 0 ≤ V7; +tests/float/s.i:245:[value] warning: accessing out of bounds index. assert V7 < 32; +[value] Recording results for F4 +[value] Done for function F4 +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function F4: + V1 ∈ {0} + V2 ∈ [-0x1.a4cfc20000000p-3 .. 0x1.fcb5d00000000p0] + V3 ∈ [-0x1.fec1fc0000000p-1 .. -0x1.f3f3f40000000p-1] + V4 ∈ [0..63] + V5 ∈ [0..63] + V6 ∈ [0..63] + V7 ∈ [0..31] + G14 ∈ [0x1.3e68360000000p-10 .. 0x1.8618580000000p-7] + G15 ∈ [-0x1.a5529a0000000p-3 .. 0x1.fd53fe0000000p0] + G16 ∈ [0x1.c6a7f00000000p-4 .. 0x1.0000000000000p1] + G17 ∈ [0x1.6c16c20000000p-5 .. 0x1.5555560000000p-1] + G18 ∈ [0x1.f9f9fa0000000p-1 .. 0x1.ff60fe0000000p-1] + G19 ∈ [0x1.176b480000000p-13 .. 0x1.859f320000000p-6] +[value:final-states] Values at end of function main: + V8 ∈ {0} + G14 ∈ [0x1.3e68360000000p-10 .. 0x1.8618580000000p-7] + G15 ∈ [-0x1.a5529a0000000p-3 .. 0x1.fd53fe0000000p0] + G16 ∈ [0x1.c6a7f00000000p-4 .. 0x1.0000000000000p1] + G17 ∈ [0x1.6c16c20000000p-5 .. 0x1.5555560000000p-1] + G18 ∈ [0x1.f9f9fa0000000p-1 .. 0x1.ff60fe0000000p-1] + G19 ∈ [0x1.176b480000000p-13 .. 0x1.859f320000000p-6] +[from] Computing for function F4 +[from] Computing for function F1 <-F4 +[from] Done for function F1 +[from] Computing for function F2 <-F4 +[from] Done for function F2 +[from] Computing for function F3 <-F4 +[from] Done for function F3 +[from] Done for function F4 +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function F1: + \result FROM G1 +[from] Function F2: + \result FROM G2 +[from] Function F3: + \result FROM G4 +[from] Function F4: + G14 FROM G3; G10[0..63]; G13 + G15 FROM G11[0..63]; G13 + G16 FROM G9[0..63]; G13 + G17 FROM G12[0..31]; G13 + G18 FROM G3; G10[0..63]; G13 + G19 FROM G3; G9[0..63]; G10[0..63]; G13 +[from] Function main: + G14 FROM G3; G10[0..63]; G13 + G15 FROM G11[0..63]; G13 + G16 FROM G9[0..63]; G13 + G17 FROM G12[0..31]; G13 + G18 FROM G3; G10[0..63]; G13 + G19 FROM G3; G9[0..63]; G10[0..63]; G13 + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function F4: + V1; V2; V3; V4; V5; V6; V7; G14; G15; G16; G17; G18; G19 +[inout] Inputs for function F4: + G3; G9[0..63]; G10[0..63]; G11[0..63]; G12[0..31]; G13; G14; G15; G16; G18 +[inout] Out (internal) for function main: + V8; G14; G15; G16; G17; G18; G19 +[inout] Inputs for function main: + G3; G9[0..63]; G10[0..63]; G11[0..63]; G12[0..31]; G13; G14; G15; G16; G18 diff --git a/tests/float/oracle_symblocs/some.0.err.oracle b/tests/float/oracle_symblocs/some.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/float/oracle_symblocs/some.0.res.oracle b/tests/float/oracle_symblocs/some.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..6a7bcd98a9034059089939ffa23006ff0061bbe7 --- /dev/null +++ b/tests/float/oracle_symblocs/some.0.res.oracle @@ -0,0 +1,75 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/float/some.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + t[0] ∈ {1.0000000000000000} + [1..54] ∈ {0} + y ∈ {1.0000000000000000*2^-1} +[value] Semantic level unrolling superposing up to 10 states +[value] Semantic level unrolling superposing up to 20 states +[value] Semantic level unrolling superposing up to 30 states +[value] Semantic level unrolling superposing up to 40 states +[value] Semantic level unrolling superposing up to 50 states +[value] DUMPING STATE of file tests/float/some.c line 16 + t[0] ∈ {1.0000000000000000} + [1] ∈ {1.5000000000000000} + [2] ∈ {1.7500000000000000} + [3] ∈ {1.8750000000000000} + [4] ∈ {1.9375000000000000} + [5] ∈ {1.9687500000000000} + [6] ∈ {1.9843750000000000} + [7] ∈ {1.9921875000000000} + [8] ∈ {1.9960937500000000} + [9] ∈ {1.9980468750000000} + [10] ∈ {1.9990234375000000} + [11] ∈ {1.9995117187500000} + [12] ∈ {1.9997558593750000} + [13] ∈ {1.9998779296875000} + [14] ∈ {1.9999389648437500} + [15] ∈ {1.9999694824218750} + [16] ∈ {1.9999847412109375} + [17] ∈ {1.9999923706054688} + [18] ∈ {1.9999961853027344} + [19] ∈ {1.9999980926513672} + [20] ∈ {1.9999990463256836} + [21] ∈ {1.9999995231628418} + [22] ∈ {1.9999997615814209} + [23] ∈ {1.9999998807907104} + [24] ∈ {1.9999999403953552} + [25] ∈ {1.9999999701976776} + [26] ∈ {1.9999999850988388} + [27] ∈ {1.9999999925494194} + [28] ∈ {1.9999999962747097} + [29] ∈ {1.9999999981373549} + [30] ∈ {1.9999999990686774} + [31] ∈ {1.9999999995343387} + [32] ∈ {1.9999999997671694} + [33] ∈ {1.9999999998835847} + [34] ∈ {1.9999999999417923} + [35] ∈ {1.9999999999708962} + [36] ∈ {1.9999999999854481} + [37] ∈ {1.9999999999927240} + [38] ∈ {1.9999999999963620} + [39] ∈ {1.9999999999981810} + [40] ∈ {1.9999999999990905} + [41] ∈ {1.9999999999995453} + [42] ∈ {1.9999999999997726} + [43] ∈ {1.9999999999998863} + [44] ∈ {1.9999999999999432} + [45] ∈ {1.9999999999999716} + [46] ∈ {1.9999999999999858} + [47] ∈ {1.9999999999999929} + [48] ∈ {1.9999999999999964} + [49] ∈ {1.9999999999999982} + [50] ∈ {1.9999999999999991} + [51] ∈ {1.9999999999999996} + [52] ∈ {1.9999999999999998} + [53..54] ∈ {2.0000000000000000} + y ∈ {1.0000000000000000*2^-55} + i ∈ {55} + =END OF DUMP== +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== diff --git a/tests/float/oracle_symblocs/some.1.err.oracle b/tests/float/oracle_symblocs/some.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/float/oracle_symblocs/some.1.res.oracle b/tests/float/oracle_symblocs/some.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..93cff5497130e6128e77d7947349c626dc193bdc --- /dev/null +++ b/tests/float/oracle_symblocs/some.1.res.oracle @@ -0,0 +1,41 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/float/some.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + t[0] ∈ {1.0000000000000000} + [1..25] ∈ {0} + y ∈ {1.0000000000000000*2^-1} +[value] DUMPING STATE of file tests/float/some.c line 16 + t[0] ∈ {1.0000000000000000} + [1] ∈ {1.5000000000000000} + [2] ∈ {1.7500000000000000} + [3] ∈ {1.8750000000000000} + [4] ∈ {1.9375000000000000} + [5] ∈ {1.9687500000000000} + [6] ∈ {1.9843750000000000} + [7] ∈ {1.9921875000000000} + [8] ∈ {1.9960937500000000} + [9] ∈ {1.9980468750000000} + [10] ∈ {1.9990234375000000} + [11] ∈ {1.9995117187500000} + [12] ∈ {1.9997558593750000} + [13] ∈ {1.9998779296875000} + [14] ∈ {1.9999389648437500} + [15] ∈ {1.9999694824218750} + [16] ∈ {1.9999847412109375} + [17] ∈ {1.9999923706054688} + [18] ∈ {1.9999961853027344} + [19] ∈ {1.9999980926513672} + [20] ∈ {1.9999990463256836} + [21] ∈ {1.9999995231628418} + [22] ∈ {1.9999997615814209} + [23] ∈ {1.9999998807907104} + [24..25] ∈ {2.0000000000000000} + y ∈ {1.0000000000000000*2^-26} + i ∈ {26} + =END OF DUMP== +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== diff --git a/tests/float/oracle_symblocs/sqrt.0.err.oracle b/tests/float/oracle_symblocs/sqrt.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/float/oracle_symblocs/sqrt.0.res.oracle b/tests/float/oracle_symblocs/sqrt.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..a7256120cb5b7f7de542fa4deb383b4792480808 --- /dev/null +++ b/tests/float/oracle_symblocs/sqrt.0.res.oracle @@ -0,0 +1,54 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/float/sqrt.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +tests/float/sqrt.i:12:[value] assertion got status valid. +tests/float/sqrt.i:14:[value] assertion got status valid. +[value] DUMPING STATE of file tests/float/sqrt.i line 19 + k ∈ UNINITIALIZED + i ∈ {-0.} + j ∈ {-0.} + r ∈ UNINITIALIZED + p ∈ {{ (unsigned long long *)&j }} + c[0..7] ∈ UNINITIALIZED + =END OF DUMP== +[value] DUMPING STATE of file tests/float/sqrt.i line 23 + k ∈ UNINITIALIZED + i ∈ {-0.} + j ∈ {-0.} + r ∈ {-0x8000000000000000} + p ∈ {{ (unsigned long long *)&j }} + c[0..7] ∈ UNINITIALIZED + =END OF DUMP== +[value] Called Frama_C_show_each_long_long({-0x8000000000000000}) +[value] Called Frama_C_show_each_double({-0.}) +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +tests/float/sqrt.i:11:[kernel] warning: Neither code nor specification for function Frama_C_sqrt, generating default assigns from the prototype +[value:final-states] Values at end of function main: + k ∈ {8} + i ∈ {-0.} + j ∈ {-0.} + r ∈ {-0x8000000000000000} + p ∈ {{ (unsigned long long *)&j }} + c[0..6] ∈ {0} + [7] ∈ {128} +[from] Computing for function main +[from] Computing for function Frama_C_sqrt <-main +[from] Done for function Frama_C_sqrt +[from] Computing for function Frama_C_dump_each <-main +[from] Done for function Frama_C_dump_each +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + k; i; j; r; p; c[0..7] +[inout] Inputs for function main: + \nothing diff --git a/tests/float/oracle_symblocs/sqrt.1.err.oracle b/tests/float/oracle_symblocs/sqrt.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/float/oracle_symblocs/sqrt.1.res.oracle b/tests/float/oracle_symblocs/sqrt.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..22d92c0b00753eccfe05c274c1e711c756f7f6bc --- /dev/null +++ b/tests/float/oracle_symblocs/sqrt.1.res.oracle @@ -0,0 +1,54 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/float/sqrt.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +tests/float/sqrt.i:12:[value] assertion got status valid. +tests/float/sqrt.i:14:[value] assertion got status valid. +[value] DUMPING STATE of file tests/float/sqrt.i line 19 + k ∈ UNINITIALIZED + i ∈ {-0.} + j ∈ {-0.} + r ∈ UNINITIALIZED + p ∈ {{ (unsigned long long *)&j }} + c[0..7] ∈ UNINITIALIZED + =END OF DUMP== +[value] DUMPING STATE of file tests/float/sqrt.i line 23 + k ∈ UNINITIALIZED + i ∈ {-0.} + j ∈ {-0.} + r ∈ {-0x8000000000000000} + p ∈ {{ (unsigned long long *)&j }} + c[0..7] ∈ UNINITIALIZED + =END OF DUMP== +[value] Called Frama_C_show_each_long_long({-0x8000000000000000}) +[value] Called Frama_C_show_each_double({-0.}) +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +tests/float/sqrt.i:11:[kernel] warning: Neither code nor specification for function Frama_C_sqrt, generating default assigns from the prototype +[value:final-states] Values at end of function main: + k ∈ {8} + i ∈ {-0.} + j ∈ {-0.} + r ∈ {-0x8000000000000000} + p ∈ {{ (unsigned long long *)&j }} + c[0] ∈ {128} + [1..7] ∈ {0} +[from] Computing for function main +[from] Computing for function Frama_C_sqrt <-main +[from] Done for function Frama_C_sqrt +[from] Computing for function Frama_C_dump_each <-main +[from] Done for function Frama_C_dump_each +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + k; i; j; r; p; c[0..7] +[inout] Inputs for function main: + \nothing diff --git a/tests/float/oracle_symblocs/uninit.err.oracle b/tests/float/oracle_symblocs/uninit.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/float/oracle_symblocs/uninit.res.oracle b/tests/float/oracle_symblocs/uninit.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..839e7049794643b988210f8edc4a84766d1b0e40 --- /dev/null +++ b/tests/float/oracle_symblocs/uninit.res.oracle @@ -0,0 +1,26 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/float/uninit.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +tests/float/uninit.i:5:[value] warning: accessing uninitialized left-value. assert \initialized(&f); +[value] Recording results for main +[value] done for function main +tests/float/uninit.i:5:[value] assertion 'Value,initialisation' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + f ∈ UNINITIALIZED + __retres ∈ {0} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + f; __retres +[inout] Inputs for function main: + \nothing diff --git a/tests/float/oracle_symblocs/zero.err.oracle b/tests/float/oracle_symblocs/zero.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/float/oracle_symblocs/zero.res.oracle b/tests/float/oracle_symblocs/zero.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..35a9c8286d4d813d03110f2c07cf3ca2657d9100 --- /dev/null +++ b/tests/float/oracle_symblocs/zero.res.oracle @@ -0,0 +1,63 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/float/zero.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +tests/float/zero.i:5:[value] warning: function main: precondition got status unknown. +[value] Called Frama_C_show_each({1}) +[value] Called Frama_C_show_each({1}) +[value] Called Frama_C_show_each_1([1.40129846432e-45 .. 3.40282346639e+38]) +[value] Called Frama_C_show_each_2([-0. .. 0.]) +[value] Called Frama_C_show_each_3([-3.40282346639e+38 .. -1.40129846432e-45]) +[value] Called Frama_C_show_each_4([-0. .. 0.]) +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + f ∈ {-0.} + i1 ∈ {1} + i2 ∈ {1} + i3 ∈ {0} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + f; i1; i2; i3 +[inout] Inputs for function main: + \nothing +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] Called Frama_C_show_each({1}) +[value] Called Frama_C_show_each({1}) +[value] Called Frama_C_show_each_1([-0. .. 3.40282346639e+38]) +[value] Called Frama_C_show_each_2([-0. .. 0.]) +[value] Called Frama_C_show_each_3([-3.40282346639e+38 .. 0.]) +[value] Called Frama_C_show_each_4([-0. .. 0.]) +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + f ∈ {-0.} + i1 ∈ {1} + i2 ∈ {1} + i3 ∈ {0} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + f; i1; i2; i3 +[inout] Inputs for function main: + \nothing diff --git a/tests/idct/idct.c b/tests/idct/idct.c index 6f0e2ef77046f5ae8b8c5c7508b6805c878aeeb4..dc3e44d67afe8aeef9991e510f25b2f4a02ae71b 100644 --- a/tests/idct/idct.c +++ b/tests/idct/idct.c @@ -1,4 +1,4 @@ -/* run.config +/* run.config* GCC: DONTRUN: */ diff --git a/tests/idct/oracle/ieee_1180_1990.res.oracle b/tests/idct/oracle/ieee_1180_1990.res.oracle index f2ee39b86261b55ac7232ab17e441549bf126525..b293af15f8ce244daee443e9c3fb0d29653ff883 100644 --- a/tests/idct/oracle/ieee_1180_1990.res.oracle +++ b/tests/idct/oracle/ieee_1180_1990.res.oracle @@ -888,7 +888,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'tmpfile' -------------------------------------------------------------------------------- -[ Extern ] Post-condition (file share/libc/stdio.h, line 74) +[ Extern ] Post-condition (file share/libc/stdio.h, line 75) ensures \result ≡ \null ∨ (\valid(\result) ∧ \fresh{Old, Here}(\result,sizeof(FILE))) @@ -904,13 +904,13 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'tmpnam' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 78) +[ Extern ] Assigns (file share/libc/stdio.h, line 79) assigns \result, *(s+(..)); Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 78) +[ Extern ] Froms (file share/libc/stdio.h, line 79) assigns \result \from *(s+(..)); Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 79) +[ Extern ] Froms (file share/libc/stdio.h, line 80) assigns *(s+(..)) \from \nothing; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -921,13 +921,13 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fclose' -------------------------------------------------------------------------------- -[ Extern ] Post-condition (file share/libc/stdio.h, line 87) +[ Extern ] Post-condition (file share/libc/stdio.h, line 88) ensures \result ≡ 0 ∨ \result ≡ -1 Unverifiable but considered Valid. [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 86) +[ Extern ] Froms (file share/libc/stdio.h, line 87) assigns \result \from stream, stream->__fc_stdio_id; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -938,13 +938,13 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fflush' -------------------------------------------------------------------------------- -[ Extern ] Post-condition (file share/libc/stdio.h, line 95) +[ Extern ] Post-condition (file share/libc/stdio.h, line 96) ensures \result ≡ 0 ∨ \result ≡ -1 Unverifiable but considered Valid. [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 94) +[ Extern ] Froms (file share/libc/stdio.h, line 95) assigns \result \from stream, stream->__fc_stdio_id; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -955,14 +955,14 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fopen' -------------------------------------------------------------------------------- -[ Extern ] Post-condition (file share/libc/stdio.h, line 106) +[ Extern ] Post-condition (file share/libc/stdio.h, line 107) ensures \result ≡ \null ∨ \subset(\result, &__fc_fopen[0 .. 512-1]) Unverifiable but considered Valid. [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 104) +[ Extern ] Froms (file share/libc/stdio.h, line 105) assigns \result \from *(filename+(..)), *(mode+(..)), __p_fc_fopen; Unverifiable but considered Valid. @@ -974,7 +974,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fdopen' -------------------------------------------------------------------------------- -[ Extern ] Post-condition (file share/libc/stdio.h, line 113) +[ Extern ] Post-condition (file share/libc/stdio.h, line 114) ensures \result ≡ \null ∨ (\valid(\result) ∧ \fresh{Old, Here}(\result,sizeof(FILE))) @@ -982,7 +982,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 112) +[ Extern ] Froms (file share/libc/stdio.h, line 113) assigns \result \from fildes, *(mode+(..)); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -993,10 +993,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'freopen' -------------------------------------------------------------------------------- -[ Extern ] Post-condition (file share/libc/stdio.h, line 119) +[ Extern ] Post-condition (file share/libc/stdio.h, line 120) ensures \result ≡ \null ∨ \result ≡ \old(stream) Unverifiable but considered Valid. -[ Extern ] Assigns (file share/libc/stdio.h, line 118) +[ Extern ] Assigns (file share/libc/stdio.h, line 119) assigns *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1007,10 +1007,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'setbuf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 124) +[ Extern ] Assigns (file share/libc/stdio.h, line 125) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 124) +[ Extern ] Froms (file share/libc/stdio.h, line 125) assigns *stream \from buf; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1021,10 +1021,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'setvbuf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 128) +[ Extern ] Assigns (file share/libc/stdio.h, line 129) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 128) +[ Extern ] Froms (file share/libc/stdio.h, line 129) assigns *stream \from buf, mode, size; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1035,10 +1035,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fprintf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 133) +[ Extern ] Assigns (file share/libc/stdio.h, line 134) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 133) +[ Extern ] Froms (file share/libc/stdio.h, line 134) assigns *stream \from stream->__fc_stdio_id; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1049,10 +1049,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fscanf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 138) +[ Extern ] Assigns (file share/libc/stdio.h, line 139) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 138) +[ Extern ] Froms (file share/libc/stdio.h, line 139) assigns *stream \from stream->__fc_stdio_id; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1063,10 +1063,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'printf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 144) +[ Extern ] Assigns (file share/libc/stdio.h, line 145) assigns *__fc_stdout; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 144) +[ Extern ] Froms (file share/libc/stdio.h, line 145) assigns *__fc_stdout \from *(format+(..)); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1077,7 +1077,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'scanf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 149) +[ Extern ] Assigns (file share/libc/stdio.h, line 150) assigns *__fc_stdin; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1088,7 +1088,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'snprintf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 154) +[ Extern ] Assigns (file share/libc/stdio.h, line 155) assigns *(s+(0 .. n-1)); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1099,7 +1099,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'sprintf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 160) +[ Extern ] Assigns (file share/libc/stdio.h, line 161) assigns *(s+(0 ..)); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1110,10 +1110,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'vfprintf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 170) +[ Extern ] Assigns (file share/libc/stdio.h, line 171) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 170) +[ Extern ] Froms (file share/libc/stdio.h, line 171) assigns *stream \from *(format+(..)), arg; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1124,10 +1124,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'vfscanf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 175) +[ Extern ] Assigns (file share/libc/stdio.h, line 176) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 175) +[ Extern ] Froms (file share/libc/stdio.h, line 176) assigns *stream \from *(format+(..)), *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1138,10 +1138,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'vprintf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 181) +[ Extern ] Assigns (file share/libc/stdio.h, line 182) assigns *__fc_stdout; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 181) +[ Extern ] Froms (file share/libc/stdio.h, line 182) assigns *__fc_stdout \from arg; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1152,10 +1152,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'vscanf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 185) +[ Extern ] Assigns (file share/libc/stdio.h, line 186) assigns *__fc_stdin; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 185) +[ Extern ] Froms (file share/libc/stdio.h, line 186) assigns *__fc_stdin \from *(format+(..)); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1166,10 +1166,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'vsnprintf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 190) +[ Extern ] Assigns (file share/libc/stdio.h, line 191) assigns *(s+(0 .. n-1)); Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 190) +[ Extern ] Froms (file share/libc/stdio.h, line 191) assigns *(s+(0 .. n-1)) \from *(format+(..)), arg; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1180,10 +1180,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'vsprintf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 196) +[ Extern ] Assigns (file share/libc/stdio.h, line 197) assigns *(s+(0 ..)); Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 196) +[ Extern ] Froms (file share/libc/stdio.h, line 197) assigns *(s+(0 ..)) \from *(format+(..)), arg; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1194,7 +1194,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fgetc' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 207) +[ Extern ] Assigns (file share/libc/stdio.h, line 208) assigns *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1205,19 +1205,19 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fgets' -------------------------------------------------------------------------------- -[ Extern ] Post-condition (file share/libc/stdio.h, line 213) +[ Extern ] Post-condition (file share/libc/stdio.h, line 214) ensures \result ≡ \null ∨ \result ≡ \old(s) Unverifiable but considered Valid. -[ Extern ] Assigns (file share/libc/stdio.h, line 211) +[ Extern ] Assigns (file share/libc/stdio.h, line 212) assigns *(s+(0 .. n-1)), *stream, \result; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 211) +[ Extern ] Froms (file share/libc/stdio.h, line 212) assigns *(s+(0 .. n-1)) \from *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 211) +[ Extern ] Froms (file share/libc/stdio.h, line 212) assigns *stream \from *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 212) +[ Extern ] Froms (file share/libc/stdio.h, line 213) assigns \result \from s, n, *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1228,7 +1228,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fputc' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 218) +[ Extern ] Assigns (file share/libc/stdio.h, line 219) assigns *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1239,10 +1239,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fputs' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 221) +[ Extern ] Assigns (file share/libc/stdio.h, line 222) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 221) +[ Extern ] Froms (file share/libc/stdio.h, line 222) assigns *stream \from *(s+(..)); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1253,13 +1253,13 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'getc' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 225) +[ Extern ] Assigns (file share/libc/stdio.h, line 226) assigns \result, *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 225) +[ Extern ] Froms (file share/libc/stdio.h, line 226) assigns \result \from *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 225) +[ Extern ] Froms (file share/libc/stdio.h, line 226) assigns *stream \from *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1273,7 +1273,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 228) +[ Extern ] Froms (file share/libc/stdio.h, line 229) assigns \result \from *__fc_stdin; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1284,16 +1284,16 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'gets' -------------------------------------------------------------------------------- -[ Extern ] Post-condition (file share/libc/stdio.h, line 233) +[ Extern ] Post-condition (file share/libc/stdio.h, line 234) ensures \result ≡ \old(s) ∨ \result ≡ \null Unverifiable but considered Valid. -[ Extern ] Assigns (file share/libc/stdio.h, line 231) +[ Extern ] Assigns (file share/libc/stdio.h, line 232) assigns *(s+(..)), \result; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 231) +[ Extern ] Froms (file share/libc/stdio.h, line 232) assigns *(s+(..)) \from *__fc_stdin; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 232) +[ Extern ] Froms (file share/libc/stdio.h, line 233) assigns \result \from s, __fc_stdin; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1304,10 +1304,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'putc' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 237) +[ Extern ] Assigns (file share/libc/stdio.h, line 238) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 237) +[ Extern ] Froms (file share/libc/stdio.h, line 238) assigns *stream \from c; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1318,10 +1318,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'putchar' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 240) +[ Extern ] Assigns (file share/libc/stdio.h, line 241) assigns *__fc_stdout; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 240) +[ Extern ] Froms (file share/libc/stdio.h, line 241) assigns *__fc_stdout \from c; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1332,10 +1332,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'puts' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 243) +[ Extern ] Assigns (file share/libc/stdio.h, line 244) assigns *__fc_stdout; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 243) +[ Extern ] Froms (file share/libc/stdio.h, line 244) assigns *__fc_stdout \from *(s+(..)); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1346,10 +1346,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'ungetc' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 246) +[ Extern ] Assigns (file share/libc/stdio.h, line 247) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 246) +[ Extern ] Froms (file share/libc/stdio.h, line 247) assigns *stream \from c; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1360,21 +1360,21 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fread' -------------------------------------------------------------------------------- -[ Extern ] Post-condition (file share/libc/stdio.h, line 254) +[ Extern ] Post-condition (file share/libc/stdio.h, line 255) ensures \result ≤ \old(nmemb) Unverifiable but considered Valid. -[ Extern ] Post-condition (file share/libc/stdio.h, line 255) +[ Extern ] Post-condition (file share/libc/stdio.h, line 256) ensures \initialized((char *)\old(ptr)+(0 .. \result*\old(size)-1)) Unverifiable but considered Valid. -[ Extern ] Assigns (file share/libc/stdio.h, line 252) +[ Extern ] Assigns (file share/libc/stdio.h, line 253) assigns *((char *)ptr+(0 .. nmemb*size-1)), \result; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 252) +[ Extern ] Froms (file share/libc/stdio.h, line 253) assigns *((char *)ptr+(0 .. nmemb*size-1)) \from size, nmemb, *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 253) +[ Extern ] Froms (file share/libc/stdio.h, line 254) assigns \result \from size, *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1385,16 +1385,16 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fwrite' -------------------------------------------------------------------------------- -[ Extern ] Post-condition (file share/libc/stdio.h, line 266) +[ Extern ] Post-condition (file share/libc/stdio.h, line 267) ensures \result ≤ \old(nmemb) Unverifiable but considered Valid. -[ Extern ] Assigns (file share/libc/stdio.h, line 265) +[ Extern ] Assigns (file share/libc/stdio.h, line 266) assigns *stream, \result; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 265) +[ Extern ] Froms (file share/libc/stdio.h, line 266) assigns *stream \from *((char *)ptr+(0 .. nmemb*size-1)); Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 265) +[ Extern ] Froms (file share/libc/stdio.h, line 266) assigns \result \from *((char *)ptr+(0 .. nmemb*size-1)); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1405,10 +1405,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fgetpos' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 273) +[ Extern ] Assigns (file share/libc/stdio.h, line 274) assigns *pos; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 273) +[ Extern ] Froms (file share/libc/stdio.h, line 274) assigns *pos \from *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1419,10 +1419,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fseek' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 277) +[ Extern ] Assigns (file share/libc/stdio.h, line 278) assigns *stream, __FC_errno; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 277) +[ Extern ] Froms (file share/libc/stdio.h, line 278) assigns *stream \from offset, whence; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1433,10 +1433,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fsetpos' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 281) +[ Extern ] Assigns (file share/libc/stdio.h, line 282) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 281) +[ Extern ] Froms (file share/libc/stdio.h, line 282) assigns *stream \from *pos; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1447,13 +1447,13 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'ftell' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 284) +[ Extern ] Assigns (file share/libc/stdio.h, line 285) assigns \result, __FC_errno; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 284) +[ Extern ] Froms (file share/libc/stdio.h, line 285) assigns \result \from *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 284) +[ Extern ] Froms (file share/libc/stdio.h, line 285) assigns __FC_errno \from *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1464,10 +1464,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'rewind' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 287) +[ Extern ] Assigns (file share/libc/stdio.h, line 288) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 287) +[ Extern ] Froms (file share/libc/stdio.h, line 288) assigns *stream \from \nothing; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1478,10 +1478,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'clearerr' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 290) +[ Extern ] Assigns (file share/libc/stdio.h, line 291) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 290) +[ Extern ] Froms (file share/libc/stdio.h, line 291) assigns *stream \from \nothing; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1495,7 +1495,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 293) +[ Extern ] Froms (file share/libc/stdio.h, line 294) assigns \result \from *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1509,7 +1509,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 296) +[ Extern ] Froms (file share/libc/stdio.h, line 297) assigns \result \from *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1520,10 +1520,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'flockfile' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 299) +[ Extern ] Assigns (file share/libc/stdio.h, line 300) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 299) +[ Extern ] Froms (file share/libc/stdio.h, line 300) assigns *stream \from \nothing; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1534,10 +1534,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'funlockfile' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 302) +[ Extern ] Assigns (file share/libc/stdio.h, line 303) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 302) +[ Extern ] Froms (file share/libc/stdio.h, line 303) assigns *stream \from \nothing; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1548,13 +1548,13 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'ftrylockfile' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 305) +[ Extern ] Assigns (file share/libc/stdio.h, line 306) assigns \result, *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 305) +[ Extern ] Froms (file share/libc/stdio.h, line 306) assigns \result \from \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 305) +[ Extern ] Froms (file share/libc/stdio.h, line 306) assigns *stream \from \nothing; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1568,7 +1568,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 308) +[ Extern ] Froms (file share/libc/stdio.h, line 309) assigns \result \from *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1579,10 +1579,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'perror' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 311) +[ Extern ] Assigns (file share/libc/stdio.h, line 312) assigns __fc_stdout; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 311) +[ Extern ] Froms (file share/libc/stdio.h, line 312) assigns __fc_stdout \from __FC_errno, *(s+(..)); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1593,13 +1593,13 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'getc_unlocked' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 314) +[ Extern ] Assigns (file share/libc/stdio.h, line 315) assigns \result, *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 314) +[ Extern ] Froms (file share/libc/stdio.h, line 315) assigns \result \from *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 314) +[ Extern ] Froms (file share/libc/stdio.h, line 315) assigns *stream \from *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1613,7 +1613,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 316) +[ Extern ] Froms (file share/libc/stdio.h, line 317) assigns \result \from *__fc_stdin; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1624,10 +1624,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'putc_unlocked' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 318) +[ Extern ] Assigns (file share/libc/stdio.h, line 319) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 318) +[ Extern ] Froms (file share/libc/stdio.h, line 319) assigns *stream \from c; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1638,10 +1638,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'putchar_unlocked' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 320) +[ Extern ] Assigns (file share/libc/stdio.h, line 321) assigns *__fc_stdout; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 320) +[ Extern ] Froms (file share/libc/stdio.h, line 321) assigns *__fc_stdout \from c; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1652,10 +1652,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'clearerr_unlocked' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 323) +[ Extern ] Assigns (file share/libc/stdio.h, line 324) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 323) +[ Extern ] Froms (file share/libc/stdio.h, line 324) assigns *stream \from \nothing; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1669,7 +1669,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 325) +[ Extern ] Froms (file share/libc/stdio.h, line 326) assigns \result \from *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1683,7 +1683,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 327) +[ Extern ] Froms (file share/libc/stdio.h, line 328) assigns \result \from *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1697,7 +1697,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 329) +[ Extern ] Froms (file share/libc/stdio.h, line 330) assigns \result \from *stream; Unverifiable but considered Valid. [ Valid ] Default behavior diff --git a/tests/idct/oracle_apron/idct.res.oracle b/tests/idct/oracle_apron/idct.res.oracle deleted file mode 100644 index 2bc949c6f940135146bb6a6fc180d78dba3392da..0000000000000000000000000000000000000000 --- a/tests/idct/oracle_apron/idct.res.oracle +++ /dev/null @@ -1,6 +0,0 @@ -[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/idct/idct.c (with preprocessing) -tests/idct/idct.c:91:[kernel] warning: Floating-point constant 3.14159265358979323846 is not represented exactly. Will use 0x1.921fb54442d18p1. See documentation for option -warn-decimal-float -[kernel] user error: cannot find entry point `main'. - Please use option `-main' for specifying a valid entry point. -[kernel] Frama-C aborted: invalid user input. diff --git a/tests/idct/oracle_apron/ieee_1180_1990.res.oracle b/tests/idct/oracle_apron/ieee_1180_1990.res.oracle index 21706d2af5375927c363a718cdae98eb1a582955..9197585098826f553fd5be1cf9f04f07725e82e9 100644 --- a/tests/idct/oracle_apron/ieee_1180_1990.res.oracle +++ b/tests/idct/oracle_apron/ieee_1180_1990.res.oracle @@ -1160,7 +1160,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'tmpfile' -------------------------------------------------------------------------------- -[ Extern ] Post-condition (file share/libc/stdio.h, line 74) +[ Extern ] Post-condition (file share/libc/stdio.h, line 75) ensures \result ≡ \null ∨ (\valid(\result) ∧ \fresh{Old, Here}(\result,sizeof(FILE))) @@ -1176,13 +1176,13 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'tmpnam' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 78) +[ Extern ] Assigns (file share/libc/stdio.h, line 79) assigns \result, *(s+(..)); Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 78) +[ Extern ] Froms (file share/libc/stdio.h, line 79) assigns \result \from *(s+(..)); Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 79) +[ Extern ] Froms (file share/libc/stdio.h, line 80) assigns *(s+(..)) \from \nothing; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1193,13 +1193,13 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fclose' -------------------------------------------------------------------------------- -[ Extern ] Post-condition (file share/libc/stdio.h, line 87) +[ Extern ] Post-condition (file share/libc/stdio.h, line 88) ensures \result ≡ 0 ∨ \result ≡ -1 Unverifiable but considered Valid. [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 86) +[ Extern ] Froms (file share/libc/stdio.h, line 87) assigns \result \from stream, stream->__fc_stdio_id; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1210,13 +1210,13 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fflush' -------------------------------------------------------------------------------- -[ Extern ] Post-condition (file share/libc/stdio.h, line 95) +[ Extern ] Post-condition (file share/libc/stdio.h, line 96) ensures \result ≡ 0 ∨ \result ≡ -1 Unverifiable but considered Valid. [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 94) +[ Extern ] Froms (file share/libc/stdio.h, line 95) assigns \result \from stream, stream->__fc_stdio_id; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1227,14 +1227,14 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fopen' -------------------------------------------------------------------------------- -[ Extern ] Post-condition (file share/libc/stdio.h, line 106) +[ Extern ] Post-condition (file share/libc/stdio.h, line 107) ensures \result ≡ \null ∨ \subset(\result, &__fc_fopen[0 .. 512-1]) Unverifiable but considered Valid. [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 104) +[ Extern ] Froms (file share/libc/stdio.h, line 105) assigns \result \from *(filename+(..)), *(mode+(..)), __p_fc_fopen; Unverifiable but considered Valid. @@ -1246,7 +1246,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fdopen' -------------------------------------------------------------------------------- -[ Extern ] Post-condition (file share/libc/stdio.h, line 113) +[ Extern ] Post-condition (file share/libc/stdio.h, line 114) ensures \result ≡ \null ∨ (\valid(\result) ∧ \fresh{Old, Here}(\result,sizeof(FILE))) @@ -1254,7 +1254,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 112) +[ Extern ] Froms (file share/libc/stdio.h, line 113) assigns \result \from fildes, *(mode+(..)); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1265,10 +1265,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'freopen' -------------------------------------------------------------------------------- -[ Extern ] Post-condition (file share/libc/stdio.h, line 119) +[ Extern ] Post-condition (file share/libc/stdio.h, line 120) ensures \result ≡ \null ∨ \result ≡ \old(stream) Unverifiable but considered Valid. -[ Extern ] Assigns (file share/libc/stdio.h, line 118) +[ Extern ] Assigns (file share/libc/stdio.h, line 119) assigns *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1279,10 +1279,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'setbuf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 124) +[ Extern ] Assigns (file share/libc/stdio.h, line 125) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 124) +[ Extern ] Froms (file share/libc/stdio.h, line 125) assigns *stream \from buf; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1293,10 +1293,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'setvbuf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 128) +[ Extern ] Assigns (file share/libc/stdio.h, line 129) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 128) +[ Extern ] Froms (file share/libc/stdio.h, line 129) assigns *stream \from buf, mode, size; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1307,10 +1307,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fprintf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 133) +[ Extern ] Assigns (file share/libc/stdio.h, line 134) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 133) +[ Extern ] Froms (file share/libc/stdio.h, line 134) assigns *stream \from stream->__fc_stdio_id; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1321,10 +1321,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fscanf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 138) +[ Extern ] Assigns (file share/libc/stdio.h, line 139) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 138) +[ Extern ] Froms (file share/libc/stdio.h, line 139) assigns *stream \from stream->__fc_stdio_id; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1335,10 +1335,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'printf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 144) +[ Extern ] Assigns (file share/libc/stdio.h, line 145) assigns *__fc_stdout; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 144) +[ Extern ] Froms (file share/libc/stdio.h, line 145) assigns *__fc_stdout \from *(format+(..)); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1349,7 +1349,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'scanf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 149) +[ Extern ] Assigns (file share/libc/stdio.h, line 150) assigns *__fc_stdin; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1360,7 +1360,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'snprintf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 154) +[ Extern ] Assigns (file share/libc/stdio.h, line 155) assigns *(s+(0 .. n-1)); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1371,7 +1371,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'sprintf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 160) +[ Extern ] Assigns (file share/libc/stdio.h, line 161) assigns *(s+(0 ..)); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1382,10 +1382,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'vfprintf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 170) +[ Extern ] Assigns (file share/libc/stdio.h, line 171) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 170) +[ Extern ] Froms (file share/libc/stdio.h, line 171) assigns *stream \from *(format+(..)), arg; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1396,10 +1396,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'vfscanf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 175) +[ Extern ] Assigns (file share/libc/stdio.h, line 176) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 175) +[ Extern ] Froms (file share/libc/stdio.h, line 176) assigns *stream \from *(format+(..)), *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1410,10 +1410,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'vprintf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 181) +[ Extern ] Assigns (file share/libc/stdio.h, line 182) assigns *__fc_stdout; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 181) +[ Extern ] Froms (file share/libc/stdio.h, line 182) assigns *__fc_stdout \from arg; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1424,10 +1424,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'vscanf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 185) +[ Extern ] Assigns (file share/libc/stdio.h, line 186) assigns *__fc_stdin; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 185) +[ Extern ] Froms (file share/libc/stdio.h, line 186) assigns *__fc_stdin \from *(format+(..)); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1438,10 +1438,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'vsnprintf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 190) +[ Extern ] Assigns (file share/libc/stdio.h, line 191) assigns *(s+(0 .. n-1)); Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 190) +[ Extern ] Froms (file share/libc/stdio.h, line 191) assigns *(s+(0 .. n-1)) \from *(format+(..)), arg; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1452,10 +1452,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'vsprintf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 196) +[ Extern ] Assigns (file share/libc/stdio.h, line 197) assigns *(s+(0 ..)); Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 196) +[ Extern ] Froms (file share/libc/stdio.h, line 197) assigns *(s+(0 ..)) \from *(format+(..)), arg; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1466,7 +1466,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fgetc' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 207) +[ Extern ] Assigns (file share/libc/stdio.h, line 208) assigns *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1477,19 +1477,19 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fgets' -------------------------------------------------------------------------------- -[ Extern ] Post-condition (file share/libc/stdio.h, line 213) +[ Extern ] Post-condition (file share/libc/stdio.h, line 214) ensures \result ≡ \null ∨ \result ≡ \old(s) Unverifiable but considered Valid. -[ Extern ] Assigns (file share/libc/stdio.h, line 211) +[ Extern ] Assigns (file share/libc/stdio.h, line 212) assigns *(s+(0 .. n-1)), *stream, \result; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 211) +[ Extern ] Froms (file share/libc/stdio.h, line 212) assigns *(s+(0 .. n-1)) \from *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 211) +[ Extern ] Froms (file share/libc/stdio.h, line 212) assigns *stream \from *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 212) +[ Extern ] Froms (file share/libc/stdio.h, line 213) assigns \result \from s, n, *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1500,7 +1500,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fputc' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 218) +[ Extern ] Assigns (file share/libc/stdio.h, line 219) assigns *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1511,10 +1511,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fputs' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 221) +[ Extern ] Assigns (file share/libc/stdio.h, line 222) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 221) +[ Extern ] Froms (file share/libc/stdio.h, line 222) assigns *stream \from *(s+(..)); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1525,13 +1525,13 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'getc' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 225) +[ Extern ] Assigns (file share/libc/stdio.h, line 226) assigns \result, *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 225) +[ Extern ] Froms (file share/libc/stdio.h, line 226) assigns \result \from *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 225) +[ Extern ] Froms (file share/libc/stdio.h, line 226) assigns *stream \from *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1545,7 +1545,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 228) +[ Extern ] Froms (file share/libc/stdio.h, line 229) assigns \result \from *__fc_stdin; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1556,16 +1556,16 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'gets' -------------------------------------------------------------------------------- -[ Extern ] Post-condition (file share/libc/stdio.h, line 233) +[ Extern ] Post-condition (file share/libc/stdio.h, line 234) ensures \result ≡ \old(s) ∨ \result ≡ \null Unverifiable but considered Valid. -[ Extern ] Assigns (file share/libc/stdio.h, line 231) +[ Extern ] Assigns (file share/libc/stdio.h, line 232) assigns *(s+(..)), \result; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 231) +[ Extern ] Froms (file share/libc/stdio.h, line 232) assigns *(s+(..)) \from *__fc_stdin; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 232) +[ Extern ] Froms (file share/libc/stdio.h, line 233) assigns \result \from s, __fc_stdin; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1576,10 +1576,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'putc' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 237) +[ Extern ] Assigns (file share/libc/stdio.h, line 238) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 237) +[ Extern ] Froms (file share/libc/stdio.h, line 238) assigns *stream \from c; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1590,10 +1590,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'putchar' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 240) +[ Extern ] Assigns (file share/libc/stdio.h, line 241) assigns *__fc_stdout; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 240) +[ Extern ] Froms (file share/libc/stdio.h, line 241) assigns *__fc_stdout \from c; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1604,10 +1604,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'puts' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 243) +[ Extern ] Assigns (file share/libc/stdio.h, line 244) assigns *__fc_stdout; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 243) +[ Extern ] Froms (file share/libc/stdio.h, line 244) assigns *__fc_stdout \from *(s+(..)); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1618,10 +1618,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'ungetc' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 246) +[ Extern ] Assigns (file share/libc/stdio.h, line 247) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 246) +[ Extern ] Froms (file share/libc/stdio.h, line 247) assigns *stream \from c; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1632,21 +1632,21 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fread' -------------------------------------------------------------------------------- -[ Extern ] Post-condition (file share/libc/stdio.h, line 254) +[ Extern ] Post-condition (file share/libc/stdio.h, line 255) ensures \result ≤ \old(nmemb) Unverifiable but considered Valid. -[ Extern ] Post-condition (file share/libc/stdio.h, line 255) +[ Extern ] Post-condition (file share/libc/stdio.h, line 256) ensures \initialized((char *)\old(ptr)+(0 .. \result*\old(size)-1)) Unverifiable but considered Valid. -[ Extern ] Assigns (file share/libc/stdio.h, line 252) +[ Extern ] Assigns (file share/libc/stdio.h, line 253) assigns *((char *)ptr+(0 .. nmemb*size-1)), \result; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 252) +[ Extern ] Froms (file share/libc/stdio.h, line 253) assigns *((char *)ptr+(0 .. nmemb*size-1)) \from size, nmemb, *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 253) +[ Extern ] Froms (file share/libc/stdio.h, line 254) assigns \result \from size, *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1657,16 +1657,16 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fwrite' -------------------------------------------------------------------------------- -[ Extern ] Post-condition (file share/libc/stdio.h, line 266) +[ Extern ] Post-condition (file share/libc/stdio.h, line 267) ensures \result ≤ \old(nmemb) Unverifiable but considered Valid. -[ Extern ] Assigns (file share/libc/stdio.h, line 265) +[ Extern ] Assigns (file share/libc/stdio.h, line 266) assigns *stream, \result; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 265) +[ Extern ] Froms (file share/libc/stdio.h, line 266) assigns *stream \from *((char *)ptr+(0 .. nmemb*size-1)); Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 265) +[ Extern ] Froms (file share/libc/stdio.h, line 266) assigns \result \from *((char *)ptr+(0 .. nmemb*size-1)); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1677,10 +1677,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fgetpos' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 273) +[ Extern ] Assigns (file share/libc/stdio.h, line 274) assigns *pos; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 273) +[ Extern ] Froms (file share/libc/stdio.h, line 274) assigns *pos \from *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1691,10 +1691,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fseek' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 277) +[ Extern ] Assigns (file share/libc/stdio.h, line 278) assigns *stream, __FC_errno; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 277) +[ Extern ] Froms (file share/libc/stdio.h, line 278) assigns *stream \from offset, whence; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1705,10 +1705,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fsetpos' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 281) +[ Extern ] Assigns (file share/libc/stdio.h, line 282) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 281) +[ Extern ] Froms (file share/libc/stdio.h, line 282) assigns *stream \from *pos; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1719,13 +1719,13 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'ftell' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 284) +[ Extern ] Assigns (file share/libc/stdio.h, line 285) assigns \result, __FC_errno; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 284) +[ Extern ] Froms (file share/libc/stdio.h, line 285) assigns \result \from *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 284) +[ Extern ] Froms (file share/libc/stdio.h, line 285) assigns __FC_errno \from *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1736,10 +1736,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'rewind' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 287) +[ Extern ] Assigns (file share/libc/stdio.h, line 288) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 287) +[ Extern ] Froms (file share/libc/stdio.h, line 288) assigns *stream \from \nothing; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1750,10 +1750,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'clearerr' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 290) +[ Extern ] Assigns (file share/libc/stdio.h, line 291) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 290) +[ Extern ] Froms (file share/libc/stdio.h, line 291) assigns *stream \from \nothing; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1767,7 +1767,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 293) +[ Extern ] Froms (file share/libc/stdio.h, line 294) assigns \result \from *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1781,7 +1781,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 296) +[ Extern ] Froms (file share/libc/stdio.h, line 297) assigns \result \from *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1792,10 +1792,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'flockfile' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 299) +[ Extern ] Assigns (file share/libc/stdio.h, line 300) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 299) +[ Extern ] Froms (file share/libc/stdio.h, line 300) assigns *stream \from \nothing; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1806,10 +1806,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'funlockfile' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 302) +[ Extern ] Assigns (file share/libc/stdio.h, line 303) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 302) +[ Extern ] Froms (file share/libc/stdio.h, line 303) assigns *stream \from \nothing; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1820,13 +1820,13 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'ftrylockfile' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 305) +[ Extern ] Assigns (file share/libc/stdio.h, line 306) assigns \result, *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 305) +[ Extern ] Froms (file share/libc/stdio.h, line 306) assigns \result \from \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 305) +[ Extern ] Froms (file share/libc/stdio.h, line 306) assigns *stream \from \nothing; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1840,7 +1840,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 308) +[ Extern ] Froms (file share/libc/stdio.h, line 309) assigns \result \from *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1851,10 +1851,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'perror' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 311) +[ Extern ] Assigns (file share/libc/stdio.h, line 312) assigns __fc_stdout; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 311) +[ Extern ] Froms (file share/libc/stdio.h, line 312) assigns __fc_stdout \from __FC_errno, *(s+(..)); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1865,13 +1865,13 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'getc_unlocked' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 314) +[ Extern ] Assigns (file share/libc/stdio.h, line 315) assigns \result, *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 314) +[ Extern ] Froms (file share/libc/stdio.h, line 315) assigns \result \from *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 314) +[ Extern ] Froms (file share/libc/stdio.h, line 315) assigns *stream \from *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1885,7 +1885,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 316) +[ Extern ] Froms (file share/libc/stdio.h, line 317) assigns \result \from *__fc_stdin; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1896,10 +1896,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'putc_unlocked' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 318) +[ Extern ] Assigns (file share/libc/stdio.h, line 319) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 318) +[ Extern ] Froms (file share/libc/stdio.h, line 319) assigns *stream \from c; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1910,10 +1910,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'putchar_unlocked' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 320) +[ Extern ] Assigns (file share/libc/stdio.h, line 321) assigns *__fc_stdout; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 320) +[ Extern ] Froms (file share/libc/stdio.h, line 321) assigns *__fc_stdout \from c; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1924,10 +1924,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'clearerr_unlocked' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 323) +[ Extern ] Assigns (file share/libc/stdio.h, line 324) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 323) +[ Extern ] Froms (file share/libc/stdio.h, line 324) assigns *stream \from \nothing; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1941,7 +1941,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 325) +[ Extern ] Froms (file share/libc/stdio.h, line 326) assigns \result \from *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1955,7 +1955,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 327) +[ Extern ] Froms (file share/libc/stdio.h, line 328) assigns \result \from *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1969,7 +1969,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 329) +[ Extern ] Froms (file share/libc/stdio.h, line 330) assigns \result \from *stream; Unverifiable but considered Valid. [ Valid ] Default behavior diff --git a/tests/idct/oracle_bitwise/idct.res.oracle b/tests/idct/oracle_bitwise/idct.res.oracle deleted file mode 100644 index 2bc949c6f940135146bb6a6fc180d78dba3392da..0000000000000000000000000000000000000000 --- a/tests/idct/oracle_bitwise/idct.res.oracle +++ /dev/null @@ -1,6 +0,0 @@ -[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/idct/idct.c (with preprocessing) -tests/idct/idct.c:91:[kernel] warning: Floating-point constant 3.14159265358979323846 is not represented exactly. Will use 0x1.921fb54442d18p1. See documentation for option -warn-decimal-float -[kernel] user error: cannot find entry point `main'. - Please use option `-main' for specifying a valid entry point. -[kernel] Frama-C aborted: invalid user input. diff --git a/tests/idct/oracle_bitwise/ieee_1180_1990.res.oracle b/tests/idct/oracle_bitwise/ieee_1180_1990.res.oracle index f94d9a03e7346d309076c2137c847cf2c5baad9a..7d2f54e5f43b77c2ea26748ef183193f66fd8a9a 100644 --- a/tests/idct/oracle_bitwise/ieee_1180_1990.res.oracle +++ b/tests/idct/oracle_bitwise/ieee_1180_1990.res.oracle @@ -888,7 +888,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'tmpfile' -------------------------------------------------------------------------------- -[ Extern ] Post-condition (file share/libc/stdio.h, line 74) +[ Extern ] Post-condition (file share/libc/stdio.h, line 75) ensures \result ≡ \null ∨ (\valid(\result) ∧ \fresh{Old, Here}(\result,sizeof(FILE))) @@ -904,13 +904,13 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'tmpnam' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 78) +[ Extern ] Assigns (file share/libc/stdio.h, line 79) assigns \result, *(s+(..)); Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 78) +[ Extern ] Froms (file share/libc/stdio.h, line 79) assigns \result \from *(s+(..)); Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 79) +[ Extern ] Froms (file share/libc/stdio.h, line 80) assigns *(s+(..)) \from \nothing; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -921,13 +921,13 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fclose' -------------------------------------------------------------------------------- -[ Extern ] Post-condition (file share/libc/stdio.h, line 87) +[ Extern ] Post-condition (file share/libc/stdio.h, line 88) ensures \result ≡ 0 ∨ \result ≡ -1 Unverifiable but considered Valid. [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 86) +[ Extern ] Froms (file share/libc/stdio.h, line 87) assigns \result \from stream, stream->__fc_stdio_id; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -938,13 +938,13 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fflush' -------------------------------------------------------------------------------- -[ Extern ] Post-condition (file share/libc/stdio.h, line 95) +[ Extern ] Post-condition (file share/libc/stdio.h, line 96) ensures \result ≡ 0 ∨ \result ≡ -1 Unverifiable but considered Valid. [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 94) +[ Extern ] Froms (file share/libc/stdio.h, line 95) assigns \result \from stream, stream->__fc_stdio_id; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -955,14 +955,14 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fopen' -------------------------------------------------------------------------------- -[ Extern ] Post-condition (file share/libc/stdio.h, line 106) +[ Extern ] Post-condition (file share/libc/stdio.h, line 107) ensures \result ≡ \null ∨ \subset(\result, &__fc_fopen[0 .. 512-1]) Unverifiable but considered Valid. [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 104) +[ Extern ] Froms (file share/libc/stdio.h, line 105) assigns \result \from *(filename+(..)), *(mode+(..)), __p_fc_fopen; Unverifiable but considered Valid. @@ -974,7 +974,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fdopen' -------------------------------------------------------------------------------- -[ Extern ] Post-condition (file share/libc/stdio.h, line 113) +[ Extern ] Post-condition (file share/libc/stdio.h, line 114) ensures \result ≡ \null ∨ (\valid(\result) ∧ \fresh{Old, Here}(\result,sizeof(FILE))) @@ -982,7 +982,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 112) +[ Extern ] Froms (file share/libc/stdio.h, line 113) assigns \result \from fildes, *(mode+(..)); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -993,10 +993,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'freopen' -------------------------------------------------------------------------------- -[ Extern ] Post-condition (file share/libc/stdio.h, line 119) +[ Extern ] Post-condition (file share/libc/stdio.h, line 120) ensures \result ≡ \null ∨ \result ≡ \old(stream) Unverifiable but considered Valid. -[ Extern ] Assigns (file share/libc/stdio.h, line 118) +[ Extern ] Assigns (file share/libc/stdio.h, line 119) assigns *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1007,10 +1007,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'setbuf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 124) +[ Extern ] Assigns (file share/libc/stdio.h, line 125) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 124) +[ Extern ] Froms (file share/libc/stdio.h, line 125) assigns *stream \from buf; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1021,10 +1021,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'setvbuf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 128) +[ Extern ] Assigns (file share/libc/stdio.h, line 129) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 128) +[ Extern ] Froms (file share/libc/stdio.h, line 129) assigns *stream \from buf, mode, size; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1035,10 +1035,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fprintf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 133) +[ Extern ] Assigns (file share/libc/stdio.h, line 134) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 133) +[ Extern ] Froms (file share/libc/stdio.h, line 134) assigns *stream \from stream->__fc_stdio_id; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1049,10 +1049,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fscanf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 138) +[ Extern ] Assigns (file share/libc/stdio.h, line 139) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 138) +[ Extern ] Froms (file share/libc/stdio.h, line 139) assigns *stream \from stream->__fc_stdio_id; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1063,10 +1063,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'printf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 144) +[ Extern ] Assigns (file share/libc/stdio.h, line 145) assigns *__fc_stdout; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 144) +[ Extern ] Froms (file share/libc/stdio.h, line 145) assigns *__fc_stdout \from *(format+(..)); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1077,7 +1077,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'scanf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 149) +[ Extern ] Assigns (file share/libc/stdio.h, line 150) assigns *__fc_stdin; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1088,7 +1088,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'snprintf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 154) +[ Extern ] Assigns (file share/libc/stdio.h, line 155) assigns *(s+(0 .. n-1)); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1099,7 +1099,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'sprintf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 160) +[ Extern ] Assigns (file share/libc/stdio.h, line 161) assigns *(s+(0 ..)); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1110,10 +1110,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'vfprintf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 170) +[ Extern ] Assigns (file share/libc/stdio.h, line 171) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 170) +[ Extern ] Froms (file share/libc/stdio.h, line 171) assigns *stream \from *(format+(..)), arg; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1124,10 +1124,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'vfscanf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 175) +[ Extern ] Assigns (file share/libc/stdio.h, line 176) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 175) +[ Extern ] Froms (file share/libc/stdio.h, line 176) assigns *stream \from *(format+(..)), *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1138,10 +1138,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'vprintf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 181) +[ Extern ] Assigns (file share/libc/stdio.h, line 182) assigns *__fc_stdout; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 181) +[ Extern ] Froms (file share/libc/stdio.h, line 182) assigns *__fc_stdout \from arg; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1152,10 +1152,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'vscanf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 185) +[ Extern ] Assigns (file share/libc/stdio.h, line 186) assigns *__fc_stdin; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 185) +[ Extern ] Froms (file share/libc/stdio.h, line 186) assigns *__fc_stdin \from *(format+(..)); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1166,10 +1166,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'vsnprintf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 190) +[ Extern ] Assigns (file share/libc/stdio.h, line 191) assigns *(s+(0 .. n-1)); Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 190) +[ Extern ] Froms (file share/libc/stdio.h, line 191) assigns *(s+(0 .. n-1)) \from *(format+(..)), arg; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1180,10 +1180,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'vsprintf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 196) +[ Extern ] Assigns (file share/libc/stdio.h, line 197) assigns *(s+(0 ..)); Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 196) +[ Extern ] Froms (file share/libc/stdio.h, line 197) assigns *(s+(0 ..)) \from *(format+(..)), arg; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1194,7 +1194,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fgetc' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 207) +[ Extern ] Assigns (file share/libc/stdio.h, line 208) assigns *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1205,19 +1205,19 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fgets' -------------------------------------------------------------------------------- -[ Extern ] Post-condition (file share/libc/stdio.h, line 213) +[ Extern ] Post-condition (file share/libc/stdio.h, line 214) ensures \result ≡ \null ∨ \result ≡ \old(s) Unverifiable but considered Valid. -[ Extern ] Assigns (file share/libc/stdio.h, line 211) +[ Extern ] Assigns (file share/libc/stdio.h, line 212) assigns *(s+(0 .. n-1)), *stream, \result; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 211) +[ Extern ] Froms (file share/libc/stdio.h, line 212) assigns *(s+(0 .. n-1)) \from *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 211) +[ Extern ] Froms (file share/libc/stdio.h, line 212) assigns *stream \from *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 212) +[ Extern ] Froms (file share/libc/stdio.h, line 213) assigns \result \from s, n, *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1228,7 +1228,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fputc' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 218) +[ Extern ] Assigns (file share/libc/stdio.h, line 219) assigns *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1239,10 +1239,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fputs' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 221) +[ Extern ] Assigns (file share/libc/stdio.h, line 222) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 221) +[ Extern ] Froms (file share/libc/stdio.h, line 222) assigns *stream \from *(s+(..)); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1253,13 +1253,13 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'getc' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 225) +[ Extern ] Assigns (file share/libc/stdio.h, line 226) assigns \result, *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 225) +[ Extern ] Froms (file share/libc/stdio.h, line 226) assigns \result \from *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 225) +[ Extern ] Froms (file share/libc/stdio.h, line 226) assigns *stream \from *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1273,7 +1273,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 228) +[ Extern ] Froms (file share/libc/stdio.h, line 229) assigns \result \from *__fc_stdin; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1284,16 +1284,16 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'gets' -------------------------------------------------------------------------------- -[ Extern ] Post-condition (file share/libc/stdio.h, line 233) +[ Extern ] Post-condition (file share/libc/stdio.h, line 234) ensures \result ≡ \old(s) ∨ \result ≡ \null Unverifiable but considered Valid. -[ Extern ] Assigns (file share/libc/stdio.h, line 231) +[ Extern ] Assigns (file share/libc/stdio.h, line 232) assigns *(s+(..)), \result; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 231) +[ Extern ] Froms (file share/libc/stdio.h, line 232) assigns *(s+(..)) \from *__fc_stdin; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 232) +[ Extern ] Froms (file share/libc/stdio.h, line 233) assigns \result \from s, __fc_stdin; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1304,10 +1304,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'putc' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 237) +[ Extern ] Assigns (file share/libc/stdio.h, line 238) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 237) +[ Extern ] Froms (file share/libc/stdio.h, line 238) assigns *stream \from c; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1318,10 +1318,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'putchar' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 240) +[ Extern ] Assigns (file share/libc/stdio.h, line 241) assigns *__fc_stdout; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 240) +[ Extern ] Froms (file share/libc/stdio.h, line 241) assigns *__fc_stdout \from c; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1332,10 +1332,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'puts' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 243) +[ Extern ] Assigns (file share/libc/stdio.h, line 244) assigns *__fc_stdout; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 243) +[ Extern ] Froms (file share/libc/stdio.h, line 244) assigns *__fc_stdout \from *(s+(..)); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1346,10 +1346,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'ungetc' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 246) +[ Extern ] Assigns (file share/libc/stdio.h, line 247) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 246) +[ Extern ] Froms (file share/libc/stdio.h, line 247) assigns *stream \from c; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1360,21 +1360,21 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fread' -------------------------------------------------------------------------------- -[ Extern ] Post-condition (file share/libc/stdio.h, line 254) +[ Extern ] Post-condition (file share/libc/stdio.h, line 255) ensures \result ≤ \old(nmemb) Unverifiable but considered Valid. -[ Extern ] Post-condition (file share/libc/stdio.h, line 255) +[ Extern ] Post-condition (file share/libc/stdio.h, line 256) ensures \initialized((char *)\old(ptr)+(0 .. \result*\old(size)-1)) Unverifiable but considered Valid. -[ Extern ] Assigns (file share/libc/stdio.h, line 252) +[ Extern ] Assigns (file share/libc/stdio.h, line 253) assigns *((char *)ptr+(0 .. nmemb*size-1)), \result; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 252) +[ Extern ] Froms (file share/libc/stdio.h, line 253) assigns *((char *)ptr+(0 .. nmemb*size-1)) \from size, nmemb, *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 253) +[ Extern ] Froms (file share/libc/stdio.h, line 254) assigns \result \from size, *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1385,16 +1385,16 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fwrite' -------------------------------------------------------------------------------- -[ Extern ] Post-condition (file share/libc/stdio.h, line 266) +[ Extern ] Post-condition (file share/libc/stdio.h, line 267) ensures \result ≤ \old(nmemb) Unverifiable but considered Valid. -[ Extern ] Assigns (file share/libc/stdio.h, line 265) +[ Extern ] Assigns (file share/libc/stdio.h, line 266) assigns *stream, \result; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 265) +[ Extern ] Froms (file share/libc/stdio.h, line 266) assigns *stream \from *((char *)ptr+(0 .. nmemb*size-1)); Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 265) +[ Extern ] Froms (file share/libc/stdio.h, line 266) assigns \result \from *((char *)ptr+(0 .. nmemb*size-1)); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1405,10 +1405,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fgetpos' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 273) +[ Extern ] Assigns (file share/libc/stdio.h, line 274) assigns *pos; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 273) +[ Extern ] Froms (file share/libc/stdio.h, line 274) assigns *pos \from *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1419,10 +1419,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fseek' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 277) +[ Extern ] Assigns (file share/libc/stdio.h, line 278) assigns *stream, __FC_errno; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 277) +[ Extern ] Froms (file share/libc/stdio.h, line 278) assigns *stream \from offset, whence; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1433,10 +1433,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fsetpos' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 281) +[ Extern ] Assigns (file share/libc/stdio.h, line 282) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 281) +[ Extern ] Froms (file share/libc/stdio.h, line 282) assigns *stream \from *pos; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1447,13 +1447,13 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'ftell' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 284) +[ Extern ] Assigns (file share/libc/stdio.h, line 285) assigns \result, __FC_errno; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 284) +[ Extern ] Froms (file share/libc/stdio.h, line 285) assigns \result \from *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 284) +[ Extern ] Froms (file share/libc/stdio.h, line 285) assigns __FC_errno \from *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1464,10 +1464,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'rewind' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 287) +[ Extern ] Assigns (file share/libc/stdio.h, line 288) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 287) +[ Extern ] Froms (file share/libc/stdio.h, line 288) assigns *stream \from \nothing; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1478,10 +1478,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'clearerr' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 290) +[ Extern ] Assigns (file share/libc/stdio.h, line 291) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 290) +[ Extern ] Froms (file share/libc/stdio.h, line 291) assigns *stream \from \nothing; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1495,7 +1495,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 293) +[ Extern ] Froms (file share/libc/stdio.h, line 294) assigns \result \from *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1509,7 +1509,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 296) +[ Extern ] Froms (file share/libc/stdio.h, line 297) assigns \result \from *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1520,10 +1520,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'flockfile' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 299) +[ Extern ] Assigns (file share/libc/stdio.h, line 300) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 299) +[ Extern ] Froms (file share/libc/stdio.h, line 300) assigns *stream \from \nothing; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1534,10 +1534,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'funlockfile' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 302) +[ Extern ] Assigns (file share/libc/stdio.h, line 303) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 302) +[ Extern ] Froms (file share/libc/stdio.h, line 303) assigns *stream \from \nothing; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1548,13 +1548,13 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'ftrylockfile' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 305) +[ Extern ] Assigns (file share/libc/stdio.h, line 306) assigns \result, *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 305) +[ Extern ] Froms (file share/libc/stdio.h, line 306) assigns \result \from \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 305) +[ Extern ] Froms (file share/libc/stdio.h, line 306) assigns *stream \from \nothing; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1568,7 +1568,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 308) +[ Extern ] Froms (file share/libc/stdio.h, line 309) assigns \result \from *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1579,10 +1579,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'perror' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 311) +[ Extern ] Assigns (file share/libc/stdio.h, line 312) assigns __fc_stdout; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 311) +[ Extern ] Froms (file share/libc/stdio.h, line 312) assigns __fc_stdout \from __FC_errno, *(s+(..)); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1593,13 +1593,13 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'getc_unlocked' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 314) +[ Extern ] Assigns (file share/libc/stdio.h, line 315) assigns \result, *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 314) +[ Extern ] Froms (file share/libc/stdio.h, line 315) assigns \result \from *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 314) +[ Extern ] Froms (file share/libc/stdio.h, line 315) assigns *stream \from *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1613,7 +1613,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 316) +[ Extern ] Froms (file share/libc/stdio.h, line 317) assigns \result \from *__fc_stdin; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1624,10 +1624,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'putc_unlocked' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 318) +[ Extern ] Assigns (file share/libc/stdio.h, line 319) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 318) +[ Extern ] Froms (file share/libc/stdio.h, line 319) assigns *stream \from c; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1638,10 +1638,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'putchar_unlocked' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 320) +[ Extern ] Assigns (file share/libc/stdio.h, line 321) assigns *__fc_stdout; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 320) +[ Extern ] Froms (file share/libc/stdio.h, line 321) assigns *__fc_stdout \from c; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1652,10 +1652,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'clearerr_unlocked' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 323) +[ Extern ] Assigns (file share/libc/stdio.h, line 324) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 323) +[ Extern ] Froms (file share/libc/stdio.h, line 324) assigns *stream \from \nothing; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1669,7 +1669,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 325) +[ Extern ] Froms (file share/libc/stdio.h, line 326) assigns \result \from *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1683,7 +1683,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 327) +[ Extern ] Froms (file share/libc/stdio.h, line 328) assigns \result \from *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1697,7 +1697,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 329) +[ Extern ] Froms (file share/libc/stdio.h, line 330) assigns \result \from *stream; Unverifiable but considered Valid. [ Valid ] Default behavior diff --git a/tests/idct/oracle_equalities/idct.res.oracle b/tests/idct/oracle_equalities/idct.res.oracle deleted file mode 100644 index 2bc949c6f940135146bb6a6fc180d78dba3392da..0000000000000000000000000000000000000000 --- a/tests/idct/oracle_equalities/idct.res.oracle +++ /dev/null @@ -1,6 +0,0 @@ -[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/idct/idct.c (with preprocessing) -tests/idct/idct.c:91:[kernel] warning: Floating-point constant 3.14159265358979323846 is not represented exactly. Will use 0x1.921fb54442d18p1. See documentation for option -warn-decimal-float -[kernel] user error: cannot find entry point `main'. - Please use option `-main' for specifying a valid entry point. -[kernel] Frama-C aborted: invalid user input. diff --git a/tests/idct/oracle_equalities/ieee_1180_1990.res.oracle b/tests/idct/oracle_equalities/ieee_1180_1990.res.oracle index 3cf883bb9028db074f4dae8fe0887c2373e14acb..af879c7a233def2d1736b6fda09796aa4c5e2ad4 100644 --- a/tests/idct/oracle_equalities/ieee_1180_1990.res.oracle +++ b/tests/idct/oracle_equalities/ieee_1180_1990.res.oracle @@ -906,7 +906,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'tmpfile' -------------------------------------------------------------------------------- -[ Extern ] Post-condition (file share/libc/stdio.h, line 74) +[ Extern ] Post-condition (file share/libc/stdio.h, line 75) ensures \result ≡ \null ∨ (\valid(\result) ∧ \fresh{Old, Here}(\result,sizeof(FILE))) @@ -922,13 +922,13 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'tmpnam' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 78) +[ Extern ] Assigns (file share/libc/stdio.h, line 79) assigns \result, *(s+(..)); Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 78) +[ Extern ] Froms (file share/libc/stdio.h, line 79) assigns \result \from *(s+(..)); Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 79) +[ Extern ] Froms (file share/libc/stdio.h, line 80) assigns *(s+(..)) \from \nothing; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -939,13 +939,13 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fclose' -------------------------------------------------------------------------------- -[ Extern ] Post-condition (file share/libc/stdio.h, line 87) +[ Extern ] Post-condition (file share/libc/stdio.h, line 88) ensures \result ≡ 0 ∨ \result ≡ -1 Unverifiable but considered Valid. [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 86) +[ Extern ] Froms (file share/libc/stdio.h, line 87) assigns \result \from stream, stream->__fc_stdio_id; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -956,13 +956,13 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fflush' -------------------------------------------------------------------------------- -[ Extern ] Post-condition (file share/libc/stdio.h, line 95) +[ Extern ] Post-condition (file share/libc/stdio.h, line 96) ensures \result ≡ 0 ∨ \result ≡ -1 Unverifiable but considered Valid. [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 94) +[ Extern ] Froms (file share/libc/stdio.h, line 95) assigns \result \from stream, stream->__fc_stdio_id; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -973,14 +973,14 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fopen' -------------------------------------------------------------------------------- -[ Extern ] Post-condition (file share/libc/stdio.h, line 106) +[ Extern ] Post-condition (file share/libc/stdio.h, line 107) ensures \result ≡ \null ∨ \subset(\result, &__fc_fopen[0 .. 512-1]) Unverifiable but considered Valid. [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 104) +[ Extern ] Froms (file share/libc/stdio.h, line 105) assigns \result \from *(filename+(..)), *(mode+(..)), __p_fc_fopen; Unverifiable but considered Valid. @@ -992,7 +992,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fdopen' -------------------------------------------------------------------------------- -[ Extern ] Post-condition (file share/libc/stdio.h, line 113) +[ Extern ] Post-condition (file share/libc/stdio.h, line 114) ensures \result ≡ \null ∨ (\valid(\result) ∧ \fresh{Old, Here}(\result,sizeof(FILE))) @@ -1000,7 +1000,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 112) +[ Extern ] Froms (file share/libc/stdio.h, line 113) assigns \result \from fildes, *(mode+(..)); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1011,10 +1011,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'freopen' -------------------------------------------------------------------------------- -[ Extern ] Post-condition (file share/libc/stdio.h, line 119) +[ Extern ] Post-condition (file share/libc/stdio.h, line 120) ensures \result ≡ \null ∨ \result ≡ \old(stream) Unverifiable but considered Valid. -[ Extern ] Assigns (file share/libc/stdio.h, line 118) +[ Extern ] Assigns (file share/libc/stdio.h, line 119) assigns *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1025,10 +1025,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'setbuf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 124) +[ Extern ] Assigns (file share/libc/stdio.h, line 125) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 124) +[ Extern ] Froms (file share/libc/stdio.h, line 125) assigns *stream \from buf; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1039,10 +1039,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'setvbuf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 128) +[ Extern ] Assigns (file share/libc/stdio.h, line 129) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 128) +[ Extern ] Froms (file share/libc/stdio.h, line 129) assigns *stream \from buf, mode, size; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1053,10 +1053,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fprintf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 133) +[ Extern ] Assigns (file share/libc/stdio.h, line 134) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 133) +[ Extern ] Froms (file share/libc/stdio.h, line 134) assigns *stream \from stream->__fc_stdio_id; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1067,10 +1067,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fscanf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 138) +[ Extern ] Assigns (file share/libc/stdio.h, line 139) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 138) +[ Extern ] Froms (file share/libc/stdio.h, line 139) assigns *stream \from stream->__fc_stdio_id; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1081,10 +1081,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'printf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 144) +[ Extern ] Assigns (file share/libc/stdio.h, line 145) assigns *__fc_stdout; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 144) +[ Extern ] Froms (file share/libc/stdio.h, line 145) assigns *__fc_stdout \from *(format+(..)); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1095,7 +1095,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'scanf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 149) +[ Extern ] Assigns (file share/libc/stdio.h, line 150) assigns *__fc_stdin; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1106,7 +1106,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'snprintf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 154) +[ Extern ] Assigns (file share/libc/stdio.h, line 155) assigns *(s+(0 .. n-1)); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1117,7 +1117,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'sprintf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 160) +[ Extern ] Assigns (file share/libc/stdio.h, line 161) assigns *(s+(0 ..)); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1128,10 +1128,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'vfprintf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 170) +[ Extern ] Assigns (file share/libc/stdio.h, line 171) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 170) +[ Extern ] Froms (file share/libc/stdio.h, line 171) assigns *stream \from *(format+(..)), arg; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1142,10 +1142,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'vfscanf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 175) +[ Extern ] Assigns (file share/libc/stdio.h, line 176) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 175) +[ Extern ] Froms (file share/libc/stdio.h, line 176) assigns *stream \from *(format+(..)), *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1156,10 +1156,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'vprintf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 181) +[ Extern ] Assigns (file share/libc/stdio.h, line 182) assigns *__fc_stdout; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 181) +[ Extern ] Froms (file share/libc/stdio.h, line 182) assigns *__fc_stdout \from arg; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1170,10 +1170,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'vscanf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 185) +[ Extern ] Assigns (file share/libc/stdio.h, line 186) assigns *__fc_stdin; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 185) +[ Extern ] Froms (file share/libc/stdio.h, line 186) assigns *__fc_stdin \from *(format+(..)); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1184,10 +1184,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'vsnprintf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 190) +[ Extern ] Assigns (file share/libc/stdio.h, line 191) assigns *(s+(0 .. n-1)); Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 190) +[ Extern ] Froms (file share/libc/stdio.h, line 191) assigns *(s+(0 .. n-1)) \from *(format+(..)), arg; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1198,10 +1198,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'vsprintf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 196) +[ Extern ] Assigns (file share/libc/stdio.h, line 197) assigns *(s+(0 ..)); Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 196) +[ Extern ] Froms (file share/libc/stdio.h, line 197) assigns *(s+(0 ..)) \from *(format+(..)), arg; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1212,7 +1212,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fgetc' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 207) +[ Extern ] Assigns (file share/libc/stdio.h, line 208) assigns *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1223,19 +1223,19 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fgets' -------------------------------------------------------------------------------- -[ Extern ] Post-condition (file share/libc/stdio.h, line 213) +[ Extern ] Post-condition (file share/libc/stdio.h, line 214) ensures \result ≡ \null ∨ \result ≡ \old(s) Unverifiable but considered Valid. -[ Extern ] Assigns (file share/libc/stdio.h, line 211) +[ Extern ] Assigns (file share/libc/stdio.h, line 212) assigns *(s+(0 .. n-1)), *stream, \result; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 211) +[ Extern ] Froms (file share/libc/stdio.h, line 212) assigns *(s+(0 .. n-1)) \from *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 211) +[ Extern ] Froms (file share/libc/stdio.h, line 212) assigns *stream \from *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 212) +[ Extern ] Froms (file share/libc/stdio.h, line 213) assigns \result \from s, n, *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1246,7 +1246,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fputc' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 218) +[ Extern ] Assigns (file share/libc/stdio.h, line 219) assigns *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1257,10 +1257,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fputs' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 221) +[ Extern ] Assigns (file share/libc/stdio.h, line 222) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 221) +[ Extern ] Froms (file share/libc/stdio.h, line 222) assigns *stream \from *(s+(..)); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1271,13 +1271,13 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'getc' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 225) +[ Extern ] Assigns (file share/libc/stdio.h, line 226) assigns \result, *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 225) +[ Extern ] Froms (file share/libc/stdio.h, line 226) assigns \result \from *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 225) +[ Extern ] Froms (file share/libc/stdio.h, line 226) assigns *stream \from *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1291,7 +1291,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 228) +[ Extern ] Froms (file share/libc/stdio.h, line 229) assigns \result \from *__fc_stdin; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1302,16 +1302,16 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'gets' -------------------------------------------------------------------------------- -[ Extern ] Post-condition (file share/libc/stdio.h, line 233) +[ Extern ] Post-condition (file share/libc/stdio.h, line 234) ensures \result ≡ \old(s) ∨ \result ≡ \null Unverifiable but considered Valid. -[ Extern ] Assigns (file share/libc/stdio.h, line 231) +[ Extern ] Assigns (file share/libc/stdio.h, line 232) assigns *(s+(..)), \result; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 231) +[ Extern ] Froms (file share/libc/stdio.h, line 232) assigns *(s+(..)) \from *__fc_stdin; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 232) +[ Extern ] Froms (file share/libc/stdio.h, line 233) assigns \result \from s, __fc_stdin; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1322,10 +1322,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'putc' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 237) +[ Extern ] Assigns (file share/libc/stdio.h, line 238) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 237) +[ Extern ] Froms (file share/libc/stdio.h, line 238) assigns *stream \from c; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1336,10 +1336,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'putchar' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 240) +[ Extern ] Assigns (file share/libc/stdio.h, line 241) assigns *__fc_stdout; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 240) +[ Extern ] Froms (file share/libc/stdio.h, line 241) assigns *__fc_stdout \from c; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1350,10 +1350,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'puts' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 243) +[ Extern ] Assigns (file share/libc/stdio.h, line 244) assigns *__fc_stdout; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 243) +[ Extern ] Froms (file share/libc/stdio.h, line 244) assigns *__fc_stdout \from *(s+(..)); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1364,10 +1364,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'ungetc' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 246) +[ Extern ] Assigns (file share/libc/stdio.h, line 247) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 246) +[ Extern ] Froms (file share/libc/stdio.h, line 247) assigns *stream \from c; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1378,21 +1378,21 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fread' -------------------------------------------------------------------------------- -[ Extern ] Post-condition (file share/libc/stdio.h, line 254) +[ Extern ] Post-condition (file share/libc/stdio.h, line 255) ensures \result ≤ \old(nmemb) Unverifiable but considered Valid. -[ Extern ] Post-condition (file share/libc/stdio.h, line 255) +[ Extern ] Post-condition (file share/libc/stdio.h, line 256) ensures \initialized((char *)\old(ptr)+(0 .. \result*\old(size)-1)) Unverifiable but considered Valid. -[ Extern ] Assigns (file share/libc/stdio.h, line 252) +[ Extern ] Assigns (file share/libc/stdio.h, line 253) assigns *((char *)ptr+(0 .. nmemb*size-1)), \result; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 252) +[ Extern ] Froms (file share/libc/stdio.h, line 253) assigns *((char *)ptr+(0 .. nmemb*size-1)) \from size, nmemb, *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 253) +[ Extern ] Froms (file share/libc/stdio.h, line 254) assigns \result \from size, *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1403,16 +1403,16 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fwrite' -------------------------------------------------------------------------------- -[ Extern ] Post-condition (file share/libc/stdio.h, line 266) +[ Extern ] Post-condition (file share/libc/stdio.h, line 267) ensures \result ≤ \old(nmemb) Unverifiable but considered Valid. -[ Extern ] Assigns (file share/libc/stdio.h, line 265) +[ Extern ] Assigns (file share/libc/stdio.h, line 266) assigns *stream, \result; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 265) +[ Extern ] Froms (file share/libc/stdio.h, line 266) assigns *stream \from *((char *)ptr+(0 .. nmemb*size-1)); Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 265) +[ Extern ] Froms (file share/libc/stdio.h, line 266) assigns \result \from *((char *)ptr+(0 .. nmemb*size-1)); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1423,10 +1423,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fgetpos' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 273) +[ Extern ] Assigns (file share/libc/stdio.h, line 274) assigns *pos; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 273) +[ Extern ] Froms (file share/libc/stdio.h, line 274) assigns *pos \from *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1437,10 +1437,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fseek' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 277) +[ Extern ] Assigns (file share/libc/stdio.h, line 278) assigns *stream, __FC_errno; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 277) +[ Extern ] Froms (file share/libc/stdio.h, line 278) assigns *stream \from offset, whence; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1451,10 +1451,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fsetpos' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 281) +[ Extern ] Assigns (file share/libc/stdio.h, line 282) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 281) +[ Extern ] Froms (file share/libc/stdio.h, line 282) assigns *stream \from *pos; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1465,13 +1465,13 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'ftell' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 284) +[ Extern ] Assigns (file share/libc/stdio.h, line 285) assigns \result, __FC_errno; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 284) +[ Extern ] Froms (file share/libc/stdio.h, line 285) assigns \result \from *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 284) +[ Extern ] Froms (file share/libc/stdio.h, line 285) assigns __FC_errno \from *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1482,10 +1482,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'rewind' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 287) +[ Extern ] Assigns (file share/libc/stdio.h, line 288) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 287) +[ Extern ] Froms (file share/libc/stdio.h, line 288) assigns *stream \from \nothing; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1496,10 +1496,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'clearerr' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 290) +[ Extern ] Assigns (file share/libc/stdio.h, line 291) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 290) +[ Extern ] Froms (file share/libc/stdio.h, line 291) assigns *stream \from \nothing; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1513,7 +1513,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 293) +[ Extern ] Froms (file share/libc/stdio.h, line 294) assigns \result \from *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1527,7 +1527,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 296) +[ Extern ] Froms (file share/libc/stdio.h, line 297) assigns \result \from *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1538,10 +1538,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'flockfile' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 299) +[ Extern ] Assigns (file share/libc/stdio.h, line 300) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 299) +[ Extern ] Froms (file share/libc/stdio.h, line 300) assigns *stream \from \nothing; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1552,10 +1552,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'funlockfile' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 302) +[ Extern ] Assigns (file share/libc/stdio.h, line 303) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 302) +[ Extern ] Froms (file share/libc/stdio.h, line 303) assigns *stream \from \nothing; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1566,13 +1566,13 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'ftrylockfile' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 305) +[ Extern ] Assigns (file share/libc/stdio.h, line 306) assigns \result, *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 305) +[ Extern ] Froms (file share/libc/stdio.h, line 306) assigns \result \from \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 305) +[ Extern ] Froms (file share/libc/stdio.h, line 306) assigns *stream \from \nothing; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1586,7 +1586,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 308) +[ Extern ] Froms (file share/libc/stdio.h, line 309) assigns \result \from *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1597,10 +1597,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'perror' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 311) +[ Extern ] Assigns (file share/libc/stdio.h, line 312) assigns __fc_stdout; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 311) +[ Extern ] Froms (file share/libc/stdio.h, line 312) assigns __fc_stdout \from __FC_errno, *(s+(..)); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1611,13 +1611,13 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'getc_unlocked' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 314) +[ Extern ] Assigns (file share/libc/stdio.h, line 315) assigns \result, *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 314) +[ Extern ] Froms (file share/libc/stdio.h, line 315) assigns \result \from *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 314) +[ Extern ] Froms (file share/libc/stdio.h, line 315) assigns *stream \from *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1631,7 +1631,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 316) +[ Extern ] Froms (file share/libc/stdio.h, line 317) assigns \result \from *__fc_stdin; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1642,10 +1642,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'putc_unlocked' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 318) +[ Extern ] Assigns (file share/libc/stdio.h, line 319) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 318) +[ Extern ] Froms (file share/libc/stdio.h, line 319) assigns *stream \from c; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1656,10 +1656,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'putchar_unlocked' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 320) +[ Extern ] Assigns (file share/libc/stdio.h, line 321) assigns *__fc_stdout; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 320) +[ Extern ] Froms (file share/libc/stdio.h, line 321) assigns *__fc_stdout \from c; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1670,10 +1670,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'clearerr_unlocked' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 323) +[ Extern ] Assigns (file share/libc/stdio.h, line 324) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 323) +[ Extern ] Froms (file share/libc/stdio.h, line 324) assigns *stream \from \nothing; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1687,7 +1687,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 325) +[ Extern ] Froms (file share/libc/stdio.h, line 326) assigns \result \from *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1701,7 +1701,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 327) +[ Extern ] Froms (file share/libc/stdio.h, line 328) assigns \result \from *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1715,7 +1715,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 329) +[ Extern ] Froms (file share/libc/stdio.h, line 330) assigns \result \from *stream; Unverifiable but considered Valid. [ Valid ] Default behavior diff --git a/tests/idct/oracle_legacy/idct.res.oracle b/tests/idct/oracle_legacy/idct.res.oracle deleted file mode 100644 index 2bc949c6f940135146bb6a6fc180d78dba3392da..0000000000000000000000000000000000000000 --- a/tests/idct/oracle_legacy/idct.res.oracle +++ /dev/null @@ -1,6 +0,0 @@ -[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/idct/idct.c (with preprocessing) -tests/idct/idct.c:91:[kernel] warning: Floating-point constant 3.14159265358979323846 is not represented exactly. Will use 0x1.921fb54442d18p1. See documentation for option -warn-decimal-float -[kernel] user error: cannot find entry point `main'. - Please use option `-main' for specifying a valid entry point. -[kernel] Frama-C aborted: invalid user input. diff --git a/tests/idct/oracle_legacy/ieee_1180_1990.res.oracle b/tests/idct/oracle_legacy/ieee_1180_1990.res.oracle index 2bca65c3d99acec03e87934c30fd3c20ff957125..67a87f48a53eaee97e0b8f78cef8a01a2ca3951a 100644 --- a/tests/idct/oracle_legacy/ieee_1180_1990.res.oracle +++ b/tests/idct/oracle_legacy/ieee_1180_1990.res.oracle @@ -888,7 +888,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'tmpfile' -------------------------------------------------------------------------------- -[ Extern ] Post-condition (file share/libc/stdio.h, line 74) +[ Extern ] Post-condition (file share/libc/stdio.h, line 75) ensures \result ≡ \null ∨ (\valid(\result) ∧ \fresh{Old, Here}(\result,sizeof(FILE))) @@ -904,13 +904,13 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'tmpnam' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 78) +[ Extern ] Assigns (file share/libc/stdio.h, line 79) assigns \result, *(s+(..)); Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 78) +[ Extern ] Froms (file share/libc/stdio.h, line 79) assigns \result \from *(s+(..)); Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 79) +[ Extern ] Froms (file share/libc/stdio.h, line 80) assigns *(s+(..)) \from \nothing; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -921,13 +921,13 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fclose' -------------------------------------------------------------------------------- -[ Extern ] Post-condition (file share/libc/stdio.h, line 87) +[ Extern ] Post-condition (file share/libc/stdio.h, line 88) ensures \result ≡ 0 ∨ \result ≡ -1 Unverifiable but considered Valid. [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 86) +[ Extern ] Froms (file share/libc/stdio.h, line 87) assigns \result \from stream, stream->__fc_stdio_id; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -938,13 +938,13 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fflush' -------------------------------------------------------------------------------- -[ Extern ] Post-condition (file share/libc/stdio.h, line 95) +[ Extern ] Post-condition (file share/libc/stdio.h, line 96) ensures \result ≡ 0 ∨ \result ≡ -1 Unverifiable but considered Valid. [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 94) +[ Extern ] Froms (file share/libc/stdio.h, line 95) assigns \result \from stream, stream->__fc_stdio_id; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -955,14 +955,14 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fopen' -------------------------------------------------------------------------------- -[ Extern ] Post-condition (file share/libc/stdio.h, line 106) +[ Extern ] Post-condition (file share/libc/stdio.h, line 107) ensures \result ≡ \null ∨ \subset(\result, &__fc_fopen[0 .. 512-1]) Unverifiable but considered Valid. [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 104) +[ Extern ] Froms (file share/libc/stdio.h, line 105) assigns \result \from *(filename+(..)), *(mode+(..)), __p_fc_fopen; Unverifiable but considered Valid. @@ -974,7 +974,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fdopen' -------------------------------------------------------------------------------- -[ Extern ] Post-condition (file share/libc/stdio.h, line 113) +[ Extern ] Post-condition (file share/libc/stdio.h, line 114) ensures \result ≡ \null ∨ (\valid(\result) ∧ \fresh{Old, Here}(\result,sizeof(FILE))) @@ -982,7 +982,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 112) +[ Extern ] Froms (file share/libc/stdio.h, line 113) assigns \result \from fildes, *(mode+(..)); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -993,10 +993,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'freopen' -------------------------------------------------------------------------------- -[ Extern ] Post-condition (file share/libc/stdio.h, line 119) +[ Extern ] Post-condition (file share/libc/stdio.h, line 120) ensures \result ≡ \null ∨ \result ≡ \old(stream) Unverifiable but considered Valid. -[ Extern ] Assigns (file share/libc/stdio.h, line 118) +[ Extern ] Assigns (file share/libc/stdio.h, line 119) assigns *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1007,10 +1007,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'setbuf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 124) +[ Extern ] Assigns (file share/libc/stdio.h, line 125) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 124) +[ Extern ] Froms (file share/libc/stdio.h, line 125) assigns *stream \from buf; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1021,10 +1021,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'setvbuf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 128) +[ Extern ] Assigns (file share/libc/stdio.h, line 129) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 128) +[ Extern ] Froms (file share/libc/stdio.h, line 129) assigns *stream \from buf, mode, size; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1035,10 +1035,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fprintf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 133) +[ Extern ] Assigns (file share/libc/stdio.h, line 134) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 133) +[ Extern ] Froms (file share/libc/stdio.h, line 134) assigns *stream \from stream->__fc_stdio_id; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1049,10 +1049,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fscanf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 138) +[ Extern ] Assigns (file share/libc/stdio.h, line 139) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 138) +[ Extern ] Froms (file share/libc/stdio.h, line 139) assigns *stream \from stream->__fc_stdio_id; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1063,10 +1063,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'printf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 144) +[ Extern ] Assigns (file share/libc/stdio.h, line 145) assigns *__fc_stdout; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 144) +[ Extern ] Froms (file share/libc/stdio.h, line 145) assigns *__fc_stdout \from *(format+(..)); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1077,7 +1077,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'scanf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 149) +[ Extern ] Assigns (file share/libc/stdio.h, line 150) assigns *__fc_stdin; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1088,7 +1088,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'snprintf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 154) +[ Extern ] Assigns (file share/libc/stdio.h, line 155) assigns *(s+(0 .. n-1)); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1099,7 +1099,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'sprintf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 160) +[ Extern ] Assigns (file share/libc/stdio.h, line 161) assigns *(s+(0 ..)); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1110,10 +1110,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'vfprintf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 170) +[ Extern ] Assigns (file share/libc/stdio.h, line 171) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 170) +[ Extern ] Froms (file share/libc/stdio.h, line 171) assigns *stream \from *(format+(..)), arg; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1124,10 +1124,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'vfscanf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 175) +[ Extern ] Assigns (file share/libc/stdio.h, line 176) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 175) +[ Extern ] Froms (file share/libc/stdio.h, line 176) assigns *stream \from *(format+(..)), *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1138,10 +1138,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'vprintf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 181) +[ Extern ] Assigns (file share/libc/stdio.h, line 182) assigns *__fc_stdout; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 181) +[ Extern ] Froms (file share/libc/stdio.h, line 182) assigns *__fc_stdout \from arg; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1152,10 +1152,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'vscanf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 185) +[ Extern ] Assigns (file share/libc/stdio.h, line 186) assigns *__fc_stdin; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 185) +[ Extern ] Froms (file share/libc/stdio.h, line 186) assigns *__fc_stdin \from *(format+(..)); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1166,10 +1166,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'vsnprintf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 190) +[ Extern ] Assigns (file share/libc/stdio.h, line 191) assigns *(s+(0 .. n-1)); Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 190) +[ Extern ] Froms (file share/libc/stdio.h, line 191) assigns *(s+(0 .. n-1)) \from *(format+(..)), arg; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1180,10 +1180,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'vsprintf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 196) +[ Extern ] Assigns (file share/libc/stdio.h, line 197) assigns *(s+(0 ..)); Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 196) +[ Extern ] Froms (file share/libc/stdio.h, line 197) assigns *(s+(0 ..)) \from *(format+(..)), arg; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1194,7 +1194,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fgetc' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 207) +[ Extern ] Assigns (file share/libc/stdio.h, line 208) assigns *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1205,19 +1205,19 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fgets' -------------------------------------------------------------------------------- -[ Extern ] Post-condition (file share/libc/stdio.h, line 213) +[ Extern ] Post-condition (file share/libc/stdio.h, line 214) ensures \result ≡ \null ∨ \result ≡ \old(s) Unverifiable but considered Valid. -[ Extern ] Assigns (file share/libc/stdio.h, line 211) +[ Extern ] Assigns (file share/libc/stdio.h, line 212) assigns *(s+(0 .. n-1)), *stream, \result; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 211) +[ Extern ] Froms (file share/libc/stdio.h, line 212) assigns *(s+(0 .. n-1)) \from *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 211) +[ Extern ] Froms (file share/libc/stdio.h, line 212) assigns *stream \from *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 212) +[ Extern ] Froms (file share/libc/stdio.h, line 213) assigns \result \from s, n, *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1228,7 +1228,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fputc' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 218) +[ Extern ] Assigns (file share/libc/stdio.h, line 219) assigns *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1239,10 +1239,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fputs' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 221) +[ Extern ] Assigns (file share/libc/stdio.h, line 222) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 221) +[ Extern ] Froms (file share/libc/stdio.h, line 222) assigns *stream \from *(s+(..)); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1253,13 +1253,13 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'getc' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 225) +[ Extern ] Assigns (file share/libc/stdio.h, line 226) assigns \result, *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 225) +[ Extern ] Froms (file share/libc/stdio.h, line 226) assigns \result \from *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 225) +[ Extern ] Froms (file share/libc/stdio.h, line 226) assigns *stream \from *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1273,7 +1273,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 228) +[ Extern ] Froms (file share/libc/stdio.h, line 229) assigns \result \from *__fc_stdin; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1284,16 +1284,16 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'gets' -------------------------------------------------------------------------------- -[ Extern ] Post-condition (file share/libc/stdio.h, line 233) +[ Extern ] Post-condition (file share/libc/stdio.h, line 234) ensures \result ≡ \old(s) ∨ \result ≡ \null Unverifiable but considered Valid. -[ Extern ] Assigns (file share/libc/stdio.h, line 231) +[ Extern ] Assigns (file share/libc/stdio.h, line 232) assigns *(s+(..)), \result; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 231) +[ Extern ] Froms (file share/libc/stdio.h, line 232) assigns *(s+(..)) \from *__fc_stdin; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 232) +[ Extern ] Froms (file share/libc/stdio.h, line 233) assigns \result \from s, __fc_stdin; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1304,10 +1304,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'putc' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 237) +[ Extern ] Assigns (file share/libc/stdio.h, line 238) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 237) +[ Extern ] Froms (file share/libc/stdio.h, line 238) assigns *stream \from c; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1318,10 +1318,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'putchar' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 240) +[ Extern ] Assigns (file share/libc/stdio.h, line 241) assigns *__fc_stdout; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 240) +[ Extern ] Froms (file share/libc/stdio.h, line 241) assigns *__fc_stdout \from c; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1332,10 +1332,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'puts' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 243) +[ Extern ] Assigns (file share/libc/stdio.h, line 244) assigns *__fc_stdout; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 243) +[ Extern ] Froms (file share/libc/stdio.h, line 244) assigns *__fc_stdout \from *(s+(..)); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1346,10 +1346,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'ungetc' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 246) +[ Extern ] Assigns (file share/libc/stdio.h, line 247) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 246) +[ Extern ] Froms (file share/libc/stdio.h, line 247) assigns *stream \from c; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1360,21 +1360,21 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fread' -------------------------------------------------------------------------------- -[ Extern ] Post-condition (file share/libc/stdio.h, line 254) +[ Extern ] Post-condition (file share/libc/stdio.h, line 255) ensures \result ≤ \old(nmemb) Unverifiable but considered Valid. -[ Extern ] Post-condition (file share/libc/stdio.h, line 255) +[ Extern ] Post-condition (file share/libc/stdio.h, line 256) ensures \initialized((char *)\old(ptr)+(0 .. \result*\old(size)-1)) Unverifiable but considered Valid. -[ Extern ] Assigns (file share/libc/stdio.h, line 252) +[ Extern ] Assigns (file share/libc/stdio.h, line 253) assigns *((char *)ptr+(0 .. nmemb*size-1)), \result; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 252) +[ Extern ] Froms (file share/libc/stdio.h, line 253) assigns *((char *)ptr+(0 .. nmemb*size-1)) \from size, nmemb, *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 253) +[ Extern ] Froms (file share/libc/stdio.h, line 254) assigns \result \from size, *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1385,16 +1385,16 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fwrite' -------------------------------------------------------------------------------- -[ Extern ] Post-condition (file share/libc/stdio.h, line 266) +[ Extern ] Post-condition (file share/libc/stdio.h, line 267) ensures \result ≤ \old(nmemb) Unverifiable but considered Valid. -[ Extern ] Assigns (file share/libc/stdio.h, line 265) +[ Extern ] Assigns (file share/libc/stdio.h, line 266) assigns *stream, \result; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 265) +[ Extern ] Froms (file share/libc/stdio.h, line 266) assigns *stream \from *((char *)ptr+(0 .. nmemb*size-1)); Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 265) +[ Extern ] Froms (file share/libc/stdio.h, line 266) assigns \result \from *((char *)ptr+(0 .. nmemb*size-1)); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1405,10 +1405,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fgetpos' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 273) +[ Extern ] Assigns (file share/libc/stdio.h, line 274) assigns *pos; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 273) +[ Extern ] Froms (file share/libc/stdio.h, line 274) assigns *pos \from *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1419,10 +1419,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fseek' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 277) +[ Extern ] Assigns (file share/libc/stdio.h, line 278) assigns *stream, __FC_errno; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 277) +[ Extern ] Froms (file share/libc/stdio.h, line 278) assigns *stream \from offset, whence; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1433,10 +1433,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'fsetpos' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 281) +[ Extern ] Assigns (file share/libc/stdio.h, line 282) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 281) +[ Extern ] Froms (file share/libc/stdio.h, line 282) assigns *stream \from *pos; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1447,13 +1447,13 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'ftell' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 284) +[ Extern ] Assigns (file share/libc/stdio.h, line 285) assigns \result, __FC_errno; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 284) +[ Extern ] Froms (file share/libc/stdio.h, line 285) assigns \result \from *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 284) +[ Extern ] Froms (file share/libc/stdio.h, line 285) assigns __FC_errno \from *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1464,10 +1464,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'rewind' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 287) +[ Extern ] Assigns (file share/libc/stdio.h, line 288) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 287) +[ Extern ] Froms (file share/libc/stdio.h, line 288) assigns *stream \from \nothing; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1478,10 +1478,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'clearerr' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 290) +[ Extern ] Assigns (file share/libc/stdio.h, line 291) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 290) +[ Extern ] Froms (file share/libc/stdio.h, line 291) assigns *stream \from \nothing; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1495,7 +1495,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 293) +[ Extern ] Froms (file share/libc/stdio.h, line 294) assigns \result \from *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1509,7 +1509,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 296) +[ Extern ] Froms (file share/libc/stdio.h, line 297) assigns \result \from *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1520,10 +1520,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'flockfile' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 299) +[ Extern ] Assigns (file share/libc/stdio.h, line 300) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 299) +[ Extern ] Froms (file share/libc/stdio.h, line 300) assigns *stream \from \nothing; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1534,10 +1534,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'funlockfile' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 302) +[ Extern ] Assigns (file share/libc/stdio.h, line 303) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 302) +[ Extern ] Froms (file share/libc/stdio.h, line 303) assigns *stream \from \nothing; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1548,13 +1548,13 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'ftrylockfile' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 305) +[ Extern ] Assigns (file share/libc/stdio.h, line 306) assigns \result, *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 305) +[ Extern ] Froms (file share/libc/stdio.h, line 306) assigns \result \from \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 305) +[ Extern ] Froms (file share/libc/stdio.h, line 306) assigns *stream \from \nothing; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1568,7 +1568,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 308) +[ Extern ] Froms (file share/libc/stdio.h, line 309) assigns \result \from *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1579,10 +1579,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'perror' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 311) +[ Extern ] Assigns (file share/libc/stdio.h, line 312) assigns __fc_stdout; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 311) +[ Extern ] Froms (file share/libc/stdio.h, line 312) assigns __fc_stdout \from __FC_errno, *(s+(..)); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1593,13 +1593,13 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'getc_unlocked' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 314) +[ Extern ] Assigns (file share/libc/stdio.h, line 315) assigns \result, *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 314) +[ Extern ] Froms (file share/libc/stdio.h, line 315) assigns \result \from *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 314) +[ Extern ] Froms (file share/libc/stdio.h, line 315) assigns *stream \from *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1613,7 +1613,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 316) +[ Extern ] Froms (file share/libc/stdio.h, line 317) assigns \result \from *__fc_stdin; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1624,10 +1624,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'putc_unlocked' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 318) +[ Extern ] Assigns (file share/libc/stdio.h, line 319) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 318) +[ Extern ] Froms (file share/libc/stdio.h, line 319) assigns *stream \from c; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1638,10 +1638,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'putchar_unlocked' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 320) +[ Extern ] Assigns (file share/libc/stdio.h, line 321) assigns *__fc_stdout; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 320) +[ Extern ] Froms (file share/libc/stdio.h, line 321) assigns *__fc_stdout \from c; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1652,10 +1652,10 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over --- Properties of Function 'clearerr_unlocked' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file share/libc/stdio.h, line 323) +[ Extern ] Assigns (file share/libc/stdio.h, line 324) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 323) +[ Extern ] Froms (file share/libc/stdio.h, line 324) assigns *stream \from \nothing; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1669,7 +1669,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 325) +[ Extern ] Froms (file share/libc/stdio.h, line 326) assigns \result \from *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1683,7 +1683,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 327) +[ Extern ] Froms (file share/libc/stdio.h, line 328) assigns \result \from *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1697,7 +1697,7 @@ tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for over [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file share/libc/stdio.h, line 329) +[ Extern ] Froms (file share/libc/stdio.h, line 330) assigns \result \from *stream; Unverifiable but considered Valid. [ Valid ] Default behavior diff --git a/tests/idct/oracle_symblocs/ieee_1180_1990.err.oracle b/tests/idct/oracle_symblocs/ieee_1180_1990.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/idct/oracle_symblocs/ieee_1180_1990.res.oracle b/tests/idct/oracle_symblocs/ieee_1180_1990.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..b293af15f8ce244daee443e9c3fb0d29653ff883 --- /dev/null +++ b/tests/idct/oracle_symblocs/ieee_1180_1990.res.oracle @@ -0,0 +1,2542 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/idct/ieee_1180_1990.c (with preprocessing) +tests/idct/ieee_1180_1990.c:101:[kernel] warning: Floating-point constant 3.14159265358979323846 is not represented exactly. Will use 0x1.921fb54442d18p1. See documentation for option -warn-decimal-float +[kernel] Parsing tests/idct/idct.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + __FC_errno ∈ [--..--] + __fc_stdin ∈ {{ NULL ; &S___fc_stdin[0] }} + __fc_stdout ∈ {{ NULL ; &S___fc_stdout[0] }} + __fc_fopen[0..511] ∈ {0} + __p_fc_fopen ∈ {{ &__fc_fopen[0] }} + M1[0..7][0..7] ∈ {0} + randx ∈ {1} + z ∈ {1.9999999990686774*2^30} + mcos[0..7][0..7] ∈ {0} + init ∈ {1} + mcos_0[0..7][0..7] ∈ {0} + init_0 ∈ {1} + init_1 ∈ {1} + mc1[0..7][0..7] ∈ {0} + mc2[0..7][0..7] ∈ {0} + S___fc_stdin[0]{.__fc_stdio_id; .__fc_position; .__fc_error; .__fc_eof} ∈ + [--..--] + [0].[bits 80 to 95] ∈ UNINITIALIZED + [0].__fc_flags ∈ [--..--] + [0].__fc_inode ∈ {{ NULL ; &S___fc_inode_0_S___fc_stdin[0] }} + [0].__fc_real_data ∈ + {{ NULL ; &S___fc_real_data_0_S___fc_stdin[0] }} + {[0].__fc_real_data_max_size; [1]{.__fc_stdio_id; .__fc_position; .__fc_error; .__fc_eof}} ∈ + [--..--] + [1].[bits 80 to 95] ∈ UNINITIALIZED + [1].__fc_flags ∈ [--..--] + [1].__fc_inode ∈ {{ NULL ; &S___fc_inode_1_S___fc_stdin[0] }} + [1].__fc_real_data ∈ + {{ NULL ; &S___fc_real_data_1_S___fc_stdin[0] }} + [1].__fc_real_data_max_size ∈ [--..--] + S___fc_inode_0_S___fc_stdin[0..1] ∈ [--..--] + S___fc_real_data_0_S___fc_stdin[0..1] ∈ [--..--] + S___fc_inode_1_S___fc_stdin[0..1] ∈ [--..--] + S___fc_real_data_1_S___fc_stdin[0..1] ∈ [--..--] + S___fc_stdout[0]{.__fc_stdio_id; .__fc_position; .__fc_error; .__fc_eof} ∈ + [--..--] + [0].[bits 80 to 95] ∈ UNINITIALIZED + [0].__fc_flags ∈ [--..--] + [0].__fc_inode ∈ + {{ NULL ; &S___fc_inode_0_S___fc_stdout[0] }} + [0].__fc_real_data ∈ + {{ NULL ; &S___fc_real_data_0_S___fc_stdout[0] }} + {[0].__fc_real_data_max_size; [1]{.__fc_stdio_id; .__fc_position; .__fc_error; .__fc_eof}} ∈ + [--..--] + [1].[bits 80 to 95] ∈ UNINITIALIZED + [1].__fc_flags ∈ [--..--] + [1].__fc_inode ∈ + {{ NULL ; &S___fc_inode_1_S___fc_stdout[0] }} + [1].__fc_real_data ∈ + {{ NULL ; &S___fc_real_data_1_S___fc_stdout[0] }} + [1].__fc_real_data_max_size ∈ [--..--] + S___fc_inode_0_S___fc_stdout[0..1] ∈ [--..--] + S___fc_real_data_0_S___fc_stdout[0..1] ∈ [--..--] + S___fc_inode_1_S___fc_stdout[0..1] ∈ [--..--] + S___fc_real_data_1_S___fc_stdout[0..1] ∈ [--..--] +tests/idct/ieee_1180_1990.c:178:[value] entering loop for the first time +tests/idct/ieee_1180_1990.c:179:[value] entering loop for the first time +tests/idct/ieee_1180_1990.c:184:[value] entering loop for the first time +tests/idct/ieee_1180_1990.c:185:[value] entering loop for the first time +[value] computing for function idct <- main. + Called from tests/idct/ieee_1180_1990.c:187. +tests/idct/idct.c:87:[value] entering loop for the first time +tests/idct/idct.c:88:[value] entering loop for the first time +tests/idct/idct.c:125:[value] entering loop for the first time +tests/idct/idct.c:126:[value] entering loop for the first time +tests/idct/idct.c:128:[value] entering loop for the first time +tests/idct/idct.c:129:[value] warning: accessing uninitialized left-value. assert \initialized(&tmp1[i][j]); +tests/idct/idct.c:131:[value] warning: accessing uninitialized left-value. assert \initialized(&tmp1[i][j]); +tests/idct/idct.c:141:[value] warning: accessing uninitialized left-value. assert \initialized(&tmp1[i][j]); +tests/idct/idct.c:143:[value] warning: accessing uninitialized left-value. assert \initialized(&tmp1[i][j]); +tests/idct/idct.c:145:[value] warning: accessing uninitialized left-value. assert \initialized(&tmp1[i][j]); +tests/idct/idct.c:147:[value] warning: accessing uninitialized left-value. assert \initialized(&tmp1[i][j]); +tests/idct/idct.c:141:[value] warning: 2's complement assumed for overflow +tests/idct/idct.c:159:[value] entering loop for the first time +tests/idct/idct.c:160:[value] entering loop for the first time +tests/idct/idct.c:162:[value] entering loop for the first time +tests/idct/idct.c:163:[value] warning: 2's complement assumed for overflow +tests/idct/idct.c:163:[value] warning: accessing uninitialized left-value. assert \initialized(&tmp2[k][j]); +tests/idct/idct.c:163:[value] warning: accessing uninitialized left-value. assert \initialized(&tmp1[i][j]); +tests/idct/idct.c:166:[value] warning: accessing uninitialized left-value. assert \initialized(&tmp1[i][j]); +tests/idct/idct.c:176:[value] warning: 2's complement assumed for overflow +tests/idct/idct.c:176:[value] warning: accessing uninitialized left-value. assert \initialized(&tmp1[i][j]); +tests/idct/idct.c:178:[value] warning: accessing uninitialized left-value. assert \initialized(&tmp1[i][j]); +tests/idct/idct.c:180:[value] warning: accessing uninitialized left-value. assert \initialized(&tmp1[i][j]); +tests/idct/idct.c:182:[value] warning: accessing uninitialized left-value. assert \initialized(&tmp1[i][j]); +[value] Recording results for idct +[value] Done for function idct +tests/idct/ieee_1180_1990.c:189:[value] entering loop for the first time +tests/idct/ieee_1180_1990.c:190:[value] entering loop for the first time +tests/idct/ieee_1180_1990.c:191:[value] warning: accessing uninitialized left-value. assert \initialized(&m2[i][j]); +[value] computing for function printf <- main. + Called from tests/idct/ieee_1180_1990.c:195. +[value] using specification for function printf +[value] Done for function printf +[value] computing for function printf <- main. + Called from tests/idct/ieee_1180_1990.c:196. +[value] Done for function printf +tests/idct/ieee_1180_1990.c:202:[value] entering loop for the first time +[value] computing for function IEEE_1180_1990_mkbk <- main. + Called from tests/idct/ieee_1180_1990.c:211. +tests/idct/ieee_1180_1990.c:83:[value] entering loop for the first time +tests/idct/ieee_1180_1990.c:84:[value] entering loop for the first time +[value] computing for function IEEE_1180_1990_rand <- IEEE_1180_1990_mkbk <- main. + Called from tests/idct/ieee_1180_1990.c:85. +[value] Recording results for IEEE_1180_1990_rand +[value] Done for function IEEE_1180_1990_rand +[value] computing for function IEEE_1180_1990_rand <- IEEE_1180_1990_mkbk <- main. + Called from tests/idct/ieee_1180_1990.c:85. +tests/idct/ieee_1180_1990.c:69:[value] warning: 2's complement assumed for overflow +[value] Recording results for IEEE_1180_1990_rand +[value] Done for function IEEE_1180_1990_rand +[value] computing for function IEEE_1180_1990_rand <- IEEE_1180_1990_mkbk <- main. + Called from tests/idct/ieee_1180_1990.c:85. +[value] Recording results for IEEE_1180_1990_rand +[value] Done for function IEEE_1180_1990_rand +[value] computing for function IEEE_1180_1990_rand <- IEEE_1180_1990_mkbk <- main. + Called from tests/idct/ieee_1180_1990.c:85. +[value] Recording results for IEEE_1180_1990_rand +[value] Done for function IEEE_1180_1990_rand +[value] computing for function IEEE_1180_1990_rand <- IEEE_1180_1990_mkbk <- main. + Called from tests/idct/ieee_1180_1990.c:85. +[value] Recording results for IEEE_1180_1990_rand +[value] Done for function IEEE_1180_1990_rand +[value] computing for function IEEE_1180_1990_rand <- IEEE_1180_1990_mkbk <- main. + Called from tests/idct/ieee_1180_1990.c:85. +[value] Recording results for IEEE_1180_1990_rand +[value] Done for function IEEE_1180_1990_rand +[value] computing for function IEEE_1180_1990_rand <- IEEE_1180_1990_mkbk <- main. + Called from tests/idct/ieee_1180_1990.c:85. +[value] Recording results for IEEE_1180_1990_rand +[value] Done for function IEEE_1180_1990_rand +tests/idct/ieee_1180_1990.c:85:[value] Reusing old results for call to IEEE_1180_1990_rand +tests/idct/ieee_1180_1990.c:85:[value] Reusing old results for call to IEEE_1180_1990_rand +tests/idct/ieee_1180_1990.c:85:[value] Reusing old results for call to IEEE_1180_1990_rand +tests/idct/ieee_1180_1990.c:85:[value] Reusing old results for call to IEEE_1180_1990_rand +[value] Recording results for IEEE_1180_1990_mkbk +[value] Done for function IEEE_1180_1990_mkbk +[value] computing for function IEEE_1180_1990_dctf <- main. + Called from tests/idct/ieee_1180_1990.c:212. +tests/idct/ieee_1180_1990.c:98:[value] entering loop for the first time +tests/idct/ieee_1180_1990.c:99:[value] entering loop for the first time +tests/idct/ieee_1180_1990.c:104:[value] entering loop for the first time +tests/idct/ieee_1180_1990.c:105:[value] entering loop for the first time +tests/idct/ieee_1180_1990.c:108:[value] entering loop for the first time +tests/idct/ieee_1180_1990.c:109:[value] warning: accessing uninitialized left-value. assert \initialized(&tmp1[i][j]); +tests/idct/ieee_1180_1990.c:111:[value] entering loop for the first time +tests/idct/ieee_1180_1990.c:112:[value] entering loop for the first time +tests/idct/ieee_1180_1990.c:115:[value] entering loop for the first time +tests/idct/ieee_1180_1990.c:116:[value] warning: accessing uninitialized left-value. assert \initialized(&tmp1[i][k]); +tests/idct/ieee_1180_1990.c:116:[value] warning: accessing uninitialized left-value. assert \initialized(&tmp2[i][j]); +tests/idct/ieee_1180_1990.c:117:[value] warning: accessing uninitialized left-value. assert \initialized(&tmp2[i][j]); +tests/idct/ieee_1180_1990.c:119:[value] warning: accessing uninitialized left-value. assert \initialized(&tmp2[i][j]); +tests/idct/ieee_1180_1990.c:121:[value] warning: accessing uninitialized left-value. assert \initialized(&tmp2[i][j]); +tests/idct/ieee_1180_1990.c:122:[value] warning: accessing uninitialized left-value. assert \initialized(&tmp2[i][j]); +tests/idct/ieee_1180_1990.c:122:[value] warning: overflow in conversion from floating-point to integer. + assert -2147483649 < tmp2[i][j]+0.5; +tests/idct/ieee_1180_1990.c:122:[value] warning: overflow in conversion from floating-point to integer. + assert tmp2[i][j]+0.5 < 2147483648; +tests/idct/ieee_1180_1990.c:124:[value] warning: accessing uninitialized left-value. assert \initialized(&tmp2[i][j]); +tests/idct/ieee_1180_1990.c:124:[value] warning: overflow in conversion from floating-point to integer. + assert -2147483649 < tmp2[i][j]-0.5; +tests/idct/ieee_1180_1990.c:124:[value] warning: overflow in conversion from floating-point to integer. + assert tmp2[i][j]-0.5 < 2147483648; +[value] Recording results for IEEE_1180_1990_dctf +[value] Done for function IEEE_1180_1990_dctf +[value] computing for function IEEE_1180_1990_idctf <- main. + Called from tests/idct/ieee_1180_1990.c:213. +tests/idct/ieee_1180_1990.c:138:[value] entering loop for the first time +tests/idct/ieee_1180_1990.c:139:[value] entering loop for the first time +tests/idct/ieee_1180_1990.c:145:[value] entering loop for the first time +tests/idct/ieee_1180_1990.c:146:[value] entering loop for the first time +tests/idct/ieee_1180_1990.c:149:[value] entering loop for the first time +tests/idct/ieee_1180_1990.c:150:[value] warning: accessing uninitialized left-value. assert \initialized(&(*(m1+k))[j]); +tests/idct/ieee_1180_1990.c:150:[value] warning: accessing uninitialized left-value. assert \initialized(&tmp1[i][j]); +tests/idct/ieee_1180_1990.c:152:[value] entering loop for the first time +tests/idct/ieee_1180_1990.c:153:[value] entering loop for the first time +tests/idct/ieee_1180_1990.c:156:[value] entering loop for the first time +tests/idct/ieee_1180_1990.c:157:[value] warning: accessing uninitialized left-value. assert \initialized(&tmp1[i][k]); +tests/idct/ieee_1180_1990.c:157:[value] warning: accessing uninitialized left-value. assert \initialized(&tmp2[i][j]); +tests/idct/ieee_1180_1990.c:158:[value] warning: accessing uninitialized left-value. assert \initialized(&tmp2[i][j]); +tests/idct/ieee_1180_1990.c:160:[value] warning: accessing uninitialized left-value. assert \initialized(&tmp2[i][j]); +tests/idct/ieee_1180_1990.c:162:[value] warning: accessing uninitialized left-value. assert \initialized(&tmp2[i][j]); +tests/idct/ieee_1180_1990.c:163:[value] warning: accessing uninitialized left-value. assert \initialized(&tmp2[i][j]); +tests/idct/ieee_1180_1990.c:163:[value] warning: overflow in conversion from floating-point to integer. + assert -2147483649 < tmp2[i][j]+0.5; +tests/idct/ieee_1180_1990.c:163:[value] warning: overflow in conversion from floating-point to integer. + assert tmp2[i][j]+0.5 < 2147483648; +tests/idct/ieee_1180_1990.c:165:[value] warning: accessing uninitialized left-value. assert \initialized(&tmp2[i][j]); +tests/idct/ieee_1180_1990.c:165:[value] warning: overflow in conversion from floating-point to integer. + assert -2147483649 < tmp2[i][j]-0.5; +tests/idct/ieee_1180_1990.c:165:[value] warning: overflow in conversion from floating-point to integer. + assert tmp2[i][j]-0.5 < 2147483648; +[value] Recording results for IEEE_1180_1990_idctf +[value] Done for function IEEE_1180_1990_idctf +[value] computing for function idct <- main. + Called from tests/idct/ieee_1180_1990.c:214. +tests/idct/idct.c:129:[value] warning: 2's complement assumed for overflow +tests/idct/idct.c:129:[value] warning: accessing uninitialized left-value. assert \initialized(&(*(m1+k))[j]); +[value] Recording results for idct +[value] Done for function idct +tests/idct/ieee_1180_1990.c:215:[value] entering loop for the first time +tests/idct/ieee_1180_1990.c:216:[value] entering loop for the first time +tests/idct/ieee_1180_1990.c:218:[value] warning: 2's complement assumed for overflow +tests/idct/ieee_1180_1990.c:218:[value] warning: accessing uninitialized left-value. assert \initialized(&m3[j][k]); +tests/idct/ieee_1180_1990.c:218:[value] warning: accessing uninitialized left-value. assert \initialized(&m4[j][k]); +tests/idct/ieee_1180_1990.c:219:[value] warning: accessing uninitialized left-value. assert \initialized(&res[0].pme[j][k]); +tests/idct/ieee_1180_1990.c:220:[value] warning: 2's complement assumed for overflow +tests/idct/ieee_1180_1990.c:230:[value] warning: 2's complement assumed for overflow +tests/idct/ieee_1180_1990.c:231:[value] warning: accessing uninitialized left-value. assert \initialized(&res[0].pmse[j][k]); +tests/idct/ieee_1180_1990.c:219:[value] warning: 2's complement assumed for overflow +tests/idct/ieee_1180_1990.c:231:[value] warning: 2's complement assumed for overflow +tests/idct/ieee_1180_1990.c:233:[value] entering loop for the first time +tests/idct/ieee_1180_1990.c:234:[value] entering loop for the first time +[value] computing for function IEEE_1180_1990_dctf <- main. + Called from tests/idct/ieee_1180_1990.c:236. +[value] Recording results for IEEE_1180_1990_dctf +[value] Done for function IEEE_1180_1990_dctf +[value] computing for function IEEE_1180_1990_idctf <- main. + Called from tests/idct/ieee_1180_1990.c:237. +[value] Recording results for IEEE_1180_1990_idctf +[value] Done for function IEEE_1180_1990_idctf +[value] computing for function idct <- main. + Called from tests/idct/ieee_1180_1990.c:238. +[value] Recording results for idct +[value] Done for function idct +tests/idct/ieee_1180_1990.c:239:[value] entering loop for the first time +tests/idct/ieee_1180_1990.c:240:[value] entering loop for the first time +tests/idct/ieee_1180_1990.c:242:[value] warning: 2's complement assumed for overflow +tests/idct/ieee_1180_1990.c:242:[value] warning: accessing uninitialized left-value. assert \initialized(&m3[j][k]); +tests/idct/ieee_1180_1990.c:242:[value] warning: accessing uninitialized left-value. assert \initialized(&m4[j][k]); +tests/idct/ieee_1180_1990.c:243:[value] warning: accessing uninitialized left-value. assert \initialized(&res[3].pme[j][k]); +tests/idct/ieee_1180_1990.c:244:[value] warning: 2's complement assumed for overflow +tests/idct/ieee_1180_1990.c:254:[value] warning: 2's complement assumed for overflow +tests/idct/ieee_1180_1990.c:255:[value] warning: accessing uninitialized left-value. assert \initialized(&res[3].pmse[j][k]); +tests/idct/ieee_1180_1990.c:243:[value] warning: 2's complement assumed for overflow +tests/idct/ieee_1180_1990.c:255:[value] warning: 2's complement assumed for overflow +[value] computing for function IEEE_1180_1990_mkbk <- main. + Called from tests/idct/ieee_1180_1990.c:257. +[value] computing for function IEEE_1180_1990_rand <- IEEE_1180_1990_mkbk <- main. + Called from tests/idct/ieee_1180_1990.c:85. +[value] Recording results for IEEE_1180_1990_rand +[value] Done for function IEEE_1180_1990_rand +tests/idct/ieee_1180_1990.c:85:[value] Reusing old results for call to IEEE_1180_1990_rand +tests/idct/ieee_1180_1990.c:85:[value] Reusing old results for call to IEEE_1180_1990_rand +tests/idct/ieee_1180_1990.c:85:[value] Reusing old results for call to IEEE_1180_1990_rand +tests/idct/ieee_1180_1990.c:85:[value] Reusing old results for call to IEEE_1180_1990_rand +tests/idct/ieee_1180_1990.c:85:[value] Reusing old results for call to IEEE_1180_1990_rand +tests/idct/ieee_1180_1990.c:85:[value] Reusing old results for call to IEEE_1180_1990_rand +[value] Recording results for IEEE_1180_1990_mkbk +[value] Done for function IEEE_1180_1990_mkbk +tests/idct/ieee_1180_1990.c:258:[value] Reusing old results for call to IEEE_1180_1990_dctf +tests/idct/ieee_1180_1990.c:259:[value] Reusing old results for call to IEEE_1180_1990_idctf +tests/idct/ieee_1180_1990.c:260:[value] Reusing old results for call to idct +tests/idct/ieee_1180_1990.c:261:[value] entering loop for the first time +tests/idct/ieee_1180_1990.c:262:[value] entering loop for the first time +tests/idct/ieee_1180_1990.c:264:[value] warning: 2's complement assumed for overflow +tests/idct/ieee_1180_1990.c:264:[value] warning: accessing uninitialized left-value. assert \initialized(&m3[j][k]); +tests/idct/ieee_1180_1990.c:264:[value] warning: accessing uninitialized left-value. assert \initialized(&m4[j][k]); +tests/idct/ieee_1180_1990.c:265:[value] warning: accessing uninitialized left-value. assert \initialized(&res[1].pme[j][k]); +tests/idct/ieee_1180_1990.c:266:[value] warning: 2's complement assumed for overflow +tests/idct/ieee_1180_1990.c:276:[value] warning: 2's complement assumed for overflow +tests/idct/ieee_1180_1990.c:277:[value] warning: accessing uninitialized left-value. assert \initialized(&res[1].pmse[j][k]); +tests/idct/ieee_1180_1990.c:265:[value] warning: 2's complement assumed for overflow +tests/idct/ieee_1180_1990.c:277:[value] warning: 2's complement assumed for overflow +tests/idct/ieee_1180_1990.c:279:[value] entering loop for the first time +tests/idct/ieee_1180_1990.c:280:[value] entering loop for the first time +tests/idct/ieee_1180_1990.c:282:[value] Reusing old results for call to IEEE_1180_1990_dctf +tests/idct/ieee_1180_1990.c:283:[value] Reusing old results for call to IEEE_1180_1990_idctf +tests/idct/ieee_1180_1990.c:284:[value] Reusing old results for call to idct +tests/idct/ieee_1180_1990.c:285:[value] entering loop for the first time +tests/idct/ieee_1180_1990.c:286:[value] entering loop for the first time +tests/idct/ieee_1180_1990.c:288:[value] warning: 2's complement assumed for overflow +tests/idct/ieee_1180_1990.c:288:[value] warning: accessing uninitialized left-value. assert \initialized(&m3[j][k]); +tests/idct/ieee_1180_1990.c:288:[value] warning: accessing uninitialized left-value. assert \initialized(&m4[j][k]); +tests/idct/ieee_1180_1990.c:289:[value] warning: accessing uninitialized left-value. assert \initialized(&res[4].pme[j][k]); +tests/idct/ieee_1180_1990.c:290:[value] warning: 2's complement assumed for overflow +tests/idct/ieee_1180_1990.c:300:[value] warning: 2's complement assumed for overflow +tests/idct/ieee_1180_1990.c:301:[value] warning: accessing uninitialized left-value. assert \initialized(&res[4].pmse[j][k]); +tests/idct/ieee_1180_1990.c:289:[value] warning: 2's complement assumed for overflow +tests/idct/ieee_1180_1990.c:301:[value] warning: 2's complement assumed for overflow +[value] computing for function IEEE_1180_1990_mkbk <- main. + Called from tests/idct/ieee_1180_1990.c:303. +[value] computing for function IEEE_1180_1990_rand <- IEEE_1180_1990_mkbk <- main. + Called from tests/idct/ieee_1180_1990.c:85. +[value] Recording results for IEEE_1180_1990_rand +[value] Done for function IEEE_1180_1990_rand +tests/idct/ieee_1180_1990.c:85:[value] Reusing old results for call to IEEE_1180_1990_rand +tests/idct/ieee_1180_1990.c:85:[value] Reusing old results for call to IEEE_1180_1990_rand +tests/idct/ieee_1180_1990.c:85:[value] Reusing old results for call to IEEE_1180_1990_rand +tests/idct/ieee_1180_1990.c:85:[value] Reusing old results for call to IEEE_1180_1990_rand +tests/idct/ieee_1180_1990.c:85:[value] Reusing old results for call to IEEE_1180_1990_rand +tests/idct/ieee_1180_1990.c:85:[value] Reusing old results for call to IEEE_1180_1990_rand +[value] Recording results for IEEE_1180_1990_mkbk +[value] Done for function IEEE_1180_1990_mkbk +tests/idct/ieee_1180_1990.c:304:[value] Reusing old results for call to IEEE_1180_1990_dctf +tests/idct/ieee_1180_1990.c:305:[value] Reusing old results for call to IEEE_1180_1990_idctf +tests/idct/ieee_1180_1990.c:306:[value] Reusing old results for call to idct +tests/idct/ieee_1180_1990.c:307:[value] entering loop for the first time +tests/idct/ieee_1180_1990.c:308:[value] entering loop for the first time +tests/idct/ieee_1180_1990.c:310:[value] warning: 2's complement assumed for overflow +tests/idct/ieee_1180_1990.c:310:[value] warning: accessing uninitialized left-value. assert \initialized(&m3[j][k]); +tests/idct/ieee_1180_1990.c:310:[value] warning: accessing uninitialized left-value. assert \initialized(&m4[j][k]); +tests/idct/ieee_1180_1990.c:311:[value] warning: accessing uninitialized left-value. assert \initialized(&res[2].pme[j][k]); +tests/idct/ieee_1180_1990.c:312:[value] warning: 2's complement assumed for overflow +tests/idct/ieee_1180_1990.c:322:[value] warning: 2's complement assumed for overflow +tests/idct/ieee_1180_1990.c:323:[value] warning: accessing uninitialized left-value. assert \initialized(&res[2].pmse[j][k]); +tests/idct/ieee_1180_1990.c:311:[value] warning: 2's complement assumed for overflow +tests/idct/ieee_1180_1990.c:323:[value] warning: 2's complement assumed for overflow +tests/idct/ieee_1180_1990.c:325:[value] entering loop for the first time +tests/idct/ieee_1180_1990.c:326:[value] entering loop for the first time +tests/idct/ieee_1180_1990.c:328:[value] Reusing old results for call to IEEE_1180_1990_dctf +tests/idct/ieee_1180_1990.c:329:[value] Reusing old results for call to IEEE_1180_1990_idctf +tests/idct/ieee_1180_1990.c:330:[value] Reusing old results for call to idct +tests/idct/ieee_1180_1990.c:331:[value] entering loop for the first time +tests/idct/ieee_1180_1990.c:332:[value] entering loop for the first time +tests/idct/ieee_1180_1990.c:334:[value] warning: 2's complement assumed for overflow +tests/idct/ieee_1180_1990.c:334:[value] warning: accessing uninitialized left-value. assert \initialized(&m3[j][k]); +tests/idct/ieee_1180_1990.c:334:[value] warning: accessing uninitialized left-value. assert \initialized(&m4[j][k]); +tests/idct/ieee_1180_1990.c:335:[value] warning: accessing uninitialized left-value. assert \initialized(&res[5].pme[j][k]); +tests/idct/ieee_1180_1990.c:336:[value] warning: 2's complement assumed for overflow +tests/idct/ieee_1180_1990.c:346:[value] warning: 2's complement assumed for overflow +tests/idct/ieee_1180_1990.c:347:[value] warning: accessing uninitialized left-value. assert \initialized(&res[5].pmse[j][k]); +tests/idct/ieee_1180_1990.c:335:[value] warning: 2's complement assumed for overflow +tests/idct/ieee_1180_1990.c:347:[value] warning: 2's complement assumed for overflow +[value] computing for function IEEE_1180_1990_mkbk <- main. + Called from tests/idct/ieee_1180_1990.c:211. +tests/idct/ieee_1180_1990.c:85:[value] Reusing old results for call to IEEE_1180_1990_rand +tests/idct/ieee_1180_1990.c:85:[value] Reusing old results for call to IEEE_1180_1990_rand +tests/idct/ieee_1180_1990.c:85:[value] Reusing old results for call to IEEE_1180_1990_rand +tests/idct/ieee_1180_1990.c:85:[value] Reusing old results for call to IEEE_1180_1990_rand +tests/idct/ieee_1180_1990.c:85:[value] Reusing old results for call to IEEE_1180_1990_rand +tests/idct/ieee_1180_1990.c:85:[value] Reusing old results for call to IEEE_1180_1990_rand +tests/idct/ieee_1180_1990.c:85:[value] Reusing old results for call to IEEE_1180_1990_rand +[value] Recording results for IEEE_1180_1990_mkbk +[value] Done for function IEEE_1180_1990_mkbk +[value] computing for function IEEE_1180_1990_dctf <- main. + Called from tests/idct/ieee_1180_1990.c:212. +[value] Recording results for IEEE_1180_1990_dctf +[value] Done for function IEEE_1180_1990_dctf +[value] computing for function IEEE_1180_1990_idctf <- main. + Called from tests/idct/ieee_1180_1990.c:213. +[value] Recording results for IEEE_1180_1990_idctf +[value] Done for function IEEE_1180_1990_idctf +tests/idct/ieee_1180_1990.c:214:[value] Reusing old results for call to idct +tests/idct/ieee_1180_1990.c:235:[value] warning: 2's complement assumed for overflow +[value] computing for function IEEE_1180_1990_dctf <- main. + Called from tests/idct/ieee_1180_1990.c:236. +[value] Recording results for IEEE_1180_1990_dctf +[value] Done for function IEEE_1180_1990_dctf +tests/idct/ieee_1180_1990.c:237:[value] Reusing old results for call to IEEE_1180_1990_idctf +tests/idct/ieee_1180_1990.c:238:[value] Reusing old results for call to idct +[value] computing for function IEEE_1180_1990_mkbk <- main. + Called from tests/idct/ieee_1180_1990.c:257. +tests/idct/ieee_1180_1990.c:85:[value] Reusing old results for call to IEEE_1180_1990_rand +tests/idct/ieee_1180_1990.c:85:[value] Reusing old results for call to IEEE_1180_1990_rand +tests/idct/ieee_1180_1990.c:85:[value] Reusing old results for call to IEEE_1180_1990_rand +tests/idct/ieee_1180_1990.c:85:[value] Reusing old results for call to IEEE_1180_1990_rand +tests/idct/ieee_1180_1990.c:85:[value] Reusing old results for call to IEEE_1180_1990_rand +tests/idct/ieee_1180_1990.c:85:[value] Reusing old results for call to IEEE_1180_1990_rand +tests/idct/ieee_1180_1990.c:85:[value] Reusing old results for call to IEEE_1180_1990_rand +[value] Recording results for IEEE_1180_1990_mkbk +[value] Done for function IEEE_1180_1990_mkbk +tests/idct/ieee_1180_1990.c:258:[value] Reusing old results for call to IEEE_1180_1990_dctf +tests/idct/ieee_1180_1990.c:259:[value] Reusing old results for call to IEEE_1180_1990_idctf +tests/idct/ieee_1180_1990.c:260:[value] Reusing old results for call to idct +tests/idct/ieee_1180_1990.c:281:[value] warning: 2's complement assumed for overflow +tests/idct/ieee_1180_1990.c:282:[value] Reusing old results for call to IEEE_1180_1990_dctf +tests/idct/ieee_1180_1990.c:283:[value] Reusing old results for call to IEEE_1180_1990_idctf +tests/idct/ieee_1180_1990.c:284:[value] Reusing old results for call to idct +[value] computing for function IEEE_1180_1990_mkbk <- main. + Called from tests/idct/ieee_1180_1990.c:303. +tests/idct/ieee_1180_1990.c:85:[value] Reusing old results for call to IEEE_1180_1990_rand +tests/idct/ieee_1180_1990.c:85:[value] Reusing old results for call to IEEE_1180_1990_rand +tests/idct/ieee_1180_1990.c:85:[value] Reusing old results for call to IEEE_1180_1990_rand +tests/idct/ieee_1180_1990.c:85:[value] Reusing old results for call to IEEE_1180_1990_rand +tests/idct/ieee_1180_1990.c:85:[value] Reusing old results for call to IEEE_1180_1990_rand +tests/idct/ieee_1180_1990.c:85:[value] Reusing old results for call to IEEE_1180_1990_rand +tests/idct/ieee_1180_1990.c:85:[value] Reusing old results for call to IEEE_1180_1990_rand +[value] Recording results for IEEE_1180_1990_mkbk +[value] Done for function IEEE_1180_1990_mkbk +tests/idct/ieee_1180_1990.c:304:[value] Reusing old results for call to IEEE_1180_1990_dctf +tests/idct/ieee_1180_1990.c:305:[value] Reusing old results for call to IEEE_1180_1990_idctf +tests/idct/ieee_1180_1990.c:306:[value] Reusing old results for call to idct +tests/idct/ieee_1180_1990.c:327:[value] warning: 2's complement assumed for overflow +tests/idct/ieee_1180_1990.c:328:[value] Reusing old results for call to IEEE_1180_1990_dctf +tests/idct/ieee_1180_1990.c:329:[value] Reusing old results for call to IEEE_1180_1990_idctf +tests/idct/ieee_1180_1990.c:330:[value] Reusing old results for call to idct +[value] computing for function IEEE_1180_1990_mkbk <- main. + Called from tests/idct/ieee_1180_1990.c:211. +tests/idct/ieee_1180_1990.c:85:[value] Reusing old results for call to IEEE_1180_1990_rand +tests/idct/ieee_1180_1990.c:85:[value] Reusing old results for call to IEEE_1180_1990_rand +tests/idct/ieee_1180_1990.c:85:[value] Reusing old results for call to IEEE_1180_1990_rand +tests/idct/ieee_1180_1990.c:85:[value] Reusing old results for call to IEEE_1180_1990_rand +tests/idct/ieee_1180_1990.c:85:[value] Reusing old results for call to IEEE_1180_1990_rand +tests/idct/ieee_1180_1990.c:85:[value] Reusing old results for call to IEEE_1180_1990_rand +tests/idct/ieee_1180_1990.c:85:[value] Reusing old results for call to IEEE_1180_1990_rand +[value] Recording results for IEEE_1180_1990_mkbk +[value] Done for function IEEE_1180_1990_mkbk +[value] computing for function IEEE_1180_1990_dctf <- main. + Called from tests/idct/ieee_1180_1990.c:212. +[value] Recording results for IEEE_1180_1990_dctf +[value] Done for function IEEE_1180_1990_dctf +tests/idct/ieee_1180_1990.c:213:[value] Reusing old results for call to IEEE_1180_1990_idctf +tests/idct/ieee_1180_1990.c:214:[value] Reusing old results for call to idct +tests/idct/ieee_1180_1990.c:236:[value] Reusing old results for call to IEEE_1180_1990_dctf +tests/idct/ieee_1180_1990.c:237:[value] Reusing old results for call to IEEE_1180_1990_idctf +tests/idct/ieee_1180_1990.c:238:[value] Reusing old results for call to idct +tests/idct/ieee_1180_1990.c:257:[value] Reusing old results for call to IEEE_1180_1990_mkbk +tests/idct/ieee_1180_1990.c:258:[value] Reusing old results for call to IEEE_1180_1990_dctf +tests/idct/ieee_1180_1990.c:259:[value] Reusing old results for call to IEEE_1180_1990_idctf +tests/idct/ieee_1180_1990.c:260:[value] Reusing old results for call to idct +tests/idct/ieee_1180_1990.c:282:[value] Reusing old results for call to IEEE_1180_1990_dctf +tests/idct/ieee_1180_1990.c:283:[value] Reusing old results for call to IEEE_1180_1990_idctf +tests/idct/ieee_1180_1990.c:284:[value] Reusing old results for call to idct +tests/idct/ieee_1180_1990.c:303:[value] Reusing old results for call to IEEE_1180_1990_mkbk +tests/idct/ieee_1180_1990.c:304:[value] Reusing old results for call to IEEE_1180_1990_dctf +tests/idct/ieee_1180_1990.c:305:[value] Reusing old results for call to IEEE_1180_1990_idctf +tests/idct/ieee_1180_1990.c:306:[value] Reusing old results for call to idct +tests/idct/ieee_1180_1990.c:328:[value] Reusing old results for call to IEEE_1180_1990_dctf +tests/idct/ieee_1180_1990.c:329:[value] Reusing old results for call to IEEE_1180_1990_idctf +tests/idct/ieee_1180_1990.c:330:[value] Reusing old results for call to idct +tests/idct/ieee_1180_1990.c:211:[value] Reusing old results for call to IEEE_1180_1990_mkbk +tests/idct/ieee_1180_1990.c:212:[value] Reusing old results for call to IEEE_1180_1990_dctf +tests/idct/ieee_1180_1990.c:213:[value] Reusing old results for call to IEEE_1180_1990_idctf +tests/idct/ieee_1180_1990.c:214:[value] Reusing old results for call to idct +tests/idct/ieee_1180_1990.c:236:[value] Reusing old results for call to IEEE_1180_1990_dctf +tests/idct/ieee_1180_1990.c:237:[value] Reusing old results for call to IEEE_1180_1990_idctf +tests/idct/ieee_1180_1990.c:238:[value] Reusing old results for call to idct +tests/idct/ieee_1180_1990.c:257:[value] Reusing old results for call to IEEE_1180_1990_mkbk +tests/idct/ieee_1180_1990.c:258:[value] Reusing old results for call to IEEE_1180_1990_dctf +tests/idct/ieee_1180_1990.c:259:[value] Reusing old results for call to IEEE_1180_1990_idctf +tests/idct/ieee_1180_1990.c:260:[value] Reusing old results for call to idct +tests/idct/ieee_1180_1990.c:282:[value] Reusing old results for call to IEEE_1180_1990_dctf +tests/idct/ieee_1180_1990.c:283:[value] Reusing old results for call to IEEE_1180_1990_idctf +tests/idct/ieee_1180_1990.c:284:[value] Reusing old results for call to idct +tests/idct/ieee_1180_1990.c:303:[value] Reusing old results for call to IEEE_1180_1990_mkbk +tests/idct/ieee_1180_1990.c:304:[value] Reusing old results for call to IEEE_1180_1990_dctf +tests/idct/ieee_1180_1990.c:305:[value] Reusing old results for call to IEEE_1180_1990_idctf +tests/idct/ieee_1180_1990.c:306:[value] Reusing old results for call to idct +tests/idct/ieee_1180_1990.c:328:[value] Reusing old results for call to IEEE_1180_1990_dctf +tests/idct/ieee_1180_1990.c:329:[value] Reusing old results for call to IEEE_1180_1990_idctf +tests/idct/ieee_1180_1990.c:330:[value] Reusing old results for call to idct +tests/idct/ieee_1180_1990.c:211:[value] Reusing old results for call to IEEE_1180_1990_mkbk +tests/idct/ieee_1180_1990.c:212:[value] Reusing old results for call to IEEE_1180_1990_dctf +tests/idct/ieee_1180_1990.c:213:[value] Reusing old results for call to IEEE_1180_1990_idctf +tests/idct/ieee_1180_1990.c:214:[value] Reusing old results for call to idct +tests/idct/ieee_1180_1990.c:236:[value] Reusing old results for call to IEEE_1180_1990_dctf +tests/idct/ieee_1180_1990.c:237:[value] Reusing old results for call to IEEE_1180_1990_idctf +tests/idct/ieee_1180_1990.c:238:[value] Reusing old results for call to idct +tests/idct/ieee_1180_1990.c:257:[value] Reusing old results for call to IEEE_1180_1990_mkbk +tests/idct/ieee_1180_1990.c:258:[value] Reusing old results for call to IEEE_1180_1990_dctf +tests/idct/ieee_1180_1990.c:259:[value] Reusing old results for call to IEEE_1180_1990_idctf +tests/idct/ieee_1180_1990.c:260:[value] Reusing old results for call to idct +tests/idct/ieee_1180_1990.c:282:[value] Reusing old results for call to IEEE_1180_1990_dctf +tests/idct/ieee_1180_1990.c:283:[value] Reusing old results for call to IEEE_1180_1990_idctf +tests/idct/ieee_1180_1990.c:284:[value] Reusing old results for call to idct +tests/idct/ieee_1180_1990.c:303:[value] Reusing old results for call to IEEE_1180_1990_mkbk +tests/idct/ieee_1180_1990.c:304:[value] Reusing old results for call to IEEE_1180_1990_dctf +tests/idct/ieee_1180_1990.c:305:[value] Reusing old results for call to IEEE_1180_1990_idctf +tests/idct/ieee_1180_1990.c:306:[value] Reusing old results for call to idct +tests/idct/ieee_1180_1990.c:328:[value] Reusing old results for call to IEEE_1180_1990_dctf +tests/idct/ieee_1180_1990.c:329:[value] Reusing old results for call to IEEE_1180_1990_idctf +tests/idct/ieee_1180_1990.c:330:[value] Reusing old results for call to idct +tests/idct/ieee_1180_1990.c:211:[value] Reusing old results for call to IEEE_1180_1990_mkbk +tests/idct/ieee_1180_1990.c:212:[value] Reusing old results for call to IEEE_1180_1990_dctf +tests/idct/ieee_1180_1990.c:213:[value] Reusing old results for call to IEEE_1180_1990_idctf +tests/idct/ieee_1180_1990.c:214:[value] Reusing old results for call to idct +tests/idct/ieee_1180_1990.c:236:[value] Reusing old results for call to IEEE_1180_1990_dctf +tests/idct/ieee_1180_1990.c:237:[value] Reusing old results for call to IEEE_1180_1990_idctf +tests/idct/ieee_1180_1990.c:238:[value] Reusing old results for call to idct +tests/idct/ieee_1180_1990.c:257:[value] Reusing old results for call to IEEE_1180_1990_mkbk +tests/idct/ieee_1180_1990.c:258:[value] Reusing old results for call to IEEE_1180_1990_dctf +tests/idct/ieee_1180_1990.c:259:[value] Reusing old results for call to IEEE_1180_1990_idctf +tests/idct/ieee_1180_1990.c:260:[value] Reusing old results for call to idct +tests/idct/ieee_1180_1990.c:282:[value] Reusing old results for call to IEEE_1180_1990_dctf +tests/idct/ieee_1180_1990.c:283:[value] Reusing old results for call to IEEE_1180_1990_idctf +tests/idct/ieee_1180_1990.c:284:[value] Reusing old results for call to idct +tests/idct/ieee_1180_1990.c:303:[value] Reusing old results for call to IEEE_1180_1990_mkbk +tests/idct/ieee_1180_1990.c:304:[value] Reusing old results for call to IEEE_1180_1990_dctf +tests/idct/ieee_1180_1990.c:305:[value] Reusing old results for call to IEEE_1180_1990_idctf +tests/idct/ieee_1180_1990.c:306:[value] Reusing old results for call to idct +tests/idct/ieee_1180_1990.c:328:[value] Reusing old results for call to IEEE_1180_1990_dctf +tests/idct/ieee_1180_1990.c:329:[value] Reusing old results for call to IEEE_1180_1990_idctf +tests/idct/ieee_1180_1990.c:330:[value] Reusing old results for call to idct +tests/idct/ieee_1180_1990.c:211:[value] Reusing old results for call to IEEE_1180_1990_mkbk +tests/idct/ieee_1180_1990.c:212:[value] Reusing old results for call to IEEE_1180_1990_dctf +tests/idct/ieee_1180_1990.c:213:[value] Reusing old results for call to IEEE_1180_1990_idctf +tests/idct/ieee_1180_1990.c:214:[value] Reusing old results for call to idct +tests/idct/ieee_1180_1990.c:236:[value] Reusing old results for call to IEEE_1180_1990_dctf +tests/idct/ieee_1180_1990.c:237:[value] Reusing old results for call to IEEE_1180_1990_idctf +tests/idct/ieee_1180_1990.c:238:[value] Reusing old results for call to idct +tests/idct/ieee_1180_1990.c:257:[value] Reusing old results for call to IEEE_1180_1990_mkbk +tests/idct/ieee_1180_1990.c:258:[value] Reusing old results for call to IEEE_1180_1990_dctf +tests/idct/ieee_1180_1990.c:259:[value] Reusing old results for call to IEEE_1180_1990_idctf +tests/idct/ieee_1180_1990.c:260:[value] Reusing old results for call to idct +tests/idct/ieee_1180_1990.c:282:[value] Reusing old results for call to IEEE_1180_1990_dctf +tests/idct/ieee_1180_1990.c:283:[value] Reusing old results for call to IEEE_1180_1990_idctf +tests/idct/ieee_1180_1990.c:284:[value] Reusing old results for call to idct +tests/idct/ieee_1180_1990.c:303:[value] Reusing old results for call to IEEE_1180_1990_mkbk +tests/idct/ieee_1180_1990.c:304:[value] Reusing old results for call to IEEE_1180_1990_dctf +tests/idct/ieee_1180_1990.c:305:[value] Reusing old results for call to IEEE_1180_1990_idctf +tests/idct/ieee_1180_1990.c:306:[value] Reusing old results for call to idct +tests/idct/ieee_1180_1990.c:328:[value] Reusing old results for call to IEEE_1180_1990_dctf +tests/idct/ieee_1180_1990.c:329:[value] Reusing old results for call to IEEE_1180_1990_idctf +tests/idct/ieee_1180_1990.c:330:[value] Reusing old results for call to idct +tests/idct/ieee_1180_1990.c:211:[value] Reusing old results for call to IEEE_1180_1990_mkbk +tests/idct/ieee_1180_1990.c:212:[value] Reusing old results for call to IEEE_1180_1990_dctf +tests/idct/ieee_1180_1990.c:213:[value] Reusing old results for call to IEEE_1180_1990_idctf +tests/idct/ieee_1180_1990.c:214:[value] Reusing old results for call to idct +tests/idct/ieee_1180_1990.c:350:[value] entering loop for the first time +tests/idct/ieee_1180_1990.c:354:[value] entering loop for the first time +tests/idct/ieee_1180_1990.c:355:[value] entering loop for the first time +tests/idct/ieee_1180_1990.c:357:[value] warning: accessing uninitialized left-value. assert \initialized(&res[i].pmse[j][k]); +tests/idct/ieee_1180_1990.c:368:[value] warning: accessing uninitialized left-value. assert \initialized(&res[i].pme[j][k]); +tests/idct/ieee_1180_1990.c:369:[value] warning: 2's complement assumed for overflow +tests/idct/ieee_1180_1990.c:357:[value] warning: 2's complement assumed for overflow +tests/idct/ieee_1180_1990.c:358:[value] warning: accessing uninitialized left-value. assert \initialized(&res[i].pmse[j][k]); +tests/idct/ieee_1180_1990.c:368:[value] warning: 2's complement assumed for overflow +tests/idct/ieee_1180_1990.c:369:[value] warning: accessing uninitialized left-value. assert \initialized(&res[i].pme[j][k]); +tests/idct/ieee_1180_1990.c:369:[value] warning: accessing uninitialized left-value. assert \initialized(&res[i].pme[j][k]); +tests/idct/ieee_1180_1990.c:369:[value] warning: accessing uninitialized left-value. + assert \initialized(&tmp_5); + (tmp_5 from (((res[i]).pme)[j])[k] < + 0?- res[i].pme[j][k]:res[i].pme[j][k]) +tests/idct/ieee_1180_1990.c:389:[value] warning: 2's complement assumed for overflow +[value] Recording results for main +[value] done for function main +[scope:rm_asserts] removing 13 assertion(s) +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function IEEE_1180_1990_rand: + i ∈ [0..2147483646] + j ∈ [0..600] + x ∈ [0.0000000000000000 .. 600.9999997201375663] + randx ∈ [--..--] + __retres ∈ [-300..300] +[value:final-states] Values at end of function IEEE_1180_1990_mkbk: + i ∈ {8} + j ∈ {8} or UNINITIALIZED + M1[0..7][0..7] ∈ [--..--] + randx ∈ [--..--] +[value:final-states] Values at end of function IEEE_1180_1990_dctf: + i ∈ {8} + j ∈ {8} or UNINITIALIZED + k ∈ {8} or UNINITIALIZED + tmp1[0..7][0..7] ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] or UNINITIALIZED + tmp2[0..7][0..7] ∈ + [-1.9999999999999998*2^1023 .. 1.6867516709168837*2^265] or UNINITIALIZED + m2[0..7][0..7] ∈ [--..--] or UNINITIALIZED + mcos[0..7][0..7] ∈ [-1.0000000000000000*2^-1 .. 1.0000000000000000*2^-1] + init ∈ {0} +[value:final-states] Values at end of function IEEE_1180_1990_idctf: + i ∈ {8} + j ∈ {8} or UNINITIALIZED + k ∈ {8} or UNINITIALIZED + tmp1[0..7][0..7] ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] or UNINITIALIZED + tmp2[0..7][0..7] ∈ + [-1.9999999999999998*2^1023 .. 1.6867516709168837*2^265] or UNINITIALIZED + m3[0..7][0..7] ∈ [--..--] or UNINITIALIZED + mcos_0[0..7][0..7] ∈ + [-1.0000000000000000*2^-1 .. 1.0000000000000000*2^-1] + init_0 ∈ {0} +[value:final-states] Values at end of function idct: + m2[0..7][0..7] ∈ [--..--] or UNINITIALIZED + m4[0..7][0..7] ∈ [--..--] or UNINITIALIZED + i ∈ {8} + j ∈ {8} or UNINITIALIZED + k ∈ {8} or UNINITIALIZED + tmp1[0..7][0..7] ∈ [--..--] or UNINITIALIZED + tmp2[0..7][0..7] ∈ [--..--] or UNINITIALIZED + ftmp1 ∈ + [-1.0000610351562500*2^13 .. 1.0000610351562500*2^13] or UNINITIALIZED + ftmp2 ∈ + [-1.0000610351562500*2^13 .. 1.0000610351562500*2^13] or UNINITIALIZED + init_1 ∈ {0} + mc1[0..7][0..7] ∈ [-8192..8192] + mc2[0..7][0..7] ∈ [-8192..8192] +[value:final-states] Values at end of function main: + res[0..5] ∈ [--..--] or UNINITIALIZED + i ∈ {6} + j ∈ {8} + k ∈ {8} or UNINITIALIZED + m2[0..7][0..7] ∈ [--..--] or UNINITIALIZED + m3[0..7][0..7] ∈ [--..--] or UNINITIALIZED + m4[0..7][0..7] ∈ [--..--] or UNINITIALIZED + succ ∈ {0; 1} + omse ∈ [--..--] or UNINITIALIZED + ome ∈ [--..--] or UNINITIALIZED + err ∈ [--..--] or UNINITIALIZED + M1[0..7][0..7] ∈ [--..--] + randx ∈ [--..--] + mcos[0..7][0..7] ∈ [-1.0000000000000000*2^-1 .. 1.0000000000000000*2^-1] + init ∈ {0; 1} + mcos_0[0..7][0..7] ∈ + [-1.0000000000000000*2^-1 .. 1.0000000000000000*2^-1] + init_0 ∈ {0; 1} + init_1 ∈ {0} + mc1[0..7][0..7] ∈ [-8192..8192] + mc2[0..7][0..7] ∈ [-8192..8192] + __retres ∈ {0; 1} + S___fc_stdout[0]{.__fc_stdio_id; .__fc_position; .__fc_error; .__fc_eof} ∈ + [--..--] + [0].[bits 80 to 95] ∈ [--..--] or UNINITIALIZED + [0].__fc_flags ∈ [--..--] + [0].__fc_inode ∈ + {{ NULL + [--..--] ; &S___fc_inode_0_S___fc_stdout[0] }} + [0].__fc_real_data ∈ + {{ NULL + [--..--] ; &S___fc_real_data_0_S___fc_stdout[0] }} + {[0].__fc_real_data_max_size; [1]{.__fc_stdio_id; .__fc_position; .__fc_error; .__fc_eof}} ∈ + [--..--] + [1].[bits 80 to 95] ∈ UNINITIALIZED + [1].__fc_flags ∈ [--..--] + [1].__fc_inode ∈ + {{ NULL ; &S___fc_inode_1_S___fc_stdout[0] }} + [1].__fc_real_data ∈ + {{ NULL ; &S___fc_real_data_1_S___fc_stdout[0] }} + [1].__fc_real_data_max_size ∈ [--..--] +[from] Computing for function IEEE_1180_1990_rand +[from] Done for function IEEE_1180_1990_rand +[from] Computing for function IEEE_1180_1990_mkbk +[from] Done for function IEEE_1180_1990_mkbk +[from] Computing for function IEEE_1180_1990_dctf +[from] Computing for function sqrt <-IEEE_1180_1990_dctf +[from] Done for function sqrt +[from] Computing for function cos <-IEEE_1180_1990_dctf +[from] Done for function cos +[from] Done for function IEEE_1180_1990_dctf +[from] Computing for function IEEE_1180_1990_idctf +[from] Done for function IEEE_1180_1990_idctf +[from] Computing for function idct +[from] Done for function idct +[from] Computing for function main +[from] Computing for function printf <-main +[from] Done for function printf +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function IEEE_1180_1990_rand: + randx FROM randx + \result FROM L; H; randx; z +[from] Function IEEE_1180_1990_mkbk: + M1[0..7][0..7] FROM min; max; randx; z (and SELF) + randx FROM randx (and SELF) +[from] Function cos: + \result FROM x +[from] Function printf: + S___fc_stdout[0] + FROM "For all-zero input, the proposed IDCT shall generate all-zero "[bits 0 to 503]; + "output.\n"[bits 0 to 71] (and SELF) + \result FROM ANYTHING(origin:Unknown) +[from] Function sqrt: + \result FROM x +[from] Function IEEE_1180_1990_dctf: + m2[0..7][0..7] FROM m1; m2; M1[0..7][0..7]; mcos[0..7][0..7]; + init (and SELF) + mcos[0..7][0..7] FROM init (and SELF) + init FROM init (and SELF) +[from] Function IEEE_1180_1990_idctf: + m3[0..7][0..7] FROM m1; m2; m2[0..7][0..7]; mcos_0[0..7][0..7]; + init_0 (and SELF) + mcos_0[0..7][0..7] FROM init_0 (and SELF) + init_0 FROM init_0 (and SELF) +[from] Function idct: + m2[0..7][0..7] FROM m2[0..7][0..7]; m1; m2; M1[0..7][0..7]; init_1; + mc1[0..7][0..7]; mc2[0..7][0..7] (and SELF) + m4[0..7][0..7] FROM m2[0..7][0..7]; m1; m2; M1[0..7][0..7]; init_1; + mc1[0..7][0..7]; mc2[0..7][0..7] (and SELF) + init_1 FROM init_1 (and SELF) + mc1[0..7][0..7] FROM init_1 (and SELF) + mc2[0..7][0..7] FROM init_1 (and SELF) +[from] Function main: + M1[0..7][0..7] FROM M1[0..7][0..7]; randx; z (and SELF) + randx FROM randx (and SELF) + mcos[0..7][0..7] FROM init (and SELF) + init FROM init (and SELF) + mcos_0[0..7][0..7] FROM init_0 (and SELF) + init_0 FROM init_0 (and SELF) + init_1 FROM init_1 (and SELF) + mc1[0..7][0..7] FROM init_1 (and SELF) + mc2[0..7][0..7] FROM init_1 (and SELF) + S___fc_stdout[0] + FROM M1[0..7][0..7]; init_1; mc1[0..7][0..7]; mc2[0..7][0..7]; + "For all-zero input, the proposed IDCT shall generate all-zero "[bits 0 to 503]; + "output.\n"[bits 0 to 71] (and SELF) + \result FROM M1[0..7][0..7]; randx; z; mcos[0..7][0..7]; init; + mcos_0[0..7][0..7]; init_0; init_1; mc1[0..7][0..7]; + mc2[0..7][0..7] +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function IEEE_1180_1990_rand: + i; j; x; randx; __retres +[inout] Inputs for function IEEE_1180_1990_rand: + randx; z +[inout] Out (internal) for function IEEE_1180_1990_mkbk: + i; j; M1[0..7][0..7]; randx +[inout] Inputs for function IEEE_1180_1990_mkbk: + randx; z +[inout] Out (internal) for function IEEE_1180_1990_dctf: + i; j; k; tmp1[0..7][0..7]; tmp2[0..7][0..7]; tmp; tmp_0; tmp_1; + m2[0..7][0..7]; mcos[0..7][0..7]; init +[inout] Inputs for function IEEE_1180_1990_dctf: + M1[0..7][0..7]; mcos[0..7][0..7]; init +[inout] Out (internal) for function IEEE_1180_1990_idctf: + i; j; k; tmp1[0..7][0..7]; tmp2[0..7][0..7]; tmp; tmp_0; tmp_1; + m3[0..7][0..7]; mcos_0[0..7][0..7]; init_0 +[inout] Inputs for function IEEE_1180_1990_idctf: + m2[0..7][0..7]; mcos_0[0..7][0..7]; init_0 +[inout] Out (internal) for function idct: + m2[0..7][0..7]; m4[0..7][0..7]; i; j; k; tmp1[0..7][0..7]; + tmp2[0..7][0..7]; ftmp1; ftmp2; tmp; tmp_0; tmp_1; init_1; mc1[0..7][0..7]; + mc2[0..7][0..7] +[inout] Inputs for function idct: + m2[0..7][0..7]; M1[0..7][0..7]; init_1; mc1[0..7][0..7]; mc2[0..7][0..7] +[inout] Out (internal) for function main: + res[0..5]; i; j; k; m2[0..7][0..7]; m3[0..7][0..7]; m4[0..7][0..7]; + succ; omse; ome; err; tmp; tmp_0; tmp_1; tmp_2; tmp_3; tmp_4; tmp_5; + tmp_6; M1[0..7][0..7]; randx; mcos[0..7][0..7]; init; mcos_0[0..7][0..7]; + init_0; init_1; mc1[0..7][0..7]; mc2[0..7][0..7]; __retres; + S___fc_stdout[0] +[inout] Inputs for function main: + M1[0..7][0..7]; randx; z; mcos[0..7][0..7]; init; mcos_0[0..7][0..7]; + init_0; init_1; mc1[0..7][0..7]; mc2[0..7][0..7]; + "For all-zero input, the proposed IDCT shall generate all-zero "[bits 0 to 503]; + "output.\n"[bits 0 to 71] +[report] Computing properties status... +-------------------------------------------------------------------------------- +--- Global Properties +-------------------------------------------------------------------------------- + +[ Extern ] Axiom 'memchr_def' + axiom memchr_def + Unverifiable but considered Valid. +[ Extern ] Axiom 'memcmp_strlen_left' + axiom memcmp_strlen_left + Unverifiable but considered Valid. +[ Extern ] Axiom 'memcmp_strlen_right' + axiom memcmp_strlen_right + Unverifiable but considered Valid. +[ Extern ] Axiom 'memcmp_strlen_shift_left' + axiom memcmp_strlen_shift_left + Unverifiable but considered Valid. +[ Extern ] Axiom 'memcmp_strlen_shift_right' + axiom memcmp_strlen_shift_right + Unverifiable but considered Valid. +[ Extern ] Axiom 'memcmp_zero' + axiom memcmp_zero + Unverifiable but considered Valid. +[ Extern ] Axiom 'memset_def' + axiom memset_def + Unverifiable but considered Valid. +[ Extern ] Axiom 'strchr_def' + axiom strchr_def + Unverifiable but considered Valid. +[ Extern ] Axiom 'strcmp_zero' + axiom strcmp_zero + Unverifiable but considered Valid. +[ Extern ] Axiom 'strlen_at_null' + axiom strlen_at_null + Unverifiable but considered Valid. +[ Extern ] Axiom 'strlen_before_null' + axiom strlen_before_null + Unverifiable but considered Valid. +[ Extern ] Axiom 'strlen_create' + axiom strlen_create + Unverifiable but considered Valid. +[ Extern ] Axiom 'strlen_create_shift' + axiom strlen_create_shift + Unverifiable but considered Valid. +[ Extern ] Axiom 'strlen_neg' + axiom strlen_neg + Unverifiable but considered Valid. +[ Extern ] Axiom 'strlen_not_zero' + axiom strlen_not_zero + Unverifiable but considered Valid. +[ Extern ] Axiom 'strlen_pos_or_null' + axiom strlen_pos_or_null + Unverifiable but considered Valid. +[ Extern ] Axiom 'strlen_shift' + axiom strlen_shift + Unverifiable but considered Valid. +[ Extern ] Axiom 'strlen_sup' + axiom strlen_sup + Unverifiable but considered Valid. +[ Extern ] Axiom 'strlen_zero' + axiom strlen_zero + Unverifiable but considered Valid. +[ Extern ] Axiom 'strncmp_zero' + axiom strncmp_zero + Unverifiable but considered Valid. +[ Extern ] Axiom 'wcscmp_zero' + axiom wcscmp_zero + Unverifiable but considered Valid. +[ Extern ] Axiom 'wcslen_at_null' + axiom wcslen_at_null + Unverifiable but considered Valid. +[ Extern ] Axiom 'wcslen_before_null' + axiom wcslen_before_null + Unverifiable but considered Valid. +[ Extern ] Axiom 'wcslen_create' + axiom wcslen_create + Unverifiable but considered Valid. +[ Extern ] Axiom 'wcslen_create_shift' + axiom wcslen_create_shift + Unverifiable but considered Valid. +[ Extern ] Axiom 'wcslen_neg' + axiom wcslen_neg + Unverifiable but considered Valid. +[ Extern ] Axiom 'wcslen_not_zero' + axiom wcslen_not_zero + Unverifiable but considered Valid. +[ Extern ] Axiom 'wcslen_pos_or_null' + axiom wcslen_pos_or_null + Unverifiable but considered Valid. +[ Extern ] Axiom 'wcslen_shift' + axiom wcslen_shift + Unverifiable but considered Valid. +[ Extern ] Axiom 'wcslen_sup' + axiom wcslen_sup + Unverifiable but considered Valid. +[ Extern ] Axiom 'wcslen_zero' + axiom wcslen_zero + Unverifiable but considered Valid. +[ Extern ] Axiom 'wcsncmp_zero' + axiom wcsncmp_zero + Unverifiable but considered Valid. +[ Valid ] Axiomatic 'MemChr' + axiomatic MemChr + by Frama-C kernel. +[ Valid ] Axiomatic 'MemCmp' + axiomatic MemCmp + by Frama-C kernel. +[ Valid ] Axiomatic 'MemSet' + axiomatic MemSet + by Frama-C kernel. +[ Valid ] Axiomatic 'StrChr' + axiomatic StrChr + by Frama-C kernel. +[ Valid ] Axiomatic 'StrCmp' + axiomatic StrCmp + by Frama-C kernel. +[ Valid ] Axiomatic 'StrLen' + axiomatic StrLen + by Frama-C kernel. +[ Valid ] Axiomatic 'StrNCmp' + axiomatic StrNCmp + by Frama-C kernel. +[ Valid ] Axiomatic 'WcsCmp' + axiomatic WcsCmp + by Frama-C kernel. +[ Valid ] Axiomatic 'WcsLen' + axiomatic WcsLen + by Frama-C kernel. +[ Valid ] Axiomatic 'WcsNCmp' + axiomatic WcsNCmp + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'remove' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns nothing + assigns \nothing; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'rename' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns nothing + assigns \nothing; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'tmpfile' +-------------------------------------------------------------------------------- + +[ Extern ] Post-condition (file share/libc/stdio.h, line 75) + ensures + \result ≡ \null ∨ + (\valid(\result) ∧ \fresh{Old, Here}(\result,sizeof(FILE))) + Unverifiable but considered Valid. +[ Extern ] Assigns nothing + assigns \nothing; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'tmpnam' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns (file share/libc/stdio.h, line 79) + assigns \result, *(s+(..)); + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 79) + assigns \result \from *(s+(..)); + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 80) + assigns *(s+(..)) \from \nothing; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'fclose' +-------------------------------------------------------------------------------- + +[ Extern ] Post-condition (file share/libc/stdio.h, line 88) + ensures \result ≡ 0 ∨ \result ≡ -1 + Unverifiable but considered Valid. +[ Extern ] Assigns nothing + assigns \nothing; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 87) + assigns \result \from stream, stream->__fc_stdio_id; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'fflush' +-------------------------------------------------------------------------------- + +[ Extern ] Post-condition (file share/libc/stdio.h, line 96) + ensures \result ≡ 0 ∨ \result ≡ -1 + Unverifiable but considered Valid. +[ Extern ] Assigns nothing + assigns \nothing; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 95) + assigns \result \from stream, stream->__fc_stdio_id; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'fopen' +-------------------------------------------------------------------------------- + +[ Extern ] Post-condition (file share/libc/stdio.h, line 107) + ensures + \result ≡ \null ∨ \subset(\result, &__fc_fopen[0 .. 512-1]) + Unverifiable but considered Valid. +[ Extern ] Assigns nothing + assigns \nothing; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 105) + assigns \result + \from *(filename+(..)), *(mode+(..)), __p_fc_fopen; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'fdopen' +-------------------------------------------------------------------------------- + +[ Extern ] Post-condition (file share/libc/stdio.h, line 114) + ensures + \result ≡ \null ∨ + (\valid(\result) ∧ \fresh{Old, Here}(\result,sizeof(FILE))) + Unverifiable but considered Valid. +[ Extern ] Assigns nothing + assigns \nothing; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 113) + assigns \result \from fildes, *(mode+(..)); + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'freopen' +-------------------------------------------------------------------------------- + +[ Extern ] Post-condition (file share/libc/stdio.h, line 120) + ensures \result ≡ \null ∨ \result ≡ \old(stream) + Unverifiable but considered Valid. +[ Extern ] Assigns (file share/libc/stdio.h, line 119) + assigns *stream; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'setbuf' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns (file share/libc/stdio.h, line 125) + assigns *stream; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 125) + assigns *stream \from buf; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'setvbuf' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns (file share/libc/stdio.h, line 129) + assigns *stream; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 129) + assigns *stream \from buf, mode, size; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'fprintf' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns (file share/libc/stdio.h, line 134) + assigns *stream; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 134) + assigns *stream \from stream->__fc_stdio_id; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'fscanf' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns (file share/libc/stdio.h, line 139) + assigns *stream; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 139) + assigns *stream \from stream->__fc_stdio_id; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'printf' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns (file share/libc/stdio.h, line 145) + assigns *__fc_stdout; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 145) + assigns *__fc_stdout \from *(format+(..)); + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'scanf' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns (file share/libc/stdio.h, line 150) + assigns *__fc_stdin; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'snprintf' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns (file share/libc/stdio.h, line 155) + assigns *(s+(0 .. n-1)); + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'sprintf' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns (file share/libc/stdio.h, line 161) + assigns *(s+(0 ..)); + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'vfprintf' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns (file share/libc/stdio.h, line 171) + assigns *stream; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 171) + assigns *stream \from *(format+(..)), arg; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'vfscanf' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns (file share/libc/stdio.h, line 176) + assigns *stream; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 176) + assigns *stream \from *(format+(..)), *stream; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'vprintf' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns (file share/libc/stdio.h, line 182) + assigns *__fc_stdout; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 182) + assigns *__fc_stdout \from arg; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'vscanf' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns (file share/libc/stdio.h, line 186) + assigns *__fc_stdin; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 186) + assigns *__fc_stdin \from *(format+(..)); + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'vsnprintf' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns (file share/libc/stdio.h, line 191) + assigns *(s+(0 .. n-1)); + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 191) + assigns *(s+(0 .. n-1)) \from *(format+(..)), arg; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'vsprintf' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns (file share/libc/stdio.h, line 197) + assigns *(s+(0 ..)); + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 197) + assigns *(s+(0 ..)) \from *(format+(..)), arg; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'fgetc' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns (file share/libc/stdio.h, line 208) + assigns *stream; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'fgets' +-------------------------------------------------------------------------------- + +[ Extern ] Post-condition (file share/libc/stdio.h, line 214) + ensures \result ≡ \null ∨ \result ≡ \old(s) + Unverifiable but considered Valid. +[ Extern ] Assigns (file share/libc/stdio.h, line 212) + assigns *(s+(0 .. n-1)), *stream, \result; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 212) + assigns *(s+(0 .. n-1)) \from *stream; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 212) + assigns *stream \from *stream; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 213) + assigns \result \from s, n, *stream; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'fputc' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns (file share/libc/stdio.h, line 219) + assigns *stream; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'fputs' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns (file share/libc/stdio.h, line 222) + assigns *stream; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 222) + assigns *stream \from *(s+(..)); + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'getc' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns (file share/libc/stdio.h, line 226) + assigns \result, *stream; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 226) + assigns \result \from *stream; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 226) + assigns *stream \from *stream; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'getchar' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns nothing + assigns \nothing; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 229) + assigns \result \from *__fc_stdin; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'gets' +-------------------------------------------------------------------------------- + +[ Extern ] Post-condition (file share/libc/stdio.h, line 234) + ensures \result ≡ \old(s) ∨ \result ≡ \null + Unverifiable but considered Valid. +[ Extern ] Assigns (file share/libc/stdio.h, line 232) + assigns *(s+(..)), \result; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 232) + assigns *(s+(..)) \from *__fc_stdin; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 233) + assigns \result \from s, __fc_stdin; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'putc' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns (file share/libc/stdio.h, line 238) + assigns *stream; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 238) + assigns *stream \from c; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'putchar' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns (file share/libc/stdio.h, line 241) + assigns *__fc_stdout; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 241) + assigns *__fc_stdout \from c; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'puts' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns (file share/libc/stdio.h, line 244) + assigns *__fc_stdout; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 244) + assigns *__fc_stdout \from *(s+(..)); + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'ungetc' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns (file share/libc/stdio.h, line 247) + assigns *stream; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 247) + assigns *stream \from c; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'fread' +-------------------------------------------------------------------------------- + +[ Extern ] Post-condition (file share/libc/stdio.h, line 255) + ensures \result ≤ \old(nmemb) + Unverifiable but considered Valid. +[ Extern ] Post-condition (file share/libc/stdio.h, line 256) + ensures + \initialized((char *)\old(ptr)+(0 .. \result*\old(size)-1)) + Unverifiable but considered Valid. +[ Extern ] Assigns (file share/libc/stdio.h, line 253) + assigns *((char *)ptr+(0 .. nmemb*size-1)), \result; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 253) + assigns *((char *)ptr+(0 .. nmemb*size-1)) + \from size, nmemb, *stream; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 254) + assigns \result \from size, *stream; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'fwrite' +-------------------------------------------------------------------------------- + +[ Extern ] Post-condition (file share/libc/stdio.h, line 267) + ensures \result ≤ \old(nmemb) + Unverifiable but considered Valid. +[ Extern ] Assigns (file share/libc/stdio.h, line 266) + assigns *stream, \result; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 266) + assigns *stream \from *((char *)ptr+(0 .. nmemb*size-1)); + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 266) + assigns \result \from *((char *)ptr+(0 .. nmemb*size-1)); + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'fgetpos' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns (file share/libc/stdio.h, line 274) + assigns *pos; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 274) + assigns *pos \from *stream; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'fseek' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns (file share/libc/stdio.h, line 278) + assigns *stream, __FC_errno; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 278) + assigns *stream \from offset, whence; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'fsetpos' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns (file share/libc/stdio.h, line 282) + assigns *stream; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 282) + assigns *stream \from *pos; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'ftell' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns (file share/libc/stdio.h, line 285) + assigns \result, __FC_errno; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 285) + assigns \result \from *stream; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 285) + assigns __FC_errno \from *stream; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'rewind' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns (file share/libc/stdio.h, line 288) + assigns *stream; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 288) + assigns *stream \from \nothing; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'clearerr' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns (file share/libc/stdio.h, line 291) + assigns *stream; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 291) + assigns *stream \from \nothing; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'feof' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns nothing + assigns \nothing; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 294) + assigns \result \from *stream; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'fileno' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns nothing + assigns \nothing; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 297) + assigns \result \from *stream; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'flockfile' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns (file share/libc/stdio.h, line 300) + assigns *stream; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 300) + assigns *stream \from \nothing; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'funlockfile' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns (file share/libc/stdio.h, line 303) + assigns *stream; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 303) + assigns *stream \from \nothing; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'ftrylockfile' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns (file share/libc/stdio.h, line 306) + assigns \result, *stream; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 306) + assigns \result \from \nothing; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 306) + assigns *stream \from \nothing; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'ferror' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns nothing + assigns \nothing; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 309) + assigns \result \from *stream; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'perror' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns (file share/libc/stdio.h, line 312) + assigns __fc_stdout; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 312) + assigns __fc_stdout \from __FC_errno, *(s+(..)); + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'getc_unlocked' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns (file share/libc/stdio.h, line 315) + assigns \result, *stream; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 315) + assigns \result \from *stream; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 315) + assigns *stream \from *stream; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'getchar_unlocked' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns nothing + assigns \nothing; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 317) + assigns \result \from *__fc_stdin; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'putc_unlocked' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns (file share/libc/stdio.h, line 319) + assigns *stream; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 319) + assigns *stream \from c; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'putchar_unlocked' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns (file share/libc/stdio.h, line 321) + assigns *__fc_stdout; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 321) + assigns *__fc_stdout \from c; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'clearerr_unlocked' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns (file share/libc/stdio.h, line 324) + assigns *stream; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 324) + assigns *stream \from \nothing; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'feof_unlocked' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns nothing + assigns \nothing; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 326) + assigns \result \from *stream; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'ferror_unlocked' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns nothing + assigns \nothing; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 328) + assigns \result \from *stream; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'fileno_unlocked' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns nothing + assigns \nothing; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/stdio.h, line 330) + assigns \result \from *stream; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'acos' +-------------------------------------------------------------------------------- + +[ Extern ] Post-condition for 'normal' (file share/libc/math.h, line 67) + ensures \is_finite(\result) ∧ \result ≥ 0 + Unverifiable but considered Valid. +[ Extern ] Post-condition for 'edom' (file share/libc/math.h, line 71) + ensures __FC_errno ≡ 1 + Unverifiable but considered Valid. +[ Extern ] Assigns for 'edom' (file share/libc/math.h, line 70) + assigns __FC_errno; + Unverifiable but considered Valid. +[ Extern ] Assigns for 'normal' nothing + assigns \nothing; + Unverifiable but considered Valid. +[ Valid ] Behavior 'edom' + behavior edom + by Frama-C kernel. +[ Valid ] Behavior 'normal' + behavior normal + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'acosf' +-------------------------------------------------------------------------------- + +[ Extern ] Post-condition for 'normal' (file share/libc/math.h, line 80) + ensures \is_finite(\result) ∧ \result ≥ 0 + Unverifiable but considered Valid. +[ Extern ] Post-condition for 'edom' (file share/libc/math.h, line 84) + ensures __FC_errno ≡ 1 + Unverifiable but considered Valid. +[ Extern ] Assigns for 'edom' (file share/libc/math.h, line 83) + assigns __FC_errno; + Unverifiable but considered Valid. +[ Extern ] Assigns for 'normal' nothing + assigns \nothing; + Unverifiable but considered Valid. +[ Valid ] Behavior 'edom' + behavior edom + by Frama-C kernel. +[ Valid ] Behavior 'normal' + behavior normal + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'acosl' +-------------------------------------------------------------------------------- + +[ Extern ] Post-condition for 'normal' (file share/libc/math.h, line 93) + ensures \is_finite(\result) ∧ \result ≥ 0 + Unverifiable but considered Valid. +[ Extern ] Post-condition for 'edom' (file share/libc/math.h, line 97) + ensures __FC_errno ≡ 1 + Unverifiable but considered Valid. +[ Extern ] Assigns for 'edom' (file share/libc/math.h, line 96) + assigns __FC_errno; + Unverifiable but considered Valid. +[ Extern ] Assigns for 'normal' nothing + assigns \nothing; + Unverifiable but considered Valid. +[ Valid ] Behavior 'edom' + behavior edom + by Frama-C kernel. +[ Valid ] Behavior 'normal' + behavior normal + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'asin' +-------------------------------------------------------------------------------- + +[ Extern ] Post-condition for 'normal' (file share/libc/math.h, line 106) + ensures \is_finite(\result) + Unverifiable but considered Valid. +[ Extern ] Post-condition for 'edom' (file share/libc/math.h, line 110) + ensures __FC_errno ≡ 1 + Unverifiable but considered Valid. +[ Extern ] Assigns for 'edom' (file share/libc/math.h, line 109) + assigns __FC_errno; + Unverifiable but considered Valid. +[ Extern ] Assigns for 'normal' nothing + assigns \nothing; + Unverifiable but considered Valid. +[ Valid ] Behavior 'edom' + behavior edom + by Frama-C kernel. +[ Valid ] Behavior 'normal' + behavior normal + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'asinf' +-------------------------------------------------------------------------------- + +[ Extern ] Post-condition for 'normal' (file share/libc/math.h, line 119) + ensures \is_finite(\result) + Unverifiable but considered Valid. +[ Extern ] Post-condition for 'edom' (file share/libc/math.h, line 123) + ensures __FC_errno ≡ 1 + Unverifiable but considered Valid. +[ Extern ] Assigns for 'edom' (file share/libc/math.h, line 122) + assigns __FC_errno; + Unverifiable but considered Valid. +[ Extern ] Assigns for 'normal' nothing + assigns \nothing; + Unverifiable but considered Valid. +[ Valid ] Behavior 'edom' + behavior edom + by Frama-C kernel. +[ Valid ] Behavior 'normal' + behavior normal + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'asinl' +-------------------------------------------------------------------------------- + +[ Extern ] Post-condition for 'normal' (file share/libc/math.h, line 132) + ensures \is_finite(\result) + Unverifiable but considered Valid. +[ Extern ] Post-condition for 'edom' (file share/libc/math.h, line 136) + ensures __FC_errno ≡ 1 + Unverifiable but considered Valid. +[ Extern ] Assigns for 'edom' (file share/libc/math.h, line 135) + assigns __FC_errno; + Unverifiable but considered Valid. +[ Extern ] Assigns for 'normal' nothing + assigns \nothing; + Unverifiable but considered Valid. +[ Valid ] Behavior 'edom' + behavior edom + by Frama-C kernel. +[ Valid ] Behavior 'normal' + behavior normal + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'atan2' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns nothing + assigns \nothing; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/math.h, line 145) + assigns \result \from y, x; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'cos' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns nothing + assigns \nothing; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/math.h, line 150) + assigns \result \from x; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'sin' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns nothing + assigns \nothing; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/math.h, line 155) + assigns \result \from x; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'acosh' +-------------------------------------------------------------------------------- + +[ Extern ] Post-condition for 'normal' (file share/libc/math.h, line 168) + ensures \is_finite(\result) ∧ \result ≥ 0 + Unverifiable but considered Valid. +[ Extern ] Post-condition for 'infinite' (file share/libc/math.h, line 172) + ensures \is_plus_infinity(\result) + Unverifiable but considered Valid. +[ Extern ] Post-condition for 'edom' (file share/libc/math.h, line 176) + ensures __FC_errno ≡ 1 + Unverifiable but considered Valid. +[ Extern ] Assigns for 'edom' (file share/libc/math.h, line 175) + assigns __FC_errno; + Unverifiable but considered Valid. +[ Extern ] Assigns for 'infinite' nothing + assigns \nothing; + Unverifiable but considered Valid. +[ Extern ] Assigns for 'normal' nothing + assigns \nothing; + Unverifiable but considered Valid. +[ Valid ] Behavior 'edom' + behavior edom + by Frama-C kernel. +[ Valid ] Behavior 'infinite' + behavior infinite + by Frama-C kernel. +[ Valid ] Behavior 'normal' + behavior normal + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'acoshf' +-------------------------------------------------------------------------------- + +[ Extern ] Post-condition for 'normal' (file share/libc/math.h, line 185) + ensures \is_finite(\result) ∧ \result ≥ 0 + Unverifiable but considered Valid. +[ Extern ] Post-condition for 'infinite' (file share/libc/math.h, line 189) + ensures \is_plus_infinity(\result) + Unverifiable but considered Valid. +[ Extern ] Post-condition for 'edom' (file share/libc/math.h, line 193) + ensures __FC_errno ≡ 1 + Unverifiable but considered Valid. +[ Extern ] Assigns for 'edom' (file share/libc/math.h, line 192) + assigns __FC_errno; + Unverifiable but considered Valid. +[ Extern ] Assigns for 'infinite' nothing + assigns \nothing; + Unverifiable but considered Valid. +[ Extern ] Assigns for 'normal' nothing + assigns \nothing; + Unverifiable but considered Valid. +[ Valid ] Behavior 'edom' + behavior edom + by Frama-C kernel. +[ Valid ] Behavior 'infinite' + behavior infinite + by Frama-C kernel. +[ Valid ] Behavior 'normal' + behavior normal + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'acoshl' +-------------------------------------------------------------------------------- + +[ Extern ] Post-condition for 'normal' (file share/libc/math.h, line 202) + ensures \is_finite(\result) ∧ \result ≥ 0 + Unverifiable but considered Valid. +[ Extern ] Post-condition for 'infinite' (file share/libc/math.h, line 206) + ensures \is_plus_infinity(\result) + Unverifiable but considered Valid. +[ Extern ] Post-condition for 'edom' (file share/libc/math.h, line 210) + ensures __FC_errno ≡ 1 + Unverifiable but considered Valid. +[ Extern ] Assigns for 'edom' (file share/libc/math.h, line 209) + assigns __FC_errno; + Unverifiable but considered Valid. +[ Extern ] Assigns for 'infinite' nothing + assigns \nothing; + Unverifiable but considered Valid. +[ Extern ] Assigns for 'normal' nothing + assigns \nothing; + Unverifiable but considered Valid. +[ Valid ] Behavior 'edom' + behavior edom + by Frama-C kernel. +[ Valid ] Behavior 'infinite' + behavior infinite + by Frama-C kernel. +[ Valid ] Behavior 'normal' + behavior normal + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'exp' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns nothing + assigns \nothing; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/math.h, line 235) + assigns \result \from x; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'expf' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns nothing + assigns \nothing; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/math.h, line 238) + assigns \result \from x; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'log' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns nothing + assigns \nothing; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/math.h, line 262) + assigns \result \from x; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'logf' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns nothing + assigns \nothing; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/math.h, line 265) + assigns \result \from x; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'log10' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns nothing + assigns \nothing; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/math.h, line 269) + assigns \result \from x; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'log10f' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns nothing + assigns \nothing; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/math.h, line 272) + assigns \result \from x; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'pow' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns nothing + assigns \nothing; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/math.h, line 312) + assigns \result \from x, y; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'powf' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns nothing + assigns \nothing; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/math.h, line 315) + assigns \result \from x, y; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'sqrt' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns nothing + assigns \nothing; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/math.h, line 319) + assigns \result \from x; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'sqrtf' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns nothing + assigns \nothing; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/math.h, line 322) + assigns \result \from x; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'ceil' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns nothing + assigns \nothing; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/math.h, line 342) + assigns \result \from x; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'ceilf' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns nothing + assigns \nothing; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/math.h, line 345) + assigns \result \from x; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'floor' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns nothing + assigns \nothing; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/math.h, line 350) + assigns \result \from x; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'floorf' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns nothing + assigns \nothing; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/math.h, line 353) + assigns \result \from x; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'round' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns nothing + assigns \nothing; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/math.h, line 374) + assigns \result \from x; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'roundf' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns nothing + assigns \nothing; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/math.h, line 377) + assigns \result \from x; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'trunc' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns nothing + assigns \nothing; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/math.h, line 390) + assigns \result \from x; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'truncf' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns nothing + assigns \nothing; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/math.h, line 393) + assigns \result \from x; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'fmod' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns nothing + assigns \nothing; + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/math.h, line 398) + assigns \result \from x, y; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'nan' +-------------------------------------------------------------------------------- + +[ Extern ] Post-condition (file share/libc/math.h, line 418) + ensures \is_NaN(\result) + Unverifiable but considered Valid. +[ Extern ] Assigns nothing + assigns \nothing; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'nanf' +-------------------------------------------------------------------------------- + +[ Extern ] Post-condition (file share/libc/math.h, line 425) + ensures \is_NaN(\result) + Unverifiable but considered Valid. +[ Extern ] Assigns nothing + assigns \nothing; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'nanl' +-------------------------------------------------------------------------------- + +[ Extern ] Post-condition (file share/libc/math.h, line 432) + ensures \is_NaN(\result) + Unverifiable but considered Valid. +[ Extern ] Assigns nothing + assigns \nothing; + Unverifiable but considered Valid. +[ Valid ] Default behavior + default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'idct' +-------------------------------------------------------------------------------- + +[ - ] Assertion 'Value,initialisation' (file tests/idct/idct.c, line 129) + assert Value: initialisation: \initialized(&tmp1[i][j]); + tried with Value. +[ - ] Assertion 'Value,initialisation' (file tests/idct/idct.c, line 131) + assert Value: initialisation: \initialized(&tmp1[i][j]); + tried with Value. +[ - ] Assertion 'Value,initialisation' (file tests/idct/idct.c, line 141) + assert Value: initialisation: \initialized(&tmp1[i][j]); + tried with Value. +[ - ] Assertion 'Value,initialisation' (file tests/idct/idct.c, line 143) + assert Value: initialisation: \initialized(&tmp1[i][j]); + tried with Value. +[ - ] Assertion 'Value,initialisation' (file tests/idct/idct.c, line 145) + assert Value: initialisation: \initialized(&tmp1[i][j]); + tried with Value. +[ Partial ] Assertion 'Value,initialisation' (file tests/idct/idct.c, line 147) + assert Value: initialisation: \initialized(&tmp1[i][j]); + By RedundantAlarms, with pending: + - Assertion 'Value,initialisation' (file tests/idct/idct.c, line 145) +[ - ] Assertion 'Value,initialisation' (file tests/idct/idct.c, line 163) + assert Value: initialisation: \initialized(&tmp2[k][j]); + tried with Value. +[ - ] Assertion 'Value,initialisation' (file tests/idct/idct.c, line 163) + assert Value: initialisation: \initialized(&tmp1[i][j]); + tried with Value. +[ - ] Assertion 'Value,initialisation' (file tests/idct/idct.c, line 166) + assert Value: initialisation: \initialized(&tmp1[i][j]); + tried with Value. +[ - ] Assertion 'Value,initialisation' (file tests/idct/idct.c, line 176) + assert Value: initialisation: \initialized(&tmp1[i][j]); + tried with Value. +[ - ] Assertion 'Value,initialisation' (file tests/idct/idct.c, line 178) + assert Value: initialisation: \initialized(&tmp1[i][j]); + tried with Value. +[ - ] Assertion 'Value,initialisation' (file tests/idct/idct.c, line 180) + assert Value: initialisation: \initialized(&tmp1[i][j]); + tried with Value. +[ Partial ] Assertion 'Value,initialisation' (file tests/idct/idct.c, line 182) + assert Value: initialisation: \initialized(&tmp1[i][j]); + By RedundantAlarms, with pending: + - Assertion 'Value,initialisation' (file tests/idct/idct.c, line 180) +[ - ] Assertion 'Value,initialisation' (file tests/idct/idct.c, line 129) + assert Value: initialisation: \initialized(&(*(m1+k))[j]); + tried with Value. + +-------------------------------------------------------------------------------- +--- Properties of Function 'IEEE_1180_1990_dctf' +-------------------------------------------------------------------------------- + +[ - ] Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 109) + assert Value: initialisation: \initialized(&tmp1[i][j]); + tried with Value. +[ - ] Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 116) + assert Value: initialisation: \initialized(&tmp1[i][k]); + tried with Value. +[ - ] Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 116) + assert Value: initialisation: \initialized(&tmp2[i][j]); + tried with Value. +[ - ] Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 117) + assert Value: initialisation: \initialized(&tmp2[i][j]); + tried with Value. +[ Partial ] Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 119) + assert Value: initialisation: \initialized(&tmp2[i][j]); + By RedundantAlarms, with pending: + - Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 117) +[ Partial ] Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 121) + assert Value: initialisation: \initialized(&tmp2[i][j]); + By RedundantAlarms, with pending: + - Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 117) +[ Partial ] Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 122) + assert Value: initialisation: \initialized(&tmp2[i][j]); + By RedundantAlarms, with pending: + - Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 117) +[ - ] Assertion 'Value,float_to_int' (file tests/idct/ieee_1180_1990.c, line 122) + assert Value: float_to_int: -2147483649 < tmp2[i][j]+0.5; + tried with Value. +[ - ] Assertion 'Value,float_to_int' (file tests/idct/ieee_1180_1990.c, line 122) + assert Value: float_to_int: tmp2[i][j]+0.5 < 2147483648; + tried with Value. +[ Partial ] Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 124) + assert Value: initialisation: \initialized(&tmp2[i][j]); + By RedundantAlarms, with pending: + - Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 117) +[ - ] Assertion 'Value,float_to_int' (file tests/idct/ieee_1180_1990.c, line 124) + assert Value: float_to_int: -2147483649 < tmp2[i][j]-0.5; + tried with Value. +[ - ] Assertion 'Value,float_to_int' (file tests/idct/ieee_1180_1990.c, line 124) + assert Value: float_to_int: tmp2[i][j]-0.5 < 2147483648; + tried with Value. + +-------------------------------------------------------------------------------- +--- Properties of Function 'IEEE_1180_1990_idctf' +-------------------------------------------------------------------------------- + +[ - ] Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 150) + assert Value: initialisation: \initialized(&(*(m1+k))[j]); + tried with Value. +[ - ] Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 150) + assert Value: initialisation: \initialized(&tmp1[i][j]); + tried with Value. +[ - ] Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 157) + assert Value: initialisation: \initialized(&tmp1[i][k]); + tried with Value. +[ - ] Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 157) + assert Value: initialisation: \initialized(&tmp2[i][j]); + tried with Value. +[ - ] Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 158) + assert Value: initialisation: \initialized(&tmp2[i][j]); + tried with Value. +[ Partial ] Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 160) + assert Value: initialisation: \initialized(&tmp2[i][j]); + By RedundantAlarms, with pending: + - Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 158) +[ Partial ] Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 162) + assert Value: initialisation: \initialized(&tmp2[i][j]); + By RedundantAlarms, with pending: + - Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 158) +[ Partial ] Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 163) + assert Value: initialisation: \initialized(&tmp2[i][j]); + By RedundantAlarms, with pending: + - Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 158) +[ - ] Assertion 'Value,float_to_int' (file tests/idct/ieee_1180_1990.c, line 163) + assert Value: float_to_int: -2147483649 < tmp2[i][j]+0.5; + tried with Value. +[ - ] Assertion 'Value,float_to_int' (file tests/idct/ieee_1180_1990.c, line 163) + assert Value: float_to_int: tmp2[i][j]+0.5 < 2147483648; + tried with Value. +[ Partial ] Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 165) + assert Value: initialisation: \initialized(&tmp2[i][j]); + By RedundantAlarms, with pending: + - Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 158) +[ - ] Assertion 'Value,float_to_int' (file tests/idct/ieee_1180_1990.c, line 165) + assert Value: float_to_int: -2147483649 < tmp2[i][j]-0.5; + tried with Value. +[ - ] Assertion 'Value,float_to_int' (file tests/idct/ieee_1180_1990.c, line 165) + assert Value: float_to_int: tmp2[i][j]-0.5 < 2147483648; + tried with Value. + +-------------------------------------------------------------------------------- +--- Properties of Function 'main' +-------------------------------------------------------------------------------- + +[ - ] Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 191) + assert Value: initialisation: \initialized(&m2[i][j]); + tried with Value. +[ - ] Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 218) + assert Value: initialisation: \initialized(&m3[j][k]); + tried with Value. +[ - ] Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 218) + assert Value: initialisation: \initialized(&m4[j][k]); + tried with Value. +[ - ] Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 219) + assert Value: initialisation: \initialized(&res[0].pme[j][k]); + tried with Value. +[ - ] Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 231) + assert Value: initialisation: \initialized(&res[0].pmse[j][k]); + tried with Value. +[ - ] Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 242) + assert Value: initialisation: \initialized(&m3[j][k]); + tried with Value. +[ - ] Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 242) + assert Value: initialisation: \initialized(&m4[j][k]); + tried with Value. +[ - ] Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 243) + assert Value: initialisation: \initialized(&res[3].pme[j][k]); + tried with Value. +[ - ] Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 255) + assert Value: initialisation: \initialized(&res[3].pmse[j][k]); + tried with Value. +[ - ] Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 264) + assert Value: initialisation: \initialized(&m3[j][k]); + tried with Value. +[ - ] Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 264) + assert Value: initialisation: \initialized(&m4[j][k]); + tried with Value. +[ - ] Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 265) + assert Value: initialisation: \initialized(&res[1].pme[j][k]); + tried with Value. +[ - ] Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 277) + assert Value: initialisation: \initialized(&res[1].pmse[j][k]); + tried with Value. +[ - ] Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 288) + assert Value: initialisation: \initialized(&m3[j][k]); + tried with Value. +[ - ] Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 288) + assert Value: initialisation: \initialized(&m4[j][k]); + tried with Value. +[ - ] Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 289) + assert Value: initialisation: \initialized(&res[4].pme[j][k]); + tried with Value. +[ - ] Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 301) + assert Value: initialisation: \initialized(&res[4].pmse[j][k]); + tried with Value. +[ - ] Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 310) + assert Value: initialisation: \initialized(&m3[j][k]); + tried with Value. +[ - ] Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 310) + assert Value: initialisation: \initialized(&m4[j][k]); + tried with Value. +[ - ] Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 311) + assert Value: initialisation: \initialized(&res[2].pme[j][k]); + tried with Value. +[ - ] Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 323) + assert Value: initialisation: \initialized(&res[2].pmse[j][k]); + tried with Value. +[ - ] Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 334) + assert Value: initialisation: \initialized(&m3[j][k]); + tried with Value. +[ - ] Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 334) + assert Value: initialisation: \initialized(&m4[j][k]); + tried with Value. +[ - ] Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 335) + assert Value: initialisation: \initialized(&res[5].pme[j][k]); + tried with Value. +[ - ] Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 347) + assert Value: initialisation: \initialized(&res[5].pmse[j][k]); + tried with Value. +[ - ] Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 357) + assert Value: initialisation: \initialized(&res[i].pmse[j][k]); + tried with Value. +[ - ] Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 368) + assert Value: initialisation: \initialized(&res[i].pme[j][k]); + tried with Value. +[ Partial ] Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 358) + assert Value: initialisation: \initialized(&res[i].pmse[j][k]); + By RedundantAlarms, with pending: + - Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 357) +[ Partial ] Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 369) + assert Value: initialisation: \initialized(&res[i].pme[j][k]); + By RedundantAlarms, with pending: + - Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 368) +[ Partial ] Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 369) + assert Value: initialisation: \initialized(&res[i].pme[j][k]); + By RedundantAlarms, with pending: + - Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 368) +[ - ] Assertion 'Value,initialisation' (file tests/idct/ieee_1180_1990.c, line 369) + assert Value: initialisation: \initialized(&tmp_5); + tried with Value. + +-------------------------------------------------------------------------------- +--- Status Report Summary +-------------------------------------------------------------------------------- + 113 Completely validated + 13 Locally validated + 250 Considered valid + 57 To be validated + 433 Total +-------------------------------------------------------------------------------- diff --git a/tests/journal/control.i b/tests/journal/control.i index 7755e36cf471151ee632a9741ef2e8695fd51136..66b9cbb6583f72ea6f37ceb8a219414c07b4693c 100644 --- a/tests/journal/control.i +++ b/tests/journal/control.i @@ -1,6 +1,6 @@ /* run.config COMMENT: do not compare generated journals since they depend on current time - EXECNOW: BIN control_journal.ml BIN control_journal_bis.ml (./bin/toplevel.opt -journal-enable -val -deps -out -main f -journal-name tests/journal/result/control_journal.ml tests/journal/control.i && cp tests/journal/result/control_journal.ml tests/journal/result/control_journal_bis.ml) > /dev/null 2> /dev/null + EXECNOW: BIN control_journal.ml BIN control_journal_bis.ml (./bin/toplevel.opt -journal-enable -check -val -deps -out -main f -journal-name tests/journal/result/control_journal.ml tests/journal/control.i && cp tests/journal/result/control_journal.ml tests/journal/result/control_journal_bis.ml) > /dev/null 2> /dev/null CMD: FRAMAC_LIB=lib/fc ./bin/toplevel.byte OPT: -load-script tests/journal/result/control_journal -journal-disable CMD: FRAMAC_LIB=lib/fc ./bin/toplevel.byte diff --git a/tests/libc/fc_libc.c b/tests/libc/fc_libc.c index 4646abdb0c6428a7c6b8f9e41a40d08610fc08a6..d22260a2d04017850ea8d933f2f9ba47f7efdeeb 100644 --- a/tests/libc/fc_libc.c +++ b/tests/libc/fc_libc.c @@ -1,5 +1,5 @@ /* run.config* - OPT: -print -check -cpp-extra-args='-nostdinc -Ishare/libc' -metrics -metrics-libc -load-script tests/libc/check_const.ml -val @VALUECONFIG@ -then -lib-entry -no-print -metrics-no-libc + OPT: -print -cpp-extra-args='-nostdinc -Ishare/libc' -metrics -metrics-libc -load-script tests/libc/check_const.ml -val @VALUECONFIG@ -then -lib-entry -no-print -metrics-no-libc CMD: ./tests/libc/check_full_libc.sh OPT: **/ diff --git a/tests/libc/oracle/fc_libc.0.res.oracle b/tests/libc/oracle/fc_libc.0.res.oracle index f4dd003d2f6eda959df9dd4a410cc774053ba0e1..8175f660183c101e2513e9f6e349aa2fbebd09ba 100644 --- a/tests/libc/oracle/fc_libc.0.res.oracle +++ b/tests/libc/oracle/fc_libc.0.res.oracle @@ -153,7 +153,7 @@ tests/libc/fc_libc.c:122:[value] assertion got status valid. wcscpy (0 call); wcslen (1 call); wcsncat (0 call); wcsncpy (0 call); wmemcpy (0 call); wmemset (0 call); - Undefined functions (225) + Undefined functions (238) ========================= FD_CLR (0 call); FD_ISSET (0 call); FD_SET (0 call); FD_ZERO (0 call); Frama_C_abort (1 call); Frama_C_char_interval (0 call); @@ -218,8 +218,11 @@ tests/libc/fc_libc.c:122:[value] assertion got status valid. time (0 call); times (0 call); tmpfile (0 call); tmpnam (0 call); trunc (0 call); truncf (0 call); ungetc (0 call); utimes (0 call); vfprintf (0 call); vfscanf (0 call); vprintf (0 call); vscanf (0 call); - vsnprintf (0 call); vsprintf (0 call); wcstombs (0 call); wctomb (0 call); - write (0 call); + vsnprintf (0 call); vsprintf (0 call); wcschr (0 call); wcscmp (0 call); + wcscspn (0 call); wcslcat (0 call); wcslcpy (0 call); wcsncmp (0 call); + wcspbrk (0 call); wcsrchr (0 call); wcsspn (0 call); wcsstr (0 call); + wcstombs (0 call); wctomb (0 call); wmemchr (0 call); wmemcmp (0 call); + wmemmove (0 call); write (0 call); 'Extern' global variables (0) ============================= @@ -239,7 +242,7 @@ tests/libc/fc_libc.c:122:[value] assertion got status valid. Goto = 23 Assignment = 228 Exit point = 57 - Function = 282 + Function = 295 Function call = 27 Pointer dereferencing = 65 Cyclomatic complexity = 158 @@ -2107,8 +2110,32 @@ extern float strtof(char const *nptr, char **endptr); extern long double strtold(char const *nptr, char **endptr); /*@ assigns \result, *endptr; - assigns \result \from *(nptr+(0 ..)), base; - assigns *endptr \from nptr, *(nptr+(0 ..)), base; + assigns \result + \from (indirect: nptr), (indirect: *(nptr+(0 ..))), (indirect: base); + assigns *endptr + \from nptr, (indirect: *(nptr+(0 ..))), (indirect: endptr), + (indirect: base); + + behavior null_endptr: + assumes endptr ≡ \null; + assigns \result; + assigns \result + \from (indirect: nptr), (indirect: *(nptr+(0 ..))), (indirect: base); + + behavior nonnull_endptr: + assumes endptr ≢ \null; + requires \valid(endptr); + ensures \initialized(\old(endptr)); + ensures \subset(*\old(endptr), \old(nptr)+(0 ..)); + assigns \result, *endptr; + assigns \result + \from (indirect: nptr), (indirect: *(nptr+(0 ..))), (indirect: base); + assigns *endptr + \from nptr, (indirect: *(nptr+(0 ..))), (indirect: endptr), + (indirect: base); + + complete behaviors nonnull_endptr, null_endptr; + disjoint behaviors nonnull_endptr, null_endptr; */ extern long strtol(char const *nptr, char **endptr, int base); @@ -3090,20 +3117,120 @@ int strcasecmp(char const *s1, char const *s2) return_label: return __retres; } +/*@ ensures \result ≡ \null ∨ \subset(\result, \old(s)+(0 .. \old(n)-1)); + assigns \result; + assigns \result + \from s, (indirect: *(s+(0 .. n-1))), (indirect: c), (indirect: n); + */ +extern wchar_t *wmemchr(wchar_t const *s, wchar_t c, size_t n); + +/*@ assigns \result; + assigns \result + \from (indirect: *(s1+(0 .. n-1))), (indirect: *(s2+(0 .. n-1))), + (indirect: n); + */ +extern int wmemcmp(wchar_t const *s1, wchar_t const *s2, size_t n); + wchar_t *wmemcpy(wchar_t *region1, wchar_t const *region2, size_t n); +/*@ ensures \result ≡ \old(dest); + assigns *(dest+(0 .. n-1)), \result; + assigns *(dest+(0 .. n-1)) + \from *(src+(0 .. n-1)), (indirect: src), (indirect: n); + assigns \result \from dest; + */ +extern wchar_t *wmemmove(wchar_t *dest, wchar_t const *src, size_t n); + wchar_t *wmemset(wchar_t *dest, wchar_t val, size_t len); wchar_t *wcscat(wchar_t *s1, wchar_t const *s2); +/*@ ensures \result ≡ \null ∨ \subset(\result, \old(wcs)+(0 ..)); + assigns \result; + assigns \result \from wcs, (indirect: wc); + */ +extern wchar_t *wcschr(wchar_t const *wcs, wchar_t wc); + +/*@ assigns \result; + assigns \result \from (indirect: *(s1+(0 ..))), (indirect: *(s2+(0 ..))); + */ +extern int wcscmp(wchar_t const *s1, wchar_t const *s2); + wchar_t *wcscpy(wchar_t *s1, wchar_t const *s2); +/*@ assigns \result; + assigns \result + \from (indirect: *(wcs+(0 ..))), (indirect: *(accept+(0 ..))); + */ +extern size_t wcscspn(wchar_t const *wcs, wchar_t const *accept); + +/*@ assigns *(dest+(0 ..)), \result; + assigns *(dest+(0 ..)) + \from *(dest+(0 ..)), (indirect: dest), *(src+(0 .. n-1)), + (indirect: src), (indirect: n); + assigns \result + \from (indirect: *(dest+(0 ..))), (indirect: *(src+(0 .. n-1))), + (indirect: n); + */ +extern size_t wcslcat(wchar_t *dest, wchar_t const *src, size_t n); + +/*@ requires \separated(dest+(0 .. n-1), src+(0 .. n-1)); + assigns *(dest+(0 .. n-1)), \result; + assigns *(dest+(0 .. n-1)) + \from *(src+(0 .. n-1)), (indirect: src), (indirect: n); + assigns \result + \from (indirect: *(dest+(0 .. n-1))), (indirect: dest), + (indirect: *(src+(0 .. n-1))), (indirect: src), (indirect: n); + */ +extern size_t wcslcpy(wchar_t *dest, wchar_t const *src, size_t n); + size_t wcslen(wchar_t const *str); wchar_t *wcsncat(wchar_t *dest, wchar_t const *src, size_t n); +/*@ assigns \result; + assigns \result + \from (indirect: *(s1+(0 .. n-1))), (indirect: *(s2+(0 .. n-1))), + (indirect: n); + */ +extern int wcsncmp(wchar_t const *s1, wchar_t const *s2, size_t n); + wchar_t *wcsncpy(wchar_t *s1, wchar_t const *s2, size_t n); +/*@ ensures \result ≡ \null ∨ \subset(\result, \old(wcs)+(0 ..)); + assigns \result; + assigns \result + \from wcs, (indirect: *(wcs+(0 ..))), (indirect: *(accept+(0 ..))); + */ +extern wchar_t *wcspbrk(wchar_t const *wcs, wchar_t const *accept); + +/*@ ensures \result ≡ \null ∨ \subset(\result, \old(wcs)+(0 ..)); + assigns \result; + assigns \result \from wcs, (indirect: *(wcs+(0 ..))), (indirect: wc); + */ +extern wchar_t *wcsrchr(wchar_t const *wcs, wchar_t wc); + +/*@ assigns \result; + assigns \result + \from (indirect: *(wcs+(0 ..))), (indirect: *(accept+(0 ..))); + */ +extern size_t wcsspn(wchar_t const *wcs, wchar_t const *accept); + +/*@ ensures \result ≡ \null ∨ \subset(\result, \old(haystack)+(0 ..)); + assigns \result; + assigns \result + \from haystack, (indirect: *(haystack+(0 ..))), + (indirect: *(needle+(0 ..))); + */ +extern wchar_t *wcsstr(wchar_t const *haystack, wchar_t const *needle); + +/*@ requires \separated(region1+(0 .. n-1), region2+(0 .. n-1)); + ensures \result ≡ \old(region1); + assigns *(region1+(0 .. n-1)), \result; + assigns *(region1+(0 .. n-1)) + \from *(region2+(0 .. n-1)), (indirect: region2), (indirect: n); + assigns \result \from region1; + */ wchar_t *wmemcpy(wchar_t *region1, wchar_t const *region2, size_t n) { wchar_t const *first; @@ -3128,6 +3255,11 @@ wchar_t *wmemcpy(wchar_t *region1, wchar_t const *region2, size_t n) return result; } +/*@ ensures \result ≡ \old(dest); + assigns *(dest+(0 .. len-1)), \result; + assigns *(dest+(0 .. len-1)) \from val, (indirect: len); + assigns \result \from dest; + */ wchar_t *wmemset(wchar_t *dest, wchar_t val, size_t len) { wchar_t *ptr; @@ -3150,6 +3282,12 @@ wchar_t *wmemset(wchar_t *dest, wchar_t val, size_t len) return dest; } +/*@ ensures \result ≡ \old(s1); + assigns *(s1+(0 ..)), \result; + assigns *(s1+(0 ..)) + \from *(s2+(0 ..)), (indirect: s2), *(s1+(0 ..)), (indirect: s1); + assigns \result \from s1; + */ wchar_t *wcscpy(wchar_t *s1, wchar_t const *s2) { wchar_t *os1; @@ -3171,6 +3309,8 @@ wchar_t *wcscpy(wchar_t *s1, wchar_t const *s2) return os1; } +/*@ assigns \result; + assigns \result \from (indirect: *(str+(0 ..))); */ size_t wcslen(wchar_t const *str) { size_t __retres; @@ -3182,6 +3322,13 @@ size_t wcslen(wchar_t const *str) return __retres; } +/*@ requires \separated(s1+(0 .. n-1), s2+(0 .. n-1)); + ensures \result ≡ \old(s1); + assigns *(s1+(0 .. n-1)), \result; + assigns *(s1+(0 .. n-1)) + \from *(s2+(0 .. n-1)), (indirect: s2), (indirect: n); + assigns \result \from s1; + */ wchar_t *wcsncpy(wchar_t *s1, wchar_t const *s2, size_t n) { wchar_t *os1; @@ -3219,6 +3366,12 @@ wchar_t *wcsncpy(wchar_t *s1, wchar_t const *s2, size_t n) return os1; } +/*@ ensures \result ≡ \old(s1); + assigns *(s1+(0 ..)), \result; + assigns *(s1+(0 ..)) + \from *(s1+(0 ..)), (indirect: s1), *(s2+(0 ..)), (indirect: s2); + assigns \result \from s1; + */ wchar_t *wcscat(wchar_t *s1, wchar_t const *s2) { wchar_t *os1; @@ -3250,6 +3403,13 @@ wchar_t *wcscat(wchar_t *s1, wchar_t const *s2) return os1; } +/*@ ensures \result ≡ \old(dest); + assigns *(dest+(0 ..)), \result; + assigns *(dest+(0 ..)) + \from *(dest+(0 ..)), (indirect: dest), *(src+(0 .. n-1)), + (indirect: src), (indirect: n); + assigns \result \from dest; + */ wchar_t *wcsncat(wchar_t *dest, wchar_t const *src, size_t n) { size_t dest_len; diff --git a/tests/libc/oracle/socket.0.res.oracle b/tests/libc/oracle/socket.0.res.oracle index 735efa8fbfcaf6bfa3280e16561242c2a389776b..250657cd8ed7d3298bb2b0ebe9b16cb138b70b69 100644 --- a/tests/libc/oracle/socket.0.res.oracle +++ b/tests/libc/oracle/socket.0.res.oracle @@ -106,7 +106,7 @@ share/libc/sys/socket.h:265:[value] function socketpair: precondition got status [value] computing for function exit <- init_sockets <- main. Called from tests/libc/socket.c:53. [value] using specification for function exit -share/libc/stdlib.h:240:[value] function exit: no state left in which to evaluate postcondition, status not computed. +share/libc/stdlib.h:253:[value] function exit: no state left in which to evaluate postcondition, status not computed. [value] Done for function exit tests/libc/socket.c:55:[value] assertion got status valid. [value] Recording results for init_sockets diff --git a/tests/libc/oracle/socket.1.res.oracle b/tests/libc/oracle/socket.1.res.oracle index f85d6b1ff3e58983793cb45c80ce95dbfde541e3..add7c5d6a86bd3481207e021f0b376a91369627e 100644 --- a/tests/libc/oracle/socket.1.res.oracle +++ b/tests/libc/oracle/socket.1.res.oracle @@ -163,7 +163,7 @@ share/libc/sys/socket.h:265:[value] function socketpair: precondition got status [value] computing for function exit <- init_sockets <- main. Called from tests/libc/socket.c:53. [value] using specification for function exit -share/libc/stdlib.h:240:[value] function exit: no state left in which to evaluate postcondition, status not computed. +share/libc/stdlib.h:253:[value] function exit: no state left in which to evaluate postcondition, status not computed. [value] Done for function exit tests/libc/socket.c:55:[value] assertion got status valid. [value] Recording results for init_sockets diff --git a/tests/libc/oracle/stdlib_h.err.oracle b/tests/libc/oracle/stdlib_h.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/libc/oracle/stdlib_h.res.oracle b/tests/libc/oracle/stdlib_h.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..eaf0a7477f4273c93e6b1df7aa1bd41e55ed51bc --- /dev/null +++ b/tests/libc/oracle/stdlib_h.res.oracle @@ -0,0 +1,32 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/libc/stdlib_h.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + __fc_random_counter ∈ {0} + __fc_rand_max ∈ {32767} + __fc_heap_status ∈ [--..--] +[value] computing for function strtol <- main. + Called from tests/libc/stdlib_h.c:6. +[value] using specification for function strtol +share/libc/stdlib.h:96:[value] function strtol, behavior nonnull_endptr: precondition got status valid. +[value] Done for function strtol +[value] computing for function strtol <- main. + Called from tests/libc/stdlib_h.c:7. +[value] Done for function strtol +[value] computing for function strtol <- main. + Called from tests/libc/stdlib_h.c:8. +[value] Done for function strtol +[value] computing for function strtol <- main. + Called from tests/libc/stdlib_h.c:9. +[value] Done for function strtol +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + s ∈ {{ "12 34 56" }} + p ∈ {{ "12 34 56" + [0..--] }} + q ∈ {{ "12 34 56" + [0..--] }} + l ∈ [--..--] + __retres ∈ [--..--] diff --git a/tests/libc/oracle/wchar_c_h.0.err.oracle b/tests/libc/oracle/wchar_c_h.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/libc/oracle/wchar_c_h.0.res.oracle b/tests/libc/oracle/wchar_c_h.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..5c14f2591d1b7775fcf1a62f660c40708918f9fd --- /dev/null +++ b/tests/libc/oracle/wchar_c_h.0.res.oracle @@ -0,0 +1,574 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/libc/wchar_c_h.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + nondet ∈ [--..--] +[value] computing for function wmemchr <- main. + Called from tests/libc/wchar_c_h.c:23. +[value] using specification for function wmemchr +[value] Done for function wmemchr +[value] computing for function wmemcmp <- main. + Called from tests/libc/wchar_c_h.c:24. +[value] using specification for function wmemcmp +[value] Done for function wmemcmp +[value] computing for function wmemcmp <- main. + Called from tests/libc/wchar_c_h.c:24. +[value] Done for function wmemcmp +[value] computing for function wmemcpy <- main. + Called from tests/libc/wchar_c_h.c:25. +share/libc/wchar.h:44:[value] function wmemcpy: precondition got status valid. +share/libc/wchar.h:47:[value] function wmemcpy: postcondition got status valid. +[value] Recording results for wmemcpy +[value] Done for function wmemcpy +[value] computing for function wmemcpy <- main. + Called from tests/libc/wchar_c_h.c:25. +[value] Recording results for wmemcpy +[value] Done for function wmemcpy +[value] computing for function wmemmove <- main. + Called from tests/libc/wchar_c_h.c:26. +[value] using specification for function wmemmove +[value] Done for function wmemmove +[value] computing for function wmemmove <- main. + Called from tests/libc/wchar_c_h.c:26. +[value] Done for function wmemmove +[value] computing for function wmemmove <- main. + Called from tests/libc/wchar_c_h.c:26. +[value] Done for function wmemmove +[value] computing for function wmemset <- main. + Called from tests/libc/wchar_c_h.c:27. +share/libc/wchar.h:61:[value] function wmemset: postcondition got status valid. +[value] Recording results for wmemset +[value] Done for function wmemset +[value] computing for function wmemset <- main. + Called from tests/libc/wchar_c_h.c:27. +[value] Recording results for wmemset +[value] Done for function wmemset +[value] computing for function wmemset <- main. + Called from tests/libc/wchar_c_h.c:27. +[value] Recording results for wmemset +[value] Done for function wmemset +[value] computing for function wcschr <- main. + Called from tests/libc/wchar_c_h.c:28. +[value] using specification for function wcschr +[value] Done for function wcschr +[value] computing for function wcschr <- main. + Called from tests/libc/wchar_c_h.c:28. +[value] Done for function wcschr +[value] computing for function wcschr <- main. + Called from tests/libc/wchar_c_h.c:28. +[value] Done for function wcschr +[value] computing for function wcscmp <- main. + Called from tests/libc/wchar_c_h.c:29. +[value] using specification for function wcscmp +[value] Done for function wcscmp +[value] computing for function wcscmp <- main. + Called from tests/libc/wchar_c_h.c:29. +[value] Done for function wcscmp +[value] computing for function wcscmp <- main. + Called from tests/libc/wchar_c_h.c:29. +[value] Done for function wcscmp +[value] computing for function wcscpy <- main. + Called from tests/libc/wchar_c_h.c:30. +share/libc/wchar.h:84:[value] function wcscpy: postcondition got status valid. +[value] Recording results for wcscpy +[value] Done for function wcscpy +[value] computing for function wcscpy <- main. + Called from tests/libc/wchar_c_h.c:30. +[value] Recording results for wcscpy +[value] Done for function wcscpy +[value] computing for function wcscpy <- main. + Called from tests/libc/wchar_c_h.c:30. +[value] Recording results for wcscpy +[value] Done for function wcscpy +[value] computing for function wcscspn <- main. + Called from tests/libc/wchar_c_h.c:31. +[value] using specification for function wcscspn +[value] Done for function wcscspn +[value] computing for function wcscspn <- main. + Called from tests/libc/wchar_c_h.c:31. +[value] Done for function wcscspn +[value] computing for function wcscspn <- main. + Called from tests/libc/wchar_c_h.c:31. +[value] Done for function wcscspn +[value] computing for function wcscspn <- main. + Called from tests/libc/wchar_c_h.c:31. +[value] Done for function wcscspn +[value] computing for function wcslcat <- main. + Called from tests/libc/wchar_c_h.c:32. +[value] using specification for function wcslcat +[value] Done for function wcslcat +[value] computing for function wcslcat <- main. + Called from tests/libc/wchar_c_h.c:32. +[value] Done for function wcslcat +[value] computing for function wcslcat <- main. + Called from tests/libc/wchar_c_h.c:32. +[value] Done for function wcslcat +[value] computing for function wcslcat <- main. + Called from tests/libc/wchar_c_h.c:32. +[value] Done for function wcslcat +[value] computing for function wcslcat <- main. + Called from tests/libc/wchar_c_h.c:32. +[value] Done for function wcslcat +[value] computing for function wcslcat <- main. + Called from tests/libc/wchar_c_h.c:32. +[value] Done for function wcslcat +[value] computing for function wcslcat <- main. + Called from tests/libc/wchar_c_h.c:32. +[value] Done for function wcslcat +[value] computing for function wcslcat <- main. + Called from tests/libc/wchar_c_h.c:32. +[value] Done for function wcslcat +[value] computing for function wcslcpy <- main. + Called from tests/libc/wchar_c_h.c:33. +[value] using specification for function wcslcpy +share/libc/wchar.h:100:[value] function wcslcpy: precondition got status valid. +[value] Done for function wcslcpy +[value] computing for function wcslcpy <- main. + Called from tests/libc/wchar_c_h.c:33. +[value] Done for function wcslcpy +[value] computing for function wcslcpy <- main. + Called from tests/libc/wchar_c_h.c:33. +[value] Done for function wcslcpy +[value] computing for function wcslcpy <- main. + Called from tests/libc/wchar_c_h.c:33. +[value] Done for function wcslcpy +[value] computing for function wcslcpy <- main. + Called from tests/libc/wchar_c_h.c:33. +[value] Done for function wcslcpy +[value] computing for function wcslcpy <- main. + Called from tests/libc/wchar_c_h.c:33. +[value] Done for function wcslcpy +[value] computing for function wcslcpy <- main. + Called from tests/libc/wchar_c_h.c:33. +[value] Done for function wcslcpy +[value] computing for function wcslcpy <- main. + Called from tests/libc/wchar_c_h.c:33. +[value] Done for function wcslcpy +[value] computing for function wcslen <- main. + Called from tests/libc/wchar_c_h.c:34. +[value] Recording results for wcslen +[value] Done for function wcslen +[value] computing for function wcslen <- main. + Called from tests/libc/wchar_c_h.c:34. +[value] Recording results for wcslen +[value] Done for function wcslen +[value] computing for function wcslen <- main. + Called from tests/libc/wchar_c_h.c:34. +[value] Recording results for wcslen +[value] Done for function wcslen +[value] computing for function wcslen <- main. + Called from tests/libc/wchar_c_h.c:34. +[value] Recording results for wcslen +[value] Done for function wcslen +[value] computing for function wcslen <- main. + Called from tests/libc/wchar_c_h.c:34. +[value] Recording results for wcslen +[value] Done for function wcslen +[value] computing for function wcslen <- main. + Called from tests/libc/wchar_c_h.c:34. +[value] Recording results for wcslen +[value] Done for function wcslen +[value] computing for function wcslen <- main. + Called from tests/libc/wchar_c_h.c:34. +[value] Recording results for wcslen +[value] Done for function wcslen +[value] computing for function wcslen <- main. + Called from tests/libc/wchar_c_h.c:34. +[value] Recording results for wcslen +[value] Done for function wcslen +[value] computing for function wcsncmp <- main. + Called from tests/libc/wchar_c_h.c:35. +[value] using specification for function wcsncmp +[value] Done for function wcsncmp +[value] computing for function wcsncmp <- main. + Called from tests/libc/wchar_c_h.c:35. +[value] Done for function wcsncmp +[value] computing for function wcsncmp <- main. + Called from tests/libc/wchar_c_h.c:35. +[value] Done for function wcsncmp +[value] computing for function wcsncmp <- main. + Called from tests/libc/wchar_c_h.c:35. +[value] Done for function wcsncmp +[value] computing for function wcsncmp <- main. + Called from tests/libc/wchar_c_h.c:35. +[value] Done for function wcsncmp +[value] computing for function wcsncmp <- main. + Called from tests/libc/wchar_c_h.c:35. +[value] Done for function wcsncmp +[value] computing for function wcsncmp <- main. + Called from tests/libc/wchar_c_h.c:35. +[value] Done for function wcsncmp +[value] computing for function wcsncmp <- main. + Called from tests/libc/wchar_c_h.c:35. +[value] Done for function wcsncmp +[value] computing for function wcsncpy <- main. + Called from tests/libc/wchar_c_h.c:36. +share/libc/wchar.h:120:[value] function wcsncpy: precondition got status valid. +share/libc/wchar.h:123:[value] function wcsncpy: postcondition got status valid. +[value] Recording results for wcsncpy +[value] Done for function wcsncpy +[value] computing for function wcsncpy <- main. + Called from tests/libc/wchar_c_h.c:36. +[value] Recording results for wcsncpy +[value] Done for function wcsncpy +[value] computing for function wcsncpy <- main. + Called from tests/libc/wchar_c_h.c:36. +[value] Recording results for wcsncpy +[value] Done for function wcsncpy +[value] computing for function wcsncpy <- main. + Called from tests/libc/wchar_c_h.c:36. +[value] Recording results for wcsncpy +[value] Done for function wcsncpy +[value] computing for function wcsncpy <- main. + Called from tests/libc/wchar_c_h.c:36. +[value] Recording results for wcsncpy +[value] Done for function wcsncpy +[value] computing for function wcsncpy <- main. + Called from tests/libc/wchar_c_h.c:36. +[value] Recording results for wcsncpy +[value] Done for function wcsncpy +[value] computing for function wcsncpy <- main. + Called from tests/libc/wchar_c_h.c:36. +[value] Recording results for wcsncpy +[value] Done for function wcsncpy +[value] computing for function wcsncpy <- main. + Called from tests/libc/wchar_c_h.c:36. +[value] Recording results for wcsncpy +[value] Done for function wcsncpy +[value] computing for function wcspbrk <- main. + Called from tests/libc/wchar_c_h.c:37. +[value] using specification for function wcspbrk +[value] Done for function wcspbrk +[value] computing for function wcspbrk <- main. + Called from tests/libc/wchar_c_h.c:37. +[value] Done for function wcspbrk +[value] computing for function wcspbrk <- main. + Called from tests/libc/wchar_c_h.c:37. +[value] Done for function wcspbrk +[value] computing for function wcspbrk <- main. + Called from tests/libc/wchar_c_h.c:37. +[value] Done for function wcspbrk +[value] computing for function wcspbrk <- main. + Called from tests/libc/wchar_c_h.c:37. +[value] Done for function wcspbrk +[value] computing for function wcspbrk <- main. + Called from tests/libc/wchar_c_h.c:37. +[value] Done for function wcspbrk +[value] computing for function wcspbrk <- main. + Called from tests/libc/wchar_c_h.c:37. +[value] Done for function wcspbrk +[value] computing for function wcspbrk <- main. + Called from tests/libc/wchar_c_h.c:37. +[value] Done for function wcspbrk +[value] computing for function wcspbrk <- main. + Called from tests/libc/wchar_c_h.c:37. +[value] Done for function wcspbrk +[value] computing for function wcspbrk <- main. + Called from tests/libc/wchar_c_h.c:37. +[value] Done for function wcspbrk +[value] computing for function wcsrchr <- main. + Called from tests/libc/wchar_c_h.c:38. +[value] using specification for function wcsrchr +[value] Done for function wcsrchr +[value] computing for function wcsrchr <- main. + Called from tests/libc/wchar_c_h.c:38. +[value] Done for function wcsrchr +[value] computing for function wcsrchr <- main. + Called from tests/libc/wchar_c_h.c:38. +[value] Done for function wcsrchr +[value] computing for function wcsrchr <- main. + Called from tests/libc/wchar_c_h.c:38. +[value] Done for function wcsrchr +[value] computing for function wcsrchr <- main. + Called from tests/libc/wchar_c_h.c:38. +[value] Done for function wcsrchr +[value] computing for function wcsrchr <- main. + Called from tests/libc/wchar_c_h.c:38. +[value] Done for function wcsrchr +[value] computing for function wcsrchr <- main. + Called from tests/libc/wchar_c_h.c:38. +[value] Done for function wcsrchr +[value] computing for function wcsrchr <- main. + Called from tests/libc/wchar_c_h.c:38. +[value] Done for function wcsrchr +[value] computing for function wcsrchr <- main. + Called from tests/libc/wchar_c_h.c:38. +[value] Done for function wcsrchr +[value] computing for function wcsrchr <- main. + Called from tests/libc/wchar_c_h.c:38. +[value] Done for function wcsrchr +[value] computing for function wcsrchr <- main. + Called from tests/libc/wchar_c_h.c:38. +[value] Done for function wcsrchr +[value] computing for function wcsrchr <- main. + Called from tests/libc/wchar_c_h.c:38. +[value] Done for function wcsrchr +[value] computing for function wcsspn <- main. + Called from tests/libc/wchar_c_h.c:39. +[value] using specification for function wcsspn +[value] Done for function wcsspn +[value] computing for function wcsspn <- main. + Called from tests/libc/wchar_c_h.c:39. +[value] Done for function wcsspn +[value] computing for function wcsspn <- main. + Called from tests/libc/wchar_c_h.c:39. +[value] Done for function wcsspn +[value] computing for function wcsspn <- main. + Called from tests/libc/wchar_c_h.c:39. +[value] Done for function wcsspn +[value] computing for function wcsspn <- main. + Called from tests/libc/wchar_c_h.c:39. +[value] Done for function wcsspn +[value] computing for function wcsspn <- main. + Called from tests/libc/wchar_c_h.c:39. +[value] Done for function wcsspn +[value] computing for function wcsspn <- main. + Called from tests/libc/wchar_c_h.c:39. +[value] Done for function wcsspn +[value] computing for function wcsspn <- main. + Called from tests/libc/wchar_c_h.c:39. +[value] Done for function wcsspn +[value] computing for function wcsspn <- main. + Called from tests/libc/wchar_c_h.c:39. +[value] Done for function wcsspn +[value] computing for function wcsspn <- main. + Called from tests/libc/wchar_c_h.c:39. +[value] Done for function wcsspn +[value] computing for function wcsspn <- main. + Called from tests/libc/wchar_c_h.c:39. +[value] Done for function wcsspn +[value] computing for function wcsspn <- main. + Called from tests/libc/wchar_c_h.c:39. +[value] Done for function wcsspn +[value] computing for function wcsstr <- main. + Called from tests/libc/wchar_c_h.c:40. +[value] using specification for function wcsstr +[value] Done for function wcsstr +[value] computing for function wcsstr <- main. + Called from tests/libc/wchar_c_h.c:40. +[value] Done for function wcsstr +[value] computing for function wcsstr <- main. + Called from tests/libc/wchar_c_h.c:40. +[value] Done for function wcsstr +[value] computing for function wcsstr <- main. + Called from tests/libc/wchar_c_h.c:40. +[value] Done for function wcsstr +[value] computing for function wcsstr <- main. + Called from tests/libc/wchar_c_h.c:40. +[value] Done for function wcsstr +[value] computing for function wcsstr <- main. + Called from tests/libc/wchar_c_h.c:40. +[value] Done for function wcsstr +[value] computing for function wcsstr <- main. + Called from tests/libc/wchar_c_h.c:40. +[value] Done for function wcsstr +[value] computing for function wcsstr <- main. + Called from tests/libc/wchar_c_h.c:40. +[value] Done for function wcsstr +[value] computing for function wcsstr <- main. + Called from tests/libc/wchar_c_h.c:40. +[value] Done for function wcsstr +[value] computing for function wcsstr <- main. + Called from tests/libc/wchar_c_h.c:40. +[value] Done for function wcsstr +[value] computing for function wcsstr <- main. + Called from tests/libc/wchar_c_h.c:40. +[value] Done for function wcsstr +[value] computing for function wcsstr <- main. + Called from tests/libc/wchar_c_h.c:40. +[value] Done for function wcsstr +[value] computing for function wcscat <- main. + Called from tests/libc/wchar_c_h.c:44. +share/libc/wchar.h:68:[value] function wcscat: postcondition got status valid. +[value] Recording results for wcscat +[value] Done for function wcscat +[value] computing for function wcscat <- main. + Called from tests/libc/wchar_c_h.c:44. +[value] Recording results for wcscat +[value] Done for function wcscat +[value] computing for function wcscat <- main. + Called from tests/libc/wchar_c_h.c:44. +[value] Recording results for wcscat +[value] Done for function wcscat +[value] computing for function wcscat <- main. + Called from tests/libc/wchar_c_h.c:44. +[value] Recording results for wcscat +[value] Done for function wcscat +[value] computing for function wcscat <- main. + Called from tests/libc/wchar_c_h.c:44. +[value] Recording results for wcscat +[value] Done for function wcscat +[value] computing for function wcscat <- main. + Called from tests/libc/wchar_c_h.c:44. +[value] Recording results for wcscat +[value] Done for function wcscat +[value] computing for function wcscat <- main. + Called from tests/libc/wchar_c_h.c:44. +[value] Recording results for wcscat +[value] Done for function wcscat +[value] computing for function wcscat <- main. + Called from tests/libc/wchar_c_h.c:44. +[value] Recording results for wcscat +[value] Done for function wcscat +[value] computing for function wcscat <- main. + Called from tests/libc/wchar_c_h.c:44. +[value] Recording results for wcscat +[value] Done for function wcscat +[value] computing for function wcsncat <- main. + Called from tests/libc/wchar_c_h.c:46. +[value] computing for function wcslen <- wcsncat <- main. + Called from share/libc/wchar.c:89. +[value] Recording results for wcslen +[value] Done for function wcslen +share/libc/wchar.h:112:[value] function wcsncat: postcondition got status valid. +[value] Recording results for wcsncat +[value] Done for function wcsncat +[value] computing for function wcsncat <- main. + Called from tests/libc/wchar_c_h.c:46. +[value] computing for function wcslen <- wcsncat <- main. + Called from share/libc/wchar.c:89. +[value] Recording results for wcslen +[value] Done for function wcslen +[value] Recording results for wcsncat +[value] Done for function wcsncat +[value] computing for function wcsncat <- main. + Called from tests/libc/wchar_c_h.c:46. +[value] computing for function wcslen <- wcsncat <- main. + Called from share/libc/wchar.c:89. +[value] Recording results for wcslen +[value] Done for function wcslen +[value] Recording results for wcsncat +[value] Done for function wcsncat +[value] computing for function wcsncat <- main. + Called from tests/libc/wchar_c_h.c:46. +[value] computing for function wcslen <- wcsncat <- main. + Called from share/libc/wchar.c:89. +[value] Recording results for wcslen +[value] Done for function wcslen +[value] Recording results for wcsncat +[value] Done for function wcsncat +[value] computing for function wcsncat <- main. + Called from tests/libc/wchar_c_h.c:46. +[value] computing for function wcslen <- wcsncat <- main. + Called from share/libc/wchar.c:89. +[value] Recording results for wcslen +[value] Done for function wcslen +[value] Recording results for wcsncat +[value] Done for function wcsncat +[value] computing for function wcsncat <- main. + Called from tests/libc/wchar_c_h.c:46. +[value] computing for function wcslen <- wcsncat <- main. + Called from share/libc/wchar.c:89. +[value] Recording results for wcslen +[value] Done for function wcslen +[value] Recording results for wcsncat +[value] Done for function wcsncat +[value] computing for function wcsncat <- main. + Called from tests/libc/wchar_c_h.c:46. +[value] computing for function wcslen <- wcsncat <- main. + Called from share/libc/wchar.c:89. +[value] Recording results for wcslen +[value] Done for function wcslen +[value] Recording results for wcsncat +[value] Done for function wcsncat +[value] computing for function wcsncat <- main. + Called from tests/libc/wchar_c_h.c:46. +[value] computing for function wcslen <- wcsncat <- main. + Called from share/libc/wchar.c:89. +[value] Recording results for wcslen +[value] Done for function wcslen +[value] Recording results for wcsncat +[value] Done for function wcsncat +[value] computing for function wcsncat <- main. + Called from tests/libc/wchar_c_h.c:46. +[value] computing for function wcslen <- wcsncat <- main. + Called from share/libc/wchar.c:89. +[value] Recording results for wcslen +[value] Done for function wcslen +[value] Recording results for wcsncat +[value] Done for function wcsncat +[value] computing for function wcsncat <- main. + Called from tests/libc/wchar_c_h.c:46. +[value] computing for function wcslen <- wcsncat <- main. + Called from share/libc/wchar.c:89. +[value] Recording results for wcslen +[value] Done for function wcslen +[value] Recording results for wcsncat +[value] Done for function wcsncat +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function wcscat: + s1 ∈ {{ &buf{[9], [10], [11], [12], [13], [14]} }} + s2 ∈ {{ L"Haystack" + {36} }} + os1 ∈ {{ &buf[0] }} + buf[0..4] ∈ [--..--] + [5] ∈ {72; 97; 115; 116; 121} + [6] ∈ {97; 99; 115; 116; 121} + [7] ∈ {97; 99; 107; 115; 116; 121} + [8] ∈ {0; 97; 99; 107; 115; 116} + [9..19] ∈ [--..--] or UNINITIALIZED +[value:final-states] Values at end of function wcscpy: + s1 ∈ {{ &buf[9] }} + s2 ∈ {{ L"Haystack" + {36} }} + os1 ∈ {{ &buf[0] }} + buf[0] ∈ {72} + [1] ∈ {97} + [2] ∈ {121} + [3] ∈ {115} + [4] ∈ {116} + [5] ∈ {97} + [6] ∈ {99} + [7] ∈ {107} + [8] ∈ {0} + [9..19] ∈ UNINITIALIZED +[value:final-states] Values at end of function wcslen: + s ∈ {{ &buf{[0], [1], [2], [3], [4], [5]} ; L"Needle" + {24} }} + __retres ∈ {0; 1; 2; 3; 4; 5; 6} +[value:final-states] Values at end of function wcsncat: + dest_len ∈ {0; 1; 2; 3; 4; 5} + i ∈ {5} + buf[0..4] ∈ [--..--] + [5] ∈ {0; 72; 97; 115; 116; 121} + [6..19] ∈ [--..--] or UNINITIALIZED +[value:final-states] Values at end of function wcsncpy: + s1 ∈ {{ &buf[5] }} + s2 ∈ {{ L"Haystack" + {20} }} + n ∈ {0} + os1 ∈ {{ &buf[0] }} + buf[0] ∈ {72} + [1] ∈ {97} + [2] ∈ {121} + [3] ∈ {115} + [4] ∈ {116} + [5..19] ∈ [--..--] or UNINITIALIZED +[value:final-states] Values at end of function wmemcpy: + first ∈ {{ L"Haystack" + {20} }} + last ∈ {{ L"Haystack" + {20} }} + result ∈ {{ &buf[0] }} + dest ∈ {{ &buf[5] }} + buf[0] ∈ {72} + [1] ∈ {97} + [2] ∈ {121} + [3] ∈ {115} + [4] ∈ {116} + [5..19] ∈ UNINITIALIZED +[value:final-states] Values at end of function wmemset: + len ∈ {4294967295} + ptr ∈ {{ &buf[5] }} + buf[0..4] ∈ [--..--] + [5..19] ∈ UNINITIALIZED +[value:final-states] Values at end of function main: + sc1 ∈ {{ L"Needle" }} + sc2 ∈ {{ L"Haystack" }} + buf[0..4] ∈ [--..--] + [5] ∈ {0; 72; 97; 115; 116; 121} + [6..19] ∈ [--..--] or UNINITIALIZED + c ∈ [--..--] + n ∈ {5} + r ∈ [--..--] or UNINITIALIZED + i ∈ {5} + res ∈ {{ NULL ; &buf[0] ; L"Needle" + [0..--],0%4 }} + __retres ∈ {0} diff --git a/tests/libc/oracle/wchar_c_h.1.err.oracle b/tests/libc/oracle/wchar_c_h.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/libc/oracle/wchar_c_h.1.res.oracle b/tests/libc/oracle/wchar_c_h.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..ccdf91a203dc9a3148d151212f5347e79edadec7 --- /dev/null +++ b/tests/libc/oracle/wchar_c_h.1.res.oracle @@ -0,0 +1,311 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/libc/wchar_c_h.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + nondet ∈ [--..--] +[value] computing for function wmemchr <- main. + Called from tests/libc/wchar_c_h.c:23. +[value] using specification for function wmemchr +[value] Done for function wmemchr +[value] computing for function wmemcmp <- main. + Called from tests/libc/wchar_c_h.c:24. +[value] using specification for function wmemcmp +[value] Done for function wmemcmp +[value] computing for function wmemcmp <- main. + Called from tests/libc/wchar_c_h.c:24. +[value] Done for function wmemcmp +[value] computing for function wmemcpy <- main. + Called from tests/libc/wchar_c_h.c:25. +[value] using specification for function wmemcpy +share/libc/wchar.h:44:[value] function wmemcpy: precondition got status valid. +[value] Done for function wmemcpy +[value] computing for function wmemcpy <- main. + Called from tests/libc/wchar_c_h.c:25. +[value] Done for function wmemcpy +[value] computing for function wmemmove <- main. + Called from tests/libc/wchar_c_h.c:26. +[value] using specification for function wmemmove +[value] Done for function wmemmove +[value] computing for function wmemmove <- main. + Called from tests/libc/wchar_c_h.c:26. +[value] Done for function wmemmove +[value] computing for function wmemmove <- main. + Called from tests/libc/wchar_c_h.c:26. +[value] Done for function wmemmove +[value] computing for function wmemset <- main. + Called from tests/libc/wchar_c_h.c:27. +[value] using specification for function wmemset +[value] Done for function wmemset +[value] computing for function wmemset <- main. + Called from tests/libc/wchar_c_h.c:27. +[value] Done for function wmemset +[value] computing for function wmemset <- main. + Called from tests/libc/wchar_c_h.c:27. +[value] Done for function wmemset +[value] computing for function wcschr <- main. + Called from tests/libc/wchar_c_h.c:28. +[value] using specification for function wcschr +[value] Done for function wcschr +[value] computing for function wcschr <- main. + Called from tests/libc/wchar_c_h.c:28. +[value] Done for function wcschr +[value] computing for function wcschr <- main. + Called from tests/libc/wchar_c_h.c:28. +[value] Done for function wcschr +[value] computing for function wcscmp <- main. + Called from tests/libc/wchar_c_h.c:29. +[value] using specification for function wcscmp +[value] Done for function wcscmp +[value] computing for function wcscmp <- main. + Called from tests/libc/wchar_c_h.c:29. +[value] Done for function wcscmp +[value] computing for function wcscmp <- main. + Called from tests/libc/wchar_c_h.c:29. +[value] Done for function wcscmp +[value] computing for function wcscpy <- main. + Called from tests/libc/wchar_c_h.c:30. +[value] using specification for function wcscpy +[value] Done for function wcscpy +[value] computing for function wcscpy <- main. + Called from tests/libc/wchar_c_h.c:30. +[value] Done for function wcscpy +[value] computing for function wcscpy <- main. + Called from tests/libc/wchar_c_h.c:30. +[value] Done for function wcscpy +[value] computing for function wcscspn <- main. + Called from tests/libc/wchar_c_h.c:31. +[value] using specification for function wcscspn +[value] Done for function wcscspn +[value] computing for function wcscspn <- main. + Called from tests/libc/wchar_c_h.c:31. +[value] Done for function wcscspn +[value] computing for function wcscspn <- main. + Called from tests/libc/wchar_c_h.c:31. +[value] Done for function wcscspn +[value] computing for function wcslcat <- main. + Called from tests/libc/wchar_c_h.c:32. +[value] using specification for function wcslcat +[value] Done for function wcslcat +[value] computing for function wcslcat <- main. + Called from tests/libc/wchar_c_h.c:32. +[value] Done for function wcslcat +[value] computing for function wcslcat <- main. + Called from tests/libc/wchar_c_h.c:32. +[value] Done for function wcslcat +[value] computing for function wcslcat <- main. + Called from tests/libc/wchar_c_h.c:32. +[value] Done for function wcslcat +[value] computing for function wcslcat <- main. + Called from tests/libc/wchar_c_h.c:32. +[value] Done for function wcslcat +[value] computing for function wcslcat <- main. + Called from tests/libc/wchar_c_h.c:32. +[value] Done for function wcslcat +[value] computing for function wcslcpy <- main. + Called from tests/libc/wchar_c_h.c:33. +[value] using specification for function wcslcpy +share/libc/wchar.h:100:[value] function wcslcpy: precondition got status valid. +[value] Done for function wcslcpy +[value] computing for function wcslcpy <- main. + Called from tests/libc/wchar_c_h.c:33. +[value] Done for function wcslcpy +[value] computing for function wcslcpy <- main. + Called from tests/libc/wchar_c_h.c:33. +[value] Done for function wcslcpy +[value] computing for function wcslcpy <- main. + Called from tests/libc/wchar_c_h.c:33. +[value] Done for function wcslcpy +[value] computing for function wcslcpy <- main. + Called from tests/libc/wchar_c_h.c:33. +[value] Done for function wcslcpy +[value] computing for function wcslcpy <- main. + Called from tests/libc/wchar_c_h.c:33. +[value] Done for function wcslcpy +[value] computing for function wcslen <- main. + Called from tests/libc/wchar_c_h.c:34. +[value] using specification for function wcslen +[value] Done for function wcslen +[value] computing for function wcslen <- main. + Called from tests/libc/wchar_c_h.c:34. +[value] Done for function wcslen +[value] computing for function wcslen <- main. + Called from tests/libc/wchar_c_h.c:34. +[value] Done for function wcslen +[value] computing for function wcslen <- main. + Called from tests/libc/wchar_c_h.c:34. +[value] Done for function wcslen +[value] computing for function wcslen <- main. + Called from tests/libc/wchar_c_h.c:34. +[value] Done for function wcslen +[value] computing for function wcslen <- main. + Called from tests/libc/wchar_c_h.c:34. +[value] Done for function wcslen +[value] computing for function wcsncmp <- main. + Called from tests/libc/wchar_c_h.c:35. +[value] using specification for function wcsncmp +[value] Done for function wcsncmp +[value] computing for function wcsncmp <- main. + Called from tests/libc/wchar_c_h.c:35. +[value] Done for function wcsncmp +[value] computing for function wcsncmp <- main. + Called from tests/libc/wchar_c_h.c:35. +[value] Done for function wcsncmp +[value] computing for function wcsncmp <- main. + Called from tests/libc/wchar_c_h.c:35. +[value] Done for function wcsncmp +[value] computing for function wcsncmp <- main. + Called from tests/libc/wchar_c_h.c:35. +[value] Done for function wcsncmp +[value] computing for function wcsncmp <- main. + Called from tests/libc/wchar_c_h.c:35. +[value] Done for function wcsncmp +[value] computing for function wcsncpy <- main. + Called from tests/libc/wchar_c_h.c:36. +[value] using specification for function wcsncpy +share/libc/wchar.h:120:[value] function wcsncpy: precondition got status valid. +[value] Done for function wcsncpy +[value] computing for function wcsncpy <- main. + Called from tests/libc/wchar_c_h.c:36. +[value] Done for function wcsncpy +[value] computing for function wcsncpy <- main. + Called from tests/libc/wchar_c_h.c:36. +[value] Done for function wcsncpy +[value] computing for function wcsncpy <- main. + Called from tests/libc/wchar_c_h.c:36. +[value] Done for function wcsncpy +[value] computing for function wcsncpy <- main. + Called from tests/libc/wchar_c_h.c:36. +[value] Done for function wcsncpy +[value] computing for function wcsncpy <- main. + Called from tests/libc/wchar_c_h.c:36. +[value] Done for function wcsncpy +[value] computing for function wcspbrk <- main. + Called from tests/libc/wchar_c_h.c:37. +[value] using specification for function wcspbrk +[value] Done for function wcspbrk +[value] computing for function wcspbrk <- main. + Called from tests/libc/wchar_c_h.c:37. +[value] Done for function wcspbrk +[value] computing for function wcspbrk <- main. + Called from tests/libc/wchar_c_h.c:37. +[value] Done for function wcspbrk +[value] computing for function wcspbrk <- main. + Called from tests/libc/wchar_c_h.c:37. +[value] Done for function wcspbrk +[value] computing for function wcspbrk <- main. + Called from tests/libc/wchar_c_h.c:37. +[value] Done for function wcspbrk +[value] computing for function wcspbrk <- main. + Called from tests/libc/wchar_c_h.c:37. +[value] Done for function wcspbrk +[value] computing for function wcsrchr <- main. + Called from tests/libc/wchar_c_h.c:38. +[value] using specification for function wcsrchr +[value] Done for function wcsrchr +[value] computing for function wcsrchr <- main. + Called from tests/libc/wchar_c_h.c:38. +[value] Done for function wcsrchr +[value] computing for function wcsrchr <- main. + Called from tests/libc/wchar_c_h.c:38. +[value] Done for function wcsrchr +[value] computing for function wcsrchr <- main. + Called from tests/libc/wchar_c_h.c:38. +[value] Done for function wcsrchr +[value] computing for function wcsrchr <- main. + Called from tests/libc/wchar_c_h.c:38. +[value] Done for function wcsrchr +[value] computing for function wcsrchr <- main. + Called from tests/libc/wchar_c_h.c:38. +[value] Done for function wcsrchr +[value] computing for function wcsspn <- main. + Called from tests/libc/wchar_c_h.c:39. +[value] using specification for function wcsspn +[value] Done for function wcsspn +[value] computing for function wcsspn <- main. + Called from tests/libc/wchar_c_h.c:39. +[value] Done for function wcsspn +[value] computing for function wcsspn <- main. + Called from tests/libc/wchar_c_h.c:39. +[value] Done for function wcsspn +[value] computing for function wcsspn <- main. + Called from tests/libc/wchar_c_h.c:39. +[value] Done for function wcsspn +[value] computing for function wcsspn <- main. + Called from tests/libc/wchar_c_h.c:39. +[value] Done for function wcsspn +[value] computing for function wcsspn <- main. + Called from tests/libc/wchar_c_h.c:39. +[value] Done for function wcsspn +[value] computing for function wcsstr <- main. + Called from tests/libc/wchar_c_h.c:40. +[value] using specification for function wcsstr +[value] Done for function wcsstr +[value] computing for function wcsstr <- main. + Called from tests/libc/wchar_c_h.c:40. +[value] Done for function wcsstr +[value] computing for function wcsstr <- main. + Called from tests/libc/wchar_c_h.c:40. +[value] Done for function wcsstr +[value] computing for function wcsstr <- main. + Called from tests/libc/wchar_c_h.c:40. +[value] Done for function wcsstr +[value] computing for function wcsstr <- main. + Called from tests/libc/wchar_c_h.c:40. +[value] Done for function wcsstr +[value] computing for function wcsstr <- main. + Called from tests/libc/wchar_c_h.c:40. +[value] Done for function wcsstr +[value] computing for function wcscat <- main. + Called from tests/libc/wchar_c_h.c:44. +[value] using specification for function wcscat +[value] Done for function wcscat +[value] computing for function wcscat <- main. + Called from tests/libc/wchar_c_h.c:44. +[value] Done for function wcscat +[value] computing for function wcscat <- main. + Called from tests/libc/wchar_c_h.c:44. +[value] Done for function wcscat +[value] computing for function wcscat <- main. + Called from tests/libc/wchar_c_h.c:44. +[value] Done for function wcscat +[value] computing for function wcscat <- main. + Called from tests/libc/wchar_c_h.c:44. +[value] Done for function wcscat +[value] computing for function wcscat <- main. + Called from tests/libc/wchar_c_h.c:44. +[value] Done for function wcscat +[value] computing for function wcsncat <- main. + Called from tests/libc/wchar_c_h.c:46. +[value] using specification for function wcsncat +[value] Done for function wcsncat +[value] computing for function wcsncat <- main. + Called from tests/libc/wchar_c_h.c:46. +[value] Done for function wcsncat +[value] computing for function wcsncat <- main. + Called from tests/libc/wchar_c_h.c:46. +[value] Done for function wcsncat +[value] computing for function wcsncat <- main. + Called from tests/libc/wchar_c_h.c:46. +[value] Done for function wcsncat +[value] computing for function wcsncat <- main. + Called from tests/libc/wchar_c_h.c:46. +[value] Done for function wcsncat +[value] computing for function wcsncat <- main. + Called from tests/libc/wchar_c_h.c:46. +[value] Done for function wcsncat +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + sc1 ∈ {{ L"Needle" }} + sc2 ∈ {{ L"Haystack" }} + buf[0..5] ∈ [--..--] + [6..19] ∈ [--..--] or UNINITIALIZED + c ∈ [--..--] + n ∈ {5} + r ∈ [--..--] or UNINITIALIZED + i ∈ {5} + res ∈ {{ NULL ; &buf[0] ; L"Needle" + [0..--],0%4 }} + __retres ∈ {0} diff --git a/tests/libc/stdlib_h.c b/tests/libc/stdlib_h.c new file mode 100644 index 0000000000000000000000000000000000000000..054b7d86dd4ec046253219630d7c9c2c02f700d2 --- /dev/null +++ b/tests/libc/stdlib_h.c @@ -0,0 +1,11 @@ +#include <stdlib.h> + +int main() { + char *s = "12 34 56"; + char *p, *q; + long l = strtol(s, &p, 0); + l = strtol(p, &q, 0); + l = strtol(q, NULL, 0); + l = strtol(s+8, NULL, 0); + return l; +} diff --git a/tests/libc/wchar_c_h.c b/tests/libc/wchar_c_h.c new file mode 100644 index 0000000000000000000000000000000000000000..f14b18ece1261c70a136a988f0a6f688d059dbd4 --- /dev/null +++ b/tests/libc/wchar_c_h.c @@ -0,0 +1,50 @@ +/* run.config + STDOPT: +"-cpp-extra-args=-DTEST_IMPLEMENTATION=1" +"-slevel 1000" + STDOPT: +"-slevel 1000" +*/ + +#include <wchar.h> + +#ifdef TEST_IMPLEMENTATION +#include "wchar.c" +#endif + +volatile int nondet; + +int main() { + wchar_t *sc1 = L"Needle"; + wchar_t *sc2 = L"Haystack"; + wchar_t buf[20]; + wchar_t c = nondet; + size_t n = 5, r; + int i = -1; + wchar_t *res = 0; + + if (nondet) res = wmemchr(sc1, c, n); + if (nondet) i = wmemcmp(sc1, sc2, n); + if (nondet) res = wmemcpy(buf, sc2, n); + if (nondet) res = wmemmove(buf, sc2, n); + if (nondet) res = wmemset(buf, c, n); + if (nondet) res = wcschr(sc1, c); + if (nondet) i = wcscmp(sc1, sc2); + if (nondet) res = wcscpy(buf, sc2); + if (nondet) r = wcscspn(sc1, sc2); + if (nondet) r = wcslcat(buf, sc2, n); + if (nondet) r = wcslcpy(buf, sc2, n); + if (nondet) r = wcslen(sc1); + if (nondet) i = wcsncmp(sc1, sc2, n); + if (nondet) res = wcsncpy(buf, sc2, n); + if (nondet) res = wcspbrk(sc1, sc2); + if (nondet) res = wcsrchr(sc1, c); + if (nondet) r = wcsspn(sc1, sc2); + if (nondet) res = wcsstr(sc1, sc2); + + for (i = 0; i < 5; i++) buf[i] = nondet; + buf[i] = L'\0'; + if (nondet) res = wcscat(buf, sc2); + buf[i] = L'\0'; + if (nondet) res = wcsncat(buf, sc2, n); + + + return 0; +} diff --git a/tests/metrics/locals_size.i b/tests/metrics/locals_size.i new file mode 100644 index 0000000000000000000000000000000000000000..8e02226c49c93c5010f6f1c46dfd32bcd981f8a5 --- /dev/null +++ b/tests/metrics/locals_size.i @@ -0,0 +1,59 @@ +/* run.config + OPT: -metrics-locals-size f,g,level3,level2,level1,main + OPT: -metrics-locals-size recurse2 + */ + +// locals size without temps: 0 +int f() { + static int count = 0; // not a local + count++; + return count; +} + +// locals size without temps: sizeof(k) + sizeof(l2) + sizeof(__retres) +int g() { + char l1 = 3; + int l2 = l1++; // force creation of a temporary + return l1 + l2; +} + +// locals size without temps: sizeof(p) + sizeof(k) + sizeof(__retres) +int level3(int p) { + char k = 13; + return k + p; +} + +// locals size without temps: sizeof(a) + sizeof(b) +int level2(int a, int b) { + return level3(a + b + a); +} + +// locals size without temps: sizeof(f) + sizeof(t1) + sizeof(t2) +int level1(int f) { + int t1 = f; + int t2 = f + 2; + return level2(t1, t2); +} + +typedef int incomplete[]; + +// locals size without temps: sizeof(i) + sizeof(k) + sizeof(j) + +// sizeof(__retres) +int main() { + incomplete i = {0}; + int k = f() + g(); // temporaries + int j = level1(f()); + return 0; +} + +int recurse2(int); + +int recurse1(int k) { + if (k < 2) return 1; + else return recurse2(k-1); +} + +int recurse2(int k) { + if (k < 3) return 0; + else return recurse1(k-1); +} diff --git a/tests/metrics/oracle/locals_size.0.err.oracle b/tests/metrics/oracle/locals_size.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/metrics/oracle/locals_size.0.res.oracle b/tests/metrics/oracle/locals_size.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..fa16e984e37f22ed9a5854a76d78d0cd0906515f --- /dev/null +++ b/tests/metrics/oracle/locals_size.0.res.oracle @@ -0,0 +1,10 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/metrics/locals_size.i (no preprocessing) +[metrics] function locals_size_no_temps locals_size_with_temps max_call_size_no_temps max_call_size_with_temps +[metrics] f 0 0 0 0 +[metrics] g 9 10 0 0 +[metrics] level3 9 9 0 0 +[metrics] level2 8 12 9 9 +[metrics] level1 12 16 17 21 +[metrics] user error: in function main, cannot compute sizeof i (type incomplete) +[metrics] main 12 28 29 37 diff --git a/tests/metrics/oracle/locals_size.1.err.oracle b/tests/metrics/oracle/locals_size.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/metrics/oracle/locals_size.1.res.oracle b/tests/metrics/oracle/locals_size.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..472c5d9a7e0b96a0d919d6b8db0970ad3ff00532 --- /dev/null +++ b/tests/metrics/oracle/locals_size.1.res.oracle @@ -0,0 +1,5 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/metrics/locals_size.i (no preprocessing) +[metrics] function locals_size_no_temps locals_size_with_temps max_call_size_no_temps max_call_size_with_temps +[metrics] user error: unsupported recursive call detected: recurse2 <- recurse1 <- recurse2 +[kernel] Plug-in metrics aborted: invalid user input. diff --git a/tests/misc/bts0525-2.i b/tests/misc/bts0525-2.i index 3b0d0899a0a44c4ec14e302672c46c58beb7fa51..7fde0cd019cb0aaadd7913112dd5b38b517d2d68 100644 --- a/tests/misc/bts0525-2.i +++ b/tests/misc/bts0525-2.i @@ -1,5 +1,5 @@ /* run.config - OPT: -typecheck -check tests/misc/bts0525.i + OPT: -typecheck tests/misc/bts0525.i */ typedef enum {E1=2, E2} T_EN1 ; diff --git a/tests/misc/bts0525.i b/tests/misc/bts0525.i index d98c787b607cd3f7ae1c4ba7922ce0c72b9ea39e..a594d4b3752dbacef4f1142c054d91976719a06a 100644 --- a/tests/misc/bts0525.i +++ b/tests/misc/bts0525.i @@ -1,5 +1,5 @@ /* run.config - OPT: -check tests/misc/bts0525-2.i + OPT: tests/misc/bts0525-2.i */ typedef enum {E3=2, E4} T_EN2 ; typedef enum {E1=2, E2} T_EN1 ; diff --git a/tests/misc/change_formals.c b/tests/misc/change_formals.c index 1e0ae2e0ba36a8f6f0269bd3832a095b9132fabd..c84ec7afadef6caf0fe82ca4d74cb4c1521062a2 100644 --- a/tests/misc/change_formals.c +++ b/tests/misc/change_formals.c @@ -1,8 +1,8 @@ /* run.config EXECNOW: make -s tests/misc/Change_formals.cmxs -OPT: -load-module tests/misc/Change_formals.cmxs -cpp-extra-args="-DNO_PROTO" -check -then-on test -print -OPT: -load-module tests/misc/Change_formals.cmxs -cpp-extra-args="-DNO_IMPLEM" -check -then-on test -print -OPT: -load-module tests/misc/Change_formals.cmxs -check -then-on test -print +OPT: -load-module tests/misc/Change_formals.cmxs -cpp-extra-args="-DNO_PROTO" -then-on test -print +OPT: -load-module tests/misc/Change_formals.cmxs -cpp-extra-args="-DNO_IMPLEM" -then-on test -print +OPT: -load-module tests/misc/Change_formals.cmxs -then-on test -print */ #ifndef NO_PROTO diff --git a/tests/misc/char_ampamp.c b/tests/misc/char_ampamp.c index 5793ad3629be2c026ba185d43b038ff6977a21fe..6672229ba7531580858c3a9e12381ac89f4b1cb4 100644 --- a/tests/misc/char_ampamp.c +++ b/tests/misc/char_ampamp.c @@ -1,6 +1,3 @@ -/* run.config - OPT: -check - */ char c=1; int y; diff --git a/tests/misc/exception.i b/tests/misc/exception.i index 530e584d84180efdf8a420d887fe680b9c4791b7..d056c83e41e3e99634f8af83cfa3c65399a9b6f0 100644 --- a/tests/misc/exception.i +++ b/tests/misc/exception.i @@ -13,6 +13,14 @@ struct my_exn2 bar; int x = 42; +int f (int c) { + return c; +} + +int g(int c) { + return f(c); +} + int f1 (int c) { return c; } diff --git a/tests/misc/exception.ml b/tests/misc/exception.ml index 10123c99415f0b588b2b819e4a9aba9cac3bd1be..0af32684819c1f6b9c5a6b990f88916e06d3ae4d 100644 --- a/tests/misc/exception.ml +++ b/tests/misc/exception.ml @@ -1,3 +1,4 @@ +open Cabs open Cil_types let rec init_exn exn init acc = @@ -63,11 +64,13 @@ let add_catch my_exn my_exn2 f = let exn_field = Field (List.hd my_exn.cfields, NoOffset) in let exn2_field = Field (List.hd my_exn2.cfields, NoOffset) in let loc = Cil_datatype.Location.unknown in + let real_locals = f.sbody.blocals in let v1 = Cil.makeLocalVar f "exn" exn_type in let v2 = Cil.makeLocalVar f "y" Cil.intType in let v3 = Cil.makeLocalVar f "exn_aux" exn_type in let v4 = Cil.makeLocalVar f "exn2" exn_type2 in let v5 = Cil.makeLocalVar f "not_thrown" Cil.doubleType in + f.sbody.blocals <- real_locals; let id_block = Cil.mkBlock [Cil.mkStmtOneInstr (Set (Cil.var v1, Cil.evar ~loc v3, loc))] in @@ -102,11 +105,11 @@ let add_catch my_exn my_exn2 f = let change_body my_exn my_exn2 glob f = match f.svar.vname with - | "f1" -> add_my_exn my_exn f - | "f2" -> add_int_exn f - | "f3" -> add_int_ptr_exn glob f - | "f4" -> add_my_exn my_exn2 f - | "h" -> add_catch my_exn my_exn2 f + | "f1" -> add_my_exn my_exn f; File.must_recompute_cfg f + | "f2" -> add_int_exn f; File.must_recompute_cfg f + | "f3" -> add_int_ptr_exn glob f; File.must_recompute_cfg f + | "f4" -> add_my_exn my_exn2 f; File.must_recompute_cfg f + | "h" -> add_catch my_exn my_exn2 f; File.must_recompute_cfg f | _ -> () let add_exn ast = @@ -127,6 +130,50 @@ let add_exn ast = in List.iter treat_glob ast.globals +let loc = Cil_datatype.Location.unknown +let stmt stmt_node = { stmt_ghost = false; stmt_node } +let var v = { expr_loc = loc; expr_node = VARIABLE v } + +let mk_exn_cabs b = + { blabels = []; Cabs.battrs = []; + Cabs.bstmts = + [ stmt + (IF (var "c", + stmt (THROW (Some (var "x"),loc)), + stmt (BLOCK (b,loc,loc)),loc))] } + +let mk_catch_cabs b = + { blabels = []; Cabs.battrs = []; + Cabs.bstmts = + [ stmt + (TRY_CATCH + (stmt (BLOCK (b,loc,loc)), + [Some ([SpecType Tint],("x",JUSTBASE,[],loc)), + stmt ( + RETURN ( + { expr_loc = loc; expr_node = CONSTANT (CONST_INT "3")}, loc)); + None, + stmt ( + RETURN ( + { expr_loc = loc; expr_node = CONSTANT (CONST_INT "4")}, loc))], + loc))]} + +let add_exn_cabs (f,l) = + let treat_one_global (b,d) = + let d = + match d with + | FUNDEF (s,(t,("f",dt,a,l)),b,l1,l2) -> + FUNDEF (s,(t,("f",dt,a,l)), mk_exn_cabs b,l1,l2) + | FUNDEF (s,(t,("g",dt,a,l)),b,l1,l2) -> + FUNDEF (s,(t,("g",dt,a,l)), mk_catch_cabs b,l1,l2) + | _ -> d + in + b,d + in + (f, List.map treat_one_global l) + +let () = Frontc.add_syntactic_transformation add_exn_cabs + let add_exn_cat = File.register_code_transformation_category "add_exn" let () = File.add_code_transformation_before_cleanup add_exn_cat add_exn diff --git a/tests/misc/init_from_cil.i b/tests/misc/init_from_cil.i index 4a0e34395c7c34e68f4092d54fe76ef0ac79b060..276161982d21dae400626a206eca75b7064b3b44 100644 --- a/tests/misc/init_from_cil.i +++ b/tests/misc/init_from_cil.i @@ -1,5 +1,5 @@ /* run.config - OPT: -load-script tests/misc/init_from_cil.ml -check + OPT: -load-script tests/misc/init_from_cil.ml */ int f(int x); diff --git a/tests/misc/justcopy.i b/tests/misc/justcopy.i index aeb740ed0981c47ed77ef15f2cb8fefe47fa778d..1045df89354df37d9bb6936a454ceedadd769c85 100644 --- a/tests/misc/justcopy.i +++ b/tests/misc/justcopy.i @@ -1,3 +1,3 @@ /* run.config - OPT: -load-script tests/misc/justcopy.ml -check + OPT: -load-script tests/misc/justcopy.ml */ diff --git a/tests/misc/keep_entry_point.i b/tests/misc/keep_entry_point.i index f4aeaecfa942e2ab87004eb1c0b97d1d64abec4b..48746aabe0562d04934b6bf12ea7d704afc45169 100644 --- a/tests/misc/keep_entry_point.i +++ b/tests/misc/keep_entry_point.i @@ -1,6 +1,6 @@ /* run.config EXECNOW: make -s @PTEST_DIR@/@PTEST_NAME@.cmxs -OPT: -main f -load-module @PTEST_DIR@/@PTEST_NAME@.cmxs -check -print +OPT: -main f -load-module @PTEST_DIR@/@PTEST_NAME@.cmxs -print */ static int f(void); diff --git a/tests/misc/log-file.i b/tests/misc/log-file.i index eaf0df19ed165f6f6ef2ddc40eab5ed55ccb6424..850411d8491d7c268311bd6384c9cdb80a6af5a4 100644 --- a/tests/misc/log-file.i +++ b/tests/misc/log-file.i @@ -4,7 +4,7 @@ LOG: log-file-feedback.txt LOG: log-file-value-all.txt LOG: log-file-value-default.txt - OPT: -kernel-log w:@PTEST_RESULT@/log-file-kernel-warnings.txt,r:@PTEST_RESULT@/log-file-kernel-results.txt -value-log f:@PTEST_RESULT@/log-file-feedback.txt,afewr:@PTEST_RESULT@/log-file-value-all.txt -value-log :@PTEST_RESULT@/log-file-value-default.txt -then -kernel-log f:@PTEST_RESULT@/log-file-feedback.txt -val + STDOPT: #"-kernel-log w:@PTEST_RESULT@/log-file-kernel-warnings.txt,r:@PTEST_RESULT@/log-file-kernel-results.txt -value-log f:@PTEST_RESULT@/log-file-feedback.txt,afewr:@PTEST_RESULT@/log-file-value-all.txt -value-log :@PTEST_RESULT@/log-file-value-default.txt -then -kernel-log f:@PTEST_RESULT@/log-file-feedback.txt" */ volatile int a = 42; // generates value warning diff --git a/tests/misc/my_visitor.c b/tests/misc/my_visitor.c index 2df4e85f08e98c222756d8563e734bb1956cdd78..921a82c24c416653c44b705dedb7d86cb431dd12 100644 --- a/tests/misc/my_visitor.c +++ b/tests/misc/my_visitor.c @@ -1,7 +1,7 @@ /* run.config -EXECNOW: make -s tests/misc/my_visitor_plugin/my_visitor.cmxs -EXECNOW: LOG my_visitor_sav.res LOG my_visitor_sav.err BIN my_visitor.sav FRAMAC_PLUGIN=./lib/plugins @frama-c@ @PTEST_FILE@ -load-module @PTEST_DIR@/my_visitor_plugin/my_visitor -main f -save @PTEST_DIR@/my_visitor.sav > @PTEST_DIR@/result/my_visitor_sav.res 2> @PTEST_DIR@/result/my_visitor_sav.err -OPT: -load @PTEST_DIR@/my_visitor.sav -print +EXECNOW: make -s @PTEST_DIR@/@PTEST_NAME@.cmxs +EXECNOW: LOG my_visitor_sav.res LOG my_visitor_sav.err BIN my_visitor.sav FRAMAC_PLUGIN=./lib/plugins @frama-c@ @PTEST_FILE@ -load-module @PTEST_DIR@/@PTEST_NAME@ -main f -save @PTEST_DIR@/@PTEST_NAME@.sav > @PTEST_DIR@/result/@PTEST_NAME@_sav.res 2> @PTEST_DIR@/result/@PTEST_NAME@_sav.err +OPT: -load @PTEST_DIR@/@PTEST_NAME@.sav -print */ int f() { int y = 0; diff --git a/tests/misc/my_visitor_plugin/my_visitor.ml b/tests/misc/my_visitor.ml similarity index 100% rename from tests/misc/my_visitor_plugin/my_visitor.ml rename to tests/misc/my_visitor.ml diff --git a/tests/misc/oracle/char_ampamp.res.oracle b/tests/misc/oracle/char_ampamp.res.oracle index 886f421094cf6e7958747cf0a2773b01f39800da..333945dd622ad7488cc7307ab301ddc6bb126241 100644 --- a/tests/misc/oracle/char_ampamp.res.oracle +++ b/tests/misc/oracle/char_ampamp.res.oracle @@ -1,2 +1,41 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) [kernel] Parsing tests/misc/char_ampamp.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + c ∈ {1} + y ∈ {0} +[value] computing for function g <- main. + Called from tests/misc/char_ampamp.c:12. +[value] Called Frama_C_show_each_x({1}) +[value] Recording results for g +[value] Done for function g +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function g: + +[value:final-states] Values at end of function main: + y ∈ {1} + __retres ∈ {0} +[from] Computing for function g +[from] Done for function g +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function g: + NO EFFECTS +[from] Function main: + y FROM c + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function g: + \nothing +[inout] Inputs for function g: + \nothing +[inout] Out (internal) for function main: + y; __retres +[inout] Inputs for function main: + c diff --git a/tests/misc/oracle/exception.0.res.oracle b/tests/misc/oracle/exception.0.res.oracle index 5f8c5c25ac1d5d352c61c44a2ec3a06756e8424a..37519976e660a35aba1dc9c4df0905e356706a2b 100644 --- a/tests/misc/oracle/exception.0.res.oracle +++ b/tests/misc/oracle/exception.0.res.oracle @@ -10,6 +10,36 @@ struct my_exn2 { struct my_exn foo; struct my_exn2 bar; int x = 42; +int f(int c) +{ + int __retres; + if (c) + throw (x); + else { + __retres = c; + goto return_label; + } + return_label: return __retres; +} + +int g(int c) +{ + int __retres; + try + int tmp; + tmp = f(c); + __retres = tmp; + goto return_label; + catch ( int x_0 ) { + __retres = 3; + goto return_label; + } catch ( ... ) { + __retres = 4; + goto return_label; + } + return_label: return __retres; +} + int f1(int c) { int __retres; @@ -76,10 +106,6 @@ int h(int c) { int __retres; try - struct my_exn2 exn2; - struct my_exn exn_aux; - int y; - struct my_exn exn; if (c - 1 <= 0) { int tmp; tmp = f1(c); diff --git a/tests/misc/oracle/exception.1.res.oracle b/tests/misc/oracle/exception.1.res.oracle index a1da343fd65acbabccc54556d747a25abce1ed34..2a912d1f0fdcae9da4740f4f45cf26a2111134a4 100644 --- a/tests/misc/oracle/exception.1.res.oracle +++ b/tests/misc/oracle/exception.1.res.oracle @@ -31,6 +31,49 @@ struct __fc_exn_struct __fc_exn = struct my_exn foo; struct my_exn2 bar; int x = 42; +int f(int c) +{ + int __retres; + if (c) { + __fc_exn.exn_uncaught = 1; + __fc_exn.exn_kind = __fc_exn_kind___fc_i; + __fc_exn.exn_obj.__fc_i = x; + __retres = 0; + goto return_label; + } + else { + __retres = c; + goto return_label; + } + return_label: return __retres; +} + +int g(int c) +{ + int __retres; + { + int tmp; + tmp = f(c); + if (__fc_exn.exn_uncaught == 1) + switch (__fc_exn.exn_kind) case __fc_exn_kind___fc_i: goto __fc_i; + __retres = tmp; + goto return_label; + if (0) { + int x_0; + __fc_i: __fc_exn.exn_uncaught = 0; + x_0 = __fc_exn.exn_obj.__fc_i; + __retres = 3; + goto return_label; + } + if (0) { + catch_all: __fc_exn.exn_uncaught = 0; + __retres = 4; + goto return_label; + } + } + return_label: return __retres; +} + int f1(int c) { int __retres; @@ -112,83 +155,76 @@ int f4(int c) int h(int c) { int __retres; - { - struct my_exn2 exn2; - struct my_exn exn_aux; - int y; - struct my_exn exn; - if (c - 1 <= 0) { - int tmp; - tmp = f1(c); - if (__fc_exn.exn_uncaught == 1) - switch (__fc_exn.exn_kind) case __fc_exn_kind___fc_Smy_exn: - goto __fc_Smy_exn_1; - __retres = tmp; - goto return_label; + if (c - 1 <= 0) { + int tmp; + tmp = f1(c); + if (__fc_exn.exn_uncaught == 1) + switch (__fc_exn.exn_kind) case __fc_exn_kind___fc_Smy_exn: + goto __fc_Smy_exn_1; + __retres = tmp; + goto return_label; + } + else + if (c - 100 <= 0) { + int tmp_0; + /*@ returns __fc_exn.exn_uncaught ≡ 0 ⇒ \result ≡ c+1; */ + { + tmp_0 = f2(c); + if (__fc_exn.exn_uncaught == 1) + switch (__fc_exn.exn_kind) case __fc_exn_kind___fc_i: goto __fc_i; + __retres = tmp_0; + /*@ assert __retres ≡ c+1; */ ; + goto return_label; + } } else - if (c - 100 <= 0) { - int tmp_0; - /*@ returns __fc_exn.exn_uncaught ≡ 0 ⇒ \result ≡ c+1; */ - { - tmp_0 = f2(c); - if (__fc_exn.exn_uncaught == 1) - switch (__fc_exn.exn_kind) case __fc_exn_kind___fc_i: - goto __fc_i; - __retres = tmp_0; - /*@ assert __retres ≡ c+1; */ ; - goto return_label; - } + if (c > 360) { + int tmp_1; + tmp_1 = f3(c); + if (__fc_exn.exn_uncaught == 1) + switch (__fc_exn.exn_kind) default: goto catch_all; + __retres = tmp_1; + goto return_label; } - else - if (c > 360) { - int tmp_1; - tmp_1 = f3(c); - if (__fc_exn.exn_uncaught == 1) - switch (__fc_exn.exn_kind) default: goto catch_all; - __retres = tmp_1; - goto return_label; - } - else { - int tmp_2; - tmp_2 = f4(c); - if (__fc_exn.exn_uncaught == 1) - switch (__fc_exn.exn_kind) case __fc_exn_kind___fc_Smy_exn2: - goto __fc_Smy_exn2_2; - __retres = tmp_2; - goto return_label; - } - if (0) { - struct my_exn exn; - if (0) { - struct my_exn2 exn2; - __fc_Smy_exn2_2: exn2 = __fc_exn.exn_obj.__fc_Smy_exn2; - exn.e = exn2.c; - goto __fc_Smy_exn; + else { + int tmp_2; + tmp_2 = f4(c); + if (__fc_exn.exn_uncaught == 1) + switch (__fc_exn.exn_kind) case __fc_exn_kind___fc_Smy_exn2: + goto __fc_Smy_exn2_2; + __retres = tmp_2; + goto return_label; } - if (0) { - struct my_exn exn_aux; - __fc_Smy_exn_1: exn_aux = __fc_exn.exn_obj.__fc_Smy_exn; - exn = exn_aux; - goto __fc_Smy_exn; - } - __fc_Smy_exn: __fc_exn.exn_uncaught = 0; - __retres = exn.e; - goto return_label; - } + if (0) { + struct my_exn exn; if (0) { - int y; - __fc_i: __fc_exn.exn_uncaught = 0; - y = __fc_exn.exn_obj.__fc_i; - __retres = y; - goto return_label; + struct my_exn2 exn2; + __fc_Smy_exn2_2: exn2 = __fc_exn.exn_obj.__fc_Smy_exn2; + exn.e = exn2.c; + goto __fc_Smy_exn; } if (0) { - catch_all: __fc_exn.exn_uncaught = 0; - __fc_exn.exn_uncaught = 1; - __retres = 0; - goto return_label; + struct my_exn exn_aux; + __fc_Smy_exn_1: exn_aux = __fc_exn.exn_obj.__fc_Smy_exn; + exn = exn_aux; + goto __fc_Smy_exn; } + __fc_Smy_exn: __fc_exn.exn_uncaught = 0; + __retres = exn.e; + goto return_label; + } + if (0) { + int y; + __fc_i: __fc_exn.exn_uncaught = 0; + y = __fc_exn.exn_obj.__fc_i; + __retres = y; + goto return_label; + } + if (0) { + catch_all: __fc_exn.exn_uncaught = 0; + __fc_exn.exn_uncaught = 1; + __retres = 0; + goto return_label; } return_label: return __retres; } diff --git a/tests/misc/oracle/log-file.res.oracle b/tests/misc/oracle/log-file.res.oracle index d359f791027a2d969540cce0614ffaa58a9a1b37..679a60d3dcca3c1442db585eea9ca8c940b2c619 100644 --- a/tests/misc/oracle/log-file.res.oracle +++ b/tests/misc/oracle/log-file.res.oracle @@ -18,3 +18,18 @@ tests/misc/log-file.i:16:[value] entering loop for the first time [value:final-states] Values at end of function main: i ∈ {1} __retres ∈ {0} +[from] Computing for function main +[from] Computing for function f <-main +[from] Done for function f +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + \result FROM \nothing +[from] Function main: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + i; __retres +[inout] Inputs for function main: + \nothing diff --git a/tests/misc/visitor_creates_func_bts_1349.i b/tests/misc/visitor_creates_func_bts_1349.i index 5f4a684cc06a7fce44b9680b2fd534d4d779d5d2..3fc9e30144b24c39aacd54b9183f1f5617cb66e7 100644 --- a/tests/misc/visitor_creates_func_bts_1349.i +++ b/tests/misc/visitor_creates_func_bts_1349.i @@ -1,5 +1,5 @@ /* run.config - OPT: -check -load-script tests/misc/Visitor_creates_func_bts_1349.ml -then-on test -print + OPT: -load-script tests/misc/Visitor_creates_func_bts_1349.ml -then-on test -print */ int a = 10; diff --git a/tests/non-free/Longinit_sequencer.i b/tests/non-free/Longinit_sequencer.i index 2cc2bddf215ef2c42e3dbcbebd7a629aa4ffadca..67c8cd916a2d2206dcc426870d05e17fd8ac38ba 100644 --- a/tests/non-free/Longinit_sequencer.i +++ b/tests/non-free/Longinit_sequencer.i @@ -1,4 +1,4 @@ /* run.config* EXECNOW: make tests/non-free/Longinit_sequencer.cmxs -OPT: -load-module tests/non-free/Longinit_sequencer.cmxs +OPT: -load-module tests/non-free/Longinit_sequencer.cmxs -res-file @PTEST_RESULT@ */ diff --git a/tests/non-free/Longinit_sequencer.ml b/tests/non-free/Longinit_sequencer.ml index 5362f9a4f7f975acdf173de7381d4226a711a549..49ff4661382df03ed870b7e784ca7318be3a01ed 100644 --- a/tests/non-free/Longinit_sequencer.ml +++ b/tests/non-free/Longinit_sequencer.ml @@ -10,18 +10,27 @@ include Plugin.Register let help = "utility script for tests" end) -let tmpfile = "tests/non-free/result/Longinit_sequencer.sav" +module Res = String(struct + let option_name = "-res-file" + let help = "" + let arg_name = "file" + let default = "result" + end) let ok = ref false +let tmpfile () = Res.get () ^ "/Longinit_sequencer.sav" + let () = at_exit (fun () -> + let tmpfile = tmpfile () in if Debug.get () >= 1 || not !ok then result "Keeping temp file %s" tmpfile else try Sys.remove tmpfile with Sys_error _ -> ()) let main () = + let tmpfile = tmpfile () in let fmt = Format.std_formatter in let display_results state = Format.fprintf fmt "@[%a@]@\n" !Db.Value.display state in Dynamic.Parameter.String.set "" "tests/non-free/long_init.c"; diff --git a/tests/non-free/big_local_array.i b/tests/non-free/big_local_array.i index 1fce37ef7c6968d9db2b0bba3fa788019db76b56..c3385491aeaa42db4b796487b2c628f5535789f9 100644 --- a/tests/non-free/big_local_array.i +++ b/tests/non-free/big_local_array.i @@ -1,7 +1,7 @@ /* run.config* -OPT: -print -journal-disable -check -val -report +OPT: -print -journal-disable -val -report OPT: -load-script tests/non-free/big_local_array_script.ml -then-on prj -print -report -OPT: -print -journal-disable -check -no-initialized-padding-locals -val +OPT: -print -journal-disable -no-initialized-padding-locals -val */ struct S { diff --git a/tests/non-free/oracle/Longinit_sequencer.res.oracle b/tests/non-free/oracle/Longinit_sequencer.res.oracle index 4cb50421baaa8294501046d5e46d0a5023770935..cb116cdf460c4a4b964c1b5da73a4ab106fefe4a 100644 --- a/tests/non-free/oracle/Longinit_sequencer.res.oracle +++ b/tests/non-free/oracle/Longinit_sequencer.res.oracle @@ -371,9 +371,9 @@ tests/non-free/long_init2.c:34:[value] Assigning imprecise value to garbled_mix. [value] Skipping call to init_inner, loading globals state from file: tests/non-free/result/Longinit_sequencer.sav [value] warning: importing garbled mix, locations may have changed -[value] warning: variable `r (id 594)' is not global, possibly an escaping value; ignoring -[value] warning: variable `r2 (id 597)' is not global, possibly an escaping value; ignoring -[value] warning: variable `r2 (id 597)' is not global, possibly an escaping value; ignoring +[value] warning: variable `r (id 602)' is not global, possibly an escaping value; ignoring +[value] warning: variable `r2 (id 605)' is not global, possibly an escaping value; ignoring +[value] warning: variable `r2 (id 605)' is not global, possibly an escaping value; ignoring [value] warning: found new global variable `another_global' [value] Recording results for init_outer [value] Done for function init_outer diff --git a/tests/non-free/oracle/alloc.0.res.oracle b/tests/non-free/oracle/alloc.0.res.oracle index 3462232225f0ae282d98a0369ce7cad87aa8e856..6bbe7a5e4762c5fd665dca353134d62460540083 100644 --- a/tests/non-free/oracle/alloc.0.res.oracle +++ b/tests/non-free/oracle/alloc.0.res.oracle @@ -20,8 +20,8 @@ [value] computing for function malloc <- main. Called from tests/non-free/alloc.c:16. share/libc/stdlib.c:39:[value] allocating variable __malloc_malloc_l39 -share/libc/stdlib.h:164:[value] warning: function malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.) -share/libc/stdlib.h:169:[value] warning: function malloc, behavior no_allocation: postcondition got status invalid. (Behavior may be inactive, no reduction performed.) +share/libc/stdlib.h:177:[value] warning: function malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.) +share/libc/stdlib.h:182:[value] warning: function malloc, behavior no_allocation: postcondition got status invalid. (Behavior may be inactive, no reduction performed.) [value] Recording results for malloc [value] Done for function malloc [value] computing for function malloc <- main. diff --git a/tests/non-free/oracle/alloc.1.res.oracle b/tests/non-free/oracle/alloc.1.res.oracle index 225071d1e36343a306615a982abf3901cd41863c..d4e9c812cea8d5ace6f2548c3a280642d4eaf09f 100644 --- a/tests/non-free/oracle/alloc.1.res.oracle +++ b/tests/non-free/oracle/alloc.1.res.oracle @@ -21,8 +21,8 @@ [value] computing for function malloc <- main_abs. Called from tests/non-free/alloc.c:50. share/libc/stdlib.c:39:[value] allocating variable __malloc_malloc_l39 -share/libc/stdlib.h:164:[value] warning: function malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.) -share/libc/stdlib.h:169:[value] warning: function malloc, behavior no_allocation: postcondition got status invalid. (Behavior may be inactive, no reduction performed.) +share/libc/stdlib.h:177:[value] warning: function malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.) +share/libc/stdlib.h:182:[value] warning: function malloc, behavior no_allocation: postcondition got status invalid. (Behavior may be inactive, no reduction performed.) [value] Recording results for malloc [value] Done for function malloc tests/non-free/alloc.c:51:[value] warning: signed overflow. assert -2147483648 ≤ -((int)q); diff --git a/tests/non-free/oracle/allocated.0.res.oracle b/tests/non-free/oracle/allocated.0.res.oracle index 3b9554b452da8b33c99bc7241bbb839fd839bdc6..b48e805626568c78ee2a2fcc8dc7c47593abd968 100644 --- a/tests/non-free/oracle/allocated.0.res.oracle +++ b/tests/non-free/oracle/allocated.0.res.oracle @@ -143,7 +143,7 @@ tests/non-free/allocated.c:123:[value] assertion 'Value,mem_access' got final st \result FROM \nothing [from] ====== END OF DEPENDENCIES ====== [inout] Out (internal) for function main: - __fc_heap_status; i; j; p; tmp; tmp_0; k; tmp_1; size; pb; __retres; + __fc_heap_status; i; j; p; tmp; tmp_3; k; tmp_4; size; pb; __retres; __malloc_main_l25; __malloc_main_l36[0..1]; __malloc_main_l50[0..2]; __malloc_main_l63; __malloc_main_l73; __malloc_w_main_l82[0..2]; __malloc_main_l97[0]; __malloc_main_l114[0..3] diff --git a/tests/non-free/oracle/allocated.1.res.oracle b/tests/non-free/oracle/allocated.1.res.oracle index 8aafe4e383b3b9989d647ec53562186e60091745..53cbaa8819d43a693f717f51eb496decb0b3d485 100644 --- a/tests/non-free/oracle/allocated.1.res.oracle +++ b/tests/non-free/oracle/allocated.1.res.oracle @@ -510,7 +510,7 @@ tests/non-free/allocated.c:123:[value] assertion 'Value,mem_access' got final st \result FROM \nothing [from] ====== END OF DEPENDENCIES ====== [inout] Out (internal) for function main: - __fc_heap_status; i; j; p; tmp; tmp_0; k; tmp_1; size; pb; __retres; + __fc_heap_status; i; j; p; tmp; tmp_3; k; tmp_4; size; pb; __retres; __malloc_main_l25; __malloc_main_l36[0..1]; __malloc_main_l50[0..1]; __malloc_main_l50_0[0..2]; __malloc_main_l63; __malloc_main_l63_0; __malloc_main_l63_1; __malloc_main_l63_2; __malloc_main_l73; diff --git a/tests/non-free/oracle/allocated.res.oracle b/tests/non-free/oracle/allocated.res.oracle deleted file mode 100644 index 6a803c9e23c87137c53773a9c14e31edce42e535..0000000000000000000000000000000000000000 --- a/tests/non-free/oracle/allocated.res.oracle +++ /dev/null @@ -1,114 +0,0 @@ -[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/non-free/allocated.c (with preprocessing) -[value] Analyzing a complete application starting at main -[value] Computing initial state -[value] Initial state computed -[value] Values of globals at initialization - __fc_random_counter ∈ {0} - __fc_rand_max ∈ {32767} - __fc_heap_status ∈ [--..--] - nondet ∈ [--..--] -tests/non-free/allocated.c:25:[value] Allocating variable __malloc_main_l25 of type int [1073741824] -tests/non-free/allocated.c:27:[kernel] warning: out of bounds read. assert \valid_read(p+1); -tests/non-free/allocated.c:28:[kernel] warning: out of bounds read. assert \valid_read(p+2); -[value] Called Frama_C_show_each_p({{ &__malloc_main_l25 }}) -[value] Called Frama_C_show_each_p0({17}) -[value] Called Frama_C_show_each_p_after_free({{ }}) -tests/non-free/allocated.c:36:[value] Allocating variable __malloc_main_l36 of type int [1073741824] -[value] Called Frama_C_show_each_p({{ &__malloc_main_l36 }}) -[value] Called Frama_C_show_each_p0({13}) -[value] Called Frama_C_show_each_p1({54}) -tests/non-free/allocated.c:44:[kernel] warning: accessing left-value that contains escaping addresses: - assert ¬\dangling(&p); -tests/non-free/allocated.c:49:[value] Allocating variable __malloc_main_l49 of type int [1073741824] -tests/non-free/allocated.c:52:[kernel] warning: out of bounds write. assert \valid(p+2); -[value] Called Frama_C_show_each_p({{ &__malloc_main_l49 }}) -[value] Called Frama_C_show_each_p0({13}) -[value] Called Frama_C_show_each_p1({42}) -[value] Called Frama_C_show_each_p2({77}) -tests/non-free/allocated.c:62:[value] Allocating variable __malloc_main_l62 of type int [1073741824] -[value] Called Frama_C_show_each_p({{ &__malloc_main_l62 }}) -[value] Called Frama_C_show_each_p0({0}) -[value] Called Frama_C_show_each_p({{ &__malloc_main_l62 }}) -[value] Called Frama_C_show_each_p0({1}) -[value] Called Frama_C_show_each_p({{ &__malloc_main_l62 }}) -[value] Called Frama_C_show_each_p0({2}) -[value] Called Frama_C_show_each_p({{ &__malloc_main_l62 }}) -[value] Called Frama_C_show_each_p0({3}) -[value] Called Frama_C_show_each_p({{ &__malloc_main_l62 }}) -[value] Called Frama_C_show_each_p0({4}) -tests/non-free/allocated.c:72:[value] Allocating variable __malloc_main_l72 of type int [1073741824] -[value] Called Frama_C_show_each_p({{ &__malloc_main_l72 }}) -[value] Called Frama_C_show_each_p0({0}) -tests/non-free/allocated.c:71:[value] entering loop for the first time -[value] Called Frama_C_show_each_p({{ &__malloc_main_l72 }}) -[value] Called Frama_C_show_each_p0({1}) -[value] Called Frama_C_show_each_p({{ &__malloc_main_l72 }}) -[value] Called Frama_C_show_each_p0({1; 2}) -[value] Called Frama_C_show_each_p({{ &__malloc_main_l72 }}) -[value] Called Frama_C_show_each_p0({1; 2; 3}) -[value] Called Frama_C_show_each_p({{ &__malloc_main_l72 }}) -[value] Called Frama_C_show_each_p0({1; 2; 3; 4}) -tests/non-free/allocated.c:81:[value] Allocating variable __malloc_main_l81 of type int [1073741824] -tests/non-free/allocated.c:80:[value] entering loop for the first time -tests/non-free/allocated.c:81:[value] Re-allocating variable __malloc_main_l81 (new max_alloc: 31) -tests/non-free/allocated.c:82:[value] entering loop for the first time -[value] Called Frama_C_show_each_pj({7}) -tests/non-free/allocated.c:81:[value] Re-allocating variable __malloc_main_l81 (new max_alloc: 63) -[value] Called Frama_C_show_each_pj({7; 10; 14; 17}) -[value] Called Frama_C_show_each_pj({7; 10; 14; 17}) -tests/non-free/allocated.c:81:[value] Re-allocating variable __malloc_main_l81 (new max_alloc: 95) -[value] Called Frama_C_show_each_pj([7..27]) -tests/non-free/allocated.c:81:[value] Re-allocating variable __malloc_main_l81 (new max_alloc: 127) -[value] Called Frama_C_show_each_pj([7..37]) -[value] Called Frama_C_show_each_pj([7..127]) -[value] Recording results for main -[value] done for function main -tests/non-free/allocated.c:27:[value] Assertion 'Value,mem_access' got final status invalid. -tests/non-free/allocated.c:28:[value] Assertion 'Value,mem_access' got final status invalid. -[value] ====== VALUES COMPUTED ====== -[value] Values at end of function main: - __fc_heap_status ∈ [--..--] - i ∈ {5} - j ∈ {0; 1; 2; 3; 4} - p ∈ {{ &__malloc_main_l81[0] }} or ESCAPINGADDR - k ∈ {8; 12} - __retres ∈ {0} - __malloc_main_l25[0..1073741823] ∈ UNINITIALIZED - __malloc_main_l36[0..1073741823] ∈ UNINITIALIZED - __malloc_main_l49[0..1073741823] ∈ UNINITIALIZED - __malloc_main_l62[0..1073741823] ∈ UNINITIALIZED - __malloc_main_l72[0..1073741823] ∈ UNINITIALIZED - __malloc_main_l81[0..1] ∈ [7..127] or UNINITIALIZED - [2..3] ∈ [7..37] or UNINITIALIZED -[from] Computing for function main -[from] Computing for function malloc <-main -[from] Done for function malloc -[from] Computing for function free <-main -[from] Done for function free -[from] Done for function main -[from] ====== DEPENDENCIES COMPUTED ====== - These dependencies hold at termination for the executions that terminate: -[from] Function free: - __fc_heap_status FROM __fc_heap_status (and SELF) -[from] Function malloc: - __fc_heap_status FROM __fc_heap_status; size (and SELF) - \result FROM __fc_heap_status; size -[from] Function main: - __fc_heap_status FROM __fc_heap_status; nondet (and SELF) - __malloc_main_l25[0] FROM __fc_heap_status - __malloc_main_l36[0..1] FROM __fc_heap_status; nondet - __malloc_main_l49[0..2] FROM __fc_heap_status; nondet - __malloc_main_l62[0] FROM __fc_heap_status; nondet (and SELF) - __malloc_main_l72[0] FROM __fc_heap_status; nondet (and SELF) - __malloc_main_l81[0..3] FROM __fc_heap_status; nondet (and SELF) - \result FROM \nothing -[from] ====== END OF DEPENDENCIES ====== -[inout] Out (internal) for function main: - __fc_heap_status; i; j; p; k; tmp; __retres; __malloc_main_l25[0]; - __malloc_main_l36[0..1]; __malloc_main_l49[0..2]; __malloc_main_l62[0]; - __malloc_main_l72[0]; __malloc_main_l81[0..3] -[inout] Inputs for function main: - __fc_heap_status; nondet; __malloc_main_l25[0]; __malloc_main_l36[0..1]; - __malloc_main_l49[0..2]; __malloc_main_l62[0]; __malloc_main_l72[0]; - __malloc_main_l81[0..3] diff --git a/tests/non-free/oracle/from_result.res.oracle b/tests/non-free/oracle/from_result.res.oracle index a7d3a58c3a588c08ee08c60fc846e6d16d6d78f9..36a5531a9c1a3ca8b875d25eb3e169cd391a8d74 100644 --- a/tests/non-free/oracle/from_result.res.oracle +++ b/tests/non-free/oracle/from_result.res.oracle @@ -13,8 +13,8 @@ [value] computing for function malloc <- bar <- main. Called from tests/non-free/from_result.c:18. share/libc/stdlib.c:39:[value] allocating variable __malloc_malloc_l39 -share/libc/stdlib.h:164:[value] warning: function malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.) -share/libc/stdlib.h:169:[value] warning: function malloc, behavior no_allocation: postcondition got status invalid. (Behavior may be inactive, no reduction performed.) +share/libc/stdlib.h:177:[value] warning: function malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.) +share/libc/stdlib.h:182:[value] warning: function malloc, behavior no_allocation: postcondition got status invalid. (Behavior may be inactive, no reduction performed.) [value] Recording results for malloc [value] Done for function malloc [value] Recording results for bar diff --git a/tests/non-free/oracle/malloc-size-zero.res.oracle b/tests/non-free/oracle/malloc-size-zero.res.oracle deleted file mode 100644 index 098889674d42ad41dddfc6d10305c0cfdbfaf45a..0000000000000000000000000000000000000000 --- a/tests/non-free/oracle/malloc-size-zero.res.oracle +++ /dev/null @@ -1,127 +0,0 @@ -[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/non-free/malloc-size-zero.i (no preprocessing) -[value] user error: no assigns specified for function 'malloc1', for which a builtin - or the specification will be used. Potential unsoundness. -[value] user error: no assigns specified for function 'malloc2', for which a builtin - or the specification will be used. Potential unsoundness. -[value] user error: no assigns specified for function 'free', for which a builtin - or the specification will be used. Potential unsoundness. -[value] Analyzing a complete application starting at main -[value] Computing initial state -[value] Initial state computed -[value] Values of globals at initialization - foo ∈ [--..--] -[value] computing for function calloc1 <- main. - Called from tests/non-free/malloc-size-zero.i:20. -[value] Recording results for calloc1 -[value] Done for function calloc1 -[value] computing for function calloc2 <- main. - Called from tests/non-free/malloc-size-zero.i:21. -tests/non-free/malloc-size-zero.i:14:[value] Allocating variable __malloc_calloc2_l14 of type char [0] -[value] Recording results for calloc2 -[value] Done for function calloc2 -[value] Called Frama_C_show_each_not_NULL_p1() -[value] Called Frama_C_show_each_not_NULL_p2() -tests/non-free/malloc-size-zero.i:34:[kernel] warning: pointer comparison. assert \pointer_comparable((void *)(p1+1), (void *)0); -tests/non-free/malloc-size-zero.i:35:[kernel] warning: pointer comparison. assert \pointer_comparable((void *)(p2+1), (void *)0); -tests/non-free/malloc-size-zero.i:38:[value] entering loop for the first time -[value] computing for function calloc1 <- main. - Called from tests/non-free/malloc-size-zero.i:40. -[value] Recording results for calloc1 -[value] Done for function calloc1 -[value] computing for function calloc2 <- main. - Called from tests/non-free/malloc-size-zero.i:41. -tests/non-free/malloc-size-zero.i:14:[value] Allocating variable __malloc_calloc2_l14_0 of type char [0] -[value] Recording results for calloc2 -[value] Done for function calloc2 -[value] computing for function calloc1 <- main. - Called from tests/non-free/malloc-size-zero.i:40. -[value] Recording results for calloc1 -[value] Done for function calloc1 -[value] computing for function calloc2 <- main. - Called from tests/non-free/malloc-size-zero.i:41. -[value] Recording results for calloc2 -[value] Done for function calloc2 -[value] computing for function calloc1 <- main. - Called from tests/non-free/malloc-size-zero.i:40. -[value] Recording results for calloc1 -[value] Done for function calloc1 -[value] computing for function calloc2 <- main. - Called from tests/non-free/malloc-size-zero.i:41. -[value] Recording results for calloc2 -[value] Done for function calloc2 -[value] computing for function calloc1 <- main. - Called from tests/non-free/malloc-size-zero.i:40. -[value] Recording results for calloc1 -[value] Done for function calloc1 -[value] computing for function calloc2 <- main. - Called from tests/non-free/malloc-size-zero.i:41. -[value] Recording results for calloc2 -[value] Done for function calloc2 -[value] computing for function calloc1 <- main. - Called from tests/non-free/malloc-size-zero.i:40. -[value] Recording results for calloc1 -[value] Done for function calloc1 -[value] computing for function calloc2 <- main. - Called from tests/non-free/malloc-size-zero.i:41. -[value] Recording results for calloc2 -[value] Done for function calloc2 -[value] computing for function calloc1 <- main. - Called from tests/non-free/malloc-size-zero.i:40. -[value] Recording results for calloc1 -[value] Done for function calloc1 -[value] DUMPING STATE of file tests/non-free/malloc-size-zero.i line 44 - foo ∈ [--..--] - p1 ∈ {{ &__malloc_calloc1_l10[0] }} - p2 ∈ {{ &__malloc_calloc2_l14[0] }} - q1 ∈ - {{ &__malloc_calloc1_l10_0[0] ; &__malloc_calloc1_l10_1[0] ; - &__malloc_calloc1_l10_2[0] ; &__malloc_calloc1_l10_3 + [0..--],0%8 }} or UNINITIALIZED - q2 ∈ {{ &__malloc_calloc2_l14_0[0] }} or UNINITIALIZED - __retres ∈ UNINITIALIZED - __malloc_calloc1_l10_3[0..4294967294] ∈ UNINITIALIZED - =END OF DUMP== -tests/non-free/malloc-size-zero.i:46:[kernel] warning: out of bounds write. assert \valid(p1); -tests/non-free/malloc-size-zero.i:46:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. -tests/non-free/malloc-size-zero.i:49:[kernel] warning: out of bounds write. assert \valid(p2); -tests/non-free/malloc-size-zero.i:49:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. -[value] Called Frama_C_show_each({{ &__malloc_calloc1_l10_0 ; - &__malloc_calloc1_l10_1 ; - &__malloc_calloc1_l10_2 ; - &__malloc_calloc1_l10_3 + [0..--],0%8 }}) -[value] Called Frama_C_show_each({{ &__malloc_calloc2_l14_0 }}) -tests/non-free/malloc-size-zero.i:55:[value] Assertion got status unknown. -tests/non-free/malloc-size-zero.i:57:[kernel] warning: accessing uninitialized left-value. assert \initialized(&q1); -tests/non-free/malloc-size-zero.i:57:[kernel] warning: out of bounds write. assert \valid(q1); -tests/non-free/malloc-size-zero.i:57:[kernel] more than 200(536870912) locations to update in array. Approximating. -tests/non-free/malloc-size-zero.i:57:[kernel] more than 200(536870912) elements to enumerate. Approximating. -tests/non-free/malloc-size-zero.i:59:[kernel] warning: accessing uninitialized left-value. assert \initialized(&q1); -tests/non-free/malloc-size-zero.i:59:[value] warning: Wrong free: assert(pass a freeable address) -tests/non-free/malloc-size-zero.i:60:[value] Assertion got status valid. -tests/non-free/malloc-size-zero.i:62:[kernel] warning: accessing uninitialized left-value. assert \initialized(&q2); -tests/non-free/malloc-size-zero.i:62:[kernel] warning: out of bounds write. assert \valid(q2); -tests/non-free/malloc-size-zero.i:62:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. -tests/non-free/malloc-size-zero.i:64:[kernel] warning: accessing uninitialized left-value. assert \initialized(&q2); -[value] Recording results for main -[value] done for function main -tests/non-free/malloc-size-zero.i:46:[value] Assertion 'Value,mem_access' got final status invalid. -tests/non-free/malloc-size-zero.i:49:[value] Assertion 'Value,mem_access' got final status invalid. -tests/non-free/malloc-size-zero.i:62:[value] Assertion 'Value,mem_access' got final status invalid. -[value] ====== VALUES COMPUTED ====== -tests/non-free/malloc-size-zero.i:10:[kernel] warning: Neither code nor specification for function malloc1, generating default assigns from the prototype -[value] Values at end of function calloc1: - -tests/non-free/malloc-size-zero.i:14:[kernel] warning: Neither code nor specification for function malloc2, generating default assigns from the prototype -[value] Values at end of function calloc2: - -tests/non-free/malloc-size-zero.i:51:[kernel] warning: Neither code nor specification for function free, generating default assigns from the prototype -[value] Values at end of function main: - p1 ∈ ESCAPINGADDR - p2 ∈ ESCAPINGADDR - q1 ∈ - {{ &__malloc_calloc1_l10_0[0] ; &__malloc_calloc1_l10_1[0] ; - &__malloc_calloc1_l10_2[0] ; &__malloc_calloc1_l10_3 + [0..--],0%8 }} or ESCAPINGADDR - q2 ∈ ESCAPINGADDR - __retres ∈ {0} - __malloc_calloc1_l10_3[0..4294967288] ∈ {1} or UNINITIALIZED - [4294967289..4294967294] ∈ UNINITIALIZED diff --git a/tests/non-free/oracle/malloc_individual.res.oracle b/tests/non-free/oracle/malloc_individual.res.oracle index b0d76ac1835da194e921db00a562e74b5c7d7665..b37ac463bb47a462e6f2bb1fb252b05798dd53f5 100644 --- a/tests/non-free/oracle/malloc_individual.res.oracle +++ b/tests/non-free/oracle/malloc_individual.res.oracle @@ -15,8 +15,8 @@ [value] computing for function malloc <- main. Called from tests/non-free/malloc_individual.c:9. share/libc/stdlib.c:39:[value] allocating variable __malloc_malloc_l39 -share/libc/stdlib.h:164:[value] warning: function malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.) -share/libc/stdlib.h:169:[value] warning: function malloc, behavior no_allocation: postcondition got status invalid. (Behavior may be inactive, no reduction performed.) +share/libc/stdlib.h:177:[value] warning: function malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.) +share/libc/stdlib.h:182:[value] warning: function malloc, behavior no_allocation: postcondition got status invalid. (Behavior may be inactive, no reduction performed.) [value] Recording results for malloc [value] Done for function malloc tests/non-free/malloc_individual.c:13:[value] warning: accessing uninitialized left-value. assert \initialized(p); diff --git a/tests/non-free/oracle/memchr.res.oracle b/tests/non-free/oracle/memchr.res.oracle index a0ddf3687981b4b2434afc8c02f12a384ecf4f8e..427a520aa375040739ada2bec8f1bce28cf6a2f7 100644 --- a/tests/non-free/oracle/memchr.res.oracle +++ b/tests/non-free/oracle/memchr.res.oracle @@ -79,16 +79,14 @@ tests/non-free/memchr.c:112:[value] assertion got status valid. [value] computing for function my_memchr <- memchr_zero_termination <- main. Called from tests/non-free/memchr.c:113. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&non_terminated }},{0},{2})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: reading indeterminate data [value] Recording results for my_memchr [value] Done for function my_memchr [value] computing for function my_memchr <- memchr_zero_termination <- main. Called from tests/non-free/memchr.c:119. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&non_terminated2{[2], [3]} }}, {0},{4})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: reading indeterminate data [value] Recording results for my_memchr [value] Done for function my_memchr [value] Recording results for memchr_zero_termination @@ -99,8 +97,7 @@ tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-f Called from tests/non-free/memchr.c:127. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&empty_or_uninitialized }}, {0},{1})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possible uninitialized values +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values [value] Called Frama_C_show_each_mymemchr({0}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -108,15 +105,13 @@ tests/non-free/memchr.c:128:[value] assertion got status valid. [value] computing for function my_memchr <- memchr_initialization <- main. Called from tests/non-free/memchr.c:131. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&uninitialized }},{0},{1})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: reading indeterminate data [value] Recording results for my_memchr [value] Done for function my_memchr [value] computing for function my_memchr <- memchr_initialization <- main. Called from tests/non-free/memchr.c:136. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&s }},{0},{2})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possible uninitialized values +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values [value] Called Frama_C_show_each_mymemchr({1}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -124,8 +119,7 @@ tests/non-free/memchr.c:137:[value] assertion got status valid. [value] computing for function my_memchr <- memchr_initialization <- main. Called from tests/non-free/memchr.c:143. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&t }},{0},{4})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possible uninitialized values +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values [value] Called Frama_C_show_each_mymemchr({3}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -147,9 +141,8 @@ share/libc/__fc_builtin.h:50:[value] function Frama_C_interval: precondition got [value] computing for function my_memchr <- memchr_large <- main. Called from tests/non-free/memchr.c:196. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [3..30] }},{0},{100})) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -164,9 +157,8 @@ tests/non-free/memchr.c:198:[value] warning: assertion 'refined' got status unkn [value] computing for function my_memchr <- memchr_large <- main. Called from tests/non-free/memchr.c:201. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [5..17] }},{0},{100})) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -181,9 +173,8 @@ tests/non-free/memchr.c:203:[value] warning: assertion 'refined' got status unkn [value] computing for function my_memchr <- memchr_large <- main. Called from tests/non-free/memchr.c:206. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [60..74] }},{0},{100})) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -198,9 +189,8 @@ tests/non-free/memchr.c:208:[value] warning: assertion 'refined' got status unkn [value] computing for function my_memchr <- memchr_large <- main. Called from tests/non-free/memchr.c:211. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [63..80] }},{0},{100})) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -220,9 +210,8 @@ tests/non-free/memchr.c:184:[value] Call to builtin memset(({{ (void *)&a }},{0; [value] computing for function my_memchr <- memchr_large <- main. Called from tests/non-free/memchr.c:217. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [50..70] }},{0},{100})) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -251,9 +240,8 @@ tests/non-free/memchr.c:184:[value] Call to builtin memset(({{ (void *)&a[50] }} [value] computing for function my_memchr <- memchr_large_uninit <- main. Called from tests/non-free/memchr.c:232. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [3..30] }},{0},{100})) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -268,9 +256,8 @@ tests/non-free/memchr.c:234:[value] warning: assertion 'refined' got status unkn [value] computing for function my_memchr <- memchr_large_uninit <- main. Called from tests/non-free/memchr.c:238. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [63..80] }},{0},{100})) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -285,9 +272,8 @@ tests/non-free/memchr.c:240:[value] warning: assertion 'refined' got status unkn [value] computing for function my_memchr <- memchr_large_uninit <- main. Called from tests/non-free/memchr.c:243. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [45..55] }},{0},{100})) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -323,8 +309,7 @@ tests/non-free/memchr.c:269:[value] assertion got status valid. Called from tests/non-free/memchr.c:299. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&unterminated_string }}, {0},{13})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: reading indeterminate data [value] Recording results for my_memchr [value] Done for function my_memchr [value] computing for function my_memchr <- memchr_misc <- main. @@ -338,8 +323,7 @@ tests/non-free/memchr.c:303:[value] assertion got status valid. [value] computing for function my_memchr2 <- memchr_misc <- main. Called from tests/non-free/memchr.c:305. tests/non-free/memchr.c:64:[value] Call to builtin Frama_C_memchr(({{ &x + {0; 3} }},{0},{12})) -tests/non-free/memchr.c:64:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:64: - possibly reading indeterminate data +tests/non-free/memchr.c:64:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mymemchr2({0}) [value] Recording results for my_memchr2 [value] Done for function my_memchr2 @@ -347,8 +331,7 @@ tests/non-free/memchr.c:306:[value] assertion got status valid. [value] computing for function my_memchr <- memchr_misc <- main. Called from tests/non-free/memchr.c:308. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&loc_char_array }},{0},{5})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: reading indeterminate data [value] Recording results for my_memchr [value] Done for function my_memchr [value] computing for function my_memchr <- memchr_misc <- main. @@ -441,8 +424,7 @@ tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "mno\000pq [value] computing for function my_memchr <- memchr_misc2 <- main. Called from tests/non-free/memchr.c:341. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&maybe_init }},{0},{2})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possible uninitialized values +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values [value] Called Frama_C_show_each_mymemchr({1}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -452,8 +434,7 @@ tests/non-free/memchr.c:342:[value] assertion got status valid. [value] computing for function memchr_bitfields <- main. Called from tests/non-free/memchr.c:653. tests/non-free/memchr.c:161:[value] Call to builtin Frama_C_memchr(({{ (void const *)&s }},{0},{3})) -tests/non-free/memchr.c:161:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:161: - reading indeterminate data +tests/non-free/memchr.c:161:[value] warning: builtin Frama_C_memchr: reading indeterminate data [value] Recording results for memchr_bitfields [value] Done for function memchr_bitfields [value] computing for function memchr_bitfields2 <- main. @@ -473,8 +454,7 @@ tests/non-free/memchr.c:255:[value] warning: locals {x} escaping the scope of a [value] computing for function my_memchr <- memchr_escaping <- main. Called from tests/non-free/memchr.c:258. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&s }},{0},{4})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possible escaping addresses +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible escaping addresses [value] Called Frama_C_show_each_mymemchr({0}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -496,8 +476,7 @@ tests/non-free/memchr.c:356:[value] warning: out of bounds write. assert \valid( [value] computing for function my_memchr <- memchr_big_array <- main. Called from tests/non-free/memchr.c:364. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&u }},{0},{800})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possible uninitialized values +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values [value] Called Frama_C_show_each_mymemchr({1}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -505,8 +484,7 @@ tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-f Called from tests/non-free/memchr.c:365. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&r }},{0},{805})) tests/non-free/memchr.c:50:[kernel] more than 200(201) locations to update in array. Approximating. -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possible uninitialized values +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values [value] Called Frama_C_show_each_mymemchr({1}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -514,8 +492,7 @@ tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-f Called from tests/non-free/memchr.c:366. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&t }},{0},{4000001})) tests/non-free/memchr.c:50:[kernel] more than 200(1000000) locations to update in array. Approximating. -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possible uninitialized values +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values [value] Called Frama_C_show_each_mymemchr({1}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -526,24 +503,21 @@ tests/non-free/memchr.c:370:[value] assertion got status valid. [value] computing for function my_memchr <- memchr_big_array <- main. Called from tests/non-free/memchr.c:372. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&u }},{0},{1600})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possible uninitialized values +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values [value] Called Frama_C_show_each_mymemchr({1}) [value] Recording results for my_memchr [value] Done for function my_memchr [value] computing for function my_memchr <- memchr_big_array <- main. Called from tests/non-free/memchr.c:373. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&r }},{0},{1608})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possible uninitialized values +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values [value] Called Frama_C_show_each_mymemchr({1}) [value] Recording results for my_memchr [value] Done for function my_memchr [value] computing for function my_memchr <- memchr_big_array <- main. Called from tests/non-free/memchr.c:374. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&t }},{0},{8000000})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possible uninitialized values +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values [value] Called Frama_C_show_each_mymemchr({1}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -586,8 +560,7 @@ tests/non-free/memchr.c:396:[value] assertion got status valid. [value] computing for function my_memchr2 <- memchr_no_zero_but_ok <- main. Called from tests/non-free/memchr.c:397. tests/non-free/memchr.c:64:[value] Call to builtin Frama_C_memchr(({{ (void const *)&s{[7], [18]} }},{0},{5})) -tests/non-free/memchr.c:64:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:64: - possibly reading indeterminate data +tests/non-free/memchr.c:64:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mymemchr2({10; 18; 19}) [value] Recording results for my_memchr2 [value] Done for function my_memchr2 @@ -656,9 +629,8 @@ tests/non-free/memchr.c:184:[value] Call to builtin memset(({{ (void *)&a }},{1; [value] computing for function my_memchr <- memchr_large_n <- main. Called from tests/non-free/memchr.c:443. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [3..30] }},{0},[10..20])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -670,9 +642,8 @@ tests/non-free/memchr.c:445:[value] warning: assertion 'refined' got status unkn [value] computing for function my_memchr <- memchr_large_n <- main. Called from tests/non-free/memchr.c:449. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [3..30] }},{0},[10..20])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -684,9 +655,8 @@ tests/non-free/memchr.c:451:[value] warning: assertion 'refined' got status unkn [value] computing for function my_memchr <- memchr_large_n <- main. Called from tests/non-free/memchr.c:454. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [3..30] }},{0},[10..20])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -701,9 +671,8 @@ tests/non-free/memchr.c:456:[value] warning: assertion 'refined' got status unkn [value] computing for function my_memchr <- memchr_large_n <- main. Called from tests/non-free/memchr.c:459. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [5..17] }},{0},[10..20])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -718,9 +687,8 @@ tests/non-free/memchr.c:461:[value] warning: assertion 'refined' got status unkn [value] computing for function my_memchr <- memchr_large_n <- main. Called from tests/non-free/memchr.c:464. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [60..74] }},{0},[10..20])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -735,9 +703,8 @@ tests/non-free/memchr.c:466:[value] warning: assertion 'refined' got status unkn [value] computing for function my_memchr <- memchr_large_n <- main. Called from tests/non-free/memchr.c:469. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [63..80] }},{0},[10..20])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -757,9 +724,8 @@ tests/non-free/memchr.c:184:[value] Call to builtin memset(({{ (void *)&a }},{0; [value] computing for function my_memchr <- memchr_large_n <- main. Called from tests/non-free/memchr.c:475. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [50..70] }},{0},[10..20])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -773,9 +739,8 @@ tests/non-free/memchr.c:476:[value] assertion got status valid. [value] computing for function my_memchr <- memchr_large_n <- main. Called from tests/non-free/memchr.c:479. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [50..70] }},{0},[0..100])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -792,9 +757,8 @@ tests/non-free/memchr.c:480:[value] assertion got status valid. [value] computing for function my_memchr <- memchr_large_n <- main. Called from tests/non-free/memchr.c:484. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [0..10] }},{0},[0..90])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -865,9 +829,8 @@ tests/non-free/memchr.c:184:[value] Call to builtin memset(({{ (void *)&a[16] }} [value] computing for function my_memchr <- memchr_intervals <- main. Called from tests/non-free/memchr.c:516. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [0..9] }},{0},[0..10])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -886,8 +849,7 @@ tests/non-free/memchr.c:518:[value] warning: assertion 'refined' got status unkn Called from tests/non-free/memchr.c:522. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&a{[3], [4], [5], [6], [7], [8], [9]} }},{0},[2..10])) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possibly reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mymemchr({-1; 7; 8; 9}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -902,8 +864,7 @@ tests/non-free/memchr.c:523:[value] assertion got status valid. Called from tests/non-free/memchr.c:527. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&a{[3], [4], [5], [6], [7], [8], [9]} }},{0},[0..11])) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possibly reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mymemchr({-1; 7; 8; 9}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -919,8 +880,7 @@ tests/non-free/memchr.c:528:[value] assertion got status valid. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&a{[3], [4], [5], [6], [7], [8], [9], [10]} }}, {0},[0..9])) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possibly reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mymemchr({-1; 7; 8; 9}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -936,8 +896,7 @@ tests/non-free/memchr.c:533:[value] assertion got status valid. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&a{[3], [4], [5], [6], [7], [8], [9], [10]} }}, {0},[0..10])) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possibly reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mymemchr({-1; 7; 8; 9}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -953,8 +912,7 @@ tests/non-free/memchr.c:538:[value] assertion got status valid. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&a{[3], [4], [5], [6], [7], [8], [9], [10]} }}, {0},[0..11])) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possibly reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mymemchr({-1; 7; 8; 9}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -968,9 +926,8 @@ tests/non-free/memchr.c:543:[value] assertion got status valid. [value] computing for function my_memchr <- memchr_intervals <- main. Called from tests/non-free/memchr.c:547. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [3..11] }},{0},[0..10])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -987,9 +944,8 @@ tests/non-free/memchr.c:548:[value] assertion got status valid. [value] computing for function my_memchr <- memchr_intervals <- main. Called from tests/non-free/memchr.c:552. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [3..11] }},{0},[0..10])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -1006,9 +962,8 @@ tests/non-free/memchr.c:553:[value] assertion got status valid. [value] computing for function my_memchr <- memchr_intervals <- main. Called from tests/non-free/memchr.c:557. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [3..11] }},{0},[0..11])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -1028,8 +983,7 @@ tests/non-free/memchr.c:558:[value] assertion got status valid. memchr_small_sets_chars <- main. Called from tests/non-free/memchr.c:566. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "abc" + {0; 1} }},{97},{4})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possibly reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mymemchr({0}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -1124,8 +1078,7 @@ tests/non-free/memchr.c:606:[value] assertion got status valid. memchr_small_sets_chars <- main. Called from tests/non-free/memchr.c:566. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "abc" + {0; 1} }},{97; 98},{4})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possibly reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mymemchr({-1; 0; 1}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -1174,8 +1127,7 @@ tests/non-free/memchr.c:617:[value] assertion got status valid. memchr_small_sets_chars <- main. Called from tests/non-free/memchr.c:566. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "abc" + {0; 1} }},{98; 99},{4})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possibly reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mymemchr({-1; 1; 2}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -1229,8 +1181,7 @@ tests/non-free/memchr.c:629:[value] assertion got status valid. memchr_small_sets_chars <- main. Called from tests/non-free/memchr.c:566. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "abc" + {0; 1} }},{0; 98; 99},{4})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possibly reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mymemchr({-1; 1; 2; 3}) [value] Recording results for my_memchr [value] Done for function my_memchr diff --git a/tests/non-free/oracle/str_allocated.res.oracle b/tests/non-free/oracle/str_allocated.res.oracle index 72baddb1c630b1fc7f66d06a87d179617bb60111..e5e44c9184390537d66e1c900a2bfe5efacc08bb 100644 --- a/tests/non-free/oracle/str_allocated.res.oracle +++ b/tests/non-free/oracle/str_allocated.res.oracle @@ -17,8 +17,7 @@ tests/non-free/str_allocated.c:12:[value:malloc] resizing variable `__malloc_w_m tests/non-free/str_allocated.c:14:[value] warning: accessing uninitialized left-value. assert \initialized(&b); tests/non-free/str_allocated.c:14:[value] Call to builtin Frama_C_memchr(({{ (void const *)&__malloc_w_memchr_bug_l12 }}, {1},{1})) -tests/non-free/str_allocated.c:14:[value] warning: built-in Frama_C_memchr: tests/non-free/str_allocated.c:14: - reading indeterminate data +tests/non-free/str_allocated.c:14:[value] warning: builtin Frama_C_memchr: reading indeterminate data [value] Recording results for memchr_bug [value] Done for function memchr_bug [value] Recording results for main diff --git a/tests/non-free/oracle/strchr.res.oracle b/tests/non-free/oracle/strchr.res.oracle index e1b504509de5f35f8c61cea27ae8d39803ef4327..a49bc2418f65a65e8c5c8f72600cc045d15bd1ad 100644 --- a/tests/non-free/oracle/strchr.res.oracle +++ b/tests/non-free/oracle/strchr.res.oracle @@ -53,8 +53,7 @@ tests/non-free/strchr.c:91:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_small_sets <- main. Called from tests/non-free/strchr.c:95. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t[0] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr({0; 1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -66,8 +65,7 @@ tests/non-free/strchr.c:96:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_zero_termination <- main. Called from tests/non-free/strchr.c:104. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &empty_or_non_terminated[0] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr({0}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -75,15 +73,13 @@ tests/non-free/strchr.c:105:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_zero_termination <- main. Called from tests/non-free/strchr.c:109. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &non_terminated[0] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Recording results for my_strchr [value] Done for function my_strchr [value] computing for function my_strchr <- strchr_zero_termination <- main. Called from tests/non-free/strchr.c:115. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &non_terminated2[2] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Recording results for my_strchr [value] Done for function my_strchr [value] Recording results for strchr_zero_termination @@ -93,8 +89,7 @@ tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-f [value] computing for function my_strchr <- strchr_initialization <- main. Called from tests/non-free/strchr.c:123. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &empty_or_uninitialized[0] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possible uninitialized values +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possible uninitialized values [value] Called Frama_C_show_each_mystrchr({0}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -102,15 +97,13 @@ tests/non-free/strchr.c:124:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_initialization <- main. Called from tests/non-free/strchr.c:127. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &uninitialized[0] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Recording results for my_strchr [value] Done for function my_strchr [value] computing for function my_strchr <- strchr_initialization <- main. Called from tests/non-free/strchr.c:132. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &s[0] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possible uninitialized values +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possible uninitialized values [value] Called Frama_C_show_each_mystrchr({1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -118,8 +111,7 @@ tests/non-free/strchr.c:133:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_initialization <- main. Called from tests/non-free/strchr.c:139. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t[0] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possible uninitialized values +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possible uninitialized values [value] Called Frama_C_show_each_mystrchr({3}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -141,9 +133,8 @@ share/libc/__fc_builtin.h:50:[value] function Frama_C_interval: precondition got [value] computing for function my_strchr <- strchr_large <- main. Called from tests/non-free/strchr.c:192. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &a + [3..30] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -157,9 +148,8 @@ tests/non-free/strchr.c:193:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_large <- main. Called from tests/non-free/strchr.c:196. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &a + [5..17] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -174,9 +164,8 @@ tests/non-free/strchr.c:198:[value] warning: assertion 'refined' got status unkn [value] computing for function my_strchr <- strchr_large <- main. Called from tests/non-free/strchr.c:201. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &a + [60..74] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -191,9 +180,8 @@ tests/non-free/strchr.c:203:[value] warning: assertion 'refined' got status unkn [value] computing for function my_strchr <- strchr_large <- main. Called from tests/non-free/strchr.c:206. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &a + [63..80] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -213,9 +201,8 @@ tests/non-free/strchr.c:180:[value] Call to builtin memset(({{ (void *)&a }},{0; [value] computing for function my_strchr <- strchr_large <- main. Called from tests/non-free/strchr.c:212. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &a + [50..70] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -243,9 +230,8 @@ tests/non-free/strchr.c:180:[value] Call to builtin memset(({{ (void *)&a[50] }} [value] computing for function my_strchr <- strchr_large_uninit <- main. Called from tests/non-free/strchr.c:226. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &a + [3..30] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -260,9 +246,8 @@ tests/non-free/strchr.c:228:[value] warning: assertion 'refined' got status unkn [value] computing for function my_strchr <- strchr_large_uninit <- main. Called from tests/non-free/strchr.c:232. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &a + [63..80] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -277,9 +262,8 @@ tests/non-free/strchr.c:234:[value] warning: assertion 'refined' got status unkn [value] computing for function my_strchr <- strchr_large_uninit <- main. Called from tests/non-free/strchr.c:237. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &a + [45..55] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -314,8 +298,7 @@ tests/non-free/strchr.c:263:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_misc <- main. Called from tests/non-free/strchr.c:293. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &unterminated_string[0] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Recording results for my_strchr [value] Done for function my_strchr [value] computing for function my_strchr <- strchr_misc <- main. @@ -329,8 +312,7 @@ tests/non-free/strchr.c:297:[value] assertion got status valid. [value] computing for function my_strchr2 <- strchr_misc <- main. Called from tests/non-free/strchr.c:299. tests/non-free/strchr.c:62:[value] Call to builtin Frama_C_strchr(({{ &x + {0; 3} }},{0})) -tests/non-free/strchr.c:62:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:62: - possibly reading indeterminate data +tests/non-free/strchr.c:62:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr2({0}) [value] Recording results for my_strchr2 [value] Done for function my_strchr2 @@ -338,8 +320,7 @@ tests/non-free/strchr.c:300:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_misc <- main. Called from tests/non-free/strchr.c:302. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &loc_char_array[0] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Recording results for my_strchr [value] Done for function my_strchr [value] computing for function my_strchr <- strchr_misc <- main. @@ -430,8 +411,7 @@ tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "mno\000pq [value] computing for function my_strchr <- strchr_misc2 <- main. Called from tests/non-free/strchr.c:335. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &maybe_init[0] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possible uninitialized values +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possible uninitialized values [value] Called Frama_C_show_each_mystrchr({1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -441,8 +421,7 @@ tests/non-free/strchr.c:336:[value] assertion got status valid. [value] computing for function strchr_bitfields <- main. Called from tests/non-free/strchr.c:540. tests/non-free/strchr.c:157:[value] Call to builtin Frama_C_strchr(({{ (char const *)&s }},{0})) -tests/non-free/strchr.c:157:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:157: - reading indeterminate data +tests/non-free/strchr.c:157:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Recording results for strchr_bitfields [value] Done for function strchr_bitfields [value] computing for function strchr_bitfields2 <- main. @@ -462,8 +441,7 @@ tests/non-free/strchr.c:249:[value] warning: locals {x} escaping the scope of a [value] computing for function my_strchr <- strchr_escaping <- main. Called from tests/non-free/strchr.c:252. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &s[0] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possible escaping addresses +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possible escaping addresses [value] Called Frama_C_show_each_mystrchr({0}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -485,8 +463,7 @@ tests/non-free/strchr.c:350:[value] warning: out of bounds write. assert \valid( [value] computing for function my_strchr <- strchr_big_array <- main. Called from tests/non-free/strchr.c:359. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ (char const *)&u }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possible uninitialized values +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possible uninitialized values [value] Called Frama_C_show_each_mystrchr({1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -494,8 +471,7 @@ tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-f Called from tests/non-free/strchr.c:360. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ (char const *)&r }},{0})) tests/non-free/strchr.c:49:[kernel] more than 200(201) locations to update in array. Approximating. -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possible uninitialized values +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possible uninitialized values [value] Called Frama_C_show_each_mystrchr({1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -503,8 +479,7 @@ tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-f Called from tests/non-free/strchr.c:361. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ (char const *)&t }},{0})) tests/non-free/strchr.c:49:[kernel] more than 200(1000000) locations to update in array. Approximating. -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possible uninitialized values +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possible uninitialized values [value] Called Frama_C_show_each_mystrchr({1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -515,9 +490,8 @@ tests/non-free/strchr.c:365:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_big_array <- main. Called from tests/non-free/strchr.c:367. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &u + [0..4294967295] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -527,9 +501,8 @@ tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-f [value] computing for function my_strchr <- strchr_big_array <- main. Called from tests/non-free/strchr.c:368. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &r + [0..4294967295] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -539,9 +512,8 @@ tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-f [value] computing for function my_strchr <- strchr_big_array <- main. Called from tests/non-free/strchr.c:369. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t + [0..4294967295] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -576,24 +548,21 @@ tests/non-free/strchr.c:386:[value] warning: out of bounds write. assert \valid( [value] computing for function my_strchr <- strchr_big_array <- main. Called from tests/non-free/strchr.c:387. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ (char const *)&u }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr([0..799]) [value] Recording results for my_strchr [value] Done for function my_strchr [value] computing for function my_strchr <- strchr_big_array <- main. Called from tests/non-free/strchr.c:388. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ (char const *)&r }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr([0..803]) [value] Recording results for my_strchr [value] Done for function my_strchr [value] computing for function my_strchr <- strchr_big_array <- main. Called from tests/non-free/strchr.c:389. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ (char const *)&t }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr([0..3999999]) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -604,9 +573,8 @@ tests/non-free/strchr.c:393:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_big_array <- main. Called from tests/non-free/strchr.c:395. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &u + [0..4294967295] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -616,9 +584,8 @@ tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-f [value] computing for function my_strchr <- strchr_big_array <- main. Called from tests/non-free/strchr.c:396. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &r + [0..4294967295] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -628,9 +595,8 @@ tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-f [value] computing for function my_strchr <- strchr_big_array <- main. Called from tests/non-free/strchr.c:397. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t + [0..4294967295] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -672,8 +638,7 @@ tests/non-free/strchr.c:421:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_no_zero_but_ok <- main. Called from tests/non-free/strchr.c:423. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &s{[7], [11]} }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr({10; 14; 15; 16; 17; 18; 19}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -681,8 +646,7 @@ tests/non-free/strchr.c:424:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_no_zero_but_ok <- main. Called from tests/non-free/strchr.c:426. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &s{[7], [18]} }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr({10; 18; 19}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -706,8 +670,7 @@ tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "abc" + {0 strchr_small_sets_chars <- main. Called from tests/non-free/strchr.c:438. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "\000bc" + {0; 1} }},{97})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Called Frama_C_show_each_mystrchr({-1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -715,8 +678,7 @@ tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-f strchr_small_sets_chars <- main. Called from tests/non-free/strchr.c:440. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "" }},{97})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Called Frama_C_show_each_mystrchr({-1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -724,8 +686,7 @@ tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-f strchr_small_sets_chars <- main. Called from tests/non-free/strchr.c:443. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "b\000c" + {0; 2} }},{97})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Called Frama_C_show_each_mystrchr({-1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -733,8 +694,7 @@ tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-f strchr_small_sets_chars <- main. Called from tests/non-free/strchr.c:447. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t[0] }},{97})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr({0; 1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -767,8 +727,7 @@ tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "\000bc" + strchr_small_sets_chars <- main. Called from tests/non-free/strchr.c:440. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "" }},{98})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Called Frama_C_show_each_mystrchr({-1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -783,8 +742,7 @@ tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "b\000c" + strchr_small_sets_chars <- main. Called from tests/non-free/strchr.c:447. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t[0] }},{98})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr({0; 1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -818,8 +776,7 @@ tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "\000bc" + strchr_small_sets_chars <- main. Called from tests/non-free/strchr.c:440. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "" }},{97; 98})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Called Frama_C_show_each_mystrchr({-1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -834,8 +791,7 @@ tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "b\000c" + strchr_small_sets_chars <- main. Called from tests/non-free/strchr.c:447. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t[0] }},{97; 98})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr({0; 1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -869,8 +825,7 @@ tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "\000bc" + strchr_small_sets_chars <- main. Called from tests/non-free/strchr.c:440. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "" }},{98; 99})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Called Frama_C_show_each_mystrchr({-1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -885,8 +840,7 @@ tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "b\000c" + strchr_small_sets_chars <- main. Called from tests/non-free/strchr.c:447. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t[0] }},{98; 99})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr({0; 1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -935,8 +889,7 @@ tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "b\000c" + strchr_small_sets_chars <- main. Called from tests/non-free/strchr.c:447. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t[0] }},{0; 98; 99})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr({-1; 0; 1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -968,8 +921,7 @@ tests/non-free/strchr.c:512:[value] assertion got status valid. Called from tests/non-free/strchr.c:516. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t[0] ; "ABCDEFGHIJKLMNOPQRSTUVWXYZ" }}, [-128..127])) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Called Frama_C_show_each_mystrchr([-1..26]) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -983,8 +935,7 @@ tests/non-free/strchr.c:180:[value] Call to builtin memset(({{ (void *)&t }},{0; Called from tests/non-free/strchr.c:519. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t[0] ; "ABCDEFGHIJKLMNOPQRSTUVWXYZ" }}, [-128..127])) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr([-1..29]) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -994,14 +945,8 @@ tests/non-free/strchr.c:520:[value] assertion got status valid. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t + [0..4294967295] ; "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + [0..4294967295] }},[-128..127])) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possible uninitialized values - possible escaping addresses - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -1018,7 +963,7 @@ tests/non-free/strchr.c:522:[value] assertion got status valid. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ garbled mix of &{s; "hello"} (origin: Arithmetic {tests/non-free/strchr.c:49}) }},{1})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: string argument is too imprecise, cannot compute a useful result. [value] Called Frama_C_show_each_mystrchr({-1}) [value] Recording results for my_strchr diff --git a/tests/non-free/oracle/strcmp.res.oracle b/tests/non-free/oracle/strcmp.res.oracle deleted file mode 100644 index 9de166ca480b12574f5500d4c98ae3bfc248189a..0000000000000000000000000000000000000000 --- a/tests/non-free/oracle/strcmp.res.oracle +++ /dev/null @@ -1,314 +0,0 @@ -[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/non-free/strcmp.c (with preprocessing) -[value] Analyzing a complete application starting at main -[value] Computing initial state -[value] Initial state computed -[value] Values of globals at initialization - toto0 ∈ {{ "toto" }} - abc0 ∈ {{ "abc" }} - abd0 ∈ {{ "abd" }} - a0 ∈ {{ "a" }} - abc[0] ∈ {97} - [1] ∈ {98} - [2] ∈ {99} - string_with_addr[0] ∈ {113} - [1] ∈ {119} - [2] ∈ {101} - [3] ∈ {114} - [4] ∈ {116} - [5] ∈ {121} - [6] ∈ {117} - [7] ∈ {105} - [8..9] ∈ {111} - [10] ∈ {112} - [11] ∈ {0} - string[0] ∈ {113} - [1] ∈ {119} - [2] ∈ {101} - [3] ∈ {114} - [4] ∈ {116} - [5] ∈ {121} - [6] ∈ {117} - [7] ∈ {105} - [8..9] ∈ {111} - [10] ∈ {112} - [11] ∈ {0} - commonv[0] ∈ {99} - [1] ∈ {111} - [2..3] ∈ {109} - [4] ∈ {111} - [5] ∈ {110} - [6] ∈ {32} - [7] ∈ {118} - [8] ∈ {97} - [9] ∈ {114} - [10] ∈ {105} - [11] ∈ {97} - [12] ∈ {116} - [13] ∈ {105} - [14] ∈ {111} - [15] ∈ {110} - [16] ∈ {0} - commonf[0] ∈ {99} - [1] ∈ {111} - [2..3] ∈ {109} - [4] ∈ {111} - [5] ∈ {110} - [6] ∈ {32} - [7] ∈ {102} - [8] ∈ {117} - [9] ∈ {103} - [10] ∈ {117} - [11] ∈ {101} - [12] ∈ {0} - u ∈ [--..--] - tmp[0..1] ∈ {0} - t ∈ {0} -tests/non-free/strcmp.c:40:[value] Call to builtin strcmp(({{ "toto" }},{{ "toto" }})) -[value] computing for function expect <- main. - Called from tests/non-free/strcmp.c:41. - -expect 0: 0 - -[value] Recording results for expect -[value] Done for function expect -tests/non-free/strcmp.c:42:[value] Call to builtin strcmp(({{ "abd" }},{{ "abc" }})) -[value] computing for function expect <- main. - Called from tests/non-free/strcmp.c:43. - -expect 1: 1 - -[value] Recording results for expect -[value] Done for function expect -tests/non-free/strcmp.c:45:[value] Call to builtin strcmp(({{ "abc" }},{{ "a" }})) -[value] computing for function expect <- main. - Called from tests/non-free/strcmp.c:46. - -expect 1: 1 - -[value] Recording results for expect -[value] Done for function expect -tests/non-free/strcmp.c:47:[value] Call to builtin strcmp(({{ "a" }},{{ "abc" }})) -[value] computing for function expect <- main. - Called from tests/non-free/strcmp.c:48. - -expect -1: -1 - -[value] Recording results for expect -[value] Done for function expect -tests/non-free/strcmp.c:49:[value] Call to builtin strcmp(({{ "bbc" }},{{ "abc" }})) -[value] computing for function expect <- main. - Called from tests/non-free/strcmp.c:50. - -expect 1: 1 - -[value] Recording results for expect -[value] Done for function expect -tests/non-free/strcmp.c:51:[value] Call to builtin strcmp(({{ "abc" }},{{ "bbc" }})) -[value] computing for function expect <- main. - Called from tests/non-free/strcmp.c:52. - -expect -1: -1 - -[value] Recording results for expect -[value] Done for function expect -tests/non-free/strcmp.c:53:[value] Call to builtin strcmp(({{ "abc" }},{{ "abd" }})) -[value] computing for function expect <- main. - Called from tests/non-free/strcmp.c:54. - -expect -1: -1 - -[value] Recording results for expect -[value] Done for function expect -tests/non-free/strcmp.c:56:[value] Call to builtin strcmp(({{ &commonf[0] }},{{ &commonv[0] }})) -[value] computing for function expect <- main. - Called from tests/non-free/strcmp.c:57. - -expect -1: -1 - -[value] Recording results for expect -[value] Done for function expect - -strncmp: - -tests/non-free/strcmp.c:60:[value] Call to builtin strncmp(({{ "abd" }},{{ "abc" }},{0})) -[value] computing for function expect <- main. - Called from tests/non-free/strcmp.c:61. - -expect 0: 0 - -[value] Recording results for expect -[value] Done for function expect -tests/non-free/strcmp.c:62:[value] Call to builtin strncmp(({{ "abd" }},{{ "abc" }},{1})) -[value] computing for function expect <- main. - Called from tests/non-free/strcmp.c:63. - -expect 0: 0 - -[value] Recording results for expect -[value] Done for function expect -tests/non-free/strcmp.c:64:[value] Call to builtin strncmp(({{ "abd" }},{{ "abc" }},{2})) -[value] computing for function expect <- main. - Called from tests/non-free/strcmp.c:65. - -expect 0: 0 - -[value] Recording results for expect -[value] Done for function expect -tests/non-free/strcmp.c:66:[value] Call to builtin strncmp(({{ "abd" }},{{ "abc" }},{3})) -[value] computing for function expect <- main. - Called from tests/non-free/strcmp.c:67. - -expect 1: 1 - -[value] Recording results for expect -[value] Done for function expect -tests/non-free/strcmp.c:68:[value] Call to builtin strncmp(({{ "abd" }},{{ "abc" }},{4})) -[value] computing for function expect <- main. - Called from tests/non-free/strcmp.c:69. - -expect 1: 1 - -[value] Recording results for expect -[value] Done for function expect -tests/non-free/strcmp.c:71:[value] Call to builtin strncmp(({{ "a" }},{{ "abc" }},{0})) -[value] computing for function expect <- main. - Called from tests/non-free/strcmp.c:72. - -expect 0: 0 - -[value] Recording results for expect -[value] Done for function expect -tests/non-free/strcmp.c:73:[value] Call to builtin strncmp(({{ "a" }},{{ "abc" }},{1})) -[value] computing for function expect <- main. - Called from tests/non-free/strcmp.c:74. - -expect 0: 0 - -[value] Recording results for expect -[value] Done for function expect -tests/non-free/strcmp.c:75:[value] Call to builtin strncmp(({{ "a" }},{{ "b" }},{0})) -[value] computing for function expect <- main. - Called from tests/non-free/strcmp.c:76. - -expect 0: 0 - -[value] Recording results for expect -[value] Done for function expect -tests/non-free/strcmp.c:77:[value] Call to builtin strncmp(({{ "a" }},{{ "b" }},{1})) -[value] computing for function expect <- main. - Called from tests/non-free/strcmp.c:78. - -expect -1: -1 - -[value] Recording results for expect -[value] Done for function expect - -char signedness tricks: - -tests/non-free/strcmp.c:81:[value] Call to builtin strcmp(({{ "a" }},{{ "\192" }})) -[value] computing for function expect <- main. - Called from tests/non-free/strcmp.c:82. - -expect -1: -1 - -[value] Recording results for expect -[value] Done for function expect -tests/non-free/strcmp.c:85:[value] Call to builtin strcmp(({{ "a" }},{{ &tmp[0] }})) -[value] computing for function expect <- main. - Called from tests/non-free/strcmp.c:86. - -expect -1: -1 - -[value] Recording results for expect -[value] Done for function expect -tests/non-free/strcmp.c:89:[value] Call to builtin strcmp(({{ "a" }},{{ &tmp[0] }})) -[value] computing for function expect <- main. - Called from tests/non-free/strcmp.c:90. - -expect -1: -1 - -[value] Recording results for expect -[value] Done for function expect - -END OF DETERMINISTIC TESTS - -tests/non-free/strcmp.c:94:[value] Call to builtin strncmp(({{ "abd" }},{{ "abc" }},{1; 2})) -tests/non-free/strcmp.c:95:[value] Call to builtin strncmp(({{ "abd" }},{{ "abc" }},{2; 3})) -tests/non-free/strcmp.c:96:[value] Call to builtin strncmp(({{ "abd" }},{{ "abc" }},{3; 4})) -tests/non-free/strcmp.c:99:[value] Call to builtin strcmp(({{ "abc" }},{{ "abd" ; "abb" }})) -tests/non-free/strcmp.c:100:[value] Call to builtin strcmp(({{ "abd" ; "abb" }},{{ "abc" }})) -tests/non-free/strcmp.c:106:[value] Call to builtin strcmp(({{ &commonf[0] }},{{ &commonv[0] }})) -tests/non-free/strcmp.c:111:[value] Call to builtin strcmp(({{ &commonf[0] }},{{ &commonv[0] }})) -tests/non-free/strcmp.c:113:[value] Call to builtin strcmp(({{ &commonf[0] }},{{ &commonv[0] }})) -tests/non-free/strcmp.c:117:[value] Call to builtin strcmp(({{ "abc" }},{{ &abc[0] }})) -tests/non-free/strcmp.c:117:[kernel] warning: may not point to a valid string. - assert \points_to_valid_string((char const *)abc); -tests/non-free/strcmp.c:119:[value] Call to builtin strcmp(({{ "a" }},{{ &abc[0] }})) -tests/non-free/strcmp.c:119:[kernel] warning: may not point to a valid string. - assert \points_to_valid_string((char const *)abc); -tests/non-free/strcmp.c:122:[value] Call to builtin strcmp(({{ &string[0] }},{{ &string_with_addr[0] }})) -tests/non-free/strcmp.c:122:[kernel] warning: may not point to a valid string. - assert \points_to_valid_string((char const *)string_with_addr); -tests/non-free/strcmp.c:125:[value] Call to builtin strcmp(({{ &string[0] }},{{ &string_with_addr[0] }})) -tests/non-free/strcmp.c:125:[kernel] warning: may not point to a valid string. - assert \points_to_valid_string((char const *)string_with_addr); -[value] Recording results for main -[value] done for function main -[value] ====== VALUES COMPUTED ====== -[value] Values at end of function expect: - -[value] Values at end of function main: - string_with_addr[0] ∈ {113} - [1] ∈ {119} - [2] ∈ {101} - [3] ∈ {114} - [bits 32 to 63] ∈ {{ NULL ; (? *)&r1a }} - [8..9] ∈ {111} - [10] ∈ {112} - [11] ∈ {0} - commonv[0] ∈ {99} - [1] ∈ {111} - [2..3] ∈ {109} - [4] ∈ {111} - [5] ∈ {0; 110} - [6] ∈ {32} - [7] ∈ {118} - [8] ∈ {97} - [9] ∈ {114} - [10] ∈ {105} - [11] ∈ {97} - [12] ∈ {116} - [13] ∈ {105} - [14] ∈ {111} - [15] ∈ {110} - [16] ∈ {0} - commonf[0] ∈ {99} - [1] ∈ {111} - [2..3] ∈ {109} - [4] ∈ {111} - [5] ∈ {0; 110} - [6] ∈ {32} - [7] ∈ {102} - [8] ∈ {117} - [9] ∈ {103} - [10] ∈ {117} - [11] ∈ {101} - [12] ∈ {0} - tmp[0] ∈ {192} - [1] ∈ {0} - t ∈ {-1} - r1a ∈ UNINITIALIZED - r2a ∈ {-1} or UNINITIALIZED - r3a ∈ {-1; 0; 1} or UNINITIALIZED - r4a ∈ {-1; 0; 1} or UNINITIALIZED - rn1 ∈ {0} - rn2 ∈ {0; 1} - rn3 ∈ {1} - p1 ∈ {{ "abd" ; "abb" }} - r1_1m1 ∈ {-1; 1} - r2_1m1 ∈ {-1; 1} - r3_1m1 ∈ {-1; 1} or UNINITIALIZED - r4_m1 ∈ {-1} or UNINITIALIZED - r5_10m1 ∈ {-1; 0; 1} - __retres ∈ {0} diff --git a/tests/non-free/oracle/strlen.res.oracle b/tests/non-free/oracle/strlen.res.oracle index ec734ef545879094fed9bf142a447a25b8ceb433..a5f44175539bd1d22c10dbb76a8664ee3b74badc 100644 --- a/tests/non-free/oracle/strlen.res.oracle +++ b/tests/non-free/oracle/strlen.res.oracle @@ -43,23 +43,19 @@ tests/non-free/strlen.c:71:[value] assertion got status valid. tests/non-free/strlen.c:75:[value] Call to builtin Frama_C_strlen(({{ "b\000c" + {0; 2} }})) tests/non-free/strlen.c:76:[value] assertion got status valid. tests/non-free/strlen.c:81:[value] Call to builtin Frama_C_strlen(({{ &t[0] }})) -tests/non-free/strlen.c:81:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:81: - possibly reading indeterminate data +tests/non-free/strlen.c:81:[value] warning: builtin Frama_C_strlen: possibly reading indeterminate data tests/non-free/strlen.c:82:[value] assertion got status valid. [value] Recording results for small_sets [value] Done for function small_sets [value] computing for function zero_termination <- main. Called from tests/non-free/strlen.c:310. tests/non-free/strlen.c:89:[value] Call to builtin Frama_C_strlen(({{ &empty_or_non_terminated[0] }})) -tests/non-free/strlen.c:89:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:89: - possibly reading indeterminate data +tests/non-free/strlen.c:89:[value] warning: builtin Frama_C_strlen: possibly reading indeterminate data tests/non-free/strlen.c:90:[value] assertion got status valid. tests/non-free/strlen.c:93:[value] Call to builtin Frama_C_strlen(({{ &non_terminated[0] }})) -tests/non-free/strlen.c:93:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:93: - reading indeterminate data +tests/non-free/strlen.c:93:[value] warning: builtin Frama_C_strlen: reading indeterminate data tests/non-free/strlen.c:97:[value] Call to builtin Frama_C_strlen(({{ &non_terminated2{[2], [3]} }})) -tests/non-free/strlen.c:97:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:97: - reading indeterminate data +tests/non-free/strlen.c:97:[value] warning: builtin Frama_C_strlen: reading indeterminate data [value] Recording results for zero_termination [value] Done for function zero_termination [value] computing for function strlen_initialization <- main. @@ -67,31 +63,27 @@ tests/non-free/strlen.c:97:[value] warning: built-in Frama_C_strlen: tests/non-f [value] computing for function my_strlen <- strlen_initialization <- main. Called from tests/non-free/strlen.c:105. tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &empty_or_uninitialized[0] }})) -tests/non-free/strlen.c:54:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:54: - possible uninitialized values +tests/non-free/strlen.c:54:[value] warning: builtin Frama_C_strlen: possible uninitialized values [value] Recording results for my_strlen [value] Done for function my_strlen tests/non-free/strlen.c:106:[value] assertion got status valid. [value] computing for function my_strlen <- strlen_initialization <- main. Called from tests/non-free/strlen.c:109. tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &uninitialized[0] }})) -tests/non-free/strlen.c:54:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:54: - reading indeterminate data +tests/non-free/strlen.c:54:[value] warning: builtin Frama_C_strlen: reading indeterminate data [value] Recording results for my_strlen [value] Done for function my_strlen [value] computing for function my_strlen <- strlen_initialization <- main. Called from tests/non-free/strlen.c:116. tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &s[0] }})) -tests/non-free/strlen.c:54:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:54: - possible uninitialized values +tests/non-free/strlen.c:54:[value] warning: builtin Frama_C_strlen: possible uninitialized values [value] Recording results for my_strlen [value] Done for function my_strlen tests/non-free/strlen.c:117:[value] assertion got status valid. [value] computing for function my_strlen <- strlen_initialization <- main. Called from tests/non-free/strlen.c:124. tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &t[0] }})) -tests/non-free/strlen.c:54:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:54: - possible uninitialized values +tests/non-free/strlen.c:54:[value] warning: builtin Frama_C_strlen: possible uninitialized values [value] Recording results for my_strlen [value] Done for function my_strlen tests/non-free/strlen.c:125:[value] assertion got status valid. @@ -139,8 +131,7 @@ tests/non-free/strlen.c:181:[value] assertion got status valid. [value] computing for function my_strlen <- strlen_large <- main. Called from tests/non-free/strlen.c:184. tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &a + [63..80] }})) -tests/non-free/strlen.c:54:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:54: - possibly reading indeterminate data +tests/non-free/strlen.c:54:[value] warning: builtin Frama_C_strlen: possibly reading indeterminate data [value] Recording results for my_strlen [value] Done for function my_strlen tests/non-free/strlen.c:185:[value] assertion got status valid. @@ -155,8 +146,7 @@ tests/non-free/strlen.c:161:[value] Call to builtin memset(({{ (void *)&a }},{0; [value] computing for function my_strlen <- strlen_large <- main. Called from tests/non-free/strlen.c:189. tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &a + [50..70] }})) -tests/non-free/strlen.c:54:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:54: - possibly reading indeterminate data +tests/non-free/strlen.c:54:[value] warning: builtin Frama_C_strlen: possibly reading indeterminate data [value] Recording results for my_strlen [value] Done for function my_strlen tests/non-free/strlen.c:190:[value] assertion got status valid. @@ -180,8 +170,7 @@ tests/non-free/strlen.c:161:[value] Call to builtin memset(({{ (void *)&a[50] }} [value] computing for function my_strlen <- strlen_large_uninit <- main. Called from tests/non-free/strlen.c:203. tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &a + [3..30] }})) -tests/non-free/strlen.c:54:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:54: - possibly reading indeterminate data +tests/non-free/strlen.c:54:[value] warning: builtin Frama_C_strlen: possibly reading indeterminate data [value] Recording results for my_strlen [value] Done for function my_strlen tests/non-free/strlen.c:204:[value] assertion got status valid. @@ -191,8 +180,7 @@ tests/non-free/strlen.c:204:[value] assertion got status valid. [value] computing for function my_strlen <- strlen_large_uninit <- main. Called from tests/non-free/strlen.c:208. tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &a + [63..80] }})) -tests/non-free/strlen.c:54:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:54: - possibly reading indeterminate data +tests/non-free/strlen.c:54:[value] warning: builtin Frama_C_strlen: possibly reading indeterminate data [value] Recording results for my_strlen [value] Done for function my_strlen tests/non-free/strlen.c:209:[value] assertion got status valid. @@ -202,7 +190,7 @@ tests/non-free/strlen.c:209:[value] assertion got status valid. [value] computing for function my_strlen <- strlen_large_uninit <- main. Called from tests/non-free/strlen.c:212. tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &a + [45..55] }})) -tests/non-free/strlen.c:54:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:54: +tests/non-free/strlen.c:54:[value] warning: builtin Frama_C_strlen: possible uninitialized values possibly reading indeterminate data [value] Recording results for my_strlen @@ -213,13 +201,11 @@ tests/non-free/strlen.c:213:[value] assertion got status valid. [value] computing for function misc <- main. Called from tests/non-free/strlen.c:314. tests/non-free/strlen.c:241:[value] Call to builtin Frama_C_strlen(({{ &unterminated_string[0] }})) -tests/non-free/strlen.c:241:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:241: - reading indeterminate data +tests/non-free/strlen.c:241:[value] warning: builtin Frama_C_strlen: reading indeterminate data tests/non-free/strlen.c:244:[value] Call to builtin Frama_C_strlen(({{ "Hello World\n" ; "Bonjour Monde\n" }})) tests/non-free/strlen.c:245:[value] assertion got status valid. tests/non-free/strlen.c:248:[value] Call to builtin Frama_C_strlen(({{ &x + {0; 3} }})) -tests/non-free/strlen.c:248:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:248: - possibly reading indeterminate data +tests/non-free/strlen.c:248:[value] warning: builtin Frama_C_strlen: possibly reading indeterminate data tests/non-free/strlen.c:249:[value] assertion got status valid. [value] computing for function Frama_C_interval <- misc <- main. Called from tests/non-free/strlen.c:250. @@ -230,8 +216,7 @@ tests/non-free/strlen.c:252:[value] Call to builtin Frama_C_strlen(({{ "" ; "a" "aaaaaaaaaaaa" ; "aaaaaaaaaaaaa" }})) tests/non-free/strlen.c:253:[value] assertion got status valid. tests/non-free/strlen.c:255:[value] Call to builtin Frama_C_strlen(({{ &loc_char_array[0] }})) -tests/non-free/strlen.c:255:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:255: - reading indeterminate data +tests/non-free/strlen.c:255:[value] warning: builtin Frama_C_strlen: reading indeterminate data tests/non-free/strlen.c:256:[value] Call to builtin Frama_C_strlen(({{ "abc\000\000\000abc" }})) tests/non-free/strlen.c:257:[value] assertion got status valid. tests/non-free/strlen.c:260:[value] Call to builtin Frama_C_strlen(({{ "abc" + {0; 1} ; "ABCD" + {0; 1} }})) @@ -250,16 +235,14 @@ tests/non-free/strlen.c:270:[value] Call to builtin Frama_C_strlen(({{ "mno\000p tests/non-free/strlen.c:270:[value] Call to builtin Frama_C_strlen(({{ "mno\000pqr" + {0; 1; 2; 3; 4; 5; 6; 7} ; "MNOP\000QRS" + {0; 1; 2; 3; 4; 5; 6; 7} }})) tests/non-free/strlen.c:277:[value] Call to builtin Frama_C_strlen(({{ &maybe_init[0] }})) -tests/non-free/strlen.c:277:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:277: - possible uninitialized values +tests/non-free/strlen.c:277:[value] warning: builtin Frama_C_strlen: possible uninitialized values tests/non-free/strlen.c:278:[value] assertion got status valid. [value] Recording results for misc [value] Done for function misc [value] computing for function bitfields <- main. Called from tests/non-free/strlen.c:315. tests/non-free/strlen.c:140:[value] Call to builtin Frama_C_strlen(({{ (char const *)&s }})) -tests/non-free/strlen.c:140:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:140: - reading indeterminate data +tests/non-free/strlen.c:140:[value] warning: builtin Frama_C_strlen: reading indeterminate data [value] Recording results for bitfields [value] Done for function bitfields [value] computing for function bitfields2 <- main. @@ -272,8 +255,7 @@ tests/non-free/strlen.c:156:[value] assertion got status valid. Called from tests/non-free/strlen.c:317. tests/non-free/strlen.c:222:[value] warning: locals {x} escaping the scope of a block of escaping through s tests/non-free/strlen.c:225:[value] Call to builtin Frama_C_strlen(({{ &s[0] }})) -tests/non-free/strlen.c:225:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:225: - possible escaping addresses +tests/non-free/strlen.c:225:[value] warning: builtin Frama_C_strlen: possible escaping addresses tests/non-free/strlen.c:226:[value] assertion got status valid. tests/non-free/strlen.c:228:[value] Call to builtin Frama_C_strlen(({{ &s[0] }})) tests/non-free/strlen.c:229:[value] assertion got status valid. @@ -285,29 +267,26 @@ tests/non-free/strlen.c:287:[value] warning: out of bounds write. assert \valid( tests/non-free/strlen.c:289:[value] warning: out of bounds write. assert \valid(p); tests/non-free/strlen.c:291:[value] warning: out of bounds write. assert \valid(p); tests/non-free/strlen.c:297:[value] Call to builtin Frama_C_strlen(({{ (char const *)&u }})) -tests/non-free/strlen.c:297:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:297: - possible uninitialized values +tests/non-free/strlen.c:297:[value] warning: builtin Frama_C_strlen: possible uninitialized values tests/non-free/strlen.c:298:[value] Call to builtin Frama_C_strlen(({{ (char const *)&r }})) tests/non-free/strlen.c:298:[kernel] more than 200(201) locations to update in array. Approximating. -tests/non-free/strlen.c:298:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:298: - possible uninitialized values +tests/non-free/strlen.c:298:[value] warning: builtin Frama_C_strlen: possible uninitialized values tests/non-free/strlen.c:299:[value] Call to builtin Frama_C_strlen(({{ (char const *)&t }})) tests/non-free/strlen.c:299:[kernel] more than 200(1000000) locations to update in array. Approximating. -tests/non-free/strlen.c:299:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:299: - possible uninitialized values +tests/non-free/strlen.c:299:[value] warning: builtin Frama_C_strlen: possible uninitialized values [value] Called Frama_C_show_each({1}, {1}, {1}) tests/non-free/strlen.c:302:[value] Call to builtin Frama_C_strlen(({{ &u + [-8589934592..8589934588],0%4 }})) -tests/non-free/strlen.c:302:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:302: +tests/non-free/strlen.c:302:[value] warning: builtin Frama_C_strlen: possible uninitialized values possibly reading indeterminate data tests/non-free/strlen.c:303:[value] Call to builtin Frama_C_strlen(({{ &r + [-8589934592..8589934588],0%4 }})) tests/non-free/strlen.c:303:[kernel] more than 200(201) locations to update in array. Approximating. -tests/non-free/strlen.c:303:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:303: +tests/non-free/strlen.c:303:[value] warning: builtin Frama_C_strlen: possible uninitialized values possibly reading indeterminate data tests/non-free/strlen.c:304:[value] Call to builtin Frama_C_strlen(({{ &t + [-8589934592..8589934588],0%4 }})) tests/non-free/strlen.c:304:[kernel] more than 200(1000000) locations to update in array. Approximating. -tests/non-free/strlen.c:304:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:304: +tests/non-free/strlen.c:304:[value] warning: builtin Frama_C_strlen: possible uninitialized values possibly reading indeterminate data [value] Called Frama_C_show_each({0; 1; 2; 3}, [0..800], [0..3999996]) diff --git a/tests/non-free/oracle/strnlen.res.oracle b/tests/non-free/oracle/strnlen.res.oracle index b32e96527ac203942bf3ed5e3864cf589dcc57e3..6e97c953b59e769c14d09db22dafc451c33d9080 100644 --- a/tests/non-free/oracle/strnlen.res.oracle +++ b/tests/non-free/oracle/strnlen.res.oracle @@ -18,8 +18,7 @@ tests/non-free/strnlen.i:9:[value] Call to builtin Frama_C_strnlen(({{ &t1[0] }},{3})) tests/non-free/strnlen.i:10:[value] Call to builtin Frama_C_strnlen(({{ &t1[0] }},{5})) tests/non-free/strnlen.i:11:[value] Call to builtin Frama_C_strnlen(({{ &t1[0] }},{6})) -tests/non-free/strnlen.i:11:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen.i:11: - reading indeterminate data +tests/non-free/strnlen.i:11:[value] warning: builtin Frama_C_strnlen: reading indeterminate data tests/non-free/strnlen.i:13:[value] Call to builtin Frama_C_strnlen(({{ &t2[0] }},{3})) tests/non-free/strnlen.i:14:[value] Call to builtin Frama_C_strnlen(({{ &t2[0] }},{5})) tests/non-free/strnlen.i:15:[value] Call to builtin Frama_C_strnlen(({{ &t2[0] }},{6})) diff --git a/tests/non-free/oracle/strnlen2.res.oracle b/tests/non-free/oracle/strnlen2.res.oracle index 170241239c5d918dd9e75fa0d7fc58ff5a8587b9..993520f015fecb444381bb243fc708439e9df702 100644 --- a/tests/non-free/oracle/strnlen2.res.oracle +++ b/tests/non-free/oracle/strnlen2.res.oracle @@ -51,29 +51,23 @@ tests/non-free/strnlen2.c:62:[value] assertion got status valid. tests/non-free/strnlen2.c:68:[value] Call to builtin Frama_C_strnlen(({{ &empty_or_non_terminated[0] }},{1})) tests/non-free/strnlen2.c:69:[value] assertion got status valid. tests/non-free/strnlen2.c:73:[value] Call to builtin Frama_C_strnlen(({{ &non_terminated[0] }},{2})) -tests/non-free/strnlen2.c:73:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:73: - reading indeterminate data +tests/non-free/strnlen2.c:73:[value] warning: builtin Frama_C_strnlen: reading indeterminate data tests/non-free/strnlen2.c:79:[value] Call to builtin Frama_C_strnlen(({{ &non_terminated2{[2], [3]} }},{4})) -tests/non-free/strnlen2.c:79:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:79: - reading indeterminate data +tests/non-free/strnlen2.c:79:[value] warning: builtin Frama_C_strnlen: reading indeterminate data [value] Recording results for zero_termination [value] Done for function zero_termination [value] computing for function initialization <- main. Called from tests/non-free/strnlen2.c:491. tests/non-free/strnlen2.c:85:[value] Call to builtin Frama_C_strnlen(({{ &empty_or_uninitialized[0] }},{1})) -tests/non-free/strnlen2.c:85:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:85: - possible uninitialized values +tests/non-free/strnlen2.c:85:[value] warning: builtin Frama_C_strnlen: possible uninitialized values tests/non-free/strnlen2.c:86:[value] assertion got status valid. tests/non-free/strnlen2.c:89:[value] Call to builtin Frama_C_strnlen(({{ &uninitialized[0] }},{1})) -tests/non-free/strnlen2.c:89:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:89: - reading indeterminate data +tests/non-free/strnlen2.c:89:[value] warning: builtin Frama_C_strnlen: reading indeterminate data tests/non-free/strnlen2.c:94:[value] Call to builtin Frama_C_strnlen(({{ &s[0] }},{2})) -tests/non-free/strnlen2.c:94:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:94: - possible uninitialized values +tests/non-free/strnlen2.c:94:[value] warning: builtin Frama_C_strnlen: possible uninitialized values tests/non-free/strnlen2.c:95:[value] assertion got status valid. tests/non-free/strnlen2.c:101:[value] Call to builtin Frama_C_strnlen(({{ &t[0] }},{4})) -tests/non-free/strnlen2.c:101:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:101: - possible uninitialized values +tests/non-free/strnlen2.c:101:[value] warning: builtin Frama_C_strnlen: possible uninitialized values tests/non-free/strnlen2.c:102:[value] assertion got status valid. [value] Recording results for initialization [value] Done for function initialization @@ -105,8 +99,7 @@ tests/non-free/strnlen2.c:157:[value] assertion got status valid. Called from tests/non-free/strnlen2.c:159. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:160:[value] Call to builtin Frama_C_strnlen(({{ &a + [63..80] }},{100})) -tests/non-free/strnlen2.c:160:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:160: - possibly reading indeterminate data +tests/non-free/strnlen2.c:160:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:161:[value] assertion got status valid. [value] computing for function init_array_nondet <- large <- main. Called from tests/non-free/strnlen2.c:163. @@ -117,8 +110,7 @@ tests/non-free/strnlen2.c:138:[value] Call to builtin memset(({{ (void *)&a }},{ Called from tests/non-free/strnlen2.c:164. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:165:[value] Call to builtin Frama_C_strnlen(({{ &a + [50..70] }},{100})) -tests/non-free/strnlen2.c:165:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:165: - possibly reading indeterminate data +tests/non-free/strnlen2.c:165:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:166:[value] assertion got status valid. [value] Recording results for large [value] Done for function large @@ -138,21 +130,19 @@ tests/non-free/strnlen2.c:138:[value] Call to builtin memset(({{ (void *)&a[50] Called from tests/non-free/strnlen2.c:176. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:177:[value] Call to builtin Frama_C_strnlen(({{ &a + [3..30] }},{100})) -tests/non-free/strnlen2.c:177:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:177: - possibly reading indeterminate data +tests/non-free/strnlen2.c:177:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:178:[value] assertion got status valid. [value] computing for function Frama_C_interval <- large_uninit <- main. Called from tests/non-free/strnlen2.c:181. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:182:[value] Call to builtin Frama_C_strnlen(({{ &a + [63..80] }},{100})) -tests/non-free/strnlen2.c:182:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:182: - possibly reading indeterminate data +tests/non-free/strnlen2.c:182:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:183:[value] assertion got status valid. [value] computing for function Frama_C_interval <- large_uninit <- main. Called from tests/non-free/strnlen2.c:185. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:186:[value] Call to builtin Frama_C_strnlen(({{ &a + [45..55] }},{100})) -tests/non-free/strnlen2.c:186:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:186: +tests/non-free/strnlen2.c:186:[value] warning: builtin Frama_C_strnlen: possible uninitialized values possibly reading indeterminate data tests/non-free/strnlen2.c:187:[value] assertion got status valid. @@ -161,14 +151,12 @@ tests/non-free/strnlen2.c:187:[value] assertion got status valid. [value] computing for function misc <- main. Called from tests/non-free/strnlen2.c:494. tests/non-free/strnlen2.c:215:[value] Call to builtin Frama_C_strnlen(({{ &unterminated_string[0] }},{13})) -tests/non-free/strnlen2.c:215:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:215: - reading indeterminate data +tests/non-free/strnlen2.c:215:[value] warning: builtin Frama_C_strnlen: reading indeterminate data tests/non-free/strnlen2.c:218:[value] Call to builtin Frama_C_strnlen(({{ "Hello World\n" ; "Bonjour Monde\n" }}, {14})) tests/non-free/strnlen2.c:219:[value] assertion got status valid. tests/non-free/strnlen2.c:222:[value] Call to builtin Frama_C_strnlen(({{ &x + {0; 3} }},{12})) -tests/non-free/strnlen2.c:222:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:222: - possibly reading indeterminate data +tests/non-free/strnlen2.c:222:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:223:[value] assertion got status valid. [value] computing for function Frama_C_interval <- misc <- main. Called from tests/non-free/strnlen2.c:224. @@ -180,8 +168,7 @@ tests/non-free/strnlen2.c:226:[value] Call to builtin Frama_C_strnlen(({{ "" ; " {13})) tests/non-free/strnlen2.c:227:[value] assertion got status valid. tests/non-free/strnlen2.c:229:[value] Call to builtin Frama_C_strnlen(({{ &loc_char_array[0] }},{5})) -tests/non-free/strnlen2.c:229:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:229: - reading indeterminate data +tests/non-free/strnlen2.c:229:[value] warning: builtin Frama_C_strnlen: reading indeterminate data tests/non-free/strnlen2.c:230:[value] Call to builtin Frama_C_strnlen(({{ "abc\000\000\000abc" }},{9})) tests/non-free/strnlen2.c:231:[value] assertion got status valid. tests/non-free/strnlen2.c:234:[value] Call to builtin Frama_C_strnlen(({{ "abc" + {0; 1} ; "ABCD" + {0; 1} }},{5})) @@ -202,16 +189,14 @@ tests/non-free/strnlen2.c:244:[value] Call to builtin Frama_C_strnlen(({{ "mno\0 "MNOP\000QRS" + {0; 1; 2; 3; 4; 5; 6; 7} }}, {10})) tests/non-free/strnlen2.c:251:[value] Call to builtin Frama_C_strnlen(({{ &maybe_init[0] }},{2})) -tests/non-free/strnlen2.c:251:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:251: - possible uninitialized values +tests/non-free/strnlen2.c:251:[value] warning: builtin Frama_C_strnlen: possible uninitialized values tests/non-free/strnlen2.c:252:[value] assertion got status valid. [value] Recording results for misc [value] Done for function misc [value] computing for function bitfields <- main. Called from tests/non-free/strnlen2.c:495. tests/non-free/strnlen2.c:117:[value] Call to builtin Frama_C_strnlen(({{ (char const *)&s }},{3})) -tests/non-free/strnlen2.c:117:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:117: - reading indeterminate data +tests/non-free/strnlen2.c:117:[value] warning: builtin Frama_C_strnlen: reading indeterminate data [value] Recording results for bitfields [value] Done for function bitfields [value] computing for function bitfields2 <- main. @@ -224,8 +209,7 @@ tests/non-free/strnlen2.c:133:[value] assertion got status valid. Called from tests/non-free/strnlen2.c:497. tests/non-free/strnlen2.c:196:[value] warning: locals {x} escaping the scope of a block of escaping through s tests/non-free/strnlen2.c:199:[value] Call to builtin Frama_C_strnlen(({{ &s[0] }},{4})) -tests/non-free/strnlen2.c:199:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:199: - possible escaping addresses +tests/non-free/strnlen2.c:199:[value] warning: builtin Frama_C_strnlen: possible escaping addresses tests/non-free/strnlen2.c:200:[value] assertion got status valid. tests/non-free/strnlen2.c:202:[value] Call to builtin Frama_C_strnlen(({{ &s[0] }},{4})) tests/non-free/strnlen2.c:203:[value] assertion got status valid. @@ -237,35 +221,32 @@ tests/non-free/strnlen2.c:261:[value] warning: out of bounds write. assert \vali tests/non-free/strnlen2.c:263:[value] warning: out of bounds write. assert \valid(p); tests/non-free/strnlen2.c:265:[value] warning: out of bounds write. assert \valid(p); tests/non-free/strnlen2.c:272:[value] Call to builtin Frama_C_strnlen(({{ (char const *)&u }},{800})) -tests/non-free/strnlen2.c:272:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:272: - possible uninitialized values +tests/non-free/strnlen2.c:272:[value] warning: builtin Frama_C_strnlen: possible uninitialized values tests/non-free/strnlen2.c:273:[value] Call to builtin Frama_C_strnlen(({{ (char const *)&r }},{804})) tests/non-free/strnlen2.c:273:[kernel] more than 200(201) locations to update in array. Approximating. -tests/non-free/strnlen2.c:273:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:273: - possible uninitialized values +tests/non-free/strnlen2.c:273:[value] warning: builtin Frama_C_strnlen: possible uninitialized values tests/non-free/strnlen2.c:274:[value] Call to builtin Frama_C_strnlen(({{ (char const *)&t }},{4000000})) tests/non-free/strnlen2.c:274:[kernel] more than 200(1000000) locations to update in array. Approximating. -tests/non-free/strnlen2.c:274:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:274: - possible uninitialized values +tests/non-free/strnlen2.c:274:[value] warning: builtin Frama_C_strnlen: possible uninitialized values tests/non-free/strnlen2.c:275:[value] assertion got status valid. tests/non-free/strnlen2.c:276:[value] assertion got status valid. tests/non-free/strnlen2.c:277:[value] assertion got status valid. [value] Called Frama_C_show_each({1}, {1}, {1}) tests/non-free/strnlen2.c:282:[value] Call to builtin Frama_C_strnlen(({{ &u + [-8589934592..8589934588],0%4 }}, {801})) -tests/non-free/strnlen2.c:282:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:282: +tests/non-free/strnlen2.c:282:[value] warning: builtin Frama_C_strnlen: possible uninitialized values possibly reading indeterminate data tests/non-free/strnlen2.c:283:[value] Call to builtin Frama_C_strnlen(({{ &r + [-8589934592..8589934588],0%4 }}, {805})) tests/non-free/strnlen2.c:283:[kernel] more than 200(201) locations to update in array. Approximating. -tests/non-free/strnlen2.c:283:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:283: +tests/non-free/strnlen2.c:283:[value] warning: builtin Frama_C_strnlen: possible uninitialized values possibly reading indeterminate data tests/non-free/strnlen2.c:284:[value] Call to builtin Frama_C_strnlen(({{ &t + [-8589934592..8589934588],0%4 }}, {4000001})) tests/non-free/strnlen2.c:284:[kernel] more than 200(1000000) locations to update in array. Approximating. -tests/non-free/strnlen2.c:284:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:284: +tests/non-free/strnlen2.c:284:[value] warning: builtin Frama_C_strnlen: possible uninitialized values possibly reading indeterminate data tests/non-free/strnlen2.c:285:[value] assertion got status valid. @@ -301,18 +282,15 @@ tests/non-free/strnlen2.c:305:[value] assertion got status valid. [value] Called Frama_C_show_each([0..800], [0..804], [0..4000000]) tests/non-free/strnlen2.c:308:[value] Call to builtin Frama_C_strnlen(({{ &u + [-8589934592..8589934588],0%4 }}, {801})) -tests/non-free/strnlen2.c:308:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:308: - possibly reading indeterminate data +tests/non-free/strnlen2.c:308:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:309:[value] Call to builtin Frama_C_strnlen(({{ &r + [-8589934592..8589934588],0%4 }}, {805})) tests/non-free/strnlen2.c:309:[kernel] more than 200(201) locations to update in array. Approximating. -tests/non-free/strnlen2.c:309:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:309: - possibly reading indeterminate data +tests/non-free/strnlen2.c:309:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:310:[value] Call to builtin Frama_C_strnlen(({{ &t + [-8589934592..8589934588],0%4 }}, {4000001})) tests/non-free/strnlen2.c:310:[kernel] more than 200(1000000) locations to update in array. Approximating. -tests/non-free/strnlen2.c:310:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:310: - possibly reading indeterminate data +tests/non-free/strnlen2.c:310:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:311:[value] assertion got status valid. tests/non-free/strnlen2.c:312:[value] assertion got status valid. tests/non-free/strnlen2.c:313:[value] assertion got status valid. @@ -330,8 +308,7 @@ tests/non-free/strnlen2.c:331:[value] assertion got status valid. tests/non-free/strnlen2.c:333:[value] Call to builtin Frama_C_strnlen(({{ &s{[7], [11]} }},{4})) tests/non-free/strnlen2.c:334:[value] assertion got status valid. tests/non-free/strnlen2.c:336:[value] Call to builtin Frama_C_strnlen(({{ &s{[7], [18]} }},{4})) -tests/non-free/strnlen2.c:336:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:336: - possibly reading indeterminate data +tests/non-free/strnlen2.c:336:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:337:[value] assertion got status valid. [value] Recording results for no_zero_but_ok [value] Done for function no_zero_but_ok @@ -397,8 +374,7 @@ tests/non-free/strnlen2.c:406:[value] assertion got status valid. Called from tests/non-free/strnlen2.c:408. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:409:[value] Call to builtin Frama_C_strnlen(({{ &a + [50..70] }},[0..100])) -tests/non-free/strnlen2.c:409:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:409: - possibly reading indeterminate data +tests/non-free/strnlen2.c:409:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:410:[value] assertion got status valid. [value] computing for function Frama_C_interval <- large_n <- main. Called from tests/non-free/strnlen2.c:412. @@ -454,8 +430,7 @@ tests/non-free/strnlen2.c:138:[value] Call to builtin memset(({{ (void *)&a[16] Called from tests/non-free/strnlen2.c:442. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:443:[value] Call to builtin Frama_C_strnlen(({{ &a + [0..9] }},[0..9])) -tests/non-free/strnlen2.c:443:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:443: - possibly reading indeterminate data +tests/non-free/strnlen2.c:443:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:444:[value] assertion got status valid. [value] computing for function Frama_C_interval <- intervals <- main. Called from tests/non-free/strnlen2.c:446. @@ -465,8 +440,7 @@ tests/non-free/strnlen2.c:444:[value] assertion got status valid. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:448:[value] Call to builtin Frama_C_strnlen(({{ &a{[3], [4], [5], [6], [7], [8], [9]} }}, [2..10])) -tests/non-free/strnlen2.c:448:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:448: - possibly reading indeterminate data +tests/non-free/strnlen2.c:448:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:449:[value] assertion got status valid. [value] computing for function Frama_C_interval <- intervals <- main. Called from tests/non-free/strnlen2.c:451. @@ -476,8 +450,7 @@ tests/non-free/strnlen2.c:449:[value] assertion got status valid. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:453:[value] Call to builtin Frama_C_strnlen(({{ &a{[3], [4], [5], [6], [7], [8], [9]} }}, [0..11])) -tests/non-free/strnlen2.c:453:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:453: - possibly reading indeterminate data +tests/non-free/strnlen2.c:453:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:454:[value] assertion got status valid. [value] computing for function Frama_C_interval <- intervals <- main. Called from tests/non-free/strnlen2.c:456. @@ -487,8 +460,7 @@ tests/non-free/strnlen2.c:454:[value] assertion got status valid. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:458:[value] Call to builtin Frama_C_strnlen(({{ &a{[3], [4], [5], [6], [7], [8], [9], [10]} }},[0..9])) -tests/non-free/strnlen2.c:458:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:458: - possibly reading indeterminate data +tests/non-free/strnlen2.c:458:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:459:[value] assertion got status valid. [value] computing for function Frama_C_interval <- intervals <- main. Called from tests/non-free/strnlen2.c:461. @@ -498,8 +470,7 @@ tests/non-free/strnlen2.c:459:[value] assertion got status valid. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:463:[value] Call to builtin Frama_C_strnlen(({{ &a{[3], [4], [5], [6], [7], [8], [9], [10]} }},[0..10])) -tests/non-free/strnlen2.c:463:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:463: - possibly reading indeterminate data +tests/non-free/strnlen2.c:463:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:464:[value] assertion got status valid. [value] computing for function Frama_C_interval <- intervals <- main. Called from tests/non-free/strnlen2.c:466. @@ -509,8 +480,7 @@ tests/non-free/strnlen2.c:464:[value] assertion got status valid. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:468:[value] Call to builtin Frama_C_strnlen(({{ &a{[3], [4], [5], [6], [7], [8], [9], [10]} }},[0..11])) -tests/non-free/strnlen2.c:468:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:468: - possibly reading indeterminate data +tests/non-free/strnlen2.c:468:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:469:[value] assertion got status valid. [value] computing for function Frama_C_interval <- intervals <- main. Called from tests/non-free/strnlen2.c:471. @@ -519,7 +489,7 @@ tests/non-free/strnlen2.c:469:[value] assertion got status valid. Called from tests/non-free/strnlen2.c:472. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:473:[value] Call to builtin Frama_C_strnlen(({{ &a + [3..11] }},[0..9])) -tests/non-free/strnlen2.c:473:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:473: +tests/non-free/strnlen2.c:473:[value] warning: builtin Frama_C_strnlen: possible uninitialized values possibly reading indeterminate data tests/non-free/strnlen2.c:474:[value] assertion got status valid. @@ -530,7 +500,7 @@ tests/non-free/strnlen2.c:474:[value] assertion got status valid. Called from tests/non-free/strnlen2.c:477. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:478:[value] Call to builtin Frama_C_strnlen(({{ &a + [3..11] }},[0..10])) -tests/non-free/strnlen2.c:478:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:478: +tests/non-free/strnlen2.c:478:[value] warning: builtin Frama_C_strnlen: possible uninitialized values possibly reading indeterminate data tests/non-free/strnlen2.c:479:[value] assertion got status valid. @@ -541,7 +511,7 @@ tests/non-free/strnlen2.c:479:[value] assertion got status valid. Called from tests/non-free/strnlen2.c:482. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:483:[value] Call to builtin Frama_C_strnlen(({{ &a + [3..11] }},[0..11])) -tests/non-free/strnlen2.c:483:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:483: +tests/non-free/strnlen2.c:483:[value] warning: builtin Frama_C_strnlen: possible uninitialized values possibly reading indeterminate data tests/non-free/strnlen2.c:484:[value] assertion got status valid. diff --git a/tests/non-free/oracle_apron/Longinit_sequencer.res.oracle b/tests/non-free/oracle_apron/Longinit_sequencer.res.oracle index 4cb50421baaa8294501046d5e46d0a5023770935..0ad94e2f9223c5b3011bfa673a9eb5d10e1af687 100644 --- a/tests/non-free/oracle_apron/Longinit_sequencer.res.oracle +++ b/tests/non-free/oracle_apron/Longinit_sequencer.res.oracle @@ -369,11 +369,11 @@ tests/non-free/long_init2.c:34:[value] Assigning imprecise value to garbled_mix. Called from tests/non-free/long_init2.c:88. [value] Call to builtin Frama_C_load_state(({13},{{ "tea" }})) [value] Skipping call to init_inner, loading globals state from file: - tests/non-free/result/Longinit_sequencer.sav + tests/non-free/result_apron/Longinit_sequencer.sav [value] warning: importing garbled mix, locations may have changed -[value] warning: variable `r (id 594)' is not global, possibly an escaping value; ignoring -[value] warning: variable `r2 (id 597)' is not global, possibly an escaping value; ignoring -[value] warning: variable `r2 (id 597)' is not global, possibly an escaping value; ignoring +[value] warning: variable `r (id 602)' is not global, possibly an escaping value; ignoring +[value] warning: variable `r2 (id 605)' is not global, possibly an escaping value; ignoring +[value] warning: variable `r2 (id 605)' is not global, possibly an escaping value; ignoring [value] warning: found new global variable `another_global' [value] Recording results for init_outer [value] Done for function init_outer @@ -603,7 +603,7 @@ tests/non-free/long_init3.c:34:[value] Assigning imprecise value to garbled_mix. inited ∈ {0} [value] Call to builtin Frama_C_load_state(()) [value] Skipping call to init_outer, loading globals state from file: - tests/non-free/result/Longinit_sequencer.sav + tests/non-free/result_apron/Longinit_sequencer.sav [value] warning: importing garbled mix, locations may have changed [value] warning: found new global variable `yet_another_global' [value] DUMPING STATE of file tests/non-free/long_init3.c line 90 diff --git a/tests/non-free/oracle_apron/alloc.0.res.oracle b/tests/non-free/oracle_apron/alloc.0.res.oracle index 3462232225f0ae282d98a0369ce7cad87aa8e856..6bbe7a5e4762c5fd665dca353134d62460540083 100644 --- a/tests/non-free/oracle_apron/alloc.0.res.oracle +++ b/tests/non-free/oracle_apron/alloc.0.res.oracle @@ -20,8 +20,8 @@ [value] computing for function malloc <- main. Called from tests/non-free/alloc.c:16. share/libc/stdlib.c:39:[value] allocating variable __malloc_malloc_l39 -share/libc/stdlib.h:164:[value] warning: function malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.) -share/libc/stdlib.h:169:[value] warning: function malloc, behavior no_allocation: postcondition got status invalid. (Behavior may be inactive, no reduction performed.) +share/libc/stdlib.h:177:[value] warning: function malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.) +share/libc/stdlib.h:182:[value] warning: function malloc, behavior no_allocation: postcondition got status invalid. (Behavior may be inactive, no reduction performed.) [value] Recording results for malloc [value] Done for function malloc [value] computing for function malloc <- main. diff --git a/tests/non-free/oracle_apron/alloc.1.res.oracle b/tests/non-free/oracle_apron/alloc.1.res.oracle index 225071d1e36343a306615a982abf3901cd41863c..d4e9c812cea8d5ace6f2548c3a280642d4eaf09f 100644 --- a/tests/non-free/oracle_apron/alloc.1.res.oracle +++ b/tests/non-free/oracle_apron/alloc.1.res.oracle @@ -21,8 +21,8 @@ [value] computing for function malloc <- main_abs. Called from tests/non-free/alloc.c:50. share/libc/stdlib.c:39:[value] allocating variable __malloc_malloc_l39 -share/libc/stdlib.h:164:[value] warning: function malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.) -share/libc/stdlib.h:169:[value] warning: function malloc, behavior no_allocation: postcondition got status invalid. (Behavior may be inactive, no reduction performed.) +share/libc/stdlib.h:177:[value] warning: function malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.) +share/libc/stdlib.h:182:[value] warning: function malloc, behavior no_allocation: postcondition got status invalid. (Behavior may be inactive, no reduction performed.) [value] Recording results for malloc [value] Done for function malloc tests/non-free/alloc.c:51:[value] warning: signed overflow. assert -2147483648 ≤ -((int)q); diff --git a/tests/non-free/oracle_apron/allocated.0.res.oracle b/tests/non-free/oracle_apron/allocated.0.res.oracle index 3b9554b452da8b33c99bc7241bbb839fd839bdc6..b48e805626568c78ee2a2fcc8dc7c47593abd968 100644 --- a/tests/non-free/oracle_apron/allocated.0.res.oracle +++ b/tests/non-free/oracle_apron/allocated.0.res.oracle @@ -143,7 +143,7 @@ tests/non-free/allocated.c:123:[value] assertion 'Value,mem_access' got final st \result FROM \nothing [from] ====== END OF DEPENDENCIES ====== [inout] Out (internal) for function main: - __fc_heap_status; i; j; p; tmp; tmp_0; k; tmp_1; size; pb; __retres; + __fc_heap_status; i; j; p; tmp; tmp_3; k; tmp_4; size; pb; __retres; __malloc_main_l25; __malloc_main_l36[0..1]; __malloc_main_l50[0..2]; __malloc_main_l63; __malloc_main_l73; __malloc_w_main_l82[0..2]; __malloc_main_l97[0]; __malloc_main_l114[0..3] diff --git a/tests/non-free/oracle_apron/allocated.1.res.oracle b/tests/non-free/oracle_apron/allocated.1.res.oracle index 8aafe4e383b3b9989d647ec53562186e60091745..53cbaa8819d43a693f717f51eb496decb0b3d485 100644 --- a/tests/non-free/oracle_apron/allocated.1.res.oracle +++ b/tests/non-free/oracle_apron/allocated.1.res.oracle @@ -510,7 +510,7 @@ tests/non-free/allocated.c:123:[value] assertion 'Value,mem_access' got final st \result FROM \nothing [from] ====== END OF DEPENDENCIES ====== [inout] Out (internal) for function main: - __fc_heap_status; i; j; p; tmp; tmp_0; k; tmp_1; size; pb; __retres; + __fc_heap_status; i; j; p; tmp; tmp_3; k; tmp_4; size; pb; __retres; __malloc_main_l25; __malloc_main_l36[0..1]; __malloc_main_l50[0..1]; __malloc_main_l50_0[0..2]; __malloc_main_l63; __malloc_main_l63_0; __malloc_main_l63_1; __malloc_main_l63_2; __malloc_main_l73; diff --git a/tests/non-free/oracle_apron/from_result.res.oracle b/tests/non-free/oracle_apron/from_result.res.oracle index a7d3a58c3a588c08ee08c60fc846e6d16d6d78f9..36a5531a9c1a3ca8b875d25eb3e169cd391a8d74 100644 --- a/tests/non-free/oracle_apron/from_result.res.oracle +++ b/tests/non-free/oracle_apron/from_result.res.oracle @@ -13,8 +13,8 @@ [value] computing for function malloc <- bar <- main. Called from tests/non-free/from_result.c:18. share/libc/stdlib.c:39:[value] allocating variable __malloc_malloc_l39 -share/libc/stdlib.h:164:[value] warning: function malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.) -share/libc/stdlib.h:169:[value] warning: function malloc, behavior no_allocation: postcondition got status invalid. (Behavior may be inactive, no reduction performed.) +share/libc/stdlib.h:177:[value] warning: function malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.) +share/libc/stdlib.h:182:[value] warning: function malloc, behavior no_allocation: postcondition got status invalid. (Behavior may be inactive, no reduction performed.) [value] Recording results for malloc [value] Done for function malloc [value] Recording results for bar diff --git a/tests/non-free/oracle_apron/malloc_individual.res.oracle b/tests/non-free/oracle_apron/malloc_individual.res.oracle index b0d76ac1835da194e921db00a562e74b5c7d7665..b37ac463bb47a462e6f2bb1fb252b05798dd53f5 100644 --- a/tests/non-free/oracle_apron/malloc_individual.res.oracle +++ b/tests/non-free/oracle_apron/malloc_individual.res.oracle @@ -15,8 +15,8 @@ [value] computing for function malloc <- main. Called from tests/non-free/malloc_individual.c:9. share/libc/stdlib.c:39:[value] allocating variable __malloc_malloc_l39 -share/libc/stdlib.h:164:[value] warning: function malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.) -share/libc/stdlib.h:169:[value] warning: function malloc, behavior no_allocation: postcondition got status invalid. (Behavior may be inactive, no reduction performed.) +share/libc/stdlib.h:177:[value] warning: function malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.) +share/libc/stdlib.h:182:[value] warning: function malloc, behavior no_allocation: postcondition got status invalid. (Behavior may be inactive, no reduction performed.) [value] Recording results for malloc [value] Done for function malloc tests/non-free/malloc_individual.c:13:[value] warning: accessing uninitialized left-value. assert \initialized(p); diff --git a/tests/non-free/oracle_apron/memchr.res.oracle b/tests/non-free/oracle_apron/memchr.res.oracle index a0ddf3687981b4b2434afc8c02f12a384ecf4f8e..427a520aa375040739ada2bec8f1bce28cf6a2f7 100644 --- a/tests/non-free/oracle_apron/memchr.res.oracle +++ b/tests/non-free/oracle_apron/memchr.res.oracle @@ -79,16 +79,14 @@ tests/non-free/memchr.c:112:[value] assertion got status valid. [value] computing for function my_memchr <- memchr_zero_termination <- main. Called from tests/non-free/memchr.c:113. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&non_terminated }},{0},{2})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: reading indeterminate data [value] Recording results for my_memchr [value] Done for function my_memchr [value] computing for function my_memchr <- memchr_zero_termination <- main. Called from tests/non-free/memchr.c:119. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&non_terminated2{[2], [3]} }}, {0},{4})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: reading indeterminate data [value] Recording results for my_memchr [value] Done for function my_memchr [value] Recording results for memchr_zero_termination @@ -99,8 +97,7 @@ tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-f Called from tests/non-free/memchr.c:127. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&empty_or_uninitialized }}, {0},{1})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possible uninitialized values +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values [value] Called Frama_C_show_each_mymemchr({0}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -108,15 +105,13 @@ tests/non-free/memchr.c:128:[value] assertion got status valid. [value] computing for function my_memchr <- memchr_initialization <- main. Called from tests/non-free/memchr.c:131. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&uninitialized }},{0},{1})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: reading indeterminate data [value] Recording results for my_memchr [value] Done for function my_memchr [value] computing for function my_memchr <- memchr_initialization <- main. Called from tests/non-free/memchr.c:136. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&s }},{0},{2})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possible uninitialized values +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values [value] Called Frama_C_show_each_mymemchr({1}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -124,8 +119,7 @@ tests/non-free/memchr.c:137:[value] assertion got status valid. [value] computing for function my_memchr <- memchr_initialization <- main. Called from tests/non-free/memchr.c:143. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&t }},{0},{4})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possible uninitialized values +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values [value] Called Frama_C_show_each_mymemchr({3}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -147,9 +141,8 @@ share/libc/__fc_builtin.h:50:[value] function Frama_C_interval: precondition got [value] computing for function my_memchr <- memchr_large <- main. Called from tests/non-free/memchr.c:196. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [3..30] }},{0},{100})) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -164,9 +157,8 @@ tests/non-free/memchr.c:198:[value] warning: assertion 'refined' got status unkn [value] computing for function my_memchr <- memchr_large <- main. Called from tests/non-free/memchr.c:201. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [5..17] }},{0},{100})) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -181,9 +173,8 @@ tests/non-free/memchr.c:203:[value] warning: assertion 'refined' got status unkn [value] computing for function my_memchr <- memchr_large <- main. Called from tests/non-free/memchr.c:206. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [60..74] }},{0},{100})) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -198,9 +189,8 @@ tests/non-free/memchr.c:208:[value] warning: assertion 'refined' got status unkn [value] computing for function my_memchr <- memchr_large <- main. Called from tests/non-free/memchr.c:211. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [63..80] }},{0},{100})) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -220,9 +210,8 @@ tests/non-free/memchr.c:184:[value] Call to builtin memset(({{ (void *)&a }},{0; [value] computing for function my_memchr <- memchr_large <- main. Called from tests/non-free/memchr.c:217. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [50..70] }},{0},{100})) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -251,9 +240,8 @@ tests/non-free/memchr.c:184:[value] Call to builtin memset(({{ (void *)&a[50] }} [value] computing for function my_memchr <- memchr_large_uninit <- main. Called from tests/non-free/memchr.c:232. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [3..30] }},{0},{100})) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -268,9 +256,8 @@ tests/non-free/memchr.c:234:[value] warning: assertion 'refined' got status unkn [value] computing for function my_memchr <- memchr_large_uninit <- main. Called from tests/non-free/memchr.c:238. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [63..80] }},{0},{100})) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -285,9 +272,8 @@ tests/non-free/memchr.c:240:[value] warning: assertion 'refined' got status unkn [value] computing for function my_memchr <- memchr_large_uninit <- main. Called from tests/non-free/memchr.c:243. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [45..55] }},{0},{100})) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -323,8 +309,7 @@ tests/non-free/memchr.c:269:[value] assertion got status valid. Called from tests/non-free/memchr.c:299. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&unterminated_string }}, {0},{13})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: reading indeterminate data [value] Recording results for my_memchr [value] Done for function my_memchr [value] computing for function my_memchr <- memchr_misc <- main. @@ -338,8 +323,7 @@ tests/non-free/memchr.c:303:[value] assertion got status valid. [value] computing for function my_memchr2 <- memchr_misc <- main. Called from tests/non-free/memchr.c:305. tests/non-free/memchr.c:64:[value] Call to builtin Frama_C_memchr(({{ &x + {0; 3} }},{0},{12})) -tests/non-free/memchr.c:64:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:64: - possibly reading indeterminate data +tests/non-free/memchr.c:64:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mymemchr2({0}) [value] Recording results for my_memchr2 [value] Done for function my_memchr2 @@ -347,8 +331,7 @@ tests/non-free/memchr.c:306:[value] assertion got status valid. [value] computing for function my_memchr <- memchr_misc <- main. Called from tests/non-free/memchr.c:308. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&loc_char_array }},{0},{5})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: reading indeterminate data [value] Recording results for my_memchr [value] Done for function my_memchr [value] computing for function my_memchr <- memchr_misc <- main. @@ -441,8 +424,7 @@ tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "mno\000pq [value] computing for function my_memchr <- memchr_misc2 <- main. Called from tests/non-free/memchr.c:341. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&maybe_init }},{0},{2})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possible uninitialized values +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values [value] Called Frama_C_show_each_mymemchr({1}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -452,8 +434,7 @@ tests/non-free/memchr.c:342:[value] assertion got status valid. [value] computing for function memchr_bitfields <- main. Called from tests/non-free/memchr.c:653. tests/non-free/memchr.c:161:[value] Call to builtin Frama_C_memchr(({{ (void const *)&s }},{0},{3})) -tests/non-free/memchr.c:161:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:161: - reading indeterminate data +tests/non-free/memchr.c:161:[value] warning: builtin Frama_C_memchr: reading indeterminate data [value] Recording results for memchr_bitfields [value] Done for function memchr_bitfields [value] computing for function memchr_bitfields2 <- main. @@ -473,8 +454,7 @@ tests/non-free/memchr.c:255:[value] warning: locals {x} escaping the scope of a [value] computing for function my_memchr <- memchr_escaping <- main. Called from tests/non-free/memchr.c:258. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&s }},{0},{4})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possible escaping addresses +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible escaping addresses [value] Called Frama_C_show_each_mymemchr({0}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -496,8 +476,7 @@ tests/non-free/memchr.c:356:[value] warning: out of bounds write. assert \valid( [value] computing for function my_memchr <- memchr_big_array <- main. Called from tests/non-free/memchr.c:364. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&u }},{0},{800})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possible uninitialized values +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values [value] Called Frama_C_show_each_mymemchr({1}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -505,8 +484,7 @@ tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-f Called from tests/non-free/memchr.c:365. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&r }},{0},{805})) tests/non-free/memchr.c:50:[kernel] more than 200(201) locations to update in array. Approximating. -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possible uninitialized values +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values [value] Called Frama_C_show_each_mymemchr({1}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -514,8 +492,7 @@ tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-f Called from tests/non-free/memchr.c:366. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&t }},{0},{4000001})) tests/non-free/memchr.c:50:[kernel] more than 200(1000000) locations to update in array. Approximating. -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possible uninitialized values +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values [value] Called Frama_C_show_each_mymemchr({1}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -526,24 +503,21 @@ tests/non-free/memchr.c:370:[value] assertion got status valid. [value] computing for function my_memchr <- memchr_big_array <- main. Called from tests/non-free/memchr.c:372. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&u }},{0},{1600})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possible uninitialized values +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values [value] Called Frama_C_show_each_mymemchr({1}) [value] Recording results for my_memchr [value] Done for function my_memchr [value] computing for function my_memchr <- memchr_big_array <- main. Called from tests/non-free/memchr.c:373. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&r }},{0},{1608})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possible uninitialized values +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values [value] Called Frama_C_show_each_mymemchr({1}) [value] Recording results for my_memchr [value] Done for function my_memchr [value] computing for function my_memchr <- memchr_big_array <- main. Called from tests/non-free/memchr.c:374. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&t }},{0},{8000000})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possible uninitialized values +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values [value] Called Frama_C_show_each_mymemchr({1}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -586,8 +560,7 @@ tests/non-free/memchr.c:396:[value] assertion got status valid. [value] computing for function my_memchr2 <- memchr_no_zero_but_ok <- main. Called from tests/non-free/memchr.c:397. tests/non-free/memchr.c:64:[value] Call to builtin Frama_C_memchr(({{ (void const *)&s{[7], [18]} }},{0},{5})) -tests/non-free/memchr.c:64:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:64: - possibly reading indeterminate data +tests/non-free/memchr.c:64:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mymemchr2({10; 18; 19}) [value] Recording results for my_memchr2 [value] Done for function my_memchr2 @@ -656,9 +629,8 @@ tests/non-free/memchr.c:184:[value] Call to builtin memset(({{ (void *)&a }},{1; [value] computing for function my_memchr <- memchr_large_n <- main. Called from tests/non-free/memchr.c:443. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [3..30] }},{0},[10..20])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -670,9 +642,8 @@ tests/non-free/memchr.c:445:[value] warning: assertion 'refined' got status unkn [value] computing for function my_memchr <- memchr_large_n <- main. Called from tests/non-free/memchr.c:449. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [3..30] }},{0},[10..20])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -684,9 +655,8 @@ tests/non-free/memchr.c:451:[value] warning: assertion 'refined' got status unkn [value] computing for function my_memchr <- memchr_large_n <- main. Called from tests/non-free/memchr.c:454. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [3..30] }},{0},[10..20])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -701,9 +671,8 @@ tests/non-free/memchr.c:456:[value] warning: assertion 'refined' got status unkn [value] computing for function my_memchr <- memchr_large_n <- main. Called from tests/non-free/memchr.c:459. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [5..17] }},{0},[10..20])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -718,9 +687,8 @@ tests/non-free/memchr.c:461:[value] warning: assertion 'refined' got status unkn [value] computing for function my_memchr <- memchr_large_n <- main. Called from tests/non-free/memchr.c:464. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [60..74] }},{0},[10..20])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -735,9 +703,8 @@ tests/non-free/memchr.c:466:[value] warning: assertion 'refined' got status unkn [value] computing for function my_memchr <- memchr_large_n <- main. Called from tests/non-free/memchr.c:469. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [63..80] }},{0},[10..20])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -757,9 +724,8 @@ tests/non-free/memchr.c:184:[value] Call to builtin memset(({{ (void *)&a }},{0; [value] computing for function my_memchr <- memchr_large_n <- main. Called from tests/non-free/memchr.c:475. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [50..70] }},{0},[10..20])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -773,9 +739,8 @@ tests/non-free/memchr.c:476:[value] assertion got status valid. [value] computing for function my_memchr <- memchr_large_n <- main. Called from tests/non-free/memchr.c:479. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [50..70] }},{0},[0..100])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -792,9 +757,8 @@ tests/non-free/memchr.c:480:[value] assertion got status valid. [value] computing for function my_memchr <- memchr_large_n <- main. Called from tests/non-free/memchr.c:484. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [0..10] }},{0},[0..90])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -865,9 +829,8 @@ tests/non-free/memchr.c:184:[value] Call to builtin memset(({{ (void *)&a[16] }} [value] computing for function my_memchr <- memchr_intervals <- main. Called from tests/non-free/memchr.c:516. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [0..9] }},{0},[0..10])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -886,8 +849,7 @@ tests/non-free/memchr.c:518:[value] warning: assertion 'refined' got status unkn Called from tests/non-free/memchr.c:522. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&a{[3], [4], [5], [6], [7], [8], [9]} }},{0},[2..10])) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possibly reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mymemchr({-1; 7; 8; 9}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -902,8 +864,7 @@ tests/non-free/memchr.c:523:[value] assertion got status valid. Called from tests/non-free/memchr.c:527. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&a{[3], [4], [5], [6], [7], [8], [9]} }},{0},[0..11])) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possibly reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mymemchr({-1; 7; 8; 9}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -919,8 +880,7 @@ tests/non-free/memchr.c:528:[value] assertion got status valid. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&a{[3], [4], [5], [6], [7], [8], [9], [10]} }}, {0},[0..9])) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possibly reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mymemchr({-1; 7; 8; 9}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -936,8 +896,7 @@ tests/non-free/memchr.c:533:[value] assertion got status valid. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&a{[3], [4], [5], [6], [7], [8], [9], [10]} }}, {0},[0..10])) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possibly reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mymemchr({-1; 7; 8; 9}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -953,8 +912,7 @@ tests/non-free/memchr.c:538:[value] assertion got status valid. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&a{[3], [4], [5], [6], [7], [8], [9], [10]} }}, {0},[0..11])) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possibly reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mymemchr({-1; 7; 8; 9}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -968,9 +926,8 @@ tests/non-free/memchr.c:543:[value] assertion got status valid. [value] computing for function my_memchr <- memchr_intervals <- main. Called from tests/non-free/memchr.c:547. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [3..11] }},{0},[0..10])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -987,9 +944,8 @@ tests/non-free/memchr.c:548:[value] assertion got status valid. [value] computing for function my_memchr <- memchr_intervals <- main. Called from tests/non-free/memchr.c:552. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [3..11] }},{0},[0..10])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -1006,9 +962,8 @@ tests/non-free/memchr.c:553:[value] assertion got status valid. [value] computing for function my_memchr <- memchr_intervals <- main. Called from tests/non-free/memchr.c:557. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [3..11] }},{0},[0..11])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -1028,8 +983,7 @@ tests/non-free/memchr.c:558:[value] assertion got status valid. memchr_small_sets_chars <- main. Called from tests/non-free/memchr.c:566. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "abc" + {0; 1} }},{97},{4})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possibly reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mymemchr({0}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -1124,8 +1078,7 @@ tests/non-free/memchr.c:606:[value] assertion got status valid. memchr_small_sets_chars <- main. Called from tests/non-free/memchr.c:566. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "abc" + {0; 1} }},{97; 98},{4})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possibly reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mymemchr({-1; 0; 1}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -1174,8 +1127,7 @@ tests/non-free/memchr.c:617:[value] assertion got status valid. memchr_small_sets_chars <- main. Called from tests/non-free/memchr.c:566. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "abc" + {0; 1} }},{98; 99},{4})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possibly reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mymemchr({-1; 1; 2}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -1229,8 +1181,7 @@ tests/non-free/memchr.c:629:[value] assertion got status valid. memchr_small_sets_chars <- main. Called from tests/non-free/memchr.c:566. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "abc" + {0; 1} }},{0; 98; 99},{4})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possibly reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mymemchr({-1; 1; 2; 3}) [value] Recording results for my_memchr [value] Done for function my_memchr diff --git a/tests/non-free/oracle_apron/str_allocated.res.oracle b/tests/non-free/oracle_apron/str_allocated.res.oracle index 72baddb1c630b1fc7f66d06a87d179617bb60111..e5e44c9184390537d66e1c900a2bfe5efacc08bb 100644 --- a/tests/non-free/oracle_apron/str_allocated.res.oracle +++ b/tests/non-free/oracle_apron/str_allocated.res.oracle @@ -17,8 +17,7 @@ tests/non-free/str_allocated.c:12:[value:malloc] resizing variable `__malloc_w_m tests/non-free/str_allocated.c:14:[value] warning: accessing uninitialized left-value. assert \initialized(&b); tests/non-free/str_allocated.c:14:[value] Call to builtin Frama_C_memchr(({{ (void const *)&__malloc_w_memchr_bug_l12 }}, {1},{1})) -tests/non-free/str_allocated.c:14:[value] warning: built-in Frama_C_memchr: tests/non-free/str_allocated.c:14: - reading indeterminate data +tests/non-free/str_allocated.c:14:[value] warning: builtin Frama_C_memchr: reading indeterminate data [value] Recording results for memchr_bug [value] Done for function memchr_bug [value] Recording results for main diff --git a/tests/non-free/oracle_apron/strchr.res.oracle b/tests/non-free/oracle_apron/strchr.res.oracle index e1b504509de5f35f8c61cea27ae8d39803ef4327..a49bc2418f65a65e8c5c8f72600cc045d15bd1ad 100644 --- a/tests/non-free/oracle_apron/strchr.res.oracle +++ b/tests/non-free/oracle_apron/strchr.res.oracle @@ -53,8 +53,7 @@ tests/non-free/strchr.c:91:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_small_sets <- main. Called from tests/non-free/strchr.c:95. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t[0] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr({0; 1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -66,8 +65,7 @@ tests/non-free/strchr.c:96:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_zero_termination <- main. Called from tests/non-free/strchr.c:104. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &empty_or_non_terminated[0] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr({0}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -75,15 +73,13 @@ tests/non-free/strchr.c:105:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_zero_termination <- main. Called from tests/non-free/strchr.c:109. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &non_terminated[0] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Recording results for my_strchr [value] Done for function my_strchr [value] computing for function my_strchr <- strchr_zero_termination <- main. Called from tests/non-free/strchr.c:115. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &non_terminated2[2] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Recording results for my_strchr [value] Done for function my_strchr [value] Recording results for strchr_zero_termination @@ -93,8 +89,7 @@ tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-f [value] computing for function my_strchr <- strchr_initialization <- main. Called from tests/non-free/strchr.c:123. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &empty_or_uninitialized[0] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possible uninitialized values +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possible uninitialized values [value] Called Frama_C_show_each_mystrchr({0}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -102,15 +97,13 @@ tests/non-free/strchr.c:124:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_initialization <- main. Called from tests/non-free/strchr.c:127. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &uninitialized[0] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Recording results for my_strchr [value] Done for function my_strchr [value] computing for function my_strchr <- strchr_initialization <- main. Called from tests/non-free/strchr.c:132. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &s[0] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possible uninitialized values +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possible uninitialized values [value] Called Frama_C_show_each_mystrchr({1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -118,8 +111,7 @@ tests/non-free/strchr.c:133:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_initialization <- main. Called from tests/non-free/strchr.c:139. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t[0] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possible uninitialized values +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possible uninitialized values [value] Called Frama_C_show_each_mystrchr({3}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -141,9 +133,8 @@ share/libc/__fc_builtin.h:50:[value] function Frama_C_interval: precondition got [value] computing for function my_strchr <- strchr_large <- main. Called from tests/non-free/strchr.c:192. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &a + [3..30] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -157,9 +148,8 @@ tests/non-free/strchr.c:193:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_large <- main. Called from tests/non-free/strchr.c:196. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &a + [5..17] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -174,9 +164,8 @@ tests/non-free/strchr.c:198:[value] warning: assertion 'refined' got status unkn [value] computing for function my_strchr <- strchr_large <- main. Called from tests/non-free/strchr.c:201. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &a + [60..74] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -191,9 +180,8 @@ tests/non-free/strchr.c:203:[value] warning: assertion 'refined' got status unkn [value] computing for function my_strchr <- strchr_large <- main. Called from tests/non-free/strchr.c:206. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &a + [63..80] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -213,9 +201,8 @@ tests/non-free/strchr.c:180:[value] Call to builtin memset(({{ (void *)&a }},{0; [value] computing for function my_strchr <- strchr_large <- main. Called from tests/non-free/strchr.c:212. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &a + [50..70] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -243,9 +230,8 @@ tests/non-free/strchr.c:180:[value] Call to builtin memset(({{ (void *)&a[50] }} [value] computing for function my_strchr <- strchr_large_uninit <- main. Called from tests/non-free/strchr.c:226. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &a + [3..30] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -260,9 +246,8 @@ tests/non-free/strchr.c:228:[value] warning: assertion 'refined' got status unkn [value] computing for function my_strchr <- strchr_large_uninit <- main. Called from tests/non-free/strchr.c:232. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &a + [63..80] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -277,9 +262,8 @@ tests/non-free/strchr.c:234:[value] warning: assertion 'refined' got status unkn [value] computing for function my_strchr <- strchr_large_uninit <- main. Called from tests/non-free/strchr.c:237. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &a + [45..55] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -314,8 +298,7 @@ tests/non-free/strchr.c:263:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_misc <- main. Called from tests/non-free/strchr.c:293. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &unterminated_string[0] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Recording results for my_strchr [value] Done for function my_strchr [value] computing for function my_strchr <- strchr_misc <- main. @@ -329,8 +312,7 @@ tests/non-free/strchr.c:297:[value] assertion got status valid. [value] computing for function my_strchr2 <- strchr_misc <- main. Called from tests/non-free/strchr.c:299. tests/non-free/strchr.c:62:[value] Call to builtin Frama_C_strchr(({{ &x + {0; 3} }},{0})) -tests/non-free/strchr.c:62:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:62: - possibly reading indeterminate data +tests/non-free/strchr.c:62:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr2({0}) [value] Recording results for my_strchr2 [value] Done for function my_strchr2 @@ -338,8 +320,7 @@ tests/non-free/strchr.c:300:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_misc <- main. Called from tests/non-free/strchr.c:302. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &loc_char_array[0] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Recording results for my_strchr [value] Done for function my_strchr [value] computing for function my_strchr <- strchr_misc <- main. @@ -430,8 +411,7 @@ tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "mno\000pq [value] computing for function my_strchr <- strchr_misc2 <- main. Called from tests/non-free/strchr.c:335. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &maybe_init[0] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possible uninitialized values +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possible uninitialized values [value] Called Frama_C_show_each_mystrchr({1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -441,8 +421,7 @@ tests/non-free/strchr.c:336:[value] assertion got status valid. [value] computing for function strchr_bitfields <- main. Called from tests/non-free/strchr.c:540. tests/non-free/strchr.c:157:[value] Call to builtin Frama_C_strchr(({{ (char const *)&s }},{0})) -tests/non-free/strchr.c:157:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:157: - reading indeterminate data +tests/non-free/strchr.c:157:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Recording results for strchr_bitfields [value] Done for function strchr_bitfields [value] computing for function strchr_bitfields2 <- main. @@ -462,8 +441,7 @@ tests/non-free/strchr.c:249:[value] warning: locals {x} escaping the scope of a [value] computing for function my_strchr <- strchr_escaping <- main. Called from tests/non-free/strchr.c:252. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &s[0] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possible escaping addresses +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possible escaping addresses [value] Called Frama_C_show_each_mystrchr({0}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -485,8 +463,7 @@ tests/non-free/strchr.c:350:[value] warning: out of bounds write. assert \valid( [value] computing for function my_strchr <- strchr_big_array <- main. Called from tests/non-free/strchr.c:359. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ (char const *)&u }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possible uninitialized values +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possible uninitialized values [value] Called Frama_C_show_each_mystrchr({1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -494,8 +471,7 @@ tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-f Called from tests/non-free/strchr.c:360. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ (char const *)&r }},{0})) tests/non-free/strchr.c:49:[kernel] more than 200(201) locations to update in array. Approximating. -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possible uninitialized values +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possible uninitialized values [value] Called Frama_C_show_each_mystrchr({1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -503,8 +479,7 @@ tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-f Called from tests/non-free/strchr.c:361. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ (char const *)&t }},{0})) tests/non-free/strchr.c:49:[kernel] more than 200(1000000) locations to update in array. Approximating. -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possible uninitialized values +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possible uninitialized values [value] Called Frama_C_show_each_mystrchr({1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -515,9 +490,8 @@ tests/non-free/strchr.c:365:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_big_array <- main. Called from tests/non-free/strchr.c:367. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &u + [0..4294967295] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -527,9 +501,8 @@ tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-f [value] computing for function my_strchr <- strchr_big_array <- main. Called from tests/non-free/strchr.c:368. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &r + [0..4294967295] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -539,9 +512,8 @@ tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-f [value] computing for function my_strchr <- strchr_big_array <- main. Called from tests/non-free/strchr.c:369. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t + [0..4294967295] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -576,24 +548,21 @@ tests/non-free/strchr.c:386:[value] warning: out of bounds write. assert \valid( [value] computing for function my_strchr <- strchr_big_array <- main. Called from tests/non-free/strchr.c:387. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ (char const *)&u }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr([0..799]) [value] Recording results for my_strchr [value] Done for function my_strchr [value] computing for function my_strchr <- strchr_big_array <- main. Called from tests/non-free/strchr.c:388. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ (char const *)&r }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr([0..803]) [value] Recording results for my_strchr [value] Done for function my_strchr [value] computing for function my_strchr <- strchr_big_array <- main. Called from tests/non-free/strchr.c:389. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ (char const *)&t }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr([0..3999999]) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -604,9 +573,8 @@ tests/non-free/strchr.c:393:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_big_array <- main. Called from tests/non-free/strchr.c:395. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &u + [0..4294967295] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -616,9 +584,8 @@ tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-f [value] computing for function my_strchr <- strchr_big_array <- main. Called from tests/non-free/strchr.c:396. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &r + [0..4294967295] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -628,9 +595,8 @@ tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-f [value] computing for function my_strchr <- strchr_big_array <- main. Called from tests/non-free/strchr.c:397. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t + [0..4294967295] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -672,8 +638,7 @@ tests/non-free/strchr.c:421:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_no_zero_but_ok <- main. Called from tests/non-free/strchr.c:423. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &s{[7], [11]} }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr({10; 14; 15; 16; 17; 18; 19}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -681,8 +646,7 @@ tests/non-free/strchr.c:424:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_no_zero_but_ok <- main. Called from tests/non-free/strchr.c:426. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &s{[7], [18]} }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr({10; 18; 19}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -706,8 +670,7 @@ tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "abc" + {0 strchr_small_sets_chars <- main. Called from tests/non-free/strchr.c:438. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "\000bc" + {0; 1} }},{97})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Called Frama_C_show_each_mystrchr({-1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -715,8 +678,7 @@ tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-f strchr_small_sets_chars <- main. Called from tests/non-free/strchr.c:440. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "" }},{97})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Called Frama_C_show_each_mystrchr({-1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -724,8 +686,7 @@ tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-f strchr_small_sets_chars <- main. Called from tests/non-free/strchr.c:443. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "b\000c" + {0; 2} }},{97})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Called Frama_C_show_each_mystrchr({-1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -733,8 +694,7 @@ tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-f strchr_small_sets_chars <- main. Called from tests/non-free/strchr.c:447. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t[0] }},{97})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr({0; 1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -767,8 +727,7 @@ tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "\000bc" + strchr_small_sets_chars <- main. Called from tests/non-free/strchr.c:440. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "" }},{98})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Called Frama_C_show_each_mystrchr({-1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -783,8 +742,7 @@ tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "b\000c" + strchr_small_sets_chars <- main. Called from tests/non-free/strchr.c:447. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t[0] }},{98})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr({0; 1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -818,8 +776,7 @@ tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "\000bc" + strchr_small_sets_chars <- main. Called from tests/non-free/strchr.c:440. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "" }},{97; 98})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Called Frama_C_show_each_mystrchr({-1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -834,8 +791,7 @@ tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "b\000c" + strchr_small_sets_chars <- main. Called from tests/non-free/strchr.c:447. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t[0] }},{97; 98})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr({0; 1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -869,8 +825,7 @@ tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "\000bc" + strchr_small_sets_chars <- main. Called from tests/non-free/strchr.c:440. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "" }},{98; 99})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Called Frama_C_show_each_mystrchr({-1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -885,8 +840,7 @@ tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "b\000c" + strchr_small_sets_chars <- main. Called from tests/non-free/strchr.c:447. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t[0] }},{98; 99})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr({0; 1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -935,8 +889,7 @@ tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "b\000c" + strchr_small_sets_chars <- main. Called from tests/non-free/strchr.c:447. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t[0] }},{0; 98; 99})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr({-1; 0; 1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -968,8 +921,7 @@ tests/non-free/strchr.c:512:[value] assertion got status valid. Called from tests/non-free/strchr.c:516. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t[0] ; "ABCDEFGHIJKLMNOPQRSTUVWXYZ" }}, [-128..127])) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Called Frama_C_show_each_mystrchr([-1..26]) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -983,8 +935,7 @@ tests/non-free/strchr.c:180:[value] Call to builtin memset(({{ (void *)&t }},{0; Called from tests/non-free/strchr.c:519. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t[0] ; "ABCDEFGHIJKLMNOPQRSTUVWXYZ" }}, [-128..127])) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr([-1..29]) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -994,14 +945,8 @@ tests/non-free/strchr.c:520:[value] assertion got status valid. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t + [0..4294967295] ; "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + [0..4294967295] }},[-128..127])) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possible uninitialized values - possible escaping addresses - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -1018,7 +963,7 @@ tests/non-free/strchr.c:522:[value] assertion got status valid. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ garbled mix of &{s; "hello"} (origin: Arithmetic {tests/non-free/strchr.c:49}) }},{1})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: string argument is too imprecise, cannot compute a useful result. [value] Called Frama_C_show_each_mystrchr({-1}) [value] Recording results for my_strchr diff --git a/tests/non-free/oracle_apron/strlen.res.oracle b/tests/non-free/oracle_apron/strlen.res.oracle index ec734ef545879094fed9bf142a447a25b8ceb433..a5f44175539bd1d22c10dbb76a8664ee3b74badc 100644 --- a/tests/non-free/oracle_apron/strlen.res.oracle +++ b/tests/non-free/oracle_apron/strlen.res.oracle @@ -43,23 +43,19 @@ tests/non-free/strlen.c:71:[value] assertion got status valid. tests/non-free/strlen.c:75:[value] Call to builtin Frama_C_strlen(({{ "b\000c" + {0; 2} }})) tests/non-free/strlen.c:76:[value] assertion got status valid. tests/non-free/strlen.c:81:[value] Call to builtin Frama_C_strlen(({{ &t[0] }})) -tests/non-free/strlen.c:81:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:81: - possibly reading indeterminate data +tests/non-free/strlen.c:81:[value] warning: builtin Frama_C_strlen: possibly reading indeterminate data tests/non-free/strlen.c:82:[value] assertion got status valid. [value] Recording results for small_sets [value] Done for function small_sets [value] computing for function zero_termination <- main. Called from tests/non-free/strlen.c:310. tests/non-free/strlen.c:89:[value] Call to builtin Frama_C_strlen(({{ &empty_or_non_terminated[0] }})) -tests/non-free/strlen.c:89:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:89: - possibly reading indeterminate data +tests/non-free/strlen.c:89:[value] warning: builtin Frama_C_strlen: possibly reading indeterminate data tests/non-free/strlen.c:90:[value] assertion got status valid. tests/non-free/strlen.c:93:[value] Call to builtin Frama_C_strlen(({{ &non_terminated[0] }})) -tests/non-free/strlen.c:93:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:93: - reading indeterminate data +tests/non-free/strlen.c:93:[value] warning: builtin Frama_C_strlen: reading indeterminate data tests/non-free/strlen.c:97:[value] Call to builtin Frama_C_strlen(({{ &non_terminated2{[2], [3]} }})) -tests/non-free/strlen.c:97:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:97: - reading indeterminate data +tests/non-free/strlen.c:97:[value] warning: builtin Frama_C_strlen: reading indeterminate data [value] Recording results for zero_termination [value] Done for function zero_termination [value] computing for function strlen_initialization <- main. @@ -67,31 +63,27 @@ tests/non-free/strlen.c:97:[value] warning: built-in Frama_C_strlen: tests/non-f [value] computing for function my_strlen <- strlen_initialization <- main. Called from tests/non-free/strlen.c:105. tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &empty_or_uninitialized[0] }})) -tests/non-free/strlen.c:54:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:54: - possible uninitialized values +tests/non-free/strlen.c:54:[value] warning: builtin Frama_C_strlen: possible uninitialized values [value] Recording results for my_strlen [value] Done for function my_strlen tests/non-free/strlen.c:106:[value] assertion got status valid. [value] computing for function my_strlen <- strlen_initialization <- main. Called from tests/non-free/strlen.c:109. tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &uninitialized[0] }})) -tests/non-free/strlen.c:54:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:54: - reading indeterminate data +tests/non-free/strlen.c:54:[value] warning: builtin Frama_C_strlen: reading indeterminate data [value] Recording results for my_strlen [value] Done for function my_strlen [value] computing for function my_strlen <- strlen_initialization <- main. Called from tests/non-free/strlen.c:116. tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &s[0] }})) -tests/non-free/strlen.c:54:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:54: - possible uninitialized values +tests/non-free/strlen.c:54:[value] warning: builtin Frama_C_strlen: possible uninitialized values [value] Recording results for my_strlen [value] Done for function my_strlen tests/non-free/strlen.c:117:[value] assertion got status valid. [value] computing for function my_strlen <- strlen_initialization <- main. Called from tests/non-free/strlen.c:124. tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &t[0] }})) -tests/non-free/strlen.c:54:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:54: - possible uninitialized values +tests/non-free/strlen.c:54:[value] warning: builtin Frama_C_strlen: possible uninitialized values [value] Recording results for my_strlen [value] Done for function my_strlen tests/non-free/strlen.c:125:[value] assertion got status valid. @@ -139,8 +131,7 @@ tests/non-free/strlen.c:181:[value] assertion got status valid. [value] computing for function my_strlen <- strlen_large <- main. Called from tests/non-free/strlen.c:184. tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &a + [63..80] }})) -tests/non-free/strlen.c:54:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:54: - possibly reading indeterminate data +tests/non-free/strlen.c:54:[value] warning: builtin Frama_C_strlen: possibly reading indeterminate data [value] Recording results for my_strlen [value] Done for function my_strlen tests/non-free/strlen.c:185:[value] assertion got status valid. @@ -155,8 +146,7 @@ tests/non-free/strlen.c:161:[value] Call to builtin memset(({{ (void *)&a }},{0; [value] computing for function my_strlen <- strlen_large <- main. Called from tests/non-free/strlen.c:189. tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &a + [50..70] }})) -tests/non-free/strlen.c:54:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:54: - possibly reading indeterminate data +tests/non-free/strlen.c:54:[value] warning: builtin Frama_C_strlen: possibly reading indeterminate data [value] Recording results for my_strlen [value] Done for function my_strlen tests/non-free/strlen.c:190:[value] assertion got status valid. @@ -180,8 +170,7 @@ tests/non-free/strlen.c:161:[value] Call to builtin memset(({{ (void *)&a[50] }} [value] computing for function my_strlen <- strlen_large_uninit <- main. Called from tests/non-free/strlen.c:203. tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &a + [3..30] }})) -tests/non-free/strlen.c:54:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:54: - possibly reading indeterminate data +tests/non-free/strlen.c:54:[value] warning: builtin Frama_C_strlen: possibly reading indeterminate data [value] Recording results for my_strlen [value] Done for function my_strlen tests/non-free/strlen.c:204:[value] assertion got status valid. @@ -191,8 +180,7 @@ tests/non-free/strlen.c:204:[value] assertion got status valid. [value] computing for function my_strlen <- strlen_large_uninit <- main. Called from tests/non-free/strlen.c:208. tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &a + [63..80] }})) -tests/non-free/strlen.c:54:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:54: - possibly reading indeterminate data +tests/non-free/strlen.c:54:[value] warning: builtin Frama_C_strlen: possibly reading indeterminate data [value] Recording results for my_strlen [value] Done for function my_strlen tests/non-free/strlen.c:209:[value] assertion got status valid. @@ -202,7 +190,7 @@ tests/non-free/strlen.c:209:[value] assertion got status valid. [value] computing for function my_strlen <- strlen_large_uninit <- main. Called from tests/non-free/strlen.c:212. tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &a + [45..55] }})) -tests/non-free/strlen.c:54:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:54: +tests/non-free/strlen.c:54:[value] warning: builtin Frama_C_strlen: possible uninitialized values possibly reading indeterminate data [value] Recording results for my_strlen @@ -213,13 +201,11 @@ tests/non-free/strlen.c:213:[value] assertion got status valid. [value] computing for function misc <- main. Called from tests/non-free/strlen.c:314. tests/non-free/strlen.c:241:[value] Call to builtin Frama_C_strlen(({{ &unterminated_string[0] }})) -tests/non-free/strlen.c:241:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:241: - reading indeterminate data +tests/non-free/strlen.c:241:[value] warning: builtin Frama_C_strlen: reading indeterminate data tests/non-free/strlen.c:244:[value] Call to builtin Frama_C_strlen(({{ "Hello World\n" ; "Bonjour Monde\n" }})) tests/non-free/strlen.c:245:[value] assertion got status valid. tests/non-free/strlen.c:248:[value] Call to builtin Frama_C_strlen(({{ &x + {0; 3} }})) -tests/non-free/strlen.c:248:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:248: - possibly reading indeterminate data +tests/non-free/strlen.c:248:[value] warning: builtin Frama_C_strlen: possibly reading indeterminate data tests/non-free/strlen.c:249:[value] assertion got status valid. [value] computing for function Frama_C_interval <- misc <- main. Called from tests/non-free/strlen.c:250. @@ -230,8 +216,7 @@ tests/non-free/strlen.c:252:[value] Call to builtin Frama_C_strlen(({{ "" ; "a" "aaaaaaaaaaaa" ; "aaaaaaaaaaaaa" }})) tests/non-free/strlen.c:253:[value] assertion got status valid. tests/non-free/strlen.c:255:[value] Call to builtin Frama_C_strlen(({{ &loc_char_array[0] }})) -tests/non-free/strlen.c:255:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:255: - reading indeterminate data +tests/non-free/strlen.c:255:[value] warning: builtin Frama_C_strlen: reading indeterminate data tests/non-free/strlen.c:256:[value] Call to builtin Frama_C_strlen(({{ "abc\000\000\000abc" }})) tests/non-free/strlen.c:257:[value] assertion got status valid. tests/non-free/strlen.c:260:[value] Call to builtin Frama_C_strlen(({{ "abc" + {0; 1} ; "ABCD" + {0; 1} }})) @@ -250,16 +235,14 @@ tests/non-free/strlen.c:270:[value] Call to builtin Frama_C_strlen(({{ "mno\000p tests/non-free/strlen.c:270:[value] Call to builtin Frama_C_strlen(({{ "mno\000pqr" + {0; 1; 2; 3; 4; 5; 6; 7} ; "MNOP\000QRS" + {0; 1; 2; 3; 4; 5; 6; 7} }})) tests/non-free/strlen.c:277:[value] Call to builtin Frama_C_strlen(({{ &maybe_init[0] }})) -tests/non-free/strlen.c:277:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:277: - possible uninitialized values +tests/non-free/strlen.c:277:[value] warning: builtin Frama_C_strlen: possible uninitialized values tests/non-free/strlen.c:278:[value] assertion got status valid. [value] Recording results for misc [value] Done for function misc [value] computing for function bitfields <- main. Called from tests/non-free/strlen.c:315. tests/non-free/strlen.c:140:[value] Call to builtin Frama_C_strlen(({{ (char const *)&s }})) -tests/non-free/strlen.c:140:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:140: - reading indeterminate data +tests/non-free/strlen.c:140:[value] warning: builtin Frama_C_strlen: reading indeterminate data [value] Recording results for bitfields [value] Done for function bitfields [value] computing for function bitfields2 <- main. @@ -272,8 +255,7 @@ tests/non-free/strlen.c:156:[value] assertion got status valid. Called from tests/non-free/strlen.c:317. tests/non-free/strlen.c:222:[value] warning: locals {x} escaping the scope of a block of escaping through s tests/non-free/strlen.c:225:[value] Call to builtin Frama_C_strlen(({{ &s[0] }})) -tests/non-free/strlen.c:225:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:225: - possible escaping addresses +tests/non-free/strlen.c:225:[value] warning: builtin Frama_C_strlen: possible escaping addresses tests/non-free/strlen.c:226:[value] assertion got status valid. tests/non-free/strlen.c:228:[value] Call to builtin Frama_C_strlen(({{ &s[0] }})) tests/non-free/strlen.c:229:[value] assertion got status valid. @@ -285,29 +267,26 @@ tests/non-free/strlen.c:287:[value] warning: out of bounds write. assert \valid( tests/non-free/strlen.c:289:[value] warning: out of bounds write. assert \valid(p); tests/non-free/strlen.c:291:[value] warning: out of bounds write. assert \valid(p); tests/non-free/strlen.c:297:[value] Call to builtin Frama_C_strlen(({{ (char const *)&u }})) -tests/non-free/strlen.c:297:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:297: - possible uninitialized values +tests/non-free/strlen.c:297:[value] warning: builtin Frama_C_strlen: possible uninitialized values tests/non-free/strlen.c:298:[value] Call to builtin Frama_C_strlen(({{ (char const *)&r }})) tests/non-free/strlen.c:298:[kernel] more than 200(201) locations to update in array. Approximating. -tests/non-free/strlen.c:298:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:298: - possible uninitialized values +tests/non-free/strlen.c:298:[value] warning: builtin Frama_C_strlen: possible uninitialized values tests/non-free/strlen.c:299:[value] Call to builtin Frama_C_strlen(({{ (char const *)&t }})) tests/non-free/strlen.c:299:[kernel] more than 200(1000000) locations to update in array. Approximating. -tests/non-free/strlen.c:299:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:299: - possible uninitialized values +tests/non-free/strlen.c:299:[value] warning: builtin Frama_C_strlen: possible uninitialized values [value] Called Frama_C_show_each({1}, {1}, {1}) tests/non-free/strlen.c:302:[value] Call to builtin Frama_C_strlen(({{ &u + [-8589934592..8589934588],0%4 }})) -tests/non-free/strlen.c:302:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:302: +tests/non-free/strlen.c:302:[value] warning: builtin Frama_C_strlen: possible uninitialized values possibly reading indeterminate data tests/non-free/strlen.c:303:[value] Call to builtin Frama_C_strlen(({{ &r + [-8589934592..8589934588],0%4 }})) tests/non-free/strlen.c:303:[kernel] more than 200(201) locations to update in array. Approximating. -tests/non-free/strlen.c:303:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:303: +tests/non-free/strlen.c:303:[value] warning: builtin Frama_C_strlen: possible uninitialized values possibly reading indeterminate data tests/non-free/strlen.c:304:[value] Call to builtin Frama_C_strlen(({{ &t + [-8589934592..8589934588],0%4 }})) tests/non-free/strlen.c:304:[kernel] more than 200(1000000) locations to update in array. Approximating. -tests/non-free/strlen.c:304:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:304: +tests/non-free/strlen.c:304:[value] warning: builtin Frama_C_strlen: possible uninitialized values possibly reading indeterminate data [value] Called Frama_C_show_each({0; 1; 2; 3}, [0..800], [0..3999996]) diff --git a/tests/non-free/oracle_apron/strnlen.res.oracle b/tests/non-free/oracle_apron/strnlen.res.oracle index b32e96527ac203942bf3ed5e3864cf589dcc57e3..6e97c953b59e769c14d09db22dafc451c33d9080 100644 --- a/tests/non-free/oracle_apron/strnlen.res.oracle +++ b/tests/non-free/oracle_apron/strnlen.res.oracle @@ -18,8 +18,7 @@ tests/non-free/strnlen.i:9:[value] Call to builtin Frama_C_strnlen(({{ &t1[0] }},{3})) tests/non-free/strnlen.i:10:[value] Call to builtin Frama_C_strnlen(({{ &t1[0] }},{5})) tests/non-free/strnlen.i:11:[value] Call to builtin Frama_C_strnlen(({{ &t1[0] }},{6})) -tests/non-free/strnlen.i:11:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen.i:11: - reading indeterminate data +tests/non-free/strnlen.i:11:[value] warning: builtin Frama_C_strnlen: reading indeterminate data tests/non-free/strnlen.i:13:[value] Call to builtin Frama_C_strnlen(({{ &t2[0] }},{3})) tests/non-free/strnlen.i:14:[value] Call to builtin Frama_C_strnlen(({{ &t2[0] }},{5})) tests/non-free/strnlen.i:15:[value] Call to builtin Frama_C_strnlen(({{ &t2[0] }},{6})) diff --git a/tests/non-free/oracle_apron/strnlen2.res.oracle b/tests/non-free/oracle_apron/strnlen2.res.oracle index 170241239c5d918dd9e75fa0d7fc58ff5a8587b9..993520f015fecb444381bb243fc708439e9df702 100644 --- a/tests/non-free/oracle_apron/strnlen2.res.oracle +++ b/tests/non-free/oracle_apron/strnlen2.res.oracle @@ -51,29 +51,23 @@ tests/non-free/strnlen2.c:62:[value] assertion got status valid. tests/non-free/strnlen2.c:68:[value] Call to builtin Frama_C_strnlen(({{ &empty_or_non_terminated[0] }},{1})) tests/non-free/strnlen2.c:69:[value] assertion got status valid. tests/non-free/strnlen2.c:73:[value] Call to builtin Frama_C_strnlen(({{ &non_terminated[0] }},{2})) -tests/non-free/strnlen2.c:73:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:73: - reading indeterminate data +tests/non-free/strnlen2.c:73:[value] warning: builtin Frama_C_strnlen: reading indeterminate data tests/non-free/strnlen2.c:79:[value] Call to builtin Frama_C_strnlen(({{ &non_terminated2{[2], [3]} }},{4})) -tests/non-free/strnlen2.c:79:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:79: - reading indeterminate data +tests/non-free/strnlen2.c:79:[value] warning: builtin Frama_C_strnlen: reading indeterminate data [value] Recording results for zero_termination [value] Done for function zero_termination [value] computing for function initialization <- main. Called from tests/non-free/strnlen2.c:491. tests/non-free/strnlen2.c:85:[value] Call to builtin Frama_C_strnlen(({{ &empty_or_uninitialized[0] }},{1})) -tests/non-free/strnlen2.c:85:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:85: - possible uninitialized values +tests/non-free/strnlen2.c:85:[value] warning: builtin Frama_C_strnlen: possible uninitialized values tests/non-free/strnlen2.c:86:[value] assertion got status valid. tests/non-free/strnlen2.c:89:[value] Call to builtin Frama_C_strnlen(({{ &uninitialized[0] }},{1})) -tests/non-free/strnlen2.c:89:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:89: - reading indeterminate data +tests/non-free/strnlen2.c:89:[value] warning: builtin Frama_C_strnlen: reading indeterminate data tests/non-free/strnlen2.c:94:[value] Call to builtin Frama_C_strnlen(({{ &s[0] }},{2})) -tests/non-free/strnlen2.c:94:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:94: - possible uninitialized values +tests/non-free/strnlen2.c:94:[value] warning: builtin Frama_C_strnlen: possible uninitialized values tests/non-free/strnlen2.c:95:[value] assertion got status valid. tests/non-free/strnlen2.c:101:[value] Call to builtin Frama_C_strnlen(({{ &t[0] }},{4})) -tests/non-free/strnlen2.c:101:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:101: - possible uninitialized values +tests/non-free/strnlen2.c:101:[value] warning: builtin Frama_C_strnlen: possible uninitialized values tests/non-free/strnlen2.c:102:[value] assertion got status valid. [value] Recording results for initialization [value] Done for function initialization @@ -105,8 +99,7 @@ tests/non-free/strnlen2.c:157:[value] assertion got status valid. Called from tests/non-free/strnlen2.c:159. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:160:[value] Call to builtin Frama_C_strnlen(({{ &a + [63..80] }},{100})) -tests/non-free/strnlen2.c:160:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:160: - possibly reading indeterminate data +tests/non-free/strnlen2.c:160:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:161:[value] assertion got status valid. [value] computing for function init_array_nondet <- large <- main. Called from tests/non-free/strnlen2.c:163. @@ -117,8 +110,7 @@ tests/non-free/strnlen2.c:138:[value] Call to builtin memset(({{ (void *)&a }},{ Called from tests/non-free/strnlen2.c:164. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:165:[value] Call to builtin Frama_C_strnlen(({{ &a + [50..70] }},{100})) -tests/non-free/strnlen2.c:165:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:165: - possibly reading indeterminate data +tests/non-free/strnlen2.c:165:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:166:[value] assertion got status valid. [value] Recording results for large [value] Done for function large @@ -138,21 +130,19 @@ tests/non-free/strnlen2.c:138:[value] Call to builtin memset(({{ (void *)&a[50] Called from tests/non-free/strnlen2.c:176. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:177:[value] Call to builtin Frama_C_strnlen(({{ &a + [3..30] }},{100})) -tests/non-free/strnlen2.c:177:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:177: - possibly reading indeterminate data +tests/non-free/strnlen2.c:177:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:178:[value] assertion got status valid. [value] computing for function Frama_C_interval <- large_uninit <- main. Called from tests/non-free/strnlen2.c:181. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:182:[value] Call to builtin Frama_C_strnlen(({{ &a + [63..80] }},{100})) -tests/non-free/strnlen2.c:182:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:182: - possibly reading indeterminate data +tests/non-free/strnlen2.c:182:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:183:[value] assertion got status valid. [value] computing for function Frama_C_interval <- large_uninit <- main. Called from tests/non-free/strnlen2.c:185. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:186:[value] Call to builtin Frama_C_strnlen(({{ &a + [45..55] }},{100})) -tests/non-free/strnlen2.c:186:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:186: +tests/non-free/strnlen2.c:186:[value] warning: builtin Frama_C_strnlen: possible uninitialized values possibly reading indeterminate data tests/non-free/strnlen2.c:187:[value] assertion got status valid. @@ -161,14 +151,12 @@ tests/non-free/strnlen2.c:187:[value] assertion got status valid. [value] computing for function misc <- main. Called from tests/non-free/strnlen2.c:494. tests/non-free/strnlen2.c:215:[value] Call to builtin Frama_C_strnlen(({{ &unterminated_string[0] }},{13})) -tests/non-free/strnlen2.c:215:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:215: - reading indeterminate data +tests/non-free/strnlen2.c:215:[value] warning: builtin Frama_C_strnlen: reading indeterminate data tests/non-free/strnlen2.c:218:[value] Call to builtin Frama_C_strnlen(({{ "Hello World\n" ; "Bonjour Monde\n" }}, {14})) tests/non-free/strnlen2.c:219:[value] assertion got status valid. tests/non-free/strnlen2.c:222:[value] Call to builtin Frama_C_strnlen(({{ &x + {0; 3} }},{12})) -tests/non-free/strnlen2.c:222:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:222: - possibly reading indeterminate data +tests/non-free/strnlen2.c:222:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:223:[value] assertion got status valid. [value] computing for function Frama_C_interval <- misc <- main. Called from tests/non-free/strnlen2.c:224. @@ -180,8 +168,7 @@ tests/non-free/strnlen2.c:226:[value] Call to builtin Frama_C_strnlen(({{ "" ; " {13})) tests/non-free/strnlen2.c:227:[value] assertion got status valid. tests/non-free/strnlen2.c:229:[value] Call to builtin Frama_C_strnlen(({{ &loc_char_array[0] }},{5})) -tests/non-free/strnlen2.c:229:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:229: - reading indeterminate data +tests/non-free/strnlen2.c:229:[value] warning: builtin Frama_C_strnlen: reading indeterminate data tests/non-free/strnlen2.c:230:[value] Call to builtin Frama_C_strnlen(({{ "abc\000\000\000abc" }},{9})) tests/non-free/strnlen2.c:231:[value] assertion got status valid. tests/non-free/strnlen2.c:234:[value] Call to builtin Frama_C_strnlen(({{ "abc" + {0; 1} ; "ABCD" + {0; 1} }},{5})) @@ -202,16 +189,14 @@ tests/non-free/strnlen2.c:244:[value] Call to builtin Frama_C_strnlen(({{ "mno\0 "MNOP\000QRS" + {0; 1; 2; 3; 4; 5; 6; 7} }}, {10})) tests/non-free/strnlen2.c:251:[value] Call to builtin Frama_C_strnlen(({{ &maybe_init[0] }},{2})) -tests/non-free/strnlen2.c:251:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:251: - possible uninitialized values +tests/non-free/strnlen2.c:251:[value] warning: builtin Frama_C_strnlen: possible uninitialized values tests/non-free/strnlen2.c:252:[value] assertion got status valid. [value] Recording results for misc [value] Done for function misc [value] computing for function bitfields <- main. Called from tests/non-free/strnlen2.c:495. tests/non-free/strnlen2.c:117:[value] Call to builtin Frama_C_strnlen(({{ (char const *)&s }},{3})) -tests/non-free/strnlen2.c:117:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:117: - reading indeterminate data +tests/non-free/strnlen2.c:117:[value] warning: builtin Frama_C_strnlen: reading indeterminate data [value] Recording results for bitfields [value] Done for function bitfields [value] computing for function bitfields2 <- main. @@ -224,8 +209,7 @@ tests/non-free/strnlen2.c:133:[value] assertion got status valid. Called from tests/non-free/strnlen2.c:497. tests/non-free/strnlen2.c:196:[value] warning: locals {x} escaping the scope of a block of escaping through s tests/non-free/strnlen2.c:199:[value] Call to builtin Frama_C_strnlen(({{ &s[0] }},{4})) -tests/non-free/strnlen2.c:199:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:199: - possible escaping addresses +tests/non-free/strnlen2.c:199:[value] warning: builtin Frama_C_strnlen: possible escaping addresses tests/non-free/strnlen2.c:200:[value] assertion got status valid. tests/non-free/strnlen2.c:202:[value] Call to builtin Frama_C_strnlen(({{ &s[0] }},{4})) tests/non-free/strnlen2.c:203:[value] assertion got status valid. @@ -237,35 +221,32 @@ tests/non-free/strnlen2.c:261:[value] warning: out of bounds write. assert \vali tests/non-free/strnlen2.c:263:[value] warning: out of bounds write. assert \valid(p); tests/non-free/strnlen2.c:265:[value] warning: out of bounds write. assert \valid(p); tests/non-free/strnlen2.c:272:[value] Call to builtin Frama_C_strnlen(({{ (char const *)&u }},{800})) -tests/non-free/strnlen2.c:272:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:272: - possible uninitialized values +tests/non-free/strnlen2.c:272:[value] warning: builtin Frama_C_strnlen: possible uninitialized values tests/non-free/strnlen2.c:273:[value] Call to builtin Frama_C_strnlen(({{ (char const *)&r }},{804})) tests/non-free/strnlen2.c:273:[kernel] more than 200(201) locations to update in array. Approximating. -tests/non-free/strnlen2.c:273:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:273: - possible uninitialized values +tests/non-free/strnlen2.c:273:[value] warning: builtin Frama_C_strnlen: possible uninitialized values tests/non-free/strnlen2.c:274:[value] Call to builtin Frama_C_strnlen(({{ (char const *)&t }},{4000000})) tests/non-free/strnlen2.c:274:[kernel] more than 200(1000000) locations to update in array. Approximating. -tests/non-free/strnlen2.c:274:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:274: - possible uninitialized values +tests/non-free/strnlen2.c:274:[value] warning: builtin Frama_C_strnlen: possible uninitialized values tests/non-free/strnlen2.c:275:[value] assertion got status valid. tests/non-free/strnlen2.c:276:[value] assertion got status valid. tests/non-free/strnlen2.c:277:[value] assertion got status valid. [value] Called Frama_C_show_each({1}, {1}, {1}) tests/non-free/strnlen2.c:282:[value] Call to builtin Frama_C_strnlen(({{ &u + [-8589934592..8589934588],0%4 }}, {801})) -tests/non-free/strnlen2.c:282:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:282: +tests/non-free/strnlen2.c:282:[value] warning: builtin Frama_C_strnlen: possible uninitialized values possibly reading indeterminate data tests/non-free/strnlen2.c:283:[value] Call to builtin Frama_C_strnlen(({{ &r + [-8589934592..8589934588],0%4 }}, {805})) tests/non-free/strnlen2.c:283:[kernel] more than 200(201) locations to update in array. Approximating. -tests/non-free/strnlen2.c:283:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:283: +tests/non-free/strnlen2.c:283:[value] warning: builtin Frama_C_strnlen: possible uninitialized values possibly reading indeterminate data tests/non-free/strnlen2.c:284:[value] Call to builtin Frama_C_strnlen(({{ &t + [-8589934592..8589934588],0%4 }}, {4000001})) tests/non-free/strnlen2.c:284:[kernel] more than 200(1000000) locations to update in array. Approximating. -tests/non-free/strnlen2.c:284:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:284: +tests/non-free/strnlen2.c:284:[value] warning: builtin Frama_C_strnlen: possible uninitialized values possibly reading indeterminate data tests/non-free/strnlen2.c:285:[value] assertion got status valid. @@ -301,18 +282,15 @@ tests/non-free/strnlen2.c:305:[value] assertion got status valid. [value] Called Frama_C_show_each([0..800], [0..804], [0..4000000]) tests/non-free/strnlen2.c:308:[value] Call to builtin Frama_C_strnlen(({{ &u + [-8589934592..8589934588],0%4 }}, {801})) -tests/non-free/strnlen2.c:308:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:308: - possibly reading indeterminate data +tests/non-free/strnlen2.c:308:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:309:[value] Call to builtin Frama_C_strnlen(({{ &r + [-8589934592..8589934588],0%4 }}, {805})) tests/non-free/strnlen2.c:309:[kernel] more than 200(201) locations to update in array. Approximating. -tests/non-free/strnlen2.c:309:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:309: - possibly reading indeterminate data +tests/non-free/strnlen2.c:309:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:310:[value] Call to builtin Frama_C_strnlen(({{ &t + [-8589934592..8589934588],0%4 }}, {4000001})) tests/non-free/strnlen2.c:310:[kernel] more than 200(1000000) locations to update in array. Approximating. -tests/non-free/strnlen2.c:310:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:310: - possibly reading indeterminate data +tests/non-free/strnlen2.c:310:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:311:[value] assertion got status valid. tests/non-free/strnlen2.c:312:[value] assertion got status valid. tests/non-free/strnlen2.c:313:[value] assertion got status valid. @@ -330,8 +308,7 @@ tests/non-free/strnlen2.c:331:[value] assertion got status valid. tests/non-free/strnlen2.c:333:[value] Call to builtin Frama_C_strnlen(({{ &s{[7], [11]} }},{4})) tests/non-free/strnlen2.c:334:[value] assertion got status valid. tests/non-free/strnlen2.c:336:[value] Call to builtin Frama_C_strnlen(({{ &s{[7], [18]} }},{4})) -tests/non-free/strnlen2.c:336:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:336: - possibly reading indeterminate data +tests/non-free/strnlen2.c:336:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:337:[value] assertion got status valid. [value] Recording results for no_zero_but_ok [value] Done for function no_zero_but_ok @@ -397,8 +374,7 @@ tests/non-free/strnlen2.c:406:[value] assertion got status valid. Called from tests/non-free/strnlen2.c:408. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:409:[value] Call to builtin Frama_C_strnlen(({{ &a + [50..70] }},[0..100])) -tests/non-free/strnlen2.c:409:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:409: - possibly reading indeterminate data +tests/non-free/strnlen2.c:409:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:410:[value] assertion got status valid. [value] computing for function Frama_C_interval <- large_n <- main. Called from tests/non-free/strnlen2.c:412. @@ -454,8 +430,7 @@ tests/non-free/strnlen2.c:138:[value] Call to builtin memset(({{ (void *)&a[16] Called from tests/non-free/strnlen2.c:442. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:443:[value] Call to builtin Frama_C_strnlen(({{ &a + [0..9] }},[0..9])) -tests/non-free/strnlen2.c:443:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:443: - possibly reading indeterminate data +tests/non-free/strnlen2.c:443:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:444:[value] assertion got status valid. [value] computing for function Frama_C_interval <- intervals <- main. Called from tests/non-free/strnlen2.c:446. @@ -465,8 +440,7 @@ tests/non-free/strnlen2.c:444:[value] assertion got status valid. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:448:[value] Call to builtin Frama_C_strnlen(({{ &a{[3], [4], [5], [6], [7], [8], [9]} }}, [2..10])) -tests/non-free/strnlen2.c:448:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:448: - possibly reading indeterminate data +tests/non-free/strnlen2.c:448:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:449:[value] assertion got status valid. [value] computing for function Frama_C_interval <- intervals <- main. Called from tests/non-free/strnlen2.c:451. @@ -476,8 +450,7 @@ tests/non-free/strnlen2.c:449:[value] assertion got status valid. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:453:[value] Call to builtin Frama_C_strnlen(({{ &a{[3], [4], [5], [6], [7], [8], [9]} }}, [0..11])) -tests/non-free/strnlen2.c:453:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:453: - possibly reading indeterminate data +tests/non-free/strnlen2.c:453:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:454:[value] assertion got status valid. [value] computing for function Frama_C_interval <- intervals <- main. Called from tests/non-free/strnlen2.c:456. @@ -487,8 +460,7 @@ tests/non-free/strnlen2.c:454:[value] assertion got status valid. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:458:[value] Call to builtin Frama_C_strnlen(({{ &a{[3], [4], [5], [6], [7], [8], [9], [10]} }},[0..9])) -tests/non-free/strnlen2.c:458:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:458: - possibly reading indeterminate data +tests/non-free/strnlen2.c:458:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:459:[value] assertion got status valid. [value] computing for function Frama_C_interval <- intervals <- main. Called from tests/non-free/strnlen2.c:461. @@ -498,8 +470,7 @@ tests/non-free/strnlen2.c:459:[value] assertion got status valid. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:463:[value] Call to builtin Frama_C_strnlen(({{ &a{[3], [4], [5], [6], [7], [8], [9], [10]} }},[0..10])) -tests/non-free/strnlen2.c:463:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:463: - possibly reading indeterminate data +tests/non-free/strnlen2.c:463:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:464:[value] assertion got status valid. [value] computing for function Frama_C_interval <- intervals <- main. Called from tests/non-free/strnlen2.c:466. @@ -509,8 +480,7 @@ tests/non-free/strnlen2.c:464:[value] assertion got status valid. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:468:[value] Call to builtin Frama_C_strnlen(({{ &a{[3], [4], [5], [6], [7], [8], [9], [10]} }},[0..11])) -tests/non-free/strnlen2.c:468:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:468: - possibly reading indeterminate data +tests/non-free/strnlen2.c:468:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:469:[value] assertion got status valid. [value] computing for function Frama_C_interval <- intervals <- main. Called from tests/non-free/strnlen2.c:471. @@ -519,7 +489,7 @@ tests/non-free/strnlen2.c:469:[value] assertion got status valid. Called from tests/non-free/strnlen2.c:472. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:473:[value] Call to builtin Frama_C_strnlen(({{ &a + [3..11] }},[0..9])) -tests/non-free/strnlen2.c:473:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:473: +tests/non-free/strnlen2.c:473:[value] warning: builtin Frama_C_strnlen: possible uninitialized values possibly reading indeterminate data tests/non-free/strnlen2.c:474:[value] assertion got status valid. @@ -530,7 +500,7 @@ tests/non-free/strnlen2.c:474:[value] assertion got status valid. Called from tests/non-free/strnlen2.c:477. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:478:[value] Call to builtin Frama_C_strnlen(({{ &a + [3..11] }},[0..10])) -tests/non-free/strnlen2.c:478:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:478: +tests/non-free/strnlen2.c:478:[value] warning: builtin Frama_C_strnlen: possible uninitialized values possibly reading indeterminate data tests/non-free/strnlen2.c:479:[value] assertion got status valid. @@ -541,7 +511,7 @@ tests/non-free/strnlen2.c:479:[value] assertion got status valid. Called from tests/non-free/strnlen2.c:482. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:483:[value] Call to builtin Frama_C_strnlen(({{ &a + [3..11] }},[0..11])) -tests/non-free/strnlen2.c:483:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:483: +tests/non-free/strnlen2.c:483:[value] warning: builtin Frama_C_strnlen: possible uninitialized values possibly reading indeterminate data tests/non-free/strnlen2.c:484:[value] assertion got status valid. diff --git a/tests/non-free/oracle_bitwise/Longinit_sequencer.res.oracle b/tests/non-free/oracle_bitwise/Longinit_sequencer.res.oracle index 4cb50421baaa8294501046d5e46d0a5023770935..074c32a4b09f7e822d304057c07e77afa1f00e8a 100644 --- a/tests/non-free/oracle_bitwise/Longinit_sequencer.res.oracle +++ b/tests/non-free/oracle_bitwise/Longinit_sequencer.res.oracle @@ -369,11 +369,11 @@ tests/non-free/long_init2.c:34:[value] Assigning imprecise value to garbled_mix. Called from tests/non-free/long_init2.c:88. [value] Call to builtin Frama_C_load_state(({13},{{ "tea" }})) [value] Skipping call to init_inner, loading globals state from file: - tests/non-free/result/Longinit_sequencer.sav + tests/non-free/result_bitwise/Longinit_sequencer.sav [value] warning: importing garbled mix, locations may have changed -[value] warning: variable `r (id 594)' is not global, possibly an escaping value; ignoring -[value] warning: variable `r2 (id 597)' is not global, possibly an escaping value; ignoring -[value] warning: variable `r2 (id 597)' is not global, possibly an escaping value; ignoring +[value] warning: variable `r (id 602)' is not global, possibly an escaping value; ignoring +[value] warning: variable `r2 (id 605)' is not global, possibly an escaping value; ignoring +[value] warning: variable `r2 (id 605)' is not global, possibly an escaping value; ignoring [value] warning: found new global variable `another_global' [value] Recording results for init_outer [value] Done for function init_outer @@ -603,7 +603,7 @@ tests/non-free/long_init3.c:34:[value] Assigning imprecise value to garbled_mix. inited ∈ {0} [value] Call to builtin Frama_C_load_state(()) [value] Skipping call to init_outer, loading globals state from file: - tests/non-free/result/Longinit_sequencer.sav + tests/non-free/result_bitwise/Longinit_sequencer.sav [value] warning: importing garbled mix, locations may have changed [value] warning: found new global variable `yet_another_global' [value] DUMPING STATE of file tests/non-free/long_init3.c line 90 diff --git a/tests/non-free/oracle_bitwise/alloc.0.res.oracle b/tests/non-free/oracle_bitwise/alloc.0.res.oracle index 3462232225f0ae282d98a0369ce7cad87aa8e856..6bbe7a5e4762c5fd665dca353134d62460540083 100644 --- a/tests/non-free/oracle_bitwise/alloc.0.res.oracle +++ b/tests/non-free/oracle_bitwise/alloc.0.res.oracle @@ -20,8 +20,8 @@ [value] computing for function malloc <- main. Called from tests/non-free/alloc.c:16. share/libc/stdlib.c:39:[value] allocating variable __malloc_malloc_l39 -share/libc/stdlib.h:164:[value] warning: function malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.) -share/libc/stdlib.h:169:[value] warning: function malloc, behavior no_allocation: postcondition got status invalid. (Behavior may be inactive, no reduction performed.) +share/libc/stdlib.h:177:[value] warning: function malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.) +share/libc/stdlib.h:182:[value] warning: function malloc, behavior no_allocation: postcondition got status invalid. (Behavior may be inactive, no reduction performed.) [value] Recording results for malloc [value] Done for function malloc [value] computing for function malloc <- main. diff --git a/tests/non-free/oracle_bitwise/alloc.1.res.oracle b/tests/non-free/oracle_bitwise/alloc.1.res.oracle index 225071d1e36343a306615a982abf3901cd41863c..d4e9c812cea8d5ace6f2548c3a280642d4eaf09f 100644 --- a/tests/non-free/oracle_bitwise/alloc.1.res.oracle +++ b/tests/non-free/oracle_bitwise/alloc.1.res.oracle @@ -21,8 +21,8 @@ [value] computing for function malloc <- main_abs. Called from tests/non-free/alloc.c:50. share/libc/stdlib.c:39:[value] allocating variable __malloc_malloc_l39 -share/libc/stdlib.h:164:[value] warning: function malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.) -share/libc/stdlib.h:169:[value] warning: function malloc, behavior no_allocation: postcondition got status invalid. (Behavior may be inactive, no reduction performed.) +share/libc/stdlib.h:177:[value] warning: function malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.) +share/libc/stdlib.h:182:[value] warning: function malloc, behavior no_allocation: postcondition got status invalid. (Behavior may be inactive, no reduction performed.) [value] Recording results for malloc [value] Done for function malloc tests/non-free/alloc.c:51:[value] warning: signed overflow. assert -2147483648 ≤ -((int)q); diff --git a/tests/non-free/oracle_bitwise/allocated.0.res.oracle b/tests/non-free/oracle_bitwise/allocated.0.res.oracle index 7e1f99f7e76f6ad284e219daab68ac67ba3a8a70..4531abb1b2dbf7853a3e7c8d26f72f29f53df179 100644 --- a/tests/non-free/oracle_bitwise/allocated.0.res.oracle +++ b/tests/non-free/oracle_bitwise/allocated.0.res.oracle @@ -118,7 +118,7 @@ tests/non-free/allocated.c:123:[value] assertion 'Value,mem_access' got final st \result FROM \nothing [from] ====== END OF DEPENDENCIES ====== [inout] Out (internal) for function main: - __fc_heap_status; i; j; p; tmp; tmp_0; k; tmp_1; size; pb; __retres; + __fc_heap_status; i; j; p; tmp; tmp_3; k; tmp_4; size; pb; __retres; __malloc_main_l25; __malloc_main_l36[0..1]; __malloc_main_l50[0..2]; __malloc_main_l63; __malloc_main_l73; __malloc_w_main_l82[0..2]; __malloc_main_l97[0]; __malloc_main_l114[0..3] diff --git a/tests/non-free/oracle_bitwise/allocated.1.res.oracle b/tests/non-free/oracle_bitwise/allocated.1.res.oracle index 0475bab630e4b24b12aed2f6b78e03dbea649d53..ecc341c8a71ea633c8bcd2c7afdd7cad6454056a 100644 --- a/tests/non-free/oracle_bitwise/allocated.1.res.oracle +++ b/tests/non-free/oracle_bitwise/allocated.1.res.oracle @@ -277,7 +277,7 @@ tests/non-free/allocated.c:123:[value] assertion 'Value,mem_access' got final st \result FROM \nothing [from] ====== END OF DEPENDENCIES ====== [inout] Out (internal) for function main: - __fc_heap_status; i; j; p; tmp; tmp_0; k; tmp_1; size; pb; __retres; + __fc_heap_status; i; j; p; tmp; tmp_3; k; tmp_4; size; pb; __retres; __malloc_main_l25; __malloc_main_l36[0..1]; __malloc_main_l50[0..1]; __malloc_main_l50_0[0..2]; __malloc_main_l63; __malloc_main_l63_0; __malloc_main_l63_1; __malloc_main_l63_2; __malloc_main_l73; diff --git a/tests/non-free/oracle_bitwise/from_result.res.oracle b/tests/non-free/oracle_bitwise/from_result.res.oracle index a7d3a58c3a588c08ee08c60fc846e6d16d6d78f9..36a5531a9c1a3ca8b875d25eb3e169cd391a8d74 100644 --- a/tests/non-free/oracle_bitwise/from_result.res.oracle +++ b/tests/non-free/oracle_bitwise/from_result.res.oracle @@ -13,8 +13,8 @@ [value] computing for function malloc <- bar <- main. Called from tests/non-free/from_result.c:18. share/libc/stdlib.c:39:[value] allocating variable __malloc_malloc_l39 -share/libc/stdlib.h:164:[value] warning: function malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.) -share/libc/stdlib.h:169:[value] warning: function malloc, behavior no_allocation: postcondition got status invalid. (Behavior may be inactive, no reduction performed.) +share/libc/stdlib.h:177:[value] warning: function malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.) +share/libc/stdlib.h:182:[value] warning: function malloc, behavior no_allocation: postcondition got status invalid. (Behavior may be inactive, no reduction performed.) [value] Recording results for malloc [value] Done for function malloc [value] Recording results for bar diff --git a/tests/non-free/oracle_bitwise/malloc_individual.res.oracle b/tests/non-free/oracle_bitwise/malloc_individual.res.oracle index b0d76ac1835da194e921db00a562e74b5c7d7665..b37ac463bb47a462e6f2bb1fb252b05798dd53f5 100644 --- a/tests/non-free/oracle_bitwise/malloc_individual.res.oracle +++ b/tests/non-free/oracle_bitwise/malloc_individual.res.oracle @@ -15,8 +15,8 @@ [value] computing for function malloc <- main. Called from tests/non-free/malloc_individual.c:9. share/libc/stdlib.c:39:[value] allocating variable __malloc_malloc_l39 -share/libc/stdlib.h:164:[value] warning: function malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.) -share/libc/stdlib.h:169:[value] warning: function malloc, behavior no_allocation: postcondition got status invalid. (Behavior may be inactive, no reduction performed.) +share/libc/stdlib.h:177:[value] warning: function malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.) +share/libc/stdlib.h:182:[value] warning: function malloc, behavior no_allocation: postcondition got status invalid. (Behavior may be inactive, no reduction performed.) [value] Recording results for malloc [value] Done for function malloc tests/non-free/malloc_individual.c:13:[value] warning: accessing uninitialized left-value. assert \initialized(p); diff --git a/tests/non-free/oracle_bitwise/memchr.res.oracle b/tests/non-free/oracle_bitwise/memchr.res.oracle index a0ddf3687981b4b2434afc8c02f12a384ecf4f8e..427a520aa375040739ada2bec8f1bce28cf6a2f7 100644 --- a/tests/non-free/oracle_bitwise/memchr.res.oracle +++ b/tests/non-free/oracle_bitwise/memchr.res.oracle @@ -79,16 +79,14 @@ tests/non-free/memchr.c:112:[value] assertion got status valid. [value] computing for function my_memchr <- memchr_zero_termination <- main. Called from tests/non-free/memchr.c:113. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&non_terminated }},{0},{2})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: reading indeterminate data [value] Recording results for my_memchr [value] Done for function my_memchr [value] computing for function my_memchr <- memchr_zero_termination <- main. Called from tests/non-free/memchr.c:119. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&non_terminated2{[2], [3]} }}, {0},{4})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: reading indeterminate data [value] Recording results for my_memchr [value] Done for function my_memchr [value] Recording results for memchr_zero_termination @@ -99,8 +97,7 @@ tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-f Called from tests/non-free/memchr.c:127. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&empty_or_uninitialized }}, {0},{1})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possible uninitialized values +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values [value] Called Frama_C_show_each_mymemchr({0}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -108,15 +105,13 @@ tests/non-free/memchr.c:128:[value] assertion got status valid. [value] computing for function my_memchr <- memchr_initialization <- main. Called from tests/non-free/memchr.c:131. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&uninitialized }},{0},{1})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: reading indeterminate data [value] Recording results for my_memchr [value] Done for function my_memchr [value] computing for function my_memchr <- memchr_initialization <- main. Called from tests/non-free/memchr.c:136. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&s }},{0},{2})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possible uninitialized values +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values [value] Called Frama_C_show_each_mymemchr({1}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -124,8 +119,7 @@ tests/non-free/memchr.c:137:[value] assertion got status valid. [value] computing for function my_memchr <- memchr_initialization <- main. Called from tests/non-free/memchr.c:143. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&t }},{0},{4})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possible uninitialized values +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values [value] Called Frama_C_show_each_mymemchr({3}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -147,9 +141,8 @@ share/libc/__fc_builtin.h:50:[value] function Frama_C_interval: precondition got [value] computing for function my_memchr <- memchr_large <- main. Called from tests/non-free/memchr.c:196. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [3..30] }},{0},{100})) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -164,9 +157,8 @@ tests/non-free/memchr.c:198:[value] warning: assertion 'refined' got status unkn [value] computing for function my_memchr <- memchr_large <- main. Called from tests/non-free/memchr.c:201. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [5..17] }},{0},{100})) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -181,9 +173,8 @@ tests/non-free/memchr.c:203:[value] warning: assertion 'refined' got status unkn [value] computing for function my_memchr <- memchr_large <- main. Called from tests/non-free/memchr.c:206. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [60..74] }},{0},{100})) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -198,9 +189,8 @@ tests/non-free/memchr.c:208:[value] warning: assertion 'refined' got status unkn [value] computing for function my_memchr <- memchr_large <- main. Called from tests/non-free/memchr.c:211. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [63..80] }},{0},{100})) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -220,9 +210,8 @@ tests/non-free/memchr.c:184:[value] Call to builtin memset(({{ (void *)&a }},{0; [value] computing for function my_memchr <- memchr_large <- main. Called from tests/non-free/memchr.c:217. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [50..70] }},{0},{100})) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -251,9 +240,8 @@ tests/non-free/memchr.c:184:[value] Call to builtin memset(({{ (void *)&a[50] }} [value] computing for function my_memchr <- memchr_large_uninit <- main. Called from tests/non-free/memchr.c:232. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [3..30] }},{0},{100})) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -268,9 +256,8 @@ tests/non-free/memchr.c:234:[value] warning: assertion 'refined' got status unkn [value] computing for function my_memchr <- memchr_large_uninit <- main. Called from tests/non-free/memchr.c:238. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [63..80] }},{0},{100})) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -285,9 +272,8 @@ tests/non-free/memchr.c:240:[value] warning: assertion 'refined' got status unkn [value] computing for function my_memchr <- memchr_large_uninit <- main. Called from tests/non-free/memchr.c:243. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [45..55] }},{0},{100})) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -323,8 +309,7 @@ tests/non-free/memchr.c:269:[value] assertion got status valid. Called from tests/non-free/memchr.c:299. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&unterminated_string }}, {0},{13})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: reading indeterminate data [value] Recording results for my_memchr [value] Done for function my_memchr [value] computing for function my_memchr <- memchr_misc <- main. @@ -338,8 +323,7 @@ tests/non-free/memchr.c:303:[value] assertion got status valid. [value] computing for function my_memchr2 <- memchr_misc <- main. Called from tests/non-free/memchr.c:305. tests/non-free/memchr.c:64:[value] Call to builtin Frama_C_memchr(({{ &x + {0; 3} }},{0},{12})) -tests/non-free/memchr.c:64:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:64: - possibly reading indeterminate data +tests/non-free/memchr.c:64:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mymemchr2({0}) [value] Recording results for my_memchr2 [value] Done for function my_memchr2 @@ -347,8 +331,7 @@ tests/non-free/memchr.c:306:[value] assertion got status valid. [value] computing for function my_memchr <- memchr_misc <- main. Called from tests/non-free/memchr.c:308. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&loc_char_array }},{0},{5})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: reading indeterminate data [value] Recording results for my_memchr [value] Done for function my_memchr [value] computing for function my_memchr <- memchr_misc <- main. @@ -441,8 +424,7 @@ tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "mno\000pq [value] computing for function my_memchr <- memchr_misc2 <- main. Called from tests/non-free/memchr.c:341. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&maybe_init }},{0},{2})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possible uninitialized values +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values [value] Called Frama_C_show_each_mymemchr({1}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -452,8 +434,7 @@ tests/non-free/memchr.c:342:[value] assertion got status valid. [value] computing for function memchr_bitfields <- main. Called from tests/non-free/memchr.c:653. tests/non-free/memchr.c:161:[value] Call to builtin Frama_C_memchr(({{ (void const *)&s }},{0},{3})) -tests/non-free/memchr.c:161:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:161: - reading indeterminate data +tests/non-free/memchr.c:161:[value] warning: builtin Frama_C_memchr: reading indeterminate data [value] Recording results for memchr_bitfields [value] Done for function memchr_bitfields [value] computing for function memchr_bitfields2 <- main. @@ -473,8 +454,7 @@ tests/non-free/memchr.c:255:[value] warning: locals {x} escaping the scope of a [value] computing for function my_memchr <- memchr_escaping <- main. Called from tests/non-free/memchr.c:258. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&s }},{0},{4})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possible escaping addresses +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible escaping addresses [value] Called Frama_C_show_each_mymemchr({0}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -496,8 +476,7 @@ tests/non-free/memchr.c:356:[value] warning: out of bounds write. assert \valid( [value] computing for function my_memchr <- memchr_big_array <- main. Called from tests/non-free/memchr.c:364. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&u }},{0},{800})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possible uninitialized values +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values [value] Called Frama_C_show_each_mymemchr({1}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -505,8 +484,7 @@ tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-f Called from tests/non-free/memchr.c:365. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&r }},{0},{805})) tests/non-free/memchr.c:50:[kernel] more than 200(201) locations to update in array. Approximating. -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possible uninitialized values +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values [value] Called Frama_C_show_each_mymemchr({1}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -514,8 +492,7 @@ tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-f Called from tests/non-free/memchr.c:366. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&t }},{0},{4000001})) tests/non-free/memchr.c:50:[kernel] more than 200(1000000) locations to update in array. Approximating. -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possible uninitialized values +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values [value] Called Frama_C_show_each_mymemchr({1}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -526,24 +503,21 @@ tests/non-free/memchr.c:370:[value] assertion got status valid. [value] computing for function my_memchr <- memchr_big_array <- main. Called from tests/non-free/memchr.c:372. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&u }},{0},{1600})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possible uninitialized values +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values [value] Called Frama_C_show_each_mymemchr({1}) [value] Recording results for my_memchr [value] Done for function my_memchr [value] computing for function my_memchr <- memchr_big_array <- main. Called from tests/non-free/memchr.c:373. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&r }},{0},{1608})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possible uninitialized values +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values [value] Called Frama_C_show_each_mymemchr({1}) [value] Recording results for my_memchr [value] Done for function my_memchr [value] computing for function my_memchr <- memchr_big_array <- main. Called from tests/non-free/memchr.c:374. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&t }},{0},{8000000})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possible uninitialized values +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values [value] Called Frama_C_show_each_mymemchr({1}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -586,8 +560,7 @@ tests/non-free/memchr.c:396:[value] assertion got status valid. [value] computing for function my_memchr2 <- memchr_no_zero_but_ok <- main. Called from tests/non-free/memchr.c:397. tests/non-free/memchr.c:64:[value] Call to builtin Frama_C_memchr(({{ (void const *)&s{[7], [18]} }},{0},{5})) -tests/non-free/memchr.c:64:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:64: - possibly reading indeterminate data +tests/non-free/memchr.c:64:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mymemchr2({10; 18; 19}) [value] Recording results for my_memchr2 [value] Done for function my_memchr2 @@ -656,9 +629,8 @@ tests/non-free/memchr.c:184:[value] Call to builtin memset(({{ (void *)&a }},{1; [value] computing for function my_memchr <- memchr_large_n <- main. Called from tests/non-free/memchr.c:443. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [3..30] }},{0},[10..20])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -670,9 +642,8 @@ tests/non-free/memchr.c:445:[value] warning: assertion 'refined' got status unkn [value] computing for function my_memchr <- memchr_large_n <- main. Called from tests/non-free/memchr.c:449. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [3..30] }},{0},[10..20])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -684,9 +655,8 @@ tests/non-free/memchr.c:451:[value] warning: assertion 'refined' got status unkn [value] computing for function my_memchr <- memchr_large_n <- main. Called from tests/non-free/memchr.c:454. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [3..30] }},{0},[10..20])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -701,9 +671,8 @@ tests/non-free/memchr.c:456:[value] warning: assertion 'refined' got status unkn [value] computing for function my_memchr <- memchr_large_n <- main. Called from tests/non-free/memchr.c:459. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [5..17] }},{0},[10..20])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -718,9 +687,8 @@ tests/non-free/memchr.c:461:[value] warning: assertion 'refined' got status unkn [value] computing for function my_memchr <- memchr_large_n <- main. Called from tests/non-free/memchr.c:464. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [60..74] }},{0},[10..20])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -735,9 +703,8 @@ tests/non-free/memchr.c:466:[value] warning: assertion 'refined' got status unkn [value] computing for function my_memchr <- memchr_large_n <- main. Called from tests/non-free/memchr.c:469. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [63..80] }},{0},[10..20])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -757,9 +724,8 @@ tests/non-free/memchr.c:184:[value] Call to builtin memset(({{ (void *)&a }},{0; [value] computing for function my_memchr <- memchr_large_n <- main. Called from tests/non-free/memchr.c:475. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [50..70] }},{0},[10..20])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -773,9 +739,8 @@ tests/non-free/memchr.c:476:[value] assertion got status valid. [value] computing for function my_memchr <- memchr_large_n <- main. Called from tests/non-free/memchr.c:479. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [50..70] }},{0},[0..100])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -792,9 +757,8 @@ tests/non-free/memchr.c:480:[value] assertion got status valid. [value] computing for function my_memchr <- memchr_large_n <- main. Called from tests/non-free/memchr.c:484. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [0..10] }},{0},[0..90])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -865,9 +829,8 @@ tests/non-free/memchr.c:184:[value] Call to builtin memset(({{ (void *)&a[16] }} [value] computing for function my_memchr <- memchr_intervals <- main. Called from tests/non-free/memchr.c:516. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [0..9] }},{0},[0..10])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -886,8 +849,7 @@ tests/non-free/memchr.c:518:[value] warning: assertion 'refined' got status unkn Called from tests/non-free/memchr.c:522. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&a{[3], [4], [5], [6], [7], [8], [9]} }},{0},[2..10])) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possibly reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mymemchr({-1; 7; 8; 9}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -902,8 +864,7 @@ tests/non-free/memchr.c:523:[value] assertion got status valid. Called from tests/non-free/memchr.c:527. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&a{[3], [4], [5], [6], [7], [8], [9]} }},{0},[0..11])) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possibly reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mymemchr({-1; 7; 8; 9}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -919,8 +880,7 @@ tests/non-free/memchr.c:528:[value] assertion got status valid. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&a{[3], [4], [5], [6], [7], [8], [9], [10]} }}, {0},[0..9])) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possibly reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mymemchr({-1; 7; 8; 9}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -936,8 +896,7 @@ tests/non-free/memchr.c:533:[value] assertion got status valid. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&a{[3], [4], [5], [6], [7], [8], [9], [10]} }}, {0},[0..10])) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possibly reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mymemchr({-1; 7; 8; 9}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -953,8 +912,7 @@ tests/non-free/memchr.c:538:[value] assertion got status valid. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&a{[3], [4], [5], [6], [7], [8], [9], [10]} }}, {0},[0..11])) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possibly reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mymemchr({-1; 7; 8; 9}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -968,9 +926,8 @@ tests/non-free/memchr.c:543:[value] assertion got status valid. [value] computing for function my_memchr <- memchr_intervals <- main. Called from tests/non-free/memchr.c:547. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [3..11] }},{0},[0..10])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -987,9 +944,8 @@ tests/non-free/memchr.c:548:[value] assertion got status valid. [value] computing for function my_memchr <- memchr_intervals <- main. Called from tests/non-free/memchr.c:552. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [3..11] }},{0},[0..10])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -1006,9 +962,8 @@ tests/non-free/memchr.c:553:[value] assertion got status valid. [value] computing for function my_memchr <- memchr_intervals <- main. Called from tests/non-free/memchr.c:557. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [3..11] }},{0},[0..11])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -1028,8 +983,7 @@ tests/non-free/memchr.c:558:[value] assertion got status valid. memchr_small_sets_chars <- main. Called from tests/non-free/memchr.c:566. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "abc" + {0; 1} }},{97},{4})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possibly reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mymemchr({0}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -1124,8 +1078,7 @@ tests/non-free/memchr.c:606:[value] assertion got status valid. memchr_small_sets_chars <- main. Called from tests/non-free/memchr.c:566. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "abc" + {0; 1} }},{97; 98},{4})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possibly reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mymemchr({-1; 0; 1}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -1174,8 +1127,7 @@ tests/non-free/memchr.c:617:[value] assertion got status valid. memchr_small_sets_chars <- main. Called from tests/non-free/memchr.c:566. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "abc" + {0; 1} }},{98; 99},{4})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possibly reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mymemchr({-1; 1; 2}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -1229,8 +1181,7 @@ tests/non-free/memchr.c:629:[value] assertion got status valid. memchr_small_sets_chars <- main. Called from tests/non-free/memchr.c:566. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "abc" + {0; 1} }},{0; 98; 99},{4})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possibly reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mymemchr({-1; 1; 2; 3}) [value] Recording results for my_memchr [value] Done for function my_memchr diff --git a/tests/non-free/oracle_bitwise/str_allocated.res.oracle b/tests/non-free/oracle_bitwise/str_allocated.res.oracle index 06bdb73d2fd666e28a7a33982db842e2b89a1369..4e091dc0e9fbe6f15e39f0d8b4f36c462f3f3ce3 100644 --- a/tests/non-free/oracle_bitwise/str_allocated.res.oracle +++ b/tests/non-free/oracle_bitwise/str_allocated.res.oracle @@ -15,8 +15,7 @@ tests/non-free/str_allocated.c:12:[value] allocating variable __malloc_memchr_bu tests/non-free/str_allocated.c:14:[value] warning: accessing uninitialized left-value. assert \initialized(&b); tests/non-free/str_allocated.c:14:[value] Call to builtin Frama_C_memchr(({{ (void const *)&__malloc_w_memchr_bug_l12 }}, {1},{1})) -tests/non-free/str_allocated.c:14:[value] warning: built-in Frama_C_memchr: tests/non-free/str_allocated.c:14: - reading indeterminate data +tests/non-free/str_allocated.c:14:[value] warning: builtin Frama_C_memchr: reading indeterminate data [value] Recording results for memchr_bug [value] Done for function memchr_bug [value] Recording results for main diff --git a/tests/non-free/oracle_bitwise/strchr.res.oracle b/tests/non-free/oracle_bitwise/strchr.res.oracle index e1b504509de5f35f8c61cea27ae8d39803ef4327..a49bc2418f65a65e8c5c8f72600cc045d15bd1ad 100644 --- a/tests/non-free/oracle_bitwise/strchr.res.oracle +++ b/tests/non-free/oracle_bitwise/strchr.res.oracle @@ -53,8 +53,7 @@ tests/non-free/strchr.c:91:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_small_sets <- main. Called from tests/non-free/strchr.c:95. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t[0] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr({0; 1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -66,8 +65,7 @@ tests/non-free/strchr.c:96:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_zero_termination <- main. Called from tests/non-free/strchr.c:104. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &empty_or_non_terminated[0] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr({0}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -75,15 +73,13 @@ tests/non-free/strchr.c:105:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_zero_termination <- main. Called from tests/non-free/strchr.c:109. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &non_terminated[0] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Recording results for my_strchr [value] Done for function my_strchr [value] computing for function my_strchr <- strchr_zero_termination <- main. Called from tests/non-free/strchr.c:115. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &non_terminated2[2] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Recording results for my_strchr [value] Done for function my_strchr [value] Recording results for strchr_zero_termination @@ -93,8 +89,7 @@ tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-f [value] computing for function my_strchr <- strchr_initialization <- main. Called from tests/non-free/strchr.c:123. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &empty_or_uninitialized[0] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possible uninitialized values +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possible uninitialized values [value] Called Frama_C_show_each_mystrchr({0}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -102,15 +97,13 @@ tests/non-free/strchr.c:124:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_initialization <- main. Called from tests/non-free/strchr.c:127. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &uninitialized[0] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Recording results for my_strchr [value] Done for function my_strchr [value] computing for function my_strchr <- strchr_initialization <- main. Called from tests/non-free/strchr.c:132. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &s[0] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possible uninitialized values +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possible uninitialized values [value] Called Frama_C_show_each_mystrchr({1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -118,8 +111,7 @@ tests/non-free/strchr.c:133:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_initialization <- main. Called from tests/non-free/strchr.c:139. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t[0] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possible uninitialized values +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possible uninitialized values [value] Called Frama_C_show_each_mystrchr({3}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -141,9 +133,8 @@ share/libc/__fc_builtin.h:50:[value] function Frama_C_interval: precondition got [value] computing for function my_strchr <- strchr_large <- main. Called from tests/non-free/strchr.c:192. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &a + [3..30] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -157,9 +148,8 @@ tests/non-free/strchr.c:193:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_large <- main. Called from tests/non-free/strchr.c:196. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &a + [5..17] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -174,9 +164,8 @@ tests/non-free/strchr.c:198:[value] warning: assertion 'refined' got status unkn [value] computing for function my_strchr <- strchr_large <- main. Called from tests/non-free/strchr.c:201. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &a + [60..74] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -191,9 +180,8 @@ tests/non-free/strchr.c:203:[value] warning: assertion 'refined' got status unkn [value] computing for function my_strchr <- strchr_large <- main. Called from tests/non-free/strchr.c:206. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &a + [63..80] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -213,9 +201,8 @@ tests/non-free/strchr.c:180:[value] Call to builtin memset(({{ (void *)&a }},{0; [value] computing for function my_strchr <- strchr_large <- main. Called from tests/non-free/strchr.c:212. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &a + [50..70] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -243,9 +230,8 @@ tests/non-free/strchr.c:180:[value] Call to builtin memset(({{ (void *)&a[50] }} [value] computing for function my_strchr <- strchr_large_uninit <- main. Called from tests/non-free/strchr.c:226. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &a + [3..30] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -260,9 +246,8 @@ tests/non-free/strchr.c:228:[value] warning: assertion 'refined' got status unkn [value] computing for function my_strchr <- strchr_large_uninit <- main. Called from tests/non-free/strchr.c:232. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &a + [63..80] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -277,9 +262,8 @@ tests/non-free/strchr.c:234:[value] warning: assertion 'refined' got status unkn [value] computing for function my_strchr <- strchr_large_uninit <- main. Called from tests/non-free/strchr.c:237. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &a + [45..55] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -314,8 +298,7 @@ tests/non-free/strchr.c:263:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_misc <- main. Called from tests/non-free/strchr.c:293. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &unterminated_string[0] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Recording results for my_strchr [value] Done for function my_strchr [value] computing for function my_strchr <- strchr_misc <- main. @@ -329,8 +312,7 @@ tests/non-free/strchr.c:297:[value] assertion got status valid. [value] computing for function my_strchr2 <- strchr_misc <- main. Called from tests/non-free/strchr.c:299. tests/non-free/strchr.c:62:[value] Call to builtin Frama_C_strchr(({{ &x + {0; 3} }},{0})) -tests/non-free/strchr.c:62:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:62: - possibly reading indeterminate data +tests/non-free/strchr.c:62:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr2({0}) [value] Recording results for my_strchr2 [value] Done for function my_strchr2 @@ -338,8 +320,7 @@ tests/non-free/strchr.c:300:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_misc <- main. Called from tests/non-free/strchr.c:302. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &loc_char_array[0] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Recording results for my_strchr [value] Done for function my_strchr [value] computing for function my_strchr <- strchr_misc <- main. @@ -430,8 +411,7 @@ tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "mno\000pq [value] computing for function my_strchr <- strchr_misc2 <- main. Called from tests/non-free/strchr.c:335. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &maybe_init[0] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possible uninitialized values +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possible uninitialized values [value] Called Frama_C_show_each_mystrchr({1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -441,8 +421,7 @@ tests/non-free/strchr.c:336:[value] assertion got status valid. [value] computing for function strchr_bitfields <- main. Called from tests/non-free/strchr.c:540. tests/non-free/strchr.c:157:[value] Call to builtin Frama_C_strchr(({{ (char const *)&s }},{0})) -tests/non-free/strchr.c:157:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:157: - reading indeterminate data +tests/non-free/strchr.c:157:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Recording results for strchr_bitfields [value] Done for function strchr_bitfields [value] computing for function strchr_bitfields2 <- main. @@ -462,8 +441,7 @@ tests/non-free/strchr.c:249:[value] warning: locals {x} escaping the scope of a [value] computing for function my_strchr <- strchr_escaping <- main. Called from tests/non-free/strchr.c:252. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &s[0] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possible escaping addresses +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possible escaping addresses [value] Called Frama_C_show_each_mystrchr({0}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -485,8 +463,7 @@ tests/non-free/strchr.c:350:[value] warning: out of bounds write. assert \valid( [value] computing for function my_strchr <- strchr_big_array <- main. Called from tests/non-free/strchr.c:359. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ (char const *)&u }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possible uninitialized values +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possible uninitialized values [value] Called Frama_C_show_each_mystrchr({1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -494,8 +471,7 @@ tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-f Called from tests/non-free/strchr.c:360. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ (char const *)&r }},{0})) tests/non-free/strchr.c:49:[kernel] more than 200(201) locations to update in array. Approximating. -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possible uninitialized values +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possible uninitialized values [value] Called Frama_C_show_each_mystrchr({1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -503,8 +479,7 @@ tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-f Called from tests/non-free/strchr.c:361. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ (char const *)&t }},{0})) tests/non-free/strchr.c:49:[kernel] more than 200(1000000) locations to update in array. Approximating. -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possible uninitialized values +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possible uninitialized values [value] Called Frama_C_show_each_mystrchr({1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -515,9 +490,8 @@ tests/non-free/strchr.c:365:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_big_array <- main. Called from tests/non-free/strchr.c:367. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &u + [0..4294967295] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -527,9 +501,8 @@ tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-f [value] computing for function my_strchr <- strchr_big_array <- main. Called from tests/non-free/strchr.c:368. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &r + [0..4294967295] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -539,9 +512,8 @@ tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-f [value] computing for function my_strchr <- strchr_big_array <- main. Called from tests/non-free/strchr.c:369. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t + [0..4294967295] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -576,24 +548,21 @@ tests/non-free/strchr.c:386:[value] warning: out of bounds write. assert \valid( [value] computing for function my_strchr <- strchr_big_array <- main. Called from tests/non-free/strchr.c:387. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ (char const *)&u }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr([0..799]) [value] Recording results for my_strchr [value] Done for function my_strchr [value] computing for function my_strchr <- strchr_big_array <- main. Called from tests/non-free/strchr.c:388. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ (char const *)&r }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr([0..803]) [value] Recording results for my_strchr [value] Done for function my_strchr [value] computing for function my_strchr <- strchr_big_array <- main. Called from tests/non-free/strchr.c:389. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ (char const *)&t }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr([0..3999999]) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -604,9 +573,8 @@ tests/non-free/strchr.c:393:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_big_array <- main. Called from tests/non-free/strchr.c:395. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &u + [0..4294967295] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -616,9 +584,8 @@ tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-f [value] computing for function my_strchr <- strchr_big_array <- main. Called from tests/non-free/strchr.c:396. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &r + [0..4294967295] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -628,9 +595,8 @@ tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-f [value] computing for function my_strchr <- strchr_big_array <- main. Called from tests/non-free/strchr.c:397. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t + [0..4294967295] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -672,8 +638,7 @@ tests/non-free/strchr.c:421:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_no_zero_but_ok <- main. Called from tests/non-free/strchr.c:423. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &s{[7], [11]} }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr({10; 14; 15; 16; 17; 18; 19}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -681,8 +646,7 @@ tests/non-free/strchr.c:424:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_no_zero_but_ok <- main. Called from tests/non-free/strchr.c:426. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &s{[7], [18]} }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr({10; 18; 19}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -706,8 +670,7 @@ tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "abc" + {0 strchr_small_sets_chars <- main. Called from tests/non-free/strchr.c:438. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "\000bc" + {0; 1} }},{97})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Called Frama_C_show_each_mystrchr({-1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -715,8 +678,7 @@ tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-f strchr_small_sets_chars <- main. Called from tests/non-free/strchr.c:440. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "" }},{97})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Called Frama_C_show_each_mystrchr({-1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -724,8 +686,7 @@ tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-f strchr_small_sets_chars <- main. Called from tests/non-free/strchr.c:443. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "b\000c" + {0; 2} }},{97})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Called Frama_C_show_each_mystrchr({-1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -733,8 +694,7 @@ tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-f strchr_small_sets_chars <- main. Called from tests/non-free/strchr.c:447. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t[0] }},{97})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr({0; 1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -767,8 +727,7 @@ tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "\000bc" + strchr_small_sets_chars <- main. Called from tests/non-free/strchr.c:440. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "" }},{98})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Called Frama_C_show_each_mystrchr({-1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -783,8 +742,7 @@ tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "b\000c" + strchr_small_sets_chars <- main. Called from tests/non-free/strchr.c:447. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t[0] }},{98})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr({0; 1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -818,8 +776,7 @@ tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "\000bc" + strchr_small_sets_chars <- main. Called from tests/non-free/strchr.c:440. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "" }},{97; 98})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Called Frama_C_show_each_mystrchr({-1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -834,8 +791,7 @@ tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "b\000c" + strchr_small_sets_chars <- main. Called from tests/non-free/strchr.c:447. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t[0] }},{97; 98})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr({0; 1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -869,8 +825,7 @@ tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "\000bc" + strchr_small_sets_chars <- main. Called from tests/non-free/strchr.c:440. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "" }},{98; 99})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Called Frama_C_show_each_mystrchr({-1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -885,8 +840,7 @@ tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "b\000c" + strchr_small_sets_chars <- main. Called from tests/non-free/strchr.c:447. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t[0] }},{98; 99})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr({0; 1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -935,8 +889,7 @@ tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "b\000c" + strchr_small_sets_chars <- main. Called from tests/non-free/strchr.c:447. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t[0] }},{0; 98; 99})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr({-1; 0; 1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -968,8 +921,7 @@ tests/non-free/strchr.c:512:[value] assertion got status valid. Called from tests/non-free/strchr.c:516. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t[0] ; "ABCDEFGHIJKLMNOPQRSTUVWXYZ" }}, [-128..127])) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Called Frama_C_show_each_mystrchr([-1..26]) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -983,8 +935,7 @@ tests/non-free/strchr.c:180:[value] Call to builtin memset(({{ (void *)&t }},{0; Called from tests/non-free/strchr.c:519. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t[0] ; "ABCDEFGHIJKLMNOPQRSTUVWXYZ" }}, [-128..127])) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr([-1..29]) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -994,14 +945,8 @@ tests/non-free/strchr.c:520:[value] assertion got status valid. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t + [0..4294967295] ; "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + [0..4294967295] }},[-128..127])) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possible uninitialized values - possible escaping addresses - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -1018,7 +963,7 @@ tests/non-free/strchr.c:522:[value] assertion got status valid. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ garbled mix of &{s; "hello"} (origin: Arithmetic {tests/non-free/strchr.c:49}) }},{1})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: string argument is too imprecise, cannot compute a useful result. [value] Called Frama_C_show_each_mystrchr({-1}) [value] Recording results for my_strchr diff --git a/tests/non-free/oracle_bitwise/strlen.res.oracle b/tests/non-free/oracle_bitwise/strlen.res.oracle index ec734ef545879094fed9bf142a447a25b8ceb433..a5f44175539bd1d22c10dbb76a8664ee3b74badc 100644 --- a/tests/non-free/oracle_bitwise/strlen.res.oracle +++ b/tests/non-free/oracle_bitwise/strlen.res.oracle @@ -43,23 +43,19 @@ tests/non-free/strlen.c:71:[value] assertion got status valid. tests/non-free/strlen.c:75:[value] Call to builtin Frama_C_strlen(({{ "b\000c" + {0; 2} }})) tests/non-free/strlen.c:76:[value] assertion got status valid. tests/non-free/strlen.c:81:[value] Call to builtin Frama_C_strlen(({{ &t[0] }})) -tests/non-free/strlen.c:81:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:81: - possibly reading indeterminate data +tests/non-free/strlen.c:81:[value] warning: builtin Frama_C_strlen: possibly reading indeterminate data tests/non-free/strlen.c:82:[value] assertion got status valid. [value] Recording results for small_sets [value] Done for function small_sets [value] computing for function zero_termination <- main. Called from tests/non-free/strlen.c:310. tests/non-free/strlen.c:89:[value] Call to builtin Frama_C_strlen(({{ &empty_or_non_terminated[0] }})) -tests/non-free/strlen.c:89:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:89: - possibly reading indeterminate data +tests/non-free/strlen.c:89:[value] warning: builtin Frama_C_strlen: possibly reading indeterminate data tests/non-free/strlen.c:90:[value] assertion got status valid. tests/non-free/strlen.c:93:[value] Call to builtin Frama_C_strlen(({{ &non_terminated[0] }})) -tests/non-free/strlen.c:93:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:93: - reading indeterminate data +tests/non-free/strlen.c:93:[value] warning: builtin Frama_C_strlen: reading indeterminate data tests/non-free/strlen.c:97:[value] Call to builtin Frama_C_strlen(({{ &non_terminated2{[2], [3]} }})) -tests/non-free/strlen.c:97:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:97: - reading indeterminate data +tests/non-free/strlen.c:97:[value] warning: builtin Frama_C_strlen: reading indeterminate data [value] Recording results for zero_termination [value] Done for function zero_termination [value] computing for function strlen_initialization <- main. @@ -67,31 +63,27 @@ tests/non-free/strlen.c:97:[value] warning: built-in Frama_C_strlen: tests/non-f [value] computing for function my_strlen <- strlen_initialization <- main. Called from tests/non-free/strlen.c:105. tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &empty_or_uninitialized[0] }})) -tests/non-free/strlen.c:54:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:54: - possible uninitialized values +tests/non-free/strlen.c:54:[value] warning: builtin Frama_C_strlen: possible uninitialized values [value] Recording results for my_strlen [value] Done for function my_strlen tests/non-free/strlen.c:106:[value] assertion got status valid. [value] computing for function my_strlen <- strlen_initialization <- main. Called from tests/non-free/strlen.c:109. tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &uninitialized[0] }})) -tests/non-free/strlen.c:54:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:54: - reading indeterminate data +tests/non-free/strlen.c:54:[value] warning: builtin Frama_C_strlen: reading indeterminate data [value] Recording results for my_strlen [value] Done for function my_strlen [value] computing for function my_strlen <- strlen_initialization <- main. Called from tests/non-free/strlen.c:116. tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &s[0] }})) -tests/non-free/strlen.c:54:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:54: - possible uninitialized values +tests/non-free/strlen.c:54:[value] warning: builtin Frama_C_strlen: possible uninitialized values [value] Recording results for my_strlen [value] Done for function my_strlen tests/non-free/strlen.c:117:[value] assertion got status valid. [value] computing for function my_strlen <- strlen_initialization <- main. Called from tests/non-free/strlen.c:124. tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &t[0] }})) -tests/non-free/strlen.c:54:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:54: - possible uninitialized values +tests/non-free/strlen.c:54:[value] warning: builtin Frama_C_strlen: possible uninitialized values [value] Recording results for my_strlen [value] Done for function my_strlen tests/non-free/strlen.c:125:[value] assertion got status valid. @@ -139,8 +131,7 @@ tests/non-free/strlen.c:181:[value] assertion got status valid. [value] computing for function my_strlen <- strlen_large <- main. Called from tests/non-free/strlen.c:184. tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &a + [63..80] }})) -tests/non-free/strlen.c:54:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:54: - possibly reading indeterminate data +tests/non-free/strlen.c:54:[value] warning: builtin Frama_C_strlen: possibly reading indeterminate data [value] Recording results for my_strlen [value] Done for function my_strlen tests/non-free/strlen.c:185:[value] assertion got status valid. @@ -155,8 +146,7 @@ tests/non-free/strlen.c:161:[value] Call to builtin memset(({{ (void *)&a }},{0; [value] computing for function my_strlen <- strlen_large <- main. Called from tests/non-free/strlen.c:189. tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &a + [50..70] }})) -tests/non-free/strlen.c:54:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:54: - possibly reading indeterminate data +tests/non-free/strlen.c:54:[value] warning: builtin Frama_C_strlen: possibly reading indeterminate data [value] Recording results for my_strlen [value] Done for function my_strlen tests/non-free/strlen.c:190:[value] assertion got status valid. @@ -180,8 +170,7 @@ tests/non-free/strlen.c:161:[value] Call to builtin memset(({{ (void *)&a[50] }} [value] computing for function my_strlen <- strlen_large_uninit <- main. Called from tests/non-free/strlen.c:203. tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &a + [3..30] }})) -tests/non-free/strlen.c:54:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:54: - possibly reading indeterminate data +tests/non-free/strlen.c:54:[value] warning: builtin Frama_C_strlen: possibly reading indeterminate data [value] Recording results for my_strlen [value] Done for function my_strlen tests/non-free/strlen.c:204:[value] assertion got status valid. @@ -191,8 +180,7 @@ tests/non-free/strlen.c:204:[value] assertion got status valid. [value] computing for function my_strlen <- strlen_large_uninit <- main. Called from tests/non-free/strlen.c:208. tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &a + [63..80] }})) -tests/non-free/strlen.c:54:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:54: - possibly reading indeterminate data +tests/non-free/strlen.c:54:[value] warning: builtin Frama_C_strlen: possibly reading indeterminate data [value] Recording results for my_strlen [value] Done for function my_strlen tests/non-free/strlen.c:209:[value] assertion got status valid. @@ -202,7 +190,7 @@ tests/non-free/strlen.c:209:[value] assertion got status valid. [value] computing for function my_strlen <- strlen_large_uninit <- main. Called from tests/non-free/strlen.c:212. tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &a + [45..55] }})) -tests/non-free/strlen.c:54:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:54: +tests/non-free/strlen.c:54:[value] warning: builtin Frama_C_strlen: possible uninitialized values possibly reading indeterminate data [value] Recording results for my_strlen @@ -213,13 +201,11 @@ tests/non-free/strlen.c:213:[value] assertion got status valid. [value] computing for function misc <- main. Called from tests/non-free/strlen.c:314. tests/non-free/strlen.c:241:[value] Call to builtin Frama_C_strlen(({{ &unterminated_string[0] }})) -tests/non-free/strlen.c:241:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:241: - reading indeterminate data +tests/non-free/strlen.c:241:[value] warning: builtin Frama_C_strlen: reading indeterminate data tests/non-free/strlen.c:244:[value] Call to builtin Frama_C_strlen(({{ "Hello World\n" ; "Bonjour Monde\n" }})) tests/non-free/strlen.c:245:[value] assertion got status valid. tests/non-free/strlen.c:248:[value] Call to builtin Frama_C_strlen(({{ &x + {0; 3} }})) -tests/non-free/strlen.c:248:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:248: - possibly reading indeterminate data +tests/non-free/strlen.c:248:[value] warning: builtin Frama_C_strlen: possibly reading indeterminate data tests/non-free/strlen.c:249:[value] assertion got status valid. [value] computing for function Frama_C_interval <- misc <- main. Called from tests/non-free/strlen.c:250. @@ -230,8 +216,7 @@ tests/non-free/strlen.c:252:[value] Call to builtin Frama_C_strlen(({{ "" ; "a" "aaaaaaaaaaaa" ; "aaaaaaaaaaaaa" }})) tests/non-free/strlen.c:253:[value] assertion got status valid. tests/non-free/strlen.c:255:[value] Call to builtin Frama_C_strlen(({{ &loc_char_array[0] }})) -tests/non-free/strlen.c:255:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:255: - reading indeterminate data +tests/non-free/strlen.c:255:[value] warning: builtin Frama_C_strlen: reading indeterminate data tests/non-free/strlen.c:256:[value] Call to builtin Frama_C_strlen(({{ "abc\000\000\000abc" }})) tests/non-free/strlen.c:257:[value] assertion got status valid. tests/non-free/strlen.c:260:[value] Call to builtin Frama_C_strlen(({{ "abc" + {0; 1} ; "ABCD" + {0; 1} }})) @@ -250,16 +235,14 @@ tests/non-free/strlen.c:270:[value] Call to builtin Frama_C_strlen(({{ "mno\000p tests/non-free/strlen.c:270:[value] Call to builtin Frama_C_strlen(({{ "mno\000pqr" + {0; 1; 2; 3; 4; 5; 6; 7} ; "MNOP\000QRS" + {0; 1; 2; 3; 4; 5; 6; 7} }})) tests/non-free/strlen.c:277:[value] Call to builtin Frama_C_strlen(({{ &maybe_init[0] }})) -tests/non-free/strlen.c:277:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:277: - possible uninitialized values +tests/non-free/strlen.c:277:[value] warning: builtin Frama_C_strlen: possible uninitialized values tests/non-free/strlen.c:278:[value] assertion got status valid. [value] Recording results for misc [value] Done for function misc [value] computing for function bitfields <- main. Called from tests/non-free/strlen.c:315. tests/non-free/strlen.c:140:[value] Call to builtin Frama_C_strlen(({{ (char const *)&s }})) -tests/non-free/strlen.c:140:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:140: - reading indeterminate data +tests/non-free/strlen.c:140:[value] warning: builtin Frama_C_strlen: reading indeterminate data [value] Recording results for bitfields [value] Done for function bitfields [value] computing for function bitfields2 <- main. @@ -272,8 +255,7 @@ tests/non-free/strlen.c:156:[value] assertion got status valid. Called from tests/non-free/strlen.c:317. tests/non-free/strlen.c:222:[value] warning: locals {x} escaping the scope of a block of escaping through s tests/non-free/strlen.c:225:[value] Call to builtin Frama_C_strlen(({{ &s[0] }})) -tests/non-free/strlen.c:225:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:225: - possible escaping addresses +tests/non-free/strlen.c:225:[value] warning: builtin Frama_C_strlen: possible escaping addresses tests/non-free/strlen.c:226:[value] assertion got status valid. tests/non-free/strlen.c:228:[value] Call to builtin Frama_C_strlen(({{ &s[0] }})) tests/non-free/strlen.c:229:[value] assertion got status valid. @@ -285,29 +267,26 @@ tests/non-free/strlen.c:287:[value] warning: out of bounds write. assert \valid( tests/non-free/strlen.c:289:[value] warning: out of bounds write. assert \valid(p); tests/non-free/strlen.c:291:[value] warning: out of bounds write. assert \valid(p); tests/non-free/strlen.c:297:[value] Call to builtin Frama_C_strlen(({{ (char const *)&u }})) -tests/non-free/strlen.c:297:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:297: - possible uninitialized values +tests/non-free/strlen.c:297:[value] warning: builtin Frama_C_strlen: possible uninitialized values tests/non-free/strlen.c:298:[value] Call to builtin Frama_C_strlen(({{ (char const *)&r }})) tests/non-free/strlen.c:298:[kernel] more than 200(201) locations to update in array. Approximating. -tests/non-free/strlen.c:298:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:298: - possible uninitialized values +tests/non-free/strlen.c:298:[value] warning: builtin Frama_C_strlen: possible uninitialized values tests/non-free/strlen.c:299:[value] Call to builtin Frama_C_strlen(({{ (char const *)&t }})) tests/non-free/strlen.c:299:[kernel] more than 200(1000000) locations to update in array. Approximating. -tests/non-free/strlen.c:299:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:299: - possible uninitialized values +tests/non-free/strlen.c:299:[value] warning: builtin Frama_C_strlen: possible uninitialized values [value] Called Frama_C_show_each({1}, {1}, {1}) tests/non-free/strlen.c:302:[value] Call to builtin Frama_C_strlen(({{ &u + [-8589934592..8589934588],0%4 }})) -tests/non-free/strlen.c:302:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:302: +tests/non-free/strlen.c:302:[value] warning: builtin Frama_C_strlen: possible uninitialized values possibly reading indeterminate data tests/non-free/strlen.c:303:[value] Call to builtin Frama_C_strlen(({{ &r + [-8589934592..8589934588],0%4 }})) tests/non-free/strlen.c:303:[kernel] more than 200(201) locations to update in array. Approximating. -tests/non-free/strlen.c:303:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:303: +tests/non-free/strlen.c:303:[value] warning: builtin Frama_C_strlen: possible uninitialized values possibly reading indeterminate data tests/non-free/strlen.c:304:[value] Call to builtin Frama_C_strlen(({{ &t + [-8589934592..8589934588],0%4 }})) tests/non-free/strlen.c:304:[kernel] more than 200(1000000) locations to update in array. Approximating. -tests/non-free/strlen.c:304:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:304: +tests/non-free/strlen.c:304:[value] warning: builtin Frama_C_strlen: possible uninitialized values possibly reading indeterminate data [value] Called Frama_C_show_each({0; 1; 2; 3}, [0..800], [0..3999996]) diff --git a/tests/non-free/oracle_bitwise/strnlen.res.oracle b/tests/non-free/oracle_bitwise/strnlen.res.oracle index b32e96527ac203942bf3ed5e3864cf589dcc57e3..6e97c953b59e769c14d09db22dafc451c33d9080 100644 --- a/tests/non-free/oracle_bitwise/strnlen.res.oracle +++ b/tests/non-free/oracle_bitwise/strnlen.res.oracle @@ -18,8 +18,7 @@ tests/non-free/strnlen.i:9:[value] Call to builtin Frama_C_strnlen(({{ &t1[0] }},{3})) tests/non-free/strnlen.i:10:[value] Call to builtin Frama_C_strnlen(({{ &t1[0] }},{5})) tests/non-free/strnlen.i:11:[value] Call to builtin Frama_C_strnlen(({{ &t1[0] }},{6})) -tests/non-free/strnlen.i:11:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen.i:11: - reading indeterminate data +tests/non-free/strnlen.i:11:[value] warning: builtin Frama_C_strnlen: reading indeterminate data tests/non-free/strnlen.i:13:[value] Call to builtin Frama_C_strnlen(({{ &t2[0] }},{3})) tests/non-free/strnlen.i:14:[value] Call to builtin Frama_C_strnlen(({{ &t2[0] }},{5})) tests/non-free/strnlen.i:15:[value] Call to builtin Frama_C_strnlen(({{ &t2[0] }},{6})) diff --git a/tests/non-free/oracle_bitwise/strnlen2.res.oracle b/tests/non-free/oracle_bitwise/strnlen2.res.oracle index 170241239c5d918dd9e75fa0d7fc58ff5a8587b9..993520f015fecb444381bb243fc708439e9df702 100644 --- a/tests/non-free/oracle_bitwise/strnlen2.res.oracle +++ b/tests/non-free/oracle_bitwise/strnlen2.res.oracle @@ -51,29 +51,23 @@ tests/non-free/strnlen2.c:62:[value] assertion got status valid. tests/non-free/strnlen2.c:68:[value] Call to builtin Frama_C_strnlen(({{ &empty_or_non_terminated[0] }},{1})) tests/non-free/strnlen2.c:69:[value] assertion got status valid. tests/non-free/strnlen2.c:73:[value] Call to builtin Frama_C_strnlen(({{ &non_terminated[0] }},{2})) -tests/non-free/strnlen2.c:73:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:73: - reading indeterminate data +tests/non-free/strnlen2.c:73:[value] warning: builtin Frama_C_strnlen: reading indeterminate data tests/non-free/strnlen2.c:79:[value] Call to builtin Frama_C_strnlen(({{ &non_terminated2{[2], [3]} }},{4})) -tests/non-free/strnlen2.c:79:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:79: - reading indeterminate data +tests/non-free/strnlen2.c:79:[value] warning: builtin Frama_C_strnlen: reading indeterminate data [value] Recording results for zero_termination [value] Done for function zero_termination [value] computing for function initialization <- main. Called from tests/non-free/strnlen2.c:491. tests/non-free/strnlen2.c:85:[value] Call to builtin Frama_C_strnlen(({{ &empty_or_uninitialized[0] }},{1})) -tests/non-free/strnlen2.c:85:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:85: - possible uninitialized values +tests/non-free/strnlen2.c:85:[value] warning: builtin Frama_C_strnlen: possible uninitialized values tests/non-free/strnlen2.c:86:[value] assertion got status valid. tests/non-free/strnlen2.c:89:[value] Call to builtin Frama_C_strnlen(({{ &uninitialized[0] }},{1})) -tests/non-free/strnlen2.c:89:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:89: - reading indeterminate data +tests/non-free/strnlen2.c:89:[value] warning: builtin Frama_C_strnlen: reading indeterminate data tests/non-free/strnlen2.c:94:[value] Call to builtin Frama_C_strnlen(({{ &s[0] }},{2})) -tests/non-free/strnlen2.c:94:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:94: - possible uninitialized values +tests/non-free/strnlen2.c:94:[value] warning: builtin Frama_C_strnlen: possible uninitialized values tests/non-free/strnlen2.c:95:[value] assertion got status valid. tests/non-free/strnlen2.c:101:[value] Call to builtin Frama_C_strnlen(({{ &t[0] }},{4})) -tests/non-free/strnlen2.c:101:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:101: - possible uninitialized values +tests/non-free/strnlen2.c:101:[value] warning: builtin Frama_C_strnlen: possible uninitialized values tests/non-free/strnlen2.c:102:[value] assertion got status valid. [value] Recording results for initialization [value] Done for function initialization @@ -105,8 +99,7 @@ tests/non-free/strnlen2.c:157:[value] assertion got status valid. Called from tests/non-free/strnlen2.c:159. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:160:[value] Call to builtin Frama_C_strnlen(({{ &a + [63..80] }},{100})) -tests/non-free/strnlen2.c:160:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:160: - possibly reading indeterminate data +tests/non-free/strnlen2.c:160:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:161:[value] assertion got status valid. [value] computing for function init_array_nondet <- large <- main. Called from tests/non-free/strnlen2.c:163. @@ -117,8 +110,7 @@ tests/non-free/strnlen2.c:138:[value] Call to builtin memset(({{ (void *)&a }},{ Called from tests/non-free/strnlen2.c:164. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:165:[value] Call to builtin Frama_C_strnlen(({{ &a + [50..70] }},{100})) -tests/non-free/strnlen2.c:165:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:165: - possibly reading indeterminate data +tests/non-free/strnlen2.c:165:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:166:[value] assertion got status valid. [value] Recording results for large [value] Done for function large @@ -138,21 +130,19 @@ tests/non-free/strnlen2.c:138:[value] Call to builtin memset(({{ (void *)&a[50] Called from tests/non-free/strnlen2.c:176. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:177:[value] Call to builtin Frama_C_strnlen(({{ &a + [3..30] }},{100})) -tests/non-free/strnlen2.c:177:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:177: - possibly reading indeterminate data +tests/non-free/strnlen2.c:177:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:178:[value] assertion got status valid. [value] computing for function Frama_C_interval <- large_uninit <- main. Called from tests/non-free/strnlen2.c:181. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:182:[value] Call to builtin Frama_C_strnlen(({{ &a + [63..80] }},{100})) -tests/non-free/strnlen2.c:182:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:182: - possibly reading indeterminate data +tests/non-free/strnlen2.c:182:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:183:[value] assertion got status valid. [value] computing for function Frama_C_interval <- large_uninit <- main. Called from tests/non-free/strnlen2.c:185. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:186:[value] Call to builtin Frama_C_strnlen(({{ &a + [45..55] }},{100})) -tests/non-free/strnlen2.c:186:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:186: +tests/non-free/strnlen2.c:186:[value] warning: builtin Frama_C_strnlen: possible uninitialized values possibly reading indeterminate data tests/non-free/strnlen2.c:187:[value] assertion got status valid. @@ -161,14 +151,12 @@ tests/non-free/strnlen2.c:187:[value] assertion got status valid. [value] computing for function misc <- main. Called from tests/non-free/strnlen2.c:494. tests/non-free/strnlen2.c:215:[value] Call to builtin Frama_C_strnlen(({{ &unterminated_string[0] }},{13})) -tests/non-free/strnlen2.c:215:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:215: - reading indeterminate data +tests/non-free/strnlen2.c:215:[value] warning: builtin Frama_C_strnlen: reading indeterminate data tests/non-free/strnlen2.c:218:[value] Call to builtin Frama_C_strnlen(({{ "Hello World\n" ; "Bonjour Monde\n" }}, {14})) tests/non-free/strnlen2.c:219:[value] assertion got status valid. tests/non-free/strnlen2.c:222:[value] Call to builtin Frama_C_strnlen(({{ &x + {0; 3} }},{12})) -tests/non-free/strnlen2.c:222:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:222: - possibly reading indeterminate data +tests/non-free/strnlen2.c:222:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:223:[value] assertion got status valid. [value] computing for function Frama_C_interval <- misc <- main. Called from tests/non-free/strnlen2.c:224. @@ -180,8 +168,7 @@ tests/non-free/strnlen2.c:226:[value] Call to builtin Frama_C_strnlen(({{ "" ; " {13})) tests/non-free/strnlen2.c:227:[value] assertion got status valid. tests/non-free/strnlen2.c:229:[value] Call to builtin Frama_C_strnlen(({{ &loc_char_array[0] }},{5})) -tests/non-free/strnlen2.c:229:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:229: - reading indeterminate data +tests/non-free/strnlen2.c:229:[value] warning: builtin Frama_C_strnlen: reading indeterminate data tests/non-free/strnlen2.c:230:[value] Call to builtin Frama_C_strnlen(({{ "abc\000\000\000abc" }},{9})) tests/non-free/strnlen2.c:231:[value] assertion got status valid. tests/non-free/strnlen2.c:234:[value] Call to builtin Frama_C_strnlen(({{ "abc" + {0; 1} ; "ABCD" + {0; 1} }},{5})) @@ -202,16 +189,14 @@ tests/non-free/strnlen2.c:244:[value] Call to builtin Frama_C_strnlen(({{ "mno\0 "MNOP\000QRS" + {0; 1; 2; 3; 4; 5; 6; 7} }}, {10})) tests/non-free/strnlen2.c:251:[value] Call to builtin Frama_C_strnlen(({{ &maybe_init[0] }},{2})) -tests/non-free/strnlen2.c:251:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:251: - possible uninitialized values +tests/non-free/strnlen2.c:251:[value] warning: builtin Frama_C_strnlen: possible uninitialized values tests/non-free/strnlen2.c:252:[value] assertion got status valid. [value] Recording results for misc [value] Done for function misc [value] computing for function bitfields <- main. Called from tests/non-free/strnlen2.c:495. tests/non-free/strnlen2.c:117:[value] Call to builtin Frama_C_strnlen(({{ (char const *)&s }},{3})) -tests/non-free/strnlen2.c:117:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:117: - reading indeterminate data +tests/non-free/strnlen2.c:117:[value] warning: builtin Frama_C_strnlen: reading indeterminate data [value] Recording results for bitfields [value] Done for function bitfields [value] computing for function bitfields2 <- main. @@ -224,8 +209,7 @@ tests/non-free/strnlen2.c:133:[value] assertion got status valid. Called from tests/non-free/strnlen2.c:497. tests/non-free/strnlen2.c:196:[value] warning: locals {x} escaping the scope of a block of escaping through s tests/non-free/strnlen2.c:199:[value] Call to builtin Frama_C_strnlen(({{ &s[0] }},{4})) -tests/non-free/strnlen2.c:199:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:199: - possible escaping addresses +tests/non-free/strnlen2.c:199:[value] warning: builtin Frama_C_strnlen: possible escaping addresses tests/non-free/strnlen2.c:200:[value] assertion got status valid. tests/non-free/strnlen2.c:202:[value] Call to builtin Frama_C_strnlen(({{ &s[0] }},{4})) tests/non-free/strnlen2.c:203:[value] assertion got status valid. @@ -237,35 +221,32 @@ tests/non-free/strnlen2.c:261:[value] warning: out of bounds write. assert \vali tests/non-free/strnlen2.c:263:[value] warning: out of bounds write. assert \valid(p); tests/non-free/strnlen2.c:265:[value] warning: out of bounds write. assert \valid(p); tests/non-free/strnlen2.c:272:[value] Call to builtin Frama_C_strnlen(({{ (char const *)&u }},{800})) -tests/non-free/strnlen2.c:272:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:272: - possible uninitialized values +tests/non-free/strnlen2.c:272:[value] warning: builtin Frama_C_strnlen: possible uninitialized values tests/non-free/strnlen2.c:273:[value] Call to builtin Frama_C_strnlen(({{ (char const *)&r }},{804})) tests/non-free/strnlen2.c:273:[kernel] more than 200(201) locations to update in array. Approximating. -tests/non-free/strnlen2.c:273:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:273: - possible uninitialized values +tests/non-free/strnlen2.c:273:[value] warning: builtin Frama_C_strnlen: possible uninitialized values tests/non-free/strnlen2.c:274:[value] Call to builtin Frama_C_strnlen(({{ (char const *)&t }},{4000000})) tests/non-free/strnlen2.c:274:[kernel] more than 200(1000000) locations to update in array. Approximating. -tests/non-free/strnlen2.c:274:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:274: - possible uninitialized values +tests/non-free/strnlen2.c:274:[value] warning: builtin Frama_C_strnlen: possible uninitialized values tests/non-free/strnlen2.c:275:[value] assertion got status valid. tests/non-free/strnlen2.c:276:[value] assertion got status valid. tests/non-free/strnlen2.c:277:[value] assertion got status valid. [value] Called Frama_C_show_each({1}, {1}, {1}) tests/non-free/strnlen2.c:282:[value] Call to builtin Frama_C_strnlen(({{ &u + [-8589934592..8589934588],0%4 }}, {801})) -tests/non-free/strnlen2.c:282:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:282: +tests/non-free/strnlen2.c:282:[value] warning: builtin Frama_C_strnlen: possible uninitialized values possibly reading indeterminate data tests/non-free/strnlen2.c:283:[value] Call to builtin Frama_C_strnlen(({{ &r + [-8589934592..8589934588],0%4 }}, {805})) tests/non-free/strnlen2.c:283:[kernel] more than 200(201) locations to update in array. Approximating. -tests/non-free/strnlen2.c:283:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:283: +tests/non-free/strnlen2.c:283:[value] warning: builtin Frama_C_strnlen: possible uninitialized values possibly reading indeterminate data tests/non-free/strnlen2.c:284:[value] Call to builtin Frama_C_strnlen(({{ &t + [-8589934592..8589934588],0%4 }}, {4000001})) tests/non-free/strnlen2.c:284:[kernel] more than 200(1000000) locations to update in array. Approximating. -tests/non-free/strnlen2.c:284:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:284: +tests/non-free/strnlen2.c:284:[value] warning: builtin Frama_C_strnlen: possible uninitialized values possibly reading indeterminate data tests/non-free/strnlen2.c:285:[value] assertion got status valid. @@ -301,18 +282,15 @@ tests/non-free/strnlen2.c:305:[value] assertion got status valid. [value] Called Frama_C_show_each([0..800], [0..804], [0..4000000]) tests/non-free/strnlen2.c:308:[value] Call to builtin Frama_C_strnlen(({{ &u + [-8589934592..8589934588],0%4 }}, {801})) -tests/non-free/strnlen2.c:308:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:308: - possibly reading indeterminate data +tests/non-free/strnlen2.c:308:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:309:[value] Call to builtin Frama_C_strnlen(({{ &r + [-8589934592..8589934588],0%4 }}, {805})) tests/non-free/strnlen2.c:309:[kernel] more than 200(201) locations to update in array. Approximating. -tests/non-free/strnlen2.c:309:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:309: - possibly reading indeterminate data +tests/non-free/strnlen2.c:309:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:310:[value] Call to builtin Frama_C_strnlen(({{ &t + [-8589934592..8589934588],0%4 }}, {4000001})) tests/non-free/strnlen2.c:310:[kernel] more than 200(1000000) locations to update in array. Approximating. -tests/non-free/strnlen2.c:310:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:310: - possibly reading indeterminate data +tests/non-free/strnlen2.c:310:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:311:[value] assertion got status valid. tests/non-free/strnlen2.c:312:[value] assertion got status valid. tests/non-free/strnlen2.c:313:[value] assertion got status valid. @@ -330,8 +308,7 @@ tests/non-free/strnlen2.c:331:[value] assertion got status valid. tests/non-free/strnlen2.c:333:[value] Call to builtin Frama_C_strnlen(({{ &s{[7], [11]} }},{4})) tests/non-free/strnlen2.c:334:[value] assertion got status valid. tests/non-free/strnlen2.c:336:[value] Call to builtin Frama_C_strnlen(({{ &s{[7], [18]} }},{4})) -tests/non-free/strnlen2.c:336:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:336: - possibly reading indeterminate data +tests/non-free/strnlen2.c:336:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:337:[value] assertion got status valid. [value] Recording results for no_zero_but_ok [value] Done for function no_zero_but_ok @@ -397,8 +374,7 @@ tests/non-free/strnlen2.c:406:[value] assertion got status valid. Called from tests/non-free/strnlen2.c:408. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:409:[value] Call to builtin Frama_C_strnlen(({{ &a + [50..70] }},[0..100])) -tests/non-free/strnlen2.c:409:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:409: - possibly reading indeterminate data +tests/non-free/strnlen2.c:409:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:410:[value] assertion got status valid. [value] computing for function Frama_C_interval <- large_n <- main. Called from tests/non-free/strnlen2.c:412. @@ -454,8 +430,7 @@ tests/non-free/strnlen2.c:138:[value] Call to builtin memset(({{ (void *)&a[16] Called from tests/non-free/strnlen2.c:442. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:443:[value] Call to builtin Frama_C_strnlen(({{ &a + [0..9] }},[0..9])) -tests/non-free/strnlen2.c:443:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:443: - possibly reading indeterminate data +tests/non-free/strnlen2.c:443:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:444:[value] assertion got status valid. [value] computing for function Frama_C_interval <- intervals <- main. Called from tests/non-free/strnlen2.c:446. @@ -465,8 +440,7 @@ tests/non-free/strnlen2.c:444:[value] assertion got status valid. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:448:[value] Call to builtin Frama_C_strnlen(({{ &a{[3], [4], [5], [6], [7], [8], [9]} }}, [2..10])) -tests/non-free/strnlen2.c:448:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:448: - possibly reading indeterminate data +tests/non-free/strnlen2.c:448:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:449:[value] assertion got status valid. [value] computing for function Frama_C_interval <- intervals <- main. Called from tests/non-free/strnlen2.c:451. @@ -476,8 +450,7 @@ tests/non-free/strnlen2.c:449:[value] assertion got status valid. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:453:[value] Call to builtin Frama_C_strnlen(({{ &a{[3], [4], [5], [6], [7], [8], [9]} }}, [0..11])) -tests/non-free/strnlen2.c:453:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:453: - possibly reading indeterminate data +tests/non-free/strnlen2.c:453:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:454:[value] assertion got status valid. [value] computing for function Frama_C_interval <- intervals <- main. Called from tests/non-free/strnlen2.c:456. @@ -487,8 +460,7 @@ tests/non-free/strnlen2.c:454:[value] assertion got status valid. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:458:[value] Call to builtin Frama_C_strnlen(({{ &a{[3], [4], [5], [6], [7], [8], [9], [10]} }},[0..9])) -tests/non-free/strnlen2.c:458:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:458: - possibly reading indeterminate data +tests/non-free/strnlen2.c:458:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:459:[value] assertion got status valid. [value] computing for function Frama_C_interval <- intervals <- main. Called from tests/non-free/strnlen2.c:461. @@ -498,8 +470,7 @@ tests/non-free/strnlen2.c:459:[value] assertion got status valid. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:463:[value] Call to builtin Frama_C_strnlen(({{ &a{[3], [4], [5], [6], [7], [8], [9], [10]} }},[0..10])) -tests/non-free/strnlen2.c:463:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:463: - possibly reading indeterminate data +tests/non-free/strnlen2.c:463:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:464:[value] assertion got status valid. [value] computing for function Frama_C_interval <- intervals <- main. Called from tests/non-free/strnlen2.c:466. @@ -509,8 +480,7 @@ tests/non-free/strnlen2.c:464:[value] assertion got status valid. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:468:[value] Call to builtin Frama_C_strnlen(({{ &a{[3], [4], [5], [6], [7], [8], [9], [10]} }},[0..11])) -tests/non-free/strnlen2.c:468:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:468: - possibly reading indeterminate data +tests/non-free/strnlen2.c:468:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:469:[value] assertion got status valid. [value] computing for function Frama_C_interval <- intervals <- main. Called from tests/non-free/strnlen2.c:471. @@ -519,7 +489,7 @@ tests/non-free/strnlen2.c:469:[value] assertion got status valid. Called from tests/non-free/strnlen2.c:472. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:473:[value] Call to builtin Frama_C_strnlen(({{ &a + [3..11] }},[0..9])) -tests/non-free/strnlen2.c:473:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:473: +tests/non-free/strnlen2.c:473:[value] warning: builtin Frama_C_strnlen: possible uninitialized values possibly reading indeterminate data tests/non-free/strnlen2.c:474:[value] assertion got status valid. @@ -530,7 +500,7 @@ tests/non-free/strnlen2.c:474:[value] assertion got status valid. Called from tests/non-free/strnlen2.c:477. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:478:[value] Call to builtin Frama_C_strnlen(({{ &a + [3..11] }},[0..10])) -tests/non-free/strnlen2.c:478:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:478: +tests/non-free/strnlen2.c:478:[value] warning: builtin Frama_C_strnlen: possible uninitialized values possibly reading indeterminate data tests/non-free/strnlen2.c:479:[value] assertion got status valid. @@ -541,7 +511,7 @@ tests/non-free/strnlen2.c:479:[value] assertion got status valid. Called from tests/non-free/strnlen2.c:482. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:483:[value] Call to builtin Frama_C_strnlen(({{ &a + [3..11] }},[0..11])) -tests/non-free/strnlen2.c:483:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:483: +tests/non-free/strnlen2.c:483:[value] warning: builtin Frama_C_strnlen: possible uninitialized values possibly reading indeterminate data tests/non-free/strnlen2.c:484:[value] assertion got status valid. diff --git a/tests/non-free/oracle_equalities/Longinit_sequencer.res.oracle b/tests/non-free/oracle_equalities/Longinit_sequencer.res.oracle index 4cb50421baaa8294501046d5e46d0a5023770935..1779be9b8a91090ddee6a352f999b204c3985233 100644 --- a/tests/non-free/oracle_equalities/Longinit_sequencer.res.oracle +++ b/tests/non-free/oracle_equalities/Longinit_sequencer.res.oracle @@ -369,11 +369,11 @@ tests/non-free/long_init2.c:34:[value] Assigning imprecise value to garbled_mix. Called from tests/non-free/long_init2.c:88. [value] Call to builtin Frama_C_load_state(({13},{{ "tea" }})) [value] Skipping call to init_inner, loading globals state from file: - tests/non-free/result/Longinit_sequencer.sav + tests/non-free/result_equalities/Longinit_sequencer.sav [value] warning: importing garbled mix, locations may have changed -[value] warning: variable `r (id 594)' is not global, possibly an escaping value; ignoring -[value] warning: variable `r2 (id 597)' is not global, possibly an escaping value; ignoring -[value] warning: variable `r2 (id 597)' is not global, possibly an escaping value; ignoring +[value] warning: variable `r (id 602)' is not global, possibly an escaping value; ignoring +[value] warning: variable `r2 (id 605)' is not global, possibly an escaping value; ignoring +[value] warning: variable `r2 (id 605)' is not global, possibly an escaping value; ignoring [value] warning: found new global variable `another_global' [value] Recording results for init_outer [value] Done for function init_outer @@ -603,7 +603,7 @@ tests/non-free/long_init3.c:34:[value] Assigning imprecise value to garbled_mix. inited ∈ {0} [value] Call to builtin Frama_C_load_state(()) [value] Skipping call to init_outer, loading globals state from file: - tests/non-free/result/Longinit_sequencer.sav + tests/non-free/result_equalities/Longinit_sequencer.sav [value] warning: importing garbled mix, locations may have changed [value] warning: found new global variable `yet_another_global' [value] DUMPING STATE of file tests/non-free/long_init3.c line 90 diff --git a/tests/non-free/oracle_equalities/alloc.0.res.oracle b/tests/non-free/oracle_equalities/alloc.0.res.oracle index 3462232225f0ae282d98a0369ce7cad87aa8e856..6bbe7a5e4762c5fd665dca353134d62460540083 100644 --- a/tests/non-free/oracle_equalities/alloc.0.res.oracle +++ b/tests/non-free/oracle_equalities/alloc.0.res.oracle @@ -20,8 +20,8 @@ [value] computing for function malloc <- main. Called from tests/non-free/alloc.c:16. share/libc/stdlib.c:39:[value] allocating variable __malloc_malloc_l39 -share/libc/stdlib.h:164:[value] warning: function malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.) -share/libc/stdlib.h:169:[value] warning: function malloc, behavior no_allocation: postcondition got status invalid. (Behavior may be inactive, no reduction performed.) +share/libc/stdlib.h:177:[value] warning: function malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.) +share/libc/stdlib.h:182:[value] warning: function malloc, behavior no_allocation: postcondition got status invalid. (Behavior may be inactive, no reduction performed.) [value] Recording results for malloc [value] Done for function malloc [value] computing for function malloc <- main. diff --git a/tests/non-free/oracle_equalities/alloc.1.res.oracle b/tests/non-free/oracle_equalities/alloc.1.res.oracle index 225071d1e36343a306615a982abf3901cd41863c..d4e9c812cea8d5ace6f2548c3a280642d4eaf09f 100644 --- a/tests/non-free/oracle_equalities/alloc.1.res.oracle +++ b/tests/non-free/oracle_equalities/alloc.1.res.oracle @@ -21,8 +21,8 @@ [value] computing for function malloc <- main_abs. Called from tests/non-free/alloc.c:50. share/libc/stdlib.c:39:[value] allocating variable __malloc_malloc_l39 -share/libc/stdlib.h:164:[value] warning: function malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.) -share/libc/stdlib.h:169:[value] warning: function malloc, behavior no_allocation: postcondition got status invalid. (Behavior may be inactive, no reduction performed.) +share/libc/stdlib.h:177:[value] warning: function malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.) +share/libc/stdlib.h:182:[value] warning: function malloc, behavior no_allocation: postcondition got status invalid. (Behavior may be inactive, no reduction performed.) [value] Recording results for malloc [value] Done for function malloc tests/non-free/alloc.c:51:[value] warning: signed overflow. assert -2147483648 ≤ -((int)q); diff --git a/tests/non-free/oracle_equalities/allocated.0.res.oracle b/tests/non-free/oracle_equalities/allocated.0.res.oracle index 3b9554b452da8b33c99bc7241bbb839fd839bdc6..b48e805626568c78ee2a2fcc8dc7c47593abd968 100644 --- a/tests/non-free/oracle_equalities/allocated.0.res.oracle +++ b/tests/non-free/oracle_equalities/allocated.0.res.oracle @@ -143,7 +143,7 @@ tests/non-free/allocated.c:123:[value] assertion 'Value,mem_access' got final st \result FROM \nothing [from] ====== END OF DEPENDENCIES ====== [inout] Out (internal) for function main: - __fc_heap_status; i; j; p; tmp; tmp_0; k; tmp_1; size; pb; __retres; + __fc_heap_status; i; j; p; tmp; tmp_3; k; tmp_4; size; pb; __retres; __malloc_main_l25; __malloc_main_l36[0..1]; __malloc_main_l50[0..2]; __malloc_main_l63; __malloc_main_l73; __malloc_w_main_l82[0..2]; __malloc_main_l97[0]; __malloc_main_l114[0..3] diff --git a/tests/non-free/oracle_equalities/allocated.1.res.oracle b/tests/non-free/oracle_equalities/allocated.1.res.oracle index 8aafe4e383b3b9989d647ec53562186e60091745..53cbaa8819d43a693f717f51eb496decb0b3d485 100644 --- a/tests/non-free/oracle_equalities/allocated.1.res.oracle +++ b/tests/non-free/oracle_equalities/allocated.1.res.oracle @@ -510,7 +510,7 @@ tests/non-free/allocated.c:123:[value] assertion 'Value,mem_access' got final st \result FROM \nothing [from] ====== END OF DEPENDENCIES ====== [inout] Out (internal) for function main: - __fc_heap_status; i; j; p; tmp; tmp_0; k; tmp_1; size; pb; __retres; + __fc_heap_status; i; j; p; tmp; tmp_3; k; tmp_4; size; pb; __retres; __malloc_main_l25; __malloc_main_l36[0..1]; __malloc_main_l50[0..1]; __malloc_main_l50_0[0..2]; __malloc_main_l63; __malloc_main_l63_0; __malloc_main_l63_1; __malloc_main_l63_2; __malloc_main_l73; diff --git a/tests/non-free/oracle_equalities/from_result.res.oracle b/tests/non-free/oracle_equalities/from_result.res.oracle index a7d3a58c3a588c08ee08c60fc846e6d16d6d78f9..36a5531a9c1a3ca8b875d25eb3e169cd391a8d74 100644 --- a/tests/non-free/oracle_equalities/from_result.res.oracle +++ b/tests/non-free/oracle_equalities/from_result.res.oracle @@ -13,8 +13,8 @@ [value] computing for function malloc <- bar <- main. Called from tests/non-free/from_result.c:18. share/libc/stdlib.c:39:[value] allocating variable __malloc_malloc_l39 -share/libc/stdlib.h:164:[value] warning: function malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.) -share/libc/stdlib.h:169:[value] warning: function malloc, behavior no_allocation: postcondition got status invalid. (Behavior may be inactive, no reduction performed.) +share/libc/stdlib.h:177:[value] warning: function malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.) +share/libc/stdlib.h:182:[value] warning: function malloc, behavior no_allocation: postcondition got status invalid. (Behavior may be inactive, no reduction performed.) [value] Recording results for malloc [value] Done for function malloc [value] Recording results for bar diff --git a/tests/non-free/oracle_equalities/malloc_individual.res.oracle b/tests/non-free/oracle_equalities/malloc_individual.res.oracle index b0d76ac1835da194e921db00a562e74b5c7d7665..b37ac463bb47a462e6f2bb1fb252b05798dd53f5 100644 --- a/tests/non-free/oracle_equalities/malloc_individual.res.oracle +++ b/tests/non-free/oracle_equalities/malloc_individual.res.oracle @@ -15,8 +15,8 @@ [value] computing for function malloc <- main. Called from tests/non-free/malloc_individual.c:9. share/libc/stdlib.c:39:[value] allocating variable __malloc_malloc_l39 -share/libc/stdlib.h:164:[value] warning: function malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.) -share/libc/stdlib.h:169:[value] warning: function malloc, behavior no_allocation: postcondition got status invalid. (Behavior may be inactive, no reduction performed.) +share/libc/stdlib.h:177:[value] warning: function malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.) +share/libc/stdlib.h:182:[value] warning: function malloc, behavior no_allocation: postcondition got status invalid. (Behavior may be inactive, no reduction performed.) [value] Recording results for malloc [value] Done for function malloc tests/non-free/malloc_individual.c:13:[value] warning: accessing uninitialized left-value. assert \initialized(p); diff --git a/tests/non-free/oracle_equalities/memchr.res.oracle b/tests/non-free/oracle_equalities/memchr.res.oracle index a0ddf3687981b4b2434afc8c02f12a384ecf4f8e..427a520aa375040739ada2bec8f1bce28cf6a2f7 100644 --- a/tests/non-free/oracle_equalities/memchr.res.oracle +++ b/tests/non-free/oracle_equalities/memchr.res.oracle @@ -79,16 +79,14 @@ tests/non-free/memchr.c:112:[value] assertion got status valid. [value] computing for function my_memchr <- memchr_zero_termination <- main. Called from tests/non-free/memchr.c:113. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&non_terminated }},{0},{2})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: reading indeterminate data [value] Recording results for my_memchr [value] Done for function my_memchr [value] computing for function my_memchr <- memchr_zero_termination <- main. Called from tests/non-free/memchr.c:119. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&non_terminated2{[2], [3]} }}, {0},{4})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: reading indeterminate data [value] Recording results for my_memchr [value] Done for function my_memchr [value] Recording results for memchr_zero_termination @@ -99,8 +97,7 @@ tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-f Called from tests/non-free/memchr.c:127. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&empty_or_uninitialized }}, {0},{1})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possible uninitialized values +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values [value] Called Frama_C_show_each_mymemchr({0}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -108,15 +105,13 @@ tests/non-free/memchr.c:128:[value] assertion got status valid. [value] computing for function my_memchr <- memchr_initialization <- main. Called from tests/non-free/memchr.c:131. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&uninitialized }},{0},{1})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: reading indeterminate data [value] Recording results for my_memchr [value] Done for function my_memchr [value] computing for function my_memchr <- memchr_initialization <- main. Called from tests/non-free/memchr.c:136. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&s }},{0},{2})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possible uninitialized values +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values [value] Called Frama_C_show_each_mymemchr({1}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -124,8 +119,7 @@ tests/non-free/memchr.c:137:[value] assertion got status valid. [value] computing for function my_memchr <- memchr_initialization <- main. Called from tests/non-free/memchr.c:143. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&t }},{0},{4})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possible uninitialized values +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values [value] Called Frama_C_show_each_mymemchr({3}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -147,9 +141,8 @@ share/libc/__fc_builtin.h:50:[value] function Frama_C_interval: precondition got [value] computing for function my_memchr <- memchr_large <- main. Called from tests/non-free/memchr.c:196. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [3..30] }},{0},{100})) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -164,9 +157,8 @@ tests/non-free/memchr.c:198:[value] warning: assertion 'refined' got status unkn [value] computing for function my_memchr <- memchr_large <- main. Called from tests/non-free/memchr.c:201. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [5..17] }},{0},{100})) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -181,9 +173,8 @@ tests/non-free/memchr.c:203:[value] warning: assertion 'refined' got status unkn [value] computing for function my_memchr <- memchr_large <- main. Called from tests/non-free/memchr.c:206. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [60..74] }},{0},{100})) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -198,9 +189,8 @@ tests/non-free/memchr.c:208:[value] warning: assertion 'refined' got status unkn [value] computing for function my_memchr <- memchr_large <- main. Called from tests/non-free/memchr.c:211. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [63..80] }},{0},{100})) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -220,9 +210,8 @@ tests/non-free/memchr.c:184:[value] Call to builtin memset(({{ (void *)&a }},{0; [value] computing for function my_memchr <- memchr_large <- main. Called from tests/non-free/memchr.c:217. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [50..70] }},{0},{100})) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -251,9 +240,8 @@ tests/non-free/memchr.c:184:[value] Call to builtin memset(({{ (void *)&a[50] }} [value] computing for function my_memchr <- memchr_large_uninit <- main. Called from tests/non-free/memchr.c:232. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [3..30] }},{0},{100})) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -268,9 +256,8 @@ tests/non-free/memchr.c:234:[value] warning: assertion 'refined' got status unkn [value] computing for function my_memchr <- memchr_large_uninit <- main. Called from tests/non-free/memchr.c:238. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [63..80] }},{0},{100})) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -285,9 +272,8 @@ tests/non-free/memchr.c:240:[value] warning: assertion 'refined' got status unkn [value] computing for function my_memchr <- memchr_large_uninit <- main. Called from tests/non-free/memchr.c:243. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [45..55] }},{0},{100})) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -323,8 +309,7 @@ tests/non-free/memchr.c:269:[value] assertion got status valid. Called from tests/non-free/memchr.c:299. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&unterminated_string }}, {0},{13})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: reading indeterminate data [value] Recording results for my_memchr [value] Done for function my_memchr [value] computing for function my_memchr <- memchr_misc <- main. @@ -338,8 +323,7 @@ tests/non-free/memchr.c:303:[value] assertion got status valid. [value] computing for function my_memchr2 <- memchr_misc <- main. Called from tests/non-free/memchr.c:305. tests/non-free/memchr.c:64:[value] Call to builtin Frama_C_memchr(({{ &x + {0; 3} }},{0},{12})) -tests/non-free/memchr.c:64:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:64: - possibly reading indeterminate data +tests/non-free/memchr.c:64:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mymemchr2({0}) [value] Recording results for my_memchr2 [value] Done for function my_memchr2 @@ -347,8 +331,7 @@ tests/non-free/memchr.c:306:[value] assertion got status valid. [value] computing for function my_memchr <- memchr_misc <- main. Called from tests/non-free/memchr.c:308. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&loc_char_array }},{0},{5})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: reading indeterminate data [value] Recording results for my_memchr [value] Done for function my_memchr [value] computing for function my_memchr <- memchr_misc <- main. @@ -441,8 +424,7 @@ tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "mno\000pq [value] computing for function my_memchr <- memchr_misc2 <- main. Called from tests/non-free/memchr.c:341. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&maybe_init }},{0},{2})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possible uninitialized values +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values [value] Called Frama_C_show_each_mymemchr({1}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -452,8 +434,7 @@ tests/non-free/memchr.c:342:[value] assertion got status valid. [value] computing for function memchr_bitfields <- main. Called from tests/non-free/memchr.c:653. tests/non-free/memchr.c:161:[value] Call to builtin Frama_C_memchr(({{ (void const *)&s }},{0},{3})) -tests/non-free/memchr.c:161:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:161: - reading indeterminate data +tests/non-free/memchr.c:161:[value] warning: builtin Frama_C_memchr: reading indeterminate data [value] Recording results for memchr_bitfields [value] Done for function memchr_bitfields [value] computing for function memchr_bitfields2 <- main. @@ -473,8 +454,7 @@ tests/non-free/memchr.c:255:[value] warning: locals {x} escaping the scope of a [value] computing for function my_memchr <- memchr_escaping <- main. Called from tests/non-free/memchr.c:258. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&s }},{0},{4})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possible escaping addresses +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible escaping addresses [value] Called Frama_C_show_each_mymemchr({0}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -496,8 +476,7 @@ tests/non-free/memchr.c:356:[value] warning: out of bounds write. assert \valid( [value] computing for function my_memchr <- memchr_big_array <- main. Called from tests/non-free/memchr.c:364. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&u }},{0},{800})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possible uninitialized values +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values [value] Called Frama_C_show_each_mymemchr({1}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -505,8 +484,7 @@ tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-f Called from tests/non-free/memchr.c:365. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&r }},{0},{805})) tests/non-free/memchr.c:50:[kernel] more than 200(201) locations to update in array. Approximating. -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possible uninitialized values +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values [value] Called Frama_C_show_each_mymemchr({1}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -514,8 +492,7 @@ tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-f Called from tests/non-free/memchr.c:366. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&t }},{0},{4000001})) tests/non-free/memchr.c:50:[kernel] more than 200(1000000) locations to update in array. Approximating. -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possible uninitialized values +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values [value] Called Frama_C_show_each_mymemchr({1}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -526,24 +503,21 @@ tests/non-free/memchr.c:370:[value] assertion got status valid. [value] computing for function my_memchr <- memchr_big_array <- main. Called from tests/non-free/memchr.c:372. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&u }},{0},{1600})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possible uninitialized values +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values [value] Called Frama_C_show_each_mymemchr({1}) [value] Recording results for my_memchr [value] Done for function my_memchr [value] computing for function my_memchr <- memchr_big_array <- main. Called from tests/non-free/memchr.c:373. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&r }},{0},{1608})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possible uninitialized values +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values [value] Called Frama_C_show_each_mymemchr({1}) [value] Recording results for my_memchr [value] Done for function my_memchr [value] computing for function my_memchr <- memchr_big_array <- main. Called from tests/non-free/memchr.c:374. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&t }},{0},{8000000})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possible uninitialized values +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values [value] Called Frama_C_show_each_mymemchr({1}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -586,8 +560,7 @@ tests/non-free/memchr.c:396:[value] assertion got status valid. [value] computing for function my_memchr2 <- memchr_no_zero_but_ok <- main. Called from tests/non-free/memchr.c:397. tests/non-free/memchr.c:64:[value] Call to builtin Frama_C_memchr(({{ (void const *)&s{[7], [18]} }},{0},{5})) -tests/non-free/memchr.c:64:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:64: - possibly reading indeterminate data +tests/non-free/memchr.c:64:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mymemchr2({10; 18; 19}) [value] Recording results for my_memchr2 [value] Done for function my_memchr2 @@ -656,9 +629,8 @@ tests/non-free/memchr.c:184:[value] Call to builtin memset(({{ (void *)&a }},{1; [value] computing for function my_memchr <- memchr_large_n <- main. Called from tests/non-free/memchr.c:443. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [3..30] }},{0},[10..20])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -670,9 +642,8 @@ tests/non-free/memchr.c:445:[value] warning: assertion 'refined' got status unkn [value] computing for function my_memchr <- memchr_large_n <- main. Called from tests/non-free/memchr.c:449. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [3..30] }},{0},[10..20])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -684,9 +655,8 @@ tests/non-free/memchr.c:451:[value] warning: assertion 'refined' got status unkn [value] computing for function my_memchr <- memchr_large_n <- main. Called from tests/non-free/memchr.c:454. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [3..30] }},{0},[10..20])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -701,9 +671,8 @@ tests/non-free/memchr.c:456:[value] warning: assertion 'refined' got status unkn [value] computing for function my_memchr <- memchr_large_n <- main. Called from tests/non-free/memchr.c:459. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [5..17] }},{0},[10..20])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -718,9 +687,8 @@ tests/non-free/memchr.c:461:[value] warning: assertion 'refined' got status unkn [value] computing for function my_memchr <- memchr_large_n <- main. Called from tests/non-free/memchr.c:464. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [60..74] }},{0},[10..20])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -735,9 +703,8 @@ tests/non-free/memchr.c:466:[value] warning: assertion 'refined' got status unkn [value] computing for function my_memchr <- memchr_large_n <- main. Called from tests/non-free/memchr.c:469. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [63..80] }},{0},[10..20])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -757,9 +724,8 @@ tests/non-free/memchr.c:184:[value] Call to builtin memset(({{ (void *)&a }},{0; [value] computing for function my_memchr <- memchr_large_n <- main. Called from tests/non-free/memchr.c:475. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [50..70] }},{0},[10..20])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -773,9 +739,8 @@ tests/non-free/memchr.c:476:[value] assertion got status valid. [value] computing for function my_memchr <- memchr_large_n <- main. Called from tests/non-free/memchr.c:479. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [50..70] }},{0},[0..100])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -792,9 +757,8 @@ tests/non-free/memchr.c:480:[value] assertion got status valid. [value] computing for function my_memchr <- memchr_large_n <- main. Called from tests/non-free/memchr.c:484. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [0..10] }},{0},[0..90])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -865,9 +829,8 @@ tests/non-free/memchr.c:184:[value] Call to builtin memset(({{ (void *)&a[16] }} [value] computing for function my_memchr <- memchr_intervals <- main. Called from tests/non-free/memchr.c:516. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [0..9] }},{0},[0..10])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -886,8 +849,7 @@ tests/non-free/memchr.c:518:[value] warning: assertion 'refined' got status unkn Called from tests/non-free/memchr.c:522. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&a{[3], [4], [5], [6], [7], [8], [9]} }},{0},[2..10])) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possibly reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mymemchr({-1; 7; 8; 9}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -902,8 +864,7 @@ tests/non-free/memchr.c:523:[value] assertion got status valid. Called from tests/non-free/memchr.c:527. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&a{[3], [4], [5], [6], [7], [8], [9]} }},{0},[0..11])) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possibly reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mymemchr({-1; 7; 8; 9}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -919,8 +880,7 @@ tests/non-free/memchr.c:528:[value] assertion got status valid. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&a{[3], [4], [5], [6], [7], [8], [9], [10]} }}, {0},[0..9])) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possibly reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mymemchr({-1; 7; 8; 9}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -936,8 +896,7 @@ tests/non-free/memchr.c:533:[value] assertion got status valid. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&a{[3], [4], [5], [6], [7], [8], [9], [10]} }}, {0},[0..10])) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possibly reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mymemchr({-1; 7; 8; 9}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -953,8 +912,7 @@ tests/non-free/memchr.c:538:[value] assertion got status valid. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&a{[3], [4], [5], [6], [7], [8], [9], [10]} }}, {0},[0..11])) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possibly reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mymemchr({-1; 7; 8; 9}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -968,9 +926,8 @@ tests/non-free/memchr.c:543:[value] assertion got status valid. [value] computing for function my_memchr <- memchr_intervals <- main. Called from tests/non-free/memchr.c:547. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [3..11] }},{0},[0..10])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -987,9 +944,8 @@ tests/non-free/memchr.c:548:[value] assertion got status valid. [value] computing for function my_memchr <- memchr_intervals <- main. Called from tests/non-free/memchr.c:552. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [3..11] }},{0},[0..10])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -1006,9 +962,8 @@ tests/non-free/memchr.c:553:[value] assertion got status valid. [value] computing for function my_memchr <- memchr_intervals <- main. Called from tests/non-free/memchr.c:557. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [3..11] }},{0},[0..11])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -1028,8 +983,7 @@ tests/non-free/memchr.c:558:[value] assertion got status valid. memchr_small_sets_chars <- main. Called from tests/non-free/memchr.c:566. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "abc" + {0; 1} }},{97},{4})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possibly reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mymemchr({0}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -1124,8 +1078,7 @@ tests/non-free/memchr.c:606:[value] assertion got status valid. memchr_small_sets_chars <- main. Called from tests/non-free/memchr.c:566. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "abc" + {0; 1} }},{97; 98},{4})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possibly reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mymemchr({-1; 0; 1}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -1174,8 +1127,7 @@ tests/non-free/memchr.c:617:[value] assertion got status valid. memchr_small_sets_chars <- main. Called from tests/non-free/memchr.c:566. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "abc" + {0; 1} }},{98; 99},{4})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possibly reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mymemchr({-1; 1; 2}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -1229,8 +1181,7 @@ tests/non-free/memchr.c:629:[value] assertion got status valid. memchr_small_sets_chars <- main. Called from tests/non-free/memchr.c:566. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "abc" + {0; 1} }},{0; 98; 99},{4})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possibly reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mymemchr({-1; 1; 2; 3}) [value] Recording results for my_memchr [value] Done for function my_memchr diff --git a/tests/non-free/oracle_equalities/str_allocated.res.oracle b/tests/non-free/oracle_equalities/str_allocated.res.oracle index 72baddb1c630b1fc7f66d06a87d179617bb60111..e5e44c9184390537d66e1c900a2bfe5efacc08bb 100644 --- a/tests/non-free/oracle_equalities/str_allocated.res.oracle +++ b/tests/non-free/oracle_equalities/str_allocated.res.oracle @@ -17,8 +17,7 @@ tests/non-free/str_allocated.c:12:[value:malloc] resizing variable `__malloc_w_m tests/non-free/str_allocated.c:14:[value] warning: accessing uninitialized left-value. assert \initialized(&b); tests/non-free/str_allocated.c:14:[value] Call to builtin Frama_C_memchr(({{ (void const *)&__malloc_w_memchr_bug_l12 }}, {1},{1})) -tests/non-free/str_allocated.c:14:[value] warning: built-in Frama_C_memchr: tests/non-free/str_allocated.c:14: - reading indeterminate data +tests/non-free/str_allocated.c:14:[value] warning: builtin Frama_C_memchr: reading indeterminate data [value] Recording results for memchr_bug [value] Done for function memchr_bug [value] Recording results for main diff --git a/tests/non-free/oracle_equalities/strchr.res.oracle b/tests/non-free/oracle_equalities/strchr.res.oracle index e1b504509de5f35f8c61cea27ae8d39803ef4327..a49bc2418f65a65e8c5c8f72600cc045d15bd1ad 100644 --- a/tests/non-free/oracle_equalities/strchr.res.oracle +++ b/tests/non-free/oracle_equalities/strchr.res.oracle @@ -53,8 +53,7 @@ tests/non-free/strchr.c:91:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_small_sets <- main. Called from tests/non-free/strchr.c:95. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t[0] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr({0; 1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -66,8 +65,7 @@ tests/non-free/strchr.c:96:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_zero_termination <- main. Called from tests/non-free/strchr.c:104. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &empty_or_non_terminated[0] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr({0}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -75,15 +73,13 @@ tests/non-free/strchr.c:105:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_zero_termination <- main. Called from tests/non-free/strchr.c:109. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &non_terminated[0] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Recording results for my_strchr [value] Done for function my_strchr [value] computing for function my_strchr <- strchr_zero_termination <- main. Called from tests/non-free/strchr.c:115. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &non_terminated2[2] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Recording results for my_strchr [value] Done for function my_strchr [value] Recording results for strchr_zero_termination @@ -93,8 +89,7 @@ tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-f [value] computing for function my_strchr <- strchr_initialization <- main. Called from tests/non-free/strchr.c:123. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &empty_or_uninitialized[0] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possible uninitialized values +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possible uninitialized values [value] Called Frama_C_show_each_mystrchr({0}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -102,15 +97,13 @@ tests/non-free/strchr.c:124:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_initialization <- main. Called from tests/non-free/strchr.c:127. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &uninitialized[0] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Recording results for my_strchr [value] Done for function my_strchr [value] computing for function my_strchr <- strchr_initialization <- main. Called from tests/non-free/strchr.c:132. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &s[0] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possible uninitialized values +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possible uninitialized values [value] Called Frama_C_show_each_mystrchr({1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -118,8 +111,7 @@ tests/non-free/strchr.c:133:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_initialization <- main. Called from tests/non-free/strchr.c:139. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t[0] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possible uninitialized values +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possible uninitialized values [value] Called Frama_C_show_each_mystrchr({3}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -141,9 +133,8 @@ share/libc/__fc_builtin.h:50:[value] function Frama_C_interval: precondition got [value] computing for function my_strchr <- strchr_large <- main. Called from tests/non-free/strchr.c:192. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &a + [3..30] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -157,9 +148,8 @@ tests/non-free/strchr.c:193:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_large <- main. Called from tests/non-free/strchr.c:196. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &a + [5..17] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -174,9 +164,8 @@ tests/non-free/strchr.c:198:[value] warning: assertion 'refined' got status unkn [value] computing for function my_strchr <- strchr_large <- main. Called from tests/non-free/strchr.c:201. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &a + [60..74] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -191,9 +180,8 @@ tests/non-free/strchr.c:203:[value] warning: assertion 'refined' got status unkn [value] computing for function my_strchr <- strchr_large <- main. Called from tests/non-free/strchr.c:206. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &a + [63..80] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -213,9 +201,8 @@ tests/non-free/strchr.c:180:[value] Call to builtin memset(({{ (void *)&a }},{0; [value] computing for function my_strchr <- strchr_large <- main. Called from tests/non-free/strchr.c:212. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &a + [50..70] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -243,9 +230,8 @@ tests/non-free/strchr.c:180:[value] Call to builtin memset(({{ (void *)&a[50] }} [value] computing for function my_strchr <- strchr_large_uninit <- main. Called from tests/non-free/strchr.c:226. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &a + [3..30] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -260,9 +246,8 @@ tests/non-free/strchr.c:228:[value] warning: assertion 'refined' got status unkn [value] computing for function my_strchr <- strchr_large_uninit <- main. Called from tests/non-free/strchr.c:232. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &a + [63..80] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -277,9 +262,8 @@ tests/non-free/strchr.c:234:[value] warning: assertion 'refined' got status unkn [value] computing for function my_strchr <- strchr_large_uninit <- main. Called from tests/non-free/strchr.c:237. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &a + [45..55] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -314,8 +298,7 @@ tests/non-free/strchr.c:263:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_misc <- main. Called from tests/non-free/strchr.c:293. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &unterminated_string[0] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Recording results for my_strchr [value] Done for function my_strchr [value] computing for function my_strchr <- strchr_misc <- main. @@ -329,8 +312,7 @@ tests/non-free/strchr.c:297:[value] assertion got status valid. [value] computing for function my_strchr2 <- strchr_misc <- main. Called from tests/non-free/strchr.c:299. tests/non-free/strchr.c:62:[value] Call to builtin Frama_C_strchr(({{ &x + {0; 3} }},{0})) -tests/non-free/strchr.c:62:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:62: - possibly reading indeterminate data +tests/non-free/strchr.c:62:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr2({0}) [value] Recording results for my_strchr2 [value] Done for function my_strchr2 @@ -338,8 +320,7 @@ tests/non-free/strchr.c:300:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_misc <- main. Called from tests/non-free/strchr.c:302. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &loc_char_array[0] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Recording results for my_strchr [value] Done for function my_strchr [value] computing for function my_strchr <- strchr_misc <- main. @@ -430,8 +411,7 @@ tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "mno\000pq [value] computing for function my_strchr <- strchr_misc2 <- main. Called from tests/non-free/strchr.c:335. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &maybe_init[0] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possible uninitialized values +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possible uninitialized values [value] Called Frama_C_show_each_mystrchr({1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -441,8 +421,7 @@ tests/non-free/strchr.c:336:[value] assertion got status valid. [value] computing for function strchr_bitfields <- main. Called from tests/non-free/strchr.c:540. tests/non-free/strchr.c:157:[value] Call to builtin Frama_C_strchr(({{ (char const *)&s }},{0})) -tests/non-free/strchr.c:157:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:157: - reading indeterminate data +tests/non-free/strchr.c:157:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Recording results for strchr_bitfields [value] Done for function strchr_bitfields [value] computing for function strchr_bitfields2 <- main. @@ -462,8 +441,7 @@ tests/non-free/strchr.c:249:[value] warning: locals {x} escaping the scope of a [value] computing for function my_strchr <- strchr_escaping <- main. Called from tests/non-free/strchr.c:252. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &s[0] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possible escaping addresses +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possible escaping addresses [value] Called Frama_C_show_each_mystrchr({0}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -485,8 +463,7 @@ tests/non-free/strchr.c:350:[value] warning: out of bounds write. assert \valid( [value] computing for function my_strchr <- strchr_big_array <- main. Called from tests/non-free/strchr.c:359. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ (char const *)&u }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possible uninitialized values +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possible uninitialized values [value] Called Frama_C_show_each_mystrchr({1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -494,8 +471,7 @@ tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-f Called from tests/non-free/strchr.c:360. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ (char const *)&r }},{0})) tests/non-free/strchr.c:49:[kernel] more than 200(201) locations to update in array. Approximating. -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possible uninitialized values +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possible uninitialized values [value] Called Frama_C_show_each_mystrchr({1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -503,8 +479,7 @@ tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-f Called from tests/non-free/strchr.c:361. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ (char const *)&t }},{0})) tests/non-free/strchr.c:49:[kernel] more than 200(1000000) locations to update in array. Approximating. -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possible uninitialized values +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possible uninitialized values [value] Called Frama_C_show_each_mystrchr({1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -515,9 +490,8 @@ tests/non-free/strchr.c:365:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_big_array <- main. Called from tests/non-free/strchr.c:367. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &u + [0..4294967295] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -527,9 +501,8 @@ tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-f [value] computing for function my_strchr <- strchr_big_array <- main. Called from tests/non-free/strchr.c:368. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &r + [0..4294967295] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -539,9 +512,8 @@ tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-f [value] computing for function my_strchr <- strchr_big_array <- main. Called from tests/non-free/strchr.c:369. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t + [0..4294967295] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -576,24 +548,21 @@ tests/non-free/strchr.c:386:[value] warning: out of bounds write. assert \valid( [value] computing for function my_strchr <- strchr_big_array <- main. Called from tests/non-free/strchr.c:387. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ (char const *)&u }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr([0..799]) [value] Recording results for my_strchr [value] Done for function my_strchr [value] computing for function my_strchr <- strchr_big_array <- main. Called from tests/non-free/strchr.c:388. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ (char const *)&r }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr([0..803]) [value] Recording results for my_strchr [value] Done for function my_strchr [value] computing for function my_strchr <- strchr_big_array <- main. Called from tests/non-free/strchr.c:389. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ (char const *)&t }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr([0..3999999]) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -604,9 +573,8 @@ tests/non-free/strchr.c:393:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_big_array <- main. Called from tests/non-free/strchr.c:395. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &u + [0..4294967295] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -616,9 +584,8 @@ tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-f [value] computing for function my_strchr <- strchr_big_array <- main. Called from tests/non-free/strchr.c:396. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &r + [0..4294967295] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -628,9 +595,8 @@ tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-f [value] computing for function my_strchr <- strchr_big_array <- main. Called from tests/non-free/strchr.c:397. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t + [0..4294967295] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -672,8 +638,7 @@ tests/non-free/strchr.c:421:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_no_zero_but_ok <- main. Called from tests/non-free/strchr.c:423. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &s{[7], [11]} }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr({10; 14; 15; 16; 17; 18; 19}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -681,8 +646,7 @@ tests/non-free/strchr.c:424:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_no_zero_but_ok <- main. Called from tests/non-free/strchr.c:426. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &s{[7], [18]} }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr({10; 18; 19}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -706,8 +670,7 @@ tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "abc" + {0 strchr_small_sets_chars <- main. Called from tests/non-free/strchr.c:438. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "\000bc" + {0; 1} }},{97})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Called Frama_C_show_each_mystrchr({-1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -715,8 +678,7 @@ tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-f strchr_small_sets_chars <- main. Called from tests/non-free/strchr.c:440. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "" }},{97})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Called Frama_C_show_each_mystrchr({-1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -724,8 +686,7 @@ tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-f strchr_small_sets_chars <- main. Called from tests/non-free/strchr.c:443. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "b\000c" + {0; 2} }},{97})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Called Frama_C_show_each_mystrchr({-1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -733,8 +694,7 @@ tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-f strchr_small_sets_chars <- main. Called from tests/non-free/strchr.c:447. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t[0] }},{97})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr({0; 1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -767,8 +727,7 @@ tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "\000bc" + strchr_small_sets_chars <- main. Called from tests/non-free/strchr.c:440. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "" }},{98})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Called Frama_C_show_each_mystrchr({-1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -783,8 +742,7 @@ tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "b\000c" + strchr_small_sets_chars <- main. Called from tests/non-free/strchr.c:447. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t[0] }},{98})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr({0; 1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -818,8 +776,7 @@ tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "\000bc" + strchr_small_sets_chars <- main. Called from tests/non-free/strchr.c:440. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "" }},{97; 98})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Called Frama_C_show_each_mystrchr({-1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -834,8 +791,7 @@ tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "b\000c" + strchr_small_sets_chars <- main. Called from tests/non-free/strchr.c:447. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t[0] }},{97; 98})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr({0; 1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -869,8 +825,7 @@ tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "\000bc" + strchr_small_sets_chars <- main. Called from tests/non-free/strchr.c:440. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "" }},{98; 99})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Called Frama_C_show_each_mystrchr({-1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -885,8 +840,7 @@ tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "b\000c" + strchr_small_sets_chars <- main. Called from tests/non-free/strchr.c:447. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t[0] }},{98; 99})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr({0; 1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -935,8 +889,7 @@ tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "b\000c" + strchr_small_sets_chars <- main. Called from tests/non-free/strchr.c:447. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t[0] }},{0; 98; 99})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr({-1; 0; 1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -968,8 +921,7 @@ tests/non-free/strchr.c:512:[value] assertion got status valid. Called from tests/non-free/strchr.c:516. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t[0] ; "ABCDEFGHIJKLMNOPQRSTUVWXYZ" }}, [-128..127])) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Called Frama_C_show_each_mystrchr([-1..26]) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -983,8 +935,7 @@ tests/non-free/strchr.c:180:[value] Call to builtin memset(({{ (void *)&t }},{0; Called from tests/non-free/strchr.c:519. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t[0] ; "ABCDEFGHIJKLMNOPQRSTUVWXYZ" }}, [-128..127])) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr([-1..29]) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -994,14 +945,8 @@ tests/non-free/strchr.c:520:[value] assertion got status valid. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t + [0..4294967295] ; "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + [0..4294967295] }},[-128..127])) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possible uninitialized values - possible escaping addresses - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -1018,7 +963,7 @@ tests/non-free/strchr.c:522:[value] assertion got status valid. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ garbled mix of &{s; "hello"} (origin: Arithmetic {tests/non-free/strchr.c:49}) }},{1})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: string argument is too imprecise, cannot compute a useful result. [value] Called Frama_C_show_each_mystrchr({-1}) [value] Recording results for my_strchr diff --git a/tests/non-free/oracle_equalities/strlen.res.oracle b/tests/non-free/oracle_equalities/strlen.res.oracle index ec734ef545879094fed9bf142a447a25b8ceb433..a5f44175539bd1d22c10dbb76a8664ee3b74badc 100644 --- a/tests/non-free/oracle_equalities/strlen.res.oracle +++ b/tests/non-free/oracle_equalities/strlen.res.oracle @@ -43,23 +43,19 @@ tests/non-free/strlen.c:71:[value] assertion got status valid. tests/non-free/strlen.c:75:[value] Call to builtin Frama_C_strlen(({{ "b\000c" + {0; 2} }})) tests/non-free/strlen.c:76:[value] assertion got status valid. tests/non-free/strlen.c:81:[value] Call to builtin Frama_C_strlen(({{ &t[0] }})) -tests/non-free/strlen.c:81:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:81: - possibly reading indeterminate data +tests/non-free/strlen.c:81:[value] warning: builtin Frama_C_strlen: possibly reading indeterminate data tests/non-free/strlen.c:82:[value] assertion got status valid. [value] Recording results for small_sets [value] Done for function small_sets [value] computing for function zero_termination <- main. Called from tests/non-free/strlen.c:310. tests/non-free/strlen.c:89:[value] Call to builtin Frama_C_strlen(({{ &empty_or_non_terminated[0] }})) -tests/non-free/strlen.c:89:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:89: - possibly reading indeterminate data +tests/non-free/strlen.c:89:[value] warning: builtin Frama_C_strlen: possibly reading indeterminate data tests/non-free/strlen.c:90:[value] assertion got status valid. tests/non-free/strlen.c:93:[value] Call to builtin Frama_C_strlen(({{ &non_terminated[0] }})) -tests/non-free/strlen.c:93:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:93: - reading indeterminate data +tests/non-free/strlen.c:93:[value] warning: builtin Frama_C_strlen: reading indeterminate data tests/non-free/strlen.c:97:[value] Call to builtin Frama_C_strlen(({{ &non_terminated2{[2], [3]} }})) -tests/non-free/strlen.c:97:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:97: - reading indeterminate data +tests/non-free/strlen.c:97:[value] warning: builtin Frama_C_strlen: reading indeterminate data [value] Recording results for zero_termination [value] Done for function zero_termination [value] computing for function strlen_initialization <- main. @@ -67,31 +63,27 @@ tests/non-free/strlen.c:97:[value] warning: built-in Frama_C_strlen: tests/non-f [value] computing for function my_strlen <- strlen_initialization <- main. Called from tests/non-free/strlen.c:105. tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &empty_or_uninitialized[0] }})) -tests/non-free/strlen.c:54:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:54: - possible uninitialized values +tests/non-free/strlen.c:54:[value] warning: builtin Frama_C_strlen: possible uninitialized values [value] Recording results for my_strlen [value] Done for function my_strlen tests/non-free/strlen.c:106:[value] assertion got status valid. [value] computing for function my_strlen <- strlen_initialization <- main. Called from tests/non-free/strlen.c:109. tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &uninitialized[0] }})) -tests/non-free/strlen.c:54:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:54: - reading indeterminate data +tests/non-free/strlen.c:54:[value] warning: builtin Frama_C_strlen: reading indeterminate data [value] Recording results for my_strlen [value] Done for function my_strlen [value] computing for function my_strlen <- strlen_initialization <- main. Called from tests/non-free/strlen.c:116. tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &s[0] }})) -tests/non-free/strlen.c:54:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:54: - possible uninitialized values +tests/non-free/strlen.c:54:[value] warning: builtin Frama_C_strlen: possible uninitialized values [value] Recording results for my_strlen [value] Done for function my_strlen tests/non-free/strlen.c:117:[value] assertion got status valid. [value] computing for function my_strlen <- strlen_initialization <- main. Called from tests/non-free/strlen.c:124. tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &t[0] }})) -tests/non-free/strlen.c:54:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:54: - possible uninitialized values +tests/non-free/strlen.c:54:[value] warning: builtin Frama_C_strlen: possible uninitialized values [value] Recording results for my_strlen [value] Done for function my_strlen tests/non-free/strlen.c:125:[value] assertion got status valid. @@ -139,8 +131,7 @@ tests/non-free/strlen.c:181:[value] assertion got status valid. [value] computing for function my_strlen <- strlen_large <- main. Called from tests/non-free/strlen.c:184. tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &a + [63..80] }})) -tests/non-free/strlen.c:54:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:54: - possibly reading indeterminate data +tests/non-free/strlen.c:54:[value] warning: builtin Frama_C_strlen: possibly reading indeterminate data [value] Recording results for my_strlen [value] Done for function my_strlen tests/non-free/strlen.c:185:[value] assertion got status valid. @@ -155,8 +146,7 @@ tests/non-free/strlen.c:161:[value] Call to builtin memset(({{ (void *)&a }},{0; [value] computing for function my_strlen <- strlen_large <- main. Called from tests/non-free/strlen.c:189. tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &a + [50..70] }})) -tests/non-free/strlen.c:54:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:54: - possibly reading indeterminate data +tests/non-free/strlen.c:54:[value] warning: builtin Frama_C_strlen: possibly reading indeterminate data [value] Recording results for my_strlen [value] Done for function my_strlen tests/non-free/strlen.c:190:[value] assertion got status valid. @@ -180,8 +170,7 @@ tests/non-free/strlen.c:161:[value] Call to builtin memset(({{ (void *)&a[50] }} [value] computing for function my_strlen <- strlen_large_uninit <- main. Called from tests/non-free/strlen.c:203. tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &a + [3..30] }})) -tests/non-free/strlen.c:54:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:54: - possibly reading indeterminate data +tests/non-free/strlen.c:54:[value] warning: builtin Frama_C_strlen: possibly reading indeterminate data [value] Recording results for my_strlen [value] Done for function my_strlen tests/non-free/strlen.c:204:[value] assertion got status valid. @@ -191,8 +180,7 @@ tests/non-free/strlen.c:204:[value] assertion got status valid. [value] computing for function my_strlen <- strlen_large_uninit <- main. Called from tests/non-free/strlen.c:208. tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &a + [63..80] }})) -tests/non-free/strlen.c:54:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:54: - possibly reading indeterminate data +tests/non-free/strlen.c:54:[value] warning: builtin Frama_C_strlen: possibly reading indeterminate data [value] Recording results for my_strlen [value] Done for function my_strlen tests/non-free/strlen.c:209:[value] assertion got status valid. @@ -202,7 +190,7 @@ tests/non-free/strlen.c:209:[value] assertion got status valid. [value] computing for function my_strlen <- strlen_large_uninit <- main. Called from tests/non-free/strlen.c:212. tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &a + [45..55] }})) -tests/non-free/strlen.c:54:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:54: +tests/non-free/strlen.c:54:[value] warning: builtin Frama_C_strlen: possible uninitialized values possibly reading indeterminate data [value] Recording results for my_strlen @@ -213,13 +201,11 @@ tests/non-free/strlen.c:213:[value] assertion got status valid. [value] computing for function misc <- main. Called from tests/non-free/strlen.c:314. tests/non-free/strlen.c:241:[value] Call to builtin Frama_C_strlen(({{ &unterminated_string[0] }})) -tests/non-free/strlen.c:241:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:241: - reading indeterminate data +tests/non-free/strlen.c:241:[value] warning: builtin Frama_C_strlen: reading indeterminate data tests/non-free/strlen.c:244:[value] Call to builtin Frama_C_strlen(({{ "Hello World\n" ; "Bonjour Monde\n" }})) tests/non-free/strlen.c:245:[value] assertion got status valid. tests/non-free/strlen.c:248:[value] Call to builtin Frama_C_strlen(({{ &x + {0; 3} }})) -tests/non-free/strlen.c:248:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:248: - possibly reading indeterminate data +tests/non-free/strlen.c:248:[value] warning: builtin Frama_C_strlen: possibly reading indeterminate data tests/non-free/strlen.c:249:[value] assertion got status valid. [value] computing for function Frama_C_interval <- misc <- main. Called from tests/non-free/strlen.c:250. @@ -230,8 +216,7 @@ tests/non-free/strlen.c:252:[value] Call to builtin Frama_C_strlen(({{ "" ; "a" "aaaaaaaaaaaa" ; "aaaaaaaaaaaaa" }})) tests/non-free/strlen.c:253:[value] assertion got status valid. tests/non-free/strlen.c:255:[value] Call to builtin Frama_C_strlen(({{ &loc_char_array[0] }})) -tests/non-free/strlen.c:255:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:255: - reading indeterminate data +tests/non-free/strlen.c:255:[value] warning: builtin Frama_C_strlen: reading indeterminate data tests/non-free/strlen.c:256:[value] Call to builtin Frama_C_strlen(({{ "abc\000\000\000abc" }})) tests/non-free/strlen.c:257:[value] assertion got status valid. tests/non-free/strlen.c:260:[value] Call to builtin Frama_C_strlen(({{ "abc" + {0; 1} ; "ABCD" + {0; 1} }})) @@ -250,16 +235,14 @@ tests/non-free/strlen.c:270:[value] Call to builtin Frama_C_strlen(({{ "mno\000p tests/non-free/strlen.c:270:[value] Call to builtin Frama_C_strlen(({{ "mno\000pqr" + {0; 1; 2; 3; 4; 5; 6; 7} ; "MNOP\000QRS" + {0; 1; 2; 3; 4; 5; 6; 7} }})) tests/non-free/strlen.c:277:[value] Call to builtin Frama_C_strlen(({{ &maybe_init[0] }})) -tests/non-free/strlen.c:277:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:277: - possible uninitialized values +tests/non-free/strlen.c:277:[value] warning: builtin Frama_C_strlen: possible uninitialized values tests/non-free/strlen.c:278:[value] assertion got status valid. [value] Recording results for misc [value] Done for function misc [value] computing for function bitfields <- main. Called from tests/non-free/strlen.c:315. tests/non-free/strlen.c:140:[value] Call to builtin Frama_C_strlen(({{ (char const *)&s }})) -tests/non-free/strlen.c:140:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:140: - reading indeterminate data +tests/non-free/strlen.c:140:[value] warning: builtin Frama_C_strlen: reading indeterminate data [value] Recording results for bitfields [value] Done for function bitfields [value] computing for function bitfields2 <- main. @@ -272,8 +255,7 @@ tests/non-free/strlen.c:156:[value] assertion got status valid. Called from tests/non-free/strlen.c:317. tests/non-free/strlen.c:222:[value] warning: locals {x} escaping the scope of a block of escaping through s tests/non-free/strlen.c:225:[value] Call to builtin Frama_C_strlen(({{ &s[0] }})) -tests/non-free/strlen.c:225:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:225: - possible escaping addresses +tests/non-free/strlen.c:225:[value] warning: builtin Frama_C_strlen: possible escaping addresses tests/non-free/strlen.c:226:[value] assertion got status valid. tests/non-free/strlen.c:228:[value] Call to builtin Frama_C_strlen(({{ &s[0] }})) tests/non-free/strlen.c:229:[value] assertion got status valid. @@ -285,29 +267,26 @@ tests/non-free/strlen.c:287:[value] warning: out of bounds write. assert \valid( tests/non-free/strlen.c:289:[value] warning: out of bounds write. assert \valid(p); tests/non-free/strlen.c:291:[value] warning: out of bounds write. assert \valid(p); tests/non-free/strlen.c:297:[value] Call to builtin Frama_C_strlen(({{ (char const *)&u }})) -tests/non-free/strlen.c:297:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:297: - possible uninitialized values +tests/non-free/strlen.c:297:[value] warning: builtin Frama_C_strlen: possible uninitialized values tests/non-free/strlen.c:298:[value] Call to builtin Frama_C_strlen(({{ (char const *)&r }})) tests/non-free/strlen.c:298:[kernel] more than 200(201) locations to update in array. Approximating. -tests/non-free/strlen.c:298:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:298: - possible uninitialized values +tests/non-free/strlen.c:298:[value] warning: builtin Frama_C_strlen: possible uninitialized values tests/non-free/strlen.c:299:[value] Call to builtin Frama_C_strlen(({{ (char const *)&t }})) tests/non-free/strlen.c:299:[kernel] more than 200(1000000) locations to update in array. Approximating. -tests/non-free/strlen.c:299:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:299: - possible uninitialized values +tests/non-free/strlen.c:299:[value] warning: builtin Frama_C_strlen: possible uninitialized values [value] Called Frama_C_show_each({1}, {1}, {1}) tests/non-free/strlen.c:302:[value] Call to builtin Frama_C_strlen(({{ &u + [-8589934592..8589934588],0%4 }})) -tests/non-free/strlen.c:302:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:302: +tests/non-free/strlen.c:302:[value] warning: builtin Frama_C_strlen: possible uninitialized values possibly reading indeterminate data tests/non-free/strlen.c:303:[value] Call to builtin Frama_C_strlen(({{ &r + [-8589934592..8589934588],0%4 }})) tests/non-free/strlen.c:303:[kernel] more than 200(201) locations to update in array. Approximating. -tests/non-free/strlen.c:303:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:303: +tests/non-free/strlen.c:303:[value] warning: builtin Frama_C_strlen: possible uninitialized values possibly reading indeterminate data tests/non-free/strlen.c:304:[value] Call to builtin Frama_C_strlen(({{ &t + [-8589934592..8589934588],0%4 }})) tests/non-free/strlen.c:304:[kernel] more than 200(1000000) locations to update in array. Approximating. -tests/non-free/strlen.c:304:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:304: +tests/non-free/strlen.c:304:[value] warning: builtin Frama_C_strlen: possible uninitialized values possibly reading indeterminate data [value] Called Frama_C_show_each({0; 1; 2; 3}, [0..800], [0..3999996]) diff --git a/tests/non-free/oracle_equalities/strnlen.res.oracle b/tests/non-free/oracle_equalities/strnlen.res.oracle index b32e96527ac203942bf3ed5e3864cf589dcc57e3..6e97c953b59e769c14d09db22dafc451c33d9080 100644 --- a/tests/non-free/oracle_equalities/strnlen.res.oracle +++ b/tests/non-free/oracle_equalities/strnlen.res.oracle @@ -18,8 +18,7 @@ tests/non-free/strnlen.i:9:[value] Call to builtin Frama_C_strnlen(({{ &t1[0] }},{3})) tests/non-free/strnlen.i:10:[value] Call to builtin Frama_C_strnlen(({{ &t1[0] }},{5})) tests/non-free/strnlen.i:11:[value] Call to builtin Frama_C_strnlen(({{ &t1[0] }},{6})) -tests/non-free/strnlen.i:11:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen.i:11: - reading indeterminate data +tests/non-free/strnlen.i:11:[value] warning: builtin Frama_C_strnlen: reading indeterminate data tests/non-free/strnlen.i:13:[value] Call to builtin Frama_C_strnlen(({{ &t2[0] }},{3})) tests/non-free/strnlen.i:14:[value] Call to builtin Frama_C_strnlen(({{ &t2[0] }},{5})) tests/non-free/strnlen.i:15:[value] Call to builtin Frama_C_strnlen(({{ &t2[0] }},{6})) diff --git a/tests/non-free/oracle_equalities/strnlen2.res.oracle b/tests/non-free/oracle_equalities/strnlen2.res.oracle index 170241239c5d918dd9e75fa0d7fc58ff5a8587b9..993520f015fecb444381bb243fc708439e9df702 100644 --- a/tests/non-free/oracle_equalities/strnlen2.res.oracle +++ b/tests/non-free/oracle_equalities/strnlen2.res.oracle @@ -51,29 +51,23 @@ tests/non-free/strnlen2.c:62:[value] assertion got status valid. tests/non-free/strnlen2.c:68:[value] Call to builtin Frama_C_strnlen(({{ &empty_or_non_terminated[0] }},{1})) tests/non-free/strnlen2.c:69:[value] assertion got status valid. tests/non-free/strnlen2.c:73:[value] Call to builtin Frama_C_strnlen(({{ &non_terminated[0] }},{2})) -tests/non-free/strnlen2.c:73:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:73: - reading indeterminate data +tests/non-free/strnlen2.c:73:[value] warning: builtin Frama_C_strnlen: reading indeterminate data tests/non-free/strnlen2.c:79:[value] Call to builtin Frama_C_strnlen(({{ &non_terminated2{[2], [3]} }},{4})) -tests/non-free/strnlen2.c:79:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:79: - reading indeterminate data +tests/non-free/strnlen2.c:79:[value] warning: builtin Frama_C_strnlen: reading indeterminate data [value] Recording results for zero_termination [value] Done for function zero_termination [value] computing for function initialization <- main. Called from tests/non-free/strnlen2.c:491. tests/non-free/strnlen2.c:85:[value] Call to builtin Frama_C_strnlen(({{ &empty_or_uninitialized[0] }},{1})) -tests/non-free/strnlen2.c:85:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:85: - possible uninitialized values +tests/non-free/strnlen2.c:85:[value] warning: builtin Frama_C_strnlen: possible uninitialized values tests/non-free/strnlen2.c:86:[value] assertion got status valid. tests/non-free/strnlen2.c:89:[value] Call to builtin Frama_C_strnlen(({{ &uninitialized[0] }},{1})) -tests/non-free/strnlen2.c:89:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:89: - reading indeterminate data +tests/non-free/strnlen2.c:89:[value] warning: builtin Frama_C_strnlen: reading indeterminate data tests/non-free/strnlen2.c:94:[value] Call to builtin Frama_C_strnlen(({{ &s[0] }},{2})) -tests/non-free/strnlen2.c:94:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:94: - possible uninitialized values +tests/non-free/strnlen2.c:94:[value] warning: builtin Frama_C_strnlen: possible uninitialized values tests/non-free/strnlen2.c:95:[value] assertion got status valid. tests/non-free/strnlen2.c:101:[value] Call to builtin Frama_C_strnlen(({{ &t[0] }},{4})) -tests/non-free/strnlen2.c:101:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:101: - possible uninitialized values +tests/non-free/strnlen2.c:101:[value] warning: builtin Frama_C_strnlen: possible uninitialized values tests/non-free/strnlen2.c:102:[value] assertion got status valid. [value] Recording results for initialization [value] Done for function initialization @@ -105,8 +99,7 @@ tests/non-free/strnlen2.c:157:[value] assertion got status valid. Called from tests/non-free/strnlen2.c:159. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:160:[value] Call to builtin Frama_C_strnlen(({{ &a + [63..80] }},{100})) -tests/non-free/strnlen2.c:160:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:160: - possibly reading indeterminate data +tests/non-free/strnlen2.c:160:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:161:[value] assertion got status valid. [value] computing for function init_array_nondet <- large <- main. Called from tests/non-free/strnlen2.c:163. @@ -117,8 +110,7 @@ tests/non-free/strnlen2.c:138:[value] Call to builtin memset(({{ (void *)&a }},{ Called from tests/non-free/strnlen2.c:164. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:165:[value] Call to builtin Frama_C_strnlen(({{ &a + [50..70] }},{100})) -tests/non-free/strnlen2.c:165:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:165: - possibly reading indeterminate data +tests/non-free/strnlen2.c:165:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:166:[value] assertion got status valid. [value] Recording results for large [value] Done for function large @@ -138,21 +130,19 @@ tests/non-free/strnlen2.c:138:[value] Call to builtin memset(({{ (void *)&a[50] Called from tests/non-free/strnlen2.c:176. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:177:[value] Call to builtin Frama_C_strnlen(({{ &a + [3..30] }},{100})) -tests/non-free/strnlen2.c:177:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:177: - possibly reading indeterminate data +tests/non-free/strnlen2.c:177:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:178:[value] assertion got status valid. [value] computing for function Frama_C_interval <- large_uninit <- main. Called from tests/non-free/strnlen2.c:181. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:182:[value] Call to builtin Frama_C_strnlen(({{ &a + [63..80] }},{100})) -tests/non-free/strnlen2.c:182:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:182: - possibly reading indeterminate data +tests/non-free/strnlen2.c:182:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:183:[value] assertion got status valid. [value] computing for function Frama_C_interval <- large_uninit <- main. Called from tests/non-free/strnlen2.c:185. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:186:[value] Call to builtin Frama_C_strnlen(({{ &a + [45..55] }},{100})) -tests/non-free/strnlen2.c:186:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:186: +tests/non-free/strnlen2.c:186:[value] warning: builtin Frama_C_strnlen: possible uninitialized values possibly reading indeterminate data tests/non-free/strnlen2.c:187:[value] assertion got status valid. @@ -161,14 +151,12 @@ tests/non-free/strnlen2.c:187:[value] assertion got status valid. [value] computing for function misc <- main. Called from tests/non-free/strnlen2.c:494. tests/non-free/strnlen2.c:215:[value] Call to builtin Frama_C_strnlen(({{ &unterminated_string[0] }},{13})) -tests/non-free/strnlen2.c:215:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:215: - reading indeterminate data +tests/non-free/strnlen2.c:215:[value] warning: builtin Frama_C_strnlen: reading indeterminate data tests/non-free/strnlen2.c:218:[value] Call to builtin Frama_C_strnlen(({{ "Hello World\n" ; "Bonjour Monde\n" }}, {14})) tests/non-free/strnlen2.c:219:[value] assertion got status valid. tests/non-free/strnlen2.c:222:[value] Call to builtin Frama_C_strnlen(({{ &x + {0; 3} }},{12})) -tests/non-free/strnlen2.c:222:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:222: - possibly reading indeterminate data +tests/non-free/strnlen2.c:222:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:223:[value] assertion got status valid. [value] computing for function Frama_C_interval <- misc <- main. Called from tests/non-free/strnlen2.c:224. @@ -180,8 +168,7 @@ tests/non-free/strnlen2.c:226:[value] Call to builtin Frama_C_strnlen(({{ "" ; " {13})) tests/non-free/strnlen2.c:227:[value] assertion got status valid. tests/non-free/strnlen2.c:229:[value] Call to builtin Frama_C_strnlen(({{ &loc_char_array[0] }},{5})) -tests/non-free/strnlen2.c:229:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:229: - reading indeterminate data +tests/non-free/strnlen2.c:229:[value] warning: builtin Frama_C_strnlen: reading indeterminate data tests/non-free/strnlen2.c:230:[value] Call to builtin Frama_C_strnlen(({{ "abc\000\000\000abc" }},{9})) tests/non-free/strnlen2.c:231:[value] assertion got status valid. tests/non-free/strnlen2.c:234:[value] Call to builtin Frama_C_strnlen(({{ "abc" + {0; 1} ; "ABCD" + {0; 1} }},{5})) @@ -202,16 +189,14 @@ tests/non-free/strnlen2.c:244:[value] Call to builtin Frama_C_strnlen(({{ "mno\0 "MNOP\000QRS" + {0; 1; 2; 3; 4; 5; 6; 7} }}, {10})) tests/non-free/strnlen2.c:251:[value] Call to builtin Frama_C_strnlen(({{ &maybe_init[0] }},{2})) -tests/non-free/strnlen2.c:251:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:251: - possible uninitialized values +tests/non-free/strnlen2.c:251:[value] warning: builtin Frama_C_strnlen: possible uninitialized values tests/non-free/strnlen2.c:252:[value] assertion got status valid. [value] Recording results for misc [value] Done for function misc [value] computing for function bitfields <- main. Called from tests/non-free/strnlen2.c:495. tests/non-free/strnlen2.c:117:[value] Call to builtin Frama_C_strnlen(({{ (char const *)&s }},{3})) -tests/non-free/strnlen2.c:117:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:117: - reading indeterminate data +tests/non-free/strnlen2.c:117:[value] warning: builtin Frama_C_strnlen: reading indeterminate data [value] Recording results for bitfields [value] Done for function bitfields [value] computing for function bitfields2 <- main. @@ -224,8 +209,7 @@ tests/non-free/strnlen2.c:133:[value] assertion got status valid. Called from tests/non-free/strnlen2.c:497. tests/non-free/strnlen2.c:196:[value] warning: locals {x} escaping the scope of a block of escaping through s tests/non-free/strnlen2.c:199:[value] Call to builtin Frama_C_strnlen(({{ &s[0] }},{4})) -tests/non-free/strnlen2.c:199:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:199: - possible escaping addresses +tests/non-free/strnlen2.c:199:[value] warning: builtin Frama_C_strnlen: possible escaping addresses tests/non-free/strnlen2.c:200:[value] assertion got status valid. tests/non-free/strnlen2.c:202:[value] Call to builtin Frama_C_strnlen(({{ &s[0] }},{4})) tests/non-free/strnlen2.c:203:[value] assertion got status valid. @@ -237,35 +221,32 @@ tests/non-free/strnlen2.c:261:[value] warning: out of bounds write. assert \vali tests/non-free/strnlen2.c:263:[value] warning: out of bounds write. assert \valid(p); tests/non-free/strnlen2.c:265:[value] warning: out of bounds write. assert \valid(p); tests/non-free/strnlen2.c:272:[value] Call to builtin Frama_C_strnlen(({{ (char const *)&u }},{800})) -tests/non-free/strnlen2.c:272:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:272: - possible uninitialized values +tests/non-free/strnlen2.c:272:[value] warning: builtin Frama_C_strnlen: possible uninitialized values tests/non-free/strnlen2.c:273:[value] Call to builtin Frama_C_strnlen(({{ (char const *)&r }},{804})) tests/non-free/strnlen2.c:273:[kernel] more than 200(201) locations to update in array. Approximating. -tests/non-free/strnlen2.c:273:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:273: - possible uninitialized values +tests/non-free/strnlen2.c:273:[value] warning: builtin Frama_C_strnlen: possible uninitialized values tests/non-free/strnlen2.c:274:[value] Call to builtin Frama_C_strnlen(({{ (char const *)&t }},{4000000})) tests/non-free/strnlen2.c:274:[kernel] more than 200(1000000) locations to update in array. Approximating. -tests/non-free/strnlen2.c:274:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:274: - possible uninitialized values +tests/non-free/strnlen2.c:274:[value] warning: builtin Frama_C_strnlen: possible uninitialized values tests/non-free/strnlen2.c:275:[value] assertion got status valid. tests/non-free/strnlen2.c:276:[value] assertion got status valid. tests/non-free/strnlen2.c:277:[value] assertion got status valid. [value] Called Frama_C_show_each({1}, {1}, {1}) tests/non-free/strnlen2.c:282:[value] Call to builtin Frama_C_strnlen(({{ &u + [-8589934592..8589934588],0%4 }}, {801})) -tests/non-free/strnlen2.c:282:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:282: +tests/non-free/strnlen2.c:282:[value] warning: builtin Frama_C_strnlen: possible uninitialized values possibly reading indeterminate data tests/non-free/strnlen2.c:283:[value] Call to builtin Frama_C_strnlen(({{ &r + [-8589934592..8589934588],0%4 }}, {805})) tests/non-free/strnlen2.c:283:[kernel] more than 200(201) locations to update in array. Approximating. -tests/non-free/strnlen2.c:283:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:283: +tests/non-free/strnlen2.c:283:[value] warning: builtin Frama_C_strnlen: possible uninitialized values possibly reading indeterminate data tests/non-free/strnlen2.c:284:[value] Call to builtin Frama_C_strnlen(({{ &t + [-8589934592..8589934588],0%4 }}, {4000001})) tests/non-free/strnlen2.c:284:[kernel] more than 200(1000000) locations to update in array. Approximating. -tests/non-free/strnlen2.c:284:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:284: +tests/non-free/strnlen2.c:284:[value] warning: builtin Frama_C_strnlen: possible uninitialized values possibly reading indeterminate data tests/non-free/strnlen2.c:285:[value] assertion got status valid. @@ -301,18 +282,15 @@ tests/non-free/strnlen2.c:305:[value] assertion got status valid. [value] Called Frama_C_show_each([0..800], [0..804], [0..4000000]) tests/non-free/strnlen2.c:308:[value] Call to builtin Frama_C_strnlen(({{ &u + [-8589934592..8589934588],0%4 }}, {801})) -tests/non-free/strnlen2.c:308:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:308: - possibly reading indeterminate data +tests/non-free/strnlen2.c:308:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:309:[value] Call to builtin Frama_C_strnlen(({{ &r + [-8589934592..8589934588],0%4 }}, {805})) tests/non-free/strnlen2.c:309:[kernel] more than 200(201) locations to update in array. Approximating. -tests/non-free/strnlen2.c:309:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:309: - possibly reading indeterminate data +tests/non-free/strnlen2.c:309:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:310:[value] Call to builtin Frama_C_strnlen(({{ &t + [-8589934592..8589934588],0%4 }}, {4000001})) tests/non-free/strnlen2.c:310:[kernel] more than 200(1000000) locations to update in array. Approximating. -tests/non-free/strnlen2.c:310:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:310: - possibly reading indeterminate data +tests/non-free/strnlen2.c:310:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:311:[value] assertion got status valid. tests/non-free/strnlen2.c:312:[value] assertion got status valid. tests/non-free/strnlen2.c:313:[value] assertion got status valid. @@ -330,8 +308,7 @@ tests/non-free/strnlen2.c:331:[value] assertion got status valid. tests/non-free/strnlen2.c:333:[value] Call to builtin Frama_C_strnlen(({{ &s{[7], [11]} }},{4})) tests/non-free/strnlen2.c:334:[value] assertion got status valid. tests/non-free/strnlen2.c:336:[value] Call to builtin Frama_C_strnlen(({{ &s{[7], [18]} }},{4})) -tests/non-free/strnlen2.c:336:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:336: - possibly reading indeterminate data +tests/non-free/strnlen2.c:336:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:337:[value] assertion got status valid. [value] Recording results for no_zero_but_ok [value] Done for function no_zero_but_ok @@ -397,8 +374,7 @@ tests/non-free/strnlen2.c:406:[value] assertion got status valid. Called from tests/non-free/strnlen2.c:408. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:409:[value] Call to builtin Frama_C_strnlen(({{ &a + [50..70] }},[0..100])) -tests/non-free/strnlen2.c:409:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:409: - possibly reading indeterminate data +tests/non-free/strnlen2.c:409:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:410:[value] assertion got status valid. [value] computing for function Frama_C_interval <- large_n <- main. Called from tests/non-free/strnlen2.c:412. @@ -454,8 +430,7 @@ tests/non-free/strnlen2.c:138:[value] Call to builtin memset(({{ (void *)&a[16] Called from tests/non-free/strnlen2.c:442. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:443:[value] Call to builtin Frama_C_strnlen(({{ &a + [0..9] }},[0..9])) -tests/non-free/strnlen2.c:443:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:443: - possibly reading indeterminate data +tests/non-free/strnlen2.c:443:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:444:[value] assertion got status valid. [value] computing for function Frama_C_interval <- intervals <- main. Called from tests/non-free/strnlen2.c:446. @@ -465,8 +440,7 @@ tests/non-free/strnlen2.c:444:[value] assertion got status valid. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:448:[value] Call to builtin Frama_C_strnlen(({{ &a{[3], [4], [5], [6], [7], [8], [9]} }}, [2..10])) -tests/non-free/strnlen2.c:448:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:448: - possibly reading indeterminate data +tests/non-free/strnlen2.c:448:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:449:[value] assertion got status valid. [value] computing for function Frama_C_interval <- intervals <- main. Called from tests/non-free/strnlen2.c:451. @@ -476,8 +450,7 @@ tests/non-free/strnlen2.c:449:[value] assertion got status valid. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:453:[value] Call to builtin Frama_C_strnlen(({{ &a{[3], [4], [5], [6], [7], [8], [9]} }}, [0..11])) -tests/non-free/strnlen2.c:453:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:453: - possibly reading indeterminate data +tests/non-free/strnlen2.c:453:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:454:[value] assertion got status valid. [value] computing for function Frama_C_interval <- intervals <- main. Called from tests/non-free/strnlen2.c:456. @@ -487,8 +460,7 @@ tests/non-free/strnlen2.c:454:[value] assertion got status valid. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:458:[value] Call to builtin Frama_C_strnlen(({{ &a{[3], [4], [5], [6], [7], [8], [9], [10]} }},[0..9])) -tests/non-free/strnlen2.c:458:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:458: - possibly reading indeterminate data +tests/non-free/strnlen2.c:458:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:459:[value] assertion got status valid. [value] computing for function Frama_C_interval <- intervals <- main. Called from tests/non-free/strnlen2.c:461. @@ -498,8 +470,7 @@ tests/non-free/strnlen2.c:459:[value] assertion got status valid. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:463:[value] Call to builtin Frama_C_strnlen(({{ &a{[3], [4], [5], [6], [7], [8], [9], [10]} }},[0..10])) -tests/non-free/strnlen2.c:463:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:463: - possibly reading indeterminate data +tests/non-free/strnlen2.c:463:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:464:[value] assertion got status valid. [value] computing for function Frama_C_interval <- intervals <- main. Called from tests/non-free/strnlen2.c:466. @@ -509,8 +480,7 @@ tests/non-free/strnlen2.c:464:[value] assertion got status valid. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:468:[value] Call to builtin Frama_C_strnlen(({{ &a{[3], [4], [5], [6], [7], [8], [9], [10]} }},[0..11])) -tests/non-free/strnlen2.c:468:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:468: - possibly reading indeterminate data +tests/non-free/strnlen2.c:468:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:469:[value] assertion got status valid. [value] computing for function Frama_C_interval <- intervals <- main. Called from tests/non-free/strnlen2.c:471. @@ -519,7 +489,7 @@ tests/non-free/strnlen2.c:469:[value] assertion got status valid. Called from tests/non-free/strnlen2.c:472. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:473:[value] Call to builtin Frama_C_strnlen(({{ &a + [3..11] }},[0..9])) -tests/non-free/strnlen2.c:473:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:473: +tests/non-free/strnlen2.c:473:[value] warning: builtin Frama_C_strnlen: possible uninitialized values possibly reading indeterminate data tests/non-free/strnlen2.c:474:[value] assertion got status valid. @@ -530,7 +500,7 @@ tests/non-free/strnlen2.c:474:[value] assertion got status valid. Called from tests/non-free/strnlen2.c:477. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:478:[value] Call to builtin Frama_C_strnlen(({{ &a + [3..11] }},[0..10])) -tests/non-free/strnlen2.c:478:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:478: +tests/non-free/strnlen2.c:478:[value] warning: builtin Frama_C_strnlen: possible uninitialized values possibly reading indeterminate data tests/non-free/strnlen2.c:479:[value] assertion got status valid. @@ -541,7 +511,7 @@ tests/non-free/strnlen2.c:479:[value] assertion got status valid. Called from tests/non-free/strnlen2.c:482. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:483:[value] Call to builtin Frama_C_strnlen(({{ &a + [3..11] }},[0..11])) -tests/non-free/strnlen2.c:483:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:483: +tests/non-free/strnlen2.c:483:[value] warning: builtin Frama_C_strnlen: possible uninitialized values possibly reading indeterminate data tests/non-free/strnlen2.c:484:[value] assertion got status valid. diff --git a/tests/non-free/oracle_legacy/Longinit_sequencer.res.oracle b/tests/non-free/oracle_legacy/Longinit_sequencer.res.oracle index 4cb50421baaa8294501046d5e46d0a5023770935..b23183be82280a69847225523b803378488068cc 100644 --- a/tests/non-free/oracle_legacy/Longinit_sequencer.res.oracle +++ b/tests/non-free/oracle_legacy/Longinit_sequencer.res.oracle @@ -369,11 +369,11 @@ tests/non-free/long_init2.c:34:[value] Assigning imprecise value to garbled_mix. Called from tests/non-free/long_init2.c:88. [value] Call to builtin Frama_C_load_state(({13},{{ "tea" }})) [value] Skipping call to init_inner, loading globals state from file: - tests/non-free/result/Longinit_sequencer.sav + tests/non-free/result_legacy/Longinit_sequencer.sav [value] warning: importing garbled mix, locations may have changed -[value] warning: variable `r (id 594)' is not global, possibly an escaping value; ignoring -[value] warning: variable `r2 (id 597)' is not global, possibly an escaping value; ignoring -[value] warning: variable `r2 (id 597)' is not global, possibly an escaping value; ignoring +[value] warning: variable `r (id 602)' is not global, possibly an escaping value; ignoring +[value] warning: variable `r2 (id 605)' is not global, possibly an escaping value; ignoring +[value] warning: variable `r2 (id 605)' is not global, possibly an escaping value; ignoring [value] warning: found new global variable `another_global' [value] Recording results for init_outer [value] Done for function init_outer @@ -603,7 +603,7 @@ tests/non-free/long_init3.c:34:[value] Assigning imprecise value to garbled_mix. inited ∈ {0} [value] Call to builtin Frama_C_load_state(()) [value] Skipping call to init_outer, loading globals state from file: - tests/non-free/result/Longinit_sequencer.sav + tests/non-free/result_legacy/Longinit_sequencer.sav [value] warning: importing garbled mix, locations may have changed [value] warning: found new global variable `yet_another_global' [value] DUMPING STATE of file tests/non-free/long_init3.c line 90 diff --git a/tests/non-free/oracle_legacy/alloc.0.res.oracle b/tests/non-free/oracle_legacy/alloc.0.res.oracle index 3462232225f0ae282d98a0369ce7cad87aa8e856..6bbe7a5e4762c5fd665dca353134d62460540083 100644 --- a/tests/non-free/oracle_legacy/alloc.0.res.oracle +++ b/tests/non-free/oracle_legacy/alloc.0.res.oracle @@ -20,8 +20,8 @@ [value] computing for function malloc <- main. Called from tests/non-free/alloc.c:16. share/libc/stdlib.c:39:[value] allocating variable __malloc_malloc_l39 -share/libc/stdlib.h:164:[value] warning: function malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.) -share/libc/stdlib.h:169:[value] warning: function malloc, behavior no_allocation: postcondition got status invalid. (Behavior may be inactive, no reduction performed.) +share/libc/stdlib.h:177:[value] warning: function malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.) +share/libc/stdlib.h:182:[value] warning: function malloc, behavior no_allocation: postcondition got status invalid. (Behavior may be inactive, no reduction performed.) [value] Recording results for malloc [value] Done for function malloc [value] computing for function malloc <- main. diff --git a/tests/non-free/oracle_legacy/alloc.1.res.oracle b/tests/non-free/oracle_legacy/alloc.1.res.oracle index 225071d1e36343a306615a982abf3901cd41863c..d4e9c812cea8d5ace6f2548c3a280642d4eaf09f 100644 --- a/tests/non-free/oracle_legacy/alloc.1.res.oracle +++ b/tests/non-free/oracle_legacy/alloc.1.res.oracle @@ -21,8 +21,8 @@ [value] computing for function malloc <- main_abs. Called from tests/non-free/alloc.c:50. share/libc/stdlib.c:39:[value] allocating variable __malloc_malloc_l39 -share/libc/stdlib.h:164:[value] warning: function malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.) -share/libc/stdlib.h:169:[value] warning: function malloc, behavior no_allocation: postcondition got status invalid. (Behavior may be inactive, no reduction performed.) +share/libc/stdlib.h:177:[value] warning: function malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.) +share/libc/stdlib.h:182:[value] warning: function malloc, behavior no_allocation: postcondition got status invalid. (Behavior may be inactive, no reduction performed.) [value] Recording results for malloc [value] Done for function malloc tests/non-free/alloc.c:51:[value] warning: signed overflow. assert -2147483648 ≤ -((int)q); diff --git a/tests/non-free/oracle_legacy/allocated.0.res.oracle b/tests/non-free/oracle_legacy/allocated.0.res.oracle index 3b9554b452da8b33c99bc7241bbb839fd839bdc6..b48e805626568c78ee2a2fcc8dc7c47593abd968 100644 --- a/tests/non-free/oracle_legacy/allocated.0.res.oracle +++ b/tests/non-free/oracle_legacy/allocated.0.res.oracle @@ -143,7 +143,7 @@ tests/non-free/allocated.c:123:[value] assertion 'Value,mem_access' got final st \result FROM \nothing [from] ====== END OF DEPENDENCIES ====== [inout] Out (internal) for function main: - __fc_heap_status; i; j; p; tmp; tmp_0; k; tmp_1; size; pb; __retres; + __fc_heap_status; i; j; p; tmp; tmp_3; k; tmp_4; size; pb; __retres; __malloc_main_l25; __malloc_main_l36[0..1]; __malloc_main_l50[0..2]; __malloc_main_l63; __malloc_main_l73; __malloc_w_main_l82[0..2]; __malloc_main_l97[0]; __malloc_main_l114[0..3] diff --git a/tests/non-free/oracle_legacy/allocated.1.res.oracle b/tests/non-free/oracle_legacy/allocated.1.res.oracle index 8aafe4e383b3b9989d647ec53562186e60091745..53cbaa8819d43a693f717f51eb496decb0b3d485 100644 --- a/tests/non-free/oracle_legacy/allocated.1.res.oracle +++ b/tests/non-free/oracle_legacy/allocated.1.res.oracle @@ -510,7 +510,7 @@ tests/non-free/allocated.c:123:[value] assertion 'Value,mem_access' got final st \result FROM \nothing [from] ====== END OF DEPENDENCIES ====== [inout] Out (internal) for function main: - __fc_heap_status; i; j; p; tmp; tmp_0; k; tmp_1; size; pb; __retres; + __fc_heap_status; i; j; p; tmp; tmp_3; k; tmp_4; size; pb; __retres; __malloc_main_l25; __malloc_main_l36[0..1]; __malloc_main_l50[0..1]; __malloc_main_l50_0[0..2]; __malloc_main_l63; __malloc_main_l63_0; __malloc_main_l63_1; __malloc_main_l63_2; __malloc_main_l73; diff --git a/tests/non-free/oracle_legacy/from_result.res.oracle b/tests/non-free/oracle_legacy/from_result.res.oracle index a7d3a58c3a588c08ee08c60fc846e6d16d6d78f9..36a5531a9c1a3ca8b875d25eb3e169cd391a8d74 100644 --- a/tests/non-free/oracle_legacy/from_result.res.oracle +++ b/tests/non-free/oracle_legacy/from_result.res.oracle @@ -13,8 +13,8 @@ [value] computing for function malloc <- bar <- main. Called from tests/non-free/from_result.c:18. share/libc/stdlib.c:39:[value] allocating variable __malloc_malloc_l39 -share/libc/stdlib.h:164:[value] warning: function malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.) -share/libc/stdlib.h:169:[value] warning: function malloc, behavior no_allocation: postcondition got status invalid. (Behavior may be inactive, no reduction performed.) +share/libc/stdlib.h:177:[value] warning: function malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.) +share/libc/stdlib.h:182:[value] warning: function malloc, behavior no_allocation: postcondition got status invalid. (Behavior may be inactive, no reduction performed.) [value] Recording results for malloc [value] Done for function malloc [value] Recording results for bar diff --git a/tests/non-free/oracle_legacy/malloc_individual.res.oracle b/tests/non-free/oracle_legacy/malloc_individual.res.oracle index b0d76ac1835da194e921db00a562e74b5c7d7665..b37ac463bb47a462e6f2bb1fb252b05798dd53f5 100644 --- a/tests/non-free/oracle_legacy/malloc_individual.res.oracle +++ b/tests/non-free/oracle_legacy/malloc_individual.res.oracle @@ -15,8 +15,8 @@ [value] computing for function malloc <- main. Called from tests/non-free/malloc_individual.c:9. share/libc/stdlib.c:39:[value] allocating variable __malloc_malloc_l39 -share/libc/stdlib.h:164:[value] warning: function malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.) -share/libc/stdlib.h:169:[value] warning: function malloc, behavior no_allocation: postcondition got status invalid. (Behavior may be inactive, no reduction performed.) +share/libc/stdlib.h:177:[value] warning: function malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.) +share/libc/stdlib.h:182:[value] warning: function malloc, behavior no_allocation: postcondition got status invalid. (Behavior may be inactive, no reduction performed.) [value] Recording results for malloc [value] Done for function malloc tests/non-free/malloc_individual.c:13:[value] warning: accessing uninitialized left-value. assert \initialized(p); diff --git a/tests/non-free/oracle_legacy/memchr.res.oracle b/tests/non-free/oracle_legacy/memchr.res.oracle index a0ddf3687981b4b2434afc8c02f12a384ecf4f8e..427a520aa375040739ada2bec8f1bce28cf6a2f7 100644 --- a/tests/non-free/oracle_legacy/memchr.res.oracle +++ b/tests/non-free/oracle_legacy/memchr.res.oracle @@ -79,16 +79,14 @@ tests/non-free/memchr.c:112:[value] assertion got status valid. [value] computing for function my_memchr <- memchr_zero_termination <- main. Called from tests/non-free/memchr.c:113. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&non_terminated }},{0},{2})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: reading indeterminate data [value] Recording results for my_memchr [value] Done for function my_memchr [value] computing for function my_memchr <- memchr_zero_termination <- main. Called from tests/non-free/memchr.c:119. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&non_terminated2{[2], [3]} }}, {0},{4})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: reading indeterminate data [value] Recording results for my_memchr [value] Done for function my_memchr [value] Recording results for memchr_zero_termination @@ -99,8 +97,7 @@ tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-f Called from tests/non-free/memchr.c:127. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&empty_or_uninitialized }}, {0},{1})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possible uninitialized values +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values [value] Called Frama_C_show_each_mymemchr({0}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -108,15 +105,13 @@ tests/non-free/memchr.c:128:[value] assertion got status valid. [value] computing for function my_memchr <- memchr_initialization <- main. Called from tests/non-free/memchr.c:131. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&uninitialized }},{0},{1})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: reading indeterminate data [value] Recording results for my_memchr [value] Done for function my_memchr [value] computing for function my_memchr <- memchr_initialization <- main. Called from tests/non-free/memchr.c:136. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&s }},{0},{2})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possible uninitialized values +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values [value] Called Frama_C_show_each_mymemchr({1}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -124,8 +119,7 @@ tests/non-free/memchr.c:137:[value] assertion got status valid. [value] computing for function my_memchr <- memchr_initialization <- main. Called from tests/non-free/memchr.c:143. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&t }},{0},{4})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possible uninitialized values +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values [value] Called Frama_C_show_each_mymemchr({3}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -147,9 +141,8 @@ share/libc/__fc_builtin.h:50:[value] function Frama_C_interval: precondition got [value] computing for function my_memchr <- memchr_large <- main. Called from tests/non-free/memchr.c:196. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [3..30] }},{0},{100})) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -164,9 +157,8 @@ tests/non-free/memchr.c:198:[value] warning: assertion 'refined' got status unkn [value] computing for function my_memchr <- memchr_large <- main. Called from tests/non-free/memchr.c:201. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [5..17] }},{0},{100})) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -181,9 +173,8 @@ tests/non-free/memchr.c:203:[value] warning: assertion 'refined' got status unkn [value] computing for function my_memchr <- memchr_large <- main. Called from tests/non-free/memchr.c:206. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [60..74] }},{0},{100})) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -198,9 +189,8 @@ tests/non-free/memchr.c:208:[value] warning: assertion 'refined' got status unkn [value] computing for function my_memchr <- memchr_large <- main. Called from tests/non-free/memchr.c:211. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [63..80] }},{0},{100})) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -220,9 +210,8 @@ tests/non-free/memchr.c:184:[value] Call to builtin memset(({{ (void *)&a }},{0; [value] computing for function my_memchr <- memchr_large <- main. Called from tests/non-free/memchr.c:217. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [50..70] }},{0},{100})) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -251,9 +240,8 @@ tests/non-free/memchr.c:184:[value] Call to builtin memset(({{ (void *)&a[50] }} [value] computing for function my_memchr <- memchr_large_uninit <- main. Called from tests/non-free/memchr.c:232. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [3..30] }},{0},{100})) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -268,9 +256,8 @@ tests/non-free/memchr.c:234:[value] warning: assertion 'refined' got status unkn [value] computing for function my_memchr <- memchr_large_uninit <- main. Called from tests/non-free/memchr.c:238. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [63..80] }},{0},{100})) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -285,9 +272,8 @@ tests/non-free/memchr.c:240:[value] warning: assertion 'refined' got status unkn [value] computing for function my_memchr <- memchr_large_uninit <- main. Called from tests/non-free/memchr.c:243. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [45..55] }},{0},{100})) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -323,8 +309,7 @@ tests/non-free/memchr.c:269:[value] assertion got status valid. Called from tests/non-free/memchr.c:299. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&unterminated_string }}, {0},{13})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: reading indeterminate data [value] Recording results for my_memchr [value] Done for function my_memchr [value] computing for function my_memchr <- memchr_misc <- main. @@ -338,8 +323,7 @@ tests/non-free/memchr.c:303:[value] assertion got status valid. [value] computing for function my_memchr2 <- memchr_misc <- main. Called from tests/non-free/memchr.c:305. tests/non-free/memchr.c:64:[value] Call to builtin Frama_C_memchr(({{ &x + {0; 3} }},{0},{12})) -tests/non-free/memchr.c:64:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:64: - possibly reading indeterminate data +tests/non-free/memchr.c:64:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mymemchr2({0}) [value] Recording results for my_memchr2 [value] Done for function my_memchr2 @@ -347,8 +331,7 @@ tests/non-free/memchr.c:306:[value] assertion got status valid. [value] computing for function my_memchr <- memchr_misc <- main. Called from tests/non-free/memchr.c:308. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&loc_char_array }},{0},{5})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: reading indeterminate data [value] Recording results for my_memchr [value] Done for function my_memchr [value] computing for function my_memchr <- memchr_misc <- main. @@ -441,8 +424,7 @@ tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "mno\000pq [value] computing for function my_memchr <- memchr_misc2 <- main. Called from tests/non-free/memchr.c:341. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&maybe_init }},{0},{2})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possible uninitialized values +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values [value] Called Frama_C_show_each_mymemchr({1}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -452,8 +434,7 @@ tests/non-free/memchr.c:342:[value] assertion got status valid. [value] computing for function memchr_bitfields <- main. Called from tests/non-free/memchr.c:653. tests/non-free/memchr.c:161:[value] Call to builtin Frama_C_memchr(({{ (void const *)&s }},{0},{3})) -tests/non-free/memchr.c:161:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:161: - reading indeterminate data +tests/non-free/memchr.c:161:[value] warning: builtin Frama_C_memchr: reading indeterminate data [value] Recording results for memchr_bitfields [value] Done for function memchr_bitfields [value] computing for function memchr_bitfields2 <- main. @@ -473,8 +454,7 @@ tests/non-free/memchr.c:255:[value] warning: locals {x} escaping the scope of a [value] computing for function my_memchr <- memchr_escaping <- main. Called from tests/non-free/memchr.c:258. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&s }},{0},{4})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possible escaping addresses +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible escaping addresses [value] Called Frama_C_show_each_mymemchr({0}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -496,8 +476,7 @@ tests/non-free/memchr.c:356:[value] warning: out of bounds write. assert \valid( [value] computing for function my_memchr <- memchr_big_array <- main. Called from tests/non-free/memchr.c:364. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&u }},{0},{800})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possible uninitialized values +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values [value] Called Frama_C_show_each_mymemchr({1}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -505,8 +484,7 @@ tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-f Called from tests/non-free/memchr.c:365. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&r }},{0},{805})) tests/non-free/memchr.c:50:[kernel] more than 200(201) locations to update in array. Approximating. -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possible uninitialized values +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values [value] Called Frama_C_show_each_mymemchr({1}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -514,8 +492,7 @@ tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-f Called from tests/non-free/memchr.c:366. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&t }},{0},{4000001})) tests/non-free/memchr.c:50:[kernel] more than 200(1000000) locations to update in array. Approximating. -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possible uninitialized values +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values [value] Called Frama_C_show_each_mymemchr({1}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -526,24 +503,21 @@ tests/non-free/memchr.c:370:[value] assertion got status valid. [value] computing for function my_memchr <- memchr_big_array <- main. Called from tests/non-free/memchr.c:372. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&u }},{0},{1600})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possible uninitialized values +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values [value] Called Frama_C_show_each_mymemchr({1}) [value] Recording results for my_memchr [value] Done for function my_memchr [value] computing for function my_memchr <- memchr_big_array <- main. Called from tests/non-free/memchr.c:373. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&r }},{0},{1608})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possible uninitialized values +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values [value] Called Frama_C_show_each_mymemchr({1}) [value] Recording results for my_memchr [value] Done for function my_memchr [value] computing for function my_memchr <- memchr_big_array <- main. Called from tests/non-free/memchr.c:374. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&t }},{0},{8000000})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possible uninitialized values +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values [value] Called Frama_C_show_each_mymemchr({1}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -586,8 +560,7 @@ tests/non-free/memchr.c:396:[value] assertion got status valid. [value] computing for function my_memchr2 <- memchr_no_zero_but_ok <- main. Called from tests/non-free/memchr.c:397. tests/non-free/memchr.c:64:[value] Call to builtin Frama_C_memchr(({{ (void const *)&s{[7], [18]} }},{0},{5})) -tests/non-free/memchr.c:64:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:64: - possibly reading indeterminate data +tests/non-free/memchr.c:64:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mymemchr2({10; 18; 19}) [value] Recording results for my_memchr2 [value] Done for function my_memchr2 @@ -656,9 +629,8 @@ tests/non-free/memchr.c:184:[value] Call to builtin memset(({{ (void *)&a }},{1; [value] computing for function my_memchr <- memchr_large_n <- main. Called from tests/non-free/memchr.c:443. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [3..30] }},{0},[10..20])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -670,9 +642,8 @@ tests/non-free/memchr.c:445:[value] warning: assertion 'refined' got status unkn [value] computing for function my_memchr <- memchr_large_n <- main. Called from tests/non-free/memchr.c:449. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [3..30] }},{0},[10..20])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -684,9 +655,8 @@ tests/non-free/memchr.c:451:[value] warning: assertion 'refined' got status unkn [value] computing for function my_memchr <- memchr_large_n <- main. Called from tests/non-free/memchr.c:454. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [3..30] }},{0},[10..20])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -701,9 +671,8 @@ tests/non-free/memchr.c:456:[value] warning: assertion 'refined' got status unkn [value] computing for function my_memchr <- memchr_large_n <- main. Called from tests/non-free/memchr.c:459. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [5..17] }},{0},[10..20])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -718,9 +687,8 @@ tests/non-free/memchr.c:461:[value] warning: assertion 'refined' got status unkn [value] computing for function my_memchr <- memchr_large_n <- main. Called from tests/non-free/memchr.c:464. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [60..74] }},{0},[10..20])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -735,9 +703,8 @@ tests/non-free/memchr.c:466:[value] warning: assertion 'refined' got status unkn [value] computing for function my_memchr <- memchr_large_n <- main. Called from tests/non-free/memchr.c:469. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [63..80] }},{0},[10..20])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -757,9 +724,8 @@ tests/non-free/memchr.c:184:[value] Call to builtin memset(({{ (void *)&a }},{0; [value] computing for function my_memchr <- memchr_large_n <- main. Called from tests/non-free/memchr.c:475. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [50..70] }},{0},[10..20])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -773,9 +739,8 @@ tests/non-free/memchr.c:476:[value] assertion got status valid. [value] computing for function my_memchr <- memchr_large_n <- main. Called from tests/non-free/memchr.c:479. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [50..70] }},{0},[0..100])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -792,9 +757,8 @@ tests/non-free/memchr.c:480:[value] assertion got status valid. [value] computing for function my_memchr <- memchr_large_n <- main. Called from tests/non-free/memchr.c:484. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [0..10] }},{0},[0..90])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -865,9 +829,8 @@ tests/non-free/memchr.c:184:[value] Call to builtin memset(({{ (void *)&a[16] }} [value] computing for function my_memchr <- memchr_intervals <- main. Called from tests/non-free/memchr.c:516. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [0..9] }},{0},[0..10])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -886,8 +849,7 @@ tests/non-free/memchr.c:518:[value] warning: assertion 'refined' got status unkn Called from tests/non-free/memchr.c:522. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&a{[3], [4], [5], [6], [7], [8], [9]} }},{0},[2..10])) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possibly reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mymemchr({-1; 7; 8; 9}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -902,8 +864,7 @@ tests/non-free/memchr.c:523:[value] assertion got status valid. Called from tests/non-free/memchr.c:527. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&a{[3], [4], [5], [6], [7], [8], [9]} }},{0},[0..11])) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possibly reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mymemchr({-1; 7; 8; 9}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -919,8 +880,7 @@ tests/non-free/memchr.c:528:[value] assertion got status valid. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&a{[3], [4], [5], [6], [7], [8], [9], [10]} }}, {0},[0..9])) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possibly reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mymemchr({-1; 7; 8; 9}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -936,8 +896,7 @@ tests/non-free/memchr.c:533:[value] assertion got status valid. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&a{[3], [4], [5], [6], [7], [8], [9], [10]} }}, {0},[0..10])) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possibly reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mymemchr({-1; 7; 8; 9}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -953,8 +912,7 @@ tests/non-free/memchr.c:538:[value] assertion got status valid. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&a{[3], [4], [5], [6], [7], [8], [9], [10]} }}, {0},[0..11])) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possibly reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mymemchr({-1; 7; 8; 9}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -968,9 +926,8 @@ tests/non-free/memchr.c:543:[value] assertion got status valid. [value] computing for function my_memchr <- memchr_intervals <- main. Called from tests/non-free/memchr.c:547. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [3..11] }},{0},[0..10])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -987,9 +944,8 @@ tests/non-free/memchr.c:548:[value] assertion got status valid. [value] computing for function my_memchr <- memchr_intervals <- main. Called from tests/non-free/memchr.c:552. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [3..11] }},{0},[0..10])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -1006,9 +962,8 @@ tests/non-free/memchr.c:553:[value] assertion got status valid. [value] computing for function my_memchr <- memchr_intervals <- main. Called from tests/non-free/memchr.c:557. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [3..11] }},{0},[0..11])) -tests/non-free/memchr.c:50:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -1028,8 +983,7 @@ tests/non-free/memchr.c:558:[value] assertion got status valid. memchr_small_sets_chars <- main. Called from tests/non-free/memchr.c:566. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "abc" + {0; 1} }},{97},{4})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possibly reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mymemchr({0}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -1124,8 +1078,7 @@ tests/non-free/memchr.c:606:[value] assertion got status valid. memchr_small_sets_chars <- main. Called from tests/non-free/memchr.c:566. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "abc" + {0; 1} }},{97; 98},{4})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possibly reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mymemchr({-1; 0; 1}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -1174,8 +1127,7 @@ tests/non-free/memchr.c:617:[value] assertion got status valid. memchr_small_sets_chars <- main. Called from tests/non-free/memchr.c:566. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "abc" + {0; 1} }},{98; 99},{4})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possibly reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mymemchr({-1; 1; 2}) [value] Recording results for my_memchr [value] Done for function my_memchr @@ -1229,8 +1181,7 @@ tests/non-free/memchr.c:629:[value] assertion got status valid. memchr_small_sets_chars <- main. Called from tests/non-free/memchr.c:566. tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "abc" + {0; 1} }},{0; 98; 99},{4})) -tests/non-free/memchr.c:50:[value] warning: built-in Frama_C_memchr: tests/non-free/memchr.c:50: - possibly reading indeterminate data +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mymemchr({-1; 1; 2; 3}) [value] Recording results for my_memchr [value] Done for function my_memchr diff --git a/tests/non-free/oracle_legacy/str_allocated.res.oracle b/tests/non-free/oracle_legacy/str_allocated.res.oracle index 72baddb1c630b1fc7f66d06a87d179617bb60111..e5e44c9184390537d66e1c900a2bfe5efacc08bb 100644 --- a/tests/non-free/oracle_legacy/str_allocated.res.oracle +++ b/tests/non-free/oracle_legacy/str_allocated.res.oracle @@ -17,8 +17,7 @@ tests/non-free/str_allocated.c:12:[value:malloc] resizing variable `__malloc_w_m tests/non-free/str_allocated.c:14:[value] warning: accessing uninitialized left-value. assert \initialized(&b); tests/non-free/str_allocated.c:14:[value] Call to builtin Frama_C_memchr(({{ (void const *)&__malloc_w_memchr_bug_l12 }}, {1},{1})) -tests/non-free/str_allocated.c:14:[value] warning: built-in Frama_C_memchr: tests/non-free/str_allocated.c:14: - reading indeterminate data +tests/non-free/str_allocated.c:14:[value] warning: builtin Frama_C_memchr: reading indeterminate data [value] Recording results for memchr_bug [value] Done for function memchr_bug [value] Recording results for main diff --git a/tests/non-free/oracle_legacy/strchr.res.oracle b/tests/non-free/oracle_legacy/strchr.res.oracle index e1b504509de5f35f8c61cea27ae8d39803ef4327..a49bc2418f65a65e8c5c8f72600cc045d15bd1ad 100644 --- a/tests/non-free/oracle_legacy/strchr.res.oracle +++ b/tests/non-free/oracle_legacy/strchr.res.oracle @@ -53,8 +53,7 @@ tests/non-free/strchr.c:91:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_small_sets <- main. Called from tests/non-free/strchr.c:95. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t[0] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr({0; 1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -66,8 +65,7 @@ tests/non-free/strchr.c:96:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_zero_termination <- main. Called from tests/non-free/strchr.c:104. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &empty_or_non_terminated[0] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr({0}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -75,15 +73,13 @@ tests/non-free/strchr.c:105:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_zero_termination <- main. Called from tests/non-free/strchr.c:109. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &non_terminated[0] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Recording results for my_strchr [value] Done for function my_strchr [value] computing for function my_strchr <- strchr_zero_termination <- main. Called from tests/non-free/strchr.c:115. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &non_terminated2[2] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Recording results for my_strchr [value] Done for function my_strchr [value] Recording results for strchr_zero_termination @@ -93,8 +89,7 @@ tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-f [value] computing for function my_strchr <- strchr_initialization <- main. Called from tests/non-free/strchr.c:123. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &empty_or_uninitialized[0] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possible uninitialized values +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possible uninitialized values [value] Called Frama_C_show_each_mystrchr({0}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -102,15 +97,13 @@ tests/non-free/strchr.c:124:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_initialization <- main. Called from tests/non-free/strchr.c:127. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &uninitialized[0] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Recording results for my_strchr [value] Done for function my_strchr [value] computing for function my_strchr <- strchr_initialization <- main. Called from tests/non-free/strchr.c:132. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &s[0] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possible uninitialized values +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possible uninitialized values [value] Called Frama_C_show_each_mystrchr({1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -118,8 +111,7 @@ tests/non-free/strchr.c:133:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_initialization <- main. Called from tests/non-free/strchr.c:139. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t[0] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possible uninitialized values +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possible uninitialized values [value] Called Frama_C_show_each_mystrchr({3}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -141,9 +133,8 @@ share/libc/__fc_builtin.h:50:[value] function Frama_C_interval: precondition got [value] computing for function my_strchr <- strchr_large <- main. Called from tests/non-free/strchr.c:192. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &a + [3..30] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -157,9 +148,8 @@ tests/non-free/strchr.c:193:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_large <- main. Called from tests/non-free/strchr.c:196. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &a + [5..17] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -174,9 +164,8 @@ tests/non-free/strchr.c:198:[value] warning: assertion 'refined' got status unkn [value] computing for function my_strchr <- strchr_large <- main. Called from tests/non-free/strchr.c:201. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &a + [60..74] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -191,9 +180,8 @@ tests/non-free/strchr.c:203:[value] warning: assertion 'refined' got status unkn [value] computing for function my_strchr <- strchr_large <- main. Called from tests/non-free/strchr.c:206. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &a + [63..80] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -213,9 +201,8 @@ tests/non-free/strchr.c:180:[value] Call to builtin memset(({{ (void *)&a }},{0; [value] computing for function my_strchr <- strchr_large <- main. Called from tests/non-free/strchr.c:212. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &a + [50..70] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -243,9 +230,8 @@ tests/non-free/strchr.c:180:[value] Call to builtin memset(({{ (void *)&a[50] }} [value] computing for function my_strchr <- strchr_large_uninit <- main. Called from tests/non-free/strchr.c:226. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &a + [3..30] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -260,9 +246,8 @@ tests/non-free/strchr.c:228:[value] warning: assertion 'refined' got status unkn [value] computing for function my_strchr <- strchr_large_uninit <- main. Called from tests/non-free/strchr.c:232. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &a + [63..80] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -277,9 +262,8 @@ tests/non-free/strchr.c:234:[value] warning: assertion 'refined' got status unkn [value] computing for function my_strchr <- strchr_large_uninit <- main. Called from tests/non-free/strchr.c:237. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &a + [45..55] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -314,8 +298,7 @@ tests/non-free/strchr.c:263:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_misc <- main. Called from tests/non-free/strchr.c:293. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &unterminated_string[0] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Recording results for my_strchr [value] Done for function my_strchr [value] computing for function my_strchr <- strchr_misc <- main. @@ -329,8 +312,7 @@ tests/non-free/strchr.c:297:[value] assertion got status valid. [value] computing for function my_strchr2 <- strchr_misc <- main. Called from tests/non-free/strchr.c:299. tests/non-free/strchr.c:62:[value] Call to builtin Frama_C_strchr(({{ &x + {0; 3} }},{0})) -tests/non-free/strchr.c:62:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:62: - possibly reading indeterminate data +tests/non-free/strchr.c:62:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr2({0}) [value] Recording results for my_strchr2 [value] Done for function my_strchr2 @@ -338,8 +320,7 @@ tests/non-free/strchr.c:300:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_misc <- main. Called from tests/non-free/strchr.c:302. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &loc_char_array[0] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Recording results for my_strchr [value] Done for function my_strchr [value] computing for function my_strchr <- strchr_misc <- main. @@ -430,8 +411,7 @@ tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "mno\000pq [value] computing for function my_strchr <- strchr_misc2 <- main. Called from tests/non-free/strchr.c:335. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &maybe_init[0] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possible uninitialized values +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possible uninitialized values [value] Called Frama_C_show_each_mystrchr({1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -441,8 +421,7 @@ tests/non-free/strchr.c:336:[value] assertion got status valid. [value] computing for function strchr_bitfields <- main. Called from tests/non-free/strchr.c:540. tests/non-free/strchr.c:157:[value] Call to builtin Frama_C_strchr(({{ (char const *)&s }},{0})) -tests/non-free/strchr.c:157:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:157: - reading indeterminate data +tests/non-free/strchr.c:157:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Recording results for strchr_bitfields [value] Done for function strchr_bitfields [value] computing for function strchr_bitfields2 <- main. @@ -462,8 +441,7 @@ tests/non-free/strchr.c:249:[value] warning: locals {x} escaping the scope of a [value] computing for function my_strchr <- strchr_escaping <- main. Called from tests/non-free/strchr.c:252. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &s[0] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possible escaping addresses +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possible escaping addresses [value] Called Frama_C_show_each_mystrchr({0}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -485,8 +463,7 @@ tests/non-free/strchr.c:350:[value] warning: out of bounds write. assert \valid( [value] computing for function my_strchr <- strchr_big_array <- main. Called from tests/non-free/strchr.c:359. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ (char const *)&u }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possible uninitialized values +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possible uninitialized values [value] Called Frama_C_show_each_mystrchr({1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -494,8 +471,7 @@ tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-f Called from tests/non-free/strchr.c:360. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ (char const *)&r }},{0})) tests/non-free/strchr.c:49:[kernel] more than 200(201) locations to update in array. Approximating. -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possible uninitialized values +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possible uninitialized values [value] Called Frama_C_show_each_mystrchr({1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -503,8 +479,7 @@ tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-f Called from tests/non-free/strchr.c:361. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ (char const *)&t }},{0})) tests/non-free/strchr.c:49:[kernel] more than 200(1000000) locations to update in array. Approximating. -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possible uninitialized values +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possible uninitialized values [value] Called Frama_C_show_each_mystrchr({1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -515,9 +490,8 @@ tests/non-free/strchr.c:365:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_big_array <- main. Called from tests/non-free/strchr.c:367. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &u + [0..4294967295] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -527,9 +501,8 @@ tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-f [value] computing for function my_strchr <- strchr_big_array <- main. Called from tests/non-free/strchr.c:368. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &r + [0..4294967295] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -539,9 +512,8 @@ tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-f [value] computing for function my_strchr <- strchr_big_array <- main. Called from tests/non-free/strchr.c:369. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t + [0..4294967295] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -576,24 +548,21 @@ tests/non-free/strchr.c:386:[value] warning: out of bounds write. assert \valid( [value] computing for function my_strchr <- strchr_big_array <- main. Called from tests/non-free/strchr.c:387. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ (char const *)&u }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr([0..799]) [value] Recording results for my_strchr [value] Done for function my_strchr [value] computing for function my_strchr <- strchr_big_array <- main. Called from tests/non-free/strchr.c:388. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ (char const *)&r }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr([0..803]) [value] Recording results for my_strchr [value] Done for function my_strchr [value] computing for function my_strchr <- strchr_big_array <- main. Called from tests/non-free/strchr.c:389. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ (char const *)&t }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr([0..3999999]) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -604,9 +573,8 @@ tests/non-free/strchr.c:393:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_big_array <- main. Called from tests/non-free/strchr.c:395. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &u + [0..4294967295] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -616,9 +584,8 @@ tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-f [value] computing for function my_strchr <- strchr_big_array <- main. Called from tests/non-free/strchr.c:396. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &r + [0..4294967295] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -628,9 +595,8 @@ tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-f [value] computing for function my_strchr <- strchr_big_array <- main. Called from tests/non-free/strchr.c:397. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t + [0..4294967295] }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -672,8 +638,7 @@ tests/non-free/strchr.c:421:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_no_zero_but_ok <- main. Called from tests/non-free/strchr.c:423. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &s{[7], [11]} }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr({10; 14; 15; 16; 17; 18; 19}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -681,8 +646,7 @@ tests/non-free/strchr.c:424:[value] assertion got status valid. [value] computing for function my_strchr <- strchr_no_zero_but_ok <- main. Called from tests/non-free/strchr.c:426. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &s{[7], [18]} }},{0})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr({10; 18; 19}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -706,8 +670,7 @@ tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "abc" + {0 strchr_small_sets_chars <- main. Called from tests/non-free/strchr.c:438. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "\000bc" + {0; 1} }},{97})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Called Frama_C_show_each_mystrchr({-1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -715,8 +678,7 @@ tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-f strchr_small_sets_chars <- main. Called from tests/non-free/strchr.c:440. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "" }},{97})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Called Frama_C_show_each_mystrchr({-1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -724,8 +686,7 @@ tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-f strchr_small_sets_chars <- main. Called from tests/non-free/strchr.c:443. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "b\000c" + {0; 2} }},{97})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Called Frama_C_show_each_mystrchr({-1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -733,8 +694,7 @@ tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-f strchr_small_sets_chars <- main. Called from tests/non-free/strchr.c:447. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t[0] }},{97})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr({0; 1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -767,8 +727,7 @@ tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "\000bc" + strchr_small_sets_chars <- main. Called from tests/non-free/strchr.c:440. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "" }},{98})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Called Frama_C_show_each_mystrchr({-1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -783,8 +742,7 @@ tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "b\000c" + strchr_small_sets_chars <- main. Called from tests/non-free/strchr.c:447. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t[0] }},{98})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr({0; 1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -818,8 +776,7 @@ tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "\000bc" + strchr_small_sets_chars <- main. Called from tests/non-free/strchr.c:440. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "" }},{97; 98})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Called Frama_C_show_each_mystrchr({-1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -834,8 +791,7 @@ tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "b\000c" + strchr_small_sets_chars <- main. Called from tests/non-free/strchr.c:447. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t[0] }},{97; 98})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr({0; 1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -869,8 +825,7 @@ tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "\000bc" + strchr_small_sets_chars <- main. Called from tests/non-free/strchr.c:440. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "" }},{98; 99})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Called Frama_C_show_each_mystrchr({-1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -885,8 +840,7 @@ tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "b\000c" + strchr_small_sets_chars <- main. Called from tests/non-free/strchr.c:447. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t[0] }},{98; 99})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr({0; 1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -935,8 +889,7 @@ tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "b\000c" + strchr_small_sets_chars <- main. Called from tests/non-free/strchr.c:447. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t[0] }},{0; 98; 99})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr({-1; 0; 1}) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -968,8 +921,7 @@ tests/non-free/strchr.c:512:[value] assertion got status valid. Called from tests/non-free/strchr.c:516. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t[0] ; "ABCDEFGHIJKLMNOPQRSTUVWXYZ" }}, [-128..127])) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data [value] Called Frama_C_show_each_mystrchr([-1..26]) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -983,8 +935,7 @@ tests/non-free/strchr.c:180:[value] Call to builtin memset(({{ (void *)&t }},{0; Called from tests/non-free/strchr.c:519. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t[0] ; "ABCDEFGHIJKLMNOPQRSTUVWXYZ" }}, [-128..127])) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data [value] Called Frama_C_show_each_mystrchr([-1..29]) [value] Recording results for my_strchr [value] Done for function my_strchr @@ -994,14 +945,8 @@ tests/non-free/strchr.c:520:[value] assertion got status valid. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t + [0..4294967295] ; "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + [0..4294967295] }},[-128..127])) -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in cannot deal with large imprecise ranges, - over-approximating -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: - possible uninitialized values - possible escaping addresses - possibly reading indeterminate data +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating possible uninitialized values possible escaping addresses possibly reading indeterminate data @@ -1018,7 +963,7 @@ tests/non-free/strchr.c:522:[value] assertion got status valid. tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ garbled mix of &{s; "hello"} (origin: Arithmetic {tests/non-free/strchr.c:49}) }},{1})) -tests/non-free/strchr.c:49:[value] warning: built-in Frama_C_strchr: tests/non-free/strchr.c:49: +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: string argument is too imprecise, cannot compute a useful result. [value] Called Frama_C_show_each_mystrchr({-1}) [value] Recording results for my_strchr diff --git a/tests/non-free/oracle_legacy/strlen.res.oracle b/tests/non-free/oracle_legacy/strlen.res.oracle index ec734ef545879094fed9bf142a447a25b8ceb433..a5f44175539bd1d22c10dbb76a8664ee3b74badc 100644 --- a/tests/non-free/oracle_legacy/strlen.res.oracle +++ b/tests/non-free/oracle_legacy/strlen.res.oracle @@ -43,23 +43,19 @@ tests/non-free/strlen.c:71:[value] assertion got status valid. tests/non-free/strlen.c:75:[value] Call to builtin Frama_C_strlen(({{ "b\000c" + {0; 2} }})) tests/non-free/strlen.c:76:[value] assertion got status valid. tests/non-free/strlen.c:81:[value] Call to builtin Frama_C_strlen(({{ &t[0] }})) -tests/non-free/strlen.c:81:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:81: - possibly reading indeterminate data +tests/non-free/strlen.c:81:[value] warning: builtin Frama_C_strlen: possibly reading indeterminate data tests/non-free/strlen.c:82:[value] assertion got status valid. [value] Recording results for small_sets [value] Done for function small_sets [value] computing for function zero_termination <- main. Called from tests/non-free/strlen.c:310. tests/non-free/strlen.c:89:[value] Call to builtin Frama_C_strlen(({{ &empty_or_non_terminated[0] }})) -tests/non-free/strlen.c:89:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:89: - possibly reading indeterminate data +tests/non-free/strlen.c:89:[value] warning: builtin Frama_C_strlen: possibly reading indeterminate data tests/non-free/strlen.c:90:[value] assertion got status valid. tests/non-free/strlen.c:93:[value] Call to builtin Frama_C_strlen(({{ &non_terminated[0] }})) -tests/non-free/strlen.c:93:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:93: - reading indeterminate data +tests/non-free/strlen.c:93:[value] warning: builtin Frama_C_strlen: reading indeterminate data tests/non-free/strlen.c:97:[value] Call to builtin Frama_C_strlen(({{ &non_terminated2{[2], [3]} }})) -tests/non-free/strlen.c:97:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:97: - reading indeterminate data +tests/non-free/strlen.c:97:[value] warning: builtin Frama_C_strlen: reading indeterminate data [value] Recording results for zero_termination [value] Done for function zero_termination [value] computing for function strlen_initialization <- main. @@ -67,31 +63,27 @@ tests/non-free/strlen.c:97:[value] warning: built-in Frama_C_strlen: tests/non-f [value] computing for function my_strlen <- strlen_initialization <- main. Called from tests/non-free/strlen.c:105. tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &empty_or_uninitialized[0] }})) -tests/non-free/strlen.c:54:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:54: - possible uninitialized values +tests/non-free/strlen.c:54:[value] warning: builtin Frama_C_strlen: possible uninitialized values [value] Recording results for my_strlen [value] Done for function my_strlen tests/non-free/strlen.c:106:[value] assertion got status valid. [value] computing for function my_strlen <- strlen_initialization <- main. Called from tests/non-free/strlen.c:109. tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &uninitialized[0] }})) -tests/non-free/strlen.c:54:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:54: - reading indeterminate data +tests/non-free/strlen.c:54:[value] warning: builtin Frama_C_strlen: reading indeterminate data [value] Recording results for my_strlen [value] Done for function my_strlen [value] computing for function my_strlen <- strlen_initialization <- main. Called from tests/non-free/strlen.c:116. tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &s[0] }})) -tests/non-free/strlen.c:54:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:54: - possible uninitialized values +tests/non-free/strlen.c:54:[value] warning: builtin Frama_C_strlen: possible uninitialized values [value] Recording results for my_strlen [value] Done for function my_strlen tests/non-free/strlen.c:117:[value] assertion got status valid. [value] computing for function my_strlen <- strlen_initialization <- main. Called from tests/non-free/strlen.c:124. tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &t[0] }})) -tests/non-free/strlen.c:54:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:54: - possible uninitialized values +tests/non-free/strlen.c:54:[value] warning: builtin Frama_C_strlen: possible uninitialized values [value] Recording results for my_strlen [value] Done for function my_strlen tests/non-free/strlen.c:125:[value] assertion got status valid. @@ -139,8 +131,7 @@ tests/non-free/strlen.c:181:[value] assertion got status valid. [value] computing for function my_strlen <- strlen_large <- main. Called from tests/non-free/strlen.c:184. tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &a + [63..80] }})) -tests/non-free/strlen.c:54:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:54: - possibly reading indeterminate data +tests/non-free/strlen.c:54:[value] warning: builtin Frama_C_strlen: possibly reading indeterminate data [value] Recording results for my_strlen [value] Done for function my_strlen tests/non-free/strlen.c:185:[value] assertion got status valid. @@ -155,8 +146,7 @@ tests/non-free/strlen.c:161:[value] Call to builtin memset(({{ (void *)&a }},{0; [value] computing for function my_strlen <- strlen_large <- main. Called from tests/non-free/strlen.c:189. tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &a + [50..70] }})) -tests/non-free/strlen.c:54:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:54: - possibly reading indeterminate data +tests/non-free/strlen.c:54:[value] warning: builtin Frama_C_strlen: possibly reading indeterminate data [value] Recording results for my_strlen [value] Done for function my_strlen tests/non-free/strlen.c:190:[value] assertion got status valid. @@ -180,8 +170,7 @@ tests/non-free/strlen.c:161:[value] Call to builtin memset(({{ (void *)&a[50] }} [value] computing for function my_strlen <- strlen_large_uninit <- main. Called from tests/non-free/strlen.c:203. tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &a + [3..30] }})) -tests/non-free/strlen.c:54:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:54: - possibly reading indeterminate data +tests/non-free/strlen.c:54:[value] warning: builtin Frama_C_strlen: possibly reading indeterminate data [value] Recording results for my_strlen [value] Done for function my_strlen tests/non-free/strlen.c:204:[value] assertion got status valid. @@ -191,8 +180,7 @@ tests/non-free/strlen.c:204:[value] assertion got status valid. [value] computing for function my_strlen <- strlen_large_uninit <- main. Called from tests/non-free/strlen.c:208. tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &a + [63..80] }})) -tests/non-free/strlen.c:54:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:54: - possibly reading indeterminate data +tests/non-free/strlen.c:54:[value] warning: builtin Frama_C_strlen: possibly reading indeterminate data [value] Recording results for my_strlen [value] Done for function my_strlen tests/non-free/strlen.c:209:[value] assertion got status valid. @@ -202,7 +190,7 @@ tests/non-free/strlen.c:209:[value] assertion got status valid. [value] computing for function my_strlen <- strlen_large_uninit <- main. Called from tests/non-free/strlen.c:212. tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &a + [45..55] }})) -tests/non-free/strlen.c:54:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:54: +tests/non-free/strlen.c:54:[value] warning: builtin Frama_C_strlen: possible uninitialized values possibly reading indeterminate data [value] Recording results for my_strlen @@ -213,13 +201,11 @@ tests/non-free/strlen.c:213:[value] assertion got status valid. [value] computing for function misc <- main. Called from tests/non-free/strlen.c:314. tests/non-free/strlen.c:241:[value] Call to builtin Frama_C_strlen(({{ &unterminated_string[0] }})) -tests/non-free/strlen.c:241:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:241: - reading indeterminate data +tests/non-free/strlen.c:241:[value] warning: builtin Frama_C_strlen: reading indeterminate data tests/non-free/strlen.c:244:[value] Call to builtin Frama_C_strlen(({{ "Hello World\n" ; "Bonjour Monde\n" }})) tests/non-free/strlen.c:245:[value] assertion got status valid. tests/non-free/strlen.c:248:[value] Call to builtin Frama_C_strlen(({{ &x + {0; 3} }})) -tests/non-free/strlen.c:248:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:248: - possibly reading indeterminate data +tests/non-free/strlen.c:248:[value] warning: builtin Frama_C_strlen: possibly reading indeterminate data tests/non-free/strlen.c:249:[value] assertion got status valid. [value] computing for function Frama_C_interval <- misc <- main. Called from tests/non-free/strlen.c:250. @@ -230,8 +216,7 @@ tests/non-free/strlen.c:252:[value] Call to builtin Frama_C_strlen(({{ "" ; "a" "aaaaaaaaaaaa" ; "aaaaaaaaaaaaa" }})) tests/non-free/strlen.c:253:[value] assertion got status valid. tests/non-free/strlen.c:255:[value] Call to builtin Frama_C_strlen(({{ &loc_char_array[0] }})) -tests/non-free/strlen.c:255:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:255: - reading indeterminate data +tests/non-free/strlen.c:255:[value] warning: builtin Frama_C_strlen: reading indeterminate data tests/non-free/strlen.c:256:[value] Call to builtin Frama_C_strlen(({{ "abc\000\000\000abc" }})) tests/non-free/strlen.c:257:[value] assertion got status valid. tests/non-free/strlen.c:260:[value] Call to builtin Frama_C_strlen(({{ "abc" + {0; 1} ; "ABCD" + {0; 1} }})) @@ -250,16 +235,14 @@ tests/non-free/strlen.c:270:[value] Call to builtin Frama_C_strlen(({{ "mno\000p tests/non-free/strlen.c:270:[value] Call to builtin Frama_C_strlen(({{ "mno\000pqr" + {0; 1; 2; 3; 4; 5; 6; 7} ; "MNOP\000QRS" + {0; 1; 2; 3; 4; 5; 6; 7} }})) tests/non-free/strlen.c:277:[value] Call to builtin Frama_C_strlen(({{ &maybe_init[0] }})) -tests/non-free/strlen.c:277:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:277: - possible uninitialized values +tests/non-free/strlen.c:277:[value] warning: builtin Frama_C_strlen: possible uninitialized values tests/non-free/strlen.c:278:[value] assertion got status valid. [value] Recording results for misc [value] Done for function misc [value] computing for function bitfields <- main. Called from tests/non-free/strlen.c:315. tests/non-free/strlen.c:140:[value] Call to builtin Frama_C_strlen(({{ (char const *)&s }})) -tests/non-free/strlen.c:140:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:140: - reading indeterminate data +tests/non-free/strlen.c:140:[value] warning: builtin Frama_C_strlen: reading indeterminate data [value] Recording results for bitfields [value] Done for function bitfields [value] computing for function bitfields2 <- main. @@ -272,8 +255,7 @@ tests/non-free/strlen.c:156:[value] assertion got status valid. Called from tests/non-free/strlen.c:317. tests/non-free/strlen.c:222:[value] warning: locals {x} escaping the scope of a block of escaping through s tests/non-free/strlen.c:225:[value] Call to builtin Frama_C_strlen(({{ &s[0] }})) -tests/non-free/strlen.c:225:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:225: - possible escaping addresses +tests/non-free/strlen.c:225:[value] warning: builtin Frama_C_strlen: possible escaping addresses tests/non-free/strlen.c:226:[value] assertion got status valid. tests/non-free/strlen.c:228:[value] Call to builtin Frama_C_strlen(({{ &s[0] }})) tests/non-free/strlen.c:229:[value] assertion got status valid. @@ -285,29 +267,26 @@ tests/non-free/strlen.c:287:[value] warning: out of bounds write. assert \valid( tests/non-free/strlen.c:289:[value] warning: out of bounds write. assert \valid(p); tests/non-free/strlen.c:291:[value] warning: out of bounds write. assert \valid(p); tests/non-free/strlen.c:297:[value] Call to builtin Frama_C_strlen(({{ (char const *)&u }})) -tests/non-free/strlen.c:297:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:297: - possible uninitialized values +tests/non-free/strlen.c:297:[value] warning: builtin Frama_C_strlen: possible uninitialized values tests/non-free/strlen.c:298:[value] Call to builtin Frama_C_strlen(({{ (char const *)&r }})) tests/non-free/strlen.c:298:[kernel] more than 200(201) locations to update in array. Approximating. -tests/non-free/strlen.c:298:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:298: - possible uninitialized values +tests/non-free/strlen.c:298:[value] warning: builtin Frama_C_strlen: possible uninitialized values tests/non-free/strlen.c:299:[value] Call to builtin Frama_C_strlen(({{ (char const *)&t }})) tests/non-free/strlen.c:299:[kernel] more than 200(1000000) locations to update in array. Approximating. -tests/non-free/strlen.c:299:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:299: - possible uninitialized values +tests/non-free/strlen.c:299:[value] warning: builtin Frama_C_strlen: possible uninitialized values [value] Called Frama_C_show_each({1}, {1}, {1}) tests/non-free/strlen.c:302:[value] Call to builtin Frama_C_strlen(({{ &u + [-8589934592..8589934588],0%4 }})) -tests/non-free/strlen.c:302:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:302: +tests/non-free/strlen.c:302:[value] warning: builtin Frama_C_strlen: possible uninitialized values possibly reading indeterminate data tests/non-free/strlen.c:303:[value] Call to builtin Frama_C_strlen(({{ &r + [-8589934592..8589934588],0%4 }})) tests/non-free/strlen.c:303:[kernel] more than 200(201) locations to update in array. Approximating. -tests/non-free/strlen.c:303:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:303: +tests/non-free/strlen.c:303:[value] warning: builtin Frama_C_strlen: possible uninitialized values possibly reading indeterminate data tests/non-free/strlen.c:304:[value] Call to builtin Frama_C_strlen(({{ &t + [-8589934592..8589934588],0%4 }})) tests/non-free/strlen.c:304:[kernel] more than 200(1000000) locations to update in array. Approximating. -tests/non-free/strlen.c:304:[value] warning: built-in Frama_C_strlen: tests/non-free/strlen.c:304: +tests/non-free/strlen.c:304:[value] warning: builtin Frama_C_strlen: possible uninitialized values possibly reading indeterminate data [value] Called Frama_C_show_each({0; 1; 2; 3}, [0..800], [0..3999996]) diff --git a/tests/non-free/oracle_legacy/strnlen.res.oracle b/tests/non-free/oracle_legacy/strnlen.res.oracle index 6a40698b4c76357bafad5dc338bb2679678addb0..fd445aa1bcd7e2e2bab8ff8ae70ca5c35fabeee7 100644 --- a/tests/non-free/oracle_legacy/strnlen.res.oracle +++ b/tests/non-free/oracle_legacy/strnlen.res.oracle @@ -18,8 +18,7 @@ tests/non-free/strnlen.i:9:[value] Call to builtin Frama_C_strnlen(({{ &t1[0] }},{3})) tests/non-free/strnlen.i:10:[value] Call to builtin Frama_C_strnlen(({{ &t1[0] }},{5})) tests/non-free/strnlen.i:11:[value] Call to builtin Frama_C_strnlen(({{ &t1[0] }},{6})) -tests/non-free/strnlen.i:11:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen.i:11: - reading indeterminate data +tests/non-free/strnlen.i:11:[value] warning: builtin Frama_C_strnlen: reading indeterminate data tests/non-free/strnlen.i:13:[value] Call to builtin Frama_C_strnlen(({{ &t2[0] }},{3})) tests/non-free/strnlen.i:14:[value] Call to builtin Frama_C_strnlen(({{ &t2[0] }},{5})) tests/non-free/strnlen.i:15:[value] Call to builtin Frama_C_strnlen(({{ &t2[0] }},{6})) diff --git a/tests/non-free/oracle_legacy/strnlen2.res.oracle b/tests/non-free/oracle_legacy/strnlen2.res.oracle index 170241239c5d918dd9e75fa0d7fc58ff5a8587b9..993520f015fecb444381bb243fc708439e9df702 100644 --- a/tests/non-free/oracle_legacy/strnlen2.res.oracle +++ b/tests/non-free/oracle_legacy/strnlen2.res.oracle @@ -51,29 +51,23 @@ tests/non-free/strnlen2.c:62:[value] assertion got status valid. tests/non-free/strnlen2.c:68:[value] Call to builtin Frama_C_strnlen(({{ &empty_or_non_terminated[0] }},{1})) tests/non-free/strnlen2.c:69:[value] assertion got status valid. tests/non-free/strnlen2.c:73:[value] Call to builtin Frama_C_strnlen(({{ &non_terminated[0] }},{2})) -tests/non-free/strnlen2.c:73:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:73: - reading indeterminate data +tests/non-free/strnlen2.c:73:[value] warning: builtin Frama_C_strnlen: reading indeterminate data tests/non-free/strnlen2.c:79:[value] Call to builtin Frama_C_strnlen(({{ &non_terminated2{[2], [3]} }},{4})) -tests/non-free/strnlen2.c:79:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:79: - reading indeterminate data +tests/non-free/strnlen2.c:79:[value] warning: builtin Frama_C_strnlen: reading indeterminate data [value] Recording results for zero_termination [value] Done for function zero_termination [value] computing for function initialization <- main. Called from tests/non-free/strnlen2.c:491. tests/non-free/strnlen2.c:85:[value] Call to builtin Frama_C_strnlen(({{ &empty_or_uninitialized[0] }},{1})) -tests/non-free/strnlen2.c:85:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:85: - possible uninitialized values +tests/non-free/strnlen2.c:85:[value] warning: builtin Frama_C_strnlen: possible uninitialized values tests/non-free/strnlen2.c:86:[value] assertion got status valid. tests/non-free/strnlen2.c:89:[value] Call to builtin Frama_C_strnlen(({{ &uninitialized[0] }},{1})) -tests/non-free/strnlen2.c:89:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:89: - reading indeterminate data +tests/non-free/strnlen2.c:89:[value] warning: builtin Frama_C_strnlen: reading indeterminate data tests/non-free/strnlen2.c:94:[value] Call to builtin Frama_C_strnlen(({{ &s[0] }},{2})) -tests/non-free/strnlen2.c:94:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:94: - possible uninitialized values +tests/non-free/strnlen2.c:94:[value] warning: builtin Frama_C_strnlen: possible uninitialized values tests/non-free/strnlen2.c:95:[value] assertion got status valid. tests/non-free/strnlen2.c:101:[value] Call to builtin Frama_C_strnlen(({{ &t[0] }},{4})) -tests/non-free/strnlen2.c:101:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:101: - possible uninitialized values +tests/non-free/strnlen2.c:101:[value] warning: builtin Frama_C_strnlen: possible uninitialized values tests/non-free/strnlen2.c:102:[value] assertion got status valid. [value] Recording results for initialization [value] Done for function initialization @@ -105,8 +99,7 @@ tests/non-free/strnlen2.c:157:[value] assertion got status valid. Called from tests/non-free/strnlen2.c:159. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:160:[value] Call to builtin Frama_C_strnlen(({{ &a + [63..80] }},{100})) -tests/non-free/strnlen2.c:160:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:160: - possibly reading indeterminate data +tests/non-free/strnlen2.c:160:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:161:[value] assertion got status valid. [value] computing for function init_array_nondet <- large <- main. Called from tests/non-free/strnlen2.c:163. @@ -117,8 +110,7 @@ tests/non-free/strnlen2.c:138:[value] Call to builtin memset(({{ (void *)&a }},{ Called from tests/non-free/strnlen2.c:164. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:165:[value] Call to builtin Frama_C_strnlen(({{ &a + [50..70] }},{100})) -tests/non-free/strnlen2.c:165:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:165: - possibly reading indeterminate data +tests/non-free/strnlen2.c:165:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:166:[value] assertion got status valid. [value] Recording results for large [value] Done for function large @@ -138,21 +130,19 @@ tests/non-free/strnlen2.c:138:[value] Call to builtin memset(({{ (void *)&a[50] Called from tests/non-free/strnlen2.c:176. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:177:[value] Call to builtin Frama_C_strnlen(({{ &a + [3..30] }},{100})) -tests/non-free/strnlen2.c:177:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:177: - possibly reading indeterminate data +tests/non-free/strnlen2.c:177:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:178:[value] assertion got status valid. [value] computing for function Frama_C_interval <- large_uninit <- main. Called from tests/non-free/strnlen2.c:181. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:182:[value] Call to builtin Frama_C_strnlen(({{ &a + [63..80] }},{100})) -tests/non-free/strnlen2.c:182:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:182: - possibly reading indeterminate data +tests/non-free/strnlen2.c:182:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:183:[value] assertion got status valid. [value] computing for function Frama_C_interval <- large_uninit <- main. Called from tests/non-free/strnlen2.c:185. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:186:[value] Call to builtin Frama_C_strnlen(({{ &a + [45..55] }},{100})) -tests/non-free/strnlen2.c:186:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:186: +tests/non-free/strnlen2.c:186:[value] warning: builtin Frama_C_strnlen: possible uninitialized values possibly reading indeterminate data tests/non-free/strnlen2.c:187:[value] assertion got status valid. @@ -161,14 +151,12 @@ tests/non-free/strnlen2.c:187:[value] assertion got status valid. [value] computing for function misc <- main. Called from tests/non-free/strnlen2.c:494. tests/non-free/strnlen2.c:215:[value] Call to builtin Frama_C_strnlen(({{ &unterminated_string[0] }},{13})) -tests/non-free/strnlen2.c:215:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:215: - reading indeterminate data +tests/non-free/strnlen2.c:215:[value] warning: builtin Frama_C_strnlen: reading indeterminate data tests/non-free/strnlen2.c:218:[value] Call to builtin Frama_C_strnlen(({{ "Hello World\n" ; "Bonjour Monde\n" }}, {14})) tests/non-free/strnlen2.c:219:[value] assertion got status valid. tests/non-free/strnlen2.c:222:[value] Call to builtin Frama_C_strnlen(({{ &x + {0; 3} }},{12})) -tests/non-free/strnlen2.c:222:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:222: - possibly reading indeterminate data +tests/non-free/strnlen2.c:222:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:223:[value] assertion got status valid. [value] computing for function Frama_C_interval <- misc <- main. Called from tests/non-free/strnlen2.c:224. @@ -180,8 +168,7 @@ tests/non-free/strnlen2.c:226:[value] Call to builtin Frama_C_strnlen(({{ "" ; " {13})) tests/non-free/strnlen2.c:227:[value] assertion got status valid. tests/non-free/strnlen2.c:229:[value] Call to builtin Frama_C_strnlen(({{ &loc_char_array[0] }},{5})) -tests/non-free/strnlen2.c:229:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:229: - reading indeterminate data +tests/non-free/strnlen2.c:229:[value] warning: builtin Frama_C_strnlen: reading indeterminate data tests/non-free/strnlen2.c:230:[value] Call to builtin Frama_C_strnlen(({{ "abc\000\000\000abc" }},{9})) tests/non-free/strnlen2.c:231:[value] assertion got status valid. tests/non-free/strnlen2.c:234:[value] Call to builtin Frama_C_strnlen(({{ "abc" + {0; 1} ; "ABCD" + {0; 1} }},{5})) @@ -202,16 +189,14 @@ tests/non-free/strnlen2.c:244:[value] Call to builtin Frama_C_strnlen(({{ "mno\0 "MNOP\000QRS" + {0; 1; 2; 3; 4; 5; 6; 7} }}, {10})) tests/non-free/strnlen2.c:251:[value] Call to builtin Frama_C_strnlen(({{ &maybe_init[0] }},{2})) -tests/non-free/strnlen2.c:251:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:251: - possible uninitialized values +tests/non-free/strnlen2.c:251:[value] warning: builtin Frama_C_strnlen: possible uninitialized values tests/non-free/strnlen2.c:252:[value] assertion got status valid. [value] Recording results for misc [value] Done for function misc [value] computing for function bitfields <- main. Called from tests/non-free/strnlen2.c:495. tests/non-free/strnlen2.c:117:[value] Call to builtin Frama_C_strnlen(({{ (char const *)&s }},{3})) -tests/non-free/strnlen2.c:117:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:117: - reading indeterminate data +tests/non-free/strnlen2.c:117:[value] warning: builtin Frama_C_strnlen: reading indeterminate data [value] Recording results for bitfields [value] Done for function bitfields [value] computing for function bitfields2 <- main. @@ -224,8 +209,7 @@ tests/non-free/strnlen2.c:133:[value] assertion got status valid. Called from tests/non-free/strnlen2.c:497. tests/non-free/strnlen2.c:196:[value] warning: locals {x} escaping the scope of a block of escaping through s tests/non-free/strnlen2.c:199:[value] Call to builtin Frama_C_strnlen(({{ &s[0] }},{4})) -tests/non-free/strnlen2.c:199:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:199: - possible escaping addresses +tests/non-free/strnlen2.c:199:[value] warning: builtin Frama_C_strnlen: possible escaping addresses tests/non-free/strnlen2.c:200:[value] assertion got status valid. tests/non-free/strnlen2.c:202:[value] Call to builtin Frama_C_strnlen(({{ &s[0] }},{4})) tests/non-free/strnlen2.c:203:[value] assertion got status valid. @@ -237,35 +221,32 @@ tests/non-free/strnlen2.c:261:[value] warning: out of bounds write. assert \vali tests/non-free/strnlen2.c:263:[value] warning: out of bounds write. assert \valid(p); tests/non-free/strnlen2.c:265:[value] warning: out of bounds write. assert \valid(p); tests/non-free/strnlen2.c:272:[value] Call to builtin Frama_C_strnlen(({{ (char const *)&u }},{800})) -tests/non-free/strnlen2.c:272:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:272: - possible uninitialized values +tests/non-free/strnlen2.c:272:[value] warning: builtin Frama_C_strnlen: possible uninitialized values tests/non-free/strnlen2.c:273:[value] Call to builtin Frama_C_strnlen(({{ (char const *)&r }},{804})) tests/non-free/strnlen2.c:273:[kernel] more than 200(201) locations to update in array. Approximating. -tests/non-free/strnlen2.c:273:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:273: - possible uninitialized values +tests/non-free/strnlen2.c:273:[value] warning: builtin Frama_C_strnlen: possible uninitialized values tests/non-free/strnlen2.c:274:[value] Call to builtin Frama_C_strnlen(({{ (char const *)&t }},{4000000})) tests/non-free/strnlen2.c:274:[kernel] more than 200(1000000) locations to update in array. Approximating. -tests/non-free/strnlen2.c:274:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:274: - possible uninitialized values +tests/non-free/strnlen2.c:274:[value] warning: builtin Frama_C_strnlen: possible uninitialized values tests/non-free/strnlen2.c:275:[value] assertion got status valid. tests/non-free/strnlen2.c:276:[value] assertion got status valid. tests/non-free/strnlen2.c:277:[value] assertion got status valid. [value] Called Frama_C_show_each({1}, {1}, {1}) tests/non-free/strnlen2.c:282:[value] Call to builtin Frama_C_strnlen(({{ &u + [-8589934592..8589934588],0%4 }}, {801})) -tests/non-free/strnlen2.c:282:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:282: +tests/non-free/strnlen2.c:282:[value] warning: builtin Frama_C_strnlen: possible uninitialized values possibly reading indeterminate data tests/non-free/strnlen2.c:283:[value] Call to builtin Frama_C_strnlen(({{ &r + [-8589934592..8589934588],0%4 }}, {805})) tests/non-free/strnlen2.c:283:[kernel] more than 200(201) locations to update in array. Approximating. -tests/non-free/strnlen2.c:283:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:283: +tests/non-free/strnlen2.c:283:[value] warning: builtin Frama_C_strnlen: possible uninitialized values possibly reading indeterminate data tests/non-free/strnlen2.c:284:[value] Call to builtin Frama_C_strnlen(({{ &t + [-8589934592..8589934588],0%4 }}, {4000001})) tests/non-free/strnlen2.c:284:[kernel] more than 200(1000000) locations to update in array. Approximating. -tests/non-free/strnlen2.c:284:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:284: +tests/non-free/strnlen2.c:284:[value] warning: builtin Frama_C_strnlen: possible uninitialized values possibly reading indeterminate data tests/non-free/strnlen2.c:285:[value] assertion got status valid. @@ -301,18 +282,15 @@ tests/non-free/strnlen2.c:305:[value] assertion got status valid. [value] Called Frama_C_show_each([0..800], [0..804], [0..4000000]) tests/non-free/strnlen2.c:308:[value] Call to builtin Frama_C_strnlen(({{ &u + [-8589934592..8589934588],0%4 }}, {801})) -tests/non-free/strnlen2.c:308:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:308: - possibly reading indeterminate data +tests/non-free/strnlen2.c:308:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:309:[value] Call to builtin Frama_C_strnlen(({{ &r + [-8589934592..8589934588],0%4 }}, {805})) tests/non-free/strnlen2.c:309:[kernel] more than 200(201) locations to update in array. Approximating. -tests/non-free/strnlen2.c:309:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:309: - possibly reading indeterminate data +tests/non-free/strnlen2.c:309:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:310:[value] Call to builtin Frama_C_strnlen(({{ &t + [-8589934592..8589934588],0%4 }}, {4000001})) tests/non-free/strnlen2.c:310:[kernel] more than 200(1000000) locations to update in array. Approximating. -tests/non-free/strnlen2.c:310:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:310: - possibly reading indeterminate data +tests/non-free/strnlen2.c:310:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:311:[value] assertion got status valid. tests/non-free/strnlen2.c:312:[value] assertion got status valid. tests/non-free/strnlen2.c:313:[value] assertion got status valid. @@ -330,8 +308,7 @@ tests/non-free/strnlen2.c:331:[value] assertion got status valid. tests/non-free/strnlen2.c:333:[value] Call to builtin Frama_C_strnlen(({{ &s{[7], [11]} }},{4})) tests/non-free/strnlen2.c:334:[value] assertion got status valid. tests/non-free/strnlen2.c:336:[value] Call to builtin Frama_C_strnlen(({{ &s{[7], [18]} }},{4})) -tests/non-free/strnlen2.c:336:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:336: - possibly reading indeterminate data +tests/non-free/strnlen2.c:336:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:337:[value] assertion got status valid. [value] Recording results for no_zero_but_ok [value] Done for function no_zero_but_ok @@ -397,8 +374,7 @@ tests/non-free/strnlen2.c:406:[value] assertion got status valid. Called from tests/non-free/strnlen2.c:408. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:409:[value] Call to builtin Frama_C_strnlen(({{ &a + [50..70] }},[0..100])) -tests/non-free/strnlen2.c:409:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:409: - possibly reading indeterminate data +tests/non-free/strnlen2.c:409:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:410:[value] assertion got status valid. [value] computing for function Frama_C_interval <- large_n <- main. Called from tests/non-free/strnlen2.c:412. @@ -454,8 +430,7 @@ tests/non-free/strnlen2.c:138:[value] Call to builtin memset(({{ (void *)&a[16] Called from tests/non-free/strnlen2.c:442. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:443:[value] Call to builtin Frama_C_strnlen(({{ &a + [0..9] }},[0..9])) -tests/non-free/strnlen2.c:443:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:443: - possibly reading indeterminate data +tests/non-free/strnlen2.c:443:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:444:[value] assertion got status valid. [value] computing for function Frama_C_interval <- intervals <- main. Called from tests/non-free/strnlen2.c:446. @@ -465,8 +440,7 @@ tests/non-free/strnlen2.c:444:[value] assertion got status valid. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:448:[value] Call to builtin Frama_C_strnlen(({{ &a{[3], [4], [5], [6], [7], [8], [9]} }}, [2..10])) -tests/non-free/strnlen2.c:448:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:448: - possibly reading indeterminate data +tests/non-free/strnlen2.c:448:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:449:[value] assertion got status valid. [value] computing for function Frama_C_interval <- intervals <- main. Called from tests/non-free/strnlen2.c:451. @@ -476,8 +450,7 @@ tests/non-free/strnlen2.c:449:[value] assertion got status valid. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:453:[value] Call to builtin Frama_C_strnlen(({{ &a{[3], [4], [5], [6], [7], [8], [9]} }}, [0..11])) -tests/non-free/strnlen2.c:453:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:453: - possibly reading indeterminate data +tests/non-free/strnlen2.c:453:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:454:[value] assertion got status valid. [value] computing for function Frama_C_interval <- intervals <- main. Called from tests/non-free/strnlen2.c:456. @@ -487,8 +460,7 @@ tests/non-free/strnlen2.c:454:[value] assertion got status valid. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:458:[value] Call to builtin Frama_C_strnlen(({{ &a{[3], [4], [5], [6], [7], [8], [9], [10]} }},[0..9])) -tests/non-free/strnlen2.c:458:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:458: - possibly reading indeterminate data +tests/non-free/strnlen2.c:458:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:459:[value] assertion got status valid. [value] computing for function Frama_C_interval <- intervals <- main. Called from tests/non-free/strnlen2.c:461. @@ -498,8 +470,7 @@ tests/non-free/strnlen2.c:459:[value] assertion got status valid. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:463:[value] Call to builtin Frama_C_strnlen(({{ &a{[3], [4], [5], [6], [7], [8], [9], [10]} }},[0..10])) -tests/non-free/strnlen2.c:463:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:463: - possibly reading indeterminate data +tests/non-free/strnlen2.c:463:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:464:[value] assertion got status valid. [value] computing for function Frama_C_interval <- intervals <- main. Called from tests/non-free/strnlen2.c:466. @@ -509,8 +480,7 @@ tests/non-free/strnlen2.c:464:[value] assertion got status valid. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:468:[value] Call to builtin Frama_C_strnlen(({{ &a{[3], [4], [5], [6], [7], [8], [9], [10]} }},[0..11])) -tests/non-free/strnlen2.c:468:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:468: - possibly reading indeterminate data +tests/non-free/strnlen2.c:468:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data tests/non-free/strnlen2.c:469:[value] assertion got status valid. [value] computing for function Frama_C_interval <- intervals <- main. Called from tests/non-free/strnlen2.c:471. @@ -519,7 +489,7 @@ tests/non-free/strnlen2.c:469:[value] assertion got status valid. Called from tests/non-free/strnlen2.c:472. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:473:[value] Call to builtin Frama_C_strnlen(({{ &a + [3..11] }},[0..9])) -tests/non-free/strnlen2.c:473:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:473: +tests/non-free/strnlen2.c:473:[value] warning: builtin Frama_C_strnlen: possible uninitialized values possibly reading indeterminate data tests/non-free/strnlen2.c:474:[value] assertion got status valid. @@ -530,7 +500,7 @@ tests/non-free/strnlen2.c:474:[value] assertion got status valid. Called from tests/non-free/strnlen2.c:477. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:478:[value] Call to builtin Frama_C_strnlen(({{ &a + [3..11] }},[0..10])) -tests/non-free/strnlen2.c:478:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:478: +tests/non-free/strnlen2.c:478:[value] warning: builtin Frama_C_strnlen: possible uninitialized values possibly reading indeterminate data tests/non-free/strnlen2.c:479:[value] assertion got status valid. @@ -541,7 +511,7 @@ tests/non-free/strnlen2.c:479:[value] assertion got status valid. Called from tests/non-free/strnlen2.c:482. [value] Done for function Frama_C_interval tests/non-free/strnlen2.c:483:[value] Call to builtin Frama_C_strnlen(({{ &a + [3..11] }},[0..11])) -tests/non-free/strnlen2.c:483:[value] warning: built-in Frama_C_strnlen: tests/non-free/strnlen2.c:483: +tests/non-free/strnlen2.c:483:[value] warning: builtin Frama_C_strnlen: possible uninitialized values possibly reading indeterminate data tests/non-free/strnlen2.c:484:[value] assertion got status valid. diff --git a/tests/non-free/oracle_symblocs/Longinit_sequencer.err.oracle b/tests/non-free/oracle_symblocs/Longinit_sequencer.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/non-free/oracle_symblocs/Longinit_sequencer.res.oracle b/tests/non-free/oracle_symblocs/Longinit_sequencer.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..0dbb55ad945a017f0a7894a0174c495db147c44c --- /dev/null +++ b/tests/non-free/oracle_symblocs/Longinit_sequencer.res.oracle @@ -0,0 +1,782 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/non-free/Longinit_sequencer.i (no preprocessing) +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/non-free/long_init.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +tests/non-free/long_init.c:34:[value] Assigning imprecise value to garbled_mix. + The imprecision originates from Arithmetic {tests/non-free/long_init.c:34} +[value] Initial state computed +[value:initial-state] Values of globals at initialization + __fc_random_counter ∈ {0} + __fc_rand_max ∈ {32767} + __fc_heap_status ∈ [--..--] + nondet ∈ [--..--] + a1[0..9] ∈ {0} + stuff ∈ {0} + garbled_mix ∈ + {{ garbled mix of &{"abc"} + (origin: Arithmetic {tests/non-free/long_init.c:34}) }} + s ∈ {{ "abc" }} + pr ∈ {0} + pr2 ∈ {0} + pr_escaping ∈ {0} + ppr ∈ {0} + alloc1 ∈ {0} + alloc2 ∈ {0} + alloc3 ∈ {0} + fp ∈ {{ &fun }} + inited ∈ {0} +[value] computing for function init_outer <- main. + Called from tests/non-free/long_init.c:88. +[value] computing for function init_inner <- init_outer <- main. + Called from tests/non-free/long_init.c:83. +tests/non-free/long_init.c:57:[value] entering loop for the first time +tests/non-free/long_init.c:60:[value] entering loop for the first time +tests/non-free/long_init.c:63:[value] entering loop for the first time +[value] computing for function analyze <- init_inner <- init_outer <- main. + Called from tests/non-free/long_init.c:67. +[value] computing for function subanalyze <- analyze <- init_inner <- init_outer <- + main. + Called from tests/non-free/long_init.c:29. +[value] Recording results for subanalyze +[value] Done for function subanalyze +[value] computing for function subanalyze <- analyze <- init_inner <- init_outer <- + main. + Called from tests/non-free/long_init.c:29. +[value] Recording results for subanalyze +[value] Done for function subanalyze +[value] computing for function subanalyze <- analyze <- init_inner <- init_outer <- + main. + Called from tests/non-free/long_init.c:29. +[value] Recording results for subanalyze +[value] Done for function subanalyze +[value] computing for function subanalyze <- analyze <- init_inner <- init_outer <- + main. + Called from tests/non-free/long_init.c:29. +[value] Recording results for subanalyze +[value] Done for function subanalyze +[value] computing for function subanalyze <- analyze <- init_inner <- init_outer <- + main. + Called from tests/non-free/long_init.c:29. +[value] Recording results for subanalyze +[value] Done for function subanalyze +tests/non-free/long_init.c:27:[value] entering loop for the first time +[value] Recording results for analyze +[value] Done for function analyze +[value] computing for function analyze <- init_inner <- init_outer <- main. + Called from tests/non-free/long_init.c:68. +[value] computing for function subanalyze <- analyze <- init_inner <- init_outer <- + main. + Called from tests/non-free/long_init.c:29. +[value] Recording results for subanalyze +[value] Done for function subanalyze +[value] computing for function subanalyze <- analyze <- init_inner <- init_outer <- + main. + Called from tests/non-free/long_init.c:29. +[value] Recording results for subanalyze +[value] Done for function subanalyze +[value] computing for function subanalyze <- analyze <- init_inner <- init_outer <- + main. + Called from tests/non-free/long_init.c:29. +[value] Recording results for subanalyze +[value] Done for function subanalyze +[value] computing for function subanalyze <- analyze <- init_inner <- init_outer <- + main. + Called from tests/non-free/long_init.c:29. +[value] Recording results for subanalyze +[value] Done for function subanalyze +[value] computing for function subanalyze <- analyze <- init_inner <- init_outer <- + main. + Called from tests/non-free/long_init.c:29. +[value] Recording results for subanalyze +[value] Done for function subanalyze +[value] Recording results for analyze +[value] Done for function analyze +tests/non-free/long_init.c:72:[value] allocating variable __malloc_init_inner_l72 +tests/non-free/long_init.c:74:[value] allocating variable __malloc_init_inner_l74 +tests/non-free/long_init.c:77:[value] warning: locals {r; r2} escaping the scope of init_inner through pr +tests/non-free/long_init.c:77:[value] warning: locals {r2} escaping the scope of init_inner through pr2 +tests/non-free/long_init.c:77:[value] warning: locals {r2} escaping the scope of init_inner through pr_escaping +[value] Recording results for init_inner +[value] Done for function init_inner +[value] Recording results for init_outer +[value] Done for function init_outer +[value] DUMPING STATE of file tests/non-free/long_init.c line 90 + __fc_random_counter ∈ {0} + __fc_rand_max ∈ {32767} + __fc_heap_status ∈ [--..--] + nondet ∈ [--..--] + a1[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {2} + [3] ∈ {3} + [4] ∈ {4} + [5] ∈ {5} + [6] ∈ {6} + [7] ∈ {7} + [8] ∈ {8} + [9] ∈ {9} + stuff.t[0..4] ∈ {3} + .t[5..9] ∈ {4} + .t[10..49] ∈ [0..12] + .d[0] ∈ {0} + .d[1] ∈ {3.125} + .d[2] ∈ {6.25} + .d[3] ∈ {9.375} + .d[4] ∈ {12.5} + .d[5] ∈ {15.625} + .d[6] ∈ {18.75} + .d[7] ∈ {21.875} + .d[8] ∈ {25.} + .d[9] ∈ {28.125} + garbled_mix ∈ + {{ garbled mix of &{"abc"} + (origin: Arithmetic {tests/non-free/long_init.c:34}) }} + s ∈ {{ "abc" }} + pr ∈ ESCAPINGADDR + pr2 ∈ ESCAPINGADDR + pr_escaping ∈ ESCAPINGADDR + ppr ∈ {0} + alloc1 ∈ {{ &__malloc_init_inner_l72 }} + alloc2 ∈ ESCAPINGADDR + alloc3 ∈ {0} + fp ∈ {{ &fun }} + inited ∈ {1} + sa ∈ {{ "abc" }} + r ∈ UNINITIALIZED + r2 ∈ UNINITIALIZED + dm ∈ UNINITIALIZED + res_from_fp ∈ UNINITIALIZED + res ∈ UNINITIALIZED + local ∈ UNINITIALIZED + __retres ∈ UNINITIALIZED + __malloc_init_inner_l72 ∈ {{ (int)&__malloc_init_inner_l72 }} + =END OF DUMP== +[value] computing for function analyze <- main. + Called from tests/non-free/long_init.c:91. +[value] computing for function subanalyze <- analyze <- main. + Called from tests/non-free/long_init.c:29. +[value] Recording results for subanalyze +[value] Done for function subanalyze +[value] computing for function subanalyze <- analyze <- main. + Called from tests/non-free/long_init.c:29. +[value] Recording results for subanalyze +[value] Done for function subanalyze +[value] computing for function subanalyze <- analyze <- main. + Called from tests/non-free/long_init.c:29. +[value] Recording results for subanalyze +[value] Done for function subanalyze +[value] computing for function subanalyze <- analyze <- main. + Called from tests/non-free/long_init.c:29. +[value] Recording results for subanalyze +[value] Done for function subanalyze +[value] computing for function subanalyze <- analyze <- main. + Called from tests/non-free/long_init.c:29. +[value] Recording results for subanalyze +[value] Done for function subanalyze +[value] Recording results for analyze +[value] Done for function analyze +[value] computing for function analyze <- main. + Called from tests/non-free/long_init.c:92. +[value] computing for function subanalyze <- analyze <- main. + Called from tests/non-free/long_init.c:29. +[value] Recording results for subanalyze +[value] Done for function subanalyze +[value] computing for function subanalyze <- analyze <- main. + Called from tests/non-free/long_init.c:29. +[value] Recording results for subanalyze +[value] Done for function subanalyze +[value] computing for function subanalyze <- analyze <- main. + Called from tests/non-free/long_init.c:29. +[value] Recording results for subanalyze +[value] Done for function subanalyze +[value] computing for function subanalyze <- analyze <- main. + Called from tests/non-free/long_init.c:29. +[value] Recording results for subanalyze +[value] Done for function subanalyze +[value] computing for function subanalyze <- analyze <- main. + Called from tests/non-free/long_init.c:29. +[value] Recording results for subanalyze +[value] Done for function subanalyze +[value] Recording results for analyze +[value] Done for function analyze +[value] computing for function dmin <- main. + Called from tests/non-free/long_init.c:96. +[value] Recording results for dmin +[value] Done for function dmin +[value] computing for function fun <- main. + Called from tests/non-free/long_init.c:97. +[value] Recording results for fun +[value] Done for function fun +tests/non-free/long_init.c:102:[value] allocating variable __malloc_main_l102 +[value] Recording results for main +[value] done for function main +[value] Saving globals state after call to function: init_inner + +Values at end of function dmin: + __retres ∈ [93.9166666667 .. 110.791666667] + + +Values at end of function fun: + __retres ∈ {32} + + +Values at end of function subanalyze: + + +Values at end of function analyze: + i ∈ {5} + res ∈ [93.9166666667 .. 110.791666667] + +Values at end of function init_inner: + __fc_heap_status ∈ [--..--] + a1[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {2} + [3] ∈ {3} + [4] ∈ {4} + [5] ∈ {5} + [6] ∈ {6} + [7] ∈ {7} + [8] ∈ {8} + [9] ∈ {9} + stuff.t[0..4] ∈ {3} + .t[5..9] ∈ {4} + .t[10..49] ∈ [0..12] + .d[0] ∈ {0} + .d[1] ∈ {3.125} + .d[2] ∈ {6.25} + .d[3] ∈ {9.375} + .d[4] ∈ {12.5} + .d[5] ∈ {15.625} + .d[6] ∈ {18.75} + .d[7] ∈ {21.875} + .d[8] ∈ {25.} + .d[9] ∈ {28.125} + pr ∈ {{ &r ; &r2 }} + pr2 ∈ {{ &r2 }} + pr_escaping ∈ {{ &r2 }} + alloc1 ∈ {{ &__malloc_init_inner_l72 }} + alloc2 ∈ ESCAPINGADDR + i ∈ {10} + r ∈ {93.9166666667} + r2 ∈ {110.791666667} + __malloc_init_inner_l72 ∈ {{ (int)&__malloc_init_inner_l72 }} + +Values at end of function init_outer: + __fc_heap_status ∈ [--..--] + a1[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {2} + [3] ∈ {3} + [4] ∈ {4} + [5] ∈ {5} + [6] ∈ {6} + [7] ∈ {7} + [8] ∈ {8} + [9] ∈ {9} + stuff.t[0..4] ∈ {3} + .t[5..9] ∈ {4} + .t[10..49] ∈ [0..12] + .d[0] ∈ {0} + .d[1] ∈ {3.125} + .d[2] ∈ {6.25} + .d[3] ∈ {9.375} + .d[4] ∈ {12.5} + .d[5] ∈ {15.625} + .d[6] ∈ {18.75} + .d[7] ∈ {21.875} + .d[8] ∈ {25.} + .d[9] ∈ {28.125} + pr ∈ ESCAPINGADDR + pr2 ∈ ESCAPINGADDR + pr_escaping ∈ ESCAPINGADDR + alloc1 ∈ {{ &__malloc_init_inner_l72 }} + alloc2 ∈ ESCAPINGADDR + inited ∈ {1} + __malloc_init_inner_l72 ∈ {{ (int)&__malloc_init_inner_l72 }} + +Values at end of function main: + __fc_heap_status ∈ [--..--] + a1[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {2} + [3] ∈ {3} + [4] ∈ {4} + [5] ∈ {5} + [6] ∈ {6} + [7] ∈ {7} + [8] ∈ {8} + [9] ∈ {9} + stuff.t[0..4] ∈ {3} + .t[5..9] ∈ {4} + .t[10..49] ∈ [0..12] + .d[0] ∈ {0} + .d[1] ∈ {3.125} + .d[2] ∈ {6.25} + .d[3] ∈ {9.375} + .d[4] ∈ {12.5} + .d[5] ∈ {15.625} + .d[6] ∈ {18.75} + .d[7] ∈ {21.875} + .d[8] ∈ {25.} + .d[9] ∈ {28.125} + pr ∈ {{ &r ; &r2 }} + pr2 ∈ {{ &r ; &r2 }} + pr_escaping ∈ ESCAPINGADDR + ppr ∈ {{ &pr ; &pr2 }} + alloc1 ∈ ESCAPINGADDR + alloc2 ∈ ESCAPINGADDR + alloc3 ∈ {{ &__malloc_main_l102 }} + inited ∈ {1} + sa ∈ {{ "abc" }} + r ∈ {93.9166666667} + r2 ∈ {110.791666667} + dm ∈ [93.9166666667 .. 110.791666667] + res_from_fp ∈ {32} + res ∈ {93} + local ∈ {1} + __retres ∈ {0}[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/non-free/long_init2.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +tests/non-free/long_init2.c:34:[value] Assigning imprecise value to garbled_mix. + The imprecision originates from Arithmetic {tests/non-free/long_init2.c:34} +[value] Initial state computed +[value:initial-state] Values of globals at initialization + __fc_random_counter ∈ {0} + __fc_rand_max ∈ {32767} + __fc_heap_status ∈ [--..--] + nondet ∈ [--..--] + a1[0..9] ∈ {0} + stuff ∈ {0} + garbled_mix ∈ + {{ garbled mix of &{"abc"} + (origin: Arithmetic {tests/non-free/long_init2.c:34}) }} + s ∈ {{ "abc" }} + another_global ∈ {42} + pr ∈ {0} + pr2 ∈ {0} + pr_escaping ∈ {0} + ppr ∈ {0} + alloc1 ∈ {0} + alloc2 ∈ {0} + alloc3 ∈ {0} + fp ∈ {{ &fun }} + inited ∈ {0} +[value] computing for function init_outer <- main. + Called from tests/non-free/long_init2.c:88. +[value] Call to builtin Frama_C_load_state(({13},{{ "tea" }})) +[value] Skipping call to init_inner, loading globals state from file: + tests/non-free/result_symblocs/Longinit_sequencer.sav +[value] warning: importing garbled mix, locations may have changed +[value] warning: variable `r (id 602)' is not global, possibly an escaping value; ignoring +[value] warning: variable `r2 (id 605)' is not global, possibly an escaping value; ignoring +[value] warning: variable `r2 (id 605)' is not global, possibly an escaping value; ignoring +[value] warning: found new global variable `another_global' +[value] Recording results for init_outer +[value] Done for function init_outer +[value] DUMPING STATE of file tests/non-free/long_init2.c line 90 + __fc_random_counter ∈ {0} + __fc_rand_max ∈ {32767} + __fc_heap_status ∈ [--..--] + nondet ∈ [--..--] + a1[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {2} + [3] ∈ {3} + [4] ∈ {4} + [5] ∈ {5} + [6] ∈ {6} + [7] ∈ {7} + [8] ∈ {8} + [9] ∈ {9} + stuff.t[0..4] ∈ {3} + .t[5..9] ∈ {4} + .t[10..49] ∈ [0..12] + .d[0] ∈ {0} + .d[1] ∈ {3.125} + .d[2] ∈ {6.25} + .d[3] ∈ {9.375} + .d[4] ∈ {12.5} + .d[5] ∈ {15.625} + .d[6] ∈ {18.75} + .d[7] ∈ {21.875} + .d[8] ∈ {25.} + .d[9] ∈ {28.125} + garbled_mix ∈ + {{ garbled mix of &{"abc"} + (origin: Arithmetic {tests/non-free/long_init.c:34}) }} + s ∈ {{ "abc" }} + another_global ∈ {42} + pr ∈ ESCAPINGADDR + pr2 ∈ ESCAPINGADDR + pr_escaping ∈ ESCAPINGADDR + ppr ∈ {0} + alloc1 ∈ {{ &__malloc_init_inner_l72 }} + alloc2 ∈ ESCAPINGADDR + alloc3 ∈ {0} + fp ∈ {{ &fun }} + inited ∈ {1} + sa ∈ {{ "abc" }} + r ∈ UNINITIALIZED + r2 ∈ UNINITIALIZED + dm ∈ UNINITIALIZED + res_from_fp ∈ UNINITIALIZED + res ∈ UNINITIALIZED + local ∈ UNINITIALIZED + __retres ∈ UNINITIALIZED + __malloc_init_inner_l72 ∈ {{ (int)&__malloc_init_inner_l72 }} + =END OF DUMP== +[value] computing for function analyze <- main. + Called from tests/non-free/long_init2.c:91. +[value] computing for function subanalyze <- analyze <- main. + Called from tests/non-free/long_init2.c:29. +[value] Recording results for subanalyze +[value] Done for function subanalyze +[value] computing for function subanalyze <- analyze <- main. + Called from tests/non-free/long_init2.c:29. +[value] Recording results for subanalyze +[value] Done for function subanalyze +[value] computing for function subanalyze <- analyze <- main. + Called from tests/non-free/long_init2.c:29. +[value] Recording results for subanalyze +[value] Done for function subanalyze +[value] computing for function subanalyze <- analyze <- main. + Called from tests/non-free/long_init2.c:29. +[value] Recording results for subanalyze +[value] Done for function subanalyze +[value] computing for function subanalyze <- analyze <- main. + Called from tests/non-free/long_init2.c:29. +[value] Recording results for subanalyze +[value] Done for function subanalyze +tests/non-free/long_init2.c:27:[value] entering loop for the first time +[value] Recording results for analyze +[value] Done for function analyze +[value] computing for function analyze <- main. + Called from tests/non-free/long_init2.c:92. +[value] computing for function subanalyze <- analyze <- main. + Called from tests/non-free/long_init2.c:29. +[value] Recording results for subanalyze +[value] Done for function subanalyze +[value] computing for function subanalyze <- analyze <- main. + Called from tests/non-free/long_init2.c:29. +[value] Recording results for subanalyze +[value] Done for function subanalyze +[value] computing for function subanalyze <- analyze <- main. + Called from tests/non-free/long_init2.c:29. +[value] Recording results for subanalyze +[value] Done for function subanalyze +[value] computing for function subanalyze <- analyze <- main. + Called from tests/non-free/long_init2.c:29. +[value] Recording results for subanalyze +[value] Done for function subanalyze +[value] computing for function subanalyze <- analyze <- main. + Called from tests/non-free/long_init2.c:29. +[value] Recording results for subanalyze +[value] Done for function subanalyze +[value] Recording results for analyze +[value] Done for function analyze +[value] computing for function dmin <- main. + Called from tests/non-free/long_init2.c:96. +[value] Recording results for dmin +[value] Done for function dmin +[value] computing for function fun <- main. + Called from tests/non-free/long_init2.c:97. +[value] Recording results for fun +[value] Done for function fun +tests/non-free/long_init2.c:102:[value] allocating variable __malloc_main_l102 +[value] Recording results for main +[value] done for function main +[value] Saving globals state after call to function: init_outer + + + +Values at end of function dmin: + __retres ∈ [93.9166666667 .. 110.791666667] + + +Values at end of function fun: + __retres ∈ {32} + + +Values at end of function init_outer: + a1[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {2} + [3] ∈ {3} + [4] ∈ {4} + [5] ∈ {5} + [6] ∈ {6} + [7] ∈ {7} + [8] ∈ {8} + [9] ∈ {9} + stuff.t[0..4] ∈ {3} + .t[5..9] ∈ {4} + .t[10..49] ∈ [0..12] + .d[0] ∈ {0} + .d[1] ∈ {3.125} + .d[2] ∈ {6.25} + .d[3] ∈ {9.375} + .d[4] ∈ {12.5} + .d[5] ∈ {15.625} + .d[6] ∈ {18.75} + .d[7] ∈ {21.875} + .d[8] ∈ {25.} + .d[9] ∈ {28.125} + inited ∈ {1} + + +Values at end of function subanalyze: + + +Values at end of function analyze: + i ∈ {5} + res ∈ [93.9166666667 .. 110.791666667] + +Values at end of function main: + __fc_heap_status ∈ [--..--] + a1[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {2} + [3] ∈ {3} + [4] ∈ {4} + [5] ∈ {5} + [6] ∈ {6} + [7] ∈ {7} + [8] ∈ {8} + [9] ∈ {9} + stuff.t[0..4] ∈ {3} + .t[5..9] ∈ {4} + .t[10..49] ∈ [0..12] + .d[0] ∈ {0} + .d[1] ∈ {3.125} + .d[2] ∈ {6.25} + .d[3] ∈ {9.375} + .d[4] ∈ {12.5} + .d[5] ∈ {15.625} + .d[6] ∈ {18.75} + .d[7] ∈ {21.875} + .d[8] ∈ {25.} + .d[9] ∈ {28.125} + pr ∈ {{ &r ; &r2 }} + pr2 ∈ {{ &r ; &r2 }} + ppr ∈ {{ &pr ; &pr2 }} + alloc3 ∈ {{ &__malloc_main_l102 }} + inited ∈ {1} + sa ∈ {{ "abc" }} + r ∈ {93.9166666667} + r2 ∈ {110.791666667} + dm ∈ [93.9166666667 .. 110.791666667] + res_from_fp ∈ {32} + res ∈ {93} + local ∈ {42} + __retres ∈ {0}[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/non-free/long_init3.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +tests/non-free/long_init3.c:34:[value] Assigning imprecise value to garbled_mix. + The imprecision originates from Arithmetic {tests/non-free/long_init3.c:34} +[value] Initial state computed +[value:initial-state] Values of globals at initialization + __fc_random_counter ∈ {0} + __fc_rand_max ∈ {32767} + __fc_heap_status ∈ [--..--] + nondet ∈ [--..--] + a1[0..9] ∈ {0} + stuff ∈ {0} + garbled_mix ∈ + {{ garbled mix of &{"abc"} + (origin: Arithmetic {tests/non-free/long_init3.c:34}) }} + s ∈ {{ "abc" }} + another_global ∈ {42} + yet_another_global ∈ {43} + pr ∈ {0} + pr2 ∈ {0} + pr_escaping ∈ {0} + ppr ∈ {0} + alloc1 ∈ {0} + alloc2 ∈ {0} + alloc3 ∈ {0} + fp ∈ {{ &fun }} + inited ∈ {0} +[value] Call to builtin Frama_C_load_state(()) +[value] Skipping call to init_outer, loading globals state from file: + tests/non-free/result_symblocs/Longinit_sequencer.sav +[value] warning: importing garbled mix, locations may have changed +[value] warning: found new global variable `yet_another_global' +[value] DUMPING STATE of file tests/non-free/long_init3.c line 90 + __fc_random_counter ∈ {0} + __fc_rand_max ∈ {32767} + __fc_heap_status ∈ [--..--] + nondet ∈ [--..--] + a1[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {2} + [3] ∈ {3} + [4] ∈ {4} + [5] ∈ {5} + [6] ∈ {6} + [7] ∈ {7} + [8] ∈ {8} + [9] ∈ {9} + stuff.t[0..4] ∈ {3} + .t[5..9] ∈ {4} + .t[10..49] ∈ [0..12] + .d[0] ∈ {0} + .d[1] ∈ {3.125} + .d[2] ∈ {6.25} + .d[3] ∈ {9.375} + .d[4] ∈ {12.5} + .d[5] ∈ {15.625} + .d[6] ∈ {18.75} + .d[7] ∈ {21.875} + .d[8] ∈ {25.} + .d[9] ∈ {28.125} + garbled_mix ∈ + {{ garbled mix of &{"abc"} + (origin: Arithmetic {tests/non-free/long_init.c:34}) }} + s ∈ {{ "abc" }} + another_global ∈ {42} + yet_another_global ∈ {43} + pr ∈ ESCAPINGADDR + pr2 ∈ ESCAPINGADDR + pr_escaping ∈ ESCAPINGADDR + ppr ∈ {0} + alloc1 ∈ {{ &__malloc_init_inner_l72 }} + alloc2 ∈ ESCAPINGADDR + alloc3 ∈ {0} + fp ∈ {{ &fun }} + inited ∈ {1} + sa ∈ {{ "abc" }} + r ∈ UNINITIALIZED + r2 ∈ UNINITIALIZED + dm ∈ UNINITIALIZED + res_from_fp ∈ UNINITIALIZED + res ∈ UNINITIALIZED + local ∈ UNINITIALIZED + local2 ∈ UNINITIALIZED + __retres ∈ UNINITIALIZED + __malloc_init_inner_l72 ∈ {{ (int)&__malloc_init_inner_l72 }} + =END OF DUMP== +[value] computing for function analyze <- main. + Called from tests/non-free/long_init3.c:91. +[value] computing for function subanalyze <- analyze <- main. + Called from tests/non-free/long_init3.c:29. +[value] Recording results for subanalyze +[value] Done for function subanalyze +[value] computing for function subanalyze <- analyze <- main. + Called from tests/non-free/long_init3.c:29. +[value] Recording results for subanalyze +[value] Done for function subanalyze +[value] computing for function subanalyze <- analyze <- main. + Called from tests/non-free/long_init3.c:29. +[value] Recording results for subanalyze +[value] Done for function subanalyze +[value] computing for function subanalyze <- analyze <- main. + Called from tests/non-free/long_init3.c:29. +[value] Recording results for subanalyze +[value] Done for function subanalyze +[value] computing for function subanalyze <- analyze <- main. + Called from tests/non-free/long_init3.c:29. +[value] Recording results for subanalyze +[value] Done for function subanalyze +tests/non-free/long_init3.c:27:[value] entering loop for the first time +[value] Recording results for analyze +[value] Done for function analyze +[value] computing for function analyze <- main. + Called from tests/non-free/long_init3.c:92. +[value] computing for function subanalyze <- analyze <- main. + Called from tests/non-free/long_init3.c:29. +[value] Recording results for subanalyze +[value] Done for function subanalyze +[value] computing for function subanalyze <- analyze <- main. + Called from tests/non-free/long_init3.c:29. +[value] Recording results for subanalyze +[value] Done for function subanalyze +[value] computing for function subanalyze <- analyze <- main. + Called from tests/non-free/long_init3.c:29. +[value] Recording results for subanalyze +[value] Done for function subanalyze +[value] computing for function subanalyze <- analyze <- main. + Called from tests/non-free/long_init3.c:29. +[value] Recording results for subanalyze +[value] Done for function subanalyze +[value] computing for function subanalyze <- analyze <- main. + Called from tests/non-free/long_init3.c:29. +[value] Recording results for subanalyze +[value] Done for function subanalyze +[value] Recording results for analyze +[value] Done for function analyze +[value] computing for function dmin <- main. + Called from tests/non-free/long_init3.c:96. +[value] Recording results for dmin +[value] Done for function dmin +[value] computing for function fun <- main. + Called from tests/non-free/long_init3.c:97. +[value] Recording results for fun +[value] Done for function fun +tests/non-free/long_init3.c:102:[value] allocating variable __malloc_main_l102 +[value] Recording results for main +[value] done for function main + + + +Values at end of function dmin: + __retres ∈ [93.9166666667 .. 110.791666667] + + +Values at end of function fun: + __retres ∈ {32} + + + + +Values at end of function subanalyze: + + +Values at end of function analyze: + i ∈ {5} + res ∈ [93.9166666667 .. 110.791666667] + +Values at end of function main: + __fc_heap_status ∈ [--..--] + a1[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {2} + [3] ∈ {3} + [4] ∈ {4} + [5] ∈ {5} + [6] ∈ {6} + [7] ∈ {7} + [8] ∈ {8} + [9] ∈ {9} + stuff.t[0..4] ∈ {3} + .t[5..9] ∈ {4} + .t[10..49] ∈ [0..12] + .d[0] ∈ {0} + .d[1] ∈ {3.125} + .d[2] ∈ {6.25} + .d[3] ∈ {9.375} + .d[4] ∈ {12.5} + .d[5] ∈ {15.625} + .d[6] ∈ {18.75} + .d[7] ∈ {21.875} + .d[8] ∈ {25.} + .d[9] ∈ {28.125} + pr ∈ {{ &r ; &r2 }} + pr2 ∈ {{ &r ; &r2 }} + ppr ∈ {{ &pr ; &pr2 }} + alloc3 ∈ {{ &__malloc_main_l102 }} + inited ∈ {1} + sa ∈ {{ "abc" }} + r ∈ {93.9166666667} + r2 ∈ {110.791666667} + dm ∈ [93.9166666667 .. 110.791666667] + res_from_fp ∈ {32} + res ∈ {93} + local ∈ {42} + local2 ∈ {43} + __retres ∈ {0} + diff --git a/tests/non-free/oracle_symblocs/alloc.0.err.oracle b/tests/non-free/oracle_symblocs/alloc.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/non-free/oracle_symblocs/alloc.0.res.oracle b/tests/non-free/oracle_symblocs/alloc.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..6bbe7a5e4762c5fd665dca353134d62460540083 --- /dev/null +++ b/tests/non-free/oracle_symblocs/alloc.0.res.oracle @@ -0,0 +1,140 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/non-free/alloc.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + __fc_random_counter ∈ {0} + __fc_rand_max ∈ {32767} + __fc_heap_status ∈ [--..--] + Frama_C_entropy_source ∈ [--..--] + p ∈ {0} + q ∈ {0} + r ∈ {0} + a ∈ {0} + b ∈ {0} + t ∈ {0} + u ∈ {0} + v ∈ {0} + ch ∈ {44} +[value] computing for function malloc <- main. + Called from tests/non-free/alloc.c:16. +share/libc/stdlib.c:39:[value] allocating variable __malloc_malloc_l39 +share/libc/stdlib.h:177:[value] warning: function malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.) +share/libc/stdlib.h:182:[value] warning: function malloc, behavior no_allocation: postcondition got status invalid. (Behavior may be inactive, no reduction performed.) +[value] Recording results for malloc +[value] Done for function malloc +[value] computing for function malloc <- main. + Called from tests/non-free/alloc.c:17. +share/libc/stdlib.c:39:[value] allocating variable __malloc_malloc_l39_0 +[value] Recording results for malloc +[value] Done for function malloc +tests/non-free/alloc.c:18:[value] warning: out of bounds write. assert \valid(p+(int)(-1)); +tests/non-free/alloc.c:18:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +tests/non-free/alloc.c:19:[value] warning: out of bounds write. assert \valid(p+1); +tests/non-free/alloc.c:19:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +tests/non-free/alloc.c:20:[value] warning: out of bounds write. assert \valid(t+(int)(-1)); +tests/non-free/alloc.c:20:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +tests/non-free/alloc.c:21:[value] warning: out of bounds write. assert \valid(t+10); +tests/non-free/alloc.c:21:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +[value] computing for function malloc <- main. + Called from tests/non-free/alloc.c:25. +share/libc/stdlib.c:39:[value] allocating variable __malloc_malloc_l39_1 +[value] Recording results for malloc +[value] Done for function malloc +tests/non-free/alloc.c:26:[value] warning: signed overflow. assert -2147483648 ≤ -((int)q); +tests/non-free/alloc.c:26:[value] warning: signed overflow. assert -((int)q) ≤ 2147483647; +tests/non-free/alloc.c:26:[value] Assigning imprecise value to r. + The imprecision originates from Arithmetic {tests/non-free/alloc.c:26} +tests/non-free/alloc.c:27:[value] warning: out of bounds write. assert \valid(r); +tests/non-free/alloc.c:27:[value] warning: out of bounds read. assert \valid_read(r+1); +[value] computing for function malloc <- main. + Called from tests/non-free/alloc.c:32. +share/libc/stdlib.c:39:[value] allocating variable __malloc_malloc_l39_2 +[value] Recording results for malloc +[value] Done for function malloc +[value] computing for function malloc <- main. + Called from tests/non-free/alloc.c:33. +share/libc/stdlib.c:39:[value] allocating variable __malloc_malloc_l39_3 +[value] Recording results for malloc +[value] Done for function malloc +tests/non-free/alloc.c:34:[value] warning: out of bounds write. assert \valid(u); +tests/non-free/alloc.c:35:[value] warning: out of bounds write. assert \valid(u); +tests/non-free/alloc.c:36:[value] warning: out of bounds write. assert \valid(u+1); +tests/non-free/alloc.c:36:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +tests/non-free/alloc.c:37:[value] warning: out of bounds write. assert \valid(u+1); +tests/non-free/alloc.c:37:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +tests/non-free/alloc.c:40:[value] warning: out of bounds write. assert \valid(v+1); +tests/non-free/alloc.c:41:[value] warning: out of bounds write. assert \valid(v+1); +tests/non-free/alloc.c:42:[value] warning: out of bounds write. assert \valid(v+2); +tests/non-free/alloc.c:42:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +tests/non-free/alloc.c:43:[value] warning: out of bounds write. assert \valid(v+2); +tests/non-free/alloc.c:43:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +[value] Recording results for main +[value] done for function main +tests/non-free/alloc.c:18:[value] assertion 'Value,mem_access' got final status invalid. +tests/non-free/alloc.c:19:[value] assertion 'Value,mem_access' got final status invalid. +tests/non-free/alloc.c:20:[value] assertion 'Value,mem_access' got final status invalid. +tests/non-free/alloc.c:21:[value] assertion 'Value,mem_access' got final status invalid. +tests/non-free/alloc.c:36:[value] assertion 'Value,mem_access' got final status invalid. +tests/non-free/alloc.c:37:[value] assertion 'Value,mem_access' got final status invalid. +tests/non-free/alloc.c:42:[value] assertion 'Value,mem_access' got final status invalid. +tests/non-free/alloc.c:43:[value] assertion 'Value,mem_access' got final status invalid. +[value] ====== VALUES COMPUTED ====== +share/libc/stdlib.c:39:[kernel] warning: Neither code nor specification for function Frama_C_alloc_size, generating default assigns from the prototype +[value:final-states] Values at end of function malloc: + +[value:final-states] Values at end of function main: + p ∈ {{ (int *)&__malloc_malloc_l39 }} + q ∈ {{ (int *)&__malloc_malloc_l39_1 }} + r ∈ + {{ garbled mix of &{__malloc_malloc_l39_1} + (origin: Arithmetic {tests/non-free/alloc.c:26}) }} + a ∈ {1} + t ∈ {{ &__malloc_malloc_l39_0[0] }} + u ∈ {{ &__malloc_malloc_l39_2[0] }} + v ∈ {{ &__malloc_malloc_l39_3[0] }} + c ∈ [--..--] + __malloc_malloc_l39[bits 0 to 31] ∈ {107} + __malloc_malloc_l39_0[0] ∈ {111} + [1..8] ∈ UNINITIALIZED + [9] ∈ {111} + __malloc_malloc_l39_1[bits 0 to 31] ∈ {1} + __malloc_malloc_l39_2[0] ∈ {33} + __malloc_malloc_l39_3[0] ∈ {35} + [1] ∈ {36} +[from] Computing for function malloc +[from] Computing for function Frama_C_alloc_size <-malloc +[from] Done for function Frama_C_alloc_size +[from] Done for function malloc +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function malloc: + \result FROM size +[from] Function main: + p FROM \nothing + q FROM \nothing + r FROM \nothing + a FROM c + t FROM \nothing + u FROM d + v FROM d + __malloc_malloc_l39[0..3] FROM \nothing + __malloc_malloc_l39_0{[0]; [9]} FROM \nothing + __malloc_malloc_l39_1[0..3] FROM c + __malloc_malloc_l39_2[0] FROM d + __malloc_malloc_l39_3[0..1] FROM d +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function malloc: + tmp +[inout] Inputs for function malloc: + \nothing +[inout] Out (internal) for function main: + p; q; r; a; t; u; v; c; tmp; tmp_0; tmp_1; tmp_2; tmp_3; tmp_4; + __malloc_malloc_l39[0..3]; __malloc_malloc_l39_0{[0]; [9]}; + __malloc_malloc_l39_1[0..3]; __malloc_malloc_l39_2[0]; + __malloc_malloc_l39_3[0..1] +[inout] Inputs for function main: + p; q; r; t; u; v; ch; __malloc_malloc_l39_1[0..3] diff --git a/tests/non-free/oracle_symblocs/alloc.1.err.oracle b/tests/non-free/oracle_symblocs/alloc.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/non-free/oracle_symblocs/alloc.1.res.oracle b/tests/non-free/oracle_symblocs/alloc.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..d4e9c812cea8d5ace6f2548c3a280642d4eaf09f --- /dev/null +++ b/tests/non-free/oracle_symblocs/alloc.1.res.oracle @@ -0,0 +1,75 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/non-free/alloc.c (with preprocessing) +[value] Analyzing a complete application starting at main_abs +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + NULL[rbits 2048 to 4103] ∈ [--..--] + __fc_random_counter ∈ {0} + __fc_rand_max ∈ {32767} + __fc_heap_status ∈ [--..--] + Frama_C_entropy_source ∈ [--..--] + p ∈ {0} + q ∈ {0} + r ∈ {0} + a ∈ {0} + b ∈ {0} + t ∈ {0} + u ∈ {0} + v ∈ {0} + ch ∈ {44} +[value] computing for function malloc <- main_abs. + Called from tests/non-free/alloc.c:50. +share/libc/stdlib.c:39:[value] allocating variable __malloc_malloc_l39 +share/libc/stdlib.h:177:[value] warning: function malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.) +share/libc/stdlib.h:182:[value] warning: function malloc, behavior no_allocation: postcondition got status invalid. (Behavior may be inactive, no reduction performed.) +[value] Recording results for malloc +[value] Done for function malloc +tests/non-free/alloc.c:51:[value] warning: signed overflow. assert -2147483648 ≤ -((int)q); +tests/non-free/alloc.c:51:[value] warning: signed overflow. assert -((int)q) ≤ 2147483647; +tests/non-free/alloc.c:51:[value] Assigning imprecise value to r. + The imprecision originates from Arithmetic {tests/non-free/alloc.c:51} +tests/non-free/alloc.c:54:[value] warning: out of bounds write. assert \valid(r); +tests/non-free/alloc.c:56:[value] warning: signed overflow. assert -2147483648 ≤ *q+1; +tests/non-free/alloc.c:56:[value] warning: signed overflow. assert *q+1 ≤ 2147483647; +[value] Recording results for main_abs +[value] done for function main_abs +[value] ====== VALUES COMPUTED ====== +share/libc/stdlib.c:39:[kernel] warning: Neither code nor specification for function Frama_C_alloc_size, generating default assigns from the prototype +[value:final-states] Values at end of function malloc: + +[value:final-states] Values at end of function main_abs: + NULL[rbits 2048 to 4103] ∈ + {{ garbled mix of &{__malloc_malloc_l39} + (origin: Misaligned {tests/non-free/alloc.c:54}) }} + q ∈ {{ (int *)&__malloc_malloc_l39 }} + r ∈ {{ NULL + [256..509] ; (int *)&__malloc_malloc_l39 }} + a ∈ {{ NULL + [1..510] ; (int)&__malloc_malloc_l39[1] }} + __malloc_malloc_l39[bits 0 to 31] ∈ + {{ NULL + [1..510] ; (? *)&__malloc_malloc_l39[1] }} +[from] Computing for function malloc +[from] Computing for function Frama_C_alloc_size <-malloc +[from] Done for function Frama_C_alloc_size +[from] Done for function malloc +[from] Computing for function main_abs +[from] Done for function main_abs +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function malloc: + \result FROM size +[from] Function main_abs: + NULL{[256..259]; [264..512]} FROM \nothing (and SELF) + [260..263] FROM \nothing + q FROM \nothing + r FROM \nothing + a FROM \nothing + __malloc_malloc_l39[0..3] FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function malloc: + tmp +[inout] Inputs for function malloc: + \nothing +[inout] Out (internal) for function main_abs: + NULL[256..512]; q; r; a; __malloc_malloc_l39[0..3] +[inout] Inputs for function main_abs: + q; r; __malloc_malloc_l39[0..3] diff --git a/tests/non-free/oracle_symblocs/alloc_weak.err.oracle b/tests/non-free/oracle_symblocs/alloc_weak.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/non-free/oracle_symblocs/alloc_weak.res.oracle b/tests/non-free/oracle_symblocs/alloc_weak.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..f582c4209380610379f8e1828b4249721d79c4cb --- /dev/null +++ b/tests/non-free/oracle_symblocs/alloc_weak.res.oracle @@ -0,0 +1,912 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/non-free/alloc_weak.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + __fc_random_counter ∈ {0} + __fc_rand_max ∈ {32767} + __fc_heap_status ∈ [--..--] + v ∈ [--..--] +[value] computing for function main1 <- main. + Called from tests/non-free/alloc_weak.c:46. +tests/non-free/alloc_weak.c:23:[value] allocating variable __malloc_main1_l23 +tests/non-free/alloc_weak.c:23:[value:malloc] marking variable `__malloc_main1_l23' as weak +tests/non-free/alloc_weak.c:22:[value] entering loop for the first time +[value] computing for function copy <- main1 <- main. + Called from tests/non-free/alloc_weak.c:27. +tests/non-free/alloc_weak.c:14:[value] Call to builtin memcpy(({{ (void *)&p }},{{ (void const *)&t[1] }},{1})) +[value] Recording results for copy +[value] Done for function copy +[value] computing for function copy <- main1 <- main. + Called from tests/non-free/alloc_weak.c:28. +tests/non-free/alloc_weak.c:14:[value] Call to builtin memcpy(({{ &p + {1} }},{{ &t + {1} }},{3})) +[value] Recording results for copy +[value] Done for function copy +tests/non-free/alloc_weak.c:29:[value] warning: out of bounds write. assert \valid(p); +[value] Recording results for main1 +[value] Done for function main1 +[value] computing for function main2 <- main. + Called from tests/non-free/alloc_weak.c:47. +tests/non-free/alloc_weak.c:37:[value] allocating variable __malloc_main2_l37 +[value] Semantic level unrolling superposing up to 100 states +[value] Semantic level unrolling superposing up to 200 states +[value] Semantic level unrolling superposing up to 300 states +[value] Semantic level unrolling superposing up to 400 states +[value] Semantic level unrolling superposing up to 500 states +[value] Semantic level unrolling superposing up to 600 states +[value] Semantic level unrolling superposing up to 700 states +[value] Semantic level unrolling superposing up to 800 states +[value] Recording results for main2 +[value] Done for function main2 +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main2: + __fc_heap_status ∈ [--..--] + t[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {2} + [3] ∈ {3} + [4] ∈ {4} + [5] ∈ {5} + [6] ∈ {6} + [7] ∈ {7} + [8] ∈ {8} + [9] ∈ {9} + [10] ∈ {10} + [11] ∈ {11} + [12] ∈ {12} + [13] ∈ {13} + [14] ∈ {14} + [15] ∈ {15} + [16] ∈ {16} + [17] ∈ {17} + [18] ∈ {18} + [19] ∈ {19} + [20] ∈ {20} + [21] ∈ {21} + [22] ∈ {22} + [23] ∈ {23} + [24] ∈ {24} + [25] ∈ {25} + [26] ∈ {26} + [27] ∈ {27} + [28] ∈ {28} + [29] ∈ {29} + [30] ∈ {30} + [31] ∈ {31} + [32] ∈ {32} + [33] ∈ {33} + [34] ∈ {34} + [35] ∈ {35} + [36] ∈ {36} + [37] ∈ {37} + [38] ∈ {38} + [39] ∈ {39} + [40] ∈ {40} + [41] ∈ {41} + [42] ∈ {42} + [43] ∈ {43} + [44] ∈ {44} + [45] ∈ {45} + [46] ∈ {46} + [47] ∈ {47} + [48] ∈ {48} + [49] ∈ {49} + [50] ∈ {50} + [51] ∈ {51} + [52] ∈ {52} + [53] ∈ {53} + [54] ∈ {54} + [55] ∈ {55} + [56] ∈ {56} + [57] ∈ {57} + [58] ∈ {58} + [59] ∈ {59} + [60] ∈ {60} + [61] ∈ {61} + [62] ∈ {62} + [63] ∈ {63} + [64] ∈ {64} + [65] ∈ {65} + [66] ∈ {66} + [67] ∈ {67} + [68] ∈ {68} + [69] ∈ {69} + [70] ∈ {70} + [71] ∈ {71} + [72] ∈ {72} + [73] ∈ {73} + [74] ∈ {74} + [75] ∈ {75} + [76] ∈ {76} + [77] ∈ {77} + [78] ∈ {78} + [79] ∈ {79} + [80] ∈ {80} + [81] ∈ {81} + [82] ∈ {82} + [83] ∈ {83} + [84] ∈ {84} + [85] ∈ {85} + [86] ∈ {86} + [87] ∈ {87} + [88] ∈ {88} + [89] ∈ {89} + [90] ∈ {90} + [91] ∈ {91} + [92] ∈ {92} + [93] ∈ {93} + [94] ∈ {94} + [95] ∈ {95} + [96] ∈ {96} + [97] ∈ {97} + [98] ∈ {98} + [99] ∈ {99} + [100] ∈ {100} + [101] ∈ {101} + [102] ∈ {102} + [103] ∈ {103} + [104] ∈ {104} + [105] ∈ {105} + [106] ∈ {106} + [107] ∈ {107} + [108] ∈ {108} + [109] ∈ {109} + [110] ∈ {110} + [111] ∈ {111} + [112] ∈ {112} + [113] ∈ {113} + [114] ∈ {114} + [115] ∈ {115} + [116] ∈ {116} + [117] ∈ {117} + [118] ∈ {118} + [119] ∈ {119} + [120] ∈ {120} + [121] ∈ {121} + [122] ∈ {122} + [123] ∈ {123} + [124] ∈ {124} + [125] ∈ {125} + [126] ∈ {126} + [127] ∈ {127} + [128] ∈ {128} + [129] ∈ {129} + [130] ∈ {130} + [131] ∈ {131} + [132] ∈ {132} + [133] ∈ {133} + [134] ∈ {134} + [135] ∈ {135} + [136] ∈ {136} + [137] ∈ {137} + [138] ∈ {138} + [139] ∈ {139} + [140] ∈ {140} + [141] ∈ {141} + [142] ∈ {142} + [143] ∈ {143} + [144] ∈ {144} + [145] ∈ {145} + [146] ∈ {146} + [147] ∈ {147} + [148] ∈ {148} + [149] ∈ {149} + [150] ∈ {150} + [151] ∈ {151} + [152] ∈ {152} + [153] ∈ {153} + [154] ∈ {154} + [155] ∈ {155} + [156] ∈ {156} + [157] ∈ {157} + [158] ∈ {158} + [159] ∈ {159} + [160] ∈ {160} + [161] ∈ {161} + [162] ∈ {162} + [163] ∈ {163} + [164] ∈ {164} + [165] ∈ {165} + [166] ∈ {166} + [167] ∈ {167} + [168] ∈ {168} + [169] ∈ {169} + [170] ∈ {170} + [171] ∈ {171} + [172] ∈ {172} + [173] ∈ {173} + [174] ∈ {174} + [175] ∈ {175} + [176] ∈ {176} + [177] ∈ {177} + [178] ∈ {178} + [179] ∈ {179} + [180] ∈ {180} + [181] ∈ {181} + [182] ∈ {182} + [183] ∈ {183} + [184] ∈ {184} + [185] ∈ {185} + [186] ∈ {186} + [187] ∈ {187} + [188] ∈ {188} + [189] ∈ {189} + [190] ∈ {190} + [191] ∈ {191} + [192] ∈ {192} + [193] ∈ {193} + [194] ∈ {194} + [195] ∈ {195} + [196] ∈ {196} + [197] ∈ {197} + [198] ∈ {198} + [199] ∈ {199} + [200] ∈ {200} + [201] ∈ {201} + [202] ∈ {202} + [203] ∈ {203} + [204] ∈ {204} + [205] ∈ {205} + [206] ∈ {206} + [207] ∈ {207} + [208] ∈ {208} + [209] ∈ {209} + [210] ∈ {210} + [211] ∈ {211} + [212] ∈ {212} + [213] ∈ {213} + [214] ∈ {214} + [215] ∈ {215} + [216] ∈ {216} + [217] ∈ {217} + [218] ∈ {218} + [219] ∈ {219} + [220] ∈ {220} + [221] ∈ {221} + [222] ∈ {222} + [223] ∈ {223} + [224] ∈ {224} + [225] ∈ {225} + [226] ∈ {226} + [227] ∈ {227} + [228] ∈ {228} + [229] ∈ {229} + [230] ∈ {230} + [231] ∈ {231} + [232] ∈ {232} + [233] ∈ {233} + [234] ∈ {234} + [235] ∈ {235} + [236] ∈ {236} + [237] ∈ {237} + [238] ∈ {238} + [239] ∈ {239} + [240] ∈ {240} + [241] ∈ {241} + [242] ∈ {242} + [243] ∈ {243} + [244] ∈ {244} + [245] ∈ {245} + [246] ∈ {246} + [247] ∈ {247} + [248] ∈ {248} + [249] ∈ {249} + [250] ∈ {250} + [251] ∈ {251} + [252] ∈ {252} + [253] ∈ {253} + [254] ∈ {254} + [255] ∈ {255} + [256] ∈ {256} + [257] ∈ {257} + [258] ∈ {258} + [259] ∈ {259} + [260] ∈ {260} + [261] ∈ {261} + [262] ∈ {262} + [263] ∈ {263} + [264] ∈ {264} + [265] ∈ {265} + [266] ∈ {266} + [267] ∈ {267} + [268] ∈ {268} + [269] ∈ {269} + [270] ∈ {270} + [271] ∈ {271} + [272] ∈ {272} + [273] ∈ {273} + [274] ∈ {274} + [275] ∈ {275} + [276] ∈ {276} + [277] ∈ {277} + [278] ∈ {278} + [279] ∈ {279} + [280] ∈ {280} + [281] ∈ {281} + [282] ∈ {282} + [283] ∈ {283} + [284] ∈ {284} + [285] ∈ {285} + [286] ∈ {286} + [287] ∈ {287} + [288] ∈ {288} + [289] ∈ {289} + [290] ∈ {290} + [291] ∈ {291} + [292] ∈ {292} + [293] ∈ {293} + [294] ∈ {294} + [295] ∈ {295} + [296] ∈ {296} + [297] ∈ {297} + [298] ∈ {298} + [299] ∈ {299} + [300] ∈ {300} + [301] ∈ {301} + [302] ∈ {302} + [303] ∈ {303} + [304] ∈ {304} + [305] ∈ {305} + [306] ∈ {306} + [307] ∈ {307} + [308] ∈ {308} + [309] ∈ {309} + [310] ∈ {310} + [311] ∈ {311} + [312] ∈ {312} + [313] ∈ {313} + [314] ∈ {314} + [315] ∈ {315} + [316] ∈ {316} + [317] ∈ {317} + [318] ∈ {318} + [319] ∈ {319} + [320] ∈ {320} + [321] ∈ {321} + [322] ∈ {322} + [323] ∈ {323} + [324] ∈ {324} + [325] ∈ {325} + [326] ∈ {326} + [327] ∈ {327} + [328] ∈ {328} + [329] ∈ {329} + [330] ∈ {330} + [331] ∈ {331} + [332] ∈ {332} + [333] ∈ {333} + [334] ∈ {334} + [335] ∈ {335} + [336] ∈ {336} + [337] ∈ {337} + [338] ∈ {338} + [339] ∈ {339} + [340] ∈ {340} + [341] ∈ {341} + [342] ∈ {342} + [343] ∈ {343} + [344] ∈ {344} + [345] ∈ {345} + [346] ∈ {346} + [347] ∈ {347} + [348] ∈ {348} + [349] ∈ {349} + [350] ∈ {350} + [351] ∈ {351} + [352] ∈ {352} + [353] ∈ {353} + [354] ∈ {354} + [355] ∈ {355} + [356] ∈ {356} + [357] ∈ {357} + [358] ∈ {358} + [359] ∈ {359} + [360] ∈ {360} + [361] ∈ {361} + [362] ∈ {362} + [363] ∈ {363} + [364] ∈ {364} + [365] ∈ {365} + [366] ∈ {366} + [367] ∈ {367} + [368] ∈ {368} + [369] ∈ {369} + [370] ∈ {370} + [371] ∈ {371} + [372] ∈ {372} + [373] ∈ {373} + [374] ∈ {374} + [375] ∈ {375} + [376] ∈ {376} + [377] ∈ {377} + [378] ∈ {378} + [379] ∈ {379} + [380] ∈ {380} + [381] ∈ {381} + [382] ∈ {382} + [383] ∈ {383} + [384] ∈ {384} + [385] ∈ {385} + [386] ∈ {386} + [387] ∈ {387} + [388] ∈ {388} + [389] ∈ {389} + [390] ∈ {390} + [391] ∈ {391} + [392] ∈ {392} + [393] ∈ {393} + [394] ∈ {394} + [395] ∈ {395} + [396] ∈ {396} + [397] ∈ {397} + [398] ∈ {398} + [399] ∈ {399} + [400] ∈ {400} + [401] ∈ {401} + [402] ∈ {402} + [403] ∈ {403} + [404] ∈ {404} + [405] ∈ {405} + [406] ∈ {406} + [407] ∈ {407} + [408] ∈ {408} + [409] ∈ {409} + [410] ∈ {410} + [411] ∈ {411} + [412] ∈ {412} + [413] ∈ {413} + [414] ∈ {414} + [415] ∈ {415} + [416] ∈ {416} + [417] ∈ {417} + [418] ∈ {418} + [419] ∈ {419} + [420] ∈ {420} + [421] ∈ {421} + [422] ∈ {422} + [423] ∈ {423} + [424] ∈ {424} + [425] ∈ {425} + [426] ∈ {426} + [427] ∈ {427} + [428] ∈ {428} + [429] ∈ {429} + [430] ∈ {430} + [431] ∈ {431} + [432] ∈ {432} + [433] ∈ {433} + [434] ∈ {434} + [435] ∈ {435} + [436] ∈ {436} + [437] ∈ {437} + [438] ∈ {438} + [439] ∈ {439} + [440] ∈ {440} + [441] ∈ {441} + [442] ∈ {442} + [443] ∈ {443} + [444] ∈ {444} + [445] ∈ {445} + [446] ∈ {446} + [447] ∈ {447} + [448] ∈ {448} + [449] ∈ {449} + [450] ∈ {450} + [451] ∈ {451} + [452] ∈ {452} + [453] ∈ {453} + [454] ∈ {454} + [455] ∈ {455} + [456] ∈ {456} + [457] ∈ {457} + [458] ∈ {458} + [459] ∈ {459} + [460] ∈ {460} + [461] ∈ {461} + [462] ∈ {462} + [463] ∈ {463} + [464] ∈ {464} + [465] ∈ {465} + [466] ∈ {466} + [467] ∈ {467} + [468] ∈ {468} + [469] ∈ {469} + [470] ∈ {470} + [471] ∈ {471} + [472] ∈ {472} + [473] ∈ {473} + [474] ∈ {474} + [475] ∈ {475} + [476] ∈ {476} + [477] ∈ {477} + [478] ∈ {478} + [479] ∈ {479} + [480] ∈ {480} + [481] ∈ {481} + [482] ∈ {482} + [483] ∈ {483} + [484] ∈ {484} + [485] ∈ {485} + [486] ∈ {486} + [487] ∈ {487} + [488] ∈ {488} + [489] ∈ {489} + [490] ∈ {490} + [491] ∈ {491} + [492] ∈ {492} + [493] ∈ {493} + [494] ∈ {494} + [495] ∈ {495} + [496] ∈ {496} + [497] ∈ {497} + [498] ∈ {498} + [499] ∈ {499} + [500] ∈ {500} + [501] ∈ {501} + [502] ∈ {502} + [503] ∈ {503} + [504] ∈ {504} + [505] ∈ {505} + [506] ∈ {506} + [507] ∈ {507} + [508] ∈ {508} + [509] ∈ {509} + [510] ∈ {510} + [511] ∈ {511} + [512] ∈ {512} + [513] ∈ {513} + [514] ∈ {514} + [515] ∈ {515} + [516] ∈ {516} + [517] ∈ {517} + [518] ∈ {518} + [519] ∈ {519} + [520] ∈ {520} + [521] ∈ {521} + [522] ∈ {522} + [523] ∈ {523} + [524] ∈ {524} + [525] ∈ {525} + [526] ∈ {526} + [527] ∈ {527} + [528] ∈ {528} + [529] ∈ {529} + [530] ∈ {530} + [531] ∈ {531} + [532] ∈ {532} + [533] ∈ {533} + [534] ∈ {534} + [535] ∈ {535} + [536] ∈ {536} + [537] ∈ {537} + [538] ∈ {538} + [539] ∈ {539} + [540] ∈ {540} + [541] ∈ {541} + [542] ∈ {542} + [543] ∈ {543} + [544] ∈ {544} + [545] ∈ {545} + [546] ∈ {546} + [547] ∈ {547} + [548] ∈ {548} + [549] ∈ {549} + [550] ∈ {550} + [551] ∈ {551} + [552] ∈ {552} + [553] ∈ {553} + [554] ∈ {554} + [555] ∈ {555} + [556] ∈ {556} + [557] ∈ {557} + [558] ∈ {558} + [559] ∈ {559} + [560] ∈ {560} + [561] ∈ {561} + [562] ∈ {562} + [563] ∈ {563} + [564] ∈ {564} + [565] ∈ {565} + [566] ∈ {566} + [567] ∈ {567} + [568] ∈ {568} + [569] ∈ {569} + [570] ∈ {570} + [571] ∈ {571} + [572] ∈ {572} + [573] ∈ {573} + [574] ∈ {574} + [575] ∈ {575} + [576] ∈ {576} + [577] ∈ {577} + [578] ∈ {578} + [579] ∈ {579} + [580] ∈ {580} + [581] ∈ {581} + [582] ∈ {582} + [583] ∈ {583} + [584] ∈ {584} + [585] ∈ {585} + [586] ∈ {586} + [587] ∈ {587} + [588] ∈ {588} + [589] ∈ {589} + [590] ∈ {590} + [591] ∈ {591} + [592] ∈ {592} + [593] ∈ {593} + [594] ∈ {594} + [595] ∈ {595} + [596] ∈ {596} + [597] ∈ {597} + [598] ∈ {598} + [599] ∈ {599} + [600] ∈ {600} + [601] ∈ {601} + [602] ∈ {602} + [603] ∈ {603} + [604] ∈ {604} + [605] ∈ {605} + [606] ∈ {606} + [607] ∈ {607} + [608] ∈ {608} + [609] ∈ {609} + [610] ∈ {610} + [611] ∈ {611} + [612] ∈ {612} + [613] ∈ {613} + [614] ∈ {614} + [615] ∈ {615} + [616] ∈ {616} + [617] ∈ {617} + [618] ∈ {618} + [619] ∈ {619} + [620] ∈ {620} + [621] ∈ {621} + [622] ∈ {622} + [623] ∈ {623} + [624] ∈ {624} + [625] ∈ {625} + [626] ∈ {626} + [627] ∈ {627} + [628] ∈ {628} + [629] ∈ {629} + [630] ∈ {630} + [631] ∈ {631} + [632] ∈ {632} + [633] ∈ {633} + [634] ∈ {634} + [635] ∈ {635} + [636] ∈ {636} + [637] ∈ {637} + [638] ∈ {638} + [639] ∈ {639} + [640] ∈ {640} + [641] ∈ {641} + [642] ∈ {642} + [643] ∈ {643} + [644] ∈ {644} + [645] ∈ {645} + [646] ∈ {646} + [647] ∈ {647} + [648] ∈ {648} + [649] ∈ {649} + [650] ∈ {650} + [651] ∈ {651} + [652] ∈ {652} + [653] ∈ {653} + [654] ∈ {654} + [655] ∈ {655} + [656] ∈ {656} + [657] ∈ {657} + [658] ∈ {658} + [659] ∈ {659} + [660] ∈ {660} + [661] ∈ {661} + [662] ∈ {662} + [663] ∈ {663} + [664] ∈ {664} + [665] ∈ {665} + [666] ∈ {666} + [667] ∈ {667} + [668] ∈ {668} + [669] ∈ {669} + [670] ∈ {670} + [671] ∈ {671} + [672] ∈ {672} + [673] ∈ {673} + [674] ∈ {674} + [675] ∈ {675} + [676] ∈ {676} + [677] ∈ {677} + [678] ∈ {678} + [679] ∈ {679} + [680] ∈ {680} + [681] ∈ {681} + [682] ∈ {682} + [683] ∈ {683} + [684] ∈ {684} + [685] ∈ {685} + [686] ∈ {686} + [687] ∈ {687} + [688] ∈ {688} + [689] ∈ {689} + [690] ∈ {690} + [691] ∈ {691} + [692] ∈ {692} + [693] ∈ {693} + [694] ∈ {694} + [695] ∈ {695} + [696] ∈ {696} + [697] ∈ {697} + [698] ∈ {698} + [699] ∈ {699} + [700] ∈ {700} + [701] ∈ {701} + [702] ∈ {702} + [703] ∈ {703} + [704] ∈ {704} + [705] ∈ {705} + [706] ∈ {706} + [707] ∈ {707} + [708] ∈ {708} + [709] ∈ {709} + [710] ∈ {710} + [711] ∈ {711} + [712] ∈ {712} + [713] ∈ {713} + [714] ∈ {714} + [715] ∈ {715} + [716] ∈ {716} + [717] ∈ {717} + [718] ∈ {718} + [719] ∈ {719} + [720] ∈ {720} + [721] ∈ {721} + [722] ∈ {722} + [723] ∈ {723} + [724] ∈ {724} + [725] ∈ {725} + [726] ∈ {726} + [727] ∈ {727} + [728] ∈ {728} + [729] ∈ {729} + [730] ∈ {730} + [731] ∈ {731} + [732] ∈ {732} + [733] ∈ {733} + [734] ∈ {734} + [735] ∈ {735} + [736] ∈ {736} + [737] ∈ {737} + [738] ∈ {738} + [739] ∈ {739} + [740] ∈ {740} + [741] ∈ {741} + [742] ∈ {742} + [743] ∈ {743} + [744] ∈ {744} + [745] ∈ {745} + [746] ∈ {746} + [747] ∈ {747} + [748] ∈ {748} + [749] ∈ {749} + [750] ∈ {750} + [751] ∈ {751} + [752] ∈ {752} + [753] ∈ {753} + [754] ∈ {754} + [755] ∈ {755} + [756] ∈ {756} + [757] ∈ {757} + [758] ∈ {758} + [759] ∈ {759} + [760] ∈ {760} + [761] ∈ {761} + [762] ∈ {762} + [763] ∈ {763} + [764] ∈ {764} + [765] ∈ {765} + [766] ∈ {766} + [767] ∈ {767} + [768] ∈ {768} + [769] ∈ {769} + [770] ∈ {770} + [771] ∈ {771} + [772] ∈ {772} + [773] ∈ {773} + [774] ∈ {774} + [775] ∈ {775} + [776] ∈ {776} + [777] ∈ {777} + [778] ∈ {778} + [779] ∈ {779} + [780] ∈ {780} + [781] ∈ {781} + [782] ∈ {782} + [783] ∈ {783} + [784] ∈ {784} + [785] ∈ {785} + [786] ∈ {786} + [787] ∈ {787} + [788] ∈ {788} + [789] ∈ {789} + [790] ∈ {790} + [791] ∈ {791} + [792] ∈ {792} + [793] ∈ {793} + [794] ∈ {794} + [795] ∈ {795} + [796] ∈ {796} + [797] ∈ {797} + [798] ∈ {798} + [799] ∈ {799} + [800..999] ∈ UNINITIALIZED + i ∈ {800} +[value:final-states] Values at end of function copy: + dst ∈ {{ (char *)&p }} + src ∈ {{ (char *)&t{[0], [1]} }} + p[bits 0 to 7]# ∈ {{ (? *)&__malloc_w_main1_l23 }}%32, bits 0 to 7 + [bits 8 to 31]# ∈ + {{ (? *)&__malloc_w_main1_l23 }} or UNINITIALIZED%32, bits 8 to 31 +[value:final-states] Values at end of function main1: + __fc_heap_status ∈ [--..--] + t[0..1] ∈ {{ &__malloc_w_main1_l23[0] }} + p ∈ {{ &__malloc_w_main1_l23 + [0..124] }} + n ∈ {4} + r ∈ [--..--] or UNINITIALIZED + __malloc_w_main1_l23[0..31] ∈ [--..--] or UNINITIALIZED +[value:final-states] Values at end of function main: + __fc_heap_status ∈ [--..--] + __malloc_w_main1_l23[0..31] ∈ [--..--] or UNINITIALIZED +[from] Computing for function main2 +[from] Computing for function malloc <-main2 +[from] Done for function malloc +[from] Done for function main2 +[from] Computing for function copy +[from] Computing for function memcpy <-copy +[from] Done for function memcpy +[from] Done for function copy +[from] Computing for function main1 +[from] Done for function main1 +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function malloc: + __fc_heap_status FROM __fc_heap_status; size (and SELF) + \result FROM __fc_heap_status; size +[from] Function main2: + __fc_heap_status FROM __fc_heap_status (and SELF) +[from] Function memcpy: + p FROM t{[0][bits 8 to 31]; [1][bits 0 to 23]} (and SELF) + \result FROM dest +[from] Function copy: + p FROM t{[0][bits 8 to 31]; [1][bits 0 to 23]} (and SELF) +[from] Function main1: + __fc_heap_status FROM __fc_heap_status (and SELF) + __malloc_w_main1_l23[0..31] FROM __fc_heap_status (and SELF) + \result FROM __fc_heap_status; __malloc_w_main1_l23[0..31] +[from] Function main: + __fc_heap_status FROM __fc_heap_status (and SELF) + __malloc_w_main1_l23[0..31] FROM __fc_heap_status (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main2: + __fc_heap_status; t[0..799]; i; tmp +[inout] Inputs for function main2: + __fc_heap_status +[inout] Out (internal) for function copy: + dst; src; p +[inout] Inputs for function copy: + t[0..1] +[inout] Out (internal) for function main1: + __fc_heap_status; t[0..1]; i; p; n; r; __malloc_w_main1_l23[0..31] +[inout] Inputs for function main1: + __fc_heap_status; __malloc_w_main1_l23[0..31] +[inout] Out (internal) for function main: + __fc_heap_status; __malloc_w_main1_l23[0..31] +[inout] Inputs for function main: + __fc_heap_status; __malloc_w_main1_l23[0..31] diff --git a/tests/non-free/oracle_symblocs/allocated.0.err.oracle b/tests/non-free/oracle_symblocs/allocated.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/non-free/oracle_symblocs/allocated.0.res.oracle b/tests/non-free/oracle_symblocs/allocated.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..b48e805626568c78ee2a2fcc8dc7c47593abd968 --- /dev/null +++ b/tests/non-free/oracle_symblocs/allocated.0.res.oracle @@ -0,0 +1,153 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/non-free/allocated.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + __fc_random_counter ∈ {0} + __fc_rand_max ∈ {32767} + __fc_heap_status ∈ [--..--] + nondet ∈ [--..--] +tests/non-free/allocated.c:25:[value] allocating variable __malloc_main_l25 +tests/non-free/allocated.c:25:[value] assertion got status valid. +tests/non-free/allocated.c:27:[value] warning: out of bounds read. assert \valid_read(p+1); +tests/non-free/allocated.c:28:[value] warning: out of bounds read. assert \valid_read(p+2); +[value] Called Frama_C_show_each_p({{ &__malloc_main_l25 }}) +[value] Called Frama_C_show_each_p0({18}) +tests/non-free/allocated.c:31:[value:malloc] strong free on bases: {__malloc_main_l25} +[value] Called Frama_C_show_each_p_after_free({{ }}) +tests/non-free/allocated.c:36:[value] allocating variable __malloc_main_l36 +tests/non-free/allocated.c:36:[value] assertion got status valid. +[value] Called Frama_C_show_each_p({{ &__malloc_main_l36 }}) +[value] Called Frama_C_show_each_p0({13}) +[value] Called Frama_C_show_each_p1({54}) +tests/non-free/allocated.c:43:[value:malloc] strong free on bases: {__malloc_main_l36} +tests/non-free/allocated.c:44:[value] warning: accessing left-value that contains escaping addresses. + assert ¬\dangling(&p); +tests/non-free/allocated.c:45:[value:malloc] strong free on bases: {__malloc_main_l36} +tests/non-free/allocated.c:46:[value] warning: accessing left-value that contains escaping addresses. + assert ¬\dangling(&p); +tests/non-free/allocated.c:46:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +tests/non-free/allocated.c:50:[value] allocating variable __malloc_main_l50 +tests/non-free/allocated.c:50:[value] assertion got status valid. +tests/non-free/allocated.c:53:[value] warning: out of bounds write. assert \valid(p+2); +[value] Called Frama_C_show_each_p({{ &__malloc_main_l50 }}) +[value] Called Frama_C_show_each_p0({13}) +[value] Called Frama_C_show_each_p1({42}) +tests/non-free/allocated.c:57:[value] warning: out of bounds read. assert \valid_read(p+2); +[value] Called Frama_C_show_each_p2({77}) +tests/non-free/allocated.c:58:[value:malloc] strong free on bases: {__malloc_main_l50} +tests/non-free/allocated.c:63:[value] allocating variable __malloc_main_l63 +tests/non-free/allocated.c:63:[value] assertion got status valid. +[value] Called Frama_C_show_each_p({{ &__malloc_main_l63 }}) +[value] Called Frama_C_show_each_p0({0}) +tests/non-free/allocated.c:67:[value:malloc] strong free on bases: {__malloc_main_l63} +[value] Called Frama_C_show_each_p({{ &__malloc_main_l63 }}) +[value] Called Frama_C_show_each_p0({1}) +tests/non-free/allocated.c:67:[value:malloc] strong free on bases: {__malloc_main_l63} +[value] Called Frama_C_show_each_p({{ &__malloc_main_l63 }}) +[value] Called Frama_C_show_each_p0({2}) +tests/non-free/allocated.c:67:[value:malloc] strong free on bases: {__malloc_main_l63} +[value] Called Frama_C_show_each_p({{ &__malloc_main_l63 }}) +[value] Called Frama_C_show_each_p0({3}) +tests/non-free/allocated.c:67:[value:malloc] strong free on bases: {__malloc_main_l63} +tests/non-free/allocated.c:73:[value] allocating variable __malloc_main_l73 +[value] Called Frama_C_show_each_p({{ &__malloc_main_l73 }}) +[value] Called Frama_C_show_each_p0({0}) +tests/non-free/allocated.c:77:[value:malloc] strong free on bases: {__malloc_main_l73} +tests/non-free/allocated.c:72:[value] entering loop for the first time +[value] Called Frama_C_show_each_p({{ &__malloc_main_l73 }}) +[value] Called Frama_C_show_each_p0({1}) +tests/non-free/allocated.c:77:[value:malloc] strong free on bases: {__malloc_main_l73} +[value] Called Frama_C_show_each_p({{ &__malloc_main_l73 }}) +[value] Called Frama_C_show_each_p0({1; 2}) +tests/non-free/allocated.c:77:[value:malloc] strong free on bases: {__malloc_main_l73} +[value] Called Frama_C_show_each_p({{ &__malloc_main_l73 }}) +[value] Called Frama_C_show_each_p0({1; 2; 3}) +tests/non-free/allocated.c:77:[value:malloc] strong free on bases: {__malloc_main_l73} +tests/non-free/allocated.c:82:[value] allocating variable __malloc_main_l82 +tests/non-free/allocated.c:82:[value] assertion got status valid. +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82} +tests/non-free/allocated.c:81:[value] entering loop for the first time +tests/non-free/allocated.c:82:[value:malloc] marking variable `__malloc_main_l82' as weak +tests/non-free/allocated.c:82:[value:malloc] resizing variable `__malloc_w_main_l82' (0..-1) to fit 0..31 +tests/non-free/allocated.c:84:[value] entering loop for the first time +tests/non-free/allocated.c:85:[value] warning: out of bounds write. assert \valid(p+j); +tests/non-free/allocated.c:87:[value:malloc] weak free on bases: {__malloc_w_main_l82} +tests/non-free/allocated.c:82:[value:malloc] resizing variable `__malloc_w_main_l82' (0..-1/31) to fit 0..31/63 +tests/non-free/allocated.c:87:[value:malloc] weak free on bases: {__malloc_w_main_l82} +tests/non-free/allocated.c:82:[value:malloc] resizing variable `__malloc_w_main_l82' (0..-1/63) to fit 0..31/95 +tests/non-free/allocated.c:87:[value:malloc] weak free on bases: {__malloc_w_main_l82} +tests/non-free/allocated.c:82:[value:malloc] resizing variable `__malloc_w_main_l82' (0..-1/95) to fit 0..31/95 +tests/non-free/allocated.c:91:[value] allocating variable __malloc_main_l91 +tests/non-free/allocated.c:91:[value] assertion got status valid. +tests/non-free/allocated.c:92:[value:malloc] strong free on bases: {__malloc_main_l91} +tests/non-free/allocated.c:96:[value] warning: assertion 'Assume' got status unknown. +tests/non-free/allocated.c:97:[value] allocating variable __malloc_main_l97 +[value] Called Frama_C_show_each({{ &__malloc_main_l97 }}) +tests/non-free/allocated.c:98:[value] warning: out of bounds write. assert \valid(p); +tests/non-free/allocated.c:110:[value] warning: out of bounds read. assert \valid_read(&pb->i1); +[value] Called Frama_C_show_each({0}) +tests/non-free/allocated.c:111:[value:malloc] strong free on bases: {__malloc_main_l97} +tests/non-free/allocated.c:113:[value] warning: assertion got status unknown. +tests/non-free/allocated.c:114:[value] allocating variable __malloc_main_l114 +[value] Called Frama_C_show_each({{ &__malloc_main_l114 }}) +tests/non-free/allocated.c:115:[value] warning: out of bounds write. assert \valid(p); +[value] Called Frama_C_show_each({0}) +tests/non-free/allocated.c:118:[value:malloc] strong free on bases: {__malloc_main_l114} +tests/non-free/allocated.c:120:[value] allocating variable __malloc_main_l120 +[value] Called Frama_C_show_each({{ &__malloc_main_l120 }}) +tests/non-free/allocated.c:123:[value] warning: out of bounds read. assert \valid_read(&pb->i1); +tests/non-free/allocated.c:125:[value:malloc] strong free on bases: {__malloc_main_l120} +[value] Recording results for main +[value] done for function main +tests/non-free/allocated.c:27:[value] assertion 'Value,mem_access' got final status invalid. +tests/non-free/allocated.c:28:[value] assertion 'Value,mem_access' got final status invalid. +tests/non-free/allocated.c:46:[value] assertion 'Value,dangling_pointer' got final status invalid. +tests/non-free/allocated.c:123:[value] assertion 'Value,mem_access' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + __fc_heap_status ∈ [--..--] + i ∈ {4} + j ∈ [0..2147483647] + p ∈ ESCAPINGADDR + k ∈ {8; 12} + size ∈ [1..100] + pb ∈ ESCAPINGADDR + __retres ∈ {0} + __malloc_w_main_l82[0..1] ∈ [7..2147483647] or UNINITIALIZED + [2] ∈ [7..27] or UNINITIALIZED +[from] Computing for function main +[from] Computing for function malloc <-main +[from] Done for function malloc +[from] Computing for function free <-main +[from] Done for function free +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function free: + __fc_heap_status FROM __fc_heap_status (and SELF) +[from] Function malloc: + __fc_heap_status FROM __fc_heap_status; size (and SELF) + \result FROM __fc_heap_status; size +[from] Function main: + __fc_heap_status FROM __fc_heap_status; nondet (and SELF) + __malloc_main_l25 FROM __fc_heap_status + __malloc_main_l36[0..1] FROM __fc_heap_status; nondet + __malloc_main_l50[0..2] FROM __fc_heap_status; nondet + __malloc_main_l63 FROM __fc_heap_status; nondet (and SELF) + __malloc_main_l73 FROM __fc_heap_status; nondet (and SELF) + __malloc_w_main_l82[0..2] FROM __fc_heap_status; nondet (and SELF) + __malloc_main_l97[0] FROM __fc_heap_status; nondet + __malloc_main_l114[0..3] FROM __fc_heap_status; nondet + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + __fc_heap_status; i; j; p; tmp; tmp_3; k; tmp_4; size; pb; __retres; + __malloc_main_l25; __malloc_main_l36[0..1]; __malloc_main_l50[0..2]; + __malloc_main_l63; __malloc_main_l73; __malloc_w_main_l82[0..2]; + __malloc_main_l97[0]; __malloc_main_l114[0..3] +[inout] Inputs for function main: + __fc_heap_status; nondet; __malloc_main_l25; __malloc_main_l36[0..1]; + __malloc_main_l50[0..2]; __malloc_main_l63; __malloc_main_l73; + __malloc_main_l97[0][bits 0 to 0]; __malloc_main_l114[0][bits 0 to 0] diff --git a/tests/non-free/oracle_symblocs/allocated.1.err.oracle b/tests/non-free/oracle_symblocs/allocated.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/non-free/oracle_symblocs/allocated.1.res.oracle b/tests/non-free/oracle_symblocs/allocated.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..53cbaa8819d43a693f717f51eb496decb0b3d485 --- /dev/null +++ b/tests/non-free/oracle_symblocs/allocated.1.res.oracle @@ -0,0 +1,539 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/non-free/allocated.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + __fc_random_counter ∈ {0} + __fc_rand_max ∈ {32767} + __fc_heap_status ∈ [--..--] + nondet ∈ [--..--] +tests/non-free/allocated.c:25:[value] allocating variable __malloc_main_l25 +tests/non-free/allocated.c:25:[value] assertion got status valid. +tests/non-free/allocated.c:27:[value] warning: out of bounds read. assert \valid_read(p+1); +tests/non-free/allocated.c:28:[value] warning: out of bounds read. assert \valid_read(p+2); +[value] Called Frama_C_show_each_p({{ &__malloc_main_l25 }}) +[value] Called Frama_C_show_each_p0({18}) +tests/non-free/allocated.c:31:[value:malloc] strong free on bases: {__malloc_main_l25} +[value] Called Frama_C_show_each_p_after_free({{ }}) +tests/non-free/allocated.c:36:[value] allocating variable __malloc_main_l36 +tests/non-free/allocated.c:36:[value] assertion got status valid. +[value] Called Frama_C_show_each_p({{ &__malloc_main_l36 }}) +[value] Called Frama_C_show_each_p0({13}) +[value] Called Frama_C_show_each_p1({54}) +tests/non-free/allocated.c:43:[value:malloc] strong free on bases: {__malloc_main_l36} +tests/non-free/allocated.c:44:[value] warning: accessing left-value that contains escaping addresses. + assert ¬\dangling(&p); +tests/non-free/allocated.c:44:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +tests/non-free/allocated.c:45:[value:malloc] strong free on bases: {__malloc_main_l36} +tests/non-free/allocated.c:46:[value] warning: accessing left-value that contains escaping addresses. + assert ¬\dangling(&p); +tests/non-free/allocated.c:46:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +tests/non-free/allocated.c:50:[value] allocating variable __malloc_main_l50 +tests/non-free/allocated.c:50:[value] allocating variable __malloc_main_l50_0 +tests/non-free/allocated.c:50:[value] assertion got status valid. +tests/non-free/allocated.c:53:[value] warning: out of bounds write. assert \valid(p+2); +tests/non-free/allocated.c:53:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +[value] Called Frama_C_show_each_p({{ &__malloc_main_l50_0 }}) +[value] Called Frama_C_show_each_p0({13}) +[value] Called Frama_C_show_each_p1({42}) +[value] Called Frama_C_show_each_p2({77}) +tests/non-free/allocated.c:58:[value:malloc] strong free on bases: {__malloc_main_l50_0} +tests/non-free/allocated.c:63:[value] allocating variable __malloc_main_l63 +tests/non-free/allocated.c:63:[value] assertion got status valid. +[value] Called Frama_C_show_each_p({{ &__malloc_main_l63 }}) +[value] Called Frama_C_show_each_p0({0}) +tests/non-free/allocated.c:67:[value:malloc] strong free on bases: {__malloc_main_l63} +tests/non-free/allocated.c:63:[value] allocating variable __malloc_main_l63_0 +[value] Called Frama_C_show_each_p({{ &__malloc_main_l63_0 }}) +[value] Called Frama_C_show_each_p0({1}) +tests/non-free/allocated.c:67:[value:malloc] strong free on bases: {__malloc_main_l63_0} +tests/non-free/allocated.c:63:[value] allocating variable __malloc_main_l63_1 +[value] Called Frama_C_show_each_p({{ &__malloc_main_l63_1 }}) +[value] Called Frama_C_show_each_p0({2}) +tests/non-free/allocated.c:67:[value:malloc] strong free on bases: {__malloc_main_l63_1} +tests/non-free/allocated.c:63:[value] allocating variable __malloc_main_l63_2 +[value] Called Frama_C_show_each_p({{ &__malloc_main_l63_2 }}) +[value] Called Frama_C_show_each_p0({3}) +tests/non-free/allocated.c:67:[value:malloc] strong free on bases: {__malloc_main_l63_2} +tests/non-free/allocated.c:73:[value] allocating variable __malloc_main_l73 +[value] Called Frama_C_show_each_p({{ &__malloc_main_l73 }}) +[value] Called Frama_C_show_each_p0({0}) +tests/non-free/allocated.c:77:[value:malloc] strong free on bases: {__malloc_main_l73} +tests/non-free/allocated.c:73:[value] allocating variable __malloc_main_l73_0 +[value] Called Frama_C_show_each_p({{ &__malloc_main_l73_0 }}) +[value] Called Frama_C_show_each_p0({1}) +tests/non-free/allocated.c:77:[value:malloc] strong free on bases: {__malloc_main_l73_0} +tests/non-free/allocated.c:73:[value] allocating variable __malloc_main_l73_1 +[value] Called Frama_C_show_each_p({{ &__malloc_main_l73_1 }}) +[value] Called Frama_C_show_each_p0({2}) +tests/non-free/allocated.c:77:[value:malloc] strong free on bases: {__malloc_main_l73_1} +tests/non-free/allocated.c:73:[value] allocating variable __malloc_main_l73_2 +[value] Called Frama_C_show_each_p({{ &__malloc_main_l73_2 }}) +[value] Called Frama_C_show_each_p0({3}) +tests/non-free/allocated.c:77:[value:malloc] strong free on bases: {__malloc_main_l73_2} +tests/non-free/allocated.c:82:[value] allocating variable __malloc_main_l82 +tests/non-free/allocated.c:82:[value] assertion got status valid. +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82} +tests/non-free/allocated.c:82:[value] allocating variable __malloc_main_l82_0 +tests/non-free/allocated.c:82:[value] allocating variable __malloc_main_l82_1 +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_0} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_1} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_1} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_0} +tests/non-free/allocated.c:82:[value] allocating variable __malloc_main_l82_2 +tests/non-free/allocated.c:82:[value] allocating variable __malloc_main_l82_3 +tests/non-free/allocated.c:82:[value] allocating variable __malloc_main_l82_4 +tests/non-free/allocated.c:82:[value] allocating variable __malloc_main_l82_5 +tests/non-free/allocated.c:82:[value] allocating variable __malloc_main_l82_6 +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_6} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_5} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_4} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_3} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_2} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_2} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_3} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_4} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_5} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_6} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_6} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_5} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_4} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_3} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_2} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_2} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_3} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_4} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_5} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_6} +tests/non-free/allocated.c:82:[value] allocating variable __malloc_main_l82_7 +tests/non-free/allocated.c:82:[value] allocating variable __malloc_main_l82_8 +tests/non-free/allocated.c:82:[value] allocating variable __malloc_main_l82_9 +tests/non-free/allocated.c:82:[value] allocating variable __malloc_main_l82_10 +tests/non-free/allocated.c:82:[value] allocating variable __malloc_main_l82_11 +tests/non-free/allocated.c:82:[value] allocating variable __malloc_main_l82_12 +tests/non-free/allocated.c:82:[value] allocating variable __malloc_main_l82_13 +tests/non-free/allocated.c:82:[value] allocating variable __malloc_main_l82_14 +tests/non-free/allocated.c:82:[value] allocating variable __malloc_main_l82_15 +tests/non-free/allocated.c:82:[value] allocating variable __malloc_main_l82_16 +tests/non-free/allocated.c:82:[value] allocating variable __malloc_main_l82_17 +tests/non-free/allocated.c:82:[value] allocating variable __malloc_main_l82_18 +tests/non-free/allocated.c:82:[value] allocating variable __malloc_main_l82_19 +tests/non-free/allocated.c:82:[value] allocating variable __malloc_main_l82_20 +tests/non-free/allocated.c:82:[value] allocating variable __malloc_main_l82_21 +tests/non-free/allocated.c:82:[value] allocating variable __malloc_main_l82_22 +tests/non-free/allocated.c:82:[value] allocating variable __malloc_main_l82_23 +tests/non-free/allocated.c:82:[value] allocating variable __malloc_main_l82_24 +tests/non-free/allocated.c:82:[value] allocating variable __malloc_main_l82_25 +tests/non-free/allocated.c:82:[value] allocating variable __malloc_main_l82_26 +tests/non-free/allocated.c:82:[value] allocating variable __malloc_main_l82_27 +tests/non-free/allocated.c:82:[value] allocating variable __malloc_main_l82_28 +tests/non-free/allocated.c:82:[value] allocating variable __malloc_main_l82_29 +tests/non-free/allocated.c:82:[value] allocating variable __malloc_main_l82_30 +[value] Semantic level unrolling superposing up to 100 states +[value] Semantic level unrolling superposing up to 200 states +[value] Semantic level unrolling superposing up to 300 states +[value] Semantic level unrolling superposing up to 400 states +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_30} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_29} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_28} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_27} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_26} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_25} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_24} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_23} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_22} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_21} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_20} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_19} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_18} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_17} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_16} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_15} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_14} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_13} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_12} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_11} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_10} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_9} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_8} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_7} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_7} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_8} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_9} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_10} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_11} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_12} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_13} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_14} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_15} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_16} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_17} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_18} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_19} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_20} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_21} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_22} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_23} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_24} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_25} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_26} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_27} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_28} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_29} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_30} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_30} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_29} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_28} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_27} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_26} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_25} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_24} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_23} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_22} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_21} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_20} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_19} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_18} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_17} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_16} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_15} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_14} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_13} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_12} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_11} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_10} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_9} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_8} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_7} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_7} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_8} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_9} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_10} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_11} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_12} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_13} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_14} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_15} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_16} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_17} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_18} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_19} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_20} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_21} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_22} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_23} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_24} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_25} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_26} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_27} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_28} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_29} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_30} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_30} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_29} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_28} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_27} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_26} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_25} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_24} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_23} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_22} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_21} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_20} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_19} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_18} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_17} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_16} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_15} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_14} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_13} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_12} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_11} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_10} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_9} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_8} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_7} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_7} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_8} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_9} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_10} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_11} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_12} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_13} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_14} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_15} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_16} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_17} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_18} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_19} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_20} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_21} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_22} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_23} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_24} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_25} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_26} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_27} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_28} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_29} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_30} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_30} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_29} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_28} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_27} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_26} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_25} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_24} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_23} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_22} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_21} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_20} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_19} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_18} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_17} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_16} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_15} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_14} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_13} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_12} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_11} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_10} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_9} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_8} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_7} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_7} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_8} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_9} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_10} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_11} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_12} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_13} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_14} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_15} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_16} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_17} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_18} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_19} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_20} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_21} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_22} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_23} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_24} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_25} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_26} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_27} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_28} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_29} +tests/non-free/allocated.c:87:[value:malloc] strong free on bases: {__malloc_main_l82_30} +tests/non-free/allocated.c:91:[value] allocating variable __malloc_main_l91 +tests/non-free/allocated.c:91:[value] assertion got status valid. +tests/non-free/allocated.c:92:[value:malloc] strong free on bases: {__malloc_main_l91} +tests/non-free/allocated.c:96:[value] warning: assertion 'Assume' got status unknown. +tests/non-free/allocated.c:97:[value] allocating variable __malloc_main_l97 +[value] Called Frama_C_show_each({{ &__malloc_main_l97 }}) +tests/non-free/allocated.c:98:[value] warning: out of bounds write. assert \valid(p); +tests/non-free/allocated.c:110:[value] warning: out of bounds read. assert \valid_read(&pb->i1); +[value] Called Frama_C_show_each({0}) +tests/non-free/allocated.c:111:[value:malloc] strong free on bases: {__malloc_main_l97} +tests/non-free/allocated.c:113:[value] warning: assertion got status unknown. +tests/non-free/allocated.c:114:[value] allocating variable __malloc_main_l114 +[value] Called Frama_C_show_each({{ &__malloc_main_l114 }}) +tests/non-free/allocated.c:115:[value] warning: out of bounds write. assert \valid(p); +[value] Called Frama_C_show_each({0}) +tests/non-free/allocated.c:118:[value:malloc] strong free on bases: {__malloc_main_l114} +tests/non-free/allocated.c:120:[value] allocating variable __malloc_main_l120 +[value] Called Frama_C_show_each({{ &__malloc_main_l120 }}) +tests/non-free/allocated.c:123:[value] warning: out of bounds read. assert \valid_read(&pb->i1); +tests/non-free/allocated.c:125:[value:malloc] strong free on bases: {__malloc_main_l120} +[value] Recording results for main +[value] done for function main +tests/non-free/allocated.c:27:[value] assertion 'Value,mem_access' got final status invalid. +tests/non-free/allocated.c:28:[value] assertion 'Value,mem_access' got final status invalid. +tests/non-free/allocated.c:46:[value] assertion 'Value,dangling_pointer' got final status invalid. +tests/non-free/allocated.c:123:[value] assertion 'Value,mem_access' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + __fc_heap_status ∈ [--..--] + i ∈ {4} + j ∈ {3} + p ∈ ESCAPINGADDR + k ∈ {12} + size ∈ [1..100] + pb ∈ ESCAPINGADDR + __retres ∈ {0} + __malloc_main_l82_0 ∈ {7} or UNINITIALIZED + __malloc_main_l82_1 ∈ {7} or UNINITIALIZED + __malloc_main_l82_2[0] ∈ {14} or UNINITIALIZED + [1] ∈ {17} or UNINITIALIZED + __malloc_main_l82_3[0] ∈ {14} or UNINITIALIZED + [1] ∈ {17} or UNINITIALIZED + __malloc_main_l82_4[0] ∈ {14} or UNINITIALIZED + [1] ∈ {17} or UNINITIALIZED + __malloc_main_l82_5[0] ∈ {14} or UNINITIALIZED + [1] ∈ {17} or UNINITIALIZED + __malloc_main_l82_6[0] ∈ {14} or UNINITIALIZED + [1] ∈ {17} or UNINITIALIZED + __malloc_main_l82_7[0] ∈ {21} or UNINITIALIZED + [1] ∈ {24} or UNINITIALIZED + [2] ∈ {27} or UNINITIALIZED + __malloc_main_l82_8[0] ∈ {21} or UNINITIALIZED + [1] ∈ {24} or UNINITIALIZED + [2] ∈ {27} or UNINITIALIZED + __malloc_main_l82_9[0] ∈ {21} or UNINITIALIZED + [1] ∈ {24} or UNINITIALIZED + [2] ∈ {27} or UNINITIALIZED + __malloc_main_l82_10[0] ∈ {21} or UNINITIALIZED + [1] ∈ {24} or UNINITIALIZED + [2] ∈ {27} or UNINITIALIZED + __malloc_main_l82_11[0] ∈ {21} or UNINITIALIZED + [1] ∈ {24} or UNINITIALIZED + [2] ∈ {27} or UNINITIALIZED + __malloc_main_l82_12[0] ∈ {21} or UNINITIALIZED + [1] ∈ {24} or UNINITIALIZED + [2] ∈ {27} or UNINITIALIZED + __malloc_main_l82_13[0] ∈ {21} or UNINITIALIZED + [1] ∈ {24} or UNINITIALIZED + [2] ∈ {27} or UNINITIALIZED + __malloc_main_l82_14[0] ∈ {21} or UNINITIALIZED + [1] ∈ {24} or UNINITIALIZED + [2] ∈ {27} or UNINITIALIZED + __malloc_main_l82_15[0] ∈ {21} or UNINITIALIZED + [1] ∈ {24} or UNINITIALIZED + [2] ∈ {27} or UNINITIALIZED + __malloc_main_l82_16[0] ∈ {21} or UNINITIALIZED + [1] ∈ {24} or UNINITIALIZED + [2] ∈ {27} or UNINITIALIZED + __malloc_main_l82_17[0] ∈ {21} or UNINITIALIZED + [1] ∈ {24} or UNINITIALIZED + [2] ∈ {27} or UNINITIALIZED + __malloc_main_l82_18[0] ∈ {21} or UNINITIALIZED + [1] ∈ {24} or UNINITIALIZED + [2] ∈ {27} or UNINITIALIZED + __malloc_main_l82_19[0] ∈ {21} or UNINITIALIZED + [1] ∈ {24} or UNINITIALIZED + [2] ∈ {27} or UNINITIALIZED + __malloc_main_l82_20[0] ∈ {21} or UNINITIALIZED + [1] ∈ {24} or UNINITIALIZED + [2] ∈ {27} or UNINITIALIZED + __malloc_main_l82_21[0] ∈ {21} or UNINITIALIZED + [1] ∈ {24} or UNINITIALIZED + [2] ∈ {27} or UNINITIALIZED + __malloc_main_l82_22[0] ∈ {21} or UNINITIALIZED + [1] ∈ {24} or UNINITIALIZED + [2] ∈ {27} or UNINITIALIZED + __malloc_main_l82_23[0] ∈ {21} or UNINITIALIZED + [1] ∈ {24} or UNINITIALIZED + [2] ∈ {27} or UNINITIALIZED + __malloc_main_l82_24[0] ∈ {21} or UNINITIALIZED + [1] ∈ {24} or UNINITIALIZED + [2] ∈ {27} or UNINITIALIZED + __malloc_main_l82_25[0] ∈ {21} or UNINITIALIZED + [1] ∈ {24} or UNINITIALIZED + [2] ∈ {27} or UNINITIALIZED + __malloc_main_l82_26[0] ∈ {21} or UNINITIALIZED + [1] ∈ {24} or UNINITIALIZED + [2] ∈ {27} or UNINITIALIZED + __malloc_main_l82_27[0] ∈ {21} or UNINITIALIZED + [1] ∈ {24} or UNINITIALIZED + [2] ∈ {27} or UNINITIALIZED + __malloc_main_l82_28[0] ∈ {21} or UNINITIALIZED + [1] ∈ {24} or UNINITIALIZED + [2] ∈ {27} or UNINITIALIZED + __malloc_main_l82_29[0] ∈ {21} or UNINITIALIZED + [1] ∈ {24} or UNINITIALIZED + [2] ∈ {27} or UNINITIALIZED + __malloc_main_l82_30[0] ∈ {21} or UNINITIALIZED + [1] ∈ {24} or UNINITIALIZED + [2] ∈ {27} or UNINITIALIZED +[from] Computing for function main +[from] Computing for function malloc <-main +[from] Done for function malloc +[from] Computing for function free <-main +[from] Done for function free +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function free: + __fc_heap_status FROM __fc_heap_status (and SELF) +[from] Function malloc: + __fc_heap_status FROM __fc_heap_status; size (and SELF) + \result FROM __fc_heap_status; size +[from] Function main: + __fc_heap_status FROM __fc_heap_status; nondet (and SELF) + __malloc_main_l25 FROM __fc_heap_status + __malloc_main_l36[0..1] FROM __fc_heap_status; nondet + __malloc_main_l50[0..1] FROM __fc_heap_status; nondet (and SELF) + __malloc_main_l50_0[0..1] FROM __fc_heap_status; nondet (and SELF) + [2] FROM __fc_heap_status; nondet + __malloc_main_l63 FROM __fc_heap_status; nondet (and SELF) + __malloc_main_l63_0 FROM __fc_heap_status; nondet (and SELF) + __malloc_main_l63_1 FROM __fc_heap_status; nondet (and SELF) + __malloc_main_l63_2 FROM __fc_heap_status; nondet (and SELF) + __malloc_main_l73 FROM __fc_heap_status; nondet (and SELF) + __malloc_main_l73_0 FROM __fc_heap_status; nondet (and SELF) + __malloc_main_l73_1 FROM __fc_heap_status; nondet (and SELF) + __malloc_main_l73_2 FROM __fc_heap_status; nondet (and SELF) + __malloc_main_l82_0 FROM __fc_heap_status; nondet (and SELF) + __malloc_main_l82_1 FROM __fc_heap_status; nondet (and SELF) + __malloc_main_l82_2[0..1] FROM __fc_heap_status; nondet (and SELF) + __malloc_main_l82_3[0..1] FROM __fc_heap_status; nondet (and SELF) + __malloc_main_l82_4[0..1] FROM __fc_heap_status; nondet (and SELF) + __malloc_main_l82_5[0..1] FROM __fc_heap_status; nondet (and SELF) + __malloc_main_l82_6[0..1] FROM __fc_heap_status; nondet (and SELF) + __malloc_main_l82_7[0..2] FROM __fc_heap_status; nondet (and SELF) + __malloc_main_l82_8[0..2] FROM __fc_heap_status; nondet (and SELF) + __malloc_main_l82_9[0..2] FROM __fc_heap_status; nondet (and SELF) + __malloc_main_l82_10[0..2] FROM __fc_heap_status; nondet (and SELF) + __malloc_main_l82_11[0..2] FROM __fc_heap_status; nondet (and SELF) + __malloc_main_l82_12[0..2] FROM __fc_heap_status; nondet (and SELF) + __malloc_main_l82_13[0..2] FROM __fc_heap_status; nondet (and SELF) + __malloc_main_l82_14[0..2] FROM __fc_heap_status; nondet (and SELF) + __malloc_main_l82_15[0..2] FROM __fc_heap_status; nondet (and SELF) + __malloc_main_l82_16[0..2] FROM __fc_heap_status; nondet (and SELF) + __malloc_main_l82_17[0..2] FROM __fc_heap_status; nondet (and SELF) + __malloc_main_l82_18[0..2] FROM __fc_heap_status; nondet (and SELF) + __malloc_main_l82_19[0..2] FROM __fc_heap_status; nondet (and SELF) + __malloc_main_l82_20[0..2] FROM __fc_heap_status; nondet (and SELF) + __malloc_main_l82_21[0..2] FROM __fc_heap_status; nondet (and SELF) + __malloc_main_l82_22[0..2] FROM __fc_heap_status; nondet (and SELF) + __malloc_main_l82_23[0..2] FROM __fc_heap_status; nondet (and SELF) + __malloc_main_l82_24[0..2] FROM __fc_heap_status; nondet (and SELF) + __malloc_main_l82_25[0..2] FROM __fc_heap_status; nondet (and SELF) + __malloc_main_l82_26[0..2] FROM __fc_heap_status; nondet (and SELF) + __malloc_main_l82_27[0..2] FROM __fc_heap_status; nondet (and SELF) + __malloc_main_l82_28[0..2] FROM __fc_heap_status; nondet (and SELF) + __malloc_main_l82_29[0..2] FROM __fc_heap_status; nondet (and SELF) + __malloc_main_l82_30[0..2] FROM __fc_heap_status; nondet (and SELF) + __malloc_main_l97[0] FROM __fc_heap_status; nondet + __malloc_main_l114[0..3] FROM __fc_heap_status; nondet + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + __fc_heap_status; i; j; p; tmp; tmp_3; k; tmp_4; size; pb; __retres; + __malloc_main_l25; __malloc_main_l36[0..1]; __malloc_main_l50[0..1]; + __malloc_main_l50_0[0..2]; __malloc_main_l63; __malloc_main_l63_0; + __malloc_main_l63_1; __malloc_main_l63_2; __malloc_main_l73; + __malloc_main_l73_0; __malloc_main_l73_1; __malloc_main_l73_2; + __malloc_main_l82_0; __malloc_main_l82_1; __malloc_main_l82_2[0..1]; + __malloc_main_l82_3[0..1]; __malloc_main_l82_4[0..1]; + __malloc_main_l82_5[0..1]; __malloc_main_l82_6[0..1]; + __malloc_main_l82_7[0..2]; __malloc_main_l82_8[0..2]; + __malloc_main_l82_9[0..2]; __malloc_main_l82_10[0..2]; + __malloc_main_l82_11[0..2]; __malloc_main_l82_12[0..2]; + __malloc_main_l82_13[0..2]; __malloc_main_l82_14[0..2]; + __malloc_main_l82_15[0..2]; __malloc_main_l82_16[0..2]; + __malloc_main_l82_17[0..2]; __malloc_main_l82_18[0..2]; + __malloc_main_l82_19[0..2]; __malloc_main_l82_20[0..2]; + __malloc_main_l82_21[0..2]; __malloc_main_l82_22[0..2]; + __malloc_main_l82_23[0..2]; __malloc_main_l82_24[0..2]; + __malloc_main_l82_25[0..2]; __malloc_main_l82_26[0..2]; + __malloc_main_l82_27[0..2]; __malloc_main_l82_28[0..2]; + __malloc_main_l82_29[0..2]; __malloc_main_l82_30[0..2]; + __malloc_main_l97[0]; __malloc_main_l114[0..3] +[inout] Inputs for function main: + __fc_heap_status; nondet; __malloc_main_l25; __malloc_main_l36[0..1]; + __malloc_main_l50_0[0..2]; __malloc_main_l63; __malloc_main_l63_0; + __malloc_main_l63_1; __malloc_main_l63_2; __malloc_main_l73; + __malloc_main_l73_0; __malloc_main_l73_1; __malloc_main_l73_2; + __malloc_main_l97[0][bits 0 to 0]; __malloc_main_l114[0][bits 0 to 0] diff --git a/tests/non-free/oracle_symblocs/big_local_array.0.err.oracle b/tests/non-free/oracle_symblocs/big_local_array.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/non-free/oracle_symblocs/big_local_array.0.res.oracle b/tests/non-free/oracle_symblocs/big_local_array.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..2d1b9a54e285a9495da7ce7c252b24dcef0c1672 --- /dev/null +++ b/tests/non-free/oracle_symblocs/big_local_array.0.res.oracle @@ -0,0 +1,153 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/non-free/big_local_array.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] Call to builtin bzero(({{ (unsigned char *)&x }},{10496})) +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + x[0].a[0] ∈ {1} + [0].a[1] ∈ {2} + [0].a[2] ∈ {3} + [0]{.a[3..49]; .b[0..4]} ∈ {0} + [0].b[5] ∈ {5} + [0].b[6] ∈ {6} + [0].b[7] ∈ {7} + {[0].b[8..31]; [1..2]; [3].a[0]} ∈ {0} + [3].a[1] ∈ {1} + [3].a[2] ∈ {2} + [3].a[3] ∈ {3} + [3]{.a[4..49]; .b[0..16]} ∈ {0} + [3].b[17] ∈ {17} + {[3].b[18..31]; [4..31]} ∈ {0} + __retres ∈ {0} +[report] Computing properties status... + +-------------------------------------------------------------------------------- +--- Properties of Function 'Frama_C_bzero' +-------------------------------------------------------------------------------- + +[ Extern ] Post-condition (file share/libc/__fc_builtin_for_normalization.i, line 32) + Unverifiable but considered Valid. +[ Extern ] Assigns (file share/libc/__fc_builtin_for_normalization.i, line 31) + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/__fc_builtin_for_normalization.i, line 31) + Unverifiable but considered Valid. +[ Valid ] Default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'main' +-------------------------------------------------------------------------------- + +[ Valid ] Post-condition for 'Frama_C_implicit_init' (file tests/non-free/big_local_array.i, line 14) at block + by Frama-C kernel. +[ Valid ] Post-condition for 'Frama_C_implicit_init' (file tests/non-free/big_local_array.i, line 14) at block + by Frama-C kernel. +[ Valid ] Post-condition for 'Frama_C_implicit_init' (file tests/non-free/big_local_array.i, line 14) at block + by Frama-C kernel. +[ Valid ] Post-condition for 'Frama_C_implicit_init' (file tests/non-free/big_local_array.i, line 13) at block + by Frama-C kernel. +[ Valid ] Post-condition for 'Frama_C_implicit_init' (file tests/non-free/big_local_array.i, line 14) at block + by Frama-C kernel. +[ Valid ] Post-condition for 'Frama_C_implicit_init' (file tests/non-free/big_local_array.i, line 14) at block + by Frama-C kernel. +[ Valid ] Post-condition for 'Frama_C_implicit_init' (file tests/non-free/big_local_array.i, line 14) at block + by Frama-C kernel. +[ Valid ] Post-condition for 'Frama_C_implicit_init' (file tests/non-free/big_local_array.i, line 13) at block + by Frama-C kernel. +[ Valid ] Post-condition for 'Frama_C_implicit_init' (file tests/non-free/big_local_array.i, line 15) at block + by Frama-C kernel. +[ Valid ] Post-condition for 'Frama_C_implicit_init' (file tests/non-free/big_local_array.i, line 15) at block + by Frama-C kernel. +[ Valid ] Post-condition for 'Frama_C_implicit_init' (file tests/non-free/big_local_array.i, line 15) at block + by Frama-C kernel. +[ Valid ] Post-condition for 'Frama_C_implicit_init' (file tests/non-free/big_local_array.i, line 15) at block + by Frama-C kernel. +[ Valid ] Post-condition for 'Frama_C_implicit_init' (file tests/non-free/big_local_array.i, line 13) at block + by Frama-C kernel. +[ Valid ] Post-condition for 'Frama_C_implicit_init' (file tests/non-free/big_local_array.i, line 15) at block + by Frama-C kernel. +[ Valid ] Post-condition for 'Frama_C_implicit_init' (file tests/non-free/big_local_array.i, line 13) at block + by Frama-C kernel. +[ Valid ] Post-condition for 'Frama_C_implicit_init' (file tests/non-free/big_local_array.i, line 13) at block + by Frama-C kernel. +[ Valid ] Assigns for 'Frama_C_implicit_init' (file tests/non-free/big_local_array.i, line 13) at block + by Frama-C kernel. +[ Valid ] Behavior 'Frama_C_implicit_init' at block + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Status Report Summary +-------------------------------------------------------------------------------- + 19 Completely validated + 3 Considered valid + 22 Total +-------------------------------------------------------------------------------- +/* Generated by Frama-C */ +struct S { + int a[50] ; + int b[32] ; +}; +/*@ requires \valid(dest+(0 .. n-1)); + ensures ∀ ℤ i; 0 ≤ i < \old(n) ⇒ *(\old(dest)+i) ≡ 0; + assigns *(dest+(0 .. n-1)); + assigns *(dest+(0 .. n-1)) \from \nothing; + */ +extern __attribute__((__FC_BUILTIN__)) void Frama_C_bzero(unsigned char *dest, + unsigned long n); + +int main(void) +{ + int __retres; + struct S x[32]; + /*@ behavior Frama_C_implicit_init: + ensures x[0].a[0] ≡ 1; + ensures x[0].a[1] ≡ 2; + ensures x[0].a[2] ≡ 3; + ensures ∀ ℤ __i; 3 ≤ __i ≤ 49 ⇒ x[0].a[__i] ≡ 0; + ensures x[0].b[5] ≡ 5; + ensures x[0].b[6] ≡ 6; + ensures x[0].b[7] ≡ 7; + ensures + ∀ ℤ __i; + 0 ≤ __i ≤ 4 ∧ 8 ≤ __i ≤ 31 ⇒ x[0].b[__i] ≡ 0; + ensures x[3].a[0] ≡ 0; + ensures x[3].a[1] ≡ 1; + ensures x[3].a[2] ≡ 2; + ensures x[3].a[3] ≡ 3; + ensures ∀ ℤ __i; 4 ≤ __i ≤ 49 ⇒ x[3].a[__i] ≡ 0; + ensures x[3].b[17] ≡ 17; + ensures + ∀ ℤ __i; + 0 ≤ __i ≤ 16 ∧ 18 ≤ __i ≤ 31 ⇒ x[3].b[__i] ≡ 0; + ensures + ∀ ℤ __i; + 1 ≤ __i ≤ 2 ∧ 4 ≤ __i ≤ 31 ⇒ + (∀ ℤ __i0; 0 ≤ __i0 < 50 ⇒ x[__i].a[__i0] ≡ 0) ∧ + (∀ ℤ __i0; 0 ≤ __i0 < 32 ⇒ x[__i].b[__i0] ≡ 0); + assigns x[0 .. 32-1]; + */ + { + Frama_C_bzero((unsigned char *)(x),(unsigned long)sizeof(struct S [32])); + x[0].a[0] = 1; + x[0].a[1] = 2; + x[0].a[2] = 3; + x[0].b[5] = 5; + x[0].b[6] = 6; + x[0].b[7] = 7; + x[3].a[0] = 0; + x[3].a[1] = 1; + x[3].a[2] = 2; + x[3].a[3] = 3; + x[3].b[17] = 17; + } + __retres = 0; + return __retres; +} + + diff --git a/tests/non-free/oracle_symblocs/big_local_array.1.err.oracle b/tests/non-free/oracle_symblocs/big_local_array.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/non-free/oracle_symblocs/big_local_array.1.res.oracle b/tests/non-free/oracle_symblocs/big_local_array.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..6118de9c521eac8fd517ea8e63ebc9ab76984ee9 --- /dev/null +++ b/tests/non-free/oracle_symblocs/big_local_array.1.res.oracle @@ -0,0 +1,130 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/non-free/big_local_array.i (no preprocessing) +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/non-free/big_local_array.i (no preprocessing) +[report] Computing properties status... + +-------------------------------------------------------------------------------- +--- Properties of Function 'Frama_C_bzero' +-------------------------------------------------------------------------------- + +[ Extern ] Post-condition (file share/libc/__fc_builtin_for_normalization.i, line 32) + Unverifiable but considered Valid. +[ Extern ] Assigns (file share/libc/__fc_builtin_for_normalization.i, line 31) + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/__fc_builtin_for_normalization.i, line 31) + Unverifiable but considered Valid. +[ Valid ] Default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'main' +-------------------------------------------------------------------------------- + +[ Valid ] Post-condition for 'Frama_C_implicit_init' (file tests/non-free/big_local_array.i, line 14) at block + by Frama-C kernel. +[ Valid ] Post-condition for 'Frama_C_implicit_init' (file tests/non-free/big_local_array.i, line 14) at block + by Frama-C kernel. +[ Valid ] Post-condition for 'Frama_C_implicit_init' (file tests/non-free/big_local_array.i, line 14) at block + by Frama-C kernel. +[ Valid ] Post-condition for 'Frama_C_implicit_init' (file tests/non-free/big_local_array.i, line 13) at block + by Frama-C kernel. +[ Valid ] Post-condition for 'Frama_C_implicit_init' (file tests/non-free/big_local_array.i, line 14) at block + by Frama-C kernel. +[ Valid ] Post-condition for 'Frama_C_implicit_init' (file tests/non-free/big_local_array.i, line 14) at block + by Frama-C kernel. +[ Valid ] Post-condition for 'Frama_C_implicit_init' (file tests/non-free/big_local_array.i, line 14) at block + by Frama-C kernel. +[ Valid ] Post-condition for 'Frama_C_implicit_init' (file tests/non-free/big_local_array.i, line 13) at block + by Frama-C kernel. +[ Valid ] Post-condition for 'Frama_C_implicit_init' (file tests/non-free/big_local_array.i, line 15) at block + by Frama-C kernel. +[ Valid ] Post-condition for 'Frama_C_implicit_init' (file tests/non-free/big_local_array.i, line 15) at block + by Frama-C kernel. +[ Valid ] Post-condition for 'Frama_C_implicit_init' (file tests/non-free/big_local_array.i, line 15) at block + by Frama-C kernel. +[ Valid ] Post-condition for 'Frama_C_implicit_init' (file tests/non-free/big_local_array.i, line 15) at block + by Frama-C kernel. +[ Valid ] Post-condition for 'Frama_C_implicit_init' (file tests/non-free/big_local_array.i, line 13) at block + by Frama-C kernel. +[ Valid ] Post-condition for 'Frama_C_implicit_init' (file tests/non-free/big_local_array.i, line 15) at block + by Frama-C kernel. +[ Valid ] Post-condition for 'Frama_C_implicit_init' (file tests/non-free/big_local_array.i, line 13) at block + by Frama-C kernel. +[ Valid ] Post-condition for 'Frama_C_implicit_init' (file tests/non-free/big_local_array.i, line 13) at block + by Frama-C kernel. +[ Valid ] Assigns for 'Frama_C_implicit_init' (file tests/non-free/big_local_array.i, line 13) at block + by Frama-C kernel. +[ Valid ] Behavior 'Frama_C_implicit_init' at block + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Status Report Summary +-------------------------------------------------------------------------------- + 19 Completely validated + 3 Considered valid + 22 Total +-------------------------------------------------------------------------------- +/* Generated by Frama-C */ +struct S { + int a[50] ; + int b[32] ; +}; +/*@ requires \valid(dest+(0 .. n-1)); + ensures ∀ ℤ i; 0 ≤ i < \old(n) ⇒ *(\old(dest)+i) ≡ 0; + assigns *(dest+(0 .. n-1)); + assigns *(dest+(0 .. n-1)) \from \nothing; + */ +extern __attribute__((__FC_BUILTIN__)) void Frama_C_bzero(unsigned char *dest, + unsigned long n); + +int main(void) +{ + int __retres; + struct S x[32]; + /*@ behavior Frama_C_implicit_init: + ensures x[0].a[0] ≡ 1; + ensures x[0].a[1] ≡ 2; + ensures x[0].a[2] ≡ 3; + ensures ∀ ℤ __i; 3 ≤ __i ≤ 49 ⇒ x[0].a[__i] ≡ 0; + ensures x[0].b[5] ≡ 5; + ensures x[0].b[6] ≡ 6; + ensures x[0].b[7] ≡ 7; + ensures + ∀ ℤ __i; + 0 ≤ __i ≤ 4 ∧ 8 ≤ __i ≤ 31 ⇒ x[0].b[__i] ≡ 0; + ensures x[3].a[0] ≡ 0; + ensures x[3].a[1] ≡ 1; + ensures x[3].a[2] ≡ 2; + ensures x[3].a[3] ≡ 3; + ensures ∀ ℤ __i; 4 ≤ __i ≤ 49 ⇒ x[3].a[__i] ≡ 0; + ensures x[3].b[17] ≡ 17; + ensures + ∀ ℤ __i; + 0 ≤ __i ≤ 16 ∧ 18 ≤ __i ≤ 31 ⇒ x[3].b[__i] ≡ 0; + ensures + ∀ ℤ __i; + 1 ≤ __i ≤ 2 ∧ 4 ≤ __i ≤ 31 ⇒ + (∀ ℤ __i0; 0 ≤ __i0 < 50 ⇒ x[__i].a[__i0] ≡ 0) ∧ + (∀ ℤ __i0; 0 ≤ __i0 < 32 ⇒ x[__i].b[__i0] ≡ 0); + assigns x[0 .. 32-1]; + */ + { + Frama_C_bzero((unsigned char *)(x),(unsigned long)sizeof(struct S [32])); + x[0].a[0] = 1; + x[0].a[1] = 2; + x[0].a[2] = 3; + x[0].b[5] = 5; + x[0].b[6] = 6; + x[0].b[7] = 7; + x[3].a[0] = 0; + x[3].a[1] = 1; + x[3].a[2] = 2; + x[3].a[3] = 3; + x[3].b[17] = 17; + } + __retres = 0; + return __retres; +} + + diff --git a/tests/non-free/oracle_symblocs/big_local_array.2.err.oracle b/tests/non-free/oracle_symblocs/big_local_array.2.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/non-free/oracle_symblocs/big_local_array.2.res.oracle b/tests/non-free/oracle_symblocs/big_local_array.2.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..837256d7836c82e30d13d60c61d2a79cf727d383 --- /dev/null +++ b/tests/non-free/oracle_symblocs/big_local_array.2.res.oracle @@ -0,0 +1,104 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/non-free/big_local_array.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +tests/non-free/big_local_array.i:13:[value] Call to builtin copy_block(({{ (unsigned char *)&x }},{4},{50})) +tests/non-free/big_local_array.i:13:[value] Call to builtin copy_block(({{ (unsigned char *)&x[0].b }},{4},{32})) +tests/non-free/big_local_array.i:13:[value] Call to builtin copy_block(({{ (unsigned char *)&x }},{328},{32})) +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + x[0].a[0] ∈ {1} + [0].a[1] ∈ {2} + [0].a[2] ∈ {3} + [0]{.a[3..49]; .b[0..4]} ∈ {0} + [0].b[5] ∈ {5} + [0].b[6] ∈ {6} + [0].b[7] ∈ {7} + {[0].b[8..31]; [1..2]; [3].a[0]} ∈ {0} + [3].a[1] ∈ {1} + [3].a[2] ∈ {2} + [3].a[3] ∈ {3} + [3]{.a[4..49]; .b[0..16]} ∈ {0} + [3].b[17] ∈ {17} + {[3].b[18..31]; [4..31]} ∈ {0} + __retres ∈ {0} +/* Generated by Frama-C */ +struct S { + int a[50] ; + int b[32] ; +}; +/*@ requires \valid(dest+(0 .. size*n-1)); + requires n ≥ 1; + ensures + ∀ ℤ i, ℤ j; + 0 ≤ i < \old(size) ∧ 1 ≤ j < \old(n) ⇒ + *(\old(dest)+(i+j*\old(size))) ≡ *(\old(dest)+i); + assigns *(dest+(size .. size*n-1)); + assigns *(dest+(size .. size*n-1)) \from *(dest+(0 .. size-1)); + */ +extern __attribute__((__FC_BUILTIN__)) void Frama_C_copy_block(unsigned char *dest, + unsigned long size, + unsigned long n); + +int main(void) +{ + int __retres; + struct S x[32]; + /*@ behavior Frama_C_implicit_init: + ensures x[0].a[0] ≡ 1; + ensures x[0].a[1] ≡ 2; + ensures x[0].a[2] ≡ 3; + ensures ∀ ℤ __i; 3 ≤ __i ≤ 49 ⇒ x[0].a[__i] ≡ 0; + ensures x[0].b[5] ≡ 5; + ensures x[0].b[6] ≡ 6; + ensures x[0].b[7] ≡ 7; + ensures + ∀ ℤ __i; + 0 ≤ __i ≤ 4 ∧ 8 ≤ __i ≤ 31 ⇒ x[0].b[__i] ≡ 0; + ensures x[3].a[0] ≡ 0; + ensures x[3].a[1] ≡ 1; + ensures x[3].a[2] ≡ 2; + ensures x[3].a[3] ≡ 3; + ensures ∀ ℤ __i; 4 ≤ __i ≤ 49 ⇒ x[3].a[__i] ≡ 0; + ensures x[3].b[17] ≡ 17; + ensures + ∀ ℤ __i; + 0 ≤ __i ≤ 16 ∧ 18 ≤ __i ≤ 31 ⇒ x[3].b[__i] ≡ 0; + ensures + ∀ ℤ __i; + 1 ≤ __i ≤ 2 ∧ 4 ≤ __i ≤ 31 ⇒ + (∀ ℤ __i0; 0 ≤ __i0 < 50 ⇒ x[__i].a[__i0] ≡ 0) ∧ + (∀ ℤ __i0; 0 ≤ __i0 < 32 ⇒ x[__i].b[__i0] ≡ 0); + assigns x[0 .. 32-1]; + */ + { + x[0].a[0] = 0; + Frama_C_copy_block((unsigned char *)(x[0].a),(unsigned long)sizeof(int), + 50UL); + x[0].b[0] = 0; + Frama_C_copy_block((unsigned char *)(x[0].b),(unsigned long)sizeof(int), + 32UL); + Frama_C_copy_block((unsigned char *)(x),(unsigned long)sizeof(struct S), + 32UL); + x[0].a[0] = 1; + x[0].a[1] = 2; + x[0].a[2] = 3; + x[0].b[5] = 5; + x[0].b[6] = 6; + x[0].b[7] = 7; + x[3].a[0] = 0; + x[3].a[1] = 1; + x[3].a[2] = 2; + x[3].a[3] = 3; + x[3].b[17] = 17; + } + __retres = 0; + return __retres; +} + + diff --git a/tests/non-free/oracle_symblocs/fam.err.oracle b/tests/non-free/oracle_symblocs/fam.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/non-free/oracle_symblocs/fam.res.oracle b/tests/non-free/oracle_symblocs/fam.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..b4e61772eb103afb0fc602ffa19e7608e347624c --- /dev/null +++ b/tests/non-free/oracle_symblocs/fam.res.oracle @@ -0,0 +1,37 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/non-free/fam.i (no preprocessing) +tests/non-free/fam.i:14:[kernel] warning: Calling undeclared function Frama_C_memcpy. Old style K&R code? +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] Called Frama_C_show_each({{ &buf + {11} }}) +tests/non-free/fam.i:14:[value] Call to builtin memcpy(({{ &buf[11] }},{{ &value[0] }},{2})) +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +tests/non-free/fam.i:14:[kernel] warning: Neither code nor specification for function Frama_C_memcpy, generating default assigns from the prototype +[value:final-states] Values at end of function main: + buf[0] ∈ {42} + [1..9] ∈ UNINITIALIZED + [10] ∈ {5} + [11] ∈ {15} + [12] ∈ {20} + [13..99] ∈ UNINITIALIZED + value[0] ∈ {15} + [1] ∈ {20} + option ∈ {{ (TcpOption *)&buf[10] }} +[from] Computing for function main +[from] Computing for function Frama_C_memcpy <-main +[from] Done for function Frama_C_memcpy +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + buf{[0]; [10..99]}; value[0..1]; option +[inout] Inputs for function main: + \nothing diff --git a/tests/non-free/oracle_symblocs/free.err.oracle b/tests/non-free/oracle_symblocs/free.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/non-free/oracle_symblocs/free.res.oracle b/tests/non-free/oracle_symblocs/free.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..344f97684c2b8bb62a54e04381582bdb58ea5bcd --- /dev/null +++ b/tests/non-free/oracle_symblocs/free.res.oracle @@ -0,0 +1,73 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/non-free/free.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +tests/non-free/free.i:5:[value] allocating variable __malloc_main_l5 +tests/non-free/free.i:7:[value] allocating variable __malloc_main_l7 +[value] DUMPING STATE of file tests/non-free/free.i line 10 + foo ∈ [--..--] + p ∈ {{ &__malloc_main_l5[0] }} + q ∈ {{ &__malloc_main_l7[0] }} + r ∈ {{ &__malloc_main_l5[0] ; &__malloc_main_l7[0] }} + tmp_1 ∈ {{ &__malloc_main_l5[0] ; &__malloc_main_l7[0] }} + u ∈ UNINITIALIZED + t ∈ UNINITIALIZED + s ∈ UNINITIALIZED + __malloc_main_l5[0] ∈ UNINITIALIZED + [1] ∈ {1} + [2..9] ∈ UNINITIALIZED + __malloc_main_l7[0..1] ∈ UNINITIALIZED + [2] ∈ {2} + [3..9] ∈ UNINITIALIZED + =END OF DUMP== +tests/non-free/free.i:11:[value:malloc] weak free on bases: {__malloc_main_l5, __malloc_main_l7} +tests/non-free/free.i:13:[value] allocating variable __malloc_main_l13 +tests/non-free/free.i:15:[value:malloc] strong free on bases: {__malloc_main_l13} +tests/non-free/free.i:18:[value:malloc] strong free on bases: {} +tests/non-free/free.i:20:[value] allocating variable __malloc_main_l20 +tests/non-free/free.i:23:[value:malloc] weak free on bases: {__malloc_main_l20} +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +tests/non-free/free.i:5:[kernel] warning: Neither code nor specification for function Frama_C_alloc_size, generating default assigns from the prototype +tests/non-free/free.i:11:[kernel] warning: Neither code nor specification for function Frama_C_free, generating default assigns from the prototype +[value:final-states] Values at end of function main: + p ∈ {{ &__malloc_main_l5[0] }} or ESCAPINGADDR + q ∈ {{ &__malloc_main_l7[0] }} or ESCAPINGADDR + r ∈ {{ &__malloc_main_l5[0] ; &__malloc_main_l7[0] }} or ESCAPINGADDR + u ∈ ESCAPINGADDR + t ∈ {0} + s ∈ {{ NULL ; &__malloc_main_l20[0] }} or ESCAPINGADDR + __malloc_main_l5[0] ∈ UNINITIALIZED + [1] ∈ {1} + [2..9] ∈ UNINITIALIZED + __malloc_main_l7[0..1] ∈ UNINITIALIZED + [2] ∈ {2} + [3..9] ∈ UNINITIALIZED + __malloc_main_l20[0..3] ∈ UNINITIALIZED + [4] ∈ {4} + [5..9] ∈ UNINITIALIZED +[from] Computing for function main +[from] Computing for function Frama_C_alloc_size <-main +[from] Done for function Frama_C_alloc_size +[from] Computing for function Frama_C_dump_each <-main +[from] Done for function Frama_C_dump_each +[from] Computing for function Frama_C_free <-main +[from] Done for function Frama_C_free +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + __malloc_main_l5[1] FROM \nothing + __malloc_main_l7[2] FROM \nothing + __malloc_main_l13[3] FROM \nothing + __malloc_main_l20[4] FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + p; q; r; tmp_1; u; t; s; __malloc_main_l5[1]; __malloc_main_l7[2]; + __malloc_main_l13[3]; __malloc_main_l20[4] +[inout] Inputs for function main: + \nothing diff --git a/tests/non-free/oracle_symblocs/from_result.err.oracle b/tests/non-free/oracle_symblocs/from_result.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/non-free/oracle_symblocs/from_result.res.oracle b/tests/non-free/oracle_symblocs/from_result.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..36a5531a9c1a3ca8b875d25eb3e169cd391a8d74 --- /dev/null +++ b/tests/non-free/oracle_symblocs/from_result.res.oracle @@ -0,0 +1,88 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/non-free/from_result.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + __fc_random_counter ∈ {0} + __fc_rand_max ∈ {32767} + __fc_heap_status ∈ [--..--] + Frama_C_entropy_source ∈ [--..--] +[value] computing for function bar <- main. + Called from tests/non-free/from_result.c:32. +[value] computing for function malloc <- bar <- main. + Called from tests/non-free/from_result.c:18. +share/libc/stdlib.c:39:[value] allocating variable __malloc_malloc_l39 +share/libc/stdlib.h:177:[value] warning: function malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.) +share/libc/stdlib.h:182:[value] warning: function malloc, behavior no_allocation: postcondition got status invalid. (Behavior may be inactive, no reduction performed.) +[value] Recording results for malloc +[value] Done for function malloc +[value] Recording results for bar +[value] Done for function bar +[value] computing for function bar <- main. + Called from tests/non-free/from_result.c:33. +[value] computing for function malloc <- bar <- main. + Called from tests/non-free/from_result.c:18. +share/libc/stdlib.c:39:[value] allocating variable __malloc_malloc_l39_0 +[value] Recording results for malloc +[value] Done for function malloc +[value] Recording results for bar +[value] Done for function bar +[value] computing for function create_t <- main. + Called from tests/non-free/from_result.c:34. +[value] using specification for function create_t +[value] Done for function create_t +[value] computing for function create_t1 <- main. + Called from tests/non-free/from_result.c:35. +[value] using specification for function create_t1 +[value] Done for function create_t1 +[value] computing for function change_t <- main. + Called from tests/non-free/from_result.c:36. +[value] Recording results for change_t +[value] Done for function change_t +[value] computing for function foo <- main. + Called from tests/non-free/from_result.c:37. +[value] using specification for function foo +tests/non-free/from_result.c:29:[value] warning: no 'assigns \result \from ...' clause specified for function foo +[value] Done for function foo +[value] Recording results for main +[value] done for function main +[from] Computing for function change_t +[from] Done for function change_t +[from] Computing for function malloc +[from] Computing for function Frama_C_alloc_size <-malloc +share/libc/stdlib.c:39:[kernel] warning: Neither code nor specification for function Frama_C_alloc_size, generating default assigns from the prototype +[from] Done for function Frama_C_alloc_size +[from] Done for function malloc +[from] Computing for function bar +[from] Done for function bar +[from] Computing for function main +[from] Computing for function create_t <-main +[from] Done for function create_t +[from] Computing for function create_t1 <-main +[from] Done for function create_t1 +[from] Computing for function foo <-main +[from] Done for function foo +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function change_t: + v.a FROM t0; x + .b FROM t0; y +[from] Function create_t: + \result FROM x; y +[from] Function create_t1: + \result FROM x; y +[from] Function foo: + \result FROM ANYTHING(origin:Unknown) +[from] Function malloc: + \result FROM size +[from] Function bar: + __malloc_malloc_l39[0..3] FROM x (and SELF) + __malloc_malloc_l39_0[0..3] FROM x (and SELF) + \result FROM \nothing +[from] Function main: + __malloc_malloc_l39[0..3] FROM \nothing (and SELF) + __malloc_malloc_l39_0[0..3] FROM \nothing (and SELF) + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== diff --git a/tests/non-free/oracle_symblocs/gcc_zero_length_array.err.oracle b/tests/non-free/oracle_symblocs/gcc_zero_length_array.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/non-free/oracle_symblocs/gcc_zero_length_array.res.oracle b/tests/non-free/oracle_symblocs/gcc_zero_length_array.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..b2019ae1cf425db528541a9e86eadb0169324151 --- /dev/null +++ b/tests/non-free/oracle_symblocs/gcc_zero_length_array.res.oracle @@ -0,0 +1,73 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/non-free/gcc_zero_length_array.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + __fc_random_counter ∈ {0} + __fc_rand_max ∈ {32767} + __fc_heap_status ∈ [--..--] +[value] computing for function make_fam <- main. + Called from tests/non-free/gcc_zero_length_array.c:24. +tests/non-free/gcc_zero_length_array.c:15:[value] allocating variable __malloc_make_fam_l15 +tests/non-free/gcc_zero_length_array.c:17:[value] entering loop for the first time +[value] Recording results for make_fam +[value] Done for function make_fam +tests/non-free/gcc_zero_length_array.c:26:[value:malloc] strong free on bases: {__malloc_make_fam_l15} +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function make_fam: + __fc_heap_status ∈ [--..--] + i ∈ {11} + p ∈ {{ &__malloc_make_fam_l15[0] }} + __malloc_make_fam_l15[0].len ∈ {11} + [1] ∈ {0} + [2].len ∈ {1} + [3].len ∈ {2} + [4].len ∈ {3} + [5].len ∈ {4} + [6].len ∈ {5} + [7].len ∈ {6} + [8].len ∈ {7} + [9].len ∈ {8} + [10].len ∈ {9} + [11].len ∈ {10} +[value:final-states] Values at end of function main: + __fc_heap_status ∈ [--..--] + pfam ∈ ESCAPINGADDR + res ∈ {10} +[from] Computing for function make_fam +[from] Computing for function malloc <-make_fam +[from] Done for function malloc +[from] Done for function make_fam +[from] Computing for function main +[from] Computing for function free <-main +[from] Done for function free +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function free: + __fc_heap_status FROM __fc_heap_status (and SELF) +[from] Function malloc: + __fc_heap_status FROM __fc_heap_status; size (and SELF) + \result FROM __fc_heap_status; size +[from] Function make_fam: + __fc_heap_status FROM __fc_heap_status; len (and SELF) + __malloc_make_fam_l15[0] FROM __fc_heap_status; len + [1..11] FROM __fc_heap_status; len (and SELF) + \result FROM __fc_heap_status; len +[from] Function main: + __fc_heap_status FROM __fc_heap_status (and SELF) + __malloc_make_fam_l15[0] FROM __fc_heap_status + [1..11] FROM __fc_heap_status (and SELF) + \result FROM __fc_heap_status; __malloc_make_fam_l15[11] +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function make_fam: + __fc_heap_status; i; p; __malloc_make_fam_l15[0..11] +[inout] Inputs for function make_fam: + __fc_heap_status +[inout] Out (internal) for function main: + __fc_heap_status; pfam; res; __malloc_make_fam_l15[0..11] +[inout] Inputs for function main: + __fc_heap_status; __malloc_make_fam_l15[11] diff --git a/tests/non-free/oracle_symblocs/imprecise-malloc-free.err.oracle b/tests/non-free/oracle_symblocs/imprecise-malloc-free.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/non-free/oracle_symblocs/imprecise-malloc-free.res.oracle b/tests/non-free/oracle_symblocs/imprecise-malloc-free.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..64033e6369b3069e7ee22a5dfb6d7b418af033a0 --- /dev/null +++ b/tests/non-free/oracle_symblocs/imprecise-malloc-free.res.oracle @@ -0,0 +1,88 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/non-free/imprecise-malloc-free.i (no preprocessing) +tests/non-free/imprecise-malloc-free.i:25:[kernel] warning: Calling undeclared function Frama_C_free. Old style K&R code? +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + i ∈ [--..--] +tests/non-free/imprecise-malloc-free.i:13:[value] warning: signed overflow. assert -2147483648 ≤ i+(int)((int)(&size2)>>1); +tests/non-free/imprecise-malloc-free.i:13:[value] warning: signed overflow. assert i+(int)((int)(&size2)>>1) ≤ 2147483647; +tests/non-free/imprecise-malloc-free.i:13:[value] Assigning imprecise value to size2. + The imprecision originates from Arithmetic + {tests/non-free/imprecise-malloc-free.i:13} +tests/non-free/imprecise-malloc-free.i:14:[value] allocating variable __malloc_main_l14 +tests/non-free/imprecise-malloc-free.i:15:[value] allocating variable __malloc_main_l15 +tests/non-free/imprecise-malloc-free.i:16:[value] allocating variable __malloc_main_l16 +[value] Called Frama_C_show_each({{ &__malloc_main_l14 }}, + {{ &__malloc_main_l15 }}, + {{ &__malloc_main_l16 }}) +[value] Called Frama_C_show_each({{ garbled mix of &{__malloc_main_l14} + (origin: Arithmetic + {tests/non-free/imprecise-malloc-free.i:19}) }}) +tests/non-free/imprecise-malloc-free.i:21:[value] warning: out of bounds write. assert \valid(p); +tests/non-free/imprecise-malloc-free.i:22:[value] warning: out of bounds write. assert \valid(q); +tests/non-free/imprecise-malloc-free.i:23:[value] warning: out of bounds write. assert \valid(r); +tests/non-free/imprecise-malloc-free.i:25:[value] warning: Wrong free: assert(pass a freeable address) +tests/non-free/imprecise-malloc-free.i:25:[value:malloc] weak free on bases: {__malloc_main_l14} +tests/non-free/imprecise-malloc-free.i:26:[value] warning: Wrong free: assert(pass a freeable address) +tests/non-free/imprecise-malloc-free.i:26:[value:malloc] weak free on bases: {__malloc_main_l15, __malloc_main_l16} +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +tests/non-free/imprecise-malloc-free.i:14:[kernel] warning: No code nor implicit assigns clause for function Frama_C_alloc_by_stack, generating default assigns from the prototype +tests/non-free/imprecise-malloc-free.i:25:[kernel] warning: Neither code nor specification for function Frama_C_free, generating default assigns from the prototype +[value:final-states] Values at end of function main: + size1 ∈ {{ &size1 + [-8589934592..8589934588],0%4 }} + size2 ∈ + {{ garbled mix of &{size2} + (origin: Arithmetic {tests/non-free/imprecise-malloc-free.i:13}) }} + p ∈ {{ &__malloc_main_l14[0] }} or ESCAPINGADDR + q ∈ {{ &__malloc_main_l15[0] }} or ESCAPINGADDR + r ∈ {{ &__malloc_main_l16[0] }} or ESCAPINGADDR + __malloc_main_l14[0] ∈ {{ (int)&__malloc_main_l14[1] }} or ESCAPINGADDR + [1..1073741823] ∈ UNINITIALIZED + __malloc_main_l15[0] ∈ {{ (int)&__malloc_main_l15[2] }} or ESCAPINGADDR + [1..1073741823] ∈ UNINITIALIZED + __malloc_main_l16[0] ∈ {{ (int)&__malloc_main_l16[3] }} or ESCAPINGADDR + [1..1073741823] ∈ UNINITIALIZED +[from] Computing for function main +[from] Computing for function Frama_C_alloc_by_stack <-main +[from] Done for function Frama_C_alloc_by_stack +[from] Computing for function Frama_C_free <-main +[from] Done for function Frama_C_free +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + __malloc_main_l14[0] + FROM __malloc_main_l14[1..1073741823]; + __malloc_main_l15[1..1073741823]; + __malloc_main_l16[1..1073741823] + [1..1073741823] + FROM __malloc_main_l14[1..1073741823]; + __malloc_main_l15[1..1073741823]; + __malloc_main_l16[1..1073741823] (and SELF) + __malloc_main_l15[0] + FROM __malloc_main_l14[1..1073741823]; + __malloc_main_l15[1..1073741823]; + __malloc_main_l16[1..1073741823] + [1..1073741823] + FROM __malloc_main_l14[1..1073741823]; + __malloc_main_l15[1..1073741823]; + __malloc_main_l16[1..1073741823] (and SELF) + __malloc_main_l16[0] + FROM __malloc_main_l14[1..1073741823]; + __malloc_main_l15[1..1073741823]; + __malloc_main_l16[1..1073741823] + [1..1073741823] + FROM __malloc_main_l14[1..1073741823]; + __malloc_main_l15[1..1073741823]; + __malloc_main_l16[1..1073741823] (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + size1; size2; p; q; r; __malloc_main_l14[0..1073741823]; + __malloc_main_l15[0..1073741823]; __malloc_main_l16[0..1073741823] +[inout] Inputs for function main: + i; __malloc_main_l14[0..1073741823]; __malloc_main_l15[0..1073741823]; + __malloc_main_l16[0..1073741823] diff --git a/tests/non-free/oracle_symblocs/imprecise.err.oracle b/tests/non-free/oracle_symblocs/imprecise.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/non-free/oracle_symblocs/imprecise.res.oracle b/tests/non-free/oracle_symblocs/imprecise.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e784640a7f968d243b1d02051afe942f83614156 --- /dev/null +++ b/tests/non-free/oracle_symblocs/imprecise.res.oracle @@ -0,0 +1,1264 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/non-free/imprecise.c (with preprocessing) +tests/non-free/imprecise.c:77:[kernel] warning: Calling undeclared function gm_f2. Old style K&R code? +[value] Analyzing a complete application starting at main +[value] Computing initial state +tests/non-free/imprecise.c:27:[value] warning: during initialization of variable 'v1', size of type 'struct s' cannot be + computed (abstract type 'struct s') +tests/non-free/imprecise.c:27:[kernel] imprecise size for variable v1 (abstract type 'struct s') +tests/non-free/imprecise.c:27:[value] warning: during initialization of variable 'v2', size of type 'struct s' cannot be + computed (abstract type 'struct s') +tests/non-free/imprecise.c:27:[kernel] imprecise size for variable v2 (abstract type 'struct s') +tests/non-free/imprecise.c:28:[value] warning: during initialization of variable 'v3', size of type 'struct u' cannot be + computed (abstract type 'struct u') +tests/non-free/imprecise.c:28:[kernel] imprecise size for variable v3 (abstract type 'struct u') +tests/non-free/imprecise.c:28:[value] warning: during initialization of variable 'v5', size of type 'struct u' cannot be + computed (abstract type 'struct u') +tests/non-free/imprecise.c:28:[kernel] imprecise size for variable v5 (abstract type 'struct u') +tests/non-free/imprecise.c:83:[value] warning: during initialization of variable 's1', size of type 'struct s' cannot be + computed (abstract type 'struct s') +tests/non-free/imprecise.c:83:[kernel] imprecise size for variable s1 (abstract type 'struct s') +tests/non-free/imprecise.c:83:[value] warning: during initialization of variable 's2', size of type 'struct s' cannot be + computed (abstract type 'struct s') +tests/non-free/imprecise.c:83:[kernel] imprecise size for variable s2 (abstract type 'struct s') +[value] Initial state computed +[value:initial-state] Values of globals at initialization + NULL[rbits 800 to 1607] ∈ [--..--] + v ∈ [--..--] + addr ∈ [--..--] + v1.[bits 0 to ..] ∈ {0} or UNINITIALIZED + v2.[bits 0 to ..] ∈ {0} or UNINITIALIZED + v3.[bits 0 to ..] ∈ {0} or UNINITIALIZED + v5.[bits 0 to ..] ∈ {0} or UNINITIALIZED + t[0..9] ∈ {0} + p_gm_null ∈ {0} + s1.[bits 0 to ..] ∈ {0} or UNINITIALIZED + s2.[bits 0 to ..] ∈ {0} or UNINITIALIZED +[value] computing for function invalid_assigns_imprecise <- main. + Called from tests/non-free/imprecise.c:143. +[value] computing for function f <- invalid_assigns_imprecise <- main. + Called from tests/non-free/imprecise.c:11. +[value] using specification for function f +[value] Done for function f +[value] Recording results for invalid_assigns_imprecise +[from] Computing for function invalid_assigns_imprecise +[from] Done for function invalid_assigns_imprecise +[value] Done for function invalid_assigns_imprecise +[value] computing for function write_garbled <- main. + Called from tests/non-free/imprecise.c:144. +[value] Call to builtin bzero(({{ (unsigned char *)&k }},{20})) +tests/non-free/imprecise.c:19:[value] Assigning imprecise value to p. + The imprecision originates from Arithmetic {tests/non-free/imprecise.c:19} +tests/non-free/imprecise.c:20:[value] warning: out of bounds write. assert \valid(p); +[value] DUMPING STATE of file tests/non-free/imprecise.c line 21 + NULL[rbits 800 to 1607] ∈ [--..--] + i ∈ {1} + j ∈ {1; 2} + k[0..4] ∈ [--..--] + p ∈ {{ NULL + [100..197] ; &j ; &k + [0..16] }} + v ∈ [--..--] + addr ∈ [--..--] + v1.[bits 0 to ..] ∈ {0} or UNINITIALIZED + v2.[bits 0 to ..] ∈ {0} or UNINITIALIZED + v3.[bits 0 to ..] ∈ {0} or UNINITIALIZED + v5.[bits 0 to ..] ∈ {0} or UNINITIALIZED + t[0..9] ∈ {0} + p_gm_null ∈ {0} + s1.[bits 0 to ..] ∈ {0} or UNINITIALIZED + s2.[bits 0 to ..] ∈ {0} or UNINITIALIZED + =END OF DUMP== +tests/non-free/imprecise.c:23:[value] warning: locals {j; k} escaping the scope of write_garbled through NULL +[value] Recording results for write_garbled +[from] Computing for function write_garbled +[from] Done for function write_garbled +[value] Done for function write_garbled +[value] computing for function abstract_structs <- main. + Called from tests/non-free/imprecise.c:145. +tests/non-free/imprecise.c:37:[value] warning: accessing uninitialized left-value. assert \initialized(p); +tests/non-free/imprecise.c:37:[value] warning: out of bounds read. assert \valid_read(p); +tests/non-free/imprecise.c:40:[value] warning: out of bounds read. assert \valid_read(p); +tests/non-free/imprecise.c:45:[value] warning: out of bounds write. assert \valid(p); +tests/non-free/imprecise.c:46:[value] warning: out of bounds read. assert \valid_read(p); +tests/non-free/imprecise.c:48:[value] warning: out of bounds write. assert \valid(&v1); +tests/non-free/imprecise.c:48:[value] warning: accessing uninitialized left-value. assert \initialized(&v2); +tests/non-free/imprecise.c:48:[value] warning: out of bounds read. assert \valid_read(&v2); +tests/non-free/imprecise.c:50:[value] warning: out of bounds write. assert \valid(&v2); +tests/non-free/imprecise.c:50:[value] warning: accessing uninitialized left-value. assert \initialized(&v1); +tests/non-free/imprecise.c:50:[value] warning: out of bounds read. assert \valid_read(&v1); +tests/non-free/imprecise.c:51:[value] Call to builtin memset(({{ (void *)&v3 }},{-5},[0..4294967295])) +tests/non-free/imprecise.c:51:[value] warning: out of bounds write. + assert \valid((char *)(&v3)+(0 .. (unsigned long)sizeof(v3)-1)); +tests/non-free/imprecise.c:53:[value] warning: out of bounds write. assert \valid(p2); +tests/non-free/imprecise.c:54:[value] warning: out of bounds write. assert \valid(t[5]); +tests/non-free/imprecise.c:54:[value] warning: accessing uninitialized left-value. assert \initialized(&v2); +tests/non-free/imprecise.c:54:[value] warning: out of bounds read. assert \valid_read(&v2); +tests/non-free/imprecise.c:54:[value] Assigning imprecise value to *(t[5]) (pointing to NULL with offsets {0}). + The imprecision originates from Misaligned {tests/non-free/imprecise.c:54} +tests/non-free/imprecise.c:56:[value] warning: out of bounds write. assert \valid(p4); +tests/non-free/imprecise.c:58:[value] warning: out of bounds write. assert \valid(p5); +tests/non-free/imprecise.c:60:[value] warning: out of bounds write. assert \valid(p6); +[value] Recording results for abstract_structs +[from] Computing for function abstract_structs +[from] Done for function abstract_structs +[value] Done for function abstract_structs +[value] computing for function cast_address <- main. + Called from tests/non-free/imprecise.c:146. +tests/non-free/imprecise.c:66:[value] Assigning imprecise value to c1. + The imprecision originates from Arithmetic {tests/non-free/imprecise.c:66} +tests/non-free/imprecise.c:68:[value] warning: signed overflow. assert -2147483648 ≤ (int)*((char *)(&p))+0; +tests/non-free/imprecise.c:68:[value] warning: signed overflow. assert (int)*((char *)(&p))+0 ≤ 2147483647; +tests/non-free/imprecise.c:68:[value] Assigning imprecise value to c3. + The imprecision originates from Misaligned {tests/non-free/imprecise.c:68} +[value] Recording results for cast_address +[from] Computing for function cast_address +[from] Done for function cast_address +[value] Done for function cast_address +[value] computing for function garbled_mix_null <- main. + Called from tests/non-free/imprecise.c:147. +[value] computing for function gm_f1 <- garbled_mix_null <- main. + Called from tests/non-free/imprecise.c:75. +tests/non-free/imprecise.c:75:[kernel] warning: Neither code nor specification for function gm_f1, generating default assigns from the prototype +[value] using specification for function gm_f1 +[value] Done for function gm_f1 +[value] DUMPING STATE of file tests/non-free/imprecise.c line 76 + NULL[rbits 800 to 1607] ∈ + {{ garbled mix of &{addr} + (origin: Misaligned {tests/non-free/imprecise.c:54}) }} or ESCAPINGADDR + v ∈ [--..--] + addr ∈ [--..--] + v1.[bits 0 to 7] ∈ [--..--] + .[bits 8 to ..] ∈ {0} or UNINITIALIZED + v2.[bits 0 to 31] ∈ [--..--] or UNINITIALIZED + .[bits 32 to 63] ∈ {{ (? *)&addr }} + .[bits 64 to ..] ∈ [--..--] or UNINITIALIZED + v3.[bits 0 to 34359738359]# ∈ {0; 251} or UNINITIALIZED repeated %8 + .[bits 34359738360 to ..] ∈ {0} or UNINITIALIZED + v5.[bits 0 to 262143]# ∈ {0; 18; 19; 20} or UNINITIALIZED repeated %8 + .[bits 262144 to 17179869183]# ∈ + {0; 19; 20} or UNINITIALIZED repeated %8 + .[bits 17179869184 to ..]# ∈ {0; 20} or UNINITIALIZED repeated %8 + t[0..9] ∈ {0} + p_gm_null ∈ {{ NULL + [--..--] ; &alloced_return_gm_f1 + [0..2147483647] }} + s1.[bits 0 to ..] ∈ {0} or UNINITIALIZED + s2.[bits 0 to ..] ∈ {0} or UNINITIALIZED + alloced_return_gm_f1[bits 0 to ..] ∈ + {{ garbled mix of &{alloced_return_gm_f1} + (origin: Library function + {tests/non-free/imprecise.c:75}) }} + =END OF DUMP== +tests/non-free/imprecise.c:77:[value] warning: out of bounds read. assert \valid_read(p_gm_null); +tests/non-free/imprecise.c:77:[value] warning: accessing left-value that contains escaping addresses. + assert ¬\dangling(p_gm_null); +[value] computing for function gm_f2 <- garbled_mix_null <- main. + Called from tests/non-free/imprecise.c:77. +tests/non-free/imprecise.c:77:[kernel] warning: Neither code nor specification for function gm_f2, generating default assigns from the prototype +[value] using specification for function gm_f2 +[value] Done for function gm_f2 +[value] DUMPING STATE of file tests/non-free/imprecise.c line 78 + NULL[rbits 800 to 1607] ∈ + {{ garbled mix of &{addr; alloced_return_gm_f1} + (origin: Misaligned {tests/non-free/imprecise.c:54}) }} or ESCAPINGADDR + v ∈ [--..--] + addr ∈ + {{ garbled mix of &{addr; alloced_return_gm_f1} + (origin: Misaligned {tests/non-free/imprecise.c:54}) }} + v1.[bits 0 to 7] ∈ [--..--] + .[bits 8 to ..] ∈ {0} or UNINITIALIZED + v2.[bits 0 to 31] ∈ [--..--] or UNINITIALIZED + .[bits 32 to 63] ∈ {{ (? *)&addr }} + .[bits 64 to ..] ∈ [--..--] or UNINITIALIZED + v3.[bits 0 to 34359738359]# ∈ {0; 251} or UNINITIALIZED repeated %8 + .[bits 34359738360 to ..] ∈ {0} or UNINITIALIZED + v5.[bits 0 to 262143]# ∈ {0; 18; 19; 20} or UNINITIALIZED repeated %8 + .[bits 262144 to 17179869183]# ∈ + {0; 19; 20} or UNINITIALIZED repeated %8 + .[bits 17179869184 to ..]# ∈ {0; 20} or UNINITIALIZED repeated %8 + t[0..9] ∈ {0} + p_gm_null ∈ + {{ NULL + [100..197] ; &alloced_return_gm_f1 + [0..2147483647] }} + s1.[bits 0 to ..] ∈ {0} or UNINITIALIZED + s2.[bits 0 to ..] ∈ {0} or UNINITIALIZED + alloced_return_gm_f1[bits 0 to ..] ∈ + {{ garbled mix of &{addr; alloced_return_gm_f1} + (origin: Misaligned {tests/non-free/imprecise.c:54}) }} + =END OF DUMP== +[value] Recording results for garbled_mix_null +[from] Computing for function garbled_mix_null +[from] Done for function garbled_mix_null +[value] Done for function garbled_mix_null +[value] computing for function weak_update_imprecise_size <- main. + Called from tests/non-free/imprecise.c:148. +tests/non-free/imprecise.c:86:[value] warning: out of bounds write. assert \valid(&s1); +tests/non-free/imprecise.c:86:[value] warning: accessing uninitialized left-value. assert \initialized(&s2); +tests/non-free/imprecise.c:86:[value] warning: out of bounds read. assert \valid_read(&s2); +[value] Recording results for weak_update_imprecise_size +[from] Computing for function weak_update_imprecise_size +[from] Done for function weak_update_imprecise_size +[value] Done for function weak_update_imprecise_size +[value] computing for function many_writes <- main. + Called from tests/non-free/imprecise.c:149. +tests/non-free/imprecise.c:110:[value] warning: accessing out of bounds index. assert 0 ≤ v; +tests/non-free/imprecise.c:110:[value] warning: accessing out of bounds index. assert v < 300; +tests/non-free/imprecise.c:110:[kernel] more than 200(300) locations to update in array. Approximating. +tests/non-free/imprecise.c:110:[kernel] more than 200(300) elements to enumerate. Approximating. +tests/non-free/imprecise.c:111:[value] warning: assertion got status unknown. +tests/non-free/imprecise.c:113:[value] warning: accessing out of bounds index. assert 0 ≤ v; +tests/non-free/imprecise.c:113:[value] warning: accessing out of bounds index. assert v < 300; +tests/non-free/imprecise.c:113:[kernel] more than 200(300) locations to update in array. Approximating. +tests/non-free/imprecise.c:113:[kernel] approximating value to write. +tests/non-free/imprecise.c:113:[kernel] more than 200(300) elements to enumerate. Approximating. +tests/non-free/imprecise.c:115:[value] warning: assertion got status unknown. +[value] Recording results for many_writes +[from] Computing for function many_writes +tests/non-free/imprecise.c:110:[kernel] more than 200(300) dependencies to update. Approximating. +tests/non-free/imprecise.c:113:[kernel] more than 200(300) dependencies to update. Approximating. +[from] Done for function many_writes +[value] Done for function many_writes +[value] computing for function overlap <- main. + Called from tests/non-free/imprecise.c:150. +tests/non-free/imprecise.c:121:[value] warning: out of bounds write. assert \valid((int *)(&t_char[v])); +[value] Recording results for overlap +[from] Computing for function overlap +[from] Done for function overlap +[value] Done for function overlap +[value] computing for function paste_big <- main. + Called from tests/non-free/imprecise.c:151. +tests/non-free/imprecise.c:132:[value] Call to builtin memset(({{ (void *)&s }},{2},{20484})) +tests/non-free/imprecise.c:135:[value] warning: assertion got status unknown. +tests/non-free/imprecise.c:136:[kernel] too many locations to update in array. Approximating. +[value] Recording results for paste_big +[from] Computing for function paste_big +[from] Done for function paste_big +[value] Done for function paste_big +[value] Recording results for main +[from] Computing for function main +[from] Done for function main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function abstract_structs: + NULL[rbits 800 to 1607] ∈ + {{ garbled mix of &{addr} + (origin: Misaligned {tests/non-free/imprecise.c:54}) }} or ESCAPINGADDR + v1.[bits 0 to 7] ∈ [--..--] + .[bits 8 to ..] ∈ {0} or UNINITIALIZED + v2.[bits 0 to 31] ∈ [--..--] or UNINITIALIZED + .[bits 32 to 63] ∈ {{ (? *)&addr }} + .[bits 64 to ..] ∈ [--..--] or UNINITIALIZED + v3.[bits 0 to 34359738359]# ∈ {0; 251} or UNINITIALIZED repeated %8 + .[bits 34359738360 to ..] ∈ {0} or UNINITIALIZED + v5.[bits 0 to 262143]# ∈ {0; 18; 19; 20} or UNINITIALIZED repeated %8 + .[bits 262144 to 17179869183]# ∈ + {0; 19; 20} or UNINITIALIZED repeated %8 + .[bits 17179869184 to ..]# ∈ {0; 20} or UNINITIALIZED repeated %8 + p ∈ {{ (char *)&v1 }} + q ∈ {1} + p2 ∈ {{ &v2 + {4} }} + p4 ∈ {{ &v5 + [0..32767] }} + p5 ∈ {{ &v5 + [0..2147483647] }} + p6 ∈ {{ &v5 + [0..4294967295] }} +[value:final-states] Values at end of function cast_address: + p ∈ {{ &x }} + c1 ∈ + {{ garbled mix of &{x} + (origin: Arithmetic {tests/non-free/imprecise.c:66}) }} + c2# ∈ {{ (? *)&x }}%32, bits 0 to 7 + c3 ∈ + {{ garbled mix of &{x} + (origin: Misaligned {tests/non-free/imprecise.c:68}) }} +[value:final-states] Values at end of function garbled_mix_null: + NULL[rbits 800 to 1607] ∈ + {{ garbled mix of &{addr; alloced_return_gm_f1} + (origin: Misaligned {tests/non-free/imprecise.c:54}) }} or ESCAPINGADDR + addr ∈ + {{ garbled mix of &{addr; alloced_return_gm_f1} + (origin: Misaligned {tests/non-free/imprecise.c:54}) }} + p_gm_null ∈ + {{ NULL + [100..197] ; &alloced_return_gm_f1 + [0..2147483647] }} + alloced_return_gm_f1[bits 0 to ..] ∈ + {{ garbled mix of &{addr; alloced_return_gm_f1} + (origin: Misaligned {tests/non-free/imprecise.c:54}) }} +[value:final-states] Values at end of function invalid_assigns_imprecise: + NULL[rbits 800 to 1607] ∈ [--..--] + p ∈ {0} +[value:final-states] Values at end of function many_writes: + t_packed1{[0..298]{.i1; .i2#; .[bits 48 to 63]#}; [299].i1} ∈ + {1} or UNINITIALIZED repeated %32 + [299]{.i2; .[bits 48 to 63]} ∈ UNINITIALIZED + t_packed2{[0..298]; [299].i1} ∈ [--..--] or UNINITIALIZED + [299].i2 ∈ UNINITIALIZED +[value:final-states] Values at end of function overlap: + t_char[0..99] ∈ [--..--] or UNINITIALIZED +[value:final-states] Values at end of function paste_big: + i ∈ [0..299] + s.c[0..20479] ∈ {2} + .i ∈ {33686018} + t_big[0..299] ∈ [--..--] or UNINITIALIZED + v_0 ∈ [--..--] or UNINITIALIZED +[value:final-states] Values at end of function weak_update_imprecise_size: + s1.[bits 0 to ..] ∈ {0} or UNINITIALIZED + vx ∈ {1} + vy ∈ {1} or UNINITIALIZED +[value:final-states] Values at end of function write_garbled: + NULL[rbits 800 to 1607] ∈ + {{ garbled mix of &{j; k} + (origin: Misaligned {tests/non-free/imprecise.c:22}) }} + i ∈ {1} + j ∈ {{ NULL + [1..197] ; (int)&j ; &k + [0..16] }} + k[0..4] ∈ + {{ garbled mix of &{j; k} + (origin: Misaligned {tests/non-free/imprecise.c:22}) }} + p ∈ {{ NULL + [100..197] ; &j ; &k + [0..16] }} +[value:final-states] Values at end of function main: + NULL[rbits 800 to 1607] ∈ + {{ garbled mix of &{addr; alloced_return_gm_f1} + (origin: Misaligned {tests/non-free/imprecise.c:54}) }} or ESCAPINGADDR + addr ∈ + {{ garbled mix of &{addr; alloced_return_gm_f1} + (origin: Misaligned {tests/non-free/imprecise.c:54}) }} + v1.[bits 0 to 7] ∈ [--..--] + .[bits 8 to ..] ∈ {0} or UNINITIALIZED + v2.[bits 0 to 31] ∈ [--..--] or UNINITIALIZED + .[bits 32 to 63] ∈ {{ (? *)&addr }} + .[bits 64 to ..] ∈ [--..--] or UNINITIALIZED + v3.[bits 0 to 34359738359]# ∈ {0; 251} or UNINITIALIZED repeated %8 + .[bits 34359738360 to ..] ∈ {0} or UNINITIALIZED + v5.[bits 0 to 262143]# ∈ {0; 18; 19; 20} or UNINITIALIZED repeated %8 + .[bits 262144 to 17179869183]# ∈ + {0; 19; 20} or UNINITIALIZED repeated %8 + .[bits 17179869184 to ..]# ∈ {0; 20} or UNINITIALIZED repeated %8 + p_gm_null ∈ + {{ NULL + [100..197] ; &alloced_return_gm_f1 + [0..2147483647] }} + s1.[bits 0 to ..] ∈ {0} or UNINITIALIZED + alloced_return_gm_f1[bits 0 to ..] ∈ + {{ garbled mix of &{addr; alloced_return_gm_f1} + (origin: Misaligned {tests/non-free/imprecise.c:54}) }} +[from] Computing for function abstract_structs +[from] Computing for function Frama_C_memset <-abstract_structs +[from] Done for function Frama_C_memset +[from] Done for function abstract_structs +[from] Computing for function cast_address +[from] Done for function cast_address +[from] Computing for function garbled_mix_null +[from] Computing for function gm_f1 <-garbled_mix_null +[from] Done for function gm_f1 +[from] Computing for function Frama_C_dump_each <-garbled_mix_null +[from] Done for function Frama_C_dump_each +[from] Computing for function gm_f2 <-garbled_mix_null +[from] Done for function gm_f2 +[from] Done for function garbled_mix_null +[from] Computing for function invalid_assigns_imprecise +[from] Computing for function f <-invalid_assigns_imprecise +[from] Done for function f +[from] Done for function invalid_assigns_imprecise +[from] Computing for function many_writes +[from] Done for function many_writes +[from] Computing for function overlap +[from] Done for function overlap +[from] Computing for function paste_big +[from] Done for function paste_big +[from] Computing for function weak_update_imprecise_size +[from] Done for function weak_update_imprecise_size +[from] Computing for function write_garbled +[from] Computing for function Frama_C_bzero <-write_garbled +[from] Done for function Frama_C_bzero +[from] Done for function write_garbled +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function abstract_structs: + NULL[100..200] FROM v; v1.[bits 8 to ..]; v2[..]; t[5] (and SELF) + v1.[bits 0 to 7] FROM v; v2[..] + .[bits 8 to ..] FROM v; v2[..] (and SELF) + v2{.[bits 0 to 31]; .[bits 64 to ..]} + FROM v; v1.[bits 8 to ..]; v2[..] (and SELF) + .[bits 32 to 63] FROM \nothing + v3.[bits 0 to 34359738359] FROM \nothing (and SELF) + v5.[bits 0 to ..] FROM v (and SELF) +[from] Function cast_address: + NO EFFECTS +[from] Function f: + NULL[100..200] FROM \nothing (and SELF) +[from] Function gm_f1: + \result FROM \nothing +[from] Function gm_f2: + NULL[100..200] + FROM NULL[100..200]; addr; + alloced_return_gm_f1[bits 0 to ..] (and SELF) + addr FROM NULL[100..200]; addr; + alloced_return_gm_f1[bits 0 to ..] (and SELF) + alloced_return_gm_f1[bits 0 to ..] + FROM NULL[100..200]; addr; + alloced_return_gm_f1[bits 0 to ..] (and SELF) + \result FROM NULL[100..200]; addr; alloced_return_gm_f1[bits 0 to ..] +[from] Function garbled_mix_null: + NULL[100..200] + FROM NULL[100..200]; addr; + alloced_return_gm_f1[bits 0 to ..] (and SELF) + addr FROM NULL[100..200]; addr; + alloced_return_gm_f1[bits 0 to ..] (and SELF) + p_gm_null FROM \nothing + alloced_return_gm_f1[bits 0 to ..] + FROM NULL[100..200]; addr; + alloced_return_gm_f1[bits 0 to ..] (and SELF) +[from] Function invalid_assigns_imprecise: + NULL[100..200] FROM \nothing (and SELF) +[from] Function many_writes: + NO EFFECTS +[from] Function overlap: + NO EFFECTS +[from] Function paste_big: + v3.[bits 0 to 34359738359] FROM \nothing (and SELF) +[from] Function weak_update_imprecise_size: + s1.[bits 0 to ..] FROM s2[..] (and SELF) +[from] Function write_garbled: + NULL[100..200] FROM \nothing (and SELF) +[from] Function main: + NULL[100..200] + FROM NULL[100..200]; v; addr; v1.[bits 8 to ..]; v2[..]; t[5]; + alloced_return_gm_f1[bits 0 to ..] (and SELF) + addr FROM NULL[100..200]; v; addr; v1.[bits 8 to ..]; v2[..]; t[5]; + alloced_return_gm_f1[bits 0 to ..] (and SELF) + v1.[bits 0 to 7] FROM v; v2[..] + .[bits 8 to ..] FROM v; v2[..] (and SELF) + v2{.[bits 0 to 31]; .[bits 64 to ..]} + FROM v; v1.[bits 8 to ..]; v2[..] (and SELF) + .[bits 32 to 63] FROM \nothing + v3.[bits 0 to 34359738359] FROM \nothing (and SELF) + v5.[bits 0 to ..] FROM v (and SELF) + p_gm_null FROM \nothing + s1.[bits 0 to ..] FROM s2[..] (and SELF) + alloced_return_gm_f1[bits 0 to ..] + FROM NULL[100..200]; v; addr; v1.[bits 8 to ..]; + v2[..]; t[5]; + alloced_return_gm_f1[bits 0 to ..] (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[from] ====== DISPLAYING CALLWISE DEPENDENCIES ====== +[from] call to Frama_C_memset at tests/non-free/imprecise.c:51 (by abstract_structs): + v3.[bits 0 to 34359738359] FROM c (and SELF) +[from] call to gm_f1 at tests/non-free/imprecise.c:75 (by garbled_mix_null): + \result FROM \nothing +[from] call to Frama_C_dump_each at tests/non-free/imprecise.c:76 (by garbled_mix_null): + \result FROM \nothing +[from] call to gm_f2 at tests/non-free/imprecise.c:77 (by garbled_mix_null): + NULL[100..200] + FROM NULL[100..200]; addr; + alloced_return_gm_f1[bits 0 to ..] (and SELF) + addr FROM NULL[100..200]; addr; + alloced_return_gm_f1[bits 0 to ..] (and SELF) + alloced_return_gm_f1[bits 0 to ..] + FROM NULL[100..200]; addr; + alloced_return_gm_f1[bits 0 to ..] (and SELF) + \result FROM NULL[100..200]; addr; alloced_return_gm_f1[bits 0 to ..] +[from] call to Frama_C_dump_each at tests/non-free/imprecise.c:78 (by garbled_mix_null): + \result FROM \nothing +[from] call to f at tests/non-free/imprecise.c:11 (by invalid_assigns_imprecise): + NULL[100..200] FROM \nothing (and SELF) +[from] call to Frama_C_memset at tests/non-free/imprecise.c:132 (by paste_big): + s FROM c +[from] call to Frama_C_bzero at tests/non-free/imprecise.c:17 (by write_garbled): + k[0..4] FROM \nothing +[from] call to Frama_C_dump_each at tests/non-free/imprecise.c:21 (by write_garbled): + \result FROM \nothing +[from] call to invalid_assigns_imprecise at tests/non-free/imprecise.c:143 (by main): + NULL[100..200] FROM \nothing (and SELF) +[from] call to write_garbled at tests/non-free/imprecise.c:144 (by main): + NULL[100..200] FROM \nothing (and SELF) +[from] call to abstract_structs at tests/non-free/imprecise.c:145 (by main): + NULL[100..200] FROM v; v1.[bits 8 to ..]; v2[..]; t[5] (and SELF) + v1.[bits 0 to 7] FROM v; v2[..] + .[bits 8 to ..] FROM v; v2[..] (and SELF) + v2{.[bits 0 to 31]; .[bits 64 to ..]} + FROM v; v1.[bits 8 to ..]; v2[..] (and SELF) + .[bits 32 to 63] FROM \nothing + v3.[bits 0 to 34359738359] FROM \nothing (and SELF) + v5.[bits 0 to ..] FROM v (and SELF) +[from] call to cast_address at tests/non-free/imprecise.c:146 (by main): + NO EFFECTS +[from] call to garbled_mix_null at tests/non-free/imprecise.c:147 (by main): + NULL[100..200] + FROM NULL[100..200]; addr; + alloced_return_gm_f1[bits 0 to ..] (and SELF) + addr FROM NULL[100..200]; addr; + alloced_return_gm_f1[bits 0 to ..] (and SELF) + p_gm_null FROM \nothing + alloced_return_gm_f1[bits 0 to ..] + FROM NULL[100..200]; addr; + alloced_return_gm_f1[bits 0 to ..] (and SELF) +[from] call to weak_update_imprecise_size at tests/non-free/imprecise.c:148 (by main): + s1.[bits 0 to ..] FROM s2[..] (and SELF) +[from] call to many_writes at tests/non-free/imprecise.c:149 (by main): + NO EFFECTS +[from] call to overlap at tests/non-free/imprecise.c:150 (by main): + NO EFFECTS +[from] call to paste_big at tests/non-free/imprecise.c:151 (by main): + NO EFFECTS +[from] entry point: + NULL[100..200] + FROM NULL[100..200]; v; addr; v1.[bits 8 to ..]; v2[..]; t[5]; + alloced_return_gm_f1[bits 0 to ..] (and SELF) + addr FROM NULL[100..200]; v; addr; v1.[bits 8 to ..]; v2[..]; t[5]; + alloced_return_gm_f1[bits 0 to ..] (and SELF) + v1.[bits 0 to 7] FROM v; v2[..] + .[bits 8 to ..] FROM v; v2[..] (and SELF) + v2{.[bits 0 to 31]; .[bits 64 to ..]} + FROM v; v1.[bits 8 to ..]; v2[..] (and SELF) + .[bits 32 to 63] FROM \nothing + v3.[bits 0 to 34359738359] FROM \nothing (and SELF) + v5.[bits 0 to ..] FROM v (and SELF) + p_gm_null FROM \nothing + s1.[bits 0 to ..] FROM s2[..] (and SELF) + alloced_return_gm_f1[bits 0 to ..] + FROM NULL[100..200]; v; addr; v1.[bits 8 to ..]; + v2[..]; t[5]; + alloced_return_gm_f1[bits 0 to ..] (and SELF) +[from] ====== END OF CALLWISE DEPENDENCIES ====== +[inout] Out (internal) for function abstract_structs: + NULL[..]; v1[..]; v2[..]; v3.[bits 0 to 34359738359]; v5.[bits 0 to ..]; + p; w1; w; q; p2; p4; p5; p6 +[inout] Inputs for function abstract_structs: + v; v1[..]; v2[..]; v3[..]; t[5] +[inout] InOut (internal) for function abstract_structs: + Operational inputs: + v; v1[..]; v2[..]; t[5] + Operational inputs on termination: + v; v1[..]; v2[..]; t[5] + Sure outputs: + v1.[bits 0 to 7]; v2.[bits 32 to 63]; p; q; p2; p4; p5; p6 +[inout] Out (internal) for function cast_address: + p; c1; c2; c3 +[inout] Inputs for function cast_address: + \nothing +[inout] InOut (internal) for function cast_address: + Operational inputs: + \nothing + Operational inputs on termination: + \nothing + Sure outputs: + p; c1; c2; c3 +[inout] Out (internal) for function garbled_mix_null: + NULL[100..200]; addr; p_gm_null; alloced_return_gm_f1[bits 0 to ..] +[inout] Inputs for function garbled_mix_null: + NULL[100..200]; addr; p_gm_null; alloced_return_gm_f1[bits 0 to ..] +[inout] InOut (internal) for function garbled_mix_null: + Operational inputs: + NULL[100..200]; addr; alloced_return_gm_f1[bits 0 to ..] + Operational inputs on termination: + NULL[100..200]; addr; alloced_return_gm_f1[bits 0 to ..] + Sure outputs: + p_gm_null +[inout] Out (internal) for function invalid_assigns_imprecise: + NULL[..]; p +[inout] Inputs for function invalid_assigns_imprecise: + \nothing +[inout] InOut (internal) for function invalid_assigns_imprecise: + Operational inputs: + \nothing + Operational inputs on termination: + \nothing + Sure outputs: + p +[inout] Out (internal) for function many_writes: + t_packed1{[0..298]; [299].i1}; t_packed2{[0..298]; [299].i1} +[inout] Inputs for function many_writes: + v +[inout] InOut (internal) for function many_writes: + Operational inputs: + v + Operational inputs on termination: + v + Sure outputs: + \nothing +[inout] Out (internal) for function overlap: + t_char[0..99] +[inout] Inputs for function overlap: + v +[inout] InOut (internal) for function overlap: + Operational inputs: + v + Operational inputs on termination: + v + Sure outputs: + \nothing +[inout] Out (internal) for function paste_big: + i; s; t_big[0..299]; v_0 +[inout] Inputs for function paste_big: + v +[inout] InOut (internal) for function paste_big: + Operational inputs: + v; t_big[0].c[192..195] + Operational inputs on termination: + v; t_big[0].c[192..195] + Sure outputs: + i; s; v_0 +[inout] Out (internal) for function weak_update_imprecise_size: + s1[..]; vx; vy +[inout] Inputs for function weak_update_imprecise_size: + v; s2[..] +[inout] InOut (internal) for function weak_update_imprecise_size: + Operational inputs: + v; s2[..] + Operational inputs on termination: + v; s2[..] + Sure outputs: + vx +[inout] Out (internal) for function write_garbled: + NULL[100..200]; i; j; k[0..4]; p +[inout] Inputs for function write_garbled: + \nothing +[inout] InOut (internal) for function write_garbled: + Operational inputs: + \nothing + Operational inputs on termination: + \nothing + Sure outputs: + i; j; k[0..4]; p +[inout] Out (internal) for function main: + NULL[..]; addr; v1[..]; v2[..]; v3.[bits 0 to 34359738359]; + v5.[bits 0 to ..]; p_gm_null; s1[..]; alloced_return_gm_f1[bits 0 to ..] +[inout] Inputs for function main: + NULL[100..200]; v; addr; v1[..]; v2[..]; v3[..]; t[5]; p_gm_null; s2[..]; + alloced_return_gm_f1[bits 0 to ..] +[inout] InOut (internal) for function main: + Operational inputs: + NULL[100..200]; v; addr; v1[..]; v2[..]; t[5]; s2[..]; + alloced_return_gm_f1[bits 0 to ..] + Operational inputs on termination: + NULL[100..200]; v; addr; v1[..]; v2[..]; t[5]; s2[..]; + alloced_return_gm_f1[bits 0 to ..] + Sure outputs: + v1.[bits 0 to 7]; v2.[bits 32 to 63]; p_gm_null +[value] Analyzing an incomplete application starting at main +[value] Computing initial state +tests/non-free/imprecise.c:29:[value] warning: during initialization of variable 't', size of type 'struct s' cannot be + computed (abstract type 'struct s') +[value] Initial state computed +[value:initial-state] Values of globals at initialization + NULL[rbits 800 to 1607] ∈ [--..--] + v ∈ [--..--] + addr ∈ [--..--] + v1.[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + v2.[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + v3.[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + v5.[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + t[0] ∈ {{ NULL ; (struct s *)&S_0_t }} + [1] ∈ {{ NULL ; (struct s *)&S_1_t }} + [2..9] ∈ {{ NULL ; (struct s *)&S_0_t ; (struct s *)&S_1_t }} + p_gm_null ∈ {{ NULL ; &S_p_gm_null[0] }} + s1.[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + s2.[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + S_0_t[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + S_1_t[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + S_p_gm_null[0] ∈ {{ NULL ; &S_0_S_p_gm_null[0] }} + [1] ∈ {{ NULL ; &S_1_S_p_gm_null[0] }} + S_0_S_p_gm_null[0..1] ∈ [--..--] + S_1_S_p_gm_null[0..1] ∈ [--..--] +[value] computing for function invalid_assigns_imprecise <- main. + Called from tests/non-free/imprecise.c:143. +[value] computing for function f <- invalid_assigns_imprecise <- main. + Called from tests/non-free/imprecise.c:11. +[value] Done for function f +[value] Recording results for invalid_assigns_imprecise +[from] Computing for function invalid_assigns_imprecise +[from] Done for function invalid_assigns_imprecise +[value] Done for function invalid_assigns_imprecise +[value] computing for function write_garbled <- main. + Called from tests/non-free/imprecise.c:144. +[value] Call to builtin bzero(({{ (unsigned char *)&k }},{20})) +tests/non-free/imprecise.c:20:[value] warning: out of bounds write. assert \valid(p); +[value] DUMPING STATE of file tests/non-free/imprecise.c line 21 + NULL[rbits 800 to 1607] ∈ [--..--] + i ∈ {1} + j ∈ {1; 2} + k[0..4] ∈ [--..--] + p ∈ {{ NULL + [100..197] ; &j ; &k + [0..16] }} + v ∈ [--..--] + addr ∈ [--..--] + v1.[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + v2.[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + v3.[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + v5.[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + t[0] ∈ {{ NULL ; (struct s *)&S_0_t }} + [1] ∈ {{ NULL ; (struct s *)&S_1_t }} + [2..9] ∈ {{ NULL ; (struct s *)&S_0_t ; (struct s *)&S_1_t }} + p_gm_null ∈ {{ NULL ; &S_p_gm_null[0] }} + s1.[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + s2.[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + S_0_t[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + S_1_t[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + S_p_gm_null[0] ∈ {{ NULL ; &S_0_S_p_gm_null[0] }} + [1] ∈ {{ NULL ; &S_1_S_p_gm_null[0] }} + S_0_S_p_gm_null[0..1] ∈ [--..--] + S_1_S_p_gm_null[0..1] ∈ [--..--] + =END OF DUMP== +[value] Recording results for write_garbled +[from] Computing for function write_garbled +[from] Done for function write_garbled +[value] Done for function write_garbled +[value] computing for function abstract_structs <- main. + Called from tests/non-free/imprecise.c:145. +tests/non-free/imprecise.c:37:[value] warning: accessing uninitialized left-value. assert \initialized(p); +tests/non-free/imprecise.c:37:[value] warning: out of bounds read. assert \valid_read(p); +tests/non-free/imprecise.c:40:[value] warning: out of bounds read. assert \valid_read(p); +tests/non-free/imprecise.c:45:[value] warning: out of bounds write. assert \valid(p); +tests/non-free/imprecise.c:46:[value] warning: out of bounds read. assert \valid_read(p); +tests/non-free/imprecise.c:48:[value] warning: out of bounds write. assert \valid(&v1); +tests/non-free/imprecise.c:48:[value] warning: accessing uninitialized left-value. assert \initialized(&v2); +tests/non-free/imprecise.c:48:[value] warning: out of bounds read. assert \valid_read(&v2); +tests/non-free/imprecise.c:50:[value] warning: out of bounds write. assert \valid(&v2); +tests/non-free/imprecise.c:50:[value] warning: accessing uninitialized left-value. assert \initialized(&v1); +tests/non-free/imprecise.c:50:[value] warning: out of bounds read. assert \valid_read(&v1); +tests/non-free/imprecise.c:51:[value] Call to builtin memset(({{ (void *)&v3 }},{-5},[0..4294967295])) +tests/non-free/imprecise.c:51:[value] warning: out of bounds write. + assert \valid((char *)(&v3)+(0 .. (unsigned long)sizeof(v3)-1)); +tests/non-free/imprecise.c:53:[value] warning: out of bounds write. assert \valid(p2); +tests/non-free/imprecise.c:54:[value] warning: out of bounds write. assert \valid(t[5]); +tests/non-free/imprecise.c:54:[value] warning: accessing uninitialized left-value. assert \initialized(&v2); +tests/non-free/imprecise.c:54:[value] warning: out of bounds read. assert \valid_read(&v2); +tests/non-free/imprecise.c:54:[value] Assigning imprecise value to *(t[5]) (pointing to NULL with offsets {0}; + S_0_t with offsets {0}; S_1_t with offsets {0}). + The imprecision originates from Misaligned {tests/non-free/imprecise.c:54} +tests/non-free/imprecise.c:56:[value] warning: out of bounds write. assert \valid(p4); +tests/non-free/imprecise.c:58:[value] warning: out of bounds write. assert \valid(p5); +tests/non-free/imprecise.c:60:[value] warning: out of bounds write. assert \valid(p6); +[value] Recording results for abstract_structs +[from] Computing for function abstract_structs +[from] Done for function abstract_structs +[value] Done for function abstract_structs +[value] computing for function cast_address <- main. + Called from tests/non-free/imprecise.c:146. +tests/non-free/imprecise.c:68:[value] warning: signed overflow. assert -2147483648 ≤ (int)*((char *)(&p))+0; +tests/non-free/imprecise.c:68:[value] warning: signed overflow. assert (int)*((char *)(&p))+0 ≤ 2147483647; +[value] Recording results for cast_address +[from] Computing for function cast_address +[from] Done for function cast_address +[value] Done for function cast_address +[value] computing for function garbled_mix_null <- main. + Called from tests/non-free/imprecise.c:147. +[value] computing for function gm_f1 <- garbled_mix_null <- main. + Called from tests/non-free/imprecise.c:75. +[value] Done for function gm_f1 +[value] DUMPING STATE of file tests/non-free/imprecise.c line 76 + NULL[rbits 800 to 1607] ∈ + {{ garbled mix of &{addr} + (origin: Misaligned {tests/non-free/imprecise.c:54}) }} or ESCAPINGADDR + v ∈ [--..--] + addr ∈ [--..--] + v1.[bits 0 to 7] ∈ [--..--] + .[bits 8 to ..] ∈ [--..--] or UNINITIALIZED + v2.[bits 0 to 31] ∈ [--..--] or UNINITIALIZED + .[bits 32 to 63] ∈ {{ (? *)&addr }} + .[bits 64 to ..] ∈ [--..--] or UNINITIALIZED + v3.[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + v5.[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + t[0] ∈ {{ NULL ; (struct s *)&S_0_t }} + [1] ∈ {{ NULL ; (struct s *)&S_1_t }} + [2..9] ∈ {{ NULL ; (struct s *)&S_0_t ; (struct s *)&S_1_t }} + p_gm_null ∈ {{ NULL + [--..--] ; &alloced_return_gm_f1 + [0..2147483647] }} + s1.[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + s2.[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + alloced_return_gm_f1[bits 0 to ..] ∈ + {{ garbled mix of &{alloced_return_gm_f1} + (origin: Library function + {tests/non-free/imprecise.c:75}) }} + S_0_t[bits 0 to ..] ∈ + {{ garbled mix of &{addr} + (origin: Misaligned {tests/non-free/imprecise.c:54}) }} or UNINITIALIZED + S_1_t[bits 0 to ..] ∈ + {{ garbled mix of &{addr} + (origin: Misaligned {tests/non-free/imprecise.c:54}) }} or UNINITIALIZED + S_p_gm_null[0] ∈ {{ NULL ; &S_0_S_p_gm_null[0] }} + [1] ∈ {{ NULL ; &S_1_S_p_gm_null[0] }} + S_0_S_p_gm_null[0..1] ∈ [--..--] + S_1_S_p_gm_null[0..1] ∈ [--..--] + =END OF DUMP== +tests/non-free/imprecise.c:77:[value] warning: out of bounds read. assert \valid_read(p_gm_null); +tests/non-free/imprecise.c:77:[value] warning: accessing left-value that contains escaping addresses. + assert ¬\dangling(p_gm_null); +[value] computing for function gm_f2 <- garbled_mix_null <- main. + Called from tests/non-free/imprecise.c:77. +[value] Done for function gm_f2 +[value] DUMPING STATE of file tests/non-free/imprecise.c line 78 + NULL[rbits 800 to 1607] ∈ + {{ garbled mix of &{addr; alloced_return_gm_f1} + (origin: Misaligned {tests/non-free/imprecise.c:54}) }} or ESCAPINGADDR + v ∈ [--..--] + addr ∈ + {{ garbled mix of &{addr; alloced_return_gm_f1} + (origin: Misaligned {tests/non-free/imprecise.c:54}) }} + v1.[bits 0 to 7] ∈ [--..--] + .[bits 8 to ..] ∈ [--..--] or UNINITIALIZED + v2.[bits 0 to 31] ∈ [--..--] or UNINITIALIZED + .[bits 32 to 63] ∈ {{ (? *)&addr }} + .[bits 64 to ..] ∈ [--..--] or UNINITIALIZED + v3.[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + v5.[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + t[0] ∈ {{ NULL ; (struct s *)&S_0_t }} + [1] ∈ {{ NULL ; (struct s *)&S_1_t }} + [2..9] ∈ {{ NULL ; (struct s *)&S_0_t ; (struct s *)&S_1_t }} + p_gm_null ∈ + {{ NULL + [100..197] ; &alloced_return_gm_f1 + [0..2147483647] }} + s1.[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + s2.[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + alloced_return_gm_f1[bits 0 to ..] ∈ + {{ garbled mix of &{addr; alloced_return_gm_f1} + (origin: Misaligned {tests/non-free/imprecise.c:54}) }} + S_0_t[bits 0 to ..] ∈ + {{ garbled mix of &{addr} + (origin: Misaligned {tests/non-free/imprecise.c:54}) }} or UNINITIALIZED + S_1_t[bits 0 to ..] ∈ + {{ garbled mix of &{addr} + (origin: Misaligned {tests/non-free/imprecise.c:54}) }} or UNINITIALIZED + S_p_gm_null[0] ∈ {{ NULL ; &S_0_S_p_gm_null[0] }} + [1] ∈ {{ NULL ; &S_1_S_p_gm_null[0] }} + S_0_S_p_gm_null[0..1] ∈ [--..--] + S_1_S_p_gm_null[0..1] ∈ [--..--] + =END OF DUMP== +[value] Recording results for garbled_mix_null +[from] Computing for function garbled_mix_null +[from] Done for function garbled_mix_null +[value] Done for function garbled_mix_null +[value] computing for function weak_update_imprecise_size <- main. + Called from tests/non-free/imprecise.c:148. +tests/non-free/imprecise.c:86:[value] warning: out of bounds write. assert \valid(&s1); +tests/non-free/imprecise.c:86:[value] warning: accessing uninitialized left-value. assert \initialized(&s2); +tests/non-free/imprecise.c:86:[value] warning: out of bounds read. assert \valid_read(&s2); +[value] Recording results for weak_update_imprecise_size +[from] Computing for function weak_update_imprecise_size +[from] Done for function weak_update_imprecise_size +[value] Done for function weak_update_imprecise_size +[value] computing for function many_writes <- main. + Called from tests/non-free/imprecise.c:149. +tests/non-free/imprecise.c:110:[value] warning: accessing out of bounds index. assert 0 ≤ v; +tests/non-free/imprecise.c:110:[value] warning: accessing out of bounds index. assert v < 300; +tests/non-free/imprecise.c:113:[value] warning: accessing out of bounds index. assert 0 ≤ v; +tests/non-free/imprecise.c:113:[value] warning: accessing out of bounds index. assert v < 300; +[value] Recording results for many_writes +[from] Computing for function many_writes +[from] Done for function many_writes +[value] Done for function many_writes +[value] computing for function overlap <- main. + Called from tests/non-free/imprecise.c:150. +tests/non-free/imprecise.c:121:[value] warning: out of bounds write. assert \valid((int *)(&t_char[v])); +[value] Recording results for overlap +[from] Computing for function overlap +[from] Done for function overlap +[value] Done for function overlap +[value] computing for function paste_big <- main. + Called from tests/non-free/imprecise.c:151. +tests/non-free/imprecise.c:132:[value] Call to builtin memset(({{ (void *)&s }},{2},{20484})) +[value] Recording results for paste_big +[from] Computing for function paste_big +[from] Done for function paste_big +[value] Done for function paste_big +[value] Recording results for main +[from] Computing for function main +[from] Done for function main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function abstract_structs: + NULL[rbits 800 to 1607] ∈ + {{ garbled mix of &{addr} + (origin: Misaligned {tests/non-free/imprecise.c:54}) }} or ESCAPINGADDR + v1.[bits 0 to 7] ∈ [--..--] + .[bits 8 to ..] ∈ [--..--] or UNINITIALIZED + v2.[bits 0 to 31] ∈ [--..--] or UNINITIALIZED + .[bits 32 to 63] ∈ {{ (? *)&addr }} + .[bits 64 to ..] ∈ [--..--] or UNINITIALIZED + v3.[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + v5.[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + p ∈ {{ (char *)&v1 }} + q ∈ {1} + p2 ∈ {{ &v2 + {4} }} + p4 ∈ {{ &v5 + [0..32767] }} + p5 ∈ {{ &v5 + [0..2147483647] }} + p6 ∈ {{ &v5 + [0..4294967295] }} + S_0_t[bits 0 to ..] ∈ + {{ garbled mix of &{addr} + (origin: Misaligned {tests/non-free/imprecise.c:54}) }} or UNINITIALIZED + S_1_t[bits 0 to ..] ∈ + {{ garbled mix of &{addr} + (origin: Misaligned {tests/non-free/imprecise.c:54}) }} or UNINITIALIZED +[value:final-states] Values at end of function cast_address: + p ∈ {{ &x }} + c1 ∈ + {{ garbled mix of &{x} + (origin: Arithmetic {tests/non-free/imprecise.c:66}) }} + c2# ∈ {{ (? *)&x }}%32, bits 0 to 7 + c3 ∈ + {{ garbled mix of &{x} + (origin: Misaligned {tests/non-free/imprecise.c:68}) }} +[value:final-states] Values at end of function garbled_mix_null: + NULL[rbits 800 to 1607] ∈ + {{ garbled mix of &{addr; alloced_return_gm_f1} + (origin: Misaligned {tests/non-free/imprecise.c:54}) }} or ESCAPINGADDR + addr ∈ + {{ garbled mix of &{addr; alloced_return_gm_f1} + (origin: Misaligned {tests/non-free/imprecise.c:54}) }} + p_gm_null ∈ + {{ NULL + [100..197] ; &alloced_return_gm_f1 + [0..2147483647] }} + alloced_return_gm_f1[bits 0 to ..] ∈ + {{ garbled mix of &{addr; alloced_return_gm_f1} + (origin: Misaligned {tests/non-free/imprecise.c:54}) }} +[value:final-states] Values at end of function invalid_assigns_imprecise: + NULL[rbits 800 to 1607] ∈ [--..--] + p ∈ {0} +[value:final-states] Values at end of function many_writes: + t_packed1{[0..298]{.i1; .i2#; .[bits 48 to 63]#}; [299].i1} ∈ + {1} or UNINITIALIZED repeated %32 + [299]{.i2; .[bits 48 to 63]} ∈ UNINITIALIZED + t_packed2{[0..298]; [299].i1} ∈ [--..--] or UNINITIALIZED + [299].i2 ∈ UNINITIALIZED +[value:final-states] Values at end of function overlap: + t_char[0..99] ∈ [--..--] or UNINITIALIZED +[value:final-states] Values at end of function paste_big: + i ∈ [0..299] + s.c[0..20479] ∈ {2} + .i ∈ {33686018} + t_big[0..299] ∈ [--..--] or UNINITIALIZED + v_0 ∈ [--..--] or UNINITIALIZED +[value:final-states] Values at end of function weak_update_imprecise_size: + s1.[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + vx ∈ {1} + vy ∈ {1} or UNINITIALIZED +[value:final-states] Values at end of function write_garbled: + NULL[rbits 800 to 1607] ∈ + {{ garbled mix of &{j; k} + (origin: Misaligned {tests/non-free/imprecise.c:22}) }} + i ∈ {1} + j ∈ {{ NULL + [1..197] ; (int)&j ; &k + [0..16] }} + k[0..4] ∈ + {{ garbled mix of &{j; k} + (origin: Misaligned {tests/non-free/imprecise.c:22}) }} + p ∈ {{ NULL + [100..197] ; &j ; &k + [0..16] }} +[value:final-states] Values at end of function main: + NULL[rbits 800 to 1607] ∈ + {{ garbled mix of &{addr; alloced_return_gm_f1} + (origin: Misaligned {tests/non-free/imprecise.c:54}) }} or ESCAPINGADDR + addr ∈ + {{ garbled mix of &{addr; alloced_return_gm_f1} + (origin: Misaligned {tests/non-free/imprecise.c:54}) }} + v1.[bits 0 to 7] ∈ [--..--] + .[bits 8 to ..] ∈ [--..--] or UNINITIALIZED + v2.[bits 0 to 31] ∈ [--..--] or UNINITIALIZED + .[bits 32 to 63] ∈ {{ (? *)&addr }} + .[bits 64 to ..] ∈ [--..--] or UNINITIALIZED + v3.[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + v5.[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + p_gm_null ∈ + {{ NULL + [100..197] ; &alloced_return_gm_f1 + [0..2147483647] }} + s1.[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + alloced_return_gm_f1[bits 0 to ..] ∈ + {{ garbled mix of &{addr; alloced_return_gm_f1} + (origin: Misaligned {tests/non-free/imprecise.c:54}) }} + S_0_t[bits 0 to ..] ∈ + {{ garbled mix of &{addr} + (origin: Misaligned {tests/non-free/imprecise.c:54}) }} or UNINITIALIZED + S_1_t[bits 0 to ..] ∈ + {{ garbled mix of &{addr} + (origin: Misaligned {tests/non-free/imprecise.c:54}) }} or UNINITIALIZED +[from] Computing for function abstract_structs +[from] Computing for function Frama_C_memset <-abstract_structs +[from] Done for function Frama_C_memset +[from] Done for function abstract_structs +[from] Computing for function cast_address +[from] Done for function cast_address +[from] Computing for function garbled_mix_null +[from] Computing for function gm_f1 <-garbled_mix_null +[from] Done for function gm_f1 +[from] Computing for function Frama_C_dump_each <-garbled_mix_null +[from] Done for function Frama_C_dump_each +[from] Computing for function gm_f2 <-garbled_mix_null +[from] Done for function gm_f2 +[from] Done for function garbled_mix_null +[from] Computing for function invalid_assigns_imprecise +[from] Computing for function f <-invalid_assigns_imprecise +[from] Done for function f +[from] Done for function invalid_assigns_imprecise +[from] Computing for function many_writes +[from] Done for function many_writes +[from] Computing for function overlap +[from] Done for function overlap +[from] Computing for function paste_big +[from] Done for function paste_big +[from] Computing for function weak_update_imprecise_size +[from] Done for function weak_update_imprecise_size +[from] Computing for function write_garbled +[from] Computing for function Frama_C_bzero <-write_garbled +[from] Done for function Frama_C_bzero +[from] Done for function write_garbled +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function abstract_structs: + NULL[100..200] FROM v; v1.[bits 8 to ..]; v2[..]; t[5] (and SELF) + v1.[bits 0 to 7] FROM v; v2[..] + .[bits 8 to ..] FROM v; v2[..] (and SELF) + v2{.[bits 0 to 31]; .[bits 64 to ..]} + FROM v; v1.[bits 8 to ..]; v2[..] (and SELF) + .[bits 32 to 63] FROM \nothing + v3.[bits 0 to 34359738359] FROM \nothing (and SELF) + v5.[bits 0 to ..] FROM v (and SELF) + S_0_t[bits 0 to ..] FROM v; v1.[bits 8 to ..]; v2[..]; t[5] (and SELF) + S_1_t[bits 0 to ..] FROM v; v1.[bits 8 to ..]; v2[..]; t[5] (and SELF) +[from] Function cast_address: + NO EFFECTS +[from] Function f: + NULL[100..200] FROM \nothing (and SELF) +[from] Function gm_f1: + \result FROM \nothing +[from] Function gm_f2: + NULL[100..200] + FROM NULL[100..200]; addr; + alloced_return_gm_f1[bits 0 to ..] (and SELF) + addr FROM NULL[100..200]; addr; + alloced_return_gm_f1[bits 0 to ..] (and SELF) + alloced_return_gm_f1[bits 0 to ..] + FROM NULL[100..200]; addr; + alloced_return_gm_f1[bits 0 to ..] (and SELF) + \result FROM NULL[100..200]; addr; alloced_return_gm_f1[bits 0 to ..] +[from] Function garbled_mix_null: + NULL[100..200] + FROM NULL[100..200]; addr; + alloced_return_gm_f1[bits 0 to ..] (and SELF) + addr FROM NULL[100..200]; addr; + alloced_return_gm_f1[bits 0 to ..] (and SELF) + p_gm_null FROM \nothing + alloced_return_gm_f1[bits 0 to ..] + FROM NULL[100..200]; addr; + alloced_return_gm_f1[bits 0 to ..] (and SELF) +[from] Function invalid_assigns_imprecise: + NULL[100..200] FROM \nothing (and SELF) +[from] Function many_writes: + NO EFFECTS +[from] Function overlap: + NO EFFECTS +[from] Function paste_big: + v3.[bits 0 to 34359738359] FROM \nothing (and SELF) +[from] Function weak_update_imprecise_size: + s1.[bits 0 to ..] FROM s2[..] (and SELF) +[from] Function write_garbled: + NULL[100..200] FROM \nothing (and SELF) +[from] Function main: + NULL[100..200] + FROM NULL[100..200]; v; addr; v1.[bits 8 to ..]; v2[..]; t[5]; + alloced_return_gm_f1[bits 0 to ..] (and SELF) + addr FROM NULL[100..200]; v; addr; v1.[bits 8 to ..]; v2[..]; t[5]; + alloced_return_gm_f1[bits 0 to ..] (and SELF) + v1.[bits 0 to 7] FROM v; v2[..] + .[bits 8 to ..] FROM v; v2[..] (and SELF) + v2{.[bits 0 to 31]; .[bits 64 to ..]} + FROM v; v1.[bits 8 to ..]; v2[..] (and SELF) + .[bits 32 to 63] FROM \nothing + v3.[bits 0 to 34359738359] FROM \nothing (and SELF) + v5.[bits 0 to ..] FROM v (and SELF) + p_gm_null FROM \nothing + s1.[bits 0 to ..] FROM s2[..] (and SELF) + alloced_return_gm_f1[bits 0 to ..] + FROM NULL[100..200]; v; addr; v1.[bits 8 to ..]; + v2[..]; t[5]; + alloced_return_gm_f1[bits 0 to ..] (and SELF) + S_0_t[bits 0 to ..] FROM v; v1.[bits 8 to ..]; v2[..]; t[5] (and SELF) + S_1_t[bits 0 to ..] FROM v; v1.[bits 8 to ..]; v2[..]; t[5] (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[from] ====== DISPLAYING CALLWISE DEPENDENCIES ====== +[from] call to Frama_C_memset at tests/non-free/imprecise.c:51 (by abstract_structs): + v3.[bits 0 to 34359738359] FROM c (and SELF) +[from] call to gm_f1 at tests/non-free/imprecise.c:75 (by garbled_mix_null): + \result FROM \nothing +[from] call to Frama_C_dump_each at tests/non-free/imprecise.c:76 (by garbled_mix_null): + \result FROM \nothing +[from] call to gm_f2 at tests/non-free/imprecise.c:77 (by garbled_mix_null): + NULL[100..200] + FROM NULL[100..200]; addr; + alloced_return_gm_f1[bits 0 to ..] (and SELF) + addr FROM NULL[100..200]; addr; + alloced_return_gm_f1[bits 0 to ..] (and SELF) + alloced_return_gm_f1[bits 0 to ..] + FROM NULL[100..200]; addr; + alloced_return_gm_f1[bits 0 to ..] (and SELF) + \result FROM NULL[100..200]; addr; alloced_return_gm_f1[bits 0 to ..] +[from] call to Frama_C_dump_each at tests/non-free/imprecise.c:78 (by garbled_mix_null): + \result FROM \nothing +[from] call to f at tests/non-free/imprecise.c:11 (by invalid_assigns_imprecise): + NULL[100..200] FROM \nothing (and SELF) +[from] call to Frama_C_memset at tests/non-free/imprecise.c:132 (by paste_big): + s FROM c +[from] call to Frama_C_bzero at tests/non-free/imprecise.c:17 (by write_garbled): + k[0..4] FROM \nothing +[from] call to Frama_C_dump_each at tests/non-free/imprecise.c:21 (by write_garbled): + \result FROM \nothing +[from] call to invalid_assigns_imprecise at tests/non-free/imprecise.c:143 (by main): + NULL[100..200] FROM \nothing (and SELF) +[from] call to write_garbled at tests/non-free/imprecise.c:144 (by main): + NULL[100..200] FROM \nothing (and SELF) +[from] call to abstract_structs at tests/non-free/imprecise.c:145 (by main): + NULL[100..200] FROM v; v1.[bits 8 to ..]; v2[..]; t[5] (and SELF) + v1.[bits 0 to 7] FROM v; v2[..] + .[bits 8 to ..] FROM v; v2[..] (and SELF) + v2{.[bits 0 to 31]; .[bits 64 to ..]} + FROM v; v1.[bits 8 to ..]; v2[..] (and SELF) + .[bits 32 to 63] FROM \nothing + v3.[bits 0 to 34359738359] FROM \nothing (and SELF) + v5.[bits 0 to ..] FROM v (and SELF) + S_0_t[bits 0 to ..] FROM v; v1.[bits 8 to ..]; v2[..]; t[5] (and SELF) + S_1_t[bits 0 to ..] FROM v; v1.[bits 8 to ..]; v2[..]; t[5] (and SELF) +[from] call to cast_address at tests/non-free/imprecise.c:146 (by main): + NO EFFECTS +[from] call to garbled_mix_null at tests/non-free/imprecise.c:147 (by main): + NULL[100..200] + FROM NULL[100..200]; addr; + alloced_return_gm_f1[bits 0 to ..] (and SELF) + addr FROM NULL[100..200]; addr; + alloced_return_gm_f1[bits 0 to ..] (and SELF) + p_gm_null FROM \nothing + alloced_return_gm_f1[bits 0 to ..] + FROM NULL[100..200]; addr; + alloced_return_gm_f1[bits 0 to ..] (and SELF) +[from] call to weak_update_imprecise_size at tests/non-free/imprecise.c:148 (by main): + s1.[bits 0 to ..] FROM s2[..] (and SELF) +[from] call to many_writes at tests/non-free/imprecise.c:149 (by main): + NO EFFECTS +[from] call to overlap at tests/non-free/imprecise.c:150 (by main): + NO EFFECTS +[from] call to paste_big at tests/non-free/imprecise.c:151 (by main): + NO EFFECTS +[from] entry point: + NULL[100..200] + FROM NULL[100..200]; v; addr; v1.[bits 8 to ..]; v2[..]; t[5]; + alloced_return_gm_f1[bits 0 to ..] (and SELF) + addr FROM NULL[100..200]; v; addr; v1.[bits 8 to ..]; v2[..]; t[5]; + alloced_return_gm_f1[bits 0 to ..] (and SELF) + v1.[bits 0 to 7] FROM v; v2[..] + .[bits 8 to ..] FROM v; v2[..] (and SELF) + v2{.[bits 0 to 31]; .[bits 64 to ..]} + FROM v; v1.[bits 8 to ..]; v2[..] (and SELF) + .[bits 32 to 63] FROM \nothing + v3.[bits 0 to 34359738359] FROM \nothing (and SELF) + v5.[bits 0 to ..] FROM v (and SELF) + p_gm_null FROM \nothing + s1.[bits 0 to ..] FROM s2[..] (and SELF) + alloced_return_gm_f1[bits 0 to ..] + FROM NULL[100..200]; v; addr; v1.[bits 8 to ..]; + v2[..]; t[5]; + alloced_return_gm_f1[bits 0 to ..] (and SELF) + S_0_t[bits 0 to ..] FROM v; v1.[bits 8 to ..]; v2[..]; t[5] (and SELF) + S_1_t[bits 0 to ..] FROM v; v1.[bits 8 to ..]; v2[..]; t[5] (and SELF) +[from] ====== END OF CALLWISE DEPENDENCIES ====== +[inout] Out (internal) for function abstract_structs: + NULL[..]; v1[..]; v2[..]; v3.[bits 0 to 34359738359]; v5.[bits 0 to ..]; + p; w1; w; q; p2; p4; p5; p6; S_0_t[..]; S_1_t[..] +[inout] Inputs for function abstract_structs: + v; v1[..]; v2[..]; v3[..]; t[5] +[inout] InOut (internal) for function abstract_structs: + Operational inputs: + v; v1[..]; v2[..]; t[5] + Operational inputs on termination: + v; v1[..]; v2[..]; t[5] + Sure outputs: + v1.[bits 0 to 7]; v2.[bits 32 to 63]; p; q; p2; p4; p5; p6 +[inout] Out (internal) for function cast_address: + p; c1; c2; c3 +[inout] Inputs for function cast_address: + \nothing +[inout] InOut (internal) for function cast_address: + Operational inputs: + \nothing + Operational inputs on termination: + \nothing + Sure outputs: + p; c1; c2; c3 +[inout] Out (internal) for function garbled_mix_null: + NULL[100..200]; addr; p_gm_null; alloced_return_gm_f1[bits 0 to ..] +[inout] Inputs for function garbled_mix_null: + NULL[100..200]; addr; p_gm_null; alloced_return_gm_f1[bits 0 to ..] +[inout] InOut (internal) for function garbled_mix_null: + Operational inputs: + NULL[100..200]; addr; alloced_return_gm_f1[bits 0 to ..] + Operational inputs on termination: + NULL[100..200]; addr; alloced_return_gm_f1[bits 0 to ..] + Sure outputs: + p_gm_null +[inout] Out (internal) for function invalid_assigns_imprecise: + NULL[..]; p +[inout] Inputs for function invalid_assigns_imprecise: + \nothing +[inout] InOut (internal) for function invalid_assigns_imprecise: + Operational inputs: + \nothing + Operational inputs on termination: + \nothing + Sure outputs: + p +[inout] Out (internal) for function many_writes: + t_packed1{[0..298]; [299].i1}; t_packed2{[0..298]; [299].i1} +[inout] Inputs for function many_writes: + v +[inout] InOut (internal) for function many_writes: + Operational inputs: + v + Operational inputs on termination: + v + Sure outputs: + \nothing +[inout] Out (internal) for function overlap: + t_char[0..99] +[inout] Inputs for function overlap: + v +[inout] InOut (internal) for function overlap: + Operational inputs: + v + Operational inputs on termination: + v + Sure outputs: + \nothing +[inout] Out (internal) for function paste_big: + i; s; t_big[0..299]; v_0 +[inout] Inputs for function paste_big: + v +[inout] InOut (internal) for function paste_big: + Operational inputs: + v; t_big[0].c[192..195] + Operational inputs on termination: + v; t_big[0].c[192..195] + Sure outputs: + i; s; v_0 +[inout] Out (internal) for function weak_update_imprecise_size: + s1[..]; vx; vy +[inout] Inputs for function weak_update_imprecise_size: + v; s2[..] +[inout] InOut (internal) for function weak_update_imprecise_size: + Operational inputs: + v; s2[..] + Operational inputs on termination: + v; s2[..] + Sure outputs: + vx +[inout] Out (internal) for function write_garbled: + NULL[100..200]; i; j; k[0..4]; p +[inout] Inputs for function write_garbled: + \nothing +[inout] InOut (internal) for function write_garbled: + Operational inputs: + \nothing + Operational inputs on termination: + \nothing + Sure outputs: + i; j; k[0..4]; p +[inout] Out (internal) for function main: + NULL[..]; addr; v1[..]; v2[..]; v3.[bits 0 to 34359738359]; + v5.[bits 0 to ..]; p_gm_null; s1[..]; alloced_return_gm_f1[bits 0 to ..]; + S_0_t[..]; S_1_t[..] +[inout] Inputs for function main: + NULL[100..200]; v; addr; v1[..]; v2[..]; v3[..]; t[5]; p_gm_null; s2[..]; + alloced_return_gm_f1[bits 0 to ..] +[inout] InOut (internal) for function main: + Operational inputs: + NULL[100..200]; v; addr; v1[..]; v2[..]; t[5]; s2[..]; + alloced_return_gm_f1[bits 0 to ..] + Operational inputs on termination: + NULL[100..200]; v; addr; v1[..]; v2[..]; t[5]; s2[..]; + alloced_return_gm_f1[bits 0 to ..] + Sure outputs: + v1.[bits 0 to 7]; v2.[bits 32 to 63]; p_gm_null diff --git a/tests/non-free/oracle_symblocs/linked_list.0.err.oracle b/tests/non-free/oracle_symblocs/linked_list.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/non-free/oracle_symblocs/linked_list.0.res.oracle b/tests/non-free/oracle_symblocs/linked_list.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..c5ec082db07d7dcc8da9c484f5b9db4fa78a1c29 --- /dev/null +++ b/tests/non-free/oracle_symblocs/linked_list.0.res.oracle @@ -0,0 +1,1298 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/non-free/linked_list.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + MEMORY[0..1023] ∈ {0} + __FC_errno ∈ [--..--] + __fc_stderr ∈ {{ &__fc_initial_stderr }} + __fc_stdin ∈ {{ &__fc_initial_stdin }} + __fc_stdout ∈ {{ &__fc_initial_stdout }} + __fc_fopen[0..511] ∈ {0} + __p_fc_fopen ∈ {{ &__fc_fopen[0] }} + __fc_initial_stdout.__fc_stdio_id ∈ {1} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stderr.__fc_stdio_id ∈ {2} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stdin ∈ {0} + next_free ∈ {0} +tests/non-free/linked_list.c:39:[value] entering loop for the first time +[value] DUMPING STATE of file tests/non-free/linked_list.c line 40 + MEMORY[0..1023] ∈ {0} + __FC_errno ∈ [--..--] + __fc_stderr ∈ {{ &__fc_initial_stderr }} + __fc_stdin ∈ {{ &__fc_initial_stdin }} + __fc_stdout ∈ {{ &__fc_initial_stdout }} + __fc_fopen[0..511] ∈ {0} + __p_fc_fopen ∈ {{ &__fc_fopen[0] }} + __fc_initial_stdout.__fc_stdio_id ∈ {1} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stderr.__fc_stdio_id ∈ {2} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stdin ∈ {0} + curr ∈ UNINITIALIZED + head ∈ {0} + i ∈ {1} + next_free ∈ {0} + =END OF DUMP== +[value] computing for function malloc <- main. + Called from tests/non-free/linked_list.c:41. +[value] Recording results for malloc +[value] Done for function malloc +[value] DUMPING STATE of file tests/non-free/linked_list.c line 42 + MEMORY[0..1023] ∈ {0} + __FC_errno ∈ [--..--] + __fc_stderr ∈ {{ &__fc_initial_stderr }} + __fc_stdin ∈ {{ &__fc_initial_stdin }} + __fc_stdout ∈ {{ &__fc_initial_stdout }} + __fc_fopen[0..511] ∈ {0} + __p_fc_fopen ∈ {{ &__fc_fopen[0] }} + __fc_initial_stdout.__fc_stdio_id ∈ {1} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stderr.__fc_stdio_id ∈ {2} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stdin ∈ {0} + curr ∈ {{ (item *)&MEMORY }} + head ∈ {0} + i ∈ {1} + next_free ∈ {8} + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/linked_list.c line 40 + MEMORY[bits 0 to 31] ∈ {0; 1} + [4..1023] ∈ {0} + __FC_errno ∈ [--..--] + __fc_stderr ∈ {{ &__fc_initial_stderr }} + __fc_stdin ∈ {{ &__fc_initial_stdin }} + __fc_stdout ∈ {{ &__fc_initial_stdout }} + __fc_fopen[0..511] ∈ {0} + __p_fc_fopen ∈ {{ &__fc_fopen[0] }} + __fc_initial_stdout.__fc_stdio_id ∈ {1} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stderr.__fc_stdio_id ∈ {2} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stdin ∈ {0} + curr ∈ {{ (item *)&MEMORY }} or UNINITIALIZED + head ∈ {{ NULL ; (item *)&MEMORY }} + i ∈ {1; 2} + next_free ∈ {0; 8} + =END OF DUMP== +[value] computing for function malloc <- main. + Called from tests/non-free/linked_list.c:41. +[value] Recording results for malloc +[value] Done for function malloc +[value] DUMPING STATE of file tests/non-free/linked_list.c line 42 + MEMORY[bits 0 to 31] ∈ {0; 1} + [4..1023] ∈ {0} + __FC_errno ∈ [--..--] + __fc_stderr ∈ {{ &__fc_initial_stderr }} + __fc_stdin ∈ {{ &__fc_initial_stdin }} + __fc_stdout ∈ {{ &__fc_initial_stdout }} + __fc_fopen[0..511] ∈ {0} + __p_fc_fopen ∈ {{ &__fc_fopen[0] }} + __fc_initial_stdout.__fc_stdio_id ∈ {1} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stderr.__fc_stdio_id ∈ {2} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stdin ∈ {0} + curr ∈ {{ (item *)&MEMORY{[0], [8]} }} + head ∈ {{ NULL ; (item *)&MEMORY }} + i ∈ {1; 2} + next_free ∈ {8; 16} + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/linked_list.c line 40 + MEMORY[bits 0 to 31] ∈ {0; 1; 2} + [bits 32 to 63] ∈ {{ NULL ; (? *)&MEMORY }} + [bits 64 to 95] ∈ {0; 1; 2} + [bits 96 to 127] ∈ {{ NULL ; (? *)&MEMORY }} + [16..1023] ∈ {0} + __FC_errno ∈ [--..--] + __fc_stderr ∈ {{ &__fc_initial_stderr }} + __fc_stdin ∈ {{ &__fc_initial_stdin }} + __fc_stdout ∈ {{ &__fc_initial_stdout }} + __fc_fopen[0..511] ∈ {0} + __p_fc_fopen ∈ {{ &__fc_fopen[0] }} + __fc_initial_stdout.__fc_stdio_id ∈ {1} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stderr.__fc_stdio_id ∈ {2} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stdin ∈ {0} + curr ∈ {{ (item *)&MEMORY{[0], [8]} }} or UNINITIALIZED + head ∈ {{ NULL ; (item *)&MEMORY{[0], [8]} }} + i ∈ {1; 2; 3} + next_free ∈ {0; 8; 16} + =END OF DUMP== +[value] computing for function malloc <- main. + Called from tests/non-free/linked_list.c:41. +[value] Recording results for malloc +[value] Done for function malloc +[value] DUMPING STATE of file tests/non-free/linked_list.c line 42 + MEMORY[bits 0 to 31] ∈ {0; 1; 2} + [bits 32 to 63] ∈ {{ NULL ; (? *)&MEMORY }} + [bits 64 to 95] ∈ {0; 1; 2} + [bits 96 to 127] ∈ {{ NULL ; (? *)&MEMORY }} + [16..1023] ∈ {0} + __FC_errno ∈ [--..--] + __fc_stderr ∈ {{ &__fc_initial_stderr }} + __fc_stdin ∈ {{ &__fc_initial_stdin }} + __fc_stdout ∈ {{ &__fc_initial_stdout }} + __fc_fopen[0..511] ∈ {0} + __p_fc_fopen ∈ {{ &__fc_fopen[0] }} + __fc_initial_stdout.__fc_stdio_id ∈ {1} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stderr.__fc_stdio_id ∈ {2} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stdin ∈ {0} + curr ∈ {{ (item *)&MEMORY{[0], [8], [16]} }} + head ∈ {{ NULL ; (item *)&MEMORY{[0], [8]} }} + i ∈ {1; 2; 3} + next_free ∈ {8; 16; 24} + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/linked_list.c line 40 + MEMORY[bits 0 to 31] ∈ {0; 1; 2; 3} + [bits 32 to 63] ∈ {{ NULL ; (? *)&MEMORY{[0], [8]} }} + [bits 64 to 95] ∈ {0; 1; 2; 3} + [bits 96 to 127] ∈ {{ NULL ; (? *)&MEMORY{[0], [8]} }} + [bits 128 to 159] ∈ {0; 1; 2; 3} + [bits 160 to 191] ∈ {{ NULL ; (? *)&MEMORY{[0], [8]} }} + [24..1023] ∈ {0} + __FC_errno ∈ [--..--] + __fc_stderr ∈ {{ &__fc_initial_stderr }} + __fc_stdin ∈ {{ &__fc_initial_stdin }} + __fc_stdout ∈ {{ &__fc_initial_stdout }} + __fc_fopen[0..511] ∈ {0} + __p_fc_fopen ∈ {{ &__fc_fopen[0] }} + __fc_initial_stdout.__fc_stdio_id ∈ {1} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stderr.__fc_stdio_id ∈ {2} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stdin ∈ {0} + curr ∈ {{ (item *)&MEMORY{[0], [8], [16]} }} or UNINITIALIZED + head ∈ {{ NULL ; (item *)&MEMORY{[0], [8], [16]} }} + i ∈ [1..10] + next_free ∈ {0; 8; 16; 24} + =END OF DUMP== +[value] computing for function malloc <- main. + Called from tests/non-free/linked_list.c:41. +[value] Recording results for malloc +[value] Done for function malloc +[value] DUMPING STATE of file tests/non-free/linked_list.c line 42 + MEMORY[bits 0 to 31] ∈ {0; 1; 2; 3} + [bits 32 to 63] ∈ {{ NULL ; (? *)&MEMORY{[0], [8]} }} + [bits 64 to 95] ∈ {0; 1; 2; 3} + [bits 96 to 127] ∈ {{ NULL ; (? *)&MEMORY{[0], [8]} }} + [bits 128 to 159] ∈ {0; 1; 2; 3} + [bits 160 to 191] ∈ {{ NULL ; (? *)&MEMORY{[0], [8]} }} + [24..1023] ∈ {0} + __FC_errno ∈ [--..--] + __fc_stderr ∈ {{ &__fc_initial_stderr }} + __fc_stdin ∈ {{ &__fc_initial_stdin }} + __fc_stdout ∈ {{ &__fc_initial_stdout }} + __fc_fopen[0..511] ∈ {0} + __p_fc_fopen ∈ {{ &__fc_fopen[0] }} + __fc_initial_stdout.__fc_stdio_id ∈ {1} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stderr.__fc_stdio_id ∈ {2} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stdin ∈ {0} + curr ∈ {{ (item *)&MEMORY{[0], [8], [16], [24]} }} + head ∈ {{ NULL ; (item *)&MEMORY{[0], [8], [16]} }} + i ∈ [1..10] + next_free ∈ {8; 16; 24; 32} + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/linked_list.c line 40 + MEMORY[bits 0 to 31] ∈ [0..10] + [bits 32 to 63] ∈ {{ NULL ; (? *)&MEMORY{[0], [8], [16]} }} + [bits 64 to 95] ∈ [0..10] + [bits 96 to 127] ∈ {{ NULL ; (? *)&MEMORY{[0], [8], [16]} }} + [bits 128 to 159] ∈ [0..10] + [bits 160 to 191] ∈ {{ NULL ; (? *)&MEMORY{[0], [8], [16]} }} + [bits 192 to 223] ∈ [0..10] + [bits 224 to 255] ∈ {{ NULL ; (? *)&MEMORY{[0], [8], [16]} }} + [32..1023] ∈ {0} + __FC_errno ∈ [--..--] + __fc_stderr ∈ {{ &__fc_initial_stderr }} + __fc_stdin ∈ {{ &__fc_initial_stdin }} + __fc_stdout ∈ {{ &__fc_initial_stdout }} + __fc_fopen[0..511] ∈ {0} + __p_fc_fopen ∈ {{ &__fc_fopen[0] }} + __fc_initial_stdout.__fc_stdio_id ∈ {1} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stderr.__fc_stdio_id ∈ {2} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stdin ∈ {0} + curr ∈ {{ (item *)&MEMORY{[0], [8], [16], [24]} }} or UNINITIALIZED + head ∈ {{ NULL ; (item *)&MEMORY{[0], [8], [16], [24]} }} + i ∈ [1..10] + next_free ∈ {0; 8; 16; 24; 32} + =END OF DUMP== +[value] computing for function malloc <- main. + Called from tests/non-free/linked_list.c:41. +[value] Recording results for malloc +[value] Done for function malloc +[value] DUMPING STATE of file tests/non-free/linked_list.c line 42 + MEMORY[bits 0 to 31] ∈ [0..10] + [bits 32 to 63] ∈ {{ NULL ; (? *)&MEMORY{[0], [8], [16]} }} + [bits 64 to 95] ∈ [0..10] + [bits 96 to 127] ∈ {{ NULL ; (? *)&MEMORY{[0], [8], [16]} }} + [bits 128 to 159] ∈ [0..10] + [bits 160 to 191] ∈ {{ NULL ; (? *)&MEMORY{[0], [8], [16]} }} + [bits 192 to 223] ∈ [0..10] + [bits 224 to 255] ∈ {{ NULL ; (? *)&MEMORY{[0], [8], [16]} }} + [32..1023] ∈ {0} + __FC_errno ∈ [--..--] + __fc_stderr ∈ {{ &__fc_initial_stderr }} + __fc_stdin ∈ {{ &__fc_initial_stdin }} + __fc_stdout ∈ {{ &__fc_initial_stdout }} + __fc_fopen[0..511] ∈ {0} + __p_fc_fopen ∈ {{ &__fc_fopen[0] }} + __fc_initial_stdout.__fc_stdio_id ∈ {1} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stderr.__fc_stdio_id ∈ {2} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stdin ∈ {0} + curr ∈ {{ (item *)&MEMORY{[0], [8], [16], [24], [32]} }} + head ∈ {{ NULL ; (item *)&MEMORY{[0], [8], [16], [24]} }} + i ∈ [1..10] + next_free ∈ {8; 16; 24; 32; 40} + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/linked_list.c line 40 + MEMORY[bits 0 to 31] ∈ [0..10] + [bits 32 to 63] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 64 to 95] ∈ [0..10] + [bits 96 to 127] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 128 to 159] ∈ [0..10] + [bits 160 to 191] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 192 to 223] ∈ [0..10] + [bits 224 to 255] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 256 to 287] ∈ [0..10] + [bits 288 to 319] ∈ {{ NULL ; (? *)&MEMORY{[0], [8], [16], [24]} }} + [40..1023] ∈ {0} + __FC_errno ∈ [--..--] + __fc_stderr ∈ {{ &__fc_initial_stderr }} + __fc_stdin ∈ {{ &__fc_initial_stdin }} + __fc_stdout ∈ {{ &__fc_initial_stdout }} + __fc_fopen[0..511] ∈ {0} + __p_fc_fopen ∈ {{ &__fc_fopen[0] }} + __fc_initial_stdout.__fc_stdio_id ∈ {1} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stderr.__fc_stdio_id ∈ {2} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stdin ∈ {0} + curr ∈ {{ &MEMORY + [0..1016],0%8 }} or UNINITIALIZED + head ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + i ∈ [1..10] + next_free ∈ [0..2147483640],0%8 + =END OF DUMP== +[value] computing for function malloc <- main. + Called from tests/non-free/linked_list.c:41. +[value] Recording results for malloc +[value] Done for function malloc +[value] DUMPING STATE of file tests/non-free/linked_list.c line 42 + MEMORY[bits 0 to 31] ∈ [0..10] + [bits 32 to 63] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 64 to 95] ∈ [0..10] + [bits 96 to 127] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 128 to 159] ∈ [0..10] + [bits 160 to 191] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 192 to 223] ∈ [0..10] + [bits 224 to 255] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 256 to 287] ∈ [0..10] + [bits 288 to 319] ∈ {{ NULL ; (? *)&MEMORY{[0], [8], [16], [24]} }} + [40..1023] ∈ {0} + __FC_errno ∈ [--..--] + __fc_stderr ∈ {{ &__fc_initial_stderr }} + __fc_stdin ∈ {{ &__fc_initial_stdin }} + __fc_stdout ∈ {{ &__fc_initial_stdout }} + __fc_fopen[0..511] ∈ {0} + __p_fc_fopen ∈ {{ &__fc_fopen[0] }} + __fc_initial_stdout.__fc_stdio_id ∈ {1} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stderr.__fc_stdio_id ∈ {2} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stdin ∈ {0} + curr ∈ {{ NULL ; &MEMORY + [0..4294967288],0%8 }} + head ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + i ∈ [1..10] + next_free ∈ [-2147483648..2147483640],0%8 + =END OF DUMP== +tests/non-free/linked_list.c:43:[value] warning: out of bounds write. assert \valid(&curr->val); +[value] DUMPING STATE of file tests/non-free/linked_list.c line 40 + MEMORY[bits 0 to 31] ∈ [0..10] + [bits 32 to 63] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 64 to 95] ∈ [0..10] + [bits 96 to 127] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 128 to 159] ∈ [0..10] + [bits 160 to 191] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 192 to 223] ∈ [0..10] + [bits 224 to 255] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 256 to 287] ∈ [0..10] + [bits 288 to 319] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 320 to 351] ∈ [0..10] + [bits 352 to 383] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 384 to 415] ∈ [0..10] + [bits 416 to 447] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 448 to 479] ∈ [0..10] + [bits 480 to 511] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 512 to 543] ∈ [0..10] + [bits 544 to 575] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 576 to 607] ∈ [0..10] + [bits 608 to 639] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 640 to 671] ∈ [0..10] + [bits 672 to 703] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 704 to 735] ∈ [0..10] + [bits 736 to 767] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 768 to 799] ∈ [0..10] + [bits 800 to 831] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 832 to 863] ∈ [0..10] + [bits 864 to 895] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 896 to 927] ∈ [0..10] + [bits 928 to 959] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 960 to 991] ∈ [0..10] + [bits 992 to 1023] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 1024 to 1055] ∈ [0..10] + [bits 1056 to 1087] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 1088 to 1119] ∈ [0..10] + [bits 1120 to 1151] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 1152 to 1183] ∈ [0..10] + [bits 1184 to 1215] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 1216 to 1247] ∈ [0..10] + [bits 1248 to 1279] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 1280 to 1311] ∈ [0..10] + [bits 1312 to 1343] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 1344 to 1375] ∈ [0..10] + [bits 1376 to 1407] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 1408 to 1439] ∈ [0..10] + [bits 1440 to 1471] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 1472 to 1503] ∈ [0..10] + [bits 1504 to 1535] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 1536 to 1567] ∈ [0..10] + [bits 1568 to 1599] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 1600 to 1631] ∈ [0..10] + [bits 1632 to 1663] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 1664 to 1695] ∈ [0..10] + [bits 1696 to 1727] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 1728 to 1759] ∈ [0..10] + [bits 1760 to 1791] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 1792 to 1823] ∈ [0..10] + [bits 1824 to 1855] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 1856 to 1887] ∈ [0..10] + [bits 1888 to 1919] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 1920 to 1951] ∈ [0..10] + [bits 1952 to 1983] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 1984 to 2015] ∈ [0..10] + [bits 2016 to 2047] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 2048 to 2079] ∈ [0..10] + [bits 2080 to 2111] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 2112 to 2143] ∈ [0..10] + [bits 2144 to 2175] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 2176 to 2207] ∈ [0..10] + [bits 2208 to 2239] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 2240 to 2271] ∈ [0..10] + [bits 2272 to 2303] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 2304 to 2335] ∈ [0..10] + [bits 2336 to 2367] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 2368 to 2399] ∈ [0..10] + [bits 2400 to 2431] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 2432 to 2463] ∈ [0..10] + [bits 2464 to 2495] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 2496 to 2527] ∈ [0..10] + [bits 2528 to 2559] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 2560 to 2591] ∈ [0..10] + [bits 2592 to 2623] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 2624 to 2655] ∈ [0..10] + [bits 2656 to 2687] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 2688 to 2719] ∈ [0..10] + [bits 2720 to 2751] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 2752 to 2783] ∈ [0..10] + [bits 2784 to 2815] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 2816 to 2847] ∈ [0..10] + [bits 2848 to 2879] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 2880 to 2911] ∈ [0..10] + [bits 2912 to 2943] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 2944 to 2975] ∈ [0..10] + [bits 2976 to 3007] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 3008 to 3039] ∈ [0..10] + [bits 3040 to 3071] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 3072 to 3103] ∈ [0..10] + [bits 3104 to 3135] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 3136 to 3167] ∈ [0..10] + [bits 3168 to 3199] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 3200 to 3231] ∈ [0..10] + [bits 3232 to 3263] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 3264 to 3295] ∈ [0..10] + [bits 3296 to 3327] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 3328 to 3359] ∈ [0..10] + [bits 3360 to 3391] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 3392 to 3423] ∈ [0..10] + [bits 3424 to 3455] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 3456 to 3487] ∈ [0..10] + [bits 3488 to 3519] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 3520 to 3551] ∈ [0..10] + [bits 3552 to 3583] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 3584 to 3615] ∈ [0..10] + [bits 3616 to 3647] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 3648 to 3679] ∈ [0..10] + [bits 3680 to 3711] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 3712 to 3743] ∈ [0..10] + [bits 3744 to 3775] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 3776 to 3807] ∈ [0..10] + [bits 3808 to 3839] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 3840 to 3871] ∈ [0..10] + [bits 3872 to 3903] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 3904 to 3935] ∈ [0..10] + [bits 3936 to 3967] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 3968 to 3999] ∈ [0..10] + [bits 4000 to 4031] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 4032 to 4063] ∈ [0..10] + [bits 4064 to 4095] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 4096 to 4127] ∈ [0..10] + [bits 4128 to 4159] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 4160 to 4191] ∈ [0..10] + [bits 4192 to 4223] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 4224 to 4255] ∈ [0..10] + [bits 4256 to 4287] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 4288 to 4319] ∈ [0..10] + [bits 4320 to 4351] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 4352 to 4383] ∈ [0..10] + [bits 4384 to 4415] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 4416 to 4447] ∈ [0..10] + [bits 4448 to 4479] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 4480 to 4511] ∈ [0..10] + [bits 4512 to 4543] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 4544 to 4575] ∈ [0..10] + [bits 4576 to 4607] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 4608 to 4639] ∈ [0..10] + [bits 4640 to 4671] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 4672 to 4703] ∈ [0..10] + [bits 4704 to 4735] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 4736 to 4767] ∈ [0..10] + [bits 4768 to 4799] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 4800 to 4831] ∈ [0..10] + [bits 4832 to 4863] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 4864 to 4895] ∈ [0..10] + [bits 4896 to 4927] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 4928 to 4959] ∈ [0..10] + [bits 4960 to 4991] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 4992 to 5023] ∈ [0..10] + [bits 5024 to 5055] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 5056 to 5087] ∈ [0..10] + [bits 5088 to 5119] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 5120 to 5151] ∈ [0..10] + [bits 5152 to 5183] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 5184 to 5215] ∈ [0..10] + [bits 5216 to 5247] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 5248 to 5279] ∈ [0..10] + [bits 5280 to 5311] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 5312 to 5343] ∈ [0..10] + [bits 5344 to 5375] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 5376 to 5407] ∈ [0..10] + [bits 5408 to 5439] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 5440 to 5471] ∈ [0..10] + [bits 5472 to 5503] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 5504 to 5535] ∈ [0..10] + [bits 5536 to 5567] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 5568 to 5599] ∈ [0..10] + [bits 5600 to 5631] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 5632 to 5663] ∈ [0..10] + [bits 5664 to 5695] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 5696 to 5727] ∈ [0..10] + [bits 5728 to 5759] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 5760 to 5791] ∈ [0..10] + [bits 5792 to 5823] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 5824 to 5855] ∈ [0..10] + [bits 5856 to 5887] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 5888 to 5919] ∈ [0..10] + [bits 5920 to 5951] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 5952 to 5983] ∈ [0..10] + [bits 5984 to 6015] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 6016 to 6047] ∈ [0..10] + [bits 6048 to 6079] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 6080 to 6111] ∈ [0..10] + [bits 6112 to 6143] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 6144 to 6175] ∈ [0..10] + [bits 6176 to 6207] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 6208 to 6239] ∈ [0..10] + [bits 6240 to 6271] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 6272 to 6303] ∈ [0..10] + [bits 6304 to 6335] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 6336 to 6367] ∈ [0..10] + [bits 6368 to 6399] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 6400 to 6431] ∈ [0..10] + [bits 6432 to 6463] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 6464 to 6495] ∈ [0..10] + [bits 6496 to 6527] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 6528 to 6559] ∈ [0..10] + [bits 6560 to 6591] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 6592 to 6623] ∈ [0..10] + [bits 6624 to 6655] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 6656 to 6687] ∈ [0..10] + [bits 6688 to 6719] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 6720 to 6751] ∈ [0..10] + [bits 6752 to 6783] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 6784 to 6815] ∈ [0..10] + [bits 6816 to 6847] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 6848 to 6879] ∈ [0..10] + [bits 6880 to 6911] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 6912 to 6943] ∈ [0..10] + [bits 6944 to 6975] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 6976 to 7007] ∈ [0..10] + [bits 7008 to 7039] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 7040 to 7071] ∈ [0..10] + [bits 7072 to 7103] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 7104 to 7135] ∈ [0..10] + [bits 7136 to 7167] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 7168 to 7199] ∈ [0..10] + [bits 7200 to 7231] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 7232 to 7263] ∈ [0..10] + [bits 7264 to 7295] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 7296 to 7327] ∈ [0..10] + [bits 7328 to 7359] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 7360 to 7391] ∈ [0..10] + [bits 7392 to 7423] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 7424 to 7455] ∈ [0..10] + [bits 7456 to 7487] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 7488 to 7519] ∈ [0..10] + [bits 7520 to 7551] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 7552 to 7583] ∈ [0..10] + [bits 7584 to 7615] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 7616 to 7647] ∈ [0..10] + [bits 7648 to 7679] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 7680 to 7711] ∈ [0..10] + [bits 7712 to 7743] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 7744 to 7775] ∈ [0..10] + [bits 7776 to 7807] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 7808 to 7839] ∈ [0..10] + [bits 7840 to 7871] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 7872 to 7903] ∈ [0..10] + [bits 7904 to 7935] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 7936 to 7967] ∈ [0..10] + [bits 7968 to 7999] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 8000 to 8031] ∈ [0..10] + [bits 8032 to 8063] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 8064 to 8095] ∈ [0..10] + [bits 8096 to 8127] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 8128 to 8159] ∈ [0..10] + [bits 8160 to 8191] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + __FC_errno ∈ [--..--] + __fc_stderr ∈ {{ &__fc_initial_stderr }} + __fc_stdin ∈ {{ &__fc_initial_stdin }} + __fc_stdout ∈ {{ &__fc_initial_stdout }} + __fc_fopen[0..511] ∈ {0} + __p_fc_fopen ∈ {{ &__fc_fopen[0] }} + __fc_initial_stdout.__fc_stdio_id ∈ {1} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stderr.__fc_stdio_id ∈ {2} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stdin ∈ {0} + curr ∈ {{ &MEMORY + [0..1016],0%8 }} or UNINITIALIZED + head ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + i ∈ [1..10] + next_free ∈ [-2147483648..2147483640],0%8 + =END OF DUMP== +[value] computing for function malloc <- main. + Called from tests/non-free/linked_list.c:41. +[value] Recording results for malloc +[value] Done for function malloc +[value] DUMPING STATE of file tests/non-free/linked_list.c line 42 + MEMORY[bits 0 to 31] ∈ [0..10] + [bits 32 to 63] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 64 to 95] ∈ [0..10] + [bits 96 to 127] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 128 to 159] ∈ [0..10] + [bits 160 to 191] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 192 to 223] ∈ [0..10] + [bits 224 to 255] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 256 to 287] ∈ [0..10] + [bits 288 to 319] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 320 to 351] ∈ [0..10] + [bits 352 to 383] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 384 to 415] ∈ [0..10] + [bits 416 to 447] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 448 to 479] ∈ [0..10] + [bits 480 to 511] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 512 to 543] ∈ [0..10] + [bits 544 to 575] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 576 to 607] ∈ [0..10] + [bits 608 to 639] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 640 to 671] ∈ [0..10] + [bits 672 to 703] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 704 to 735] ∈ [0..10] + [bits 736 to 767] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 768 to 799] ∈ [0..10] + [bits 800 to 831] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 832 to 863] ∈ [0..10] + [bits 864 to 895] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 896 to 927] ∈ [0..10] + [bits 928 to 959] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 960 to 991] ∈ [0..10] + [bits 992 to 1023] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 1024 to 1055] ∈ [0..10] + [bits 1056 to 1087] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 1088 to 1119] ∈ [0..10] + [bits 1120 to 1151] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 1152 to 1183] ∈ [0..10] + [bits 1184 to 1215] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 1216 to 1247] ∈ [0..10] + [bits 1248 to 1279] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 1280 to 1311] ∈ [0..10] + [bits 1312 to 1343] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 1344 to 1375] ∈ [0..10] + [bits 1376 to 1407] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 1408 to 1439] ∈ [0..10] + [bits 1440 to 1471] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 1472 to 1503] ∈ [0..10] + [bits 1504 to 1535] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 1536 to 1567] ∈ [0..10] + [bits 1568 to 1599] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 1600 to 1631] ∈ [0..10] + [bits 1632 to 1663] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 1664 to 1695] ∈ [0..10] + [bits 1696 to 1727] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 1728 to 1759] ∈ [0..10] + [bits 1760 to 1791] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 1792 to 1823] ∈ [0..10] + [bits 1824 to 1855] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 1856 to 1887] ∈ [0..10] + [bits 1888 to 1919] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 1920 to 1951] ∈ [0..10] + [bits 1952 to 1983] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 1984 to 2015] ∈ [0..10] + [bits 2016 to 2047] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 2048 to 2079] ∈ [0..10] + [bits 2080 to 2111] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 2112 to 2143] ∈ [0..10] + [bits 2144 to 2175] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 2176 to 2207] ∈ [0..10] + [bits 2208 to 2239] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 2240 to 2271] ∈ [0..10] + [bits 2272 to 2303] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 2304 to 2335] ∈ [0..10] + [bits 2336 to 2367] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 2368 to 2399] ∈ [0..10] + [bits 2400 to 2431] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 2432 to 2463] ∈ [0..10] + [bits 2464 to 2495] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 2496 to 2527] ∈ [0..10] + [bits 2528 to 2559] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 2560 to 2591] ∈ [0..10] + [bits 2592 to 2623] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 2624 to 2655] ∈ [0..10] + [bits 2656 to 2687] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 2688 to 2719] ∈ [0..10] + [bits 2720 to 2751] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 2752 to 2783] ∈ [0..10] + [bits 2784 to 2815] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 2816 to 2847] ∈ [0..10] + [bits 2848 to 2879] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 2880 to 2911] ∈ [0..10] + [bits 2912 to 2943] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 2944 to 2975] ∈ [0..10] + [bits 2976 to 3007] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 3008 to 3039] ∈ [0..10] + [bits 3040 to 3071] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 3072 to 3103] ∈ [0..10] + [bits 3104 to 3135] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 3136 to 3167] ∈ [0..10] + [bits 3168 to 3199] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 3200 to 3231] ∈ [0..10] + [bits 3232 to 3263] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 3264 to 3295] ∈ [0..10] + [bits 3296 to 3327] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 3328 to 3359] ∈ [0..10] + [bits 3360 to 3391] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 3392 to 3423] ∈ [0..10] + [bits 3424 to 3455] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 3456 to 3487] ∈ [0..10] + [bits 3488 to 3519] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 3520 to 3551] ∈ [0..10] + [bits 3552 to 3583] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 3584 to 3615] ∈ [0..10] + [bits 3616 to 3647] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 3648 to 3679] ∈ [0..10] + [bits 3680 to 3711] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 3712 to 3743] ∈ [0..10] + [bits 3744 to 3775] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 3776 to 3807] ∈ [0..10] + [bits 3808 to 3839] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 3840 to 3871] ∈ [0..10] + [bits 3872 to 3903] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 3904 to 3935] ∈ [0..10] + [bits 3936 to 3967] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 3968 to 3999] ∈ [0..10] + [bits 4000 to 4031] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 4032 to 4063] ∈ [0..10] + [bits 4064 to 4095] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 4096 to 4127] ∈ [0..10] + [bits 4128 to 4159] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 4160 to 4191] ∈ [0..10] + [bits 4192 to 4223] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 4224 to 4255] ∈ [0..10] + [bits 4256 to 4287] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 4288 to 4319] ∈ [0..10] + [bits 4320 to 4351] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 4352 to 4383] ∈ [0..10] + [bits 4384 to 4415] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 4416 to 4447] ∈ [0..10] + [bits 4448 to 4479] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 4480 to 4511] ∈ [0..10] + [bits 4512 to 4543] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 4544 to 4575] ∈ [0..10] + [bits 4576 to 4607] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 4608 to 4639] ∈ [0..10] + [bits 4640 to 4671] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 4672 to 4703] ∈ [0..10] + [bits 4704 to 4735] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 4736 to 4767] ∈ [0..10] + [bits 4768 to 4799] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 4800 to 4831] ∈ [0..10] + [bits 4832 to 4863] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 4864 to 4895] ∈ [0..10] + [bits 4896 to 4927] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 4928 to 4959] ∈ [0..10] + [bits 4960 to 4991] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 4992 to 5023] ∈ [0..10] + [bits 5024 to 5055] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 5056 to 5087] ∈ [0..10] + [bits 5088 to 5119] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 5120 to 5151] ∈ [0..10] + [bits 5152 to 5183] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 5184 to 5215] ∈ [0..10] + [bits 5216 to 5247] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 5248 to 5279] ∈ [0..10] + [bits 5280 to 5311] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 5312 to 5343] ∈ [0..10] + [bits 5344 to 5375] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 5376 to 5407] ∈ [0..10] + [bits 5408 to 5439] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 5440 to 5471] ∈ [0..10] + [bits 5472 to 5503] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 5504 to 5535] ∈ [0..10] + [bits 5536 to 5567] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 5568 to 5599] ∈ [0..10] + [bits 5600 to 5631] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 5632 to 5663] ∈ [0..10] + [bits 5664 to 5695] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 5696 to 5727] ∈ [0..10] + [bits 5728 to 5759] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 5760 to 5791] ∈ [0..10] + [bits 5792 to 5823] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 5824 to 5855] ∈ [0..10] + [bits 5856 to 5887] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 5888 to 5919] ∈ [0..10] + [bits 5920 to 5951] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 5952 to 5983] ∈ [0..10] + [bits 5984 to 6015] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 6016 to 6047] ∈ [0..10] + [bits 6048 to 6079] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 6080 to 6111] ∈ [0..10] + [bits 6112 to 6143] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 6144 to 6175] ∈ [0..10] + [bits 6176 to 6207] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 6208 to 6239] ∈ [0..10] + [bits 6240 to 6271] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 6272 to 6303] ∈ [0..10] + [bits 6304 to 6335] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 6336 to 6367] ∈ [0..10] + [bits 6368 to 6399] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 6400 to 6431] ∈ [0..10] + [bits 6432 to 6463] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 6464 to 6495] ∈ [0..10] + [bits 6496 to 6527] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 6528 to 6559] ∈ [0..10] + [bits 6560 to 6591] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 6592 to 6623] ∈ [0..10] + [bits 6624 to 6655] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 6656 to 6687] ∈ [0..10] + [bits 6688 to 6719] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 6720 to 6751] ∈ [0..10] + [bits 6752 to 6783] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 6784 to 6815] ∈ [0..10] + [bits 6816 to 6847] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 6848 to 6879] ∈ [0..10] + [bits 6880 to 6911] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 6912 to 6943] ∈ [0..10] + [bits 6944 to 6975] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 6976 to 7007] ∈ [0..10] + [bits 7008 to 7039] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 7040 to 7071] ∈ [0..10] + [bits 7072 to 7103] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 7104 to 7135] ∈ [0..10] + [bits 7136 to 7167] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 7168 to 7199] ∈ [0..10] + [bits 7200 to 7231] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 7232 to 7263] ∈ [0..10] + [bits 7264 to 7295] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 7296 to 7327] ∈ [0..10] + [bits 7328 to 7359] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 7360 to 7391] ∈ [0..10] + [bits 7392 to 7423] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 7424 to 7455] ∈ [0..10] + [bits 7456 to 7487] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 7488 to 7519] ∈ [0..10] + [bits 7520 to 7551] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 7552 to 7583] ∈ [0..10] + [bits 7584 to 7615] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 7616 to 7647] ∈ [0..10] + [bits 7648 to 7679] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 7680 to 7711] ∈ [0..10] + [bits 7712 to 7743] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 7744 to 7775] ∈ [0..10] + [bits 7776 to 7807] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 7808 to 7839] ∈ [0..10] + [bits 7840 to 7871] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 7872 to 7903] ∈ [0..10] + [bits 7904 to 7935] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 7936 to 7967] ∈ [0..10] + [bits 7968 to 7999] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 8000 to 8031] ∈ [0..10] + [bits 8032 to 8063] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 8064 to 8095] ∈ [0..10] + [bits 8096 to 8127] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 8128 to 8159] ∈ [0..10] + [bits 8160 to 8191] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + __FC_errno ∈ [--..--] + __fc_stderr ∈ {{ &__fc_initial_stderr }} + __fc_stdin ∈ {{ &__fc_initial_stdin }} + __fc_stdout ∈ {{ &__fc_initial_stdout }} + __fc_fopen[0..511] ∈ {0} + __p_fc_fopen ∈ {{ &__fc_fopen[0] }} + __fc_initial_stdout.__fc_stdio_id ∈ {1} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stderr.__fc_stdio_id ∈ {2} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stdin ∈ {0} + curr ∈ {{ NULL ; &MEMORY + [0..4294967288],0%8 }} + head ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + i ∈ [1..10] + next_free ∈ [-2147483648..2147483640],0%8 + =END OF DUMP== +tests/non-free/linked_list.c:50:[value] entering loop for the first time +[value] computing for function printf <- main. + Called from tests/non-free/linked_list.c:51. +[value] using specification for function printf +[value] Done for function printf +[value] computing for function printf <- main. + Called from tests/non-free/linked_list.c:51. +[value] Done for function printf +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function malloc: + next_free ∈ [-2147483648..2147483640],0%8 + __retres ∈ {{ NULL ; &MEMORY + [0..4294967288],0%8 }} +[value:final-states] Values at end of function main: + MEMORY[bits 0 to 31] ∈ [0..10] + [bits 32 to 63] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 64 to 95] ∈ [0..10] + [bits 96 to 127] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 128 to 159] ∈ [0..10] + [bits 160 to 191] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 192 to 223] ∈ [0..10] + [bits 224 to 255] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 256 to 287] ∈ [0..10] + [bits 288 to 319] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 320 to 351] ∈ [0..10] + [bits 352 to 383] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 384 to 415] ∈ [0..10] + [bits 416 to 447] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 448 to 479] ∈ [0..10] + [bits 480 to 511] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 512 to 543] ∈ [0..10] + [bits 544 to 575] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 576 to 607] ∈ [0..10] + [bits 608 to 639] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 640 to 671] ∈ [0..10] + [bits 672 to 703] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 704 to 735] ∈ [0..10] + [bits 736 to 767] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 768 to 799] ∈ [0..10] + [bits 800 to 831] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 832 to 863] ∈ [0..10] + [bits 864 to 895] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 896 to 927] ∈ [0..10] + [bits 928 to 959] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 960 to 991] ∈ [0..10] + [bits 992 to 1023] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 1024 to 1055] ∈ [0..10] + [bits 1056 to 1087] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 1088 to 1119] ∈ [0..10] + [bits 1120 to 1151] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 1152 to 1183] ∈ [0..10] + [bits 1184 to 1215] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 1216 to 1247] ∈ [0..10] + [bits 1248 to 1279] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 1280 to 1311] ∈ [0..10] + [bits 1312 to 1343] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 1344 to 1375] ∈ [0..10] + [bits 1376 to 1407] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 1408 to 1439] ∈ [0..10] + [bits 1440 to 1471] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 1472 to 1503] ∈ [0..10] + [bits 1504 to 1535] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 1536 to 1567] ∈ [0..10] + [bits 1568 to 1599] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 1600 to 1631] ∈ [0..10] + [bits 1632 to 1663] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 1664 to 1695] ∈ [0..10] + [bits 1696 to 1727] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 1728 to 1759] ∈ [0..10] + [bits 1760 to 1791] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 1792 to 1823] ∈ [0..10] + [bits 1824 to 1855] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 1856 to 1887] ∈ [0..10] + [bits 1888 to 1919] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 1920 to 1951] ∈ [0..10] + [bits 1952 to 1983] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 1984 to 2015] ∈ [0..10] + [bits 2016 to 2047] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 2048 to 2079] ∈ [0..10] + [bits 2080 to 2111] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 2112 to 2143] ∈ [0..10] + [bits 2144 to 2175] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 2176 to 2207] ∈ [0..10] + [bits 2208 to 2239] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 2240 to 2271] ∈ [0..10] + [bits 2272 to 2303] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 2304 to 2335] ∈ [0..10] + [bits 2336 to 2367] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 2368 to 2399] ∈ [0..10] + [bits 2400 to 2431] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 2432 to 2463] ∈ [0..10] + [bits 2464 to 2495] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 2496 to 2527] ∈ [0..10] + [bits 2528 to 2559] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 2560 to 2591] ∈ [0..10] + [bits 2592 to 2623] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 2624 to 2655] ∈ [0..10] + [bits 2656 to 2687] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 2688 to 2719] ∈ [0..10] + [bits 2720 to 2751] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 2752 to 2783] ∈ [0..10] + [bits 2784 to 2815] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 2816 to 2847] ∈ [0..10] + [bits 2848 to 2879] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 2880 to 2911] ∈ [0..10] + [bits 2912 to 2943] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 2944 to 2975] ∈ [0..10] + [bits 2976 to 3007] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 3008 to 3039] ∈ [0..10] + [bits 3040 to 3071] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 3072 to 3103] ∈ [0..10] + [bits 3104 to 3135] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 3136 to 3167] ∈ [0..10] + [bits 3168 to 3199] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 3200 to 3231] ∈ [0..10] + [bits 3232 to 3263] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 3264 to 3295] ∈ [0..10] + [bits 3296 to 3327] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 3328 to 3359] ∈ [0..10] + [bits 3360 to 3391] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 3392 to 3423] ∈ [0..10] + [bits 3424 to 3455] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 3456 to 3487] ∈ [0..10] + [bits 3488 to 3519] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 3520 to 3551] ∈ [0..10] + [bits 3552 to 3583] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 3584 to 3615] ∈ [0..10] + [bits 3616 to 3647] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 3648 to 3679] ∈ [0..10] + [bits 3680 to 3711] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 3712 to 3743] ∈ [0..10] + [bits 3744 to 3775] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 3776 to 3807] ∈ [0..10] + [bits 3808 to 3839] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 3840 to 3871] ∈ [0..10] + [bits 3872 to 3903] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 3904 to 3935] ∈ [0..10] + [bits 3936 to 3967] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 3968 to 3999] ∈ [0..10] + [bits 4000 to 4031] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 4032 to 4063] ∈ [0..10] + [bits 4064 to 4095] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 4096 to 4127] ∈ [0..10] + [bits 4128 to 4159] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 4160 to 4191] ∈ [0..10] + [bits 4192 to 4223] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 4224 to 4255] ∈ [0..10] + [bits 4256 to 4287] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 4288 to 4319] ∈ [0..10] + [bits 4320 to 4351] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 4352 to 4383] ∈ [0..10] + [bits 4384 to 4415] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 4416 to 4447] ∈ [0..10] + [bits 4448 to 4479] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 4480 to 4511] ∈ [0..10] + [bits 4512 to 4543] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 4544 to 4575] ∈ [0..10] + [bits 4576 to 4607] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 4608 to 4639] ∈ [0..10] + [bits 4640 to 4671] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 4672 to 4703] ∈ [0..10] + [bits 4704 to 4735] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 4736 to 4767] ∈ [0..10] + [bits 4768 to 4799] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 4800 to 4831] ∈ [0..10] + [bits 4832 to 4863] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 4864 to 4895] ∈ [0..10] + [bits 4896 to 4927] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 4928 to 4959] ∈ [0..10] + [bits 4960 to 4991] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 4992 to 5023] ∈ [0..10] + [bits 5024 to 5055] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 5056 to 5087] ∈ [0..10] + [bits 5088 to 5119] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 5120 to 5151] ∈ [0..10] + [bits 5152 to 5183] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 5184 to 5215] ∈ [0..10] + [bits 5216 to 5247] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 5248 to 5279] ∈ [0..10] + [bits 5280 to 5311] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 5312 to 5343] ∈ [0..10] + [bits 5344 to 5375] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 5376 to 5407] ∈ [0..10] + [bits 5408 to 5439] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 5440 to 5471] ∈ [0..10] + [bits 5472 to 5503] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 5504 to 5535] ∈ [0..10] + [bits 5536 to 5567] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 5568 to 5599] ∈ [0..10] + [bits 5600 to 5631] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 5632 to 5663] ∈ [0..10] + [bits 5664 to 5695] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 5696 to 5727] ∈ [0..10] + [bits 5728 to 5759] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 5760 to 5791] ∈ [0..10] + [bits 5792 to 5823] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 5824 to 5855] ∈ [0..10] + [bits 5856 to 5887] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 5888 to 5919] ∈ [0..10] + [bits 5920 to 5951] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 5952 to 5983] ∈ [0..10] + [bits 5984 to 6015] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 6016 to 6047] ∈ [0..10] + [bits 6048 to 6079] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 6080 to 6111] ∈ [0..10] + [bits 6112 to 6143] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 6144 to 6175] ∈ [0..10] + [bits 6176 to 6207] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 6208 to 6239] ∈ [0..10] + [bits 6240 to 6271] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 6272 to 6303] ∈ [0..10] + [bits 6304 to 6335] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 6336 to 6367] ∈ [0..10] + [bits 6368 to 6399] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 6400 to 6431] ∈ [0..10] + [bits 6432 to 6463] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 6464 to 6495] ∈ [0..10] + [bits 6496 to 6527] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 6528 to 6559] ∈ [0..10] + [bits 6560 to 6591] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 6592 to 6623] ∈ [0..10] + [bits 6624 to 6655] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 6656 to 6687] ∈ [0..10] + [bits 6688 to 6719] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 6720 to 6751] ∈ [0..10] + [bits 6752 to 6783] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 6784 to 6815] ∈ [0..10] + [bits 6816 to 6847] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 6848 to 6879] ∈ [0..10] + [bits 6880 to 6911] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 6912 to 6943] ∈ [0..10] + [bits 6944 to 6975] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 6976 to 7007] ∈ [0..10] + [bits 7008 to 7039] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 7040 to 7071] ∈ [0..10] + [bits 7072 to 7103] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 7104 to 7135] ∈ [0..10] + [bits 7136 to 7167] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 7168 to 7199] ∈ [0..10] + [bits 7200 to 7231] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 7232 to 7263] ∈ [0..10] + [bits 7264 to 7295] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 7296 to 7327] ∈ [0..10] + [bits 7328 to 7359] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 7360 to 7391] ∈ [0..10] + [bits 7392 to 7423] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 7424 to 7455] ∈ [0..10] + [bits 7456 to 7487] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 7488 to 7519] ∈ [0..10] + [bits 7520 to 7551] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 7552 to 7583] ∈ [0..10] + [bits 7584 to 7615] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 7616 to 7647] ∈ [0..10] + [bits 7648 to 7679] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 7680 to 7711] ∈ [0..10] + [bits 7712 to 7743] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 7744 to 7775] ∈ [0..10] + [bits 7776 to 7807] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 7808 to 7839] ∈ [0..10] + [bits 7840 to 7871] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 7872 to 7903] ∈ [0..10] + [bits 7904 to 7935] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 7936 to 7967] ∈ [0..10] + [bits 7968 to 7999] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 8000 to 8031] ∈ [0..10] + [bits 8032 to 8063] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 8064 to 8095] ∈ [0..10] + [bits 8096 to 8127] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + [bits 8128 to 8159] ∈ [0..10] + [bits 8160 to 8191] ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + __fc_initial_stdout ∈ [--..--] + curr ∈ {0} + head ∈ {{ NULL ; &MEMORY + [0..1016],0%8 }} + i ∈ {11} + next_free ∈ [-2147483648..2147483640],0%8 +[from] Computing for function malloc +[from] Done for function malloc +[from] Computing for function main +[from] Computing for function Frama_C_dump_each <-main +[from] Done for function Frama_C_dump_each +[from] Computing for function printf <-main +[from] Done for function printf +tests/non-free/linked_list.c:51:[from] warning: variadic call detected. Using only 1 argument(s). +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function malloc: + next_free FROM size; next_free + \result FROM size; next_free +[from] Function printf: + __fc_initial_stdout FROM "%d\n" + \result FROM ANYTHING(origin:Unknown) +[from] Function main: + MEMORY{[0..3]; [8..11]; [16..19]; [24..27]; [32..35]; [40..43]; [48..51]; + [56..59]; [64..67]; [72..75]; [80..83]; [88..91]; [96..99]; + [104..107]; [112..115]; [120..123]; [128..131]; [136..139]; + [144..147]; [152..155]; [160..163]; [168..171]; [176..179]; + [184..187]; [192..195]; [200..203]; [208..211]; [216..219]; + [224..227]; [232..235]; [240..243]; [248..251]; [256..259]; + [264..267]; [272..275]; [280..283]; [288..291]; [296..299]; + [304..307]; [312..315]; [320..323]; [328..331]; [336..339]; + [344..347]; [352..355]; [360..363]; [368..371]; [376..379]; + [384..387]; [392..395]; [400..403]; [408..411]; [416..419]; + [424..427]; [432..435]; [440..443]; [448..451]; [456..459]; + [464..467]; [472..475]; [480..483]; [488..491]; [496..499]; + [504..507]; [512..515]; [520..523]; [528..531]; [536..539]; + [544..547]; [552..555]; [560..563]; [568..571]; [576..579]; + [584..587]; [592..595]; [600..603]; [608..611]; [616..619]; + [624..627]; [632..635]; [640..643]; [648..651]; [656..659]; + [664..667]; [672..675]; [680..683]; [688..691]; [696..699]; + [704..707]; [712..715]; [720..723]; [728..731]; [736..739]; + [744..747]; [752..755]; [760..763]; [768..771]; [776..779]; + [784..787]; [792..795]; [800..803]; [808..811]; [816..819]; + [824..827]; [832..835]; [840..843]; [848..851]; [856..859]; + [864..867]; [872..875]; [880..883]; [888..891]; [896..899]; + [904..907]; [912..915]; [920..923]; [928..931]; [936..939]; + [944..947]; [952..955]; [960..963]; [968..971]; [976..979]; + [984..987]; [992..995]; [1000..1003]; [1008..1011]; [1016..1019]} + FROM next_free (and SELF) + {[4..7]; [12..15]; [20..23]; [28..31]; [36..39]; [44..47]; [52..55]; + [60..63]; [68..71]; [76..79]; [84..87]; [92..95]; [100..103]; + [108..111]; [116..119]; [124..127]; [132..135]; [140..143]; + [148..151]; [156..159]; [164..167]; [172..175]; [180..183]; + [188..191]; [196..199]; [204..207]; [212..215]; [220..223]; + [228..231]; [236..239]; [244..247]; [252..255]; [260..263]; + [268..271]; [276..279]; [284..287]; [292..295]; [300..303]; + [308..311]; [316..319]; [324..327]; [332..335]; [340..343]; + [348..351]; [356..359]; [364..367]; [372..375]; [380..383]; + [388..391]; [396..399]; [404..407]; [412..415]; [420..423]; + [428..431]; [436..439]; [444..447]; [452..455]; [460..463]; + [468..471]; [476..479]; [484..487]; [492..495]; [500..503]; + [508..511]; [516..519]; [524..527]; [532..535]; [540..543]; + [548..551]; [556..559]; [564..567]; [572..575]; [580..583]; + [588..591]; [596..599]; [604..607]; [612..615]; [620..623]; + [628..631]; [636..639]; [644..647]; [652..655]; [660..663]; + [668..671]; [676..679]; [684..687]; [692..695]; [700..703]; + [708..711]; [716..719]; [724..727]; [732..735]; [740..743]; + [748..751]; [756..759]; [764..767]; [772..775]; [780..783]; + [788..791]; [796..799]; [804..807]; [812..815]; [820..823]; + [828..831]; [836..839]; [844..847]; [852..855]; [860..863]; + [868..871]; [876..879]; [884..887]; [892..895]; [900..903]; + [908..911]; [916..919]; [924..927]; [932..935]; [940..943]; + [948..951]; [956..959]; [964..967]; [972..975]; [980..983]; + [988..991]; [996..999]; [1004..1007]; [1012..1015]; [1020..1023]} + FROM next_free (and SELF) + __fc_initial_stdout FROM MEMORY{[4..7]; [12..15]; [20..23]; [28..31]; + [36..39]; [44..47]; [52..55]; [60..63]; + [68..71]; [76..79]; [84..87]; [92..95]; + [100..103]; [108..111]; [116..119]; + [124..127]; [132..135]; [140..143]; + [148..151]; [156..159]; [164..167]; + [172..175]; [180..183]; [188..191]; + [196..199]; [204..207]; [212..215]; + [220..223]; [228..231]; [236..239]; + [244..247]; [252..255]; [260..263]; + [268..271]; [276..279]; [284..287]; + [292..295]; [300..303]; [308..311]; + [316..319]; [324..327]; [332..335]; + [340..343]; [348..351]; [356..359]; + [364..367]; [372..375]; [380..383]; + [388..391]; [396..399]; [404..407]; + [412..415]; [420..423]; [428..431]; + [436..439]; [444..447]; [452..455]; + [460..463]; [468..471]; [476..479]; + [484..487]; [492..495]; [500..503]; + [508..511]; [516..519]; [524..527]; + [532..535]; [540..543]; [548..551]; + [556..559]; [564..567]; [572..575]; + [580..583]; [588..591]; [596..599]; + [604..607]; [612..615]; [620..623]; + [628..631]; [636..639]; [644..647]; + [652..655]; [660..663]; [668..671]; + [676..679]; [684..687]; [692..695]; + [700..703]; [708..711]; [716..719]; + [724..727]; [732..735]; [740..743]; + [748..751]; [756..759]; [764..767]; + [772..775]; [780..783]; [788..791]; + [796..799]; [804..807]; [812..815]; + [820..823]; [828..831]; [836..839]; + [844..847]; [852..855]; [860..863]; + [868..871]; [876..879]; [884..887]; + [892..895]; [900..903]; [908..911]; + [916..919]; [924..927]; [932..935]; + [940..943]; [948..951]; [956..959]; + [964..967]; [972..975]; [980..983]; + [988..991]; [996..999]; [1004..1007]; + [1012..1015]; [1020..1023]}; + next_free; "%d\n" (and SELF) + next_free FROM next_free (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function malloc: + next_free; __retres +[inout] Inputs for function malloc: + next_free +[inout] Out (internal) for function main: + MEMORY[0..1023]; __fc_initial_stdout; curr; head; i; next_free +[inout] Inputs for function main: + MEMORY[0..1023]; next_free; "%d\n" diff --git a/tests/non-free/oracle_symblocs/linked_list.1.err.oracle b/tests/non-free/oracle_symblocs/linked_list.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/non-free/oracle_symblocs/linked_list.1.res.oracle b/tests/non-free/oracle_symblocs/linked_list.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..b8df531e663facd617f3d375ffaa51db6c3f90da --- /dev/null +++ b/tests/non-free/oracle_symblocs/linked_list.1.res.oracle @@ -0,0 +1,459 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/non-free/linked_list.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + MEMORY[0..0x3FF] ∈ {0} + __FC_errno ∈ [--..--] + __fc_stderr ∈ {{ &__fc_initial_stderr }} + __fc_stdin ∈ {{ &__fc_initial_stdin }} + __fc_stdout ∈ {{ &__fc_initial_stdout }} + __fc_fopen[0..0x1FF] ∈ {0} + __p_fc_fopen ∈ {{ &__fc_fopen[0] }} + __fc_initial_stdout.__fc_stdio_id ∈ {1} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stderr.__fc_stdio_id ∈ {2} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stdin ∈ {0} + next_free ∈ {0} +tests/non-free/linked_list.c:39:[value] entering loop for the first time +[value] DUMPING STATE of file tests/non-free/linked_list.c line 40 + MEMORY[0..0x3FF] ∈ {0} + __FC_errno ∈ [--..--] + __fc_stderr ∈ {{ &__fc_initial_stderr }} + __fc_stdin ∈ {{ &__fc_initial_stdin }} + __fc_stdout ∈ {{ &__fc_initial_stdout }} + __fc_fopen[0..0x1FF] ∈ {0} + __p_fc_fopen ∈ {{ &__fc_fopen[0] }} + __fc_initial_stdout.__fc_stdio_id ∈ {1} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stderr.__fc_stdio_id ∈ {2} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stdin ∈ {0} + curr ∈ UNINITIALIZED + head ∈ {0} + i ∈ {1} + next_free ∈ {0} + =END OF DUMP== +[value] computing for function malloc <- main. + Called from tests/non-free/linked_list.c:41. +[value] Recording results for malloc +[value] Done for function malloc +[value] DUMPING STATE of file tests/non-free/linked_list.c line 42 + MEMORY[0..0x3FF] ∈ {0} + __FC_errno ∈ [--..--] + __fc_stderr ∈ {{ &__fc_initial_stderr }} + __fc_stdin ∈ {{ &__fc_initial_stdin }} + __fc_stdout ∈ {{ &__fc_initial_stdout }} + __fc_fopen[0..0x1FF] ∈ {0} + __p_fc_fopen ∈ {{ &__fc_fopen[0] }} + __fc_initial_stdout.__fc_stdio_id ∈ {1} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stderr.__fc_stdio_id ∈ {2} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stdin ∈ {0} + curr ∈ {{ (item *)&MEMORY }} + head ∈ {0} + i ∈ {1} + next_free ∈ {8} + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/linked_list.c line 40 + MEMORY[bits 0 to 31] ∈ {0; 1} + [4..0x3FF] ∈ {0} + __FC_errno ∈ [--..--] + __fc_stderr ∈ {{ &__fc_initial_stderr }} + __fc_stdin ∈ {{ &__fc_initial_stdin }} + __fc_stdout ∈ {{ &__fc_initial_stdout }} + __fc_fopen[0..0x1FF] ∈ {0} + __p_fc_fopen ∈ {{ &__fc_fopen[0] }} + __fc_initial_stdout.__fc_stdio_id ∈ {1} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stderr.__fc_stdio_id ∈ {2} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stdin ∈ {0} + curr ∈ {{ (item *)&MEMORY }} or UNINITIALIZED + head ∈ {{ NULL ; (item *)&MEMORY }} + i ∈ {1; 2} + next_free ∈ {0; 8} + =END OF DUMP== +[value] computing for function malloc <- main. + Called from tests/non-free/linked_list.c:41. +[value] Recording results for malloc +[value] Done for function malloc +[value] DUMPING STATE of file tests/non-free/linked_list.c line 42 + MEMORY[bits 0 to 31] ∈ {0; 1} + [4..0x3FF] ∈ {0} + __FC_errno ∈ [--..--] + __fc_stderr ∈ {{ &__fc_initial_stderr }} + __fc_stdin ∈ {{ &__fc_initial_stdin }} + __fc_stdout ∈ {{ &__fc_initial_stdout }} + __fc_fopen[0..0x1FF] ∈ {0} + __p_fc_fopen ∈ {{ &__fc_fopen[0] }} + __fc_initial_stdout.__fc_stdio_id ∈ {1} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stderr.__fc_stdio_id ∈ {2} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stdin ∈ {0} + curr ∈ {{ (item *)&MEMORY{[0], [8]} }} + head ∈ {{ NULL ; (item *)&MEMORY }} + i ∈ {1; 2} + next_free ∈ {8; 16} + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/linked_list.c line 40 + MEMORY[bits 0 to 31] ∈ {0; 1; 2} + [bits 32 to 63] ∈ {{ NULL ; (? *)&MEMORY }} + [bits 64 to 95] ∈ {0; 1; 2} + [bits 96 to 127] ∈ {{ NULL ; (? *)&MEMORY }} + [16..0x3FF] ∈ {0} + __FC_errno ∈ [--..--] + __fc_stderr ∈ {{ &__fc_initial_stderr }} + __fc_stdin ∈ {{ &__fc_initial_stdin }} + __fc_stdout ∈ {{ &__fc_initial_stdout }} + __fc_fopen[0..0x1FF] ∈ {0} + __p_fc_fopen ∈ {{ &__fc_fopen[0] }} + __fc_initial_stdout.__fc_stdio_id ∈ {1} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stderr.__fc_stdio_id ∈ {2} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stdin ∈ {0} + curr ∈ {{ (item *)&MEMORY{[0], [8]} }} or UNINITIALIZED + head ∈ {{ NULL ; (item *)&MEMORY{[0], [8]} }} + i ∈ {1; 2; 3} + next_free ∈ {0; 8; 16} + =END OF DUMP== +[value] computing for function malloc <- main. + Called from tests/non-free/linked_list.c:41. +[value] Recording results for malloc +[value] Done for function malloc +[value] DUMPING STATE of file tests/non-free/linked_list.c line 42 + MEMORY[bits 0 to 31] ∈ {0; 1; 2} + [bits 32 to 63] ∈ {{ NULL ; (? *)&MEMORY }} + [bits 64 to 95] ∈ {0; 1; 2} + [bits 96 to 127] ∈ {{ NULL ; (? *)&MEMORY }} + [16..0x3FF] ∈ {0} + __FC_errno ∈ [--..--] + __fc_stderr ∈ {{ &__fc_initial_stderr }} + __fc_stdin ∈ {{ &__fc_initial_stdin }} + __fc_stdout ∈ {{ &__fc_initial_stdout }} + __fc_fopen[0..0x1FF] ∈ {0} + __p_fc_fopen ∈ {{ &__fc_fopen[0] }} + __fc_initial_stdout.__fc_stdio_id ∈ {1} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stderr.__fc_stdio_id ∈ {2} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stdin ∈ {0} + curr ∈ {{ (item *)&MEMORY{[0], [8], [16]} }} + head ∈ {{ NULL ; (item *)&MEMORY{[0], [8]} }} + i ∈ {1; 2; 3} + next_free ∈ {8; 16; 24} + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/linked_list.c line 40 + MEMORY[bits 0 to 31] ∈ {0; 1; 2; 3} + [bits 32 to 63] ∈ {{ NULL ; (? *)&MEMORY{[0], [8]} }} + [bits 64 to 95] ∈ {0; 1; 2; 3} + [bits 96 to 127] ∈ {{ NULL ; (? *)&MEMORY{[0], [8]} }} + [bits 128 to 159] ∈ {0; 1; 2; 3} + [bits 160 to 191] ∈ {{ NULL ; (? *)&MEMORY{[0], [8]} }} + [24..0x3FF] ∈ {0} + __FC_errno ∈ [--..--] + __fc_stderr ∈ {{ &__fc_initial_stderr }} + __fc_stdin ∈ {{ &__fc_initial_stdin }} + __fc_stdout ∈ {{ &__fc_initial_stdout }} + __fc_fopen[0..0x1FF] ∈ {0} + __p_fc_fopen ∈ {{ &__fc_fopen[0] }} + __fc_initial_stdout.__fc_stdio_id ∈ {1} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stderr.__fc_stdio_id ∈ {2} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stdin ∈ {0} + curr ∈ {{ (item *)&MEMORY{[0], [8], [16]} }} or UNINITIALIZED + head ∈ {{ NULL ; (item *)&MEMORY{[0], [8], [16]} }} + i ∈ [1..10] + next_free ∈ {0; 8; 16; 24} + =END OF DUMP== +[value] computing for function malloc <- main. + Called from tests/non-free/linked_list.c:41. +[value] Recording results for malloc +[value] Done for function malloc +[value] DUMPING STATE of file tests/non-free/linked_list.c line 42 + MEMORY[bits 0 to 31] ∈ {0; 1; 2; 3} + [bits 32 to 63] ∈ {{ NULL ; (? *)&MEMORY{[0], [8]} }} + [bits 64 to 95] ∈ {0; 1; 2; 3} + [bits 96 to 127] ∈ {{ NULL ; (? *)&MEMORY{[0], [8]} }} + [bits 128 to 159] ∈ {0; 1; 2; 3} + [bits 160 to 191] ∈ {{ NULL ; (? *)&MEMORY{[0], [8]} }} + [24..0x3FF] ∈ {0} + __FC_errno ∈ [--..--] + __fc_stderr ∈ {{ &__fc_initial_stderr }} + __fc_stdin ∈ {{ &__fc_initial_stdin }} + __fc_stdout ∈ {{ &__fc_initial_stdout }} + __fc_fopen[0..0x1FF] ∈ {0} + __p_fc_fopen ∈ {{ &__fc_fopen[0] }} + __fc_initial_stdout.__fc_stdio_id ∈ {1} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stderr.__fc_stdio_id ∈ {2} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stdin ∈ {0} + curr ∈ {{ (item *)&MEMORY{[0], [8], [16], [24]} }} + head ∈ {{ NULL ; (item *)&MEMORY{[0], [8], [16]} }} + i ∈ [1..10] + next_free ∈ {8; 16; 24; 32} + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/linked_list.c line 40 + MEMORY[bits 0 to 31] ∈ [0..10] + [bits 32 to 63] ∈ {{ NULL ; (? *)&MEMORY{[0], [8], [16]} }} + [bits 64 to 95] ∈ [0..10] + [bits 96 to 127] ∈ {{ NULL ; (? *)&MEMORY{[0], [8], [16]} }} + [bits 128 to 159] ∈ [0..10] + [bits 160 to 191] ∈ {{ NULL ; (? *)&MEMORY{[0], [8], [16]} }} + [bits 192 to 223] ∈ [0..10] + [bits 224 to 255] ∈ {{ NULL ; (? *)&MEMORY{[0], [8], [16]} }} + [32..0x3FF] ∈ {0} + __FC_errno ∈ [--..--] + __fc_stderr ∈ {{ &__fc_initial_stderr }} + __fc_stdin ∈ {{ &__fc_initial_stdin }} + __fc_stdout ∈ {{ &__fc_initial_stdout }} + __fc_fopen[0..0x1FF] ∈ {0} + __p_fc_fopen ∈ {{ &__fc_fopen[0] }} + __fc_initial_stdout.__fc_stdio_id ∈ {1} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stderr.__fc_stdio_id ∈ {2} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stdin ∈ {0} + curr ∈ {{ (item *)&MEMORY{[0], [8], [16], [24]} }} or UNINITIALIZED + head ∈ {{ NULL ; (item *)&MEMORY{[0], [8], [16], [24]} }} + i ∈ [1..10] + next_free ∈ {0; 8; 16; 24; 32} + =END OF DUMP== +[value] computing for function malloc <- main. + Called from tests/non-free/linked_list.c:41. +[value] Recording results for malloc +[value] Done for function malloc +[value] DUMPING STATE of file tests/non-free/linked_list.c line 42 + MEMORY[bits 0 to 31] ∈ [0..10] + [bits 32 to 63] ∈ {{ NULL ; (? *)&MEMORY{[0], [8], [16]} }} + [bits 64 to 95] ∈ [0..10] + [bits 96 to 127] ∈ {{ NULL ; (? *)&MEMORY{[0], [8], [16]} }} + [bits 128 to 159] ∈ [0..10] + [bits 160 to 191] ∈ {{ NULL ; (? *)&MEMORY{[0], [8], [16]} }} + [bits 192 to 223] ∈ [0..10] + [bits 224 to 255] ∈ {{ NULL ; (? *)&MEMORY{[0], [8], [16]} }} + [32..0x3FF] ∈ {0} + __FC_errno ∈ [--..--] + __fc_stderr ∈ {{ &__fc_initial_stderr }} + __fc_stdin ∈ {{ &__fc_initial_stdin }} + __fc_stdout ∈ {{ &__fc_initial_stdout }} + __fc_fopen[0..0x1FF] ∈ {0} + __p_fc_fopen ∈ {{ &__fc_fopen[0] }} + __fc_initial_stdout.__fc_stdio_id ∈ {1} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stderr.__fc_stdio_id ∈ {2} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stdin ∈ {0} + curr ∈ {{ (item *)&MEMORY{[0], [8], [16], [24], [32]} }} + head ∈ {{ NULL ; (item *)&MEMORY{[0], [8], [16], [24]} }} + i ∈ [1..10] + next_free ∈ {8; 16; 24; 32; 40} + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/linked_list.c line 40 + MEMORY[bits 0 to 31] ∈ [0..10] + [bits 32 to 63] ∈ {{ NULL ; &MEMORY + [0..0x3F8],0%8 }} + [bits 64 to 95] ∈ [0..10] + [bits 96 to 127] ∈ {{ NULL ; &MEMORY + [0..0x3F8],0%8 }} + [bits 128 to 159] ∈ [0..10] + [bits 160 to 191] ∈ {{ NULL ; &MEMORY + [0..0x3F8],0%8 }} + [bits 192 to 223] ∈ [0..10] + [bits 224 to 255] ∈ {{ NULL ; &MEMORY + [0..0x3F8],0%8 }} + [bits 256 to 0x11F] ∈ [0..10] + [bits 0x120 to 0x13F] ∈ + {{ NULL ; (? *)&MEMORY{[0], [8], [16], [24]} }} + [40..0x3FF] ∈ {0} + __FC_errno ∈ [--..--] + __fc_stderr ∈ {{ &__fc_initial_stderr }} + __fc_stdin ∈ {{ &__fc_initial_stdin }} + __fc_stdout ∈ {{ &__fc_initial_stdout }} + __fc_fopen[0..0x1FF] ∈ {0} + __p_fc_fopen ∈ {{ &__fc_fopen[0] }} + __fc_initial_stdout.__fc_stdio_id ∈ {1} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stderr.__fc_stdio_id ∈ {2} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stdin ∈ {0} + curr ∈ {{ &MEMORY + [0..0x3F8],0%8 }} or UNINITIALIZED + head ∈ {{ NULL ; &MEMORY + [0..0x3F8],0%8 }} + i ∈ [1..10] + next_free ∈ [0..0x7FFFFFF8],0%8 + =END OF DUMP== +[value] computing for function malloc <- main. + Called from tests/non-free/linked_list.c:41. +[value] Recording results for malloc +[value] Done for function malloc +[value] DUMPING STATE of file tests/non-free/linked_list.c line 42 + MEMORY[bits 0 to 31] ∈ [0..10] + [bits 32 to 63] ∈ {{ NULL ; &MEMORY + [0..0x3F8],0%8 }} + [bits 64 to 95] ∈ [0..10] + [bits 96 to 127] ∈ {{ NULL ; &MEMORY + [0..0x3F8],0%8 }} + [bits 128 to 159] ∈ [0..10] + [bits 160 to 191] ∈ {{ NULL ; &MEMORY + [0..0x3F8],0%8 }} + [bits 192 to 223] ∈ [0..10] + [bits 224 to 255] ∈ {{ NULL ; &MEMORY + [0..0x3F8],0%8 }} + [bits 256 to 0x11F] ∈ [0..10] + [bits 0x120 to 0x13F] ∈ + {{ NULL ; (? *)&MEMORY{[0], [8], [16], [24]} }} + [40..0x3FF] ∈ {0} + __FC_errno ∈ [--..--] + __fc_stderr ∈ {{ &__fc_initial_stderr }} + __fc_stdin ∈ {{ &__fc_initial_stdin }} + __fc_stdout ∈ {{ &__fc_initial_stdout }} + __fc_fopen[0..0x1FF] ∈ {0} + __p_fc_fopen ∈ {{ &__fc_fopen[0] }} + __fc_initial_stdout.__fc_stdio_id ∈ {1} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stderr.__fc_stdio_id ∈ {2} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stdin ∈ {0} + curr ∈ {{ NULL ; &MEMORY + [0..0xFFFFFFF8],0%8 }} + head ∈ {{ NULL ; &MEMORY + [0..0x3F8],0%8 }} + i ∈ [1..10] + next_free ∈ [-0x80000000..0x7FFFFFF8],0%8 + =END OF DUMP== +tests/non-free/linked_list.c:43:[value] warning: out of bounds write. assert \valid(&curr->val); +tests/non-free/linked_list.c:43:[kernel] more than 100(128) locations to update in array. Approximating. +tests/non-free/linked_list.c:43:[kernel] more than 100(128) elements to enumerate. Approximating. +tests/non-free/linked_list.c:44:[kernel] more than 100(128) locations to update in array. Approximating. +tests/non-free/linked_list.c:44:[kernel] more than 100(128) elements to enumerate. Approximating. +[value] DUMPING STATE of file tests/non-free/linked_list.c line 40 + MEMORY[bits 0 to 31] ∈ [0..10] + [bits 32 to 0x1FDF]# ∈ + {{ NULL + [0..10] ; &MEMORY + [0..0x3F8],0%8 }} repeated %32 + [bits 0x1FE0 to 0x1FFF] ∈ {{ NULL ; &MEMORY + [0..0x3F8],0%8 }} + __FC_errno ∈ [--..--] + __fc_stderr ∈ {{ &__fc_initial_stderr }} + __fc_stdin ∈ {{ &__fc_initial_stdin }} + __fc_stdout ∈ {{ &__fc_initial_stdout }} + __fc_fopen[0..0x1FF] ∈ {0} + __p_fc_fopen ∈ {{ &__fc_fopen[0] }} + __fc_initial_stdout.__fc_stdio_id ∈ {1} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stderr.__fc_stdio_id ∈ {2} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stdin ∈ {0} + curr ∈ {{ &MEMORY + [0..0x3F8],0%8 }} or UNINITIALIZED + head ∈ {{ NULL ; &MEMORY + [0..0x3F8],0%8 }} + i ∈ [1..10] + next_free ∈ [-0x80000000..0x7FFFFFF8],0%8 + =END OF DUMP== +[value] computing for function malloc <- main. + Called from tests/non-free/linked_list.c:41. +[value] Recording results for malloc +[value] Done for function malloc +[value] DUMPING STATE of file tests/non-free/linked_list.c line 42 + MEMORY[bits 0 to 31] ∈ [0..10] + [bits 32 to 0x1FDF]# ∈ + {{ NULL + [0..10] ; &MEMORY + [0..0x3F8],0%8 }} repeated %32 + [bits 0x1FE0 to 0x1FFF] ∈ {{ NULL ; &MEMORY + [0..0x3F8],0%8 }} + __FC_errno ∈ [--..--] + __fc_stderr ∈ {{ &__fc_initial_stderr }} + __fc_stdin ∈ {{ &__fc_initial_stdin }} + __fc_stdout ∈ {{ &__fc_initial_stdout }} + __fc_fopen[0..0x1FF] ∈ {0} + __p_fc_fopen ∈ {{ &__fc_fopen[0] }} + __fc_initial_stdout.__fc_stdio_id ∈ {1} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stderr.__fc_stdio_id ∈ {2} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stdin ∈ {0} + curr ∈ {{ NULL ; &MEMORY + [0..0xFFFFFFF8],0%8 }} + head ∈ {{ NULL ; &MEMORY + [0..0x3F8],0%8 }} + i ∈ [1..10] + next_free ∈ [-0x80000000..0x7FFFFFF8],0%8 + =END OF DUMP== +tests/non-free/linked_list.c:50:[value] entering loop for the first time +[value] computing for function printf <- main. + Called from tests/non-free/linked_list.c:51. +[value] using specification for function printf +[value] Done for function printf +tests/non-free/linked_list.c:51:[value] warning: out of bounds read. assert \valid_read(&curr->val); +[value] computing for function printf <- main. + Called from tests/non-free/linked_list.c:51. +[value] Done for function printf +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function malloc: + next_free ∈ [-0x80000000..0x7FFFFFF8],0%8 + __retres ∈ {{ NULL ; &MEMORY + [0..0xFFFFFFF8],0%8 }} +[value:final-states] Values at end of function main: + MEMORY[bits 0 to 31] ∈ [0..10] + [bits 32 to 0x1FDF]# ∈ + {{ NULL + [0..10] ; &MEMORY + [0..0x3F8],0%8 }} repeated %32 + [bits 0x1FE0 to 0x1FFF] ∈ {{ NULL ; &MEMORY + [0..0x3F8],0%8 }} + __fc_initial_stdout ∈ [--..--] + curr ∈ {0} + head ∈ {{ NULL ; &MEMORY + [0..0x3F8],0%8 }} + i ∈ {11} + next_free ∈ [-0x80000000..0x7FFFFFF8],0%8 +[from] Computing for function malloc +[from] Done for function malloc +[from] Computing for function main +[from] Computing for function Frama_C_dump_each <-main +[from] Done for function Frama_C_dump_each +tests/non-free/linked_list.c:43:[kernel] more than 100(128) dependencies to update. Approximating. +tests/non-free/linked_list.c:44:[kernel] more than 100(128) dependencies to update. Approximating. +[from] Computing for function printf <-main +[from] Done for function printf +tests/non-free/linked_list.c:51:[from] warning: variadic call detected. Using only 1 argument(s). +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function malloc: + next_free FROM size; next_free + \result FROM size; next_free +[from] Function printf: + __fc_initial_stdout FROM "%d\n" + \result FROM ANYTHING(origin:Unknown) +[from] Function main: + MEMORY[0..3] FROM next_free (and SELF) + [4..0x3FF] FROM next_free (and SELF) + __fc_initial_stdout FROM MEMORY[4..0x3FF]; next_free; "%d\n" (and SELF) + next_free FROM next_free (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function malloc: + next_free; __retres +[inout] Inputs for function malloc: + next_free +[inout] Out (internal) for function main: + MEMORY[0..0x3FF]; __fc_initial_stdout; curr; head; i; next_free +[inout] Inputs for function main: + MEMORY[0..0x3FF]; next_free; "%d\n" diff --git a/tests/non-free/oracle_symblocs/linked_list.2.err.oracle b/tests/non-free/oracle_symblocs/linked_list.2.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/non-free/oracle_symblocs/linked_list.2.res.oracle b/tests/non-free/oracle_symblocs/linked_list.2.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..31e088625e9b695c7cffa6adbe94b33a9af77449 --- /dev/null +++ b/tests/non-free/oracle_symblocs/linked_list.2.res.oracle @@ -0,0 +1,741 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/non-free/linked_list.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + MEMORY[0..0x3FF] ∈ {0} + __FC_errno ∈ [--..--] + __fc_stderr ∈ {{ &__fc_initial_stderr }} + __fc_stdin ∈ {{ &__fc_initial_stdin }} + __fc_stdout ∈ {{ &__fc_initial_stdout }} + __fc_fopen[0..0x1FF] ∈ {0} + __p_fc_fopen ∈ {{ &__fc_fopen[0] }} + __fc_initial_stdout.__fc_stdio_id ∈ {1} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stderr.__fc_stdio_id ∈ {2} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stdin ∈ {0} + next_free ∈ {0} +[value] DUMPING STATE of file tests/non-free/linked_list.c line 40 + MEMORY[0..0x3FF] ∈ {0} + __FC_errno ∈ [--..--] + __fc_stderr ∈ {{ &__fc_initial_stderr }} + __fc_stdin ∈ {{ &__fc_initial_stdin }} + __fc_stdout ∈ {{ &__fc_initial_stdout }} + __fc_fopen[0..0x1FF] ∈ {0} + __p_fc_fopen ∈ {{ &__fc_fopen[0] }} + __fc_initial_stdout.__fc_stdio_id ∈ {1} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stderr.__fc_stdio_id ∈ {2} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stdin ∈ {0} + curr ∈ UNINITIALIZED + head ∈ {0} + i ∈ {1} + next_free ∈ {0} + =END OF DUMP== +[value] computing for function malloc <- main. + Called from tests/non-free/linked_list.c:41. +[value] Recording results for malloc +[value] Done for function malloc +[value] DUMPING STATE of file tests/non-free/linked_list.c line 42 + MEMORY[0..0x3FF] ∈ {0} + __FC_errno ∈ [--..--] + __fc_stderr ∈ {{ &__fc_initial_stderr }} + __fc_stdin ∈ {{ &__fc_initial_stdin }} + __fc_stdout ∈ {{ &__fc_initial_stdout }} + __fc_fopen[0..0x1FF] ∈ {0} + __p_fc_fopen ∈ {{ &__fc_fopen[0] }} + __fc_initial_stdout.__fc_stdio_id ∈ {1} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stderr.__fc_stdio_id ∈ {2} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stdin ∈ {0} + curr ∈ {{ (item *)&MEMORY }} + head ∈ {0} + i ∈ {1} + next_free ∈ {8} + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/linked_list.c line 40 + MEMORY[bits 0 to 31] ∈ {1} + [4..0x3FF] ∈ {0} + __FC_errno ∈ [--..--] + __fc_stderr ∈ {{ &__fc_initial_stderr }} + __fc_stdin ∈ {{ &__fc_initial_stdin }} + __fc_stdout ∈ {{ &__fc_initial_stdout }} + __fc_fopen[0..0x1FF] ∈ {0} + __p_fc_fopen ∈ {{ &__fc_fopen[0] }} + __fc_initial_stdout.__fc_stdio_id ∈ {1} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stderr.__fc_stdio_id ∈ {2} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stdin ∈ {0} + curr ∈ {{ (item *)&MEMORY }} + head ∈ {{ (item *)&MEMORY }} + i ∈ {2} + next_free ∈ {8} + =END OF DUMP== +[value] computing for function malloc <- main. + Called from tests/non-free/linked_list.c:41. +[value] Recording results for malloc +[value] Done for function malloc +[value] DUMPING STATE of file tests/non-free/linked_list.c line 42 + MEMORY[bits 0 to 31] ∈ {1} + [4..0x3FF] ∈ {0} + __FC_errno ∈ [--..--] + __fc_stderr ∈ {{ &__fc_initial_stderr }} + __fc_stdin ∈ {{ &__fc_initial_stdin }} + __fc_stdout ∈ {{ &__fc_initial_stdout }} + __fc_fopen[0..0x1FF] ∈ {0} + __p_fc_fopen ∈ {{ &__fc_fopen[0] }} + __fc_initial_stdout.__fc_stdio_id ∈ {1} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stderr.__fc_stdio_id ∈ {2} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stdin ∈ {0} + curr ∈ {{ (item *)&MEMORY[8] }} + head ∈ {{ (item *)&MEMORY }} + i ∈ {2} + next_free ∈ {16} + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/linked_list.c line 40 + MEMORY[bits 0 to 31] ∈ {1} + [4..7] ∈ {0} + [bits 64 to 95] ∈ {2} + [bits 96 to 127] ∈ {{ (? *)&MEMORY }} + [16..0x3FF] ∈ {0} + __FC_errno ∈ [--..--] + __fc_stderr ∈ {{ &__fc_initial_stderr }} + __fc_stdin ∈ {{ &__fc_initial_stdin }} + __fc_stdout ∈ {{ &__fc_initial_stdout }} + __fc_fopen[0..0x1FF] ∈ {0} + __p_fc_fopen ∈ {{ &__fc_fopen[0] }} + __fc_initial_stdout.__fc_stdio_id ∈ {1} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stderr.__fc_stdio_id ∈ {2} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stdin ∈ {0} + curr ∈ {{ (item *)&MEMORY[8] }} + head ∈ {{ (item *)&MEMORY[8] }} + i ∈ {3} + next_free ∈ {16} + =END OF DUMP== +[value] computing for function malloc <- main. + Called from tests/non-free/linked_list.c:41. +[value] Recording results for malloc +[value] Done for function malloc +[value] DUMPING STATE of file tests/non-free/linked_list.c line 42 + MEMORY[bits 0 to 31] ∈ {1} + [4..7] ∈ {0} + [bits 64 to 95] ∈ {2} + [bits 96 to 127] ∈ {{ (? *)&MEMORY }} + [16..0x3FF] ∈ {0} + __FC_errno ∈ [--..--] + __fc_stderr ∈ {{ &__fc_initial_stderr }} + __fc_stdin ∈ {{ &__fc_initial_stdin }} + __fc_stdout ∈ {{ &__fc_initial_stdout }} + __fc_fopen[0..0x1FF] ∈ {0} + __p_fc_fopen ∈ {{ &__fc_fopen[0] }} + __fc_initial_stdout.__fc_stdio_id ∈ {1} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stderr.__fc_stdio_id ∈ {2} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stdin ∈ {0} + curr ∈ {{ (item *)&MEMORY[16] }} + head ∈ {{ (item *)&MEMORY[8] }} + i ∈ {3} + next_free ∈ {24} + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/linked_list.c line 40 + MEMORY[bits 0 to 31] ∈ {1} + [4..7] ∈ {0} + [bits 64 to 95] ∈ {2} + [bits 96 to 127] ∈ {{ (? *)&MEMORY }} + [bits 128 to 159] ∈ {3} + [bits 160 to 191] ∈ {{ (? *)&MEMORY[8] }} + [24..0x3FF] ∈ {0} + __FC_errno ∈ [--..--] + __fc_stderr ∈ {{ &__fc_initial_stderr }} + __fc_stdin ∈ {{ &__fc_initial_stdin }} + __fc_stdout ∈ {{ &__fc_initial_stdout }} + __fc_fopen[0..0x1FF] ∈ {0} + __p_fc_fopen ∈ {{ &__fc_fopen[0] }} + __fc_initial_stdout.__fc_stdio_id ∈ {1} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stderr.__fc_stdio_id ∈ {2} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stdin ∈ {0} + curr ∈ {{ (item *)&MEMORY[16] }} + head ∈ {{ (item *)&MEMORY[16] }} + i ∈ {4} + next_free ∈ {24} + =END OF DUMP== +[value] computing for function malloc <- main. + Called from tests/non-free/linked_list.c:41. +[value] Recording results for malloc +[value] Done for function malloc +[value] DUMPING STATE of file tests/non-free/linked_list.c line 42 + MEMORY[bits 0 to 31] ∈ {1} + [4..7] ∈ {0} + [bits 64 to 95] ∈ {2} + [bits 96 to 127] ∈ {{ (? *)&MEMORY }} + [bits 128 to 159] ∈ {3} + [bits 160 to 191] ∈ {{ (? *)&MEMORY[8] }} + [24..0x3FF] ∈ {0} + __FC_errno ∈ [--..--] + __fc_stderr ∈ {{ &__fc_initial_stderr }} + __fc_stdin ∈ {{ &__fc_initial_stdin }} + __fc_stdout ∈ {{ &__fc_initial_stdout }} + __fc_fopen[0..0x1FF] ∈ {0} + __p_fc_fopen ∈ {{ &__fc_fopen[0] }} + __fc_initial_stdout.__fc_stdio_id ∈ {1} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stderr.__fc_stdio_id ∈ {2} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stdin ∈ {0} + curr ∈ {{ (item *)&MEMORY[24] }} + head ∈ {{ (item *)&MEMORY[16] }} + i ∈ {4} + next_free ∈ {32} + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/linked_list.c line 40 + MEMORY[bits 0 to 31] ∈ {1} + [4..7] ∈ {0} + [bits 64 to 95] ∈ {2} + [bits 96 to 127] ∈ {{ (? *)&MEMORY }} + [bits 128 to 159] ∈ {3} + [bits 160 to 191] ∈ {{ (? *)&MEMORY[8] }} + [bits 192 to 223] ∈ {4} + [bits 224 to 255] ∈ {{ (? *)&MEMORY[16] }} + [32..0x3FF] ∈ {0} + __FC_errno ∈ [--..--] + __fc_stderr ∈ {{ &__fc_initial_stderr }} + __fc_stdin ∈ {{ &__fc_initial_stdin }} + __fc_stdout ∈ {{ &__fc_initial_stdout }} + __fc_fopen[0..0x1FF] ∈ {0} + __p_fc_fopen ∈ {{ &__fc_fopen[0] }} + __fc_initial_stdout.__fc_stdio_id ∈ {1} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stderr.__fc_stdio_id ∈ {2} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stdin ∈ {0} + curr ∈ {{ (item *)&MEMORY[24] }} + head ∈ {{ (item *)&MEMORY[24] }} + i ∈ {5} + next_free ∈ {32} + =END OF DUMP== +[value] computing for function malloc <- main. + Called from tests/non-free/linked_list.c:41. +[value] Recording results for malloc +[value] Done for function malloc +[value] DUMPING STATE of file tests/non-free/linked_list.c line 42 + MEMORY[bits 0 to 31] ∈ {1} + [4..7] ∈ {0} + [bits 64 to 95] ∈ {2} + [bits 96 to 127] ∈ {{ (? *)&MEMORY }} + [bits 128 to 159] ∈ {3} + [bits 160 to 191] ∈ {{ (? *)&MEMORY[8] }} + [bits 192 to 223] ∈ {4} + [bits 224 to 255] ∈ {{ (? *)&MEMORY[16] }} + [32..0x3FF] ∈ {0} + __FC_errno ∈ [--..--] + __fc_stderr ∈ {{ &__fc_initial_stderr }} + __fc_stdin ∈ {{ &__fc_initial_stdin }} + __fc_stdout ∈ {{ &__fc_initial_stdout }} + __fc_fopen[0..0x1FF] ∈ {0} + __p_fc_fopen ∈ {{ &__fc_fopen[0] }} + __fc_initial_stdout.__fc_stdio_id ∈ {1} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stderr.__fc_stdio_id ∈ {2} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stdin ∈ {0} + curr ∈ {{ (item *)&MEMORY[32] }} + head ∈ {{ (item *)&MEMORY[24] }} + i ∈ {5} + next_free ∈ {40} + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/linked_list.c line 40 + MEMORY[bits 0 to 31] ∈ {1} + [4..7] ∈ {0} + [bits 64 to 95] ∈ {2} + [bits 96 to 127] ∈ {{ (? *)&MEMORY }} + [bits 128 to 159] ∈ {3} + [bits 160 to 191] ∈ {{ (? *)&MEMORY[8] }} + [bits 192 to 223] ∈ {4} + [bits 224 to 255] ∈ {{ (? *)&MEMORY[16] }} + [bits 256 to 0x11F] ∈ {5} + [bits 0x120 to 0x13F] ∈ {{ (? *)&MEMORY[24] }} + [40..0x3FF] ∈ {0} + __FC_errno ∈ [--..--] + __fc_stderr ∈ {{ &__fc_initial_stderr }} + __fc_stdin ∈ {{ &__fc_initial_stdin }} + __fc_stdout ∈ {{ &__fc_initial_stdout }} + __fc_fopen[0..0x1FF] ∈ {0} + __p_fc_fopen ∈ {{ &__fc_fopen[0] }} + __fc_initial_stdout.__fc_stdio_id ∈ {1} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stderr.__fc_stdio_id ∈ {2} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stdin ∈ {0} + curr ∈ {{ (item *)&MEMORY[32] }} + head ∈ {{ (item *)&MEMORY[32] }} + i ∈ {6} + next_free ∈ {40} + =END OF DUMP== +[value] computing for function malloc <- main. + Called from tests/non-free/linked_list.c:41. +[value] Recording results for malloc +[value] Done for function malloc +[value] DUMPING STATE of file tests/non-free/linked_list.c line 42 + MEMORY[bits 0 to 31] ∈ {1} + [4..7] ∈ {0} + [bits 64 to 95] ∈ {2} + [bits 96 to 127] ∈ {{ (? *)&MEMORY }} + [bits 128 to 159] ∈ {3} + [bits 160 to 191] ∈ {{ (? *)&MEMORY[8] }} + [bits 192 to 223] ∈ {4} + [bits 224 to 255] ∈ {{ (? *)&MEMORY[16] }} + [bits 256 to 0x11F] ∈ {5} + [bits 0x120 to 0x13F] ∈ {{ (? *)&MEMORY[24] }} + [40..0x3FF] ∈ {0} + __FC_errno ∈ [--..--] + __fc_stderr ∈ {{ &__fc_initial_stderr }} + __fc_stdin ∈ {{ &__fc_initial_stdin }} + __fc_stdout ∈ {{ &__fc_initial_stdout }} + __fc_fopen[0..0x1FF] ∈ {0} + __p_fc_fopen ∈ {{ &__fc_fopen[0] }} + __fc_initial_stdout.__fc_stdio_id ∈ {1} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stderr.__fc_stdio_id ∈ {2} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stdin ∈ {0} + curr ∈ {{ (item *)&MEMORY[40] }} + head ∈ {{ (item *)&MEMORY[32] }} + i ∈ {6} + next_free ∈ {48} + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/linked_list.c line 40 + MEMORY[bits 0 to 31] ∈ {1} + [4..7] ∈ {0} + [bits 64 to 95] ∈ {2} + [bits 96 to 127] ∈ {{ (? *)&MEMORY }} + [bits 128 to 159] ∈ {3} + [bits 160 to 191] ∈ {{ (? *)&MEMORY[8] }} + [bits 192 to 223] ∈ {4} + [bits 224 to 255] ∈ {{ (? *)&MEMORY[16] }} + [bits 256 to 0x11F] ∈ {5} + [bits 0x120 to 0x13F] ∈ {{ (? *)&MEMORY[24] }} + [bits 0x140 to 0x15F] ∈ {6} + [bits 0x160 to 0x17F] ∈ {{ (? *)&MEMORY[32] }} + [48..0x3FF] ∈ {0} + __FC_errno ∈ [--..--] + __fc_stderr ∈ {{ &__fc_initial_stderr }} + __fc_stdin ∈ {{ &__fc_initial_stdin }} + __fc_stdout ∈ {{ &__fc_initial_stdout }} + __fc_fopen[0..0x1FF] ∈ {0} + __p_fc_fopen ∈ {{ &__fc_fopen[0] }} + __fc_initial_stdout.__fc_stdio_id ∈ {1} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stderr.__fc_stdio_id ∈ {2} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stdin ∈ {0} + curr ∈ {{ (item *)&MEMORY[40] }} + head ∈ {{ (item *)&MEMORY[40] }} + i ∈ {7} + next_free ∈ {48} + =END OF DUMP== +[value] computing for function malloc <- main. + Called from tests/non-free/linked_list.c:41. +[value] Recording results for malloc +[value] Done for function malloc +[value] DUMPING STATE of file tests/non-free/linked_list.c line 42 + MEMORY[bits 0 to 31] ∈ {1} + [4..7] ∈ {0} + [bits 64 to 95] ∈ {2} + [bits 96 to 127] ∈ {{ (? *)&MEMORY }} + [bits 128 to 159] ∈ {3} + [bits 160 to 191] ∈ {{ (? *)&MEMORY[8] }} + [bits 192 to 223] ∈ {4} + [bits 224 to 255] ∈ {{ (? *)&MEMORY[16] }} + [bits 256 to 0x11F] ∈ {5} + [bits 0x120 to 0x13F] ∈ {{ (? *)&MEMORY[24] }} + [bits 0x140 to 0x15F] ∈ {6} + [bits 0x160 to 0x17F] ∈ {{ (? *)&MEMORY[32] }} + [48..0x3FF] ∈ {0} + __FC_errno ∈ [--..--] + __fc_stderr ∈ {{ &__fc_initial_stderr }} + __fc_stdin ∈ {{ &__fc_initial_stdin }} + __fc_stdout ∈ {{ &__fc_initial_stdout }} + __fc_fopen[0..0x1FF] ∈ {0} + __p_fc_fopen ∈ {{ &__fc_fopen[0] }} + __fc_initial_stdout.__fc_stdio_id ∈ {1} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stderr.__fc_stdio_id ∈ {2} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stdin ∈ {0} + curr ∈ {{ (item *)&MEMORY[48] }} + head ∈ {{ (item *)&MEMORY[40] }} + i ∈ {7} + next_free ∈ {56} + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/linked_list.c line 40 + MEMORY[bits 0 to 31] ∈ {1} + [4..7] ∈ {0} + [bits 64 to 95] ∈ {2} + [bits 96 to 127] ∈ {{ (? *)&MEMORY }} + [bits 128 to 159] ∈ {3} + [bits 160 to 191] ∈ {{ (? *)&MEMORY[8] }} + [bits 192 to 223] ∈ {4} + [bits 224 to 255] ∈ {{ (? *)&MEMORY[16] }} + [bits 256 to 0x11F] ∈ {5} + [bits 0x120 to 0x13F] ∈ {{ (? *)&MEMORY[24] }} + [bits 0x140 to 0x15F] ∈ {6} + [bits 0x160 to 0x17F] ∈ {{ (? *)&MEMORY[32] }} + [bits 0x180 to 0x19F] ∈ {7} + [bits 0x1A0 to 0x1BF] ∈ {{ (? *)&MEMORY[40] }} + [56..0x3FF] ∈ {0} + __FC_errno ∈ [--..--] + __fc_stderr ∈ {{ &__fc_initial_stderr }} + __fc_stdin ∈ {{ &__fc_initial_stdin }} + __fc_stdout ∈ {{ &__fc_initial_stdout }} + __fc_fopen[0..0x1FF] ∈ {0} + __p_fc_fopen ∈ {{ &__fc_fopen[0] }} + __fc_initial_stdout.__fc_stdio_id ∈ {1} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stderr.__fc_stdio_id ∈ {2} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stdin ∈ {0} + curr ∈ {{ (item *)&MEMORY[48] }} + head ∈ {{ (item *)&MEMORY[48] }} + i ∈ {8} + next_free ∈ {56} + =END OF DUMP== +[value] computing for function malloc <- main. + Called from tests/non-free/linked_list.c:41. +[value] Recording results for malloc +[value] Done for function malloc +[value] DUMPING STATE of file tests/non-free/linked_list.c line 42 + MEMORY[bits 0 to 31] ∈ {1} + [4..7] ∈ {0} + [bits 64 to 95] ∈ {2} + [bits 96 to 127] ∈ {{ (? *)&MEMORY }} + [bits 128 to 159] ∈ {3} + [bits 160 to 191] ∈ {{ (? *)&MEMORY[8] }} + [bits 192 to 223] ∈ {4} + [bits 224 to 255] ∈ {{ (? *)&MEMORY[16] }} + [bits 256 to 0x11F] ∈ {5} + [bits 0x120 to 0x13F] ∈ {{ (? *)&MEMORY[24] }} + [bits 0x140 to 0x15F] ∈ {6} + [bits 0x160 to 0x17F] ∈ {{ (? *)&MEMORY[32] }} + [bits 0x180 to 0x19F] ∈ {7} + [bits 0x1A0 to 0x1BF] ∈ {{ (? *)&MEMORY[40] }} + [56..0x3FF] ∈ {0} + __FC_errno ∈ [--..--] + __fc_stderr ∈ {{ &__fc_initial_stderr }} + __fc_stdin ∈ {{ &__fc_initial_stdin }} + __fc_stdout ∈ {{ &__fc_initial_stdout }} + __fc_fopen[0..0x1FF] ∈ {0} + __p_fc_fopen ∈ {{ &__fc_fopen[0] }} + __fc_initial_stdout.__fc_stdio_id ∈ {1} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stderr.__fc_stdio_id ∈ {2} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stdin ∈ {0} + curr ∈ {{ (item *)&MEMORY[56] }} + head ∈ {{ (item *)&MEMORY[48] }} + i ∈ {8} + next_free ∈ {64} + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/linked_list.c line 40 + MEMORY[bits 0 to 31] ∈ {1} + [4..7] ∈ {0} + [bits 64 to 95] ∈ {2} + [bits 96 to 127] ∈ {{ (? *)&MEMORY }} + [bits 128 to 159] ∈ {3} + [bits 160 to 191] ∈ {{ (? *)&MEMORY[8] }} + [bits 192 to 223] ∈ {4} + [bits 224 to 255] ∈ {{ (? *)&MEMORY[16] }} + [bits 256 to 0x11F] ∈ {5} + [bits 0x120 to 0x13F] ∈ {{ (? *)&MEMORY[24] }} + [bits 0x140 to 0x15F] ∈ {6} + [bits 0x160 to 0x17F] ∈ {{ (? *)&MEMORY[32] }} + [bits 0x180 to 0x19F] ∈ {7} + [bits 0x1A0 to 0x1BF] ∈ {{ (? *)&MEMORY[40] }} + [bits 0x1C0 to 0x1DF] ∈ {8} + [bits 0x1E0 to 0x1FF] ∈ {{ (? *)&MEMORY[48] }} + [64..0x3FF] ∈ {0} + __FC_errno ∈ [--..--] + __fc_stderr ∈ {{ &__fc_initial_stderr }} + __fc_stdin ∈ {{ &__fc_initial_stdin }} + __fc_stdout ∈ {{ &__fc_initial_stdout }} + __fc_fopen[0..0x1FF] ∈ {0} + __p_fc_fopen ∈ {{ &__fc_fopen[0] }} + __fc_initial_stdout.__fc_stdio_id ∈ {1} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stderr.__fc_stdio_id ∈ {2} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stdin ∈ {0} + curr ∈ {{ (item *)&MEMORY[56] }} + head ∈ {{ (item *)&MEMORY[56] }} + i ∈ {9} + next_free ∈ {64} + =END OF DUMP== +[value] computing for function malloc <- main. + Called from tests/non-free/linked_list.c:41. +[value] Recording results for malloc +[value] Done for function malloc +[value] DUMPING STATE of file tests/non-free/linked_list.c line 42 + MEMORY[bits 0 to 31] ∈ {1} + [4..7] ∈ {0} + [bits 64 to 95] ∈ {2} + [bits 96 to 127] ∈ {{ (? *)&MEMORY }} + [bits 128 to 159] ∈ {3} + [bits 160 to 191] ∈ {{ (? *)&MEMORY[8] }} + [bits 192 to 223] ∈ {4} + [bits 224 to 255] ∈ {{ (? *)&MEMORY[16] }} + [bits 256 to 0x11F] ∈ {5} + [bits 0x120 to 0x13F] ∈ {{ (? *)&MEMORY[24] }} + [bits 0x140 to 0x15F] ∈ {6} + [bits 0x160 to 0x17F] ∈ {{ (? *)&MEMORY[32] }} + [bits 0x180 to 0x19F] ∈ {7} + [bits 0x1A0 to 0x1BF] ∈ {{ (? *)&MEMORY[40] }} + [bits 0x1C0 to 0x1DF] ∈ {8} + [bits 0x1E0 to 0x1FF] ∈ {{ (? *)&MEMORY[48] }} + [64..0x3FF] ∈ {0} + __FC_errno ∈ [--..--] + __fc_stderr ∈ {{ &__fc_initial_stderr }} + __fc_stdin ∈ {{ &__fc_initial_stdin }} + __fc_stdout ∈ {{ &__fc_initial_stdout }} + __fc_fopen[0..0x1FF] ∈ {0} + __p_fc_fopen ∈ {{ &__fc_fopen[0] }} + __fc_initial_stdout.__fc_stdio_id ∈ {1} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stderr.__fc_stdio_id ∈ {2} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stdin ∈ {0} + curr ∈ {{ (item *)&MEMORY[64] }} + head ∈ {{ (item *)&MEMORY[56] }} + i ∈ {9} + next_free ∈ {72} + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/linked_list.c line 40 + MEMORY[bits 0 to 31] ∈ {1} + [4..7] ∈ {0} + [bits 64 to 95] ∈ {2} + [bits 96 to 127] ∈ {{ (? *)&MEMORY }} + [bits 128 to 159] ∈ {3} + [bits 160 to 191] ∈ {{ (? *)&MEMORY[8] }} + [bits 192 to 223] ∈ {4} + [bits 224 to 255] ∈ {{ (? *)&MEMORY[16] }} + [bits 256 to 0x11F] ∈ {5} + [bits 0x120 to 0x13F] ∈ {{ (? *)&MEMORY[24] }} + [bits 0x140 to 0x15F] ∈ {6} + [bits 0x160 to 0x17F] ∈ {{ (? *)&MEMORY[32] }} + [bits 0x180 to 0x19F] ∈ {7} + [bits 0x1A0 to 0x1BF] ∈ {{ (? *)&MEMORY[40] }} + [bits 0x1C0 to 0x1DF] ∈ {8} + [bits 0x1E0 to 0x1FF] ∈ {{ (? *)&MEMORY[48] }} + [bits 0x200 to 0x21F] ∈ {9} + [bits 0x220 to 0x23F] ∈ {{ (? *)&MEMORY[56] }} + [72..0x3FF] ∈ {0} + __FC_errno ∈ [--..--] + __fc_stderr ∈ {{ &__fc_initial_stderr }} + __fc_stdin ∈ {{ &__fc_initial_stdin }} + __fc_stdout ∈ {{ &__fc_initial_stdout }} + __fc_fopen[0..0x1FF] ∈ {0} + __p_fc_fopen ∈ {{ &__fc_fopen[0] }} + __fc_initial_stdout.__fc_stdio_id ∈ {1} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stderr.__fc_stdio_id ∈ {2} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stdin ∈ {0} + curr ∈ {{ (item *)&MEMORY[64] }} + head ∈ {{ (item *)&MEMORY[64] }} + i ∈ {10} + next_free ∈ {72} + =END OF DUMP== +[value] computing for function malloc <- main. + Called from tests/non-free/linked_list.c:41. +[value] Recording results for malloc +[value] Done for function malloc +[value] DUMPING STATE of file tests/non-free/linked_list.c line 42 + MEMORY[bits 0 to 31] ∈ {1} + [4..7] ∈ {0} + [bits 64 to 95] ∈ {2} + [bits 96 to 127] ∈ {{ (? *)&MEMORY }} + [bits 128 to 159] ∈ {3} + [bits 160 to 191] ∈ {{ (? *)&MEMORY[8] }} + [bits 192 to 223] ∈ {4} + [bits 224 to 255] ∈ {{ (? *)&MEMORY[16] }} + [bits 256 to 0x11F] ∈ {5} + [bits 0x120 to 0x13F] ∈ {{ (? *)&MEMORY[24] }} + [bits 0x140 to 0x15F] ∈ {6} + [bits 0x160 to 0x17F] ∈ {{ (? *)&MEMORY[32] }} + [bits 0x180 to 0x19F] ∈ {7} + [bits 0x1A0 to 0x1BF] ∈ {{ (? *)&MEMORY[40] }} + [bits 0x1C0 to 0x1DF] ∈ {8} + [bits 0x1E0 to 0x1FF] ∈ {{ (? *)&MEMORY[48] }} + [bits 0x200 to 0x21F] ∈ {9} + [bits 0x220 to 0x23F] ∈ {{ (? *)&MEMORY[56] }} + [72..0x3FF] ∈ {0} + __FC_errno ∈ [--..--] + __fc_stderr ∈ {{ &__fc_initial_stderr }} + __fc_stdin ∈ {{ &__fc_initial_stdin }} + __fc_stdout ∈ {{ &__fc_initial_stdout }} + __fc_fopen[0..0x1FF] ∈ {0} + __p_fc_fopen ∈ {{ &__fc_fopen[0] }} + __fc_initial_stdout.__fc_stdio_id ∈ {1} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stderr.__fc_stdio_id ∈ {2} + {.__fc_position; .__fc_error; .__fc_eof; .__fc_flags; .__fc_inode; .__fc_real_data; .__fc_real_data_max_size; .[bits 80 to 95]} ∈ + {0} + __fc_initial_stdin ∈ {0} + curr ∈ {{ (item *)&MEMORY[72] }} + head ∈ {{ (item *)&MEMORY[64] }} + i ∈ {10} + next_free ∈ {80} + =END OF DUMP== +[value] computing for function printf <- main. + Called from tests/non-free/linked_list.c:51. +[value] using specification for function printf +[value] Done for function printf +[value] computing for function printf <- main. + Called from tests/non-free/linked_list.c:51. +[value] Done for function printf +[value] computing for function printf <- main. + Called from tests/non-free/linked_list.c:51. +[value] Done for function printf +[value] computing for function printf <- main. + Called from tests/non-free/linked_list.c:51. +[value] Done for function printf +[value] computing for function printf <- main. + Called from tests/non-free/linked_list.c:51. +[value] Done for function printf +[value] computing for function printf <- main. + Called from tests/non-free/linked_list.c:51. +[value] Done for function printf +[value] computing for function printf <- main. + Called from tests/non-free/linked_list.c:51. +[value] Done for function printf +[value] computing for function printf <- main. + Called from tests/non-free/linked_list.c:51. +[value] Done for function printf +[value] computing for function printf <- main. + Called from tests/non-free/linked_list.c:51. +[value] Done for function printf +[value] computing for function printf <- main. + Called from tests/non-free/linked_list.c:51. +[value] Done for function printf +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function malloc: + next_free ∈ [8..80],0%8 + __retres ∈ {{ &MEMORY + [0..72],0%8 }} +[value:final-states] Values at end of function main: + MEMORY[bits 0 to 31] ∈ {1} + [4..7] ∈ {0} + [bits 64 to 95] ∈ {2} + [bits 96 to 127] ∈ {{ (? *)&MEMORY }} + [bits 128 to 159] ∈ {3} + [bits 160 to 191] ∈ {{ (? *)&MEMORY[8] }} + [bits 192 to 223] ∈ {4} + [bits 224 to 255] ∈ {{ (? *)&MEMORY[16] }} + [bits 256 to 0x11F] ∈ {5} + [bits 0x120 to 0x13F] ∈ {{ (? *)&MEMORY[24] }} + [bits 0x140 to 0x15F] ∈ {6} + [bits 0x160 to 0x17F] ∈ {{ (? *)&MEMORY[32] }} + [bits 0x180 to 0x19F] ∈ {7} + [bits 0x1A0 to 0x1BF] ∈ {{ (? *)&MEMORY[40] }} + [bits 0x1C0 to 0x1DF] ∈ {8} + [bits 0x1E0 to 0x1FF] ∈ {{ (? *)&MEMORY[48] }} + [bits 0x200 to 0x21F] ∈ {9} + [bits 0x220 to 0x23F] ∈ {{ (? *)&MEMORY[56] }} + [bits 0x240 to 0x25F] ∈ {10} + [bits 0x260 to 0x27F] ∈ {{ (? *)&MEMORY[64] }} + [80..0x3FF] ∈ {0} + __fc_initial_stdout ∈ [--..--] + curr ∈ {0} + head ∈ {{ (item *)&MEMORY[72] }} + i ∈ {11} + next_free ∈ {80} +[from] Computing for function malloc +[from] Done for function malloc +[from] Computing for function main +[from] Computing for function Frama_C_dump_each <-main +[from] Done for function Frama_C_dump_each +[from] Computing for function printf <-main +[from] Done for function printf +tests/non-free/linked_list.c:51:[from] warning: variadic call detected. Using only 1 argument(s). +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function malloc: + next_free FROM size; next_free + \result FROM size; next_free +[from] Function printf: + __fc_initial_stdout FROM "%d\n" + \result FROM ANYTHING(origin:Unknown) +[from] Function main: + MEMORY{[0..3]; [8..11]; [16..19]; [24..27]; [32..35]; [40..43]; [48..51]; + [56..59]; [64..67]; [72..75]} + FROM next_free (and SELF) + {[4..7]; [12..15]; [20..23]; [28..31]; [36..39]; [44..47]; [52..55]; + [60..63]; [68..71]; [76..79]} + FROM next_free (and SELF) + __fc_initial_stdout FROM MEMORY{[4..7]; [12..15]; [20..23]; [28..31]; + [36..39]; [44..47]; [52..55]; [60..63]; + [68..71]; [76..79]}; + next_free; "%d\n" (and SELF) + next_free FROM next_free (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function malloc: + next_free; __retres +[inout] Inputs for function malloc: + next_free +[inout] Out (internal) for function main: + MEMORY[0..79]; __fc_initial_stdout; curr; head; i; next_free +[inout] Inputs for function main: + MEMORY[0..79]; next_free; "%d\n" diff --git a/tests/non-free/oracle_symblocs/loopalloc.err.oracle b/tests/non-free/oracle_symblocs/loopalloc.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/non-free/oracle_symblocs/loopalloc.res.oracle b/tests/non-free/oracle_symblocs/loopalloc.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..7004a953cedcc630d70cc30b52e691265ff00220 --- /dev/null +++ b/tests/non-free/oracle_symblocs/loopalloc.res.oracle @@ -0,0 +1,305 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/non-free/loopalloc.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + p ∈ {0} + v ∈ [--..--] +[value] DUMPING STATE of file tests/non-free/loopalloc.i line 17 + p ∈ {0} + v ∈ [--..--] + __retres ∈ UNINITIALIZED + =END OF DUMP== +tests/non-free/loopalloc.i:18:[value] allocating variable __malloc_main_l18 +tests/non-free/loopalloc.i:19:[value:malloc] strong free on bases: {__malloc_main_l18} +[value] DUMPING STATE of file tests/non-free/loopalloc.i line 20 + p ∈ ESCAPINGADDR + v ∈ [--..--] + __retres ∈ UNINITIALIZED + =END OF DUMP== +tests/non-free/loopalloc.i:15:[value] entering loop for the first time +[value] DUMPING STATE of file tests/non-free/loopalloc.i line 17 + p ∈ ESCAPINGADDR + v ∈ [--..--] + __retres ∈ UNINITIALIZED + =END OF DUMP== +tests/non-free/loopalloc.i:18:[value] allocating variable __malloc_main_l18_0 +tests/non-free/loopalloc.i:19:[value:malloc] strong free on bases: {__malloc_main_l18_0} +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +tests/non-free/loopalloc.i:18:[kernel] warning: Neither code nor specification for function Frama_C_alloc_size, generating default assigns from the prototype +tests/non-free/loopalloc.i:19:[kernel] warning: Neither code nor specification for function Frama_C_free, generating default assigns from the prototype +[value:final-states] Values at end of function main: + NON TERMINATING FUNCTION +[from] Computing for function main +[from] Computing for function Frama_C_dump_each <-main +[from] Done for function Frama_C_dump_each +[from] Computing for function Frama_C_alloc_size <-main +[from] Done for function Frama_C_alloc_size +[from] Computing for function Frama_C_free <-main +[from] Done for function Frama_C_free +[from] Non-terminating function main (no dependencies) +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NON TERMINATING - NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + p +[inout] Inputs for function main: + p +[value] Analyzing a complete application starting at main2 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + p ∈ {0} + v ∈ [--..--] +[value] computing for function incr <- main2. + Called from tests/non-free/loopalloc.i:39. +[value] Recording results for incr +[value] Done for function incr +[value] DUMPING STATE of file tests/non-free/loopalloc.i line 41 + p ∈ {0} + v ∈ [--..--] + c ∈ {0; 1} + __retres ∈ UNINITIALIZED + =END OF DUMP== +tests/non-free/loopalloc.i:42:[value] allocating variable __malloc_main2_l42 +[value] Called Frama_C_show_each({{ &__malloc_main2_l42 }}) +tests/non-free/loopalloc.i:44:[value:malloc] strong free on bases: {__malloc_main2_l42} +[value] DUMPING STATE of file tests/non-free/loopalloc.i line 45 + p ∈ ESCAPINGADDR + v ∈ [--..--] + c ∈ {0; 1} + __retres ∈ UNINITIALIZED + =END OF DUMP== +[value] computing for function incr <- main2. + Called from tests/non-free/loopalloc.i:39. +[value] Recording results for incr +[value] Done for function incr +[value] DUMPING STATE of file tests/non-free/loopalloc.i line 41 + p ∈ ESCAPINGADDR + v ∈ [--..--] + c ∈ {0; 1; 2} + __retres ∈ UNINITIALIZED + =END OF DUMP== +tests/non-free/loopalloc.i:42:[value] allocating variable __malloc_main2_l42_0 +[value] Called Frama_C_show_each({{ &__malloc_main2_l42_0 }}) +tests/non-free/loopalloc.i:44:[value:malloc] strong free on bases: {__malloc_main2_l42_0} +[value] DUMPING STATE of file tests/non-free/loopalloc.i line 45 + p ∈ ESCAPINGADDR + v ∈ [--..--] + c ∈ {0; 1; 2} + __retres ∈ UNINITIALIZED + =END OF DUMP== +[value] computing for function incr <- main2. + Called from tests/non-free/loopalloc.i:39. +[value] Recording results for incr +[value] Done for function incr +[value] DUMPING STATE of file tests/non-free/loopalloc.i line 41 + p ∈ ESCAPINGADDR + v ∈ [--..--] + c ∈ {0; 1; 2; 3} + __retres ∈ UNINITIALIZED + =END OF DUMP== +tests/non-free/loopalloc.i:42:[value] allocating variable __malloc_main2_l42_1 +[value] Called Frama_C_show_each({{ &__malloc_main2_l42_1 }}) +tests/non-free/loopalloc.i:44:[value:malloc] strong free on bases: {__malloc_main2_l42_1} +[value] DUMPING STATE of file tests/non-free/loopalloc.i line 45 + p ∈ ESCAPINGADDR + v ∈ [--..--] + c ∈ {0; 1; 2; 3} + __retres ∈ UNINITIALIZED + =END OF DUMP== +[value] computing for function incr <- main2. + Called from tests/non-free/loopalloc.i:39. +[value] Recording results for incr +[value] Done for function incr +[value] DUMPING STATE of file tests/non-free/loopalloc.i line 41 + p ∈ ESCAPINGADDR + v ∈ [--..--] + c ∈ {0; 1; 2; 3; 4} + __retres ∈ UNINITIALIZED + =END OF DUMP== +tests/non-free/loopalloc.i:42:[value] allocating variable __malloc_main2_l42_2 +[value] Called Frama_C_show_each({{ &__malloc_main2_l42_2 }}) +tests/non-free/loopalloc.i:44:[value:malloc] strong free on bases: {__malloc_main2_l42_2} +[value] DUMPING STATE of file tests/non-free/loopalloc.i line 45 + p ∈ ESCAPINGADDR + v ∈ [--..--] + c ∈ {0; 1; 2; 3; 4} + __retres ∈ UNINITIALIZED + =END OF DUMP== +[value] computing for function incr <- main2. + Called from tests/non-free/loopalloc.i:39. +[value] Recording results for incr +[value] Done for function incr +[value] DUMPING STATE of file tests/non-free/loopalloc.i line 41 + p ∈ ESCAPINGADDR + v ∈ [--..--] + c ∈ {0; 1; 2; 3; 4; 5} + __retres ∈ UNINITIALIZED + =END OF DUMP== +tests/non-free/loopalloc.i:42:[value] allocating variable __malloc_main2_l42_3 +[value] Called Frama_C_show_each({{ &__malloc_main2_l42_3 }}) +tests/non-free/loopalloc.i:44:[value:malloc] strong free on bases: {__malloc_main2_l42_3} +[value] DUMPING STATE of file tests/non-free/loopalloc.i line 45 + p ∈ ESCAPINGADDR + v ∈ [--..--] + c ∈ {0; 1; 2; 3; 4; 5} + __retres ∈ UNINITIALIZED + =END OF DUMP== +[value] computing for function incr <- main2. + Called from tests/non-free/loopalloc.i:39. +[value] Recording results for incr +[value] Done for function incr +[value] DUMPING STATE of file tests/non-free/loopalloc.i line 41 + p ∈ ESCAPINGADDR + v ∈ [--..--] + c ∈ {0; 1; 2; 3; 4; 5; 6} + __retres ∈ UNINITIALIZED + =END OF DUMP== +tests/non-free/loopalloc.i:42:[value] allocating variable __malloc_main2_l42_4 +[value] Called Frama_C_show_each({{ &__malloc_main2_l42_4 }}) +tests/non-free/loopalloc.i:44:[value:malloc] strong free on bases: {__malloc_main2_l42_4} +[value] DUMPING STATE of file tests/non-free/loopalloc.i line 45 + p ∈ ESCAPINGADDR + v ∈ [--..--] + c ∈ {0; 1; 2; 3; 4; 5; 6} + __retres ∈ UNINITIALIZED + =END OF DUMP== +[value] computing for function incr <- main2. + Called from tests/non-free/loopalloc.i:39. +[value] Recording results for incr +[value] Done for function incr +[value] DUMPING STATE of file tests/non-free/loopalloc.i line 41 + p ∈ ESCAPINGADDR + v ∈ [--..--] + c ∈ {0; 1; 2; 3; 4; 5; 6; 7} + __retres ∈ UNINITIALIZED + =END OF DUMP== +tests/non-free/loopalloc.i:42:[value] allocating variable __malloc_main2_l42_5 +[value] Called Frama_C_show_each({{ &__malloc_main2_l42_5 }}) +tests/non-free/loopalloc.i:44:[value:malloc] strong free on bases: {__malloc_main2_l42_5} +[value] DUMPING STATE of file tests/non-free/loopalloc.i line 45 + p ∈ ESCAPINGADDR + v ∈ [--..--] + c ∈ {0; 1; 2; 3; 4; 5; 6; 7} + __retres ∈ UNINITIALIZED + =END OF DUMP== +[value] computing for function incr <- main2. + Called from tests/non-free/loopalloc.i:39. +[value] Recording results for incr +[value] Done for function incr +[value] DUMPING STATE of file tests/non-free/loopalloc.i line 41 + p ∈ ESCAPINGADDR + v ∈ [--..--] + c ∈ [0..8] + __retres ∈ UNINITIALIZED + =END OF DUMP== +tests/non-free/loopalloc.i:42:[value] allocating variable __malloc_main2_l42_6 +[value] Called Frama_C_show_each({{ &__malloc_main2_l42_6 }}) +tests/non-free/loopalloc.i:44:[value:malloc] strong free on bases: {__malloc_main2_l42_6} +[value] DUMPING STATE of file tests/non-free/loopalloc.i line 45 + p ∈ ESCAPINGADDR + v ∈ [--..--] + c ∈ [0..8] + __retres ∈ UNINITIALIZED + =END OF DUMP== +[value] computing for function incr <- main2. + Called from tests/non-free/loopalloc.i:39. +[value] Recording results for incr +[value] Done for function incr +[value] DUMPING STATE of file tests/non-free/loopalloc.i line 41 + p ∈ ESCAPINGADDR + v ∈ [--..--] + c ∈ [0..9] + __retres ∈ UNINITIALIZED + =END OF DUMP== +tests/non-free/loopalloc.i:42:[value] allocating variable __malloc_main2_l42_7 +[value] Called Frama_C_show_each({{ &__malloc_main2_l42_7 }}) +tests/non-free/loopalloc.i:44:[value:malloc] strong free on bases: {__malloc_main2_l42_7} +[value] DUMPING STATE of file tests/non-free/loopalloc.i line 45 + p ∈ ESCAPINGADDR + v ∈ [--..--] + c ∈ [0..9] + __retres ∈ UNINITIALIZED + =END OF DUMP== +[value] computing for function incr <- main2. + Called from tests/non-free/loopalloc.i:39. +[value] Recording results for incr +[value] Done for function incr +[value] DUMPING STATE of file tests/non-free/loopalloc.i line 41 + p ∈ ESCAPINGADDR + v ∈ [--..--] + c ∈ [0..10] + __retres ∈ UNINITIALIZED + =END OF DUMP== +tests/non-free/loopalloc.i:42:[value] allocating variable __malloc_main2_l42_8 +[value] Called Frama_C_show_each({{ &__malloc_main2_l42_8 }}) +tests/non-free/loopalloc.i:44:[value:malloc] strong free on bases: {__malloc_main2_l42_8} +[value] DUMPING STATE of file tests/non-free/loopalloc.i line 45 + p ∈ ESCAPINGADDR + v ∈ [--..--] + c ∈ [0..10] + __retres ∈ UNINITIALIZED + =END OF DUMP== +[value] computing for function incr <- main2. + Called from tests/non-free/loopalloc.i:39. +[value] Recording results for incr +[value] Done for function incr +[value] DUMPING STATE of file tests/non-free/loopalloc.i line 41 + p ∈ ESCAPINGADDR + v ∈ [--..--] + c ∈ [0..11] + __retres ∈ UNINITIALIZED + =END OF DUMP== +tests/non-free/loopalloc.i:42:[value] allocating variable __malloc_main2_l42_9 +[value] Called Frama_C_show_each({{ &__malloc_main2_l42_9 }}) +tests/non-free/loopalloc.i:44:[value:malloc] strong free on bases: {__malloc_main2_l42_9} +[value] DUMPING STATE of file tests/non-free/loopalloc.i line 45 + p ∈ ESCAPINGADDR + v ∈ [--..--] + c ∈ [0..11] + __retres ∈ UNINITIALIZED + =END OF DUMP== +[value] computing for function incr <- main2. + Called from tests/non-free/loopalloc.i:39. +[value] Recording results for incr +[value] Done for function incr +[value] Recording results for main2 +[value] done for function main2 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function incr: + c ∈ [0..11] +[value:final-states] Values at end of function main2: + NON TERMINATING FUNCTION +[from] Computing for function incr +[from] Done for function incr +[from] Computing for function main2 +[from] Computing for function Frama_C_dump_each <-main2 +[from] Done for function Frama_C_dump_each +[from] Computing for function Frama_C_alloc_size <-main2 +[from] Done for function Frama_C_alloc_size +[from] Computing for function Frama_C_free <-main2 +[from] Done for function Frama_C_free +[from] Non-terminating function main2 (no dependencies) +[from] Done for function main2 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function incr: + c FROM v; p_0; c (and SELF) +[from] Function main2: + NON TERMINATING - NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function incr: + c +[inout] Inputs for function incr: + v; c +[inout] Out (internal) for function main2: + p; c +[inout] Inputs for function main2: + p; v diff --git a/tests/non-free/oracle_symblocs/malloc-deps.err.oracle b/tests/non-free/oracle_symblocs/malloc-deps.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/non-free/oracle_symblocs/malloc-deps.res.oracle b/tests/non-free/oracle_symblocs/malloc-deps.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..bb04d1f19d9bed56f88570bfcef133fd602db395 --- /dev/null +++ b/tests/non-free/oracle_symblocs/malloc-deps.res.oracle @@ -0,0 +1,146 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/non-free/malloc-deps.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + v ∈ [--..--] +tests/non-free/malloc-deps.i:17:[value] allocating weak variable __malloc_w_main_l17 +tests/non-free/malloc-deps.i:21:[value] allocating variable __malloc_main_l21 +tests/non-free/malloc-deps.i:28:[value] allocating variable __malloc_main_l28 +[value] computing for function g <- main. + Called from tests/non-free/malloc-deps.i:29. +tests/non-free/malloc-deps.i:13:[value] warning: out of bounds write. assert \valid(p+k); +[value] Recording results for g +[from] Computing for function g +[from] Done for function g +[value] Done for function g +tests/non-free/malloc-deps.i:28:[value:malloc] marking variable `__malloc_main_l28' as weak +tests/non-free/malloc-deps.i:28:[value:malloc] resizing variable `__malloc_w_main_l28' (0..31) to fit 0..63 +tests/non-free/malloc-deps.i:29:[value] warning: signed overflow. assert l+v ≤ 2147483647; +[value] computing for function g <- main. + Called from tests/non-free/malloc-deps.i:29. +[value] Recording results for g +[from] Computing for function g +[from] Done for function g +[value] Done for function g +tests/non-free/malloc-deps.i:28:[value:malloc] resizing variable `__malloc_w_main_l28' (0..31/63) to fit 0..95 +[value] computing for function g <- main. + Called from tests/non-free/malloc-deps.i:29. +[value] Recording results for g +[from] Computing for function g +[from] Done for function g +[value] Done for function g +tests/non-free/malloc-deps.i:28:[value:malloc] resizing variable `__malloc_w_main_l28' (0..31/95) to fit 0..127 +[value] computing for function g <- main. + Called from tests/non-free/malloc-deps.i:29. +[value] Recording results for g +[from] Computing for function g +[from] Done for function g +[value] Done for function g +tests/non-free/malloc-deps.i:28:[value:malloc] resizing variable `__malloc_w_main_l28' (0..31/127) to fit 0..159 +[value] computing for function g <- main. + Called from tests/non-free/malloc-deps.i:29. +[value] Recording results for g +[from] Computing for function g +[from] Done for function g +[value] Done for function g +tests/non-free/malloc-deps.i:27:[value] entering loop for the first time +tests/non-free/malloc-deps.i:28:[value:malloc] resizing variable `__malloc_w_main_l28' (0..31/159) to fit 0..191 +[value] computing for function g <- main. + Called from tests/non-free/malloc-deps.i:29. +[value] Recording results for g +[from] Computing for function g +[from] Done for function g +[value] Done for function g +tests/non-free/malloc-deps.i:28:[value:malloc] resizing variable `__malloc_w_main_l28' (0..31/191) to fit 0..191/223 +[value] computing for function g <- main. + Called from tests/non-free/malloc-deps.i:29. +[value] Recording results for g +[from] Computing for function g +[from] Done for function g +[value] Done for function g +tests/non-free/malloc-deps.i:28:[value:malloc] resizing variable `__malloc_w_main_l28' (0..31/223) to fit 0..191/255 +[value] computing for function g <- main. + Called from tests/non-free/malloc-deps.i:29. +[value] Recording results for g +[from] Computing for function g +[from] Done for function g +[value] Done for function g +tests/non-free/malloc-deps.i:28:[value:malloc] resizing variable `__malloc_w_main_l28' (0..31/255) to fit 0..191/319 +[value] computing for function g <- main. + Called from tests/non-free/malloc-deps.i:29. +[value] Recording results for g +[from] Computing for function g +[from] Done for function g +[value] Done for function g +tests/non-free/malloc-deps.i:28:[value:malloc] resizing variable `__malloc_w_main_l28' (0..31/319) to fit 0..191/319 +[value] computing for function g <- main. + Called from tests/non-free/malloc-deps.i:29. +[value] Recording results for g +[from] Computing for function g +[from] Done for function g +[value] Done for function g +[value] Recording results for main +[from] Computing for function main +[from] Done for function main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function g: + __malloc_w_main_l28[0..9] ∈ [0..9] or UNINITIALIZED +[value:final-states] Values at end of function main: + p ∈ {{ &__malloc_w_main_l17[0] }} + q ∈ {{ &__malloc_main_l21[0] }} + r ∈ {{ &__malloc_w_main_l28[0] }} + __malloc_w_main_l17[0] ∈ [--..--] or UNINITIALIZED + [1..24] ∈ UNINITIALIZED + __malloc_main_l21[0] ∈ [--..--] + [1..24] ∈ UNINITIALIZED + __malloc_w_main_l28[0..9] ∈ [0..9] or UNINITIALIZED +[from] Computing for function g +[from] Done for function g +[from] Computing for function main +[from] Computing for function Frama_C_alloc_size_weak <-main +[from] Done for function Frama_C_alloc_size_weak +[from] Computing for function Frama_C_alloc_size <-main +[from] Done for function Frama_C_alloc_size +[from] Computing for function Frama_C_alloc_by_stack <-main +[from] Done for function Frama_C_alloc_by_stack +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function g: + __malloc_w_main_l28[0..9] FROM p; k (and SELF) +[from] Function main: + __malloc_w_main_l17[0] FROM i; j (and SELF) + __malloc_main_l21[0] FROM j + __malloc_w_main_l28[0..9] FROM v (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[from] ====== DISPLAYING CALLWISE DEPENDENCIES ====== +[from] call to Frama_C_alloc_size_weak at tests/non-free/malloc-deps.i:17 (by main): + \result FROM \nothing +[from] call to Frama_C_alloc_size at tests/non-free/malloc-deps.i:21 (by main): + \result FROM \nothing +[from] call to Frama_C_alloc_by_stack at tests/non-free/malloc-deps.i:28 (by main): + \result FROM \nothing +[from] call to g at tests/non-free/malloc-deps.i:29 (by main): + __malloc_w_main_l28[0..9] FROM p; k (and SELF) +[from] entry point: + __malloc_w_main_l17[0] FROM i; j (and SELF) + __malloc_main_l21[0] FROM j + __malloc_w_main_l28[0..9] FROM v (and SELF) +[from] ====== END OF CALLWISE DEPENDENCIES ====== +[inout] InOut (internal) for function g: + Operational inputs: + p; k + Operational inputs on termination: + p; k + Sure outputs: + \nothing +[inout] InOut (internal) for function main: + Operational inputs: + v; i; j + Operational inputs on termination: + v; i; j + Sure outputs: + p; q; l; __malloc_main_l21[0] diff --git a/tests/non-free/oracle_symblocs/malloc-optimistic.err.oracle b/tests/non-free/oracle_symblocs/malloc-optimistic.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/non-free/oracle_symblocs/malloc-optimistic.res.oracle b/tests/non-free/oracle_symblocs/malloc-optimistic.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..814eac8c6e01f768efc04657b8713292428387bb --- /dev/null +++ b/tests/non-free/oracle_symblocs/malloc-optimistic.res.oracle @@ -0,0 +1,3026 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/non-free/malloc-optimistic.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + v ∈ [--..--] +[value] computing for function main1 <- main. + Called from tests/non-free/malloc-optimistic.c:135. +[value] Called Frama_C_show_each_1_1({0}) +[value] Called Frama_C_show_each_1_1({1}) +tests/non-free/malloc-optimistic.c:17:[value] allocating variable __malloc_main1_l17 +tests/non-free/malloc-optimistic.c:17:[value:malloc] resizing variable `__malloc_main1_l17' (0..31) to fit 0..63 +[value] Called Frama_C_show_each_1_2({0}) +[value] Called Frama_C_show_each_1_2({1}) +tests/non-free/malloc-optimistic.c:19:[value] warning: out of bounds write. assert \valid(p+i); +[value] Recording results for main1 +[value] Done for function main1 +tests/non-free/malloc-optimistic.c:136:[value:malloc] strong free on bases: {__malloc_main1_l17} +[value] computing for function main2 <- main. + Called from tests/non-free/malloc-optimistic.c:137. +[value] Called Frama_C_show_each_2_1({2}) +[value] Called Frama_C_show_each_2_1({1}) +tests/non-free/malloc-optimistic.c:27:[value] allocating variable __malloc_main2_l27 +tests/non-free/malloc-optimistic.c:27:[value:malloc] resizing variable `__malloc_main2_l27' (0..95) to fit 0..63 +[value] Called Frama_C_show_each_2_2({2}) +[value] Called Frama_C_show_each_2_2({1}) +tests/non-free/malloc-optimistic.c:29:[value] warning: out of bounds write. assert \valid(p+i); +[value] Recording results for main2 +[value] Done for function main2 +tests/non-free/malloc-optimistic.c:138:[value:malloc] strong free on bases: {__malloc_main2_l27} +[value] computing for function main3 <- main. + Called from tests/non-free/malloc-optimistic.c:139. +[value] computing for function main_3_aux <- main3 <- main. + Called from tests/non-free/malloc-optimistic.c:48. +tests/non-free/malloc-optimistic.c:34:[value] allocating variable __malloc_main_3_aux_l34 +[value] Recording results for main_3_aux +[value] Done for function main_3_aux +[value] computing for function main_3_aux <- main3 <- main. + Called from tests/non-free/malloc-optimistic.c:48. +tests/non-free/malloc-optimistic.c:34:[value:malloc] resizing variable `__malloc_main_3_aux_l34' (0..31) to fit 0..63 +tests/non-free/malloc-optimistic.c:35:[value] warning: out of bounds write. assert \valid(p+i); +[value] Recording results for main_3_aux +[value] Done for function main_3_aux +[value] Recording results for main3 +[value] Done for function main3 +tests/non-free/malloc-optimistic.c:140:[value:malloc] strong free on bases: {__malloc_main_3_aux_l34} +[value] computing for function main4 <- main. + Called from tests/non-free/malloc-optimistic.c:141. +[value] computing for function main_4_aux <- main4 <- main. + Called from tests/non-free/malloc-optimistic.c:56. +tests/non-free/malloc-optimistic.c:40:[value] allocating variable __malloc_main_4_aux_l40 +[value] Recording results for main_4_aux +[value] Done for function main_4_aux +[value] computing for function main_4_aux <- main4 <- main. + Called from tests/non-free/malloc-optimistic.c:56. +tests/non-free/malloc-optimistic.c:40:[value:malloc] resizing variable `__malloc_main_4_aux_l40' (0..95) to fit 0..63 +[value] Recording results for main_4_aux +[value] Done for function main_4_aux +[value] Recording results for main4 +[value] Done for function main4 +tests/non-free/malloc-optimistic.c:142:[value:malloc] strong free on bases: {__malloc_main_4_aux_l40} +[value] computing for function main5 <- main. + Called from tests/non-free/malloc-optimistic.c:144. +tests/non-free/malloc-optimistic.c:64:[value] allocating variable __malloc_main5_l64 +tests/non-free/malloc-optimistic.c:64:[value:malloc] resizing variable `__malloc_main5_l64' (0..31) to fit 0..63 +tests/non-free/malloc-optimistic.c:65:[value] warning: out of bounds write. assert \valid(p+i); +tests/non-free/malloc-optimistic.c:66:[value] warning: out of bounds read. assert \valid_read(p+i); +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 67 + v ∈ [--..--] + i ∈ {0} + p ∈ {{ &__malloc_main5_l64[0] }} + j ∈ {0} + k ∈ {-2} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_main5_l64[0] ∈ {0} + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 67 + v ∈ [--..--] + i ∈ {1} + p ∈ {{ &__malloc_main5_l64[0] }} + j ∈ {0} + k ∈ {-2} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_main5_l64[0] ∈ UNINITIALIZED + [1] ∈ {0} + =END OF DUMP== +tests/non-free/malloc-optimistic.c:68:[value:malloc] strong free on bases: {__malloc_main5_l64} +tests/non-free/malloc-optimistic.c:68:[value:malloc] strong free on bases: {__malloc_main5_l64} +tests/non-free/malloc-optimistic.c:64:[value:malloc] resizing variable `__malloc_main5_l64' (0..31/63) to fit 0..63 +tests/non-free/malloc-optimistic.c:64:[value:malloc] resizing variable `__malloc_main5_l64' (0..31/63) to fit 0..95 +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 67 + v ∈ [--..--] + i ∈ {2} + p ∈ {{ &__malloc_main5_l64[0] }} + j ∈ {1} + k ∈ {-1} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_main5_l64[0..1] ∈ UNINITIALIZED + [2] ∈ {1} + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 67 + v ∈ [--..--] + i ∈ {1} + p ∈ {{ &__malloc_main5_l64[0] }} + j ∈ {1} + k ∈ {-1} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_main5_l64[0] ∈ UNINITIALIZED + [1] ∈ {1} + =END OF DUMP== +tests/non-free/malloc-optimistic.c:68:[value:malloc] strong free on bases: {__malloc_main5_l64} +tests/non-free/malloc-optimistic.c:68:[value:malloc] strong free on bases: {__malloc_main5_l64} +tests/non-free/malloc-optimistic.c:64:[value:malloc] resizing variable `__malloc_main5_l64' (0..31/95) to fit 0..95 +tests/non-free/malloc-optimistic.c:64:[value:malloc] resizing variable `__malloc_main5_l64' (0..31/95) to fit 0..127 +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 67 + v ∈ [--..--] + i ∈ {3} + p ∈ {{ &__malloc_main5_l64[0] }} + j ∈ {2} + k ∈ {0} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_main5_l64[0..2] ∈ UNINITIALIZED + [3] ∈ {2} + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 67 + v ∈ [--..--] + i ∈ {2} + p ∈ {{ &__malloc_main5_l64[0] }} + j ∈ {2} + k ∈ {0} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_main5_l64[0..1] ∈ UNINITIALIZED + [2] ∈ {2} + =END OF DUMP== +tests/non-free/malloc-optimistic.c:68:[value:malloc] strong free on bases: {__malloc_main5_l64} +tests/non-free/malloc-optimistic.c:68:[value:malloc] strong free on bases: {__malloc_main5_l64} +tests/non-free/malloc-optimistic.c:64:[value:malloc] resizing variable `__malloc_main5_l64' (0..31/127) to fit 0..127 +tests/non-free/malloc-optimistic.c:64:[value:malloc] resizing variable `__malloc_main5_l64' (0..31/127) to fit 0..159 +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 67 + v ∈ [--..--] + i ∈ {4} + p ∈ {{ &__malloc_main5_l64[0] }} + j ∈ {3} + k ∈ {1} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_main5_l64[0..3] ∈ UNINITIALIZED + [4] ∈ {3} + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 67 + v ∈ [--..--] + i ∈ {3} + p ∈ {{ &__malloc_main5_l64[0] }} + j ∈ {3} + k ∈ {1} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_main5_l64[0..2] ∈ UNINITIALIZED + [3] ∈ {3} + =END OF DUMP== +tests/non-free/malloc-optimistic.c:68:[value:malloc] strong free on bases: {__malloc_main5_l64} +tests/non-free/malloc-optimistic.c:68:[value:malloc] strong free on bases: {__malloc_main5_l64} +tests/non-free/malloc-optimistic.c:64:[value:malloc] resizing variable `__malloc_main5_l64' (0..31/159) to fit 0..159 +tests/non-free/malloc-optimistic.c:64:[value:malloc] resizing variable `__malloc_main5_l64' (0..31/159) to fit 0..191 +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 67 + v ∈ [--..--] + i ∈ {5} + p ∈ {{ &__malloc_main5_l64[0] }} + j ∈ {4} + k ∈ {2} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_main5_l64[0..4] ∈ UNINITIALIZED + [5] ∈ {4} + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 67 + v ∈ [--..--] + i ∈ {4} + p ∈ {{ &__malloc_main5_l64[0] }} + j ∈ {4} + k ∈ {2} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_main5_l64[0..3] ∈ UNINITIALIZED + [4] ∈ {4} + =END OF DUMP== +tests/non-free/malloc-optimistic.c:68:[value:malloc] strong free on bases: {__malloc_main5_l64} +tests/non-free/malloc-optimistic.c:68:[value:malloc] strong free on bases: {__malloc_main5_l64} +tests/non-free/malloc-optimistic.c:64:[value:malloc] resizing variable `__malloc_main5_l64' (0..31/191) to fit 0..191 +tests/non-free/malloc-optimistic.c:64:[value:malloc] resizing variable `__malloc_main5_l64' (0..31/191) to fit 0..223 +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 67 + v ∈ [--..--] + i ∈ {6} + p ∈ {{ &__malloc_main5_l64[0] }} + j ∈ {5} + k ∈ {3} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_main5_l64[0..5] ∈ UNINITIALIZED + [6] ∈ {5} + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 67 + v ∈ [--..--] + i ∈ {5} + p ∈ {{ &__malloc_main5_l64[0] }} + j ∈ {5} + k ∈ {3} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_main5_l64[0..4] ∈ UNINITIALIZED + [5] ∈ {5} + =END OF DUMP== +tests/non-free/malloc-optimistic.c:68:[value:malloc] strong free on bases: {__malloc_main5_l64} +tests/non-free/malloc-optimistic.c:68:[value:malloc] strong free on bases: {__malloc_main5_l64} +tests/non-free/malloc-optimistic.c:64:[value:malloc] resizing variable `__malloc_main5_l64' (0..31/223) to fit 0..223 +tests/non-free/malloc-optimistic.c:64:[value:malloc] resizing variable `__malloc_main5_l64' (0..31/223) to fit 0..255 +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 67 + v ∈ [--..--] + i ∈ {7} + p ∈ {{ &__malloc_main5_l64[0] }} + j ∈ {6} + k ∈ {4} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_main5_l64[0..6] ∈ UNINITIALIZED + [7] ∈ {6} + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 67 + v ∈ [--..--] + i ∈ {6} + p ∈ {{ &__malloc_main5_l64[0] }} + j ∈ {6} + k ∈ {4} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_main5_l64[0..5] ∈ UNINITIALIZED + [6] ∈ {6} + =END OF DUMP== +tests/non-free/malloc-optimistic.c:68:[value:malloc] strong free on bases: {__malloc_main5_l64} +tests/non-free/malloc-optimistic.c:68:[value:malloc] strong free on bases: {__malloc_main5_l64} +tests/non-free/malloc-optimistic.c:64:[value:malloc] resizing variable `__malloc_main5_l64' (0..31/255) to fit 0..255 +tests/non-free/malloc-optimistic.c:64:[value:malloc] resizing variable `__malloc_main5_l64' (0..31/255) to fit 0..287 +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 67 + v ∈ [--..--] + i ∈ {8} + p ∈ {{ &__malloc_main5_l64[0] }} + j ∈ {7} + k ∈ {5} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_main5_l64[0..7] ∈ UNINITIALIZED + [8] ∈ {7} + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 67 + v ∈ [--..--] + i ∈ {7} + p ∈ {{ &__malloc_main5_l64[0] }} + j ∈ {7} + k ∈ {5} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_main5_l64[0..6] ∈ UNINITIALIZED + [7] ∈ {7} + =END OF DUMP== +tests/non-free/malloc-optimistic.c:68:[value:malloc] strong free on bases: {__malloc_main5_l64} +tests/non-free/malloc-optimistic.c:68:[value:malloc] strong free on bases: {__malloc_main5_l64} +tests/non-free/malloc-optimistic.c:64:[value:malloc] resizing variable `__malloc_main5_l64' (0..31/287) to fit 0..287 +tests/non-free/malloc-optimistic.c:64:[value:malloc] resizing variable `__malloc_main5_l64' (0..31/287) to fit 0..319 +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 67 + v ∈ [--..--] + i ∈ {9} + p ∈ {{ &__malloc_main5_l64[0] }} + j ∈ {8} + k ∈ {6} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_main5_l64[0..8] ∈ UNINITIALIZED + [9] ∈ {8} + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 67 + v ∈ [--..--] + i ∈ {8} + p ∈ {{ &__malloc_main5_l64[0] }} + j ∈ {8} + k ∈ {6} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_main5_l64[0..7] ∈ UNINITIALIZED + [8] ∈ {8} + =END OF DUMP== +tests/non-free/malloc-optimistic.c:68:[value:malloc] strong free on bases: {__malloc_main5_l64} +tests/non-free/malloc-optimistic.c:68:[value:malloc] strong free on bases: {__malloc_main5_l64} +tests/non-free/malloc-optimistic.c:64:[value:malloc] resizing variable `__malloc_main5_l64' (0..31/319) to fit 0..319 +tests/non-free/malloc-optimistic.c:64:[value:malloc] resizing variable `__malloc_main5_l64' (0..31/319) to fit 0..351 +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 67 + v ∈ [--..--] + i ∈ {10} + p ∈ {{ &__malloc_main5_l64[0] }} + j ∈ {9} + k ∈ {7} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_main5_l64[0..9] ∈ UNINITIALIZED + [10] ∈ {9} + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 67 + v ∈ [--..--] + i ∈ {9} + p ∈ {{ &__malloc_main5_l64[0] }} + j ∈ {9} + k ∈ {7} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_main5_l64[0..8] ∈ UNINITIALIZED + [9] ∈ {9} + =END OF DUMP== +tests/non-free/malloc-optimistic.c:68:[value:malloc] strong free on bases: {__malloc_main5_l64} +tests/non-free/malloc-optimistic.c:68:[value:malloc] strong free on bases: {__malloc_main5_l64} +[value] Recording results for main5 +[value] Done for function main5 +[value] computing for function main6 <- main. + Called from tests/non-free/malloc-optimistic.c:145. +tests/non-free/malloc-optimistic.c:77:[value] allocating variable __malloc_main6_l77 +tests/non-free/malloc-optimistic.c:77:[value:malloc] resizing variable `__malloc_main6_l77' (0..31) to fit 0..63 +tests/non-free/malloc-optimistic.c:78:[value] warning: out of bounds write. assert \valid(p+i); +tests/non-free/malloc-optimistic.c:79:[value] warning: out of bounds read. assert \valid_read(p+i); +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 80 + v ∈ [--..--] + i ∈ {0} + p ∈ {{ &__malloc_main6_l77[0] }} + j ∈ {0} + k ∈ {-2} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_main6_l77[0] ∈ {0} + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 80 + v ∈ [--..--] + i ∈ {1} + p ∈ {{ &__malloc_main6_l77[0] }} + j ∈ {0} + k ∈ {-2} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0} + =END OF DUMP== +tests/non-free/malloc-optimistic.c:81:[value:malloc] strong free on bases: {__malloc_main6_l77} +tests/non-free/malloc-optimistic.c:77:[value:malloc] marking variable `__malloc_main6_l77' as weak +tests/non-free/malloc-optimistic.c:77:[value:malloc] resizing variable `__malloc_w_main6_l77' (0..31/63) to fit 0..63 +tests/non-free/malloc-optimistic.c:77:[value:malloc] resizing variable `__malloc_w_main6_l77' (0..31/63) to fit 0..95 +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 80 + v ∈ [--..--] + i ∈ {2} + p ∈ {{ &__malloc_w_main6_l77[0] }} + j ∈ {1} + k ∈ {-1} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0} or UNINITIALIZED + [2] ∈ {1} or UNINITIALIZED + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 80 + v ∈ [--..--] + i ∈ {1} + p ∈ {{ &__malloc_w_main6_l77[0] }} + j ∈ {1} + k ∈ {-1} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + =END OF DUMP== +tests/non-free/malloc-optimistic.c:81:[value:malloc] weak free on bases: {__malloc_w_main6_l77} +tests/non-free/malloc-optimistic.c:77:[value:malloc] resizing variable `__malloc_w_main6_l77' (0..31/95) to fit 0..95 +tests/non-free/malloc-optimistic.c:77:[value:malloc] resizing variable `__malloc_w_main6_l77' (0..31/95) to fit 0..127 +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 80 + v ∈ [--..--] + i ∈ {3} + p ∈ {{ &__malloc_w_main6_l77[0] }} + j ∈ {2} + k ∈ {0} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1} or UNINITIALIZED + [3] ∈ {2} or UNINITIALIZED + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 80 + v ∈ [--..--] + i ∈ {2} + p ∈ {{ &__malloc_w_main6_l77[0] }} + j ∈ {2} + k ∈ {0} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + =END OF DUMP== +tests/non-free/malloc-optimistic.c:81:[value:malloc] weak free on bases: {__malloc_w_main6_l77} +tests/non-free/malloc-optimistic.c:77:[value:malloc] resizing variable `__malloc_w_main6_l77' (0..31/127) to fit 0..127 +tests/non-free/malloc-optimistic.c:77:[value:malloc] resizing variable `__malloc_w_main6_l77' (0..31/127) to fit 0..159 +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 80 + v ∈ [--..--] + i ∈ {4} + p ∈ {{ &__malloc_w_main6_l77[0] }} + j ∈ {3} + k ∈ {1} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2} or UNINITIALIZED + [4] ∈ {3} or UNINITIALIZED + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 80 + v ∈ [--..--] + i ∈ {3} + p ∈ {{ &__malloc_w_main6_l77[0] }} + j ∈ {3} + k ∈ {1} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + =END OF DUMP== +tests/non-free/malloc-optimistic.c:81:[value:malloc] weak free on bases: {__malloc_w_main6_l77} +tests/non-free/malloc-optimistic.c:77:[value:malloc] resizing variable `__malloc_w_main6_l77' (0..31/159) to fit 0..159 +tests/non-free/malloc-optimistic.c:77:[value:malloc] resizing variable `__malloc_w_main6_l77' (0..31/159) to fit 0..191 +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 80 + v ∈ [--..--] + i ∈ {5} + p ∈ {{ &__malloc_w_main6_l77[0] }} + j ∈ {4} + k ∈ {2} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3} or UNINITIALIZED + [5] ∈ {4} or UNINITIALIZED + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 80 + v ∈ [--..--] + i ∈ {4} + p ∈ {{ &__malloc_w_main6_l77[0] }} + j ∈ {4} + k ∈ {2} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + =END OF DUMP== +tests/non-free/malloc-optimistic.c:81:[value:malloc] weak free on bases: {__malloc_w_main6_l77} +tests/non-free/malloc-optimistic.c:77:[value:malloc] resizing variable `__malloc_w_main6_l77' (0..31/191) to fit 0..191 +tests/non-free/malloc-optimistic.c:77:[value:malloc] resizing variable `__malloc_w_main6_l77' (0..31/191) to fit 0..223 +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 80 + v ∈ [--..--] + i ∈ {6} + p ∈ {{ &__malloc_w_main6_l77[0] }} + j ∈ {5} + k ∈ {3} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4} or UNINITIALIZED + [6] ∈ {5} or UNINITIALIZED + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 80 + v ∈ [--..--] + i ∈ {5} + p ∈ {{ &__malloc_w_main6_l77[0] }} + j ∈ {5} + k ∈ {3} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + =END OF DUMP== +tests/non-free/malloc-optimistic.c:81:[value:malloc] weak free on bases: {__malloc_w_main6_l77} +tests/non-free/malloc-optimistic.c:77:[value:malloc] resizing variable `__malloc_w_main6_l77' (0..31/223) to fit 0..223 +tests/non-free/malloc-optimistic.c:77:[value:malloc] resizing variable `__malloc_w_main6_l77' (0..31/223) to fit 0..255 +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 80 + v ∈ [--..--] + i ∈ {7} + p ∈ {{ &__malloc_w_main6_l77[0] }} + j ∈ {6} + k ∈ {4} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5} or UNINITIALIZED + [7] ∈ {6} or UNINITIALIZED + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 80 + v ∈ [--..--] + i ∈ {6} + p ∈ {{ &__malloc_w_main6_l77[0] }} + j ∈ {6} + k ∈ {4} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + =END OF DUMP== +tests/non-free/malloc-optimistic.c:81:[value:malloc] weak free on bases: {__malloc_w_main6_l77} +tests/non-free/malloc-optimistic.c:77:[value:malloc] resizing variable `__malloc_w_main6_l77' (0..31/255) to fit 0..255 +tests/non-free/malloc-optimistic.c:77:[value:malloc] resizing variable `__malloc_w_main6_l77' (0..31/255) to fit 0..287 +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 80 + v ∈ [--..--] + i ∈ {8} + p ∈ {{ &__malloc_w_main6_l77[0] }} + j ∈ {7} + k ∈ {5} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6} or UNINITIALIZED + [8] ∈ {7} or UNINITIALIZED + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 80 + v ∈ [--..--] + i ∈ {7} + p ∈ {{ &__malloc_w_main6_l77[0] }} + j ∈ {7} + k ∈ {5} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + =END OF DUMP== +tests/non-free/malloc-optimistic.c:81:[value:malloc] weak free on bases: {__malloc_w_main6_l77} +tests/non-free/malloc-optimistic.c:77:[value:malloc] resizing variable `__malloc_w_main6_l77' (0..31/287) to fit 0..287 +tests/non-free/malloc-optimistic.c:77:[value:malloc] resizing variable `__malloc_w_main6_l77' (0..31/287) to fit 0..319 +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 80 + v ∈ [--..--] + i ∈ {9} + p ∈ {{ &__malloc_w_main6_l77[0] }} + j ∈ {8} + k ∈ {6} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7} or UNINITIALIZED + [9] ∈ {8} or UNINITIALIZED + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 80 + v ∈ [--..--] + i ∈ {8} + p ∈ {{ &__malloc_w_main6_l77[0] }} + j ∈ {8} + k ∈ {6} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + =END OF DUMP== +tests/non-free/malloc-optimistic.c:81:[value:malloc] weak free on bases: {__malloc_w_main6_l77} +tests/non-free/malloc-optimistic.c:77:[value:malloc] resizing variable `__malloc_w_main6_l77' (0..31/319) to fit 0..319 +tests/non-free/malloc-optimistic.c:77:[value:malloc] resizing variable `__malloc_w_main6_l77' (0..31/319) to fit 0..351 +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 80 + v ∈ [--..--] + i ∈ {10} + p ∈ {{ &__malloc_w_main6_l77[0] }} + j ∈ {9} + k ∈ {7} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 80 + v ∈ [--..--] + i ∈ {9} + p ∈ {{ &__malloc_w_main6_l77[0] }} + j ∈ {9} + k ∈ {7} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + =END OF DUMP== +tests/non-free/malloc-optimistic.c:81:[value:malloc] weak free on bases: {__malloc_w_main6_l77} +[value] Recording results for main6 +[value] Done for function main6 +[value] computing for function main7 <- main. + Called from tests/non-free/malloc-optimistic.c:148. +tests/non-free/malloc-optimistic.c:90:[value] allocating variable __malloc_main7_l90 +tests/non-free/malloc-optimistic.c:90:[value:malloc] resizing variable `__malloc_main7_l90' (0..31) to fit 0..63 +tests/non-free/malloc-optimistic.c:91:[value] warning: out of bounds write. assert \valid(p+i); +tests/non-free/malloc-optimistic.c:92:[value] warning: out of bounds read. assert \valid_read(p+i); +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 93 + v ∈ [--..--] + i ∈ {0} + p ∈ {{ &__malloc_main7_l90[0] }} + j ∈ {0} + k ∈ {-2} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_main7_l90[0] ∈ {0} + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 93 + v ∈ [--..--] + i ∈ {1} + p ∈ {{ &__malloc_main7_l90[0] }} + j ∈ {0} + k ∈ {-2} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_main7_l90[0] ∈ UNINITIALIZED + [1] ∈ {0} + =END OF DUMP== +tests/non-free/malloc-optimistic.c:94:[value:malloc] strong free on bases: {__malloc_main7_l90} +tests/non-free/malloc-optimistic.c:94:[value:malloc] strong free on bases: {__malloc_main7_l90} +tests/non-free/malloc-optimistic.c:90:[value:malloc] resizing variable `__malloc_main7_l90' (0..31/63) to fit 0..63 +tests/non-free/malloc-optimistic.c:90:[value:malloc] resizing variable `__malloc_main7_l90' (0..31/63) to fit 0..95 +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 93 + v ∈ [--..--] + i ∈ {2} + p ∈ {{ &__malloc_main7_l90[0] }} + j ∈ {1} + k ∈ {-1} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_main7_l90[0..1] ∈ UNINITIALIZED + [2] ∈ {1} + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 93 + v ∈ [--..--] + i ∈ {1} + p ∈ {{ &__malloc_main7_l90[0] }} + j ∈ {1} + k ∈ {-1} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_main7_l90[0] ∈ UNINITIALIZED + [1] ∈ {1} + =END OF DUMP== +tests/non-free/malloc-optimistic.c:94:[value:malloc] strong free on bases: {__malloc_main7_l90} +tests/non-free/malloc-optimistic.c:94:[value:malloc] strong free on bases: {__malloc_main7_l90} +tests/non-free/malloc-optimistic.c:90:[value:malloc] resizing variable `__malloc_main7_l90' (0..31/95) to fit 0..95 +tests/non-free/malloc-optimistic.c:90:[value:malloc] resizing variable `__malloc_main7_l90' (0..31/95) to fit 0..127 +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 93 + v ∈ [--..--] + i ∈ {3} + p ∈ {{ &__malloc_main7_l90[0] }} + j ∈ {2} + k ∈ {0} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_main7_l90[0..2] ∈ UNINITIALIZED + [3] ∈ {2} + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 93 + v ∈ [--..--] + i ∈ {2} + p ∈ {{ &__malloc_main7_l90[0] }} + j ∈ {2} + k ∈ {0} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_main7_l90[0..1] ∈ UNINITIALIZED + [2] ∈ {2} + =END OF DUMP== +tests/non-free/malloc-optimistic.c:94:[value:malloc] strong free on bases: {__malloc_main7_l90} +tests/non-free/malloc-optimistic.c:94:[value:malloc] strong free on bases: {__malloc_main7_l90} +tests/non-free/malloc-optimistic.c:90:[value:malloc] resizing variable `__malloc_main7_l90' (0..31/127) to fit 0..127 +tests/non-free/malloc-optimistic.c:90:[value:malloc] resizing variable `__malloc_main7_l90' (0..31/127) to fit 0..159 +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 93 + v ∈ [--..--] + i ∈ {4} + p ∈ {{ &__malloc_main7_l90[0] }} + j ∈ {3} + k ∈ {1} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_main7_l90[0..3] ∈ UNINITIALIZED + [4] ∈ {3} + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 93 + v ∈ [--..--] + i ∈ {3} + p ∈ {{ &__malloc_main7_l90[0] }} + j ∈ {3} + k ∈ {1} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_main7_l90[0..2] ∈ UNINITIALIZED + [3] ∈ {3} + =END OF DUMP== +tests/non-free/malloc-optimistic.c:94:[value:malloc] strong free on bases: {__malloc_main7_l90} +tests/non-free/malloc-optimistic.c:94:[value:malloc] strong free on bases: {__malloc_main7_l90} +tests/non-free/malloc-optimistic.c:90:[value:malloc] resizing variable `__malloc_main7_l90' (0..31/159) to fit 0..159 +tests/non-free/malloc-optimistic.c:90:[value:malloc] resizing variable `__malloc_main7_l90' (0..31/159) to fit 0..191 +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 93 + v ∈ [--..--] + i ∈ {5} + p ∈ {{ &__malloc_main7_l90[0] }} + j ∈ {4} + k ∈ {2} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_main7_l90[0..4] ∈ UNINITIALIZED + [5] ∈ {4} + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 93 + v ∈ [--..--] + i ∈ {4} + p ∈ {{ &__malloc_main7_l90[0] }} + j ∈ {4} + k ∈ {2} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_main7_l90[0..3] ∈ UNINITIALIZED + [4] ∈ {4} + =END OF DUMP== +tests/non-free/malloc-optimistic.c:94:[value:malloc] strong free on bases: {__malloc_main7_l90} +tests/non-free/malloc-optimistic.c:94:[value:malloc] strong free on bases: {__malloc_main7_l90} +tests/non-free/malloc-optimistic.c:90:[value:malloc] resizing variable `__malloc_main7_l90' (0..31/191) to fit 0..191 +tests/non-free/malloc-optimistic.c:90:[value:malloc] resizing variable `__malloc_main7_l90' (0..31/191) to fit 0..223 +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 93 + v ∈ [--..--] + i ∈ {6} + p ∈ {{ &__malloc_main7_l90[0] }} + j ∈ {5} + k ∈ {3} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_main7_l90[0..5] ∈ UNINITIALIZED + [6] ∈ {5} + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 93 + v ∈ [--..--] + i ∈ {5} + p ∈ {{ &__malloc_main7_l90[0] }} + j ∈ {5} + k ∈ {3} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_main7_l90[0..4] ∈ UNINITIALIZED + [5] ∈ {5} + =END OF DUMP== +tests/non-free/malloc-optimistic.c:94:[value:malloc] strong free on bases: {__malloc_main7_l90} +tests/non-free/malloc-optimistic.c:94:[value:malloc] strong free on bases: {__malloc_main7_l90} +tests/non-free/malloc-optimistic.c:90:[value:malloc] resizing variable `__malloc_main7_l90' (0..31/223) to fit 0..223 +tests/non-free/malloc-optimistic.c:90:[value:malloc] resizing variable `__malloc_main7_l90' (0..31/223) to fit 0..255 +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 93 + v ∈ [--..--] + i ∈ {7} + p ∈ {{ &__malloc_main7_l90[0] }} + j ∈ {6} + k ∈ {4} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_main7_l90[0..6] ∈ UNINITIALIZED + [7] ∈ {6} + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 93 + v ∈ [--..--] + i ∈ {6} + p ∈ {{ &__malloc_main7_l90[0] }} + j ∈ {6} + k ∈ {4} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_main7_l90[0..5] ∈ UNINITIALIZED + [6] ∈ {6} + =END OF DUMP== +tests/non-free/malloc-optimistic.c:94:[value:malloc] strong free on bases: {__malloc_main7_l90} +tests/non-free/malloc-optimistic.c:94:[value:malloc] strong free on bases: {__malloc_main7_l90} +tests/non-free/malloc-optimistic.c:90:[value:malloc] resizing variable `__malloc_main7_l90' (0..31/255) to fit 0..255 +tests/non-free/malloc-optimistic.c:90:[value:malloc] resizing variable `__malloc_main7_l90' (0..31/255) to fit 0..287 +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 93 + v ∈ [--..--] + i ∈ {8} + p ∈ {{ &__malloc_main7_l90[0] }} + j ∈ {7} + k ∈ {5} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_main7_l90[0..7] ∈ UNINITIALIZED + [8] ∈ {7} + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 93 + v ∈ [--..--] + i ∈ {7} + p ∈ {{ &__malloc_main7_l90[0] }} + j ∈ {7} + k ∈ {5} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_main7_l90[0..6] ∈ UNINITIALIZED + [7] ∈ {7} + =END OF DUMP== +tests/non-free/malloc-optimistic.c:94:[value:malloc] strong free on bases: {__malloc_main7_l90} +tests/non-free/malloc-optimistic.c:94:[value:malloc] strong free on bases: {__malloc_main7_l90} +tests/non-free/malloc-optimistic.c:90:[value:malloc] resizing variable `__malloc_main7_l90' (0..31/287) to fit 0..287 +tests/non-free/malloc-optimistic.c:90:[value:malloc] resizing variable `__malloc_main7_l90' (0..31/287) to fit 0..319 +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 93 + v ∈ [--..--] + i ∈ {9} + p ∈ {{ &__malloc_main7_l90[0] }} + j ∈ {8} + k ∈ {6} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_main7_l90[0..8] ∈ UNINITIALIZED + [9] ∈ {8} + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 93 + v ∈ [--..--] + i ∈ {8} + p ∈ {{ &__malloc_main7_l90[0] }} + j ∈ {8} + k ∈ {6} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_main7_l90[0..7] ∈ UNINITIALIZED + [8] ∈ {8} + =END OF DUMP== +tests/non-free/malloc-optimistic.c:94:[value:malloc] strong free on bases: {__malloc_main7_l90} +tests/non-free/malloc-optimistic.c:94:[value:malloc] strong free on bases: {__malloc_main7_l90} +tests/non-free/malloc-optimistic.c:90:[value:malloc] resizing variable `__malloc_main7_l90' (0..31/319) to fit 0..319 +tests/non-free/malloc-optimistic.c:90:[value:malloc] resizing variable `__malloc_main7_l90' (0..31/319) to fit 0..351 +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 93 + v ∈ [--..--] + i ∈ {10} + p ∈ {{ &__malloc_main7_l90[0] }} + j ∈ {9} + k ∈ {7} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_main7_l90[0..9] ∈ UNINITIALIZED + [10] ∈ {9} + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 93 + v ∈ [--..--] + i ∈ {9} + p ∈ {{ &__malloc_main7_l90[0] }} + j ∈ {9} + k ∈ {7} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_main7_l90[0..8] ∈ UNINITIALIZED + [9] ∈ {9} + =END OF DUMP== +tests/non-free/malloc-optimistic.c:94:[value:malloc] strong free on bases: {__malloc_main7_l90} +tests/non-free/malloc-optimistic.c:94:[value:malloc] strong free on bases: {__malloc_main7_l90} +tests/non-free/malloc-optimistic.c:90:[value:malloc] resizing variable `__malloc_main7_l90' (0..31/351) to fit 0..351 +tests/non-free/malloc-optimistic.c:90:[value:malloc] resizing variable `__malloc_main7_l90' (0..31/351) to fit 0..383 +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 93 + v ∈ [--..--] + i ∈ {11} + p ∈ {{ &__malloc_main7_l90[0] }} + j ∈ {10} + k ∈ {8} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_main7_l90[0..10] ∈ UNINITIALIZED + [11] ∈ {10} + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 93 + v ∈ [--..--] + i ∈ {10} + p ∈ {{ &__malloc_main7_l90[0] }} + j ∈ {10} + k ∈ {8} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_main7_l90[0..9] ∈ UNINITIALIZED + [10] ∈ {10} + =END OF DUMP== +tests/non-free/malloc-optimistic.c:94:[value:malloc] strong free on bases: {__malloc_main7_l90} +tests/non-free/malloc-optimistic.c:94:[value:malloc] strong free on bases: {__malloc_main7_l90} +tests/non-free/malloc-optimistic.c:90:[value:malloc] resizing variable `__malloc_main7_l90' (0..31/383) to fit 0..383 +tests/non-free/malloc-optimistic.c:90:[value:malloc] resizing variable `__malloc_main7_l90' (0..31/383) to fit 0..415 +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 93 + v ∈ [--..--] + i ∈ {12} + p ∈ {{ &__malloc_main7_l90[0] }} + j ∈ {11} + k ∈ {9} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_main7_l90[0..11] ∈ UNINITIALIZED + [12] ∈ {11} + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 93 + v ∈ [--..--] + i ∈ {11} + p ∈ {{ &__malloc_main7_l90[0] }} + j ∈ {11} + k ∈ {9} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_main7_l90[0..10] ∈ UNINITIALIZED + [11] ∈ {11} + =END OF DUMP== +tests/non-free/malloc-optimistic.c:94:[value:malloc] strong free on bases: {__malloc_main7_l90} +tests/non-free/malloc-optimistic.c:94:[value:malloc] strong free on bases: {__malloc_main7_l90} +tests/non-free/malloc-optimistic.c:90:[value:malloc] resizing variable `__malloc_main7_l90' (0..31/415) to fit 0..415 +tests/non-free/malloc-optimistic.c:90:[value:malloc] resizing variable `__malloc_main7_l90' (0..31/415) to fit 0..447 +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 93 + v ∈ [--..--] + i ∈ {13} + p ∈ {{ &__malloc_main7_l90[0] }} + j ∈ {12} + k ∈ {10} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_main7_l90[0..12] ∈ UNINITIALIZED + [13] ∈ {12} + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 93 + v ∈ [--..--] + i ∈ {12} + p ∈ {{ &__malloc_main7_l90[0] }} + j ∈ {12} + k ∈ {10} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_main7_l90[0..11] ∈ UNINITIALIZED + [12] ∈ {12} + =END OF DUMP== +tests/non-free/malloc-optimistic.c:94:[value:malloc] strong free on bases: {__malloc_main7_l90} +tests/non-free/malloc-optimistic.c:94:[value:malloc] strong free on bases: {__malloc_main7_l90} +tests/non-free/malloc-optimistic.c:90:[value:malloc] resizing variable `__malloc_main7_l90' (0..31/447) to fit 0..447 +tests/non-free/malloc-optimistic.c:90:[value:malloc] resizing variable `__malloc_main7_l90' (0..31/447) to fit 0..479 +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 93 + v ∈ [--..--] + i ∈ {14} + p ∈ {{ &__malloc_main7_l90[0] }} + j ∈ {13} + k ∈ {11} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_main7_l90[0..13] ∈ UNINITIALIZED + [14] ∈ {13} + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 93 + v ∈ [--..--] + i ∈ {13} + p ∈ {{ &__malloc_main7_l90[0] }} + j ∈ {13} + k ∈ {11} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_main7_l90[0..12] ∈ UNINITIALIZED + [13] ∈ {13} + =END OF DUMP== +tests/non-free/malloc-optimistic.c:94:[value:malloc] strong free on bases: {__malloc_main7_l90} +tests/non-free/malloc-optimistic.c:94:[value:malloc] strong free on bases: {__malloc_main7_l90} +tests/non-free/malloc-optimistic.c:90:[value:malloc] resizing variable `__malloc_main7_l90' (0..31/479) to fit 0..479 +tests/non-free/malloc-optimistic.c:90:[value:malloc] resizing variable `__malloc_main7_l90' (0..31/479) to fit 0..511 +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 93 + v ∈ [--..--] + i ∈ {15} + p ∈ {{ &__malloc_main7_l90[0] }} + j ∈ {14} + k ∈ {12} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_main7_l90[0..14] ∈ UNINITIALIZED + [15] ∈ {14} + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 93 + v ∈ [--..--] + i ∈ {14} + p ∈ {{ &__malloc_main7_l90[0] }} + j ∈ {14} + k ∈ {12} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_main7_l90[0..13] ∈ UNINITIALIZED + [14] ∈ {14} + =END OF DUMP== +tests/non-free/malloc-optimistic.c:94:[value:malloc] strong free on bases: {__malloc_main7_l90} +tests/non-free/malloc-optimistic.c:94:[value:malloc] strong free on bases: {__malloc_main7_l90} +tests/non-free/malloc-optimistic.c:88:[value] entering loop for the first time +tests/non-free/malloc-optimistic.c:90:[value:malloc] resizing variable `__malloc_main7_l90' (0..31/511) to fit 0..511/543 +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 93 + v ∈ [--..--] + i ∈ {15; 16} + p ∈ {{ &__malloc_main7_l90[0] }} + j ∈ {15} + k ∈ {13} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_main7_l90[0..14] ∈ UNINITIALIZED + [15..16] ∈ {15} or UNINITIALIZED + =END OF DUMP== +tests/non-free/malloc-optimistic.c:94:[value:malloc] strong free on bases: {__malloc_main7_l90} +tests/non-free/malloc-optimistic.c:90:[value:malloc] resizing variable `__malloc_main7_l90' (0..31/543) to fit 0..511/575 +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 93 + v ∈ [--..--] + i ∈ {15; 16; 17} + p ∈ {{ &__malloc_main7_l90[0] }} + j ∈ {15; 16} + k ∈ {13; 14} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_main7_l90[0..14] ∈ UNINITIALIZED + [15..17] ∈ {15; 16} or UNINITIALIZED + =END OF DUMP== +tests/non-free/malloc-optimistic.c:94:[value:malloc] strong free on bases: {__malloc_main7_l90} +tests/non-free/malloc-optimistic.c:90:[value:malloc] resizing variable `__malloc_main7_l90' (0..31/575) to fit 0..511/607 +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 93 + v ∈ [--..--] + i ∈ {15; 16; 17; 18} + p ∈ {{ &__malloc_main7_l90[0] }} + j ∈ {15; 16; 17} + k ∈ {13; 14; 15} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_main7_l90[0..14] ∈ UNINITIALIZED + [15..18] ∈ {15; 16; 17} or UNINITIALIZED + =END OF DUMP== +tests/non-free/malloc-optimistic.c:94:[value:malloc] strong free on bases: {__malloc_main7_l90} +tests/non-free/malloc-optimistic.c:90:[value:malloc] resizing variable `__malloc_main7_l90' (0..31/607) to fit 0..511/3231 +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 93 + v ∈ [--..--] + i ∈ [15..100] + p ∈ {{ &__malloc_main7_l90[0] }} + j ∈ [15..99] + k ∈ [13..97] + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_main7_l90[0..14] ∈ UNINITIALIZED + [15..100] ∈ [15..99] or UNINITIALIZED + =END OF DUMP== +tests/non-free/malloc-optimistic.c:94:[value:malloc] strong free on bases: {__malloc_main7_l90} +[value] Recording results for main7 +[value] Done for function main7 +[value] computing for function main8 <- main. + Called from tests/non-free/malloc-optimistic.c:149. +tests/non-free/malloc-optimistic.c:103:[value] allocating variable __malloc_main8_l103 +tests/non-free/malloc-optimistic.c:103:[value:malloc] resizing variable `__malloc_main8_l103' (0..31) to fit 0..63 +tests/non-free/malloc-optimistic.c:104:[value] warning: out of bounds write. assert \valid(p+i); +tests/non-free/malloc-optimistic.c:105:[value] warning: out of bounds read. assert \valid_read(p+i); +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 106 + v ∈ [--..--] + i ∈ {0} + p ∈ {{ &__malloc_main8_l103[0] }} + j ∈ {0} + k ∈ {-2} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_main8_l103[0] ∈ {0} + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 106 + v ∈ [--..--] + i ∈ {1} + p ∈ {{ &__malloc_main8_l103[0] }} + j ∈ {0} + k ∈ {-2} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_main8_l103[0] ∈ UNINITIALIZED + [1] ∈ {0} + =END OF DUMP== +tests/non-free/malloc-optimistic.c:107:[value:malloc] strong free on bases: {__malloc_main8_l103} +tests/non-free/malloc-optimistic.c:103:[value:malloc] marking variable `__malloc_main8_l103' as weak +tests/non-free/malloc-optimistic.c:103:[value:malloc] resizing variable `__malloc_w_main8_l103' (0..31/63) to fit 0..63 +tests/non-free/malloc-optimistic.c:103:[value:malloc] resizing variable `__malloc_w_main8_l103' (0..31/63) to fit 0..95 +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 106 + v ∈ [--..--] + i ∈ {2} + p ∈ {{ &__malloc_w_main8_l103[0] }} + j ∈ {1} + k ∈ {-1} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_w_main8_l103[0] ∈ UNINITIALIZED + [1] ∈ {0} or UNINITIALIZED + [2] ∈ {1} or UNINITIALIZED + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 106 + v ∈ [--..--] + i ∈ {1} + p ∈ {{ &__malloc_w_main8_l103[0] }} + j ∈ {1} + k ∈ {-1} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_w_main8_l103[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + =END OF DUMP== +tests/non-free/malloc-optimistic.c:107:[value:malloc] weak free on bases: {__malloc_w_main8_l103} +tests/non-free/malloc-optimistic.c:103:[value:malloc] resizing variable `__malloc_w_main8_l103' (0..31/95) to fit 0..95 +tests/non-free/malloc-optimistic.c:103:[value:malloc] resizing variable `__malloc_w_main8_l103' (0..31/95) to fit 0..127 +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 106 + v ∈ [--..--] + i ∈ {3} + p ∈ {{ &__malloc_w_main8_l103[0] }} + j ∈ {2} + k ∈ {0} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_w_main8_l103[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1} or UNINITIALIZED + [3] ∈ {2} or UNINITIALIZED + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 106 + v ∈ [--..--] + i ∈ {2} + p ∈ {{ &__malloc_w_main8_l103[0] }} + j ∈ {2} + k ∈ {0} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_w_main8_l103[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + =END OF DUMP== +tests/non-free/malloc-optimistic.c:107:[value:malloc] weak free on bases: {__malloc_w_main8_l103} +tests/non-free/malloc-optimistic.c:103:[value:malloc] resizing variable `__malloc_w_main8_l103' (0..31/127) to fit 0..127 +tests/non-free/malloc-optimistic.c:103:[value:malloc] resizing variable `__malloc_w_main8_l103' (0..31/127) to fit 0..159 +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 106 + v ∈ [--..--] + i ∈ {4} + p ∈ {{ &__malloc_w_main8_l103[0] }} + j ∈ {3} + k ∈ {1} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_w_main8_l103[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2} or UNINITIALIZED + [4] ∈ {3} or UNINITIALIZED + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 106 + v ∈ [--..--] + i ∈ {3} + p ∈ {{ &__malloc_w_main8_l103[0] }} + j ∈ {3} + k ∈ {1} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_w_main8_l103[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + =END OF DUMP== +tests/non-free/malloc-optimistic.c:107:[value:malloc] weak free on bases: {__malloc_w_main8_l103} +tests/non-free/malloc-optimistic.c:103:[value:malloc] resizing variable `__malloc_w_main8_l103' (0..31/159) to fit 0..159 +tests/non-free/malloc-optimistic.c:103:[value:malloc] resizing variable `__malloc_w_main8_l103' (0..31/159) to fit 0..191 +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 106 + v ∈ [--..--] + i ∈ {5} + p ∈ {{ &__malloc_w_main8_l103[0] }} + j ∈ {4} + k ∈ {2} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_w_main8_l103[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3} or UNINITIALIZED + [5] ∈ {4} or UNINITIALIZED + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 106 + v ∈ [--..--] + i ∈ {4} + p ∈ {{ &__malloc_w_main8_l103[0] }} + j ∈ {4} + k ∈ {2} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_w_main8_l103[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + =END OF DUMP== +tests/non-free/malloc-optimistic.c:107:[value:malloc] weak free on bases: {__malloc_w_main8_l103} +tests/non-free/malloc-optimistic.c:103:[value:malloc] resizing variable `__malloc_w_main8_l103' (0..31/191) to fit 0..191 +tests/non-free/malloc-optimistic.c:103:[value:malloc] resizing variable `__malloc_w_main8_l103' (0..31/191) to fit 0..223 +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 106 + v ∈ [--..--] + i ∈ {6} + p ∈ {{ &__malloc_w_main8_l103[0] }} + j ∈ {5} + k ∈ {3} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_w_main8_l103[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4} or UNINITIALIZED + [6] ∈ {5} or UNINITIALIZED + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 106 + v ∈ [--..--] + i ∈ {5} + p ∈ {{ &__malloc_w_main8_l103[0] }} + j ∈ {5} + k ∈ {3} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_w_main8_l103[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + =END OF DUMP== +tests/non-free/malloc-optimistic.c:107:[value:malloc] weak free on bases: {__malloc_w_main8_l103} +tests/non-free/malloc-optimistic.c:103:[value:malloc] resizing variable `__malloc_w_main8_l103' (0..31/223) to fit 0..223 +tests/non-free/malloc-optimistic.c:103:[value:malloc] resizing variable `__malloc_w_main8_l103' (0..31/223) to fit 0..255 +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 106 + v ∈ [--..--] + i ∈ {7} + p ∈ {{ &__malloc_w_main8_l103[0] }} + j ∈ {6} + k ∈ {4} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_w_main8_l103[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5} or UNINITIALIZED + [7] ∈ {6} or UNINITIALIZED + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 106 + v ∈ [--..--] + i ∈ {6} + p ∈ {{ &__malloc_w_main8_l103[0] }} + j ∈ {6} + k ∈ {4} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_w_main8_l103[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + =END OF DUMP== +tests/non-free/malloc-optimistic.c:107:[value:malloc] weak free on bases: {__malloc_w_main8_l103} +tests/non-free/malloc-optimistic.c:103:[value:malloc] resizing variable `__malloc_w_main8_l103' (0..31/255) to fit 0..255 +tests/non-free/malloc-optimistic.c:103:[value:malloc] resizing variable `__malloc_w_main8_l103' (0..31/255) to fit 0..287 +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 106 + v ∈ [--..--] + i ∈ {8} + p ∈ {{ &__malloc_w_main8_l103[0] }} + j ∈ {7} + k ∈ {5} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_w_main8_l103[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6} or UNINITIALIZED + [8] ∈ {7} or UNINITIALIZED + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 106 + v ∈ [--..--] + i ∈ {7} + p ∈ {{ &__malloc_w_main8_l103[0] }} + j ∈ {7} + k ∈ {5} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_w_main8_l103[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + =END OF DUMP== +tests/non-free/malloc-optimistic.c:107:[value:malloc] weak free on bases: {__malloc_w_main8_l103} +tests/non-free/malloc-optimistic.c:103:[value:malloc] resizing variable `__malloc_w_main8_l103' (0..31/287) to fit 0..287 +tests/non-free/malloc-optimistic.c:103:[value:malloc] resizing variable `__malloc_w_main8_l103' (0..31/287) to fit 0..319 +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 106 + v ∈ [--..--] + i ∈ {9} + p ∈ {{ &__malloc_w_main8_l103[0] }} + j ∈ {8} + k ∈ {6} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_w_main8_l103[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7} or UNINITIALIZED + [9] ∈ {8} or UNINITIALIZED + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 106 + v ∈ [--..--] + i ∈ {8} + p ∈ {{ &__malloc_w_main8_l103[0] }} + j ∈ {8} + k ∈ {6} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_w_main8_l103[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + =END OF DUMP== +tests/non-free/malloc-optimistic.c:107:[value:malloc] weak free on bases: {__malloc_w_main8_l103} +tests/non-free/malloc-optimistic.c:103:[value:malloc] resizing variable `__malloc_w_main8_l103' (0..31/319) to fit 0..319 +tests/non-free/malloc-optimistic.c:103:[value:malloc] resizing variable `__malloc_w_main8_l103' (0..31/319) to fit 0..351 +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 106 + v ∈ [--..--] + i ∈ {10} + p ∈ {{ &__malloc_w_main8_l103[0] }} + j ∈ {9} + k ∈ {7} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_w_main8_l103[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 106 + v ∈ [--..--] + i ∈ {9} + p ∈ {{ &__malloc_w_main8_l103[0] }} + j ∈ {9} + k ∈ {7} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_w_main8_l103[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + =END OF DUMP== +tests/non-free/malloc-optimistic.c:107:[value:malloc] weak free on bases: {__malloc_w_main8_l103} +tests/non-free/malloc-optimistic.c:103:[value:malloc] resizing variable `__malloc_w_main8_l103' (0..31/351) to fit 0..351 +tests/non-free/malloc-optimistic.c:103:[value:malloc] resizing variable `__malloc_w_main8_l103' (0..31/351) to fit 0..383 +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 106 + v ∈ [--..--] + i ∈ {11} + p ∈ {{ &__malloc_w_main8_l103[0] }} + j ∈ {10} + k ∈ {8} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_w_main8_l103[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + [11] ∈ {10} or UNINITIALIZED + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 106 + v ∈ [--..--] + i ∈ {10} + p ∈ {{ &__malloc_w_main8_l103[0] }} + j ∈ {10} + k ∈ {8} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_w_main8_l103[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9; 10} or UNINITIALIZED + =END OF DUMP== +tests/non-free/malloc-optimistic.c:107:[value:malloc] weak free on bases: {__malloc_w_main8_l103} +tests/non-free/malloc-optimistic.c:103:[value:malloc] resizing variable `__malloc_w_main8_l103' (0..31/383) to fit 0..383 +tests/non-free/malloc-optimistic.c:103:[value:malloc] resizing variable `__malloc_w_main8_l103' (0..31/383) to fit 0..415 +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 106 + v ∈ [--..--] + i ∈ {12} + p ∈ {{ &__malloc_w_main8_l103[0] }} + j ∈ {11} + k ∈ {9} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_w_main8_l103[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9; 10} or UNINITIALIZED + [11] ∈ {10} or UNINITIALIZED + [12] ∈ {11} or UNINITIALIZED + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 106 + v ∈ [--..--] + i ∈ {11} + p ∈ {{ &__malloc_w_main8_l103[0] }} + j ∈ {11} + k ∈ {9} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_w_main8_l103[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9; 10} or UNINITIALIZED + [11] ∈ {10; 11} or UNINITIALIZED + =END OF DUMP== +tests/non-free/malloc-optimistic.c:107:[value:malloc] weak free on bases: {__malloc_w_main8_l103} +tests/non-free/malloc-optimistic.c:103:[value:malloc] resizing variable `__malloc_w_main8_l103' (0..31/415) to fit 0..415 +tests/non-free/malloc-optimistic.c:103:[value:malloc] resizing variable `__malloc_w_main8_l103' (0..31/415) to fit 0..447 +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 106 + v ∈ [--..--] + i ∈ {13} + p ∈ {{ &__malloc_w_main8_l103[0] }} + j ∈ {12} + k ∈ {10} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_w_main8_l103[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9; 10} or UNINITIALIZED + [11] ∈ {10; 11} or UNINITIALIZED + [12] ∈ {11} or UNINITIALIZED + [13] ∈ {12} or UNINITIALIZED + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 106 + v ∈ [--..--] + i ∈ {12} + p ∈ {{ &__malloc_w_main8_l103[0] }} + j ∈ {12} + k ∈ {10} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_w_main8_l103[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9; 10} or UNINITIALIZED + [11] ∈ {10; 11} or UNINITIALIZED + [12] ∈ {11; 12} or UNINITIALIZED + =END OF DUMP== +tests/non-free/malloc-optimistic.c:107:[value:malloc] weak free on bases: {__malloc_w_main8_l103} +tests/non-free/malloc-optimistic.c:103:[value:malloc] resizing variable `__malloc_w_main8_l103' (0..31/447) to fit 0..447 +tests/non-free/malloc-optimistic.c:103:[value:malloc] resizing variable `__malloc_w_main8_l103' (0..31/447) to fit 0..479 +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 106 + v ∈ [--..--] + i ∈ {14} + p ∈ {{ &__malloc_w_main8_l103[0] }} + j ∈ {13} + k ∈ {11} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_w_main8_l103[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9; 10} or UNINITIALIZED + [11] ∈ {10; 11} or UNINITIALIZED + [12] ∈ {11; 12} or UNINITIALIZED + [13] ∈ {12} or UNINITIALIZED + [14] ∈ {13} or UNINITIALIZED + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 106 + v ∈ [--..--] + i ∈ {13} + p ∈ {{ &__malloc_w_main8_l103[0] }} + j ∈ {13} + k ∈ {11} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_w_main8_l103[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9; 10} or UNINITIALIZED + [11] ∈ {10; 11} or UNINITIALIZED + [12] ∈ {11; 12} or UNINITIALIZED + [13] ∈ {12; 13} or UNINITIALIZED + =END OF DUMP== +tests/non-free/malloc-optimistic.c:107:[value:malloc] weak free on bases: {__malloc_w_main8_l103} +tests/non-free/malloc-optimistic.c:103:[value:malloc] resizing variable `__malloc_w_main8_l103' (0..31/479) to fit 0..479 +tests/non-free/malloc-optimistic.c:103:[value:malloc] resizing variable `__malloc_w_main8_l103' (0..31/479) to fit 0..511 +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 106 + v ∈ [--..--] + i ∈ {15} + p ∈ {{ &__malloc_w_main8_l103[0] }} + j ∈ {14} + k ∈ {12} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_w_main8_l103[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9; 10} or UNINITIALIZED + [11] ∈ {10; 11} or UNINITIALIZED + [12] ∈ {11; 12} or UNINITIALIZED + [13] ∈ {12; 13} or UNINITIALIZED + [14] ∈ {13} or UNINITIALIZED + [15] ∈ {14} or UNINITIALIZED + =END OF DUMP== +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 106 + v ∈ [--..--] + i ∈ {14} + p ∈ {{ &__malloc_w_main8_l103[0] }} + j ∈ {14} + k ∈ {12} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_w_main8_l103[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9; 10} or UNINITIALIZED + [11] ∈ {10; 11} or UNINITIALIZED + [12] ∈ {11; 12} or UNINITIALIZED + [13] ∈ {12; 13} or UNINITIALIZED + [14] ∈ {13; 14} or UNINITIALIZED + =END OF DUMP== +tests/non-free/malloc-optimistic.c:107:[value:malloc] weak free on bases: {__malloc_w_main8_l103} +tests/non-free/malloc-optimistic.c:101:[value] entering loop for the first time +tests/non-free/malloc-optimistic.c:103:[value:malloc] resizing variable `__malloc_w_main8_l103' (0..31/511) to fit 0..511/543 +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 106 + v ∈ [--..--] + i ∈ {15; 16} + p ∈ {{ &__malloc_w_main8_l103[0] }} + j ∈ {15} + k ∈ {13} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_w_main8_l103[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9; 10} or UNINITIALIZED + [11] ∈ {10; 11} or UNINITIALIZED + [12] ∈ {11; 12} or UNINITIALIZED + [13] ∈ {12; 13} or UNINITIALIZED + [14] ∈ {13; 14} or UNINITIALIZED + [15] ∈ {14; 15} or UNINITIALIZED + [16] ∈ {15} or UNINITIALIZED + =END OF DUMP== +tests/non-free/malloc-optimistic.c:107:[value:malloc] weak free on bases: {__malloc_w_main8_l103} +tests/non-free/malloc-optimistic.c:103:[value:malloc] resizing variable `__malloc_w_main8_l103' (0..31/543) to fit 0..511/575 +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 106 + v ∈ [--..--] + i ∈ {15; 16; 17} + p ∈ {{ &__malloc_w_main8_l103[0] }} + j ∈ {15; 16} + k ∈ {13; 14} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_w_main8_l103[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9; 10} or UNINITIALIZED + [11] ∈ {10; 11} or UNINITIALIZED + [12] ∈ {11; 12} or UNINITIALIZED + [13] ∈ {12; 13} or UNINITIALIZED + [14] ∈ {13; 14} or UNINITIALIZED + [15] ∈ {14; 15; 16} or UNINITIALIZED + [16..17] ∈ {15; 16} or UNINITIALIZED + =END OF DUMP== +tests/non-free/malloc-optimistic.c:107:[value:malloc] weak free on bases: {__malloc_w_main8_l103} +tests/non-free/malloc-optimistic.c:103:[value:malloc] resizing variable `__malloc_w_main8_l103' (0..31/575) to fit 0..511/607 +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 106 + v ∈ [--..--] + i ∈ {15; 16; 17; 18} + p ∈ {{ &__malloc_w_main8_l103[0] }} + j ∈ {15; 16; 17} + k ∈ {13; 14; 15} + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_w_main8_l103[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9; 10} or UNINITIALIZED + [11] ∈ {10; 11} or UNINITIALIZED + [12] ∈ {11; 12} or UNINITIALIZED + [13] ∈ {12; 13} or UNINITIALIZED + [14] ∈ {13; 14} or UNINITIALIZED + [15] ∈ {14; 15; 16; 17} or UNINITIALIZED + [16..18] ∈ {15; 16; 17} or UNINITIALIZED + =END OF DUMP== +tests/non-free/malloc-optimistic.c:107:[value:malloc] weak free on bases: {__malloc_w_main8_l103} +tests/non-free/malloc-optimistic.c:103:[value:malloc] resizing variable `__malloc_w_main8_l103' (0..31/607) to fit 0..511/3231 +[value] DUMPING STATE of file tests/non-free/malloc-optimistic.c line 106 + v ∈ [--..--] + i ∈ [15..100] + p ∈ {{ &__malloc_w_main8_l103[0] }} + j ∈ [15..99] + k ∈ [13..97] + p ∈ ESCAPINGADDR + __retres ∈ UNINITIALIZED + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_w_main8_l103[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9; 10} or UNINITIALIZED + [11] ∈ {10; 11} or UNINITIALIZED + [12] ∈ {11; 12} or UNINITIALIZED + [13] ∈ {12; 13} or UNINITIALIZED + [14] ∈ {13; 14} or UNINITIALIZED + [15] ∈ [14..99] or UNINITIALIZED + [16..100] ∈ [15..99] or UNINITIALIZED + =END OF DUMP== +tests/non-free/malloc-optimistic.c:107:[value:malloc] weak free on bases: {__malloc_w_main8_l103} +tests/non-free/malloc-optimistic.c:103:[value:malloc] resizing variable `__malloc_w_main8_l103' (0..31/3231) to fit 0..511/3231 +[value] Recording results for main8 +[value] Done for function main8 +[value] computing for function main9 <- main. + Called from tests/non-free/malloc-optimistic.c:150. +tests/non-free/malloc-optimistic.c:119:[value] allocating variable __malloc_main9_l119 +[value] Called Frama_C_show_each({0}, {{ &__malloc_main9_l119 }}) +[value] Called Frama_C_show_each({0}) +[value] computing for function main9_aux <- main9 <- main. + Called from tests/non-free/malloc-optimistic.c:123. +[value] Recording results for main9_aux +[value] Done for function main9_aux +tests/non-free/malloc-optimistic.c:119:[value:malloc] marking variable `__malloc_main9_l119' as weak +[value] Called Frama_C_show_each({1}, {{ &__malloc_w_main9_l119 }}) +[value] Called Frama_C_show_each({1}) +[value] computing for function main9_aux <- main9 <- main. + Called from tests/non-free/malloc-optimistic.c:123. +[value] Recording results for main9_aux +[value] Done for function main9_aux +[value] Called Frama_C_show_each({2}, {{ &__malloc_w_main9_l119 }}) +[value] Called Frama_C_show_each({2}) +[value] computing for function main9_aux <- main9 <- main. + Called from tests/non-free/malloc-optimistic.c:123. +[value] Recording results for main9_aux +[value] Done for function main9_aux +[value] Called Frama_C_show_each({3}, {{ &__malloc_w_main9_l119 }}) +[value] Called Frama_C_show_each({3}) +[value] computing for function main9_aux <- main9 <- main. + Called from tests/non-free/malloc-optimistic.c:123. +[value] Recording results for main9_aux +[value] Done for function main9_aux +[value] Called Frama_C_show_each({4}, {{ &__malloc_w_main9_l119 }}) +[value] Called Frama_C_show_each({4}) +[value] computing for function main9_aux <- main9 <- main. + Called from tests/non-free/malloc-optimistic.c:123. +[value] Recording results for main9_aux +[value] Done for function main9_aux +[value] Called Frama_C_show_each({5}, {{ &__malloc_w_main9_l119 }}) +[value] Called Frama_C_show_each({5}) +[value] computing for function main9_aux <- main9 <- main. + Called from tests/non-free/malloc-optimistic.c:123. +[value] Recording results for main9_aux +[value] Done for function main9_aux +[value] Called Frama_C_show_each({6}, {{ &__malloc_w_main9_l119 }}) +[value] Called Frama_C_show_each({6}) +[value] computing for function main9_aux <- main9 <- main. + Called from tests/non-free/malloc-optimistic.c:123. +[value] Recording results for main9_aux +[value] Done for function main9_aux +[value] Called Frama_C_show_each({7}, {{ &__malloc_w_main9_l119 }}) +[value] Called Frama_C_show_each({7}) +[value] computing for function main9_aux <- main9 <- main. + Called from tests/non-free/malloc-optimistic.c:123. +[value] Recording results for main9_aux +[value] Done for function main9_aux +[value] Called Frama_C_show_each({8}, {{ &__malloc_w_main9_l119 }}) +[value] Called Frama_C_show_each({8}) +[value] computing for function main9_aux <- main9 <- main. + Called from tests/non-free/malloc-optimistic.c:123. +[value] Recording results for main9_aux +[value] Done for function main9_aux +[value] Called Frama_C_show_each({9}, {{ &__malloc_w_main9_l119 }}) +[value] Called Frama_C_show_each({9}) +[value] computing for function main9_aux <- main9 <- main. + Called from tests/non-free/malloc-optimistic.c:123. +[value] Recording results for main9_aux +[value] Done for function main9_aux +[value] Called Frama_C_show_each({10}, {{ &__malloc_w_main9_l119 }}) +[value] Called Frama_C_show_each({10}) +[value] computing for function main9_aux <- main9 <- main. + Called from tests/non-free/malloc-optimistic.c:123. +[value] Recording results for main9_aux +[value] Done for function main9_aux +[value] Called Frama_C_show_each({11}, {{ &__malloc_w_main9_l119 }}) +[value] Called Frama_C_show_each({11}) +[value] computing for function main9_aux <- main9 <- main. + Called from tests/non-free/malloc-optimistic.c:123. +[value] Recording results for main9_aux +[value] Done for function main9_aux +[value] Called Frama_C_show_each({12}, {{ &__malloc_w_main9_l119 }}) +[value] Called Frama_C_show_each({12}) +[value] computing for function main9_aux <- main9 <- main. + Called from tests/non-free/malloc-optimistic.c:123. +[value] Recording results for main9_aux +[value] Done for function main9_aux +[value] Called Frama_C_show_each({13}, {{ &__malloc_w_main9_l119 }}) +[value] Called Frama_C_show_each({13}) +[value] computing for function main9_aux <- main9 <- main. + Called from tests/non-free/malloc-optimistic.c:123. +[value] Recording results for main9_aux +[value] Done for function main9_aux +[value] Called Frama_C_show_each({14}, {{ &__malloc_w_main9_l119 }}) +[value] Called Frama_C_show_each({14}) +[value] computing for function main9_aux <- main9 <- main. + Called from tests/non-free/malloc-optimistic.c:123. +[value] Recording results for main9_aux +[value] Done for function main9_aux +[value] Called Frama_C_show_each({15}, {{ &__malloc_w_main9_l119 }}) +[value] Called Frama_C_show_each({15}) +[value] computing for function main9_aux <- main9 <- main. + Called from tests/non-free/malloc-optimistic.c:123. +[value] Recording results for main9_aux +[value] Done for function main9_aux +[value] Called Frama_C_show_each({16}, {{ &__malloc_w_main9_l119 }}) +[value] Called Frama_C_show_each({16}) +[value] computing for function main9_aux <- main9 <- main. + Called from tests/non-free/malloc-optimistic.c:123. +[value] Recording results for main9_aux +[value] Done for function main9_aux +[value] Called Frama_C_show_each({17}, {{ &__malloc_w_main9_l119 }}) +[value] Called Frama_C_show_each({17}) +[value] computing for function main9_aux <- main9 <- main. + Called from tests/non-free/malloc-optimistic.c:123. +[value] Recording results for main9_aux +[value] Done for function main9_aux +[value] Called Frama_C_show_each({18}, {{ &__malloc_w_main9_l119 }}) +[value] Called Frama_C_show_each({18}) +[value] computing for function main9_aux <- main9 <- main. + Called from tests/non-free/malloc-optimistic.c:123. +[value] Recording results for main9_aux +[value] Done for function main9_aux +[value] Called Frama_C_show_each({19}, {{ &__malloc_w_main9_l119 }}) +[value] Called Frama_C_show_each({19}) +[value] computing for function main9_aux <- main9 <- main. + Called from tests/non-free/malloc-optimistic.c:123. +[value] Recording results for main9_aux +[value] Done for function main9_aux +[value] Called Frama_C_show_each({20}, {{ &__malloc_w_main9_l119 }}) +[value] Called Frama_C_show_each({20}) +[value] computing for function main9_aux <- main9 <- main. + Called from tests/non-free/malloc-optimistic.c:123. +[value] Recording results for main9_aux +[value] Done for function main9_aux +[value] Called Frama_C_show_each({21}, {{ &__malloc_w_main9_l119 }}) +[value] Called Frama_C_show_each({21}) +[value] computing for function main9_aux <- main9 <- main. + Called from tests/non-free/malloc-optimistic.c:123. +[value] Recording results for main9_aux +[value] Done for function main9_aux +[value] Called Frama_C_show_each({22}, {{ &__malloc_w_main9_l119 }}) +[value] Called Frama_C_show_each({22}) +[value] computing for function main9_aux <- main9 <- main. + Called from tests/non-free/malloc-optimistic.c:123. +[value] Recording results for main9_aux +[value] Done for function main9_aux +[value] Called Frama_C_show_each({23}, {{ &__malloc_w_main9_l119 }}) +[value] Called Frama_C_show_each({23}) +[value] computing for function main9_aux <- main9 <- main. + Called from tests/non-free/malloc-optimistic.c:123. +[value] Recording results for main9_aux +[value] Done for function main9_aux +[value] Called Frama_C_show_each({24}, {{ &__malloc_w_main9_l119 }}) +[value] Called Frama_C_show_each({24}) +[value] computing for function main9_aux <- main9 <- main. + Called from tests/non-free/malloc-optimistic.c:123. +[value] Recording results for main9_aux +[value] Done for function main9_aux +[value] Called Frama_C_show_each({25}, {{ &__malloc_w_main9_l119 }}) +[value] Called Frama_C_show_each({25}) +[value] computing for function main9_aux <- main9 <- main. + Called from tests/non-free/malloc-optimistic.c:123. +[value] Recording results for main9_aux +[value] Done for function main9_aux +[value] Called Frama_C_show_each({26}, {{ &__malloc_w_main9_l119 }}) +[value] Called Frama_C_show_each({26}) +[value] computing for function main9_aux <- main9 <- main. + Called from tests/non-free/malloc-optimistic.c:123. +[value] Recording results for main9_aux +[value] Done for function main9_aux +[value] Called Frama_C_show_each({27}, {{ &__malloc_w_main9_l119 }}) +[value] Called Frama_C_show_each({27}) +[value] computing for function main9_aux <- main9 <- main. + Called from tests/non-free/malloc-optimistic.c:123. +[value] Recording results for main9_aux +[value] Done for function main9_aux +[value] Called Frama_C_show_each({28}, {{ &__malloc_w_main9_l119 }}) +[value] Called Frama_C_show_each({28}) +[value] computing for function main9_aux <- main9 <- main. + Called from tests/non-free/malloc-optimistic.c:123. +[value] Recording results for main9_aux +[value] Done for function main9_aux +[value] Called Frama_C_show_each({29}, {{ &__malloc_w_main9_l119 }}) +[value] Called Frama_C_show_each({29}) +[value] computing for function main9_aux <- main9 <- main. + Called from tests/non-free/malloc-optimistic.c:123. +[value] Recording results for main9_aux +[value] Done for function main9_aux +tests/non-free/malloc-optimistic.c:118:[value] entering loop for the first time +[value] Called Frama_C_show_each({30}, {{ &__malloc_w_main9_l119 }}) +[value] Called Frama_C_show_each({30}) +[value] computing for function main9_aux <- main9 <- main. + Called from tests/non-free/malloc-optimistic.c:123. +[value] Recording results for main9_aux +[value] Done for function main9_aux +[value] Called Frama_C_show_each({30; 31}, {{ &__malloc_w_main9_l119 }}) +[value] Called Frama_C_show_each({30; 31}) +[value] computing for function main9_aux <- main9 <- main. + Called from tests/non-free/malloc-optimistic.c:123. +[value] Recording results for main9_aux +[value] Done for function main9_aux +[value] Called Frama_C_show_each({30; 31; 32}, {{ &__malloc_w_main9_l119 }}) +[value] Called Frama_C_show_each({30; 31; 32}) +[value] computing for function main9_aux <- main9 <- main. + Called from tests/non-free/malloc-optimistic.c:123. +[value] Recording results for main9_aux +[value] Done for function main9_aux +[value] Called Frama_C_show_each([30..99], {{ &__malloc_w_main9_l119 }}) +[value] Called Frama_C_show_each([30..99]) +[value] computing for function main9_aux <- main9 <- main. + Called from tests/non-free/malloc-optimistic.c:123. +[value] Recording results for main9_aux +[value] Done for function main9_aux +[value] Called Frama_C_show_each([30..99], {{ &__malloc_w_main9_l119 }}) +[value] Recording results for main9 +[value] Done for function main9 +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main9_aux: + __malloc_w_main9_l119 ∈ [-20..99] or UNINITIALIZED +[value:final-states] Values at end of function main1: + i ∈ {0; 1} + p ∈ {{ &__malloc_main1_l17[0] }} + __retres ∈ {{ (void *)&__malloc_main1_l17 }} + __malloc_main1_l17[0] ∈ {0} or UNINITIALIZED + [1] ∈ {1} +[value:final-states] Values at end of function main2: + i ∈ {1; 2} + p ∈ {{ &__malloc_main2_l27[0] }} + __retres ∈ {{ (void *)&__malloc_main2_l27 }} + __malloc_main2_l27[0] ∈ UNINITIALIZED + [1] ∈ {1} or UNINITIALIZED + [2] ∈ {2} +[value:final-states] Values at end of function main5: + i ∈ {9; 10} + p ∈ ESCAPINGADDR + __retres ∈ {0} +[value:final-states] Values at end of function main6: + i ∈ {9; 10} + p ∈ {{ &__malloc_w_main6_l77[0] }} or ESCAPINGADDR + __retres ∈ {0} + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED +[value:final-states] Values at end of function main7: + i ∈ [14..100] + p ∈ ESCAPINGADDR + __retres ∈ {0} +[value:final-states] Values at end of function main8: + i ∈ [14..100] + p ∈ {{ &__malloc_w_main8_l103[0] }} or ESCAPINGADDR + __retres ∈ {0} + __malloc_w_main8_l103[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9; 10} or UNINITIALIZED + [11] ∈ {10; 11} or UNINITIALIZED + [12] ∈ {11; 12} or UNINITIALIZED + [13] ∈ {12; 13} or UNINITIALIZED + [14] ∈ {13; 14} or UNINITIALIZED + [15] ∈ [14..99] or UNINITIALIZED + [16..100] ∈ [15..99] or UNINITIALIZED +[value:final-states] Values at end of function main9: + p ∈ {{ &__malloc_w_main9_l119 }} + __retres ∈ {0} + __malloc_w_main9_l119 ∈ [-20..99] or UNINITIALIZED +[value:final-states] Values at end of function main_3_aux: + p ∈ {{ &__malloc_main_3_aux_l34[0] }} + __retres ∈ {{ (void *)&__malloc_main_3_aux_l34 }} + __malloc_main_3_aux_l34[0] ∈ {0} or UNINITIALIZED + [1] ∈ {1} +[value:final-states] Values at end of function main3: + i ∈ {0; 1} + p ∈ {{ &__malloc_main_3_aux_l34[0] }} + __retres ∈ {{ (void *)&__malloc_main_3_aux_l34 }} + __malloc_main_3_aux_l34[0] ∈ {0} or UNINITIALIZED + [1] ∈ {1} +[value:final-states] Values at end of function main_4_aux: + p ∈ {{ &__malloc_main_4_aux_l40[0] }} + __retres ∈ {{ (void *)&__malloc_main_4_aux_l40 }} + __malloc_main_4_aux_l40[0] ∈ UNINITIALIZED + [1] ∈ {1} or UNINITIALIZED + [2] ∈ {2} +[value:final-states] Values at end of function main4: + i ∈ {1; 2} + p ∈ {{ &__malloc_main_4_aux_l40[0] }} + __retres ∈ {{ (void *)&__malloc_main_4_aux_l40 }} + __malloc_main_4_aux_l40[0] ∈ UNINITIALIZED + [1] ∈ {1} or UNINITIALIZED + [2] ∈ {2} +[value:final-states] Values at end of function main: + p ∈ ESCAPINGADDR + __malloc_w_main6_l77[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9} or UNINITIALIZED + __malloc_w_main8_l103[0] ∈ UNINITIALIZED + [1] ∈ {0; 1} or UNINITIALIZED + [2] ∈ {1; 2} or UNINITIALIZED + [3] ∈ {2; 3} or UNINITIALIZED + [4] ∈ {3; 4} or UNINITIALIZED + [5] ∈ {4; 5} or UNINITIALIZED + [6] ∈ {5; 6} or UNINITIALIZED + [7] ∈ {6; 7} or UNINITIALIZED + [8] ∈ {7; 8} or UNINITIALIZED + [9] ∈ {8; 9} or UNINITIALIZED + [10] ∈ {9; 10} or UNINITIALIZED + [11] ∈ {10; 11} or UNINITIALIZED + [12] ∈ {11; 12} or UNINITIALIZED + [13] ∈ {12; 13} or UNINITIALIZED + [14] ∈ {13; 14} or UNINITIALIZED + [15] ∈ [14..99] or UNINITIALIZED + [16..100] ∈ [15..99] or UNINITIALIZED + __malloc_w_main9_l119 ∈ [-20..99] or UNINITIALIZED +[from] Computing for function main9_aux +[from] Done for function main9_aux +[from] Computing for function main1 +[from] Computing for function malloc <-main1 +[from] Done for function malloc +[from] Done for function main1 +[from] Computing for function main2 +[from] Done for function main2 +[from] Computing for function main5 +[from] Computing for function Frama_C_dump_each <-main5 +[from] Done for function Frama_C_dump_each +[from] Computing for function free <-main5 +[from] Done for function free +[from] Done for function main5 +[from] Computing for function main6 +[from] Done for function main6 +[from] Computing for function main7 +[from] Done for function main7 +[from] Computing for function main8 +[from] Done for function main8 +[from] Computing for function main9 +[from] Done for function main9 +[from] Computing for function main_3_aux +[from] Done for function main_3_aux +[from] Computing for function main3 +[from] Done for function main3 +[from] Computing for function main_4_aux +[from] Done for function main_4_aux +[from] Computing for function main4 +[from] Done for function main4 +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function free: + NO EFFECTS +[from] Function main9_aux: + __malloc_w_main9_l119 FROM p (and SELF) +[from] Function malloc: + \result FROM \nothing +[from] Function main1: + __malloc_main1_l17[0..1] FROM v (and SELF) + \result FROM \nothing +[from] Function main2: + __malloc_main2_l27[1..2] FROM v (and SELF) + \result FROM \nothing +[from] Function main5: + __malloc_main5_l64[0..10] FROM v (and SELF) + \result FROM \nothing +[from] Function main6: + __malloc_w_main6_l77[0..10] FROM v (and SELF) + \result FROM \nothing +[from] Function main7: + __malloc_main7_l90[0..100] FROM v (and SELF) + \result FROM \nothing +[from] Function main8: + __malloc_w_main8_l103[0..100] FROM v (and SELF) + \result FROM \nothing +[from] Function main9: + __malloc_w_main9_l119 FROM \nothing (and SELF) + \result FROM \nothing +[from] Function main_3_aux: + __malloc_main_3_aux_l34[0..1] FROM i (and SELF) + \result FROM \nothing +[from] Function main3: + __malloc_main_3_aux_l34[0..1] FROM v (and SELF) + \result FROM \nothing +[from] Function main_4_aux: + __malloc_main_4_aux_l40[1..2] FROM i (and SELF) + \result FROM \nothing +[from] Function main4: + __malloc_main_4_aux_l40[1..2] FROM v (and SELF) + \result FROM \nothing +[from] Function main: + __malloc_main1_l17[0..1] FROM v (and SELF) + __malloc_main2_l27[1..2] FROM v (and SELF) + __malloc_main_3_aux_l34[0..1] FROM v (and SELF) + __malloc_main_4_aux_l40[1..2] FROM v (and SELF) + __malloc_main5_l64[0..10] FROM v (and SELF) + __malloc_w_main6_l77[0..10] FROM v (and SELF) + __malloc_main7_l90[0..100] FROM v (and SELF) + __malloc_w_main8_l103[0..100] FROM v (and SELF) + __malloc_w_main9_l119 FROM \nothing (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main9_aux: + __malloc_w_main9_l119 +[inout] Inputs for function main9_aux: + \nothing +[inout] Out (internal) for function main1: + i; p; __retres; __malloc_main1_l17[0..1] +[inout] Inputs for function main1: + v +[inout] Out (internal) for function main2: + i; p; __retres; __malloc_main2_l27[1..2] +[inout] Inputs for function main2: + v +[inout] Out (internal) for function main5: + i; p; j; k; __retres; __malloc_main5_l64[0..10] +[inout] Inputs for function main5: + v; __malloc_main5_l64[0..10] +[inout] Out (internal) for function main6: + i; p; j; k; __retres; __malloc_w_main6_l77[0..10] +[inout] Inputs for function main6: + v; __malloc_w_main6_l77[0..10] +[inout] Out (internal) for function main7: + i; p; j; k; __retres; __malloc_main7_l90[0..100] +[inout] Inputs for function main7: + v; __malloc_main7_l90[0..100] +[inout] Out (internal) for function main8: + i; p; j; k; __retres; __malloc_w_main8_l103[0..100] +[inout] Inputs for function main8: + v; __malloc_w_main8_l103[0..100] +[inout] Out (internal) for function main9: + p; j; __retres; __malloc_w_main9_l119 +[inout] Inputs for function main9: + __malloc_w_main9_l119 +[inout] Out (internal) for function main_3_aux: + p; __retres; __malloc_main_3_aux_l34[0..1] +[inout] Inputs for function main_3_aux: + \nothing +[inout] Out (internal) for function main3: + i; p; __retres; __malloc_main_3_aux_l34[0..1] +[inout] Inputs for function main3: + v +[inout] Out (internal) for function main_4_aux: + p; __retres; __malloc_main_4_aux_l40[1..2] +[inout] Inputs for function main_4_aux: + \nothing +[inout] Out (internal) for function main4: + i; p; __retres; __malloc_main_4_aux_l40[1..2] +[inout] Inputs for function main4: + v +[inout] Out (internal) for function main: + p; __malloc_main1_l17[0..1]; __malloc_main2_l27[1..2]; + __malloc_main_3_aux_l34[0..1]; __malloc_main_4_aux_l40[1..2]; + __malloc_main5_l64[0..10]; __malloc_w_main6_l77[0..10]; + __malloc_main7_l90[0..100]; __malloc_w_main8_l103[0..100]; + __malloc_w_main9_l119 +[inout] Inputs for function main: + v; __malloc_main5_l64[0..10]; __malloc_w_main6_l77[0..10]; + __malloc_main7_l90[0..100]; __malloc_w_main8_l103[0..100]; + __malloc_w_main9_l119 diff --git a/tests/non-free/oracle_symblocs/malloc-size-zero.0.err.oracle b/tests/non-free/oracle_symblocs/malloc-size-zero.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/non-free/oracle_symblocs/malloc-size-zero.0.res.oracle b/tests/non-free/oracle_symblocs/malloc-size-zero.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..761ab8df8cb2a6be5d28413457c4de7de91e8ff9 --- /dev/null +++ b/tests/non-free/oracle_symblocs/malloc-size-zero.0.res.oracle @@ -0,0 +1,79 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/non-free/malloc-size-zero.i (no preprocessing) +[value] user error: no assigns specified for function 'malloc', for which a builtin + or the specification will be used. Potential unsoundness. +[value] user error: no assigns specified for function 'free', for which a builtin + or the specification will be used. Potential unsoundness. +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + foo ∈ [--..--] +[value] computing for function calloc <- main. + Called from tests/non-free/malloc-size-zero.i:16. +tests/non-free/malloc-size-zero.i:10:[value] allocating variable __malloc_calloc_l10 +[value] Recording results for calloc +[value] Done for function calloc +[value] Called Frama_C_show_each_not_NULL_p1() +tests/non-free/malloc-size-zero.i:24:[value] warning: pointer comparison. assert \pointer_comparable((void *)(p1+1), (void *)0); +tests/non-free/malloc-size-zero.i:27:[value] entering loop for the first time +[value] computing for function calloc <- main. + Called from tests/non-free/malloc-size-zero.i:29. +tests/non-free/malloc-size-zero.i:10:[value] allocating variable __malloc_calloc_l10_0 +[value] Recording results for calloc +[value] Done for function calloc +[value] computing for function calloc <- main. + Called from tests/non-free/malloc-size-zero.i:29. +tests/non-free/malloc-size-zero.i:10:[value] allocating variable __malloc_calloc_l10_1 +[value] Recording results for calloc +[value] Done for function calloc +[value] computing for function calloc <- main. + Called from tests/non-free/malloc-size-zero.i:29. +tests/non-free/malloc-size-zero.i:10:[value] allocating variable __malloc_calloc_l10_2 +[value] Recording results for calloc +[value] Done for function calloc +[value] computing for function calloc <- main. + Called from tests/non-free/malloc-size-zero.i:29. +tests/non-free/malloc-size-zero.i:10:[value] allocating variable __malloc_calloc_l10_3 +[value] Recording results for calloc +[value] Done for function calloc +[value] computing for function calloc <- main. + Called from tests/non-free/malloc-size-zero.i:29. +[value] Recording results for calloc +[value] Done for function calloc +[value] DUMPING STATE of file tests/non-free/malloc-size-zero.i line 33 + foo ∈ [--..--] + p1 ∈ {{ &__malloc_calloc_l10[0] }} + q1 ∈ + {{ &__malloc_calloc_l10_0[0] ; &__malloc_calloc_l10_1[0] ; + &__malloc_calloc_l10_2[0] ; &__malloc_w_calloc_l10_3[0] }} or UNINITIALIZED + __malloc_calloc_l10∈ ∅ + __malloc_calloc_l10_0∈ ∅ + __malloc_calloc_l10_1∈ ∅ + __malloc_calloc_l10_2∈ ∅ + __malloc_w_calloc_l10_3∈ ∅ + =END OF DUMP== +tests/non-free/malloc-size-zero.i:35:[value] warning: out of bounds write. assert \valid(p1); +tests/non-free/malloc-size-zero.i:35:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +[value] Called Frama_C_show_each({{ &__malloc_calloc_l10_0 ; &__malloc_calloc_l10_1 ; + &__malloc_calloc_l10_2 ; + &__malloc_w_calloc_l10_3 }}) +tests/non-free/malloc-size-zero.i:40:[value] assertion got status valid. +tests/non-free/malloc-size-zero.i:42:[value] warning: accessing uninitialized left-value. assert \initialized(&q1); +tests/non-free/malloc-size-zero.i:42:[value] warning: out of bounds write. assert \valid(q1); +tests/non-free/malloc-size-zero.i:42:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +tests/non-free/malloc-size-zero.i:44:[value] warning: accessing uninitialized left-value. assert \initialized(&q1); +[value] Recording results for main +[value] done for function main +tests/non-free/malloc-size-zero.i:35:[value] assertion 'Value,mem_access' got final status invalid. +tests/non-free/malloc-size-zero.i:42:[value] assertion 'Value,mem_access' got final status invalid. +[value] ====== VALUES COMPUTED ====== +tests/non-free/malloc-size-zero.i:10:[kernel] warning: Neither code nor specification for function malloc, generating default assigns from the prototype +[value:final-states] Values at end of function calloc: + +tests/non-free/malloc-size-zero.i:37:[kernel] warning: Neither code nor specification for function free, generating default assigns from the prototype +[value:final-states] Values at end of function main: + p1 ∈ ESCAPINGADDR + q1 ∈ + {{ &__malloc_calloc_l10_0[0] ; &__malloc_calloc_l10_1[0] ; + &__malloc_calloc_l10_2[0] ; &__malloc_w_calloc_l10_3[0] }} or ESCAPINGADDR diff --git a/tests/non-free/oracle_symblocs/malloc-size-zero.1.err.oracle b/tests/non-free/oracle_symblocs/malloc-size-zero.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/non-free/oracle_symblocs/malloc-size-zero.1.res.oracle b/tests/non-free/oracle_symblocs/malloc-size-zero.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..b8d8df7107f13ec61070dcda21fe3ed4b3bb7124 --- /dev/null +++ b/tests/non-free/oracle_symblocs/malloc-size-zero.1.res.oracle @@ -0,0 +1,55 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/non-free/malloc-size-zero.i (no preprocessing) +[value] user error: no assigns specified for function 'malloc', for which a builtin + or the specification will be used. Potential unsoundness. +[value] user error: no assigns specified for function 'free', for which a builtin + or the specification will be used. Potential unsoundness. +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + foo ∈ [--..--] +[value] computing for function calloc <- main. + Called from tests/non-free/malloc-size-zero.i:16. +tests/non-free/malloc-size-zero.i:10:[value] allocating variable __malloc_main_l16 +[value] Recording results for calloc +[value] Done for function calloc +[value] Called Frama_C_show_each_not_NULL_p1() +tests/non-free/malloc-size-zero.i:24:[value] warning: pointer comparison. assert \pointer_comparable((void *)(p1+1), (void *)0); +tests/non-free/malloc-size-zero.i:27:[value] entering loop for the first time +[value] computing for function calloc <- main. + Called from tests/non-free/malloc-size-zero.i:29. +tests/non-free/malloc-size-zero.i:10:[value] allocating variable __malloc_main_l29 +[value] Recording results for calloc +[value] Done for function calloc +[value] computing for function calloc <- main. + Called from tests/non-free/malloc-size-zero.i:29. +[value] Recording results for calloc +[value] Done for function calloc +[value] DUMPING STATE of file tests/non-free/malloc-size-zero.i line 33 + foo ∈ [--..--] + p1 ∈ {{ &__malloc_main_l16[0] }} + q1 ∈ {{ &__malloc_w_main_l29[0] }} or UNINITIALIZED + __malloc_main_l16∈ ∅ + __malloc_w_main_l29∈ ∅ + =END OF DUMP== +tests/non-free/malloc-size-zero.i:35:[value] warning: out of bounds write. assert \valid(p1); +tests/non-free/malloc-size-zero.i:35:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +[value] Called Frama_C_show_each({{ &__malloc_w_main_l29 }}) +tests/non-free/malloc-size-zero.i:40:[value] assertion got status valid. +tests/non-free/malloc-size-zero.i:42:[value] warning: accessing uninitialized left-value. assert \initialized(&q1); +tests/non-free/malloc-size-zero.i:42:[value] warning: out of bounds write. assert \valid(q1); +tests/non-free/malloc-size-zero.i:42:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +tests/non-free/malloc-size-zero.i:44:[value] warning: accessing uninitialized left-value. assert \initialized(&q1); +[value] Recording results for main +[value] done for function main +tests/non-free/malloc-size-zero.i:35:[value] assertion 'Value,mem_access' got final status invalid. +tests/non-free/malloc-size-zero.i:42:[value] assertion 'Value,mem_access' got final status invalid. +[value] ====== VALUES COMPUTED ====== +tests/non-free/malloc-size-zero.i:10:[kernel] warning: Neither code nor specification for function malloc, generating default assigns from the prototype +[value:final-states] Values at end of function calloc: + +tests/non-free/malloc-size-zero.i:37:[kernel] warning: Neither code nor specification for function free, generating default assigns from the prototype +[value:final-states] Values at end of function main: + p1 ∈ ESCAPINGADDR + q1 ∈ {{ &__malloc_w_main_l29[0] }} or ESCAPINGADDR diff --git a/tests/non-free/oracle_symblocs/malloc.err.oracle b/tests/non-free/oracle_symblocs/malloc.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/non-free/oracle_symblocs/malloc.res.oracle b/tests/non-free/oracle_symblocs/malloc.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..f6f437cede0ab2fd8be22bd53d5c489b55351a31 --- /dev/null +++ b/tests/non-free/oracle_symblocs/malloc.res.oracle @@ -0,0 +1,45 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/non-free/malloc.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +tests/non-free/malloc.c:13:[value] allocating variable __malloc_main_l13 +tests/non-free/malloc.c:19:[value] allocating variable __malloc_main_l19 +tests/non-free/malloc.c:20:[value] allocating variable __malloc_main_l20 +tests/non-free/malloc.c:21:[value] allocating variable __malloc_main_l21 +tests/non-free/malloc.c:21:[value] allocating variable __malloc_main_l21_0 +tests/non-free/malloc.c:22:[value] warning: out of bounds write. assert \valid(p); +tests/non-free/malloc.c:23:[value] warning: out of bounds write. assert \valid(p+2); +tests/non-free/malloc.c:24:[value] warning: out of bounds write. assert \valid(p+24999); +[value] Called Frama_C_show_each({{ &__malloc_main_l20 + {8} }}) +[value] Called Frama_C_show_each({{ &__malloc_main_l20 + {8} }}) +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +tests/non-free/malloc.c:13:[kernel] warning: Neither code nor specification for function Frama_C_alloc_by_stack, generating default assigns from the prototype +tests/non-free/malloc.c:21:[kernel] warning: Neither code nor specification for function Frama_C_alloc_size, generating default assigns from the prototype +[value:final-states] Values at end of function main: + x ∈ {1; 2} + s ∈ {{ NULL ; &__malloc_main_l13[0] }} + p ∈ {{ (int *)&__malloc_main_l19 }} + q ∈ {{ &__malloc_main_l20[0] }} + r ∈ {{ &__malloc_main_l21[0] ; &__malloc_main_l21_0[0] }} + __malloc_main_l19[bits 0 to 31] ∈ {1} + [4..7] ∈ UNINITIALIZED + [bits 64 to 95] ∈ {3} + [12..99995] ∈ UNINITIALIZED + [bits 799968 to 799999] ∈ {4} + [100000..4294967294] ∈ UNINITIALIZED + __malloc_main_l20[0] ∈ {1} + [1] ∈ UNINITIALIZED + [2] ∈ {3} + __malloc_main_l21[0] ∈ {1} + [1] ∈ UNINITIALIZED + [2] ∈ {3} + [3..24] ∈ UNINITIALIZED + __malloc_main_l21_0[0] ∈ {1} + [1] ∈ UNINITIALIZED + [2] ∈ {3} + [3..24] ∈ UNINITIALIZED diff --git a/tests/non-free/oracle_symblocs/malloc_bug_tr.err.oracle b/tests/non-free/oracle_symblocs/malloc_bug_tr.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/non-free/oracle_symblocs/malloc_bug_tr.res.oracle b/tests/non-free/oracle_symblocs/malloc_bug_tr.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..98392a01f61fb704d246825a1a1dc0f4f76cfca4 --- /dev/null +++ b/tests/non-free/oracle_symblocs/malloc_bug_tr.res.oracle @@ -0,0 +1,33 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/non-free/malloc_bug_tr.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + __fc_random_counter ∈ {0} + __fc_rand_max ∈ {32767} + __fc_heap_status ∈ [--..--] + Frama_C_entropy_source ∈ [--..--] +[value] computing for function Frama_C_interval <- main. + Called from tests/non-free/malloc_bug_tr.c:12. +[value] using specification for function Frama_C_interval +share/libc/__fc_builtin.h:50:[value] function Frama_C_interval: precondition got status valid. +[value] Done for function Frama_C_interval +tests/non-free/malloc_bug_tr.c:12:[value] allocating variable __malloc_main_l12 +tests/non-free/malloc_bug_tr.c:13:[value] Call to builtin memcpy(({{ (void *)&__malloc_main_l12 }},{{ "foo" }},{4})) +tests/non-free/malloc_bug_tr.c:14:[value] Call to builtin memcpy(({{ (void *)&__malloc_main_l12[4] }},{{ "x" }},{2})) +tests/non-free/malloc_bug_tr.c:14:[value] warning: out of bounds write. assert \valid((p+4)+(0 .. (unsigned int)2-1)); +tests/non-free/malloc_bug_tr.c:15:[value] Call to builtin memcpy(({{ (void *)&__malloc_main_l12 }}, + {{ (void const *)&__malloc_main_l12[5] }},{1})) +tests/non-free/malloc_bug_tr.c:15:[value] warning: out of bounds read. assert \valid_read((p+5)+(0 .. (unsigned int)1-1)); +tests/non-free/malloc_bug_tr.c:16:[value] warning: out of bounds write. assert \valid(p+5); +tests/non-free/malloc_bug_tr.c:17:[value] warning: out of bounds read. assert \valid_read(p+5); +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + __fc_heap_status ∈ [--..--] + Frama_C_entropy_source ∈ [--..--] + p ∈ ESCAPINGADDR + r ∈ {120} + __retres ∈ {0} diff --git a/tests/non-free/oracle_symblocs/malloc_individual.err.oracle b/tests/non-free/oracle_symblocs/malloc_individual.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/non-free/oracle_symblocs/malloc_individual.res.oracle b/tests/non-free/oracle_symblocs/malloc_individual.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..b37ac463bb47a462e6f2bb1fb252b05798dd53f5 --- /dev/null +++ b/tests/non-free/oracle_symblocs/malloc_individual.res.oracle @@ -0,0 +1,59 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/non-free/malloc_individual.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + __fc_random_counter ∈ {0} + __fc_rand_max ∈ {32767} + __fc_heap_status ∈ [--..--] + Frama_C_entropy_source ∈ [--..--] + p ∈ {0} + A ∈ {0} + B ∈ {0} + C ∈ {0} +[value] computing for function malloc <- main. + Called from tests/non-free/malloc_individual.c:9. +share/libc/stdlib.c:39:[value] allocating variable __malloc_malloc_l39 +share/libc/stdlib.h:177:[value] warning: function malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.) +share/libc/stdlib.h:182:[value] warning: function malloc, behavior no_allocation: postcondition got status invalid. (Behavior may be inactive, no reduction performed.) +[value] Recording results for malloc +[value] Done for function malloc +tests/non-free/malloc_individual.c:13:[value] warning: accessing uninitialized left-value. assert \initialized(p); +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +share/libc/stdlib.c:39:[kernel] warning: Neither code nor specification for function Frama_C_alloc_size, generating default assigns from the prototype +[value:final-states] Values at end of function malloc: + +[value:final-states] Values at end of function main: + p ∈ {{ (int *)&__malloc_malloc_l39 }} + A ∈ {3} or UNINITIALIZED + B ∈ {3} or UNINITIALIZED + C ∈ {4} + __malloc_malloc_l39[bits 0 to 31] ∈ {3} +[from] Computing for function malloc +[from] Computing for function Frama_C_alloc_size <-malloc +[from] Done for function Frama_C_alloc_size +[from] Done for function malloc +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function malloc: + \result FROM size +[from] Function main: + p FROM \nothing + A FROM c; __malloc_malloc_l39[0..3] + B FROM c; __malloc_malloc_l39[0..3] + C FROM c; __malloc_malloc_l39[0..3] + __malloc_malloc_l39[0..3] FROM c (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function malloc: + tmp +[inout] Inputs for function malloc: + \nothing +[inout] Out (internal) for function main: + p; A; B; C; __malloc_malloc_l39[0..3] +[inout] Inputs for function main: + p; A; __malloc_malloc_l39[0..3] diff --git a/tests/non-free/oracle_symblocs/malloc_memexec.err.oracle b/tests/non-free/oracle_symblocs/malloc_memexec.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/non-free/oracle_symblocs/malloc_memexec.res.oracle b/tests/non-free/oracle_symblocs/malloc_memexec.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..481f4e453624c5a4482913042e7ac6401710e4f1 --- /dev/null +++ b/tests/non-free/oracle_symblocs/malloc_memexec.res.oracle @@ -0,0 +1,75 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/non-free/malloc_memexec.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + v ∈ [--..--] +tests/non-free/malloc_memexec.c:19:[value] allocating variable __malloc_main_l19 +[value] computing for function f <- main. + Called from tests/non-free/malloc_memexec.c:21. +[value] Recording results for f +[value] Done for function f +[value] computing for function f <- main. + Called from tests/non-free/malloc_memexec.c:22. +[value] Recording results for f +[value] Done for function f +[value] computing for function f <- main. + Called from tests/non-free/malloc_memexec.c:24. +[value] Recording results for f +[value] Done for function f +tests/non-free/malloc_memexec.c:27:[value] allocating weak variable __malloc_w_main_l27 +[value] computing for function f <- main. + Called from tests/non-free/malloc_memexec.c:29. +[value] Recording results for f +[value] Done for function f +[value] computing for function f <- main. + Called from tests/non-free/malloc_memexec.c:30. +[value] Recording results for f +[value] Done for function f +[value] computing for function f <- main. + Called from tests/non-free/malloc_memexec.c:32. +[value] Recording results for f +[value] Done for function f +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + __malloc_main_l19 ∈ {1; 2} + __malloc_w_main_l27[0] ∈ {1; 2} or UNINITIALIZED +[value:final-states] Values at end of function main: + p ∈ {{ &__malloc_main_l19 }} + q ∈ {{ &__malloc_w_main_l27[0] }} + __malloc_main_l19 ∈ {1} + __malloc_w_main_l27[0] ∈ {1; 2} or UNINITIALIZED +[from] Computing for function f +[from] Done for function f +[from] Computing for function main +[from] Computing for function Frama_C_alloc_size <-main +[from] Done for function Frama_C_alloc_size +[from] Computing for function Frama_C_alloc_size_weak <-main +[from] Done for function Frama_C_alloc_size_weak +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + __malloc_main_l19 FROM p; i (and SELF) + __malloc_w_main_l27[0] FROM p; i (and SELF) +[from] Function main: + __malloc_main_l19 FROM ANYTHING(origin:Unknown) (and SELF) + __malloc_w_main_l27[0] FROM ANYTHING(origin:Unknown) (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] InOut (internal) for function f: + Operational inputs: + p; i + Operational inputs on termination: + p; i + Sure outputs: + \nothing +[inout] InOut (internal) for function main: + Operational inputs: + v + Operational inputs on termination: + v + Sure outputs: + p; q; __malloc_main_l19 diff --git a/tests/non-free/oracle_symblocs/malloc_multiple.err.oracle b/tests/non-free/oracle_symblocs/malloc_multiple.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/non-free/oracle_symblocs/malloc_multiple.res.oracle b/tests/non-free/oracle_symblocs/malloc_multiple.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..29789aad7bc41700cb7f93165ab48d0f5382ffa9 --- /dev/null +++ b/tests/non-free/oracle_symblocs/malloc_multiple.res.oracle @@ -0,0 +1,137 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/non-free/malloc_multiple.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + __fc_random_counter ∈ {0} + __fc_rand_max ∈ {32767} + __fc_heap_status ∈ [--..--] + T[0..9] ∈ {0} + F[0..9] ∈ {0} +[value] computing for function allocate_T <- main. + Called from tests/non-free/malloc_multiple.c:42. +tests/non-free/malloc_multiple.c:11:[value] allocating variable __malloc_allocate_T_l11 +tests/non-free/malloc_multiple.c:14:[value] allocating variable __malloc_allocate_T_l14 +tests/non-free/malloc_multiple.c:14:[value] allocating variable __malloc_allocate_T_l14_0 +tests/non-free/malloc_multiple.c:14:[value] allocating variable __malloc_allocate_T_l14_1 +tests/non-free/malloc_multiple.c:14:[value] allocating variable __malloc_allocate_T_l14_2 +tests/non-free/malloc_multiple.c:14:[value] allocating variable __malloc_allocate_T_l14_3 +tests/non-free/malloc_multiple.c:14:[value] allocating variable __malloc_allocate_T_l14_4 +[value] Recording results for allocate_T +[value] Done for function allocate_T +[value] computing for function allocate_T <- main. + Called from tests/non-free/malloc_multiple.c:43. +tests/non-free/malloc_multiple.c:11:[value] allocating variable __malloc_allocate_T_l11_0 +tests/non-free/malloc_multiple.c:14:[value] allocating variable __malloc_allocate_T_l14_5 +tests/non-free/malloc_multiple.c:14:[value] allocating variable __malloc_allocate_T_l14_6 +tests/non-free/malloc_multiple.c:14:[value] allocating variable __malloc_allocate_T_l14_7 +tests/non-free/malloc_multiple.c:14:[value] allocating variable __malloc_allocate_T_l14_8 +tests/non-free/malloc_multiple.c:14:[value] allocating variable __malloc_allocate_T_l14_9 +tests/non-free/malloc_multiple.c:14:[value] allocating variable __malloc_allocate_T_l14_10 +[value] Recording results for allocate_T +[value] Done for function allocate_T +[value] computing for function allocate_and_free_last <- main. + Called from tests/non-free/malloc_multiple.c:44. +tests/non-free/malloc_multiple.c:29:[value] allocating variable __malloc_allocate_and_free_last_l29 +[value] Called Frama_C_show_each_F({{ &__malloc_allocate_and_free_last_l29 }}) +tests/non-free/malloc_multiple.c:29:[value] allocating variable __malloc_allocate_and_free_last_l29_0 +[value] Called Frama_C_show_each_F({{ &__malloc_allocate_and_free_last_l29_0 }}) +tests/non-free/malloc_multiple.c:29:[value] allocating variable __malloc_allocate_and_free_last_l29_1 +[value] Called Frama_C_show_each_F({{ &__malloc_allocate_and_free_last_l29_1 }}) +tests/non-free/malloc_multiple.c:29:[value] allocating variable __malloc_allocate_and_free_last_l29_2 +[value] Called Frama_C_show_each_F({{ &__malloc_allocate_and_free_last_l29_2 }}) +tests/non-free/malloc_multiple.c:29:[value] allocating variable __malloc_allocate_and_free_last_l29_3 +[value] Called Frama_C_show_each_F({{ &__malloc_allocate_and_free_last_l29_3 }}) +tests/non-free/malloc_multiple.c:29:[value] allocating variable __malloc_allocate_and_free_last_l29_4 +[value] Called Frama_C_show_each_F({{ &__malloc_allocate_and_free_last_l29_4 }}) +[value] Called Frama_C_show_each_F({{ &__malloc_w_allocate_and_free_last_l29_4 }}) +[value] Called Frama_C_show_each_F({{ &__malloc_w_allocate_and_free_last_l29_4 }}) +[value] Called Frama_C_show_each_F({{ &__malloc_w_allocate_and_free_last_l29_4 }}) +[value] Called Frama_C_show_each_F({{ &__malloc_w_allocate_and_free_last_l29_4 }}) +tests/non-free/malloc_multiple.c:35:[value] assertion got status valid. +tests/non-free/malloc_multiple.c:36:[value] warning: assertion got status unknown. +tests/non-free/malloc_multiple.c:37:[value] warning: assertion got status unknown. +[value] Recording results for allocate_and_free_last +[value] Done for function allocate_and_free_last +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function allocate_T: + __fc_heap_status ∈ [--..--] + T[0] ∈ {{ &__malloc_allocate_T_l11 ; &__malloc_allocate_T_l11_0 }} + [1] ∈ {{ &__malloc_allocate_T_l14 ; &__malloc_allocate_T_l14_5 }} + [2] ∈ {{ &__malloc_allocate_T_l14_0 ; &__malloc_allocate_T_l14_6 }} + [3] ∈ {{ &__malloc_allocate_T_l14_1 ; &__malloc_allocate_T_l14_7 }} + [4] ∈ {{ &__malloc_allocate_T_l14_2 ; &__malloc_allocate_T_l14_8 }} + [5] ∈ {{ &__malloc_allocate_T_l14_3 ; &__malloc_allocate_T_l14_9 }} + [6..9] ∈ + {{ &__malloc_w_allocate_T_l14_4 ; &__malloc_w_allocate_T_l14_10 }} + counter ∈ {10} + error ∈ {0} + __malloc_allocate_T_l11 ∈ {111} + __malloc_allocate_T_l14 ∈ {222} + __malloc_allocate_T_l14_0 ∈ {333} + __malloc_allocate_T_l14_1 ∈ {444} + __malloc_allocate_T_l14_2 ∈ {555} + __malloc_allocate_T_l14_3 ∈ {1} + __malloc_w_allocate_T_l14_4 ∈ {1} or UNINITIALIZED + __malloc_allocate_T_l11_0 ∈ {111} + __malloc_allocate_T_l14_5 ∈ {222} + __malloc_allocate_T_l14_6 ∈ {333} + __malloc_allocate_T_l14_7 ∈ {444} + __malloc_allocate_T_l14_8 ∈ {555} + __malloc_allocate_T_l14_9 ∈ {2} + __malloc_w_allocate_T_l14_10 ∈ {2} or UNINITIALIZED +[value:final-states] Values at end of function allocate_and_free_last: + __fc_heap_status ∈ [--..--] + F[0] ∈ {{ &__malloc_allocate_and_free_last_l29 }} + [1] ∈ {{ &__malloc_allocate_and_free_last_l29_0 }} + [2] ∈ {{ &__malloc_allocate_and_free_last_l29_1 }} + [3] ∈ {{ &__malloc_allocate_and_free_last_l29_2 }} + [4] ∈ {{ &__malloc_allocate_and_free_last_l29_3 }} + [5..9] ∈ {{ &__malloc_w_allocate_and_free_last_l29_4 }} or ESCAPINGADDR + __malloc_allocate_and_free_last_l29 ∈ {0} + __malloc_allocate_and_free_last_l29_0 ∈ {1} + __malloc_allocate_and_free_last_l29_1 ∈ {2} + __malloc_allocate_and_free_last_l29_2 ∈ {3} + __malloc_allocate_and_free_last_l29_3 ∈ {4} + __malloc_w_allocate_and_free_last_l29_4 ∈ + {5; 6; 7; 8; 9} or UNINITIALIZED +[value:final-states] Values at end of function main: + __fc_heap_status ∈ [--..--] + T[0] ∈ {{ &__malloc_allocate_T_l11_0 }} + [1] ∈ {{ &__malloc_allocate_T_l14_5 }} + [2] ∈ {{ &__malloc_allocate_T_l14_6 }} + [3] ∈ {{ &__malloc_allocate_T_l14_7 }} + [4] ∈ {{ &__malloc_allocate_T_l14_8 }} + [5] ∈ {{ &__malloc_allocate_T_l14_9 }} + [6..9] ∈ {{ &__malloc_w_allocate_T_l14_10 }} + F[0] ∈ {{ &__malloc_allocate_and_free_last_l29 }} + [1] ∈ {{ &__malloc_allocate_and_free_last_l29_0 }} + [2] ∈ {{ &__malloc_allocate_and_free_last_l29_1 }} + [3] ∈ {{ &__malloc_allocate_and_free_last_l29_2 }} + [4] ∈ {{ &__malloc_allocate_and_free_last_l29_3 }} + [5..9] ∈ {{ &__malloc_w_allocate_and_free_last_l29_4 }} or ESCAPINGADDR + __retres ∈ {0} + __malloc_allocate_T_l11 ∈ {111} + __malloc_allocate_T_l14 ∈ {222} + __malloc_allocate_T_l14_0 ∈ {333} + __malloc_allocate_T_l14_1 ∈ {444} + __malloc_allocate_T_l14_2 ∈ {555} + __malloc_allocate_T_l14_3 ∈ {1} + __malloc_w_allocate_T_l14_4 ∈ {1} or UNINITIALIZED + __malloc_allocate_T_l11_0 ∈ {111} + __malloc_allocate_T_l14_5 ∈ {222} + __malloc_allocate_T_l14_6 ∈ {333} + __malloc_allocate_T_l14_7 ∈ {444} + __malloc_allocate_T_l14_8 ∈ {555} + __malloc_allocate_T_l14_9 ∈ {2} + __malloc_w_allocate_T_l14_10 ∈ {2} or UNINITIALIZED + __malloc_allocate_and_free_last_l29 ∈ {0} + __malloc_allocate_and_free_last_l29_0 ∈ {1} + __malloc_allocate_and_free_last_l29_1 ∈ {2} + __malloc_allocate_and_free_last_l29_2 ∈ {3} + __malloc_allocate_and_free_last_l29_3 ∈ {4} + __malloc_w_allocate_and_free_last_l29_4 ∈ + {5; 6; 7; 8; 9} or UNINITIALIZED diff --git a/tests/non-free/oracle_symblocs/memchr.err.oracle b/tests/non-free/oracle_symblocs/memchr.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/non-free/oracle_symblocs/memchr.res.oracle b/tests/non-free/oracle_symblocs/memchr.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..427a520aa375040739ada2bec8f1bce28cf6a2f7 --- /dev/null +++ b/tests/non-free/oracle_symblocs/memchr.res.oracle @@ -0,0 +1,1950 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/non-free/memchr.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + Frama_C_entropy_source ∈ [--..--] + tab_str[0] ∈ {{ "" }} + [1] ∈ {{ "a" }} + [2] ∈ {{ "aa" }} + [3] ∈ {{ "aaa" }} + [4] ∈ {{ "aaaa" }} + [5] ∈ {{ "aaaaa" }} + [6] ∈ {{ "aaaaaa" }} + [7] ∈ {{ "aaaaaaaaa" }} + [8] ∈ {{ "aaaaaaaaaa" }} + [9] ∈ {{ "aaaaaaaaaaa" }} + [10] ∈ {{ "aaaaaaaaaaaa" }} + [11] ∈ {{ "aaaaaaaaaaaaa" }} + nondet ∈ [--..--] + static_str ∈ {0} + zero_str ∈ {0} +[value] computing for function memchr_small_sets <- main. + Called from tests/non-free/memchr.c:645. +[value] computing for function my_memchr <- memchr_small_sets <- main. + Called from tests/non-free/memchr.c:81. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "abc" + {0; 1} }},{0},{4})) +[value] Called Frama_C_show_each_mymemchr({3}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +tests/non-free/memchr.c:82:[value] assertion got status valid. +[value] computing for function my_memchr <- memchr_small_sets <- main. + Called from tests/non-free/memchr.c:85. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "\000bc" + {0; 1} }},{0},{3})) +[value] Called Frama_C_show_each_mymemchr({0; 3}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +tests/non-free/memchr.c:86:[value] assertion got status valid. +[value] computing for function my_memchr <- memchr_small_sets <- main. + Called from tests/non-free/memchr.c:88. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "" }},{0},{0})) +[value] Called Frama_C_show_each_mymemchr({-1}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +tests/non-free/memchr.c:89:[value] assertion got status valid. +[value] computing for function my_memchr <- memchr_small_sets <- main. + Called from tests/non-free/memchr.c:92. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "b\000c" + {0; 2} }},{0},{2})) +[value] Called Frama_C_show_each_mymemchr({1; 3}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +tests/non-free/memchr.c:93:[value] assertion got status valid. +[value] computing for function my_memchr <- memchr_small_sets <- main. + Called from tests/non-free/memchr.c:97. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&t }},{0},{4})) +[value] Called Frama_C_show_each_mymemchr({-1; 0; 1}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +tests/non-free/memchr.c:98:[value] assertion got status valid. +[value] Recording results for memchr_small_sets +[value] Done for function memchr_small_sets +[value] computing for function memchr_zero_termination <- main. + Called from tests/non-free/memchr.c:646. +[value] computing for function my_memchr <- memchr_zero_termination <- main. + Called from tests/non-free/memchr.c:106. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&empty_or_non_terminated }}, + {0},{1})) +[value] Called Frama_C_show_each_mymemchr({-1; 0}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +tests/non-free/memchr.c:107:[value] assertion got status valid. +[value] computing for function my_memchr <- memchr_zero_termination <- main. + Called from tests/non-free/memchr.c:111. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&non_terminated }},{0},{1})) +[value] Called Frama_C_show_each_mymemchr({-1}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +tests/non-free/memchr.c:112:[value] assertion got status valid. +[value] computing for function my_memchr <- memchr_zero_termination <- main. + Called from tests/non-free/memchr.c:113. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&non_terminated }},{0},{2})) +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: reading indeterminate data +[value] Recording results for my_memchr +[value] Done for function my_memchr +[value] computing for function my_memchr <- memchr_zero_termination <- main. + Called from tests/non-free/memchr.c:119. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&non_terminated2{[2], [3]} }}, + {0},{4})) +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: reading indeterminate data +[value] Recording results for my_memchr +[value] Done for function my_memchr +[value] Recording results for memchr_zero_termination +[value] Done for function memchr_zero_termination +[value] computing for function memchr_initialization <- main. + Called from tests/non-free/memchr.c:647. +[value] computing for function my_memchr <- memchr_initialization <- main. + Called from tests/non-free/memchr.c:127. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&empty_or_uninitialized }}, + {0},{1})) +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values +[value] Called Frama_C_show_each_mymemchr({0}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +tests/non-free/memchr.c:128:[value] assertion got status valid. +[value] computing for function my_memchr <- memchr_initialization <- main. + Called from tests/non-free/memchr.c:131. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&uninitialized }},{0},{1})) +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: reading indeterminate data +[value] Recording results for my_memchr +[value] Done for function my_memchr +[value] computing for function my_memchr <- memchr_initialization <- main. + Called from tests/non-free/memchr.c:136. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&s }},{0},{2})) +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values +[value] Called Frama_C_show_each_mymemchr({1}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +tests/non-free/memchr.c:137:[value] assertion got status valid. +[value] computing for function my_memchr <- memchr_initialization <- main. + Called from tests/non-free/memchr.c:143. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&t }},{0},{4})) +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values +[value] Called Frama_C_show_each_mymemchr({3}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +tests/non-free/memchr.c:144:[value] assertion got status valid. +[value] Recording results for memchr_initialization +[value] Done for function memchr_initialization +[value] computing for function memchr_large <- main. + Called from tests/non-free/memchr.c:648. +[value] computing for function init_array_nondet <- memchr_large <- main. + Called from tests/non-free/memchr.c:192. +tests/non-free/memchr.c:184:[value] Call to builtin memset(({{ (void *)&a }},{1; 2},{100})) +[value] Recording results for init_array_nondet +[value] Done for function init_array_nondet +[value] computing for function Frama_C_interval <- memchr_large <- main. + Called from tests/non-free/memchr.c:195. +[value] using specification for function Frama_C_interval +share/libc/__fc_builtin.h:50:[value] function Frama_C_interval: precondition got status valid. +[value] Done for function Frama_C_interval +[value] computing for function my_memchr <- memchr_large <- main. + Called from tests/non-free/memchr.c:196. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [3..30] }},{0},{100})) +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating + possible uninitialized values + possible escaping addresses + possibly reading indeterminate data +[value] Called Frama_C_show_each_mymemchr([-1..75]) +[value] Recording results for my_memchr +[value] Done for function my_memchr +tests/non-free/memchr.c:197:[value] assertion got status valid. +tests/non-free/memchr.c:198:[value] warning: assertion 'refined' got status unknown. +[value] computing for function Frama_C_interval <- memchr_large <- main. + Called from tests/non-free/memchr.c:200. +[value] Done for function Frama_C_interval +[value] computing for function my_memchr <- memchr_large <- main. + Called from tests/non-free/memchr.c:201. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [5..17] }},{0},{100})) +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating + possible uninitialized values + possible escaping addresses + possibly reading indeterminate data +[value] Called Frama_C_show_each_mymemchr([-1..20]) +[value] Recording results for my_memchr +[value] Done for function my_memchr +tests/non-free/memchr.c:202:[value] assertion got status valid. +tests/non-free/memchr.c:203:[value] warning: assertion 'refined' got status unknown. +[value] computing for function Frama_C_interval <- memchr_large <- main. + Called from tests/non-free/memchr.c:205. +[value] Done for function Frama_C_interval +[value] computing for function my_memchr <- memchr_large <- main. + Called from tests/non-free/memchr.c:206. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [60..74] }},{0},{100})) +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating + possible uninitialized values + possible escaping addresses + possibly reading indeterminate data +[value] Called Frama_C_show_each_mymemchr([-1..75]) +[value] Recording results for my_memchr +[value] Done for function my_memchr +tests/non-free/memchr.c:207:[value] assertion got status valid. +tests/non-free/memchr.c:208:[value] warning: assertion 'refined' got status unknown. +[value] computing for function Frama_C_interval <- memchr_large <- main. + Called from tests/non-free/memchr.c:210. +[value] Done for function Frama_C_interval +[value] computing for function my_memchr <- memchr_large <- main. + Called from tests/non-free/memchr.c:211. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [63..80] }},{0},{100})) +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating + possible uninitialized values + possible escaping addresses + possibly reading indeterminate data +[value] Called Frama_C_show_each_mymemchr([-1..79]) +[value] Recording results for my_memchr +[value] Done for function my_memchr +tests/non-free/memchr.c:212:[value] assertion got status valid. +tests/non-free/memchr.c:213:[value] warning: assertion 'refined' got status unknown. +[value] computing for function init_array_nondet <- memchr_large <- main. + Called from tests/non-free/memchr.c:215. +tests/non-free/memchr.c:184:[value] Call to builtin memset(({{ (void *)&a }},{0; 2},{100})) +[value] Recording results for init_array_nondet +[value] Done for function init_array_nondet +[value] computing for function Frama_C_interval <- memchr_large <- main. + Called from tests/non-free/memchr.c:216. +[value] Done for function Frama_C_interval +[value] computing for function my_memchr <- memchr_large <- main. + Called from tests/non-free/memchr.c:217. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [50..70] }},{0},{100})) +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating + possible uninitialized values + possible escaping addresses + possibly reading indeterminate data +[value] Called Frama_C_show_each_mymemchr([-1..99]) +[value] Recording results for my_memchr +[value] Done for function my_memchr +tests/non-free/memchr.c:218:[value] assertion got status valid. +tests/non-free/memchr.c:219:[value] warning: assertion 'refined' got status unknown. +[value] Recording results for memchr_large +[value] Done for function memchr_large +[value] computing for function memchr_large_uninit <- main. + Called from tests/non-free/memchr.c:649. +[value] computing for function init_array_nondet <- memchr_large_uninit <- main. + Called from tests/non-free/memchr.c:226. +tests/non-free/memchr.c:184:[value] Call to builtin memset(({{ (void *)&a }},{1; 2},{40})) +[value] Recording results for init_array_nondet +[value] Done for function init_array_nondet +[value] computing for function init_array_nondet <- memchr_large_uninit <- main. + Called from tests/non-free/memchr.c:227. +tests/non-free/memchr.c:184:[value] Call to builtin memset(({{ (void *)&a[50] }},{3; 4},{45})) +[value] Recording results for init_array_nondet +[value] Done for function init_array_nondet +[value] computing for function Frama_C_interval <- memchr_large_uninit <- main. + Called from tests/non-free/memchr.c:231. +[value] Done for function Frama_C_interval +[value] computing for function my_memchr <- memchr_large_uninit <- main. + Called from tests/non-free/memchr.c:232. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [3..30] }},{0},{100})) +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating + possible uninitialized values + possible escaping addresses + possibly reading indeterminate data +[value] Called Frama_C_show_each_mymemchr([-1..29]) +[value] Recording results for my_memchr +[value] Done for function my_memchr +tests/non-free/memchr.c:233:[value] assertion got status valid. +tests/non-free/memchr.c:234:[value] warning: assertion 'refined' got status unknown. +[value] computing for function Frama_C_interval <- memchr_large_uninit <- main. + Called from tests/non-free/memchr.c:237. +[value] Done for function Frama_C_interval +[value] computing for function my_memchr <- memchr_large_uninit <- main. + Called from tests/non-free/memchr.c:238. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [63..80] }},{0},{100})) +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating + possible uninitialized values + possible escaping addresses + possibly reading indeterminate data +[value] Called Frama_C_show_each_mymemchr([-1..79]) +[value] Recording results for my_memchr +[value] Done for function my_memchr +tests/non-free/memchr.c:239:[value] assertion got status valid. +tests/non-free/memchr.c:240:[value] warning: assertion 'refined' got status unknown. +[value] computing for function Frama_C_interval <- memchr_large_uninit <- main. + Called from tests/non-free/memchr.c:242. +[value] Done for function Frama_C_interval +[value] computing for function my_memchr <- memchr_large_uninit <- main. + Called from tests/non-free/memchr.c:243. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [45..55] }},{0},{100})) +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating + possible uninitialized values + possible escaping addresses + possibly reading indeterminate data +[value] Called Frama_C_show_each_mymemchr([-1..75]) +[value] Recording results for my_memchr +[value] Done for function my_memchr +tests/non-free/memchr.c:244:[value] assertion got status valid. +tests/non-free/memchr.c:245:[value] warning: assertion 'refined' got status unknown. +[value] Recording results for memchr_large_uninit +[value] Done for function memchr_large_uninit +[value] computing for function memchr_misc_array <- main. + Called from tests/non-free/memchr.c:650. +[value] computing for function Frama_C_interval <- memchr_misc_array <- main. + Called from tests/non-free/memchr.c:267. +[value] Done for function Frama_C_interval +[value] computing for function my_memchr <- memchr_misc_array <- main. + Called from tests/non-free/memchr.c:268. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "" ; "a" ; "aa" ; "aaa" ; "aaaa" ; + "aaaaa" ; "aaaaaa" ; "aaaaaaaaa" ; + "aaaaaaaaaa" ; "aaaaaaaaaaa" ; + "aaaaaaaaaaaa" ; "aaaaaaaaaaaaa" }}, + {0},{14})) +tests/non-free/memchr.c:55:[value] warning: pointer subtraction. assert \base_addr(ss) ≡ \base_addr((char *)p); +[value] Called Frama_C_show_each_mymemchr([0..13]) +[value] Recording results for my_memchr +[value] Done for function my_memchr +tests/non-free/memchr.c:269:[value] assertion got status valid. +[value] Recording results for memchr_misc_array +[value] Done for function memchr_misc_array +[value] computing for function memchr_misc <- main. + Called from tests/non-free/memchr.c:651. +[value] computing for function my_memchr <- memchr_misc <- main. + Called from tests/non-free/memchr.c:299. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&unterminated_string }}, + {0},{13})) +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: reading indeterminate data +[value] Recording results for my_memchr +[value] Done for function my_memchr +[value] computing for function my_memchr <- memchr_misc <- main. + Called from tests/non-free/memchr.c:302. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "Hello World\n" ; "Bonjour Monde\n" }}, + {0},{15})) +[value] Called Frama_C_show_each_mymemchr({12; 14}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +tests/non-free/memchr.c:303:[value] assertion got status valid. +[value] computing for function my_memchr2 <- memchr_misc <- main. + Called from tests/non-free/memchr.c:305. +tests/non-free/memchr.c:64:[value] Call to builtin Frama_C_memchr(({{ &x + {0; 3} }},{0},{12})) +tests/non-free/memchr.c:64:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data +[value] Called Frama_C_show_each_mymemchr2({0}) +[value] Recording results for my_memchr2 +[value] Done for function my_memchr2 +tests/non-free/memchr.c:306:[value] assertion got status valid. +[value] computing for function my_memchr <- memchr_misc <- main. + Called from tests/non-free/memchr.c:308. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&loc_char_array }},{0},{5})) +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: reading indeterminate data +[value] Recording results for my_memchr +[value] Done for function my_memchr +[value] computing for function my_memchr <- memchr_misc <- main. + Called from tests/non-free/memchr.c:309. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "abc\000\000\000abc" }},{0},{9})) +[value] Called Frama_C_show_each_mymemchr({3}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +tests/non-free/memchr.c:310:[value] assertion got status valid. +[value] computing for function my_memchr <- memchr_misc <- main. + Called from tests/non-free/memchr.c:311. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "abc\000\000\000abc" + {4} }},{0},{9})) +[value] Called Frama_C_show_each_mymemchr({4}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +tests/non-free/memchr.c:312:[value] assertion got status valid. +[value] computing for function my_memchr <- memchr_misc <- main. + Called from tests/non-free/memchr.c:313. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "abc\000\000\000abc" + {5} }},{0},{9})) +[value] Called Frama_C_show_each_mymemchr({5}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +tests/non-free/memchr.c:314:[value] assertion got status valid. +[value] computing for function my_memchr <- memchr_misc <- main. + Called from tests/non-free/memchr.c:315. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "abc\000\000\000abc" + {6} }},{0},{9})) +[value] Called Frama_C_show_each_mymemchr({9}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +tests/non-free/memchr.c:316:[value] assertion got status valid. +[value] Recording results for memchr_misc +[value] Done for function memchr_misc +[value] computing for function memchr_misc2 <- main. + Called from tests/non-free/memchr.c:652. +[value] computing for function my_memchr2 <- memchr_misc2 <- main. + Called from tests/non-free/memchr.c:325. +tests/non-free/memchr.c:64:[value] Call to builtin Frama_C_memchr(({{ "abc" + {0; 1} ; "ABCD" + {0; 1} }}, + {0},{5})) +tests/non-free/memchr.c:69:[value] warning: pointer subtraction. assert \base_addr(s) ≡ \base_addr((char *)base); +[value] Called Frama_C_show_each_mymemchr2({3; 4}) +[value] Recording results for my_memchr2 +[value] Done for function my_memchr2 +tests/non-free/memchr.c:326:[value] assertion got status valid. +[value] computing for function my_memchr2 <- memchr_misc2 <- main. + Called from tests/non-free/memchr.c:329. +tests/non-free/memchr.c:64:[value] Call to builtin Frama_C_memchr(({{ "efg" + {1; 2} ; "EFGH" + {1; 2} }}, + {0},{5})) +[value] Called Frama_C_show_each_mymemchr2({3; 4}) +[value] Recording results for my_memchr2 +[value] Done for function my_memchr2 +tests/non-free/memchr.c:330:[value] assertion got status valid. +tests/non-free/memchr.c:333:[value] entering loop for the first time +[value] computing for function my_memchr <- memchr_misc2 <- main. + Called from tests/non-free/memchr.c:334. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "mno\000pqr" ; "MNOP\000QRS" }},{0},{10})) +[value] Called Frama_C_show_each_mymemchr({3; 4}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +tests/non-free/memchr.c:335:[value] assertion got status valid. +[value] computing for function my_memchr <- memchr_misc2 <- main. + Called from tests/non-free/memchr.c:334. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "mno\000pqr" + {0; 1} ; + "MNOP\000QRS" + {0; 1} }},{0},{10})) +[value] Called Frama_C_show_each_mymemchr({3; 4}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +[value] computing for function my_memchr <- memchr_misc2 <- main. + Called from tests/non-free/memchr.c:334. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "mno\000pqr" + {0; 1; 2} ; + "MNOP\000QRS" + {0; 1; 2} }},{0},{10})) +[value] Called Frama_C_show_each_mymemchr({3; 4}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +[value] computing for function my_memchr <- memchr_misc2 <- main. + Called from tests/non-free/memchr.c:334. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "mno\000pqr" + {0; 1; 2; 3; 4; 5; 6; 7} ; + "MNOP\000QRS" + {0; 1; 2; 3; 4; 5; 6; 7} }}, + {0},{10})) +[value] Called Frama_C_show_each_mymemchr({3; 4; 7; 8}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +[value] computing for function my_memchr <- memchr_misc2 <- main. + Called from tests/non-free/memchr.c:334. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "mno\000pqr" + {0; 1; 2; 3; 4; 5; 6; 7} ; + "MNOP\000QRS" + {0; 1; 2; 3; 4; 5; 6; 7} }}, + {0},{10})) +[value] Called Frama_C_show_each_mymemchr({3; 4; 7; 8}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +[value] computing for function my_memchr <- memchr_misc2 <- main. + Called from tests/non-free/memchr.c:341. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&maybe_init }},{0},{2})) +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values +[value] Called Frama_C_show_each_mymemchr({1}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +tests/non-free/memchr.c:342:[value] assertion got status valid. +[value] Recording results for memchr_misc2 +[value] Done for function memchr_misc2 +[value] computing for function memchr_bitfields <- main. + Called from tests/non-free/memchr.c:653. +tests/non-free/memchr.c:161:[value] Call to builtin Frama_C_memchr(({{ (void const *)&s }},{0},{3})) +tests/non-free/memchr.c:161:[value] warning: builtin Frama_C_memchr: reading indeterminate data +[value] Recording results for memchr_bitfields +[value] Done for function memchr_bitfields +[value] computing for function memchr_bitfields2 <- main. + Called from tests/non-free/memchr.c:654. +[value] computing for function my_memchr <- memchr_bitfields2 <- main. + Called from tests/non-free/memchr.c:178. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&s }},{0},{3})) +[value] Called Frama_C_show_each_mymemchr({2}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +tests/non-free/memchr.c:179:[value] assertion got status valid. +[value] Recording results for memchr_bitfields2 +[value] Done for function memchr_bitfields2 +[value] computing for function memchr_escaping <- main. + Called from tests/non-free/memchr.c:655. +tests/non-free/memchr.c:255:[value] warning: locals {x} escaping the scope of a block of memchr_escaping through s +[value] computing for function my_memchr <- memchr_escaping <- main. + Called from tests/non-free/memchr.c:258. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&s }},{0},{4})) +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible escaping addresses +[value] Called Frama_C_show_each_mymemchr({0}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +tests/non-free/memchr.c:259:[value] assertion got status valid. +[value] computing for function my_memchr <- memchr_escaping <- main. + Called from tests/non-free/memchr.c:261. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&s }},{0},{4})) +[value] Called Frama_C_show_each_mymemchr({0}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +tests/non-free/memchr.c:262:[value] assertion got status valid. +[value] Recording results for memchr_escaping +[value] Done for function memchr_escaping +[value] computing for function memchr_big_array <- main. + Called from tests/non-free/memchr.c:656. +tests/non-free/memchr.c:352:[value] warning: out of bounds write. assert \valid(p); +tests/non-free/memchr.c:354:[value] warning: out of bounds write. assert \valid(p); +tests/non-free/memchr.c:356:[value] warning: out of bounds write. assert \valid(p); +[value] computing for function my_memchr <- memchr_big_array <- main. + Called from tests/non-free/memchr.c:364. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&u }},{0},{800})) +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values +[value] Called Frama_C_show_each_mymemchr({1}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +[value] computing for function my_memchr <- memchr_big_array <- main. + Called from tests/non-free/memchr.c:365. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&r }},{0},{805})) +tests/non-free/memchr.c:50:[kernel] more than 200(201) locations to update in array. Approximating. +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values +[value] Called Frama_C_show_each_mymemchr({1}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +[value] computing for function my_memchr <- memchr_big_array <- main. + Called from tests/non-free/memchr.c:366. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&t }},{0},{4000001})) +tests/non-free/memchr.c:50:[kernel] more than 200(1000000) locations to update in array. Approximating. +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values +[value] Called Frama_C_show_each_mymemchr({1}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +[value] Called Frama_C_show_each({1}, {1}, {1}) +tests/non-free/memchr.c:368:[value] assertion got status valid. +tests/non-free/memchr.c:369:[value] assertion got status valid. +tests/non-free/memchr.c:370:[value] assertion got status valid. +[value] computing for function my_memchr <- memchr_big_array <- main. + Called from tests/non-free/memchr.c:372. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&u }},{0},{1600})) +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values +[value] Called Frama_C_show_each_mymemchr({1}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +[value] computing for function my_memchr <- memchr_big_array <- main. + Called from tests/non-free/memchr.c:373. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&r }},{0},{1608})) +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values +[value] Called Frama_C_show_each_mymemchr({1}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +[value] computing for function my_memchr <- memchr_big_array <- main. + Called from tests/non-free/memchr.c:374. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&t }},{0},{8000000})) +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possible uninitialized values +[value] Called Frama_C_show_each_mymemchr({1}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +[value] Called Frama_C_show_each({1}, {1}, {1}) +tests/non-free/memchr.c:376:[value] assertion got status valid. +tests/non-free/memchr.c:377:[value] assertion got status valid. +tests/non-free/memchr.c:378:[value] assertion got status valid. +[value] Recording results for memchr_big_array +[value] Done for function memchr_big_array +[value] computing for function memchr_no_zero_but_ok <- main. + Called from tests/non-free/memchr.c:657. +[value] computing for function my_memchr <- memchr_no_zero_but_ok <- main. + Called from tests/non-free/memchr.c:389. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&s }},{0},{5})) +[value] Called Frama_C_show_each_mymemchr({-1}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +tests/non-free/memchr.c:390:[value] assertion got status valid. +[value] computing for function my_memchr <- memchr_no_zero_but_ok <- main. + Called from tests/non-free/memchr.c:391. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&s }},{0},{11})) +[value] Called Frama_C_show_each_mymemchr({10}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +tests/non-free/memchr.c:392:[value] assertion got status valid. +[value] computing for function my_memchr2 <- memchr_no_zero_but_ok <- main. + Called from tests/non-free/memchr.c:393. +tests/non-free/memchr.c:64:[value] Call to builtin Frama_C_memchr(({{ (void const *)&s{[1], [8]} }},{0},{11})) +[value] Called Frama_C_show_each_mymemchr2({10}) +[value] Recording results for my_memchr2 +[value] Done for function my_memchr2 +tests/non-free/memchr.c:394:[value] assertion got status valid. +[value] computing for function my_memchr2 <- memchr_no_zero_but_ok <- main. + Called from tests/non-free/memchr.c:395. +tests/non-free/memchr.c:64:[value] Call to builtin Frama_C_memchr(({{ (void const *)&s{[7], [11]} }},{0},{4})) +[value] Called Frama_C_show_each_mymemchr2({-1; 10; 14}) +[value] Recording results for my_memchr2 +[value] Done for function my_memchr2 +tests/non-free/memchr.c:396:[value] assertion got status valid. +[value] computing for function my_memchr2 <- memchr_no_zero_but_ok <- main. + Called from tests/non-free/memchr.c:397. +tests/non-free/memchr.c:64:[value] Call to builtin Frama_C_memchr(({{ (void const *)&s{[7], [18]} }},{0},{5})) +tests/non-free/memchr.c:64:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data +[value] Called Frama_C_show_each_mymemchr2({10; 18; 19}) +[value] Recording results for my_memchr2 +[value] Done for function my_memchr2 +tests/non-free/memchr.c:398:[value] assertion got status valid. +[value] Recording results for memchr_no_zero_but_ok +[value] Done for function memchr_no_zero_but_ok +[value] computing for function memchr_small_sets_n <- main. + Called from tests/non-free/memchr.c:658. +[value] computing for function my_memchr2 <- memchr_small_sets_n <- main. + Called from tests/non-free/memchr.c:407. +tests/non-free/memchr.c:64:[value] Call to builtin Frama_C_memchr(({{ "abcde" + {0; 1} }},{0},{2; 5})) +[value] Called Frama_C_show_each_mymemchr2({-1; 5}) +[value] Recording results for my_memchr2 +[value] Done for function my_memchr2 +tests/non-free/memchr.c:408:[value] assertion got status valid. +[value] computing for function my_memchr2 <- memchr_small_sets_n <- main. + Called from tests/non-free/memchr.c:412. +tests/non-free/memchr.c:64:[value] Call to builtin Frama_C_memchr(({{ "\000bcdef" + {0; 1} }},{0},{1; 6})) +[value] Called Frama_C_show_each_mymemchr2({-1; 0; 6}) +[value] Recording results for my_memchr2 +[value] Done for function my_memchr2 +tests/non-free/memchr.c:413:[value] assertion got status valid. +[value] computing for function my_memchr2 <- memchr_small_sets_n <- main. + Called from tests/non-free/memchr.c:416. +tests/non-free/memchr.c:64:[value] Call to builtin Frama_C_memchr(({{ "bcd\000efg" + {0; 2} }},{0},{4})) +[value] Called Frama_C_show_each_mymemchr2({3}) +[value] Recording results for my_memchr2 +[value] Done for function my_memchr2 +tests/non-free/memchr.c:417:[value] assertion got status valid. +[value] computing for function my_memchr2 <- memchr_small_sets_n <- main. + Called from tests/non-free/memchr.c:420. +tests/non-free/memchr.c:64:[value] Call to builtin Frama_C_memchr(({{ "bcd\000efg" + {0; 2} }},{0},{3; 4})) +[value] Called Frama_C_show_each_mymemchr2({-1; 3}) +[value] Recording results for my_memchr2 +[value] Done for function my_memchr2 +tests/non-free/memchr.c:421:[value] assertion got status valid. +[value] computing for function my_memchr2 <- memchr_small_sets_n <- main. + Called from tests/non-free/memchr.c:424. +tests/non-free/memchr.c:64:[value] Call to builtin Frama_C_memchr(({{ "bcd\000efg" + {0; 2} }},{0},{2; 3})) +[value] Called Frama_C_show_each_mymemchr2({-1; 3}) +[value] Recording results for my_memchr2 +[value] Done for function my_memchr2 +tests/non-free/memchr.c:425:[value] assertion got status valid. +[value] computing for function my_memchr2 <- memchr_small_sets_n <- main. + Called from tests/non-free/memchr.c:428. +tests/non-free/memchr.c:64:[value] Call to builtin Frama_C_memchr(({{ "bcd\000efg" + {2; 4} }},{0},{2; 7})) +[value] Called Frama_C_show_each_mymemchr2({-1; 3; 7}) +[value] Recording results for my_memchr2 +[value] Done for function my_memchr2 +tests/non-free/memchr.c:429:[value] assertion got status valid. +[value] Recording results for memchr_small_sets_n +[value] Done for function memchr_small_sets_n +[value] computing for function memchr_large_n <- main. + Called from tests/non-free/memchr.c:659. +[value] computing for function init_array_nondet <- memchr_large_n <- main. + Called from tests/non-free/memchr.c:436. +tests/non-free/memchr.c:184:[value] Call to builtin memset(({{ (void *)&a }},{1; 2},{100})) +[value] Recording results for init_array_nondet +[value] Done for function init_array_nondet +[value] computing for function Frama_C_interval <- memchr_large_n <- main. + Called from tests/non-free/memchr.c:441. +[value] Done for function Frama_C_interval +[value] computing for function Frama_C_interval <- memchr_large_n <- main. + Called from tests/non-free/memchr.c:442. +[value] Done for function Frama_C_interval +[value] computing for function my_memchr <- memchr_large_n <- main. + Called from tests/non-free/memchr.c:443. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [3..30] }},{0},[10..20])) +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating + possible uninitialized values + possible escaping addresses + possibly reading indeterminate data +[value] Called Frama_C_show_each_mymemchr([-1..40]) +[value] Recording results for my_memchr +[value] Done for function my_memchr +tests/non-free/memchr.c:444:[value] assertion got status valid. +tests/non-free/memchr.c:445:[value] warning: assertion 'refined' got status unknown. +[value] computing for function my_memchr <- memchr_large_n <- main. + Called from tests/non-free/memchr.c:449. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [3..30] }},{0},[10..20])) +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating + possible uninitialized values + possible escaping addresses + possibly reading indeterminate data +[value] Called Frama_C_show_each_mymemchr([-1..40]) +[value] Recording results for my_memchr +[value] Done for function my_memchr +tests/non-free/memchr.c:450:[value] assertion got status valid. +tests/non-free/memchr.c:451:[value] warning: assertion 'refined' got status unknown. +[value] computing for function my_memchr <- memchr_large_n <- main. + Called from tests/non-free/memchr.c:454. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [3..30] }},{0},[10..20])) +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating + possible uninitialized values + possible escaping addresses + possibly reading indeterminate data +[value] Called Frama_C_show_each_mymemchr([-1..29]) +[value] Recording results for my_memchr +[value] Done for function my_memchr +tests/non-free/memchr.c:455:[value] assertion got status valid. +tests/non-free/memchr.c:456:[value] warning: assertion 'refined' got status unknown. +[value] computing for function Frama_C_interval <- memchr_large_n <- main. + Called from tests/non-free/memchr.c:458. +[value] Done for function Frama_C_interval +[value] computing for function my_memchr <- memchr_large_n <- main. + Called from tests/non-free/memchr.c:459. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [5..17] }},{0},[10..20])) +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating + possible uninitialized values + possible escaping addresses + possibly reading indeterminate data +[value] Called Frama_C_show_each_mymemchr([-1..29]) +[value] Recording results for my_memchr +[value] Done for function my_memchr +tests/non-free/memchr.c:460:[value] assertion got status valid. +tests/non-free/memchr.c:461:[value] warning: assertion 'refined' got status unknown. +[value] computing for function Frama_C_interval <- memchr_large_n <- main. + Called from tests/non-free/memchr.c:463. +[value] Done for function Frama_C_interval +[value] computing for function my_memchr <- memchr_large_n <- main. + Called from tests/non-free/memchr.c:464. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [60..74] }},{0},[10..20])) +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating + possible uninitialized values + possible escaping addresses + possibly reading indeterminate data +[value] Called Frama_C_show_each_mymemchr([-1..75]) +[value] Recording results for my_memchr +[value] Done for function my_memchr +tests/non-free/memchr.c:465:[value] assertion got status valid. +tests/non-free/memchr.c:466:[value] warning: assertion 'refined' got status unknown. +[value] computing for function Frama_C_interval <- memchr_large_n <- main. + Called from tests/non-free/memchr.c:468. +[value] Done for function Frama_C_interval +[value] computing for function my_memchr <- memchr_large_n <- main. + Called from tests/non-free/memchr.c:469. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [63..80] }},{0},[10..20])) +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating + possible uninitialized values + possible escaping addresses + possibly reading indeterminate data +[value] Called Frama_C_show_each_mymemchr([-1..79]) +[value] Recording results for my_memchr +[value] Done for function my_memchr +tests/non-free/memchr.c:470:[value] assertion got status valid. +tests/non-free/memchr.c:471:[value] warning: assertion 'refined' got status unknown. +[value] computing for function init_array_nondet <- memchr_large_n <- main. + Called from tests/non-free/memchr.c:473. +tests/non-free/memchr.c:184:[value] Call to builtin memset(({{ (void *)&a }},{0; 2},{100})) +[value] Recording results for init_array_nondet +[value] Done for function init_array_nondet +[value] computing for function Frama_C_interval <- memchr_large_n <- main. + Called from tests/non-free/memchr.c:474. +[value] Done for function Frama_C_interval +[value] computing for function my_memchr <- memchr_large_n <- main. + Called from tests/non-free/memchr.c:475. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [50..70] }},{0},[10..20])) +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating + possible uninitialized values + possible escaping addresses + possibly reading indeterminate data +[value] Called Frama_C_show_each_mymemchr([-1..89]) +[value] Recording results for my_memchr +[value] Done for function my_memchr +tests/non-free/memchr.c:476:[value] assertion got status valid. +[value] computing for function Frama_C_interval <- memchr_large_n <- main. + Called from tests/non-free/memchr.c:478. +[value] Done for function Frama_C_interval +[value] computing for function my_memchr <- memchr_large_n <- main. + Called from tests/non-free/memchr.c:479. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [50..70] }},{0},[0..100])) +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating + possible uninitialized values + possible escaping addresses + possibly reading indeterminate data +[value] Called Frama_C_show_each_mymemchr([-1..99]) +[value] Recording results for my_memchr +[value] Done for function my_memchr +tests/non-free/memchr.c:480:[value] assertion got status valid. +[value] computing for function Frama_C_interval <- memchr_large_n <- main. + Called from tests/non-free/memchr.c:482. +[value] Done for function Frama_C_interval +[value] computing for function Frama_C_interval <- memchr_large_n <- main. + Called from tests/non-free/memchr.c:483. +[value] Done for function Frama_C_interval +[value] computing for function my_memchr <- memchr_large_n <- main. + Called from tests/non-free/memchr.c:484. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [0..10] }},{0},[0..90])) +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating + possible uninitialized values + possible escaping addresses + possibly reading indeterminate data +[value] Called Frama_C_show_each_mymemchr([-1..99]) +[value] Recording results for my_memchr +[value] Done for function my_memchr +tests/non-free/memchr.c:485:[value] assertion got status valid. +[value] Recording results for memchr_large_n +[value] Done for function memchr_large_n +[value] computing for function memchr_unbounded_n <- main. + Called from tests/non-free/memchr.c:660. +[value] computing for function my_memchr <- memchr_unbounded_n <- main. + Called from tests/non-free/memchr.c:494. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "abc" }},{0},[0..2147483647])) +[value] Called Frama_C_show_each_mymemchr({-1; 3}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +tests/non-free/memchr.c:495:[value] assertion got status valid. +[value] computing for function my_memchr <- memchr_unbounded_n <- main. + Called from tests/non-free/memchr.c:497. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "abc" + {0; 1} }},{0},[0..2147483647])) +[value] Called Frama_C_show_each_mymemchr({-1; 3}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +tests/non-free/memchr.c:498:[value] assertion got status valid. +[value] computing for function my_memchr <- memchr_unbounded_n <- main. + Called from tests/non-free/memchr.c:500. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "bcd\000eg" }},{0},[0..2147483647])) +[value] Called Frama_C_show_each_mymemchr({-1; 3}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +tests/non-free/memchr.c:501:[value] assertion got status valid. +[value] Recording results for memchr_unbounded_n +[value] Done for function memchr_unbounded_n +[value] computing for function memchr_intervals <- main. + Called from tests/non-free/memchr.c:661. +[value] computing for function init_array_nondet <- memchr_intervals <- main. + Called from tests/non-free/memchr.c:508. +tests/non-free/memchr.c:184:[value] Call to builtin memset(({{ (void *)&a }},{0; 1},{10})) +[value] Recording results for init_array_nondet +[value] Done for function init_array_nondet +[value] computing for function init_array_nondet <- memchr_intervals <- main. + Called from tests/non-free/memchr.c:509. +tests/non-free/memchr.c:184:[value] Call to builtin memset(({{ (void *)&a[3] }},{1},{4})) +[value] Recording results for init_array_nondet +[value] Done for function init_array_nondet +[value] computing for function init_array_nondet <- memchr_intervals <- main. + Called from tests/non-free/memchr.c:510. +tests/non-free/memchr.c:184:[value] Call to builtin memset(({{ (void *)&a[11] }},{0; 1},{1})) +[value] Recording results for init_array_nondet +[value] Done for function init_array_nondet +[value] computing for function init_array_nondet <- memchr_intervals <- main. + Called from tests/non-free/memchr.c:511. +tests/non-free/memchr.c:184:[value] Call to builtin memset(({{ (void *)&a[12] }},{1},{4})) +[value] Recording results for init_array_nondet +[value] Done for function init_array_nondet +[value] computing for function init_array_nondet <- memchr_intervals <- main. + Called from tests/non-free/memchr.c:512. +tests/non-free/memchr.c:184:[value] Call to builtin memset(({{ (void *)&a[16] }},{0; 1},{4})) +[value] Recording results for init_array_nondet +[value] Done for function init_array_nondet +[value] computing for function Frama_C_interval <- memchr_intervals <- main. + Called from tests/non-free/memchr.c:514. +[value] Done for function Frama_C_interval +[value] computing for function Frama_C_interval <- memchr_intervals <- main. + Called from tests/non-free/memchr.c:515. +[value] Done for function Frama_C_interval +[value] computing for function my_memchr <- memchr_intervals <- main. + Called from tests/non-free/memchr.c:516. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [0..9] }},{0},[0..10])) +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating + possible uninitialized values + possible escaping addresses + possibly reading indeterminate data +[value] Called Frama_C_show_each_mymemchr([-1..9]) +[value] Recording results for my_memchr +[value] Done for function my_memchr +tests/non-free/memchr.c:517:[value] assertion got status valid. +tests/non-free/memchr.c:518:[value] warning: assertion 'refined' got status unknown. +[value] computing for function Frama_C_interval <- memchr_intervals <- main. + Called from tests/non-free/memchr.c:520. +[value] Done for function Frama_C_interval +[value] computing for function Frama_C_interval <- memchr_intervals <- main. + Called from tests/non-free/memchr.c:521. +[value] Done for function Frama_C_interval +[value] computing for function my_memchr <- memchr_intervals <- main. + Called from tests/non-free/memchr.c:522. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&a{[3], [4], [5], [6], [7], + [8], [9]} }},{0},[2..10])) +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data +[value] Called Frama_C_show_each_mymemchr({-1; 7; 8; 9}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +tests/non-free/memchr.c:523:[value] assertion got status valid. +[value] computing for function Frama_C_interval <- memchr_intervals <- main. + Called from tests/non-free/memchr.c:525. +[value] Done for function Frama_C_interval +[value] computing for function Frama_C_interval <- memchr_intervals <- main. + Called from tests/non-free/memchr.c:526. +[value] Done for function Frama_C_interval +[value] computing for function my_memchr <- memchr_intervals <- main. + Called from tests/non-free/memchr.c:527. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&a{[3], [4], [5], [6], [7], + [8], [9]} }},{0},[0..11])) +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data +[value] Called Frama_C_show_each_mymemchr({-1; 7; 8; 9}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +tests/non-free/memchr.c:528:[value] assertion got status valid. +[value] computing for function Frama_C_interval <- memchr_intervals <- main. + Called from tests/non-free/memchr.c:530. +[value] Done for function Frama_C_interval +[value] computing for function Frama_C_interval <- memchr_intervals <- main. + Called from tests/non-free/memchr.c:531. +[value] Done for function Frama_C_interval +[value] computing for function my_memchr <- memchr_intervals <- main. + Called from tests/non-free/memchr.c:532. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&a{[3], [4], [5], [6], [7], + [8], [9], [10]} }}, + {0},[0..9])) +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data +[value] Called Frama_C_show_each_mymemchr({-1; 7; 8; 9}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +tests/non-free/memchr.c:533:[value] assertion got status valid. +[value] computing for function Frama_C_interval <- memchr_intervals <- main. + Called from tests/non-free/memchr.c:535. +[value] Done for function Frama_C_interval +[value] computing for function Frama_C_interval <- memchr_intervals <- main. + Called from tests/non-free/memchr.c:536. +[value] Done for function Frama_C_interval +[value] computing for function my_memchr <- memchr_intervals <- main. + Called from tests/non-free/memchr.c:537. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&a{[3], [4], [5], [6], [7], + [8], [9], [10]} }}, + {0},[0..10])) +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data +[value] Called Frama_C_show_each_mymemchr({-1; 7; 8; 9}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +tests/non-free/memchr.c:538:[value] assertion got status valid. +[value] computing for function Frama_C_interval <- memchr_intervals <- main. + Called from tests/non-free/memchr.c:540. +[value] Done for function Frama_C_interval +[value] computing for function Frama_C_interval <- memchr_intervals <- main. + Called from tests/non-free/memchr.c:541. +[value] Done for function Frama_C_interval +[value] computing for function my_memchr <- memchr_intervals <- main. + Called from tests/non-free/memchr.c:542. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&a{[3], [4], [5], [6], [7], + [8], [9], [10]} }}, + {0},[0..11])) +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data +[value] Called Frama_C_show_each_mymemchr({-1; 7; 8; 9}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +tests/non-free/memchr.c:543:[value] assertion got status valid. +[value] computing for function Frama_C_interval <- memchr_intervals <- main. + Called from tests/non-free/memchr.c:545. +[value] Done for function Frama_C_interval +[value] computing for function Frama_C_interval <- memchr_intervals <- main. + Called from tests/non-free/memchr.c:546. +[value] Done for function Frama_C_interval +[value] computing for function my_memchr <- memchr_intervals <- main. + Called from tests/non-free/memchr.c:547. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [3..11] }},{0},[0..10])) +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating + possible uninitialized values + possible escaping addresses + possibly reading indeterminate data +[value] Called Frama_C_show_each_mymemchr([-1..19]) +[value] Recording results for my_memchr +[value] Done for function my_memchr +tests/non-free/memchr.c:548:[value] assertion got status valid. +[value] computing for function Frama_C_interval <- memchr_intervals <- main. + Called from tests/non-free/memchr.c:550. +[value] Done for function Frama_C_interval +[value] computing for function Frama_C_interval <- memchr_intervals <- main. + Called from tests/non-free/memchr.c:551. +[value] Done for function Frama_C_interval +[value] computing for function my_memchr <- memchr_intervals <- main. + Called from tests/non-free/memchr.c:552. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [3..11] }},{0},[0..10])) +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating + possible uninitialized values + possible escaping addresses + possibly reading indeterminate data +[value] Called Frama_C_show_each_mymemchr([-1..19]) +[value] Recording results for my_memchr +[value] Done for function my_memchr +tests/non-free/memchr.c:553:[value] assertion got status valid. +[value] computing for function Frama_C_interval <- memchr_intervals <- main. + Called from tests/non-free/memchr.c:555. +[value] Done for function Frama_C_interval +[value] computing for function Frama_C_interval <- memchr_intervals <- main. + Called from tests/non-free/memchr.c:556. +[value] Done for function Frama_C_interval +[value] computing for function my_memchr <- memchr_intervals <- main. + Called from tests/non-free/memchr.c:557. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ &a + [3..11] }},{0},[0..11])) +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: + range too large and/or imprecise, approximating + possible uninitialized values + possible escaping addresses + possibly reading indeterminate data +[value] Called Frama_C_show_each_mymemchr([-1..19]) +[value] Recording results for my_memchr +[value] Done for function my_memchr +tests/non-free/memchr.c:558:[value] assertion got status valid. +[value] Recording results for memchr_intervals +[value] Done for function memchr_intervals +[value] computing for function memchr_small_sets_chars <- main. + Called from tests/non-free/memchr.c:662. +[value] Called Frama_C_show_each_c({97}) +[value] computing for function memchr_small_sets_no_assertions <- + memchr_small_sets_chars <- main. + Called from tests/non-free/memchr.c:590. +[value] computing for function my_memchr <- memchr_small_sets_no_assertions <- + memchr_small_sets_chars <- main. + Called from tests/non-free/memchr.c:566. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "abc" + {0; 1} }},{97},{4})) +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data +[value] Called Frama_C_show_each_mymemchr({0}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +[value] computing for function my_memchr <- memchr_small_sets_no_assertions <- + memchr_small_sets_chars <- main. + Called from tests/non-free/memchr.c:569. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "\000bc" + {0; 1} }},{97},{3})) +[value] Called Frama_C_show_each_mymemchr({-1}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +[value] computing for function my_memchr <- memchr_small_sets_no_assertions <- + memchr_small_sets_chars <- main. + Called from tests/non-free/memchr.c:571. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "" }},{97},{0})) +[value] Called Frama_C_show_each_mymemchr({-1}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +[value] computing for function my_memchr <- memchr_small_sets_no_assertions <- + memchr_small_sets_chars <- main. + Called from tests/non-free/memchr.c:574. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "b\000c" + {0; 2} }},{97},{2})) +[value] Called Frama_C_show_each_mymemchr({-1}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +[value] computing for function my_memchr <- memchr_small_sets_no_assertions <- + memchr_small_sets_chars <- main. + Called from tests/non-free/memchr.c:578. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&t }},{97},{4})) +[value] Called Frama_C_show_each_mymemchr({-1; 0; 1}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +[value] Recording results for memchr_small_sets_no_assertions +[value] Done for function memchr_small_sets_no_assertions +[value] Called Frama_C_show_each_res({0}, {-1}, {-1}, {-1}, {-1; 0; 1}) +tests/non-free/memchr.c:592:[value] assertion got status valid. +tests/non-free/memchr.c:593:[value] assertion got status valid. +tests/non-free/memchr.c:594:[value] assertion got status valid. +tests/non-free/memchr.c:595:[value] assertion got status valid. +tests/non-free/memchr.c:596:[value] assertion got status valid. +[value] Called Frama_C_show_each_c({98}) +[value] computing for function memchr_small_sets_no_assertions <- + memchr_small_sets_chars <- main. + Called from tests/non-free/memchr.c:600. +[value] computing for function my_memchr <- memchr_small_sets_no_assertions <- + memchr_small_sets_chars <- main. + Called from tests/non-free/memchr.c:566. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "abc" + {0; 1} }},{98},{4})) +[value] Called Frama_C_show_each_mymemchr({1}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +[value] computing for function my_memchr <- memchr_small_sets_no_assertions <- + memchr_small_sets_chars <- main. + Called from tests/non-free/memchr.c:569. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "\000bc" + {0; 1} }},{98},{3})) +[value] Called Frama_C_show_each_mymemchr({1}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +[value] computing for function my_memchr <- memchr_small_sets_no_assertions <- + memchr_small_sets_chars <- main. + Called from tests/non-free/memchr.c:571. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "" }},{98},{0})) +[value] Called Frama_C_show_each_mymemchr({-1}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +[value] computing for function my_memchr <- memchr_small_sets_no_assertions <- + memchr_small_sets_chars <- main. + Called from tests/non-free/memchr.c:574. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "b\000c" + {0; 2} }},{98},{2})) +[value] Called Frama_C_show_each_mymemchr({-1; 0}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +[value] computing for function my_memchr <- memchr_small_sets_no_assertions <- + memchr_small_sets_chars <- main. + Called from tests/non-free/memchr.c:578. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&t }},{98},{4})) +[value] Called Frama_C_show_each_mymemchr({-1; 0; 1}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +[value] Recording results for memchr_small_sets_no_assertions +[value] Done for function memchr_small_sets_no_assertions +[value] Called Frama_C_show_each_res({1}, {1}, {-1}, {-1; 0}, {-1; 0; 1}) +tests/non-free/memchr.c:602:[value] assertion got status valid. +tests/non-free/memchr.c:603:[value] assertion got status valid. +tests/non-free/memchr.c:604:[value] assertion got status valid. +tests/non-free/memchr.c:605:[value] assertion got status valid. +tests/non-free/memchr.c:606:[value] assertion got status valid. +[value] Called Frama_C_show_each_c({97; 98}) +[value] computing for function memchr_small_sets_no_assertions <- + memchr_small_sets_chars <- main. + Called from tests/non-free/memchr.c:610. +[value] computing for function my_memchr <- memchr_small_sets_no_assertions <- + memchr_small_sets_chars <- main. + Called from tests/non-free/memchr.c:566. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "abc" + {0; 1} }},{97; 98},{4})) +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data +[value] Called Frama_C_show_each_mymemchr({-1; 0; 1}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +[value] computing for function my_memchr <- memchr_small_sets_no_assertions <- + memchr_small_sets_chars <- main. + Called from tests/non-free/memchr.c:569. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "\000bc" + {0; 1} }},{97; 98},{3})) +[value] Called Frama_C_show_each_mymemchr({-1; 1}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +[value] computing for function my_memchr <- memchr_small_sets_no_assertions <- + memchr_small_sets_chars <- main. + Called from tests/non-free/memchr.c:571. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "" }},{97; 98},{0})) +[value] Called Frama_C_show_each_mymemchr({-1}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +[value] computing for function my_memchr <- memchr_small_sets_no_assertions <- + memchr_small_sets_chars <- main. + Called from tests/non-free/memchr.c:574. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "b\000c" + {0; 2} }},{97; 98},{2})) +[value] Called Frama_C_show_each_mymemchr({-1; 0}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +[value] computing for function my_memchr <- memchr_small_sets_no_assertions <- + memchr_small_sets_chars <- main. + Called from tests/non-free/memchr.c:578. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&t }},{97; 98},{4})) +[value] Called Frama_C_show_each_mymemchr({-1; 0; 1}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +[value] Recording results for memchr_small_sets_no_assertions +[value] Done for function memchr_small_sets_no_assertions +[value] Called Frama_C_show_each_res({-1; 0; 1}, {-1; 1}, {-1}, {-1; 0}, {-1; 0; 1}) +tests/non-free/memchr.c:612:[value] assertion got status valid. +tests/non-free/memchr.c:613:[value] warning: assertion 'refined' got status unknown. +tests/non-free/memchr.c:614:[value] assertion got status valid. +tests/non-free/memchr.c:615:[value] assertion got status valid. +tests/non-free/memchr.c:616:[value] assertion got status valid. +tests/non-free/memchr.c:617:[value] assertion got status valid. +[value] Called Frama_C_show_each_c({98; 99}) +[value] computing for function memchr_small_sets_no_assertions <- + memchr_small_sets_chars <- main. + Called from tests/non-free/memchr.c:621. +[value] computing for function my_memchr <- memchr_small_sets_no_assertions <- + memchr_small_sets_chars <- main. + Called from tests/non-free/memchr.c:566. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "abc" + {0; 1} }},{98; 99},{4})) +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data +[value] Called Frama_C_show_each_mymemchr({-1; 1; 2}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +[value] computing for function my_memchr <- memchr_small_sets_no_assertions <- + memchr_small_sets_chars <- main. + Called from tests/non-free/memchr.c:569. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "\000bc" + {0; 1} }},{98; 99},{3})) +[value] Called Frama_C_show_each_mymemchr({-1; 1; 2}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +[value] computing for function my_memchr <- memchr_small_sets_no_assertions <- + memchr_small_sets_chars <- main. + Called from tests/non-free/memchr.c:571. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "" }},{98; 99},{0})) +[value] Called Frama_C_show_each_mymemchr({-1}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +[value] computing for function my_memchr <- memchr_small_sets_no_assertions <- + memchr_small_sets_chars <- main. + Called from tests/non-free/memchr.c:574. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "b\000c" + {0; 2} }},{98; 99},{2})) +[value] Called Frama_C_show_each_mymemchr({-1; 0; 2}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +[value] computing for function my_memchr <- memchr_small_sets_no_assertions <- + memchr_small_sets_chars <- main. + Called from tests/non-free/memchr.c:578. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&t }},{98; 99},{4})) +[value] Called Frama_C_show_each_mymemchr({-1; 0; 1}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +[value] Recording results for memchr_small_sets_no_assertions +[value] Done for function memchr_small_sets_no_assertions +[value] Called Frama_C_show_each_res({-1; 1; 2}, + {-1; 1; 2}, + {-1}, + {-1; 0; 2}, + {-1; 0; 1}) +tests/non-free/memchr.c:623:[value] assertion got status valid. +tests/non-free/memchr.c:624:[value] warning: assertion 'refined' got status unknown. +tests/non-free/memchr.c:625:[value] assertion got status valid. +tests/non-free/memchr.c:626:[value] warning: assertion 'refined' got status unknown. +tests/non-free/memchr.c:627:[value] assertion got status valid. +tests/non-free/memchr.c:628:[value] assertion got status valid. +tests/non-free/memchr.c:629:[value] assertion got status valid. +[value] Called Frama_C_show_each_c({0; 98; 99}) +[value] computing for function memchr_small_sets_no_assertions <- + memchr_small_sets_chars <- main. + Called from tests/non-free/memchr.c:633. +[value] computing for function my_memchr <- memchr_small_sets_no_assertions <- + memchr_small_sets_chars <- main. + Called from tests/non-free/memchr.c:566. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "abc" + {0; 1} }},{0; 98; 99},{4})) +tests/non-free/memchr.c:50:[value] warning: builtin Frama_C_memchr: possibly reading indeterminate data +[value] Called Frama_C_show_each_mymemchr({-1; 1; 2; 3}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +[value] computing for function my_memchr <- memchr_small_sets_no_assertions <- + memchr_small_sets_chars <- main. + Called from tests/non-free/memchr.c:569. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "\000bc" + {0; 1} }},{0; 98; 99},{3})) +[value] Called Frama_C_show_each_mymemchr({-1; 0; 1; 2; 3}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +[value] computing for function my_memchr <- memchr_small_sets_no_assertions <- + memchr_small_sets_chars <- main. + Called from tests/non-free/memchr.c:571. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "" }},{0; 98; 99},{0})) +[value] Called Frama_C_show_each_mymemchr({-1}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +[value] computing for function my_memchr <- memchr_small_sets_no_assertions <- + memchr_small_sets_chars <- main. + Called from tests/non-free/memchr.c:574. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ "b\000c" + {0; 2} }},{0; 98; 99},{2})) +[value] Called Frama_C_show_each_mymemchr({-1; 0; 1; 2; 3}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +[value] computing for function my_memchr <- memchr_small_sets_no_assertions <- + memchr_small_sets_chars <- main. + Called from tests/non-free/memchr.c:578. +tests/non-free/memchr.c:50:[value] Call to builtin Frama_C_memchr(({{ (void const *)&t }},{0; 98; 99},{4})) +[value] Called Frama_C_show_each_mymemchr({-1; 0; 1}) +[value] Recording results for my_memchr +[value] Done for function my_memchr +[value] Recording results for memchr_small_sets_no_assertions +[value] Done for function memchr_small_sets_no_assertions +[value] Called Frama_C_show_each_res({-1; 1; 2; 3}, + {-1; 0; 1; 2; 3}, + {-1}, + {-1; 0; 1; 2; 3}, + {-1; 0; 1}) +tests/non-free/memchr.c:635:[value] assertion got status valid. +tests/non-free/memchr.c:636:[value] warning: assertion 'refined' got status unknown. +tests/non-free/memchr.c:637:[value] assertion got status valid. +tests/non-free/memchr.c:638:[value] warning: assertion 'refined' got status unknown. +tests/non-free/memchr.c:639:[value] assertion got status valid. +tests/non-free/memchr.c:640:[value] assertion got status valid. +tests/non-free/memchr.c:641:[value] assertion got status valid. +[value] Recording results for memchr_small_sets_chars +[value] Done for function memchr_small_sets_chars +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function init_array_nondet: + from ∈ {-1} + to ∈ {-1} + val1 ∈ {-1} + val2 ∈ {-1} + val ∈ {0; 1; 2; 3; 4} + a[0..99] ∈ {0; 1; 2} + a[0..39] ∈ {1; 2} + [40..49] ∈ UNINITIALIZED + [50..94] ∈ {3; 4} or UNINITIALIZED + [95..99] ∈ UNINITIALIZED + a[0..99] ∈ {0; 1; 2} + a[0..9] ∈ {0; 1} + [10] ∈ UNINITIALIZED + [11] ∈ {0; 1} or UNINITIALIZED + [12..15] ∈ {1} or UNINITIALIZED + [16..19] ∈ {0; 1} or UNINITIALIZED + [20..99] ∈ UNINITIALIZED +[value:final-states] Values at end of function memchr_bitfields: + c ∈ {0} + s.a ∈ {3} + .b ∈ {1} + .[bits 16 to 31] ∈ UNINITIALIZED + .c ∈ {7} + .[bits 49 to 63] ∈ UNINITIALIZED + p ∈ {{ (char *)&s }} +[value:final-states] Values at end of function my_memchr: + s ∈ + {{ &t[0] ; &empty_or_non_terminated[0] ; &non_terminated[0] ; + &empty_or_uninitialized[0] ; &s[0] ; &t[0] ; (char const *)&s ; + &a[0] ; &a[0] ; &s[0] ; &maybe_init[0] ; (char const *)&u ; + (char const *)&r ; (char const *)&t ; &s[0] ; &a[0] ; &a[0] ; &t[0] ; + "" ; "a" ; "aa" ; "aaa" ; "aaaa" ; "aaaaa" ; "aaaaaa" ; "aaaaaaaaa" ; + "aaaaaaaaaa" ; "aaaaaaaaaaa" ; "aaaaaaaaaaaa" ; "aaaaaaaaaaaaa" ; + "abc" ; "\000bc" ; "" ; "b\000c" ; "Hello World\n" ; + "abc\000\000\000abc" ; "Bonjour Monde\n" ; "mno\000pqr" ; + "MNOP\000QRS" ; "abc" ; "bcd\000eg" ; "abc" ; "\000bc" ; "" ; + "b\000c" }} + ss ∈ + {{ NULL ; &t{[0], [1]} ; &empty_or_non_terminated[0] ; + &empty_or_uninitialized[0] ; &s[1] ; &t[3] ; &s + {2} ; &a + [0..99] ; + &a + [0..79] ; &s[0] ; &maybe_init[1] ; &u + {1} ; &r + {1} ; + &t + {1} ; &s[10] ; &a + [0..99] ; &a + [0..19] ; &t{[0], [1]} ; + "" ; "a" + {1} ; "aa" + {2} ; "aaa" + {3} ; "aaaa" + {4} ; + "aaaaa" + {5} ; "aaaaaa" + {6} ; "aaaaaaaaa" + {9} ; + "aaaaaaaaaa" + {10} ; "aaaaaaaaaaa" + {11} ; "aaaaaaaaaaaa" + {12} ; + "aaaaaaaaaaaaa" + {13} ; "abc" + {3} ; "\000bc" + {0; 3} ; + "b\000c" + {1; 3} ; "Hello World\n" + {12} ; + "abc\000\000\000abc" + {3; 4; 5; 9} ; "Bonjour Monde\n" + {14} ; + "mno\000pqr" + {3; 7} ; "MNOP\000QRS" + {4; 8} ; "abc" + {3} ; + "bcd\000eg" + {3} ; "abc" + {0; 1; 2; 3} ; "\000bc" + {0; 1; 2; 3} ; + "b\000c" + {0; 1; 2; 3} }} + res ∈ [-1..99] +[value:final-states] Values at end of function memchr_big_array: + c ∈ {0} + u[0..199] ∈ {270729319} or UNINITIALIZED + r[0..200] ∈ {270729319} or UNINITIALIZED + t[0..999999] ∈ {270729319} or UNINITIALIZED + p ∈ {{ &t + [0..3999996],0%4 }} + len_u ∈ {1} + len_r ∈ {1} + len_t ∈ {1} +[value:final-states] Values at end of function memchr_bitfields2: + c ∈ {0} + s.a ∈ {3} + .b ∈ {1} + .c ∈ {7} + .[bits 25 to 31] ∈ UNINITIALIZED + p ∈ {{ (char *)&s }} + z1 ∈ {2} +[value:final-states] Values at end of function memchr_escaping: + c ∈ {0} + s[0] ∈ {0} + [1..3] ∈ ESCAPINGADDR + z1 ∈ {0} + z2 ∈ {0} +[value:final-states] Values at end of function memchr_initialization: + c ∈ {0} + empty_or_uninitialized[0] ∈ {0} or UNINITIALIZED + z1 ∈ {0} + s[0] ∈ {1} or UNINITIALIZED + [1] ∈ {0} + z2 ∈ {1} + t[0..1] ∈ {10} + [2] ∈ {10} or UNINITIALIZED + [3] ∈ {0} + z3 ∈ {3} +[value:final-states] Values at end of function memchr_intervals: + Frama_C_entropy_source ∈ [--..--] + c ∈ {0} + a[0..2] ∈ {0; 1} + [3..6] ∈ {1} + [7..9] ∈ {0; 1} + [10] ∈ UNINITIALIZED + [11] ∈ {0; 1} + [12..15] ∈ {1} + [16..19] ∈ {0; 1} + [20..99] ∈ UNINITIALIZED + offset ∈ [3..11] + n ∈ [0..11] + z1 ∈ {-1; 0; 1; 2; 7; 8; 9} + z2 ∈ {-1; 7; 8; 9} + z3 ∈ {-1; 7; 8; 9} + z4 ∈ {-1; 7; 8; 9} + z5 ∈ {-1; 7; 8; 9} + z6 ∈ {-1; 7; 8; 9} + z7 ∈ [-1..19] + z8 ∈ [-1..19] + z9 ∈ [-1..19] +[value:final-states] Values at end of function memchr_large: + Frama_C_entropy_source ∈ [--..--] + c ∈ {0} + a[0..99] ∈ {0; 2} + offset ∈ [50..70] + z1 ∈ {20; 75} + z2 ∈ {20} + z3 ∈ {75} + z4 ∈ {75} + z5 ∈ [50..99] +[value:final-states] Values at end of function memchr_large_n: + Frama_C_entropy_source ∈ [--..--] + c ∈ {0} + a[0..99] ∈ {0; 2} + offset ∈ [0..10] + n ∈ [0..90] + z1 ∈ {-1; 15; 28; 40} + z2 ∈ {-1; 15; 29; 40} + z3 ∈ {-1; 15; 29} + z4 ∈ {-1; 15; 29} + z5 ∈ {-1; 75} + z6 ∈ {-1; 75} + z7 ∈ [-1..89] + z8 ∈ [-1..99] + z9 ∈ [-1..99] +[value:final-states] Values at end of function memchr_large_uninit: + Frama_C_entropy_source ∈ [--..--] + c ∈ {0} + a[0..19] ∈ {1; 2} + [20] ∈ {0} + [21..39] ∈ {1; 2} + [40..49] ∈ UNINITIALIZED + [50..74] ∈ {3; 4} + [75] ∈ {0} + [76..94] ∈ {3; 4} + [95..97] ∈ UNINITIALIZED + [98] ∈ {0} + [99] ∈ UNINITIALIZED + offset ∈ {0} + z1 ∈ {20} + z2 ∈ {75} + z3 ∈ {75} +[value:final-states] Values at end of function memchr_misc_array: + Frama_C_entropy_source ∈ [--..--] + c ∈ {0} + i ∈ [0..11] + sz3 ∈ [0..13] +[value:final-states] Values at end of function memchr_small_sets: + c ∈ {0} + s ∈ {{ "b\000c" }} + o ∈ {0; 2} + z1 ∈ {3} + z2 ∈ {0; 3} + z3 ∈ {-1} + z4 ∈ {1; 3} + t[0..1] ∈ {0; 1} + [2..3] ∈ {1} + z5 ∈ {-1; 0; 1} +[value:final-states] Values at end of function memchr_small_sets_no_assertions: + s ∈ {{ "b\000c" }} + o ∈ {0; 2} + t[0..1] ∈ {0; 1; 97; 98; 99} + [2..3] ∈ {1} + res[0..1] ∈ {-1; 0; 1; 2; 3} + [2] ∈ {-1} + [3] ∈ {-1; 0; 1; 2; 3} + [4] ∈ {-1; 0; 1} + __retres ∈ {0} +[value:final-states] Values at end of function memchr_small_sets_chars: + c ∈ {0; 98; 99} + res[0] ∈ {1; 2; 3} + [1] ∈ {0; 1; 2; 3} + [2] ∈ {-1} + [3] ∈ {-1; 0; 1; 2; 3} + [4] ∈ {-1; 0; 1} +[value:final-states] Values at end of function memchr_unbounded_n: + c ∈ {0} + n ∈ [0..2147483647] + s ∈ {{ "bcd\000eg" }} + zu1 ∈ {-1; 3} + o ∈ {0; 1} + zu2 ∈ {-1; 3} + zu3 ∈ {-1; 3} +[value:final-states] Values at end of function memchr_zero_termination: + c ∈ {0} + empty_or_non_terminated[0] ∈ {0; 100} + z1 ∈ {-1; 0} + non_terminated[0] ∈ {88} + z2 ∈ {-1} + non_terminated2[0] ∈ {76} + [1] ∈ {0} + [2] ∈ {28} + [3] ∈ {14} + o ∈ {2; 3} +[value:final-states] Values at end of function my_memchr2: + p ∈ + {{ &x + {0; 3} ; &s{[1], [7], [8], [11], [18]} ; "abc" + {0; 1} ; + "ABCD" + {0; 1} ; "efg" + {1; 2} ; "EFGH" + {1; 2} ; "abcde" + {0; 1} ; + "\000bcdef" + {0; 1} ; "bcd\000efg" + {0; 2; 4} }} + s ∈ + {{ NULL ; (char *)&x ; &s{[10], [14], [18], [19]} ; "abc" + {3} ; + "ABCD" + {4} ; "efg" + {3} ; "EFGH" + {4} ; "abcde" + {5} ; + "\000bcdef" + {0; 6} ; "bcd\000efg" + {3; 7} }} + res ∈ [-1..19] +[value:final-states] Values at end of function memchr_misc: + c ∈ {0} + loc_str ∈ {{ "Bonjour Monde\n" }} + loc_char_array[0..2] ∈ UNINITIALIZED + [3] ∈ {0} + [4] ∈ UNINITIALIZED + sz1 ∈ {12; 14} + sz2 ∈ {0} + sz4a ∈ {3} + sz4b ∈ {4} + sz4c ∈ {5} + sz4d ∈ {9} + x ∈ {-1412567296} + str ∈ {{ (char *)&x }} + unterminated_string[0] ∈ {117} + [1] ∈ {110} + [2] ∈ {116} + [3] ∈ {101} + [4] ∈ {114} + [5] ∈ {109} + [6] ∈ {105} + [7] ∈ {110} + [8] ∈ {97} + [9] ∈ {116} + [10] ∈ {101} + [11] ∈ {100} + static_str ∈ {{ "Hello World\n" }} + zero_str ∈ {{ "abc\000\000\000abc" }} +[value:final-states] Values at end of function memchr_misc2: + c ∈ {0} + sz5 ∈ {3; 4} + sz6 ∈ {3; 4} + sz7 ∈ {3; 4; 7; 8} or UNINITIALIZED + sz8 ∈ {1} + s1 ∈ {{ "mno\000pqr" ; "MNOP\000QRS" }} + maybe_init[0] ∈ {65} or UNINITIALIZED + [1] ∈ {0} +[value:final-states] Values at end of function memchr_no_zero_but_ok: + c ∈ {0} + s[0..9] ∈ {1} + [10] ∈ {0} + [11..13] ∈ {1} + [14..19] ∈ {0; 1} + z1 ∈ {-1} + z2 ∈ {10} + z3 ∈ {10} + z4 ∈ {-1; 10; 14} + z5 ∈ {10; 18; 19} +[value:final-states] Values at end of function memchr_small_sets_n: + c ∈ {0} + s ∈ {{ "bcd\000efg" }} + n ∈ {2; 7} + z1 ∈ {-1; 5} + z2 ∈ {-1; 0; 6} + z3a ∈ {3} + z3b ∈ {-1; 3} + z3 ∈ {-1; 3} + z4 ∈ {-1; 3; 7} +[value:final-states] Values at end of function main: + Frama_C_entropy_source ∈ [--..--] + static_str ∈ {{ "Hello World\n" }} + zero_str ∈ {{ "abc\000\000\000abc" }} + __retres ∈ {0} +[from] Computing for function init_array_nondet +[from] Computing for function Frama_C_memset <-init_array_nondet +[from] Done for function Frama_C_memset +[from] Done for function init_array_nondet +[from] Computing for function memchr_bitfields +[from] Computing for function Frama_C_memchr <-memchr_bitfields +[from] Done for function Frama_C_memchr +[from] Done for function memchr_bitfields +[from] Computing for function my_memchr +[from] Done for function my_memchr +[from] Computing for function memchr_big_array +[from] Done for function memchr_big_array +[from] Computing for function memchr_bitfields2 +[from] Done for function memchr_bitfields2 +[from] Computing for function memchr_escaping +[from] Done for function memchr_escaping +[from] Computing for function memchr_initialization +[from] Done for function memchr_initialization +[from] Computing for function memchr_intervals +[from] Computing for function Frama_C_interval <-memchr_intervals +[from] Done for function Frama_C_interval +[from] Done for function memchr_intervals +[from] Computing for function memchr_large +[from] Done for function memchr_large +[from] Computing for function memchr_large_n +[from] Done for function memchr_large_n +[from] Computing for function memchr_large_uninit +[from] Done for function memchr_large_uninit +[from] Computing for function memchr_misc_array +[from] Done for function memchr_misc_array +[from] Computing for function memchr_small_sets +[from] Done for function memchr_small_sets +[from] Computing for function memchr_small_sets_no_assertions +[from] Done for function memchr_small_sets_no_assertions +[from] Computing for function memchr_small_sets_chars +[from] Done for function memchr_small_sets_chars +[from] Computing for function memchr_unbounded_n +[from] Done for function memchr_unbounded_n +[from] Computing for function memchr_zero_termination +[from] Done for function memchr_zero_termination +[from] Computing for function my_memchr2 +[from] Done for function my_memchr2 +[from] Computing for function memchr_misc +[from] Done for function memchr_misc +[from] Computing for function memchr_misc2 +[from] Done for function memchr_misc2 +[from] Computing for function memchr_no_zero_but_ok +[from] Done for function memchr_no_zero_but_ok +[from] Computing for function memchr_small_sets_n +[from] Done for function memchr_small_sets_n +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function Frama_C_interval: + Frama_C_entropy_source FROM Frama_C_entropy_source (and SELF) + \result FROM Frama_C_entropy_source; min; max +[from] Function init_array_nondet: + a[0..99] FROM val1; val2; nondet (and SELF) + a[0..99] FROM val1; val2; nondet (and SELF) + a[0..99] FROM val1; val2; nondet (and SELF) + a[0..99] FROM val1; val2; nondet (and SELF) +[from] Function memchr_bitfields: + NO EFFECTS +[from] Function my_memchr: + \result FROM p; c; n; t[0..3]; empty_or_non_terminated[0]; + non_terminated[0]; non_terminated2[2..3]; + empty_or_uninitialized[0]; uninitialized[0]; s[0..1]; + t[0..3]; s; a[3..99]; a[3..99]; s[0..3]; loc_char_array[0..4]; + x; unterminated_string[0..11]; maybe_init[0..1]; u[0..199]; + r[0..200]; t[0..999999]; s[0..19]; a[0..99]; a[0..99]; + t[0..3]; ""[bits 0 to 7]; "a"[bits 0 to 15]; + "aa"[bits 0 to 23]; "aaa"; "aaaa"[bits 0 to 39]; + "aaaaa"[bits 0 to 47]; "aaaaaa"[bits 0 to 55]; + "aaaaaaaaa"[bits 0 to 79]; "aaaaaaaaaa"[bits 0 to 87]; + "aaaaaaaaaaa"[bits 0 to 95]; "aaaaaaaaaaaa"[bits 0 to 103]; + "aaaaaaaaaaaaa"[bits 0 to 111]; "abc"; "\000bc"; + ""[bits 0 to 7]; "b\000c"; "Hello World\n"[bits 0 to 103]; + "abc\000\000\000abc"[bits 0 to 79]; + "Bonjour Monde\n"[bits 0 to 119]; "abc"; "ABCD"[bits 0 to 39]; + "efg"[bits 8 to 31]; "EFGH"[bits 8 to 39]; + "mno\000pqr"[bits 0 to 63]; "MNOP\000QRS"[bits 0 to 71]; + "abcde"[bits 0 to 47]; "\000bcdef"[bits 0 to 55]; + "bcd\000efg"[bits 0 to 63]; "abc"; "bcd\000eg"[bits 0 to 55]; + "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c" +[from] Function memchr_big_array: + NO EFFECTS +[from] Function memchr_bitfields2: + NO EFFECTS +[from] Function memchr_escaping: + NO EFFECTS +[from] Function memchr_initialization: + NO EFFECTS +[from] Function memchr_intervals: + Frama_C_entropy_source FROM Frama_C_entropy_source (and SELF) +[from] Function memchr_large: + Frama_C_entropy_source FROM Frama_C_entropy_source (and SELF) +[from] Function memchr_large_n: + Frama_C_entropy_source FROM Frama_C_entropy_source (and SELF) +[from] Function memchr_large_uninit: + Frama_C_entropy_source FROM Frama_C_entropy_source (and SELF) +[from] Function memchr_misc_array: + Frama_C_entropy_source FROM Frama_C_entropy_source (and SELF) +[from] Function memchr_small_sets: + NO EFFECTS +[from] Function memchr_small_sets_no_assertions: + res[0..3] + FROM c; res; ""[bits 0 to 7]; "a"[bits 0 to 15]; "aa"[bits 0 to 23]; + "aaa"; "aaaa"[bits 0 to 39]; "aaaaa"[bits 0 to 47]; + "aaaaaa"[bits 0 to 55]; "aaaaaaaaa"[bits 0 to 79]; + "aaaaaaaaaa"[bits 0 to 87]; "aaaaaaaaaaa"[bits 0 to 95]; + "aaaaaaaaaaaa"[bits 0 to 103]; "aaaaaaaaaaaaa"[bits 0 to 111]; + "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c"; + "Hello World\n"[bits 0 to 103]; "abc\000\000\000abc"[bits 0 to 79]; + "Bonjour Monde\n"[bits 0 to 119]; "abc"; "ABCD"[bits 0 to 39]; + "efg"[bits 8 to 31]; "EFGH"[bits 8 to 39]; + "mno\000pqr"[bits 0 to 63]; "MNOP\000QRS"[bits 0 to 71]; + "abcde"[bits 0 to 47]; "\000bcdef"[bits 0 to 55]; + "bcd\000efg"[bits 0 to 63]; "abc"; "bcd\000eg"[bits 0 to 55]; + "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c" + [4] + FROM c; res; nondet; ""[bits 0 to 7]; "a"[bits 0 to 15]; + "aa"[bits 0 to 23]; "aaa"; "aaaa"[bits 0 to 39]; + "aaaaa"[bits 0 to 47]; "aaaaaa"[bits 0 to 55]; + "aaaaaaaaa"[bits 0 to 79]; "aaaaaaaaaa"[bits 0 to 87]; + "aaaaaaaaaaa"[bits 0 to 95]; "aaaaaaaaaaaa"[bits 0 to 103]; + "aaaaaaaaaaaaa"[bits 0 to 111]; "abc"; "\000bc"; ""[bits 0 to 7]; + "b\000c"; "Hello World\n"[bits 0 to 103]; + "abc\000\000\000abc"[bits 0 to 79]; + "Bonjour Monde\n"[bits 0 to 119]; "abc"; "ABCD"[bits 0 to 39]; + "efg"[bits 8 to 31]; "EFGH"[bits 8 to 39]; + "mno\000pqr"[bits 0 to 63]; "MNOP\000QRS"[bits 0 to 71]; + "abcde"[bits 0 to 47]; "\000bcdef"[bits 0 to 55]; + "bcd\000efg"[bits 0 to 63]; "abc"; "bcd\000eg"[bits 0 to 55]; + "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c" + \result FROM \nothing +[from] Function memchr_small_sets_chars: + NO EFFECTS +[from] Function memchr_unbounded_n: + NO EFFECTS +[from] Function memchr_zero_termination: + NO EFFECTS +[from] Function my_memchr2: + \result FROM base; c; n; loc_char_array[0..4]; x; + unterminated_string[0..11]; maybe_init[0..1]; s[0..19]; + ""[bits 0 to 7]; "a"[bits 0 to 15]; "aa"[bits 0 to 23]; + "aaa"; "aaaa"[bits 0 to 39]; "aaaaa"[bits 0 to 47]; + "aaaaaa"[bits 0 to 55]; "aaaaaaaaa"[bits 0 to 79]; + "aaaaaaaaaa"[bits 0 to 87]; "aaaaaaaaaaa"[bits 0 to 95]; + "aaaaaaaaaaaa"[bits 0 to 103]; "aaaaaaaaaaaaa"[bits 0 to 111]; + "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c"; + "Hello World\n"[bits 0 to 103]; + "abc\000\000\000abc"[bits 0 to 79]; + "Bonjour Monde\n"[bits 0 to 119]; "abc"; "ABCD"[bits 0 to 39]; + "efg"[bits 8 to 31]; "EFGH"[bits 8 to 39]; + "mno\000pqr"[bits 0 to 63]; "MNOP\000QRS"[bits 0 to 71]; + "abcde"[bits 0 to 47]; "\000bcdef"[bits 0 to 55]; + "bcd\000efg"[bits 0 to 63]; "abc"; "bcd\000eg"[bits 0 to 55]; + "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c" +[from] Function memchr_misc: + static_str FROM \nothing + zero_str FROM \nothing +[from] Function memchr_misc2: + NO EFFECTS +[from] Function memchr_no_zero_but_ok: + NO EFFECTS +[from] Function memchr_small_sets_n: + NO EFFECTS +[from] Function main: + Frama_C_entropy_source FROM Frama_C_entropy_source (and SELF) + static_str FROM \nothing + zero_str FROM \nothing + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function init_array_nondet: + from; to; val1; val2; val; tmp; a[0..99]; a[0..99]; a[0..99]; a[0..99] +[inout] Inputs for function init_array_nondet: + nondet +[inout] Out (internal) for function memchr_bitfields: + c; s{{.a; .b}; .c}; p +[inout] Inputs for function memchr_bitfields: + nondet +[inout] Out (internal) for function my_memchr: + s; ss; res +[inout] Inputs for function my_memchr: + t[0..3]; empty_or_non_terminated[0]; non_terminated[0]; + non_terminated2[0..3]; empty_or_uninitialized[0]; uninitialized[0]; + s[0..1]; t[0..3]; s; a[0..99]; a[0..99]; s[0..3]; loc_char_array[0..4]; + unterminated_string[0..11]; maybe_init[0..1]; u[0..199]; r[0..200]; + t[0..999999]; s[0..19]; a[0..99]; a[0..99]; t[0..3]; ""[bits 0 to 7]; + "a"[bits 0 to 15]; "aa"[bits 0 to 23]; "aaa"; "aaaa"[bits 0 to 39]; + "aaaaa"[bits 0 to 47]; "aaaaaa"[bits 0 to 55]; "aaaaaaaaa"[bits 0 to 79]; + "aaaaaaaaaa"[bits 0 to 87]; "aaaaaaaaaaa"[bits 0 to 95]; + "aaaaaaaaaaaa"[bits 0 to 103]; "aaaaaaaaaaaaa"[bits 0 to 111]; "abc"; + "\000bc"; ""[bits 0 to 7]; "b\000c"; "Hello World\n"[bits 0 to 103]; + "abc\000\000\000abc"[bits 0 to 79]; "Bonjour Monde\n"[bits 0 to 119]; + "mno\000pqr"[bits 0 to 63]; "MNOP\000QRS"[bits 0 to 71]; "abc"; + "bcd\000eg"[bits 0 to 55]; "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c" +[inout] Out (internal) for function memchr_big_array: + c; u[0..199]; r[0..200]; t[0..999999]; p; len_u; len_r; len_t +[inout] Inputs for function memchr_big_array: + nondet; ""[bits 0 to 7]; "a"[bits 0 to 15]; "aa"[bits 0 to 23]; "aaa"; + "aaaa"[bits 0 to 39]; "aaaaa"[bits 0 to 47]; "aaaaaa"[bits 0 to 55]; + "aaaaaaaaa"[bits 0 to 79]; "aaaaaaaaaa"[bits 0 to 87]; + "aaaaaaaaaaa"[bits 0 to 95]; "aaaaaaaaaaaa"[bits 0 to 103]; + "aaaaaaaaaaaaa"[bits 0 to 111]; "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c"; + "Hello World\n"[bits 0 to 103]; "abc\000\000\000abc"[bits 0 to 79]; + "Bonjour Monde\n"[bits 0 to 119]; "mno\000pqr"[bits 0 to 63]; + "MNOP\000QRS"[bits 0 to 71]; "abc"; "bcd\000eg"[bits 0 to 55]; "abc"; + "\000bc"; ""[bits 0 to 7]; "b\000c" +[inout] Out (internal) for function memchr_bitfields2: + c; s{.a; .b; .c}; p; z1 +[inout] Inputs for function memchr_bitfields2: + ""[bits 0 to 7]; "a"[bits 0 to 15]; "aa"[bits 0 to 23]; "aaa"; + "aaaa"[bits 0 to 39]; "aaaaa"[bits 0 to 47]; "aaaaaa"[bits 0 to 55]; + "aaaaaaaaa"[bits 0 to 79]; "aaaaaaaaaa"[bits 0 to 87]; + "aaaaaaaaaaa"[bits 0 to 95]; "aaaaaaaaaaaa"[bits 0 to 103]; + "aaaaaaaaaaaaa"[bits 0 to 111]; "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c"; + "Hello World\n"[bits 0 to 103]; "abc\000\000\000abc"[bits 0 to 79]; + "Bonjour Monde\n"[bits 0 to 119]; "mno\000pqr"[bits 0 to 63]; + "MNOP\000QRS"[bits 0 to 71]; "abc"; "bcd\000eg"[bits 0 to 55]; "abc"; + "\000bc"; ""[bits 0 to 7]; "b\000c" +[inout] Out (internal) for function memchr_escaping: + c; s[0..3]; z1; z2 +[inout] Inputs for function memchr_escaping: + nondet; ""[bits 0 to 7]; "a"[bits 0 to 15]; "aa"[bits 0 to 23]; "aaa"; + "aaaa"[bits 0 to 39]; "aaaaa"[bits 0 to 47]; "aaaaaa"[bits 0 to 55]; + "aaaaaaaaa"[bits 0 to 79]; "aaaaaaaaaa"[bits 0 to 87]; + "aaaaaaaaaaa"[bits 0 to 95]; "aaaaaaaaaaaa"[bits 0 to 103]; + "aaaaaaaaaaaaa"[bits 0 to 111]; "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c"; + "Hello World\n"[bits 0 to 103]; "abc\000\000\000abc"[bits 0 to 79]; + "Bonjour Monde\n"[bits 0 to 119]; "mno\000pqr"[bits 0 to 63]; + "MNOP\000QRS"[bits 0 to 71]; "abc"; "bcd\000eg"[bits 0 to 55]; "abc"; + "\000bc"; ""[bits 0 to 7]; "b\000c" +[inout] Out (internal) for function memchr_initialization: + c; empty_or_uninitialized[0]; z1; s[0..1]; z2; t[0..3]; z3 +[inout] Inputs for function memchr_initialization: + nondet; ""[bits 0 to 7]; "a"[bits 0 to 15]; "aa"[bits 0 to 23]; "aaa"; + "aaaa"[bits 0 to 39]; "aaaaa"[bits 0 to 47]; "aaaaaa"[bits 0 to 55]; + "aaaaaaaaa"[bits 0 to 79]; "aaaaaaaaaa"[bits 0 to 87]; + "aaaaaaaaaaa"[bits 0 to 95]; "aaaaaaaaaaaa"[bits 0 to 103]; + "aaaaaaaaaaaaa"[bits 0 to 111]; "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c"; + "Hello World\n"[bits 0 to 103]; "abc\000\000\000abc"[bits 0 to 79]; + "Bonjour Monde\n"[bits 0 to 119]; "mno\000pqr"[bits 0 to 63]; + "MNOP\000QRS"[bits 0 to 71]; "abc"; "bcd\000eg"[bits 0 to 55]; "abc"; + "\000bc"; ""[bits 0 to 7]; "b\000c" +[inout] Out (internal) for function memchr_intervals: + Frama_C_entropy_source; c; a[0..99]; offset; n; z1; z2; z3; z4; z5; + z6; z7; z8; z9 +[inout] Inputs for function memchr_intervals: + Frama_C_entropy_source; nondet; ""[bits 0 to 7]; "a"[bits 0 to 15]; + "aa"[bits 0 to 23]; "aaa"; "aaaa"[bits 0 to 39]; "aaaaa"[bits 0 to 47]; + "aaaaaa"[bits 0 to 55]; "aaaaaaaaa"[bits 0 to 79]; + "aaaaaaaaaa"[bits 0 to 87]; "aaaaaaaaaaa"[bits 0 to 95]; + "aaaaaaaaaaaa"[bits 0 to 103]; "aaaaaaaaaaaaa"[bits 0 to 111]; "abc"; + "\000bc"; ""[bits 0 to 7]; "b\000c"; "Hello World\n"[bits 0 to 103]; + "abc\000\000\000abc"[bits 0 to 79]; "Bonjour Monde\n"[bits 0 to 119]; + "mno\000pqr"[bits 0 to 63]; "MNOP\000QRS"[bits 0 to 71]; "abc"; + "bcd\000eg"[bits 0 to 55]; "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c" +[inout] Out (internal) for function memchr_large: + Frama_C_entropy_source; c; a[0..99]; offset; z1; z2; z3; z4; z5 +[inout] Inputs for function memchr_large: + Frama_C_entropy_source; nondet; ""[bits 0 to 7]; "a"[bits 0 to 15]; + "aa"[bits 0 to 23]; "aaa"; "aaaa"[bits 0 to 39]; "aaaaa"[bits 0 to 47]; + "aaaaaa"[bits 0 to 55]; "aaaaaaaaa"[bits 0 to 79]; + "aaaaaaaaaa"[bits 0 to 87]; "aaaaaaaaaaa"[bits 0 to 95]; + "aaaaaaaaaaaa"[bits 0 to 103]; "aaaaaaaaaaaaa"[bits 0 to 111]; "abc"; + "\000bc"; ""[bits 0 to 7]; "b\000c"; "Hello World\n"[bits 0 to 103]; + "abc\000\000\000abc"[bits 0 to 79]; "Bonjour Monde\n"[bits 0 to 119]; + "mno\000pqr"[bits 0 to 63]; "MNOP\000QRS"[bits 0 to 71]; "abc"; + "bcd\000eg"[bits 0 to 55]; "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c" +[inout] Out (internal) for function memchr_large_n: + Frama_C_entropy_source; c; a[0..99]; offset; n; z1; z2; z3; z4; z5; + z6; z7; z8; z9 +[inout] Inputs for function memchr_large_n: + Frama_C_entropy_source; nondet; ""[bits 0 to 7]; "a"[bits 0 to 15]; + "aa"[bits 0 to 23]; "aaa"; "aaaa"[bits 0 to 39]; "aaaaa"[bits 0 to 47]; + "aaaaaa"[bits 0 to 55]; "aaaaaaaaa"[bits 0 to 79]; + "aaaaaaaaaa"[bits 0 to 87]; "aaaaaaaaaaa"[bits 0 to 95]; + "aaaaaaaaaaaa"[bits 0 to 103]; "aaaaaaaaaaaaa"[bits 0 to 111]; "abc"; + "\000bc"; ""[bits 0 to 7]; "b\000c"; "Hello World\n"[bits 0 to 103]; + "abc\000\000\000abc"[bits 0 to 79]; "Bonjour Monde\n"[bits 0 to 119]; + "mno\000pqr"[bits 0 to 63]; "MNOP\000QRS"[bits 0 to 71]; "abc"; + "bcd\000eg"[bits 0 to 55]; "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c" +[inout] Out (internal) for function memchr_large_uninit: + Frama_C_entropy_source; c; a[0..99]; offset; z1; z2; z3 +[inout] Inputs for function memchr_large_uninit: + Frama_C_entropy_source; nondet; ""[bits 0 to 7]; "a"[bits 0 to 15]; + "aa"[bits 0 to 23]; "aaa"; "aaaa"[bits 0 to 39]; "aaaaa"[bits 0 to 47]; + "aaaaaa"[bits 0 to 55]; "aaaaaaaaa"[bits 0 to 79]; + "aaaaaaaaaa"[bits 0 to 87]; "aaaaaaaaaaa"[bits 0 to 95]; + "aaaaaaaaaaaa"[bits 0 to 103]; "aaaaaaaaaaaaa"[bits 0 to 111]; "abc"; + "\000bc"; ""[bits 0 to 7]; "b\000c"; "Hello World\n"[bits 0 to 103]; + "abc\000\000\000abc"[bits 0 to 79]; "Bonjour Monde\n"[bits 0 to 119]; + "mno\000pqr"[bits 0 to 63]; "MNOP\000QRS"[bits 0 to 71]; "abc"; + "bcd\000eg"[bits 0 to 55]; "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c" +[inout] Out (internal) for function memchr_misc_array: + Frama_C_entropy_source; c; i; sz3 +[inout] Inputs for function memchr_misc_array: + Frama_C_entropy_source; tab_str[0..11]; ""[bits 0 to 7]; "a"[bits 0 to 15]; + "aa"[bits 0 to 23]; "aaa"; "aaaa"[bits 0 to 39]; "aaaaa"[bits 0 to 47]; + "aaaaaa"[bits 0 to 55]; "aaaaaaaaa"[bits 0 to 79]; + "aaaaaaaaaa"[bits 0 to 87]; "aaaaaaaaaaa"[bits 0 to 95]; + "aaaaaaaaaaaa"[bits 0 to 103]; "aaaaaaaaaaaaa"[bits 0 to 111]; "abc"; + "\000bc"; ""[bits 0 to 7]; "b\000c"; "Hello World\n"[bits 0 to 103]; + "abc\000\000\000abc"[bits 0 to 79]; "Bonjour Monde\n"[bits 0 to 119]; + "mno\000pqr"[bits 0 to 63]; "MNOP\000QRS"[bits 0 to 71]; "abc"; + "bcd\000eg"[bits 0 to 55]; "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c" +[inout] Out (internal) for function memchr_small_sets: + c; s; o; tmp; z1; z2; z3; z4; t[0..3]; z5 +[inout] Inputs for function memchr_small_sets: + nondet; ""[bits 0 to 7]; "a"[bits 0 to 15]; "aa"[bits 0 to 23]; "aaa"; + "aaaa"[bits 0 to 39]; "aaaaa"[bits 0 to 47]; "aaaaaa"[bits 0 to 55]; + "aaaaaaaaa"[bits 0 to 79]; "aaaaaaaaaa"[bits 0 to 87]; + "aaaaaaaaaaa"[bits 0 to 95]; "aaaaaaaaaaaa"[bits 0 to 103]; + "aaaaaaaaaaaaa"[bits 0 to 111]; "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c"; + "Hello World\n"[bits 0 to 103]; "abc\000\000\000abc"[bits 0 to 79]; + "Bonjour Monde\n"[bits 0 to 119]; "mno\000pqr"[bits 0 to 63]; + "MNOP\000QRS"[bits 0 to 71]; "abc"; "bcd\000eg"[bits 0 to 55]; "abc"; + "\000bc"; ""[bits 0 to 7]; "b\000c" +[inout] Out (internal) for function memchr_small_sets_no_assertions: + s; o; tmp; t[0..3]; res[0..4]; __retres +[inout] Inputs for function memchr_small_sets_no_assertions: + nondet; ""[bits 0 to 7]; "a"[bits 0 to 15]; "aa"[bits 0 to 23]; "aaa"; + "aaaa"[bits 0 to 39]; "aaaaa"[bits 0 to 47]; "aaaaaa"[bits 0 to 55]; + "aaaaaaaaa"[bits 0 to 79]; "aaaaaaaaaa"[bits 0 to 87]; + "aaaaaaaaaaa"[bits 0 to 95]; "aaaaaaaaaaaa"[bits 0 to 103]; + "aaaaaaaaaaaaa"[bits 0 to 111]; "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c"; + "Hello World\n"[bits 0 to 103]; "abc\000\000\000abc"[bits 0 to 79]; + "Bonjour Monde\n"[bits 0 to 119]; "mno\000pqr"[bits 0 to 63]; + "MNOP\000QRS"[bits 0 to 71]; "abc"; "bcd\000eg"[bits 0 to 55]; "abc"; + "\000bc"; ""[bits 0 to 7]; "b\000c" +[inout] Out (internal) for function memchr_small_sets_chars: + c; res[0..4] +[inout] Inputs for function memchr_small_sets_chars: + nondet; ""[bits 0 to 7]; "a"[bits 0 to 15]; "aa"[bits 0 to 23]; "aaa"; + "aaaa"[bits 0 to 39]; "aaaaa"[bits 0 to 47]; "aaaaaa"[bits 0 to 55]; + "aaaaaaaaa"[bits 0 to 79]; "aaaaaaaaaa"[bits 0 to 87]; + "aaaaaaaaaaa"[bits 0 to 95]; "aaaaaaaaaaaa"[bits 0 to 103]; + "aaaaaaaaaaaaa"[bits 0 to 111]; "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c"; + "Hello World\n"[bits 0 to 103]; "abc\000\000\000abc"[bits 0 to 79]; + "Bonjour Monde\n"[bits 0 to 119]; "mno\000pqr"[bits 0 to 63]; + "MNOP\000QRS"[bits 0 to 71]; "abc"; "bcd\000eg"[bits 0 to 55]; "abc"; + "\000bc"; ""[bits 0 to 7]; "b\000c" +[inout] Out (internal) for function memchr_unbounded_n: + c; n; s; zu1; o; tmp_0; zu2; zu3 +[inout] Inputs for function memchr_unbounded_n: + nondet; ""[bits 0 to 7]; "a"[bits 0 to 15]; "aa"[bits 0 to 23]; "aaa"; + "aaaa"[bits 0 to 39]; "aaaaa"[bits 0 to 47]; "aaaaaa"[bits 0 to 55]; + "aaaaaaaaa"[bits 0 to 79]; "aaaaaaaaaa"[bits 0 to 87]; + "aaaaaaaaaaa"[bits 0 to 95]; "aaaaaaaaaaaa"[bits 0 to 103]; + "aaaaaaaaaaaaa"[bits 0 to 111]; "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c"; + "Hello World\n"[bits 0 to 103]; "abc\000\000\000abc"[bits 0 to 79]; + "Bonjour Monde\n"[bits 0 to 119]; "mno\000pqr"[bits 0 to 63]; + "MNOP\000QRS"[bits 0 to 71]; "abc"; "bcd\000eg"[bits 0 to 55]; "abc"; + "\000bc"; ""[bits 0 to 7]; "b\000c" +[inout] Out (internal) for function memchr_zero_termination: + c; empty_or_non_terminated[0]; z1; non_terminated[0]; z2; + non_terminated2[0..3]; o; tmp_1 +[inout] Inputs for function memchr_zero_termination: + nondet; ""[bits 0 to 7]; "a"[bits 0 to 15]; "aa"[bits 0 to 23]; "aaa"; + "aaaa"[bits 0 to 39]; "aaaaa"[bits 0 to 47]; "aaaaaa"[bits 0 to 55]; + "aaaaaaaaa"[bits 0 to 79]; "aaaaaaaaaa"[bits 0 to 87]; + "aaaaaaaaaaa"[bits 0 to 95]; "aaaaaaaaaaaa"[bits 0 to 103]; + "aaaaaaaaaaaaa"[bits 0 to 111]; "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c"; + "Hello World\n"[bits 0 to 103]; "abc\000\000\000abc"[bits 0 to 79]; + "Bonjour Monde\n"[bits 0 to 119]; "mno\000pqr"[bits 0 to 63]; + "MNOP\000QRS"[bits 0 to 71]; "abc"; "bcd\000eg"[bits 0 to 55]; "abc"; + "\000bc"; ""[bits 0 to 7]; "b\000c" +[inout] Out (internal) for function my_memchr2: + p; tmp; s; res +[inout] Inputs for function my_memchr2: + x; s[1..19]; nondet; "abc"; "ABCD"[bits 0 to 39]; "efg"[bits 8 to 31]; + "EFGH"[bits 8 to 39]; "abcde"[bits 0 to 47]; "\000bcdef"[bits 0 to 55]; + "bcd\000efg"[bits 0 to 63] +[inout] Out (internal) for function memchr_misc: + c; loc_str; loc_char_array[3]; sz1; sz2; sz4a; sz4b; sz4c; sz4d; x; + str; unterminated_string[0..11]; static_str; zero_str +[inout] Inputs for function memchr_misc: + nondet; static_str; zero_str; ""[bits 0 to 7]; "a"[bits 0 to 15]; + "aa"[bits 0 to 23]; "aaa"; "aaaa"[bits 0 to 39]; "aaaaa"[bits 0 to 47]; + "aaaaaa"[bits 0 to 55]; "aaaaaaaaa"[bits 0 to 79]; + "aaaaaaaaaa"[bits 0 to 87]; "aaaaaaaaaaa"[bits 0 to 95]; + "aaaaaaaaaaaa"[bits 0 to 103]; "aaaaaaaaaaaaa"[bits 0 to 111]; "abc"; + "\000bc"; ""[bits 0 to 7]; "b\000c"; "Hello World\n"[bits 0 to 103]; + "abc\000\000\000abc"[bits 0 to 79]; "Bonjour Monde\n"[bits 0 to 119]; + "abc"; "ABCD"[bits 0 to 39]; "efg"[bits 8 to 31]; "EFGH"[bits 8 to 39]; + "mno\000pqr"[bits 0 to 63]; "MNOP\000QRS"[bits 0 to 71]; + "abcde"[bits 0 to 47]; "\000bcdef"[bits 0 to 55]; + "bcd\000efg"[bits 0 to 63]; "abc"; "bcd\000eg"[bits 0 to 55]; "abc"; + "\000bc"; ""[bits 0 to 7]; "b\000c" +[inout] Out (internal) for function memchr_misc2: + c; sz5; sz6; sz7; sz8; s1; j; maybe_init[0..1] +[inout] Inputs for function memchr_misc2: + nondet; ""[bits 0 to 7]; "a"[bits 0 to 15]; "aa"[bits 0 to 23]; "aaa"; + "aaaa"[bits 0 to 39]; "aaaaa"[bits 0 to 47]; "aaaaaa"[bits 0 to 55]; + "aaaaaaaaa"[bits 0 to 79]; "aaaaaaaaaa"[bits 0 to 87]; + "aaaaaaaaaaa"[bits 0 to 95]; "aaaaaaaaaaaa"[bits 0 to 103]; + "aaaaaaaaaaaaa"[bits 0 to 111]; "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c"; + "Hello World\n"[bits 0 to 103]; "abc\000\000\000abc"[bits 0 to 79]; + "Bonjour Monde\n"[bits 0 to 119]; "abc"; "ABCD"[bits 0 to 39]; + "efg"[bits 8 to 31]; "EFGH"[bits 8 to 39]; "mno\000pqr"[bits 0 to 63]; + "MNOP\000QRS"[bits 0 to 71]; "abcde"[bits 0 to 47]; + "\000bcdef"[bits 0 to 55]; "bcd\000efg"[bits 0 to 63]; "abc"; + "bcd\000eg"[bits 0 to 55]; "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c" +[inout] Out (internal) for function memchr_no_zero_but_ok: + c; s[0..19]; z1; z2; z3; z4; z5 +[inout] Inputs for function memchr_no_zero_but_ok: + nondet; ""[bits 0 to 7]; "a"[bits 0 to 15]; "aa"[bits 0 to 23]; "aaa"; + "aaaa"[bits 0 to 39]; "aaaaa"[bits 0 to 47]; "aaaaaa"[bits 0 to 55]; + "aaaaaaaaa"[bits 0 to 79]; "aaaaaaaaaa"[bits 0 to 87]; + "aaaaaaaaaaa"[bits 0 to 95]; "aaaaaaaaaaaa"[bits 0 to 103]; + "aaaaaaaaaaaaa"[bits 0 to 111]; "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c"; + "Hello World\n"[bits 0 to 103]; "abc\000\000\000abc"[bits 0 to 79]; + "Bonjour Monde\n"[bits 0 to 119]; "abc"; "ABCD"[bits 0 to 39]; + "efg"[bits 8 to 31]; "EFGH"[bits 8 to 39]; "mno\000pqr"[bits 0 to 63]; + "MNOP\000QRS"[bits 0 to 71]; "abcde"[bits 0 to 47]; + "\000bcdef"[bits 0 to 55]; "bcd\000efg"[bits 0 to 63]; "abc"; + "bcd\000eg"[bits 0 to 55]; "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c" +[inout] Out (internal) for function memchr_small_sets_n: + c; s; n; tmp; z1; z2; z3a; z3b; z3; z4 +[inout] Inputs for function memchr_small_sets_n: + nondet; "abc"; "ABCD"[bits 0 to 39]; "efg"[bits 8 to 31]; + "EFGH"[bits 8 to 39]; "abcde"[bits 0 to 47]; "\000bcdef"[bits 0 to 55]; + "bcd\000efg"[bits 0 to 63] +[inout] Out (internal) for function main: + Frama_C_entropy_source; static_str; zero_str; __retres +[inout] Inputs for function main: + Frama_C_entropy_source; tab_str[0..11]; nondet; static_str; zero_str; + ""[bits 0 to 7]; "a"[bits 0 to 15]; "aa"[bits 0 to 23]; "aaa"; + "aaaa"[bits 0 to 39]; "aaaaa"[bits 0 to 47]; "aaaaaa"[bits 0 to 55]; + "aaaaaaaaa"[bits 0 to 79]; "aaaaaaaaaa"[bits 0 to 87]; + "aaaaaaaaaaa"[bits 0 to 95]; "aaaaaaaaaaaa"[bits 0 to 103]; + "aaaaaaaaaaaaa"[bits 0 to 111]; "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c"; + "Hello World\n"[bits 0 to 103]; "abc\000\000\000abc"[bits 0 to 79]; + "Bonjour Monde\n"[bits 0 to 119]; "abc"; "ABCD"[bits 0 to 39]; + "efg"[bits 8 to 31]; "EFGH"[bits 8 to 39]; "mno\000pqr"[bits 0 to 63]; + "MNOP\000QRS"[bits 0 to 71]; "abcde"[bits 0 to 47]; + "\000bcdef"[bits 0 to 55]; "bcd\000efg"[bits 0 to 63]; "abc"; + "bcd\000eg"[bits 0 to 55]; "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c" diff --git a/tests/non-free/oracle_symblocs/memcpy.err.oracle b/tests/non-free/oracle_symblocs/memcpy.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/non-free/oracle_symblocs/memcpy.res.oracle b/tests/non-free/oracle_symblocs/memcpy.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..0f775a203d6b2d574c332a560e230c3d4a084c90 --- /dev/null +++ b/tests/non-free/oracle_symblocs/memcpy.res.oracle @@ -0,0 +1,1181 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/non-free/memcpy.c (with preprocessing) +[value] Analyzing a complete application starting at main_all +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + Frama_C_entropy_source ∈ [--..--] + i ∈ [--..--] + src[0..19] ∈ {0} + dst1[0..19] ∈ {0} + dst2[0..19] ∈ {0} + dst3[0..19] ∈ {0} + dst4[0..19] ∈ {0} + dst5[0..99] ∈ {0} + maybe ∈ [--..--] + tm[0..999] ∈ {0} + um[0..999] ∈ {0} + ttyp[0..999] ∈ {0} + v1 ∈ {0} + v2 ∈ {0} + v3 ∈ {0} + v4 ∈ {0} + v5 ∈ {0} + t[0..3] ∈ {0} +[value] computing for function main <- main_all. + Called from tests/non-free/memcpy.c:216. +[value] computing for function buggy <- main <- main_all. + Called from tests/non-free/memcpy.c:61. +tests/non-free/memcpy.c:28:[value] Call to builtin memcpy(({{ (void *)&c ; "abc" }},{{ "d" }},{1})) +tests/non-free/memcpy.c:28:[value] warning: out of bounds write. assert \valid(p+(0 .. (unsigned int)1-1)); +[value] Recording results for buggy +[from] Computing for function buggy +[from] Done for function buggy +[value] Done for function buggy +[value] computing for function many <- main <- main_all. + Called from tests/non-free/memcpy.c:63. +tests/non-free/memcpy.c:44:[value] warning: assertion got status unknown. +tests/non-free/memcpy.c:47:[value] Call to builtin memcpy(({{ &tm + [0..3996],0%4 }},{{ (void const *)&s }},{4})) +tests/non-free/memcpy.c:47:[kernel] too many locations to update in array. Approximating. +tests/non-free/memcpy.c:49:[value] Call to builtin memcpy(({{ &um + [0..3996],0%4 }},{{ (void const *)&s }},{2})) +tests/non-free/memcpy.c:49:[kernel] too many locations to update in array. Approximating. +tests/non-free/memcpy.c:49:[kernel] more than 150(1000) locations to update in array. Approximating. +tests/non-free/memcpy.c:49:[kernel] more than 150(1000) elements to enumerate. Approximating. +tests/non-free/memcpy.c:53:[value] Call to builtin memcpy(({{ &ttyp + [0..7992],0%8 }},{{ (void const *)&ty }}, + {8})) +tests/non-free/memcpy.c:53:[value:imprecision] In memcpy builtin: precise copy of indeterminate values UNINITIALIZED +tests/non-free/memcpy.c:53:[kernel] too many locations to update in array. Approximating. +[value] Recording results for many +[from] Computing for function many +[from] Done for function many +[value] Done for function many +[value] computing for function init <- main <- main_all. + Called from tests/non-free/memcpy.c:65. +[value] Semantic level unrolling superposing up to 100 states +[value] Recording results for init +[from] Computing for function init +[from] Done for function init +[value] Done for function init +tests/non-free/memcpy.c:67:[value] warning: assertion got status unknown. +tests/non-free/memcpy.c:68:[value] Call to builtin memcpy(({{ (void *)&dst1[1] }},{{ (void const *)&src[2] }}, + [5..15])) +tests/non-free/memcpy.c:70:[value] Call to builtin memcpy(({{ (void *)&dst2[1] }},{{ (void const *)&src[2] }}, + [10..30],0%2)) +tests/non-free/memcpy.c:70:[value] warning: out of bounds read. + assert \valid_read(&src[2]+(0 .. (unsigned int)((int)(2*b))-1)); +tests/non-free/memcpy.c:72:[value] warning: assertion got status unknown. +tests/non-free/memcpy.c:73:[value] Call to builtin memcpy(({{ (void *)&dst3[5] }},{{ (void const *)&src[2] }}, + [5..14])) +tests/non-free/memcpy.c:75:[value] Call to builtin memcpy(({{ (void *)&dst4[5] }},{{ (void const *)&src[2] }}, + [10..28],0%2)) +tests/non-free/memcpy.c:75:[value] warning: out of bounds write. + assert \valid(&dst4[5]+(0 .. (unsigned int)((int)(2*b))-1)); +tests/non-free/memcpy.c:83:[value] Call to builtin memcpy(({{ (void *)&v2 }},{{ (void const *)&v1 }},{36})) +tests/non-free/memcpy.c:85:[value] Call to builtin memcpy(({{ (void *)&t[2] }},{{ (void const *)&t }},{36; 72})) +tests/non-free/memcpy.c:87:[value] Call to builtin memcpy(({{ (void *)&v3 }},{{ garbled mix of &{t} + (origin: Arithmetic {tests/non-free/memcpy.c:87}) }}, + {36})) +tests/non-free/memcpy.c:87:[value] warning: out of bounds read. + assert \valid_read((char *)(&t[(int)((struct t1 *)t)])+(0 .. sizeof(v1)-1)); +tests/non-free/memcpy.c:89:[value] Call to builtin memcpy(({{ garbled mix of &{v4} + (origin: Arithmetic {tests/non-free/memcpy.c:89}) }}, + {{ (void const *)&v1 }},{16})) +tests/non-free/memcpy.c:89:[kernel] too many locations to update in array. Approximating. +tests/non-free/memcpy.c:89:[value] warning: out of bounds write. + assert + \valid((char *)(&v4+(int)(&v4))+(0 .. (unsigned int)(sizeof(v1)-20)-1)); +tests/non-free/memcpy.c:91:[value] Call to builtin memcpy(({{ garbled mix of &{v5} + (origin: Arithmetic {tests/non-free/memcpy.c:91}) }}, + {{ (void const *)&v4 }},{16})) +tests/non-free/memcpy.c:91:[kernel] too many locations to update in array. Approximating. +tests/non-free/memcpy.c:91:[value] warning: out of bounds write. + assert + \valid((char *)(&v5+(int)(&v5))+(0 .. (unsigned int)(sizeof(v4)-20)-1)); +tests/non-free/memcpy.c:95:[value] entering loop for the first time +tests/non-free/memcpy.c:96:[value] Call to builtin memcpy(({{ (void *)&x }},{{ (void const *)&x }}, + [0..4294967295])) +tests/non-free/memcpy.c:96:[value:imprecision] In memcpy builtin: too many sizes to enumerate, possible loss of precision +tests/non-free/memcpy.c:96:[value] warning: out of bounds read. assert \valid_read((char *)(&x)+(0 .. i-1)); +tests/non-free/memcpy.c:96:[value] warning: out of bounds write. assert \valid((char *)(&x)+(0 .. i-1)); +tests/non-free/memcpy.c:96:[value] Call to builtin memcpy(({{ (void *)&x }},{{ (void const *)&x }}, + [0..4294967295])) +tests/non-free/memcpy.c:101:[value] Call to builtin memcpy(({{ (void *)&dst5{[0], [20]} }}, + {{ (void const *)&src }},[5..14])) +tests/non-free/memcpy.c:103:[value] warning: assertion got status unknown. +tests/non-free/memcpy.c:105:[value] Call to builtin memcpy(({{ (void *)&dst5{[40], [70]} }}, + {{ (void const *)&src }},[1..19])) +tests/non-free/memcpy.c:105:[value:imprecision] In memcpy builtin: too many sizes to enumerate, possible loss of precision +tests/non-free/memcpy.c:110:[value] entering loop for the first time +tests/non-free/memcpy.c:114:[value] Call to builtin memcpy(({{ &ptop1 + [4..--],0%4 }},{{ (void const *)&src }}, + {4})) +tests/non-free/memcpy.c:114:[kernel] too many locations to update in array. Approximating. +tests/non-free/memcpy.c:114:[value] warning: out of bounds write. assert \valid((char *)pptop+(0 .. (unsigned int)4-1)); +tests/non-free/memcpy.c:118:[value] entering loop for the first time +tests/non-free/memcpy.c:122:[value] Call to builtin memcpy(({{ &ptop2 + [--..746],2%4 }}, + {{ (void const *)&src[1] }},{4})) +tests/non-free/memcpy.c:122:[kernel] too many locations to update in array. Approximating. +tests/non-free/memcpy.c:122:[value] warning: out of bounds write. assert \valid((char *)pptop+(0 .. (unsigned int)4-1)); +tests/non-free/memcpy.c:126:[value] entering loop for the first time +tests/non-free/memcpy.c:131:[value] Call to builtin memcpy(({{ &ptop3 + [--..--],2%4 }}, + {{ (void const *)&src[2] }},{4})) +tests/non-free/memcpy.c:131:[kernel] too many locations to update in array. Approximating. +tests/non-free/memcpy.c:131:[value] warning: out of bounds write. assert \valid((char *)pptop+(0 .. (unsigned int)4-1)); +tests/non-free/memcpy.c:135:[value] entering loop for the first time +tests/non-free/memcpy.c:140:[value] Call to builtin memcpy(({{ &ptop4 + [--..--],2%4 }}, + {{ (void const *)&src[2] }},{5})) +tests/non-free/memcpy.c:140:[kernel] too many locations to update in array. Approximating. +tests/non-free/memcpy.c:140:[value] warning: out of bounds write. assert \valid((char *)pptop+(0 .. (unsigned int)5-1)); +tests/non-free/memcpy.c:145:[value] Call to builtin memcpy(({{ (void *)&garbledsize[10] }}, + {{ (void const *)&src }}, + {{ (unsigned int)&garbledsize }})) +tests/non-free/memcpy.c:145:[value:imprecision] In memcpy builtin: too many sizes to enumerate, possible loss of precision +tests/non-free/memcpy.c:145:[value] warning: out of bounds read. + assert \valid_read((char *)src+(0 .. (unsigned int)((char *)garbledsize)-1)); +tests/non-free/memcpy.c:145:[value] warning: out of bounds write. + assert + \valid((char *)pgarbledsize+(0 .. (unsigned int)((char *)garbledsize)-1)); +tests/non-free/memcpy.c:150:[value] warning: assertion got status unknown. +tests/non-free/memcpy.c:151:[value] Call to builtin memcpy(({{ (void *)&dstmaybesize1 }}, + {{ (void const *)&src }},[0..22])) +tests/non-free/memcpy.c:151:[value:imprecision] In memcpy builtin: too many sizes to enumerate, possible loss of precision +tests/non-free/memcpy.c:151:[value] warning: out of bounds read. + assert \valid_read((char *)src+(0 .. (unsigned int)maybesize-1)); +tests/non-free/memcpy.c:151:[value] warning: out of bounds write. + assert \valid((char *)dstmaybesize1+(0 .. (unsigned int)maybesize-1)); +tests/non-free/memcpy.c:152:[value] warning: assertion got status unknown. +tests/non-free/memcpy.c:153:[value] Call to builtin memcpy(({{ (void *)&dstmaybesize2 }}, + {{ (void const *)&src }},{0; 1; 2; 3; 4; 5; 6})) +[value] Recording results for main +[from] Computing for function main +[from] Done for function main +[value] Done for function main +[value] computing for function main_uninit <- main_all. + Called from tests/non-free/memcpy.c:217. +tests/non-free/memcpy.c:172:[value] Call to builtin memcpy(({{ (void *)&b }},{{ (void const *)&a }},{10})) +tests/non-free/memcpy.c:172:[value:imprecision] In memcpy builtin: precise copy of indeterminate values UNINITIALIZED +tests/non-free/memcpy.c:173:[value] assertion got status valid. +[value] computing for function itv <- main_uninit <- main_all. + Called from tests/non-free/memcpy.c:174. +[value] using specification for function itv +[value] Done for function itv +tests/non-free/memcpy.c:174:[value] Call to builtin memcpy(({{ (void *)&b }},{{ (void const *)&a }},[0..25])) +tests/non-free/memcpy.c:174:[value:imprecision] In memcpy builtin: too many sizes to enumerate, possible loss of precision +tests/non-free/memcpy.c:174:[value:imprecision] In memcpy builtin: imprecise copy of indeterminate values +tests/non-free/memcpy.c:175:[value] assertion got status valid. +[value] computing for function make_unknown <- main_uninit <- main_all. + Called from tests/non-free/memcpy.c:178. +[value] using specification for function make_unknown +tests/non-free/memcpy.c:161:[value] function make_unknown: precondition got status valid. +[value] Done for function make_unknown +tests/non-free/memcpy.c:179:[value] Call to builtin memcpy(({{ (void *)&b }},{{ (void const *)&a }},{10})) +tests/non-free/memcpy.c:180:[value] assertion got status valid. +[value] computing for function itv <- main_uninit <- main_all. + Called from tests/non-free/memcpy.c:181. +[value] Done for function itv +tests/non-free/memcpy.c:181:[value] Call to builtin memcpy(({{ (void *)&b }},{{ (void const *)&a }},[0..25])) +tests/non-free/memcpy.c:181:[value:imprecision] In memcpy builtin: too many sizes to enumerate, possible loss of precision +tests/non-free/memcpy.c:181:[value:imprecision] In memcpy builtin: imprecise copy of indeterminate values +tests/non-free/memcpy.c:182:[value] warning: accessing uninitialized left-value. assert \initialized(&b[11]); +[value] computing for function make_unknown <- main_uninit <- main_all. + Called from tests/non-free/memcpy.c:185. +[value] Done for function make_unknown +tests/non-free/memcpy.c:187:[value] Call to builtin memcpy(({{ (void *)&b }},{{ (void const *)&a }},{10})) +tests/non-free/memcpy.c:187:[value:imprecision] In memcpy builtin: precise copy of indeterminate values UNINITIALIZED +tests/non-free/memcpy.c:188:[value] assertion got status valid. +[value] computing for function itv <- main_uninit <- main_all. + Called from tests/non-free/memcpy.c:190. +[value] Done for function itv +tests/non-free/memcpy.c:190:[value] Call to builtin memcpy(({{ (void *)&b }},{{ (void const *)&a }},[0..25])) +tests/non-free/memcpy.c:190:[value:imprecision] In memcpy builtin: too many sizes to enumerate, possible loss of precision +tests/non-free/memcpy.c:190:[value:imprecision] In memcpy builtin: imprecise copy of indeterminate values +tests/non-free/memcpy.c:191:[value] assertion got status valid. +tests/non-free/memcpy.c:192:[value] warning: accessing uninitialized left-value. assert \initialized(&b[8]); +[value] computing for function make_unknown <- main_uninit <- main_all. + Called from tests/non-free/memcpy.c:196. +[value] Done for function make_unknown +[value] computing for function make_unknown <- main_uninit <- main_all. + Called from tests/non-free/memcpy.c:197. +[value] Done for function make_unknown +tests/non-free/memcpy.c:198:[value] Call to builtin memcpy(({{ (void *)&b }},{{ (void const *)&a }},{10})) +tests/non-free/memcpy.c:199:[value] assertion got status valid. +[value] computing for function itv <- main_uninit <- main_all. + Called from tests/non-free/memcpy.c:200. +[value] Done for function itv +tests/non-free/memcpy.c:200:[value] Call to builtin memcpy(({{ (void *)&b }},{{ (void const *)&a }},[0..25])) +tests/non-free/memcpy.c:200:[value:imprecision] In memcpy builtin: too many sizes to enumerate, possible loss of precision +tests/non-free/memcpy.c:200:[value:imprecision] In memcpy builtin: imprecise copy of indeterminate values +tests/non-free/memcpy.c:201:[value] warning: accessing uninitialized left-value. assert \initialized(&b[11]); +[value] Recording results for main_uninit +[from] Computing for function main_uninit +[from] Done for function main_uninit +[value] Done for function main_uninit +[value] computing for function main_local <- main_all. + Called from tests/non-free/memcpy.c:218. +tests/non-free/memcpy.c:209:[value] Call to builtin memcpy(({{ (void *)&p }},{{ (void const *)&q }},{4})) +tests/non-free/memcpy.c:210:[value] warning: locals {y} escaping the scope of a block of main_local through p +[value] DUMPING STATE of file tests/non-free/memcpy.c line 212 + Frama_C_entropy_source ∈ [--..--] + i ∈ [--..--] + src[0..19] ∈ {0} + dst1[0..19] ∈ {0} + dst2[0..19] ∈ {0} + dst3[0..19] ∈ {0} + dst4[0..19] ∈ {0} + dst5[0..99] ∈ {0} + maybe ∈ [--..--] + tm[0..999] ∈ {0} + um[0..999] ∈ {0} + ttyp[0..999] ∈ {0} + v1 ∈ {0} + v2 ∈ {0} + v3 ∈ {0} + v4 ∈ {0} + v5 ∈ {0} + t[0..3] ∈ {0} + p ∈ ESCAPINGADDR + q ∈ {0} + =END OF DUMP== +[value] Recording results for main_local +[from] Computing for function main_local +[from] Done for function main_local +[value] Done for function main_local +tests/non-free/memcpy.c:219:[value] entering loop for the first time +[value] Recording results for main_all +[from] Computing for function main_all +[from] Non-terminating function main_all (no dependencies) +[from] Done for function main_all +[value] done for function main_all +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function buggy: + c ∈ {100} + p ∈ {{ &c ; "abc" }} +[value:final-states] Values at end of function init: + src[0] ∈ {1} + [1] ∈ {2} + [2] ∈ {3} + [3] ∈ {4} + [4] ∈ {5} + [5] ∈ {6} + [6] ∈ {7} + [7] ∈ {8} + [8] ∈ {9} + [9] ∈ {10} + [10] ∈ {11} + [11] ∈ {12} + [12] ∈ {13} + [13] ∈ {14} + [14] ∈ {15} + [15] ∈ {16} + [16] ∈ {17} + [17] ∈ {18} + [18] ∈ {19} + [19] ∈ {20} + dst1[0..19] ∈ {-1} + dst2[0..19] ∈ {-1} + dst3[0..19] ∈ {-1} + dst4[0..19] ∈ {-1} + dst5[0..99] ∈ {-1} + j ∈ {100} +[value:final-states] Values at end of function main_local: + p ∈ ESCAPINGADDR + q ∈ {0} +[value:final-states] Values at end of function main_uninit: + a[0..9] ∈ [--..--] or UNINITIALIZED + [10..49] ∈ UNINITIALIZED + b[0..24] ∈ [--..--] or UNINITIALIZED + [25..49] ∈ UNINITIALIZED + r ∈ [0..255] +[value:final-states] Values at end of function many: + tm[0..999] ∈ {0; 1684234849} + um{[0..998]#; [999][bits 0 to 15]} ∈ {0; 25185} repeated %16 + [999][bits 16 to 31] ∈ {0} + ttyp[0..999] ∈ [--..--] or UNINITIALIZED + s[0] ∈ {97} + [1] ∈ {98} + [2] ∈ {99} + [3] ∈ {100} + [4] ∈ {0} + p ∈ [0..999] + ty.ts ∈ {1} + .[bits 16 to 31] ∈ UNINITIALIZED + .ti ∈ {2} +[value:final-states] Values at end of function main: + src[0] ∈ {1} + [1] ∈ {2} + [2] ∈ {3} + [3] ∈ {4} + [4] ∈ {5} + [5] ∈ {6} + [6] ∈ {7} + [7] ∈ {8} + [8] ∈ {9} + [9] ∈ {10} + [10] ∈ {11} + [11] ∈ {12} + [12] ∈ {13} + [13] ∈ {14} + [14] ∈ {15} + [15] ∈ {16} + [16] ∈ {17} + [17] ∈ {18} + [18] ∈ {19} + [19] ∈ {20} + dst1[0] ∈ {-1} + [1] ∈ {3} + [2] ∈ {4} + [3] ∈ {5} + [4] ∈ {6} + [5] ∈ {7} + [6] ∈ {-1; 8} + [7] ∈ {-1; 9} + [8] ∈ {-1; 10} + [9] ∈ {-1; 11} + [10] ∈ {-1; 12} + [11] ∈ {-1; 13} + [12] ∈ {-1; 14} + [13] ∈ {-1; 15} + [14] ∈ {-1; 16} + [15] ∈ {-1; 17} + [16..19] ∈ {-1} + dst2[0] ∈ {-1} + [1] ∈ {3} + [2] ∈ {4} + [3] ∈ {5} + [4] ∈ {6} + [5] ∈ {7} + [6] ∈ {8} + [7] ∈ {9} + [8] ∈ {10} + [9] ∈ {11} + [10] ∈ {12} + [11] ∈ {-1; 13} + [12] ∈ {-1; 14} + [13] ∈ {-1; 15} + [14] ∈ {-1; 16} + [15] ∈ {-1; 17} + [16] ∈ {-1; 18} + [17] ∈ {-1; 19} + [18] ∈ {-1; 20} + [19] ∈ {-1} + dst3[0..4] ∈ {-1} + [5] ∈ {3} + [6] ∈ {4} + [7] ∈ {5} + [8] ∈ {6} + [9] ∈ {7} + [10] ∈ {-1; 8} + [11] ∈ {-1; 9} + [12] ∈ {-1; 10} + [13] ∈ {-1; 11} + [14] ∈ {-1; 12} + [15] ∈ {-1; 13} + [16] ∈ {-1; 14} + [17] ∈ {-1; 15} + [18] ∈ {-1; 16} + [19] ∈ {-1} + dst4[0..4] ∈ {-1} + [5] ∈ {3} + [6] ∈ {4} + [7] ∈ {5} + [8] ∈ {6} + [9] ∈ {7} + [10] ∈ {8} + [11] ∈ {9} + [12] ∈ {10} + [13] ∈ {11} + [14] ∈ {12} + [15] ∈ {-1; 13} + [16] ∈ {-1; 14} + [17] ∈ {-1; 15} + [18] ∈ {-1; 16} + [19] ∈ {-1} + dst5[0] ∈ {-1; 1} + [1] ∈ {-1; 2} + [2] ∈ {-1; 3} + [3] ∈ {-1; 4} + [4] ∈ {-1; 5} + [5] ∈ {-1; 6} + [6] ∈ {-1; 7} + [7] ∈ {-1; 8} + [8] ∈ {-1; 9} + [9] ∈ {-1; 10} + [10] ∈ {-1; 11} + [11] ∈ {-1; 12} + [12] ∈ {-1; 13} + [13] ∈ {-1; 14} + [14..19] ∈ {-1} + [20] ∈ {-1; 1} + [21] ∈ {-1; 2} + [22] ∈ {-1; 3} + [23] ∈ {-1; 4} + [24] ∈ {-1; 5} + [25] ∈ {-1; 6} + [26] ∈ {-1; 7} + [27] ∈ {-1; 8} + [28] ∈ {-1; 9} + [29] ∈ {-1; 10} + [30] ∈ {-1; 11} + [31] ∈ {-1; 12} + [32] ∈ {-1; 13} + [33] ∈ {-1; 14} + [34..39] ∈ {-1} + [40] ∈ {-1; 1} + [41..88] ∈ [-1..19] + [89..99] ∈ {-1} + tm[0..999] ∈ {0; 1684234849} + um{[0..998]#; [999][bits 0 to 15]} ∈ {0; 25185} repeated %16 + [999][bits 16 to 31] ∈ {0} + ttyp[0..999] ∈ [--..--] or UNINITIALIZED + v1.x ∈ {5} + .y ∈ {7} + {.p; .padding[0..23]} ∈ {0} + v2.x ∈ {5} + .y ∈ {7} + {.p; .padding[0..23]} ∈ {0} + v3 ∈ + {{ garbled mix of &{v1} + (origin: Misaligned {tests/non-free/memcpy.c:87}) }} + v4.x ∈ [--..--] + .y ∈ {{ (int)&t }} + {.p; .padding[0..23]} ∈ [--..--] + v5 ∈ + {{ garbled mix of &{t} + (origin: Misaligned {tests/non-free/memcpy.c:91}) }} + t{[0]; [1]{.x; .y}} ∈ {0} + [1].p ∈ {{ &v1.y }} + {[1].padding[0..23]; [2]; [3]{.x; .y}} ∈ {0} + [3].p ∈ {{ NULL ; &v1.y }} + [3].padding[0..23] ∈ {0} + b ∈ [1..19] + p ∈ {{ &dst5{[40], [70]} }} + ptop1[0..3] ∈ UNINITIALIZED + [bits 32 to 6399]# ∈ {67305985} or UNINITIALIZED repeated %32 + pptop ∈ {{ &ptop4 + [--..--],2%4 }} + ptop2[0..1] ∈ UNINITIALIZED + [bits 16 to 5999]# ∈ {84148994} or UNINITIALIZED repeated %32 + [750..799] ∈ UNINITIALIZED + ptop3[0..1] ∈ UNINITIALIZED + [bits 16 to 6383]# ∈ {100992003} or UNINITIALIZED repeated %32 + [798..799] ∈ UNINITIALIZED + ptop4[0..1] ∈ UNINITIALIZED + [2..798] ∈ [--..--] or UNINITIALIZED + [799] ∈ UNINITIALIZED + garbledsize[0..9] ∈ UNINITIALIZED + [10..99] ∈ [1..20] or UNINITIALIZED + pgarbledsize ∈ {{ (int *)&garbledsize[10] }} + dstmaybesize1[0..14] ∈ [1..20] or UNINITIALIZED + dstmaybesize2[0] ∈ {1} or UNINITIALIZED + [1] ∈ {2} or UNINITIALIZED + [2] ∈ {3} or UNINITIALIZED + [3] ∈ {4} or UNINITIALIZED + [4] ∈ {5} or UNINITIALIZED + [5] ∈ {6} or UNINITIALIZED + [6..149] ∈ UNINITIALIZED + maybesize ∈ {0; 1; 2; 3; 4; 5; 6} +[value:final-states] Values at end of function main_all: + NON TERMINATING FUNCTION +[from] ====== DISPLAYING CALLWISE DEPENDENCIES ====== +[from] call to Frama_C_memcpy at tests/non-free/memcpy.c:28 (by buggy): + c FROM "d"[bits 0 to 7] (and SELF) + \result FROM dest +[from] call to Frama_C_memcpy at tests/non-free/memcpy.c:209 (by main_local): + p FROM q + \result FROM dest +[from] call to Frama_C_dump_each at tests/non-free/memcpy.c:212 (by main_local): + \result FROM \nothing +[from] call to Frama_C_memcpy at tests/non-free/memcpy.c:172 (by main_uninit): + b[0..9] FROM a[0..9] + \result FROM dest +[from] call to Frama_C_memcpy at tests/non-free/memcpy.c:174 (by main_uninit): + b[0..24] FROM a[0..24] (and SELF) + \result FROM dest +[from] call to itv at tests/non-free/memcpy.c:174 (by main_uninit): + \result FROM l; u +[from] call to make_unknown at tests/non-free/memcpy.c:178 (by main_uninit): + a[0..9] FROM maybe +[from] call to Frama_C_memcpy at tests/non-free/memcpy.c:179 (by main_uninit): + b[0..9] FROM a[0..9] + \result FROM dest +[from] call to Frama_C_memcpy at tests/non-free/memcpy.c:181 (by main_uninit): + b[0..24] FROM a[0..24] (and SELF) + \result FROM dest +[from] call to itv at tests/non-free/memcpy.c:181 (by main_uninit): + \result FROM l; u +[from] call to make_unknown at tests/non-free/memcpy.c:185 (by main_uninit): + b[0..9] FROM maybe +[from] call to Frama_C_memcpy at tests/non-free/memcpy.c:187 (by main_uninit): + b[0..9] FROM a[0..9] + \result FROM dest +[from] call to Frama_C_memcpy at tests/non-free/memcpy.c:190 (by main_uninit): + b[0..24] FROM a[0..24] (and SELF) + \result FROM dest +[from] call to itv at tests/non-free/memcpy.c:190 (by main_uninit): + \result FROM l; u +[from] call to make_unknown at tests/non-free/memcpy.c:196 (by main_uninit): + a[0..9] FROM maybe +[from] call to make_unknown at tests/non-free/memcpy.c:197 (by main_uninit): + b[0..9] FROM maybe +[from] call to Frama_C_memcpy at tests/non-free/memcpy.c:198 (by main_uninit): + b[0..9] FROM a[0..9] + \result FROM dest +[from] call to Frama_C_memcpy at tests/non-free/memcpy.c:200 (by main_uninit): + b[0..24] FROM a[0..24] (and SELF) + \result FROM dest +[from] call to itv at tests/non-free/memcpy.c:200 (by main_uninit): + \result FROM l; u +[from] call to Frama_C_memcpy at tests/non-free/memcpy.c:47 (by many): + tm[0..999] FROM s[0..3] (and SELF) + \result FROM dest +[from] call to Frama_C_memcpy at tests/non-free/memcpy.c:49 (by many): + um{[0..998]; [999][bits 0 to 15]} FROM s[0..1] (and SELF) + \result FROM dest +[from] call to Frama_C_memcpy at tests/non-free/memcpy.c:53 (by many): + ttyp[0..999] FROM ty (and SELF) + \result FROM dest +[from] call to buggy at tests/non-free/memcpy.c:61 (by main): + NO EFFECTS +[from] call to many at tests/non-free/memcpy.c:63 (by main): + tm[0] FROM \nothing + [1..999] FROM \nothing (and SELF) + um[0] FROM \nothing + {[1..998]; [999][bits 0 to 15]} FROM \nothing (and SELF) + ttyp[0] FROM \nothing + [1..999] FROM \nothing (and SELF) +[from] call to init at tests/non-free/memcpy.c:65 (by main): + src[0..19] FROM \nothing (and SELF) + dst1[0..19] FROM \nothing (and SELF) + dst2[0..19] FROM \nothing (and SELF) + dst3[0..19] FROM \nothing (and SELF) + dst4[0..19] FROM \nothing (and SELF) + dst5[0..99] FROM \nothing (and SELF) +[from] call to Frama_C_memcpy at tests/non-free/memcpy.c:68 (by main): + dst1[1..5] FROM src[2..6] + [6..15] FROM src[7..16] (and SELF) + \result FROM dest +[from] call to Frama_C_memcpy at tests/non-free/memcpy.c:70 (by main): + dst2[1..10] FROM src[2..11] + [11..19] FROM src[12..19] (and SELF) + \result FROM dest +[from] call to Frama_C_memcpy at tests/non-free/memcpy.c:73 (by main): + dst3[5..9] FROM src[2..6] + [10..18] FROM src[7..15] (and SELF) + \result FROM dest +[from] call to Frama_C_memcpy at tests/non-free/memcpy.c:75 (by main): + dst4[5..14] FROM src[2..11] + [15..19] FROM src[12..19] (and SELF) + \result FROM dest +[from] call to Frama_C_memcpy at tests/non-free/memcpy.c:83 (by main): + v2 FROM v1 + \result FROM dest +[from] call to Frama_C_memcpy at tests/non-free/memcpy.c:85 (by main): + t[2] FROM t[0] + [3] FROM t[1] (and SELF) + \result FROM dest +[from] call to Frama_C_memcpy at tests/non-free/memcpy.c:87 (by main): + v3 FROM t[0..3] + \result FROM dest +[from] call to Frama_C_memcpy at tests/non-free/memcpy.c:89 (by main): + v4 FROM v1{.x; .y; .p; .padding[0..3]} (and SELF) + \result FROM dest +[from] call to Frama_C_memcpy at tests/non-free/memcpy.c:91 (by main): + v5 FROM v4{.x; .y; .p; .padding[0..3]} (and SELF) + \result FROM dest +[from] call to Frama_C_memcpy at tests/non-free/memcpy.c:96 (by main): + x FROM x (and SELF) + \result FROM dest +[from] call to Frama_C_memcpy at tests/non-free/memcpy.c:101 (by main): + dst5[0..4] FROM src[0..4] (and SELF) + {[5..19]; [25..33]} FROM src[5..13] (and SELF) + [20..24] FROM src[0..13] (and SELF) + \result FROM dest +[from] call to Frama_C_memcpy at tests/non-free/memcpy.c:105 (by main): + dst5[40] FROM src[0] (and SELF) + {[41..69]; [71..88]} FROM src[1..18] (and SELF) + [70] FROM src[0..18] (and SELF) + \result FROM dest +[from] call to Frama_C_memcpy at tests/non-free/memcpy.c:114 (by main): + ptop1[4..799] FROM src[0..3] (and SELF) + \result FROM dest +[from] call to Frama_C_memcpy at tests/non-free/memcpy.c:122 (by main): + ptop2[2..749] FROM src[1..4] (and SELF) + \result FROM dest +[from] call to Frama_C_memcpy at tests/non-free/memcpy.c:131 (by main): + ptop3[2..797] FROM src[2..5] (and SELF) + \result FROM dest +[from] call to Frama_C_memcpy at tests/non-free/memcpy.c:140 (by main): + ptop4[2..798] FROM src[2..6] (and SELF) + \result FROM dest +[from] call to Frama_C_memcpy at tests/non-free/memcpy.c:145 (by main): + garbledsize[10..99] FROM src[0..19] (and SELF) + \result FROM dest +[from] call to Frama_C_memcpy at tests/non-free/memcpy.c:151 (by main): + dstmaybesize1[0..14] FROM src[0..19] (and SELF) + \result FROM dest +[from] call to Frama_C_memcpy at tests/non-free/memcpy.c:153 (by main): + dstmaybesize2[0..5] FROM src[0..5] (and SELF) + \result FROM dest +[from] call to main at tests/non-free/memcpy.c:216 (by main_all): + src[0..19] FROM \nothing (and SELF) + dst1{[0]; [16..19]} FROM \nothing (and SELF) + [1..5] FROM src[2..6] + [6..15] FROM src[7..16] (and SELF) + dst2[0] FROM \nothing (and SELF) + [1..10] FROM src[2..11] + [11..19] FROM src[12..19] (and SELF) + dst3{[0..4]; [19]} FROM \nothing (and SELF) + [5..9] FROM src[2..6] + [10..18] FROM src[7..15] (and SELF) + dst4[0..4] FROM \nothing (and SELF) + [5..14] FROM src[2..11] + [15..19] FROM src[12..19] (and SELF) + dst5[0..4] FROM src[0..4] (and SELF) + {[5..19]; [25..33]} FROM src[5..13] (and SELF) + [20..24] FROM src[0..13] (and SELF) + {[34..39]; [89..99]} FROM \nothing (and SELF) + [40] FROM src[0] (and SELF) + {[41..69]; [71..88]} FROM src[1..18] (and SELF) + [70] FROM src[0..18] (and SELF) + tm[0] FROM \nothing + [1..999] FROM \nothing (and SELF) + um[0] FROM \nothing + {[1..998]; [999][bits 0 to 15]} FROM \nothing (and SELF) + ttyp[0] FROM \nothing + [1..999] FROM \nothing (and SELF) + v1{.x; .y} FROM \nothing + v2 FROM v1{.p; .padding[0..23]} + v3 FROM v2; t{[0]; [3]} + v4{.x; {.p; .padding[0..23]}} FROM v1{.p; .padding[0..3]} (and SELF) + .y FROM \nothing + v5 FROM v1{.p; .padding[0..3]}; v4{.x; {.p; .padding[0..3]}} (and SELF) + t[1] FROM v2 + [2] FROM t[0] + [3] FROM v2 (and SELF) +[from] call to main_uninit at tests/non-free/memcpy.c:217 (by main_all): + NO EFFECTS +[from] call to main_local at tests/non-free/memcpy.c:218 (by main_all): + NO EFFECTS +[from] entry point: + NON TERMINATING - NO EFFECTS +[from] ====== END OF CALLWISE DEPENDENCIES ====== +[inout] Out (internal) for function buggy: + c; p; tmp +[inout] Inputs for function buggy: + maybe; "d"[bits 0 to 7] +[inout] InOut (internal) for function buggy: + Operational inputs: + dest; maybe; "d"[bits 0 to 7] + Operational inputs on termination: + dest; maybe; "d"[bits 0 to 7] + Sure outputs: + p; tmp +[inout] Out (internal) for function init: + src[0..19]; dst1[0..19]; dst2[0..19]; dst3[0..19]; dst4[0..19]; + dst5[0..99]; j +[inout] Inputs for function init: + \nothing +[inout] InOut (internal) for function init: + Operational inputs: + \nothing + Operational inputs on termination: + \nothing + Sure outputs: + j +[inout] Out (internal) for function main_local: + p; q +[inout] Inputs for function main_local: + \nothing +[inout] InOut (internal) for function main_local: + Operational inputs: + dest + Operational inputs on termination: + dest + Sure outputs: + p; q +[inout] Out (internal) for function main_uninit: + a[0..9]; b[0..24]; r; tmp; tmp_0; tmp_1; tmp_2 +[inout] Inputs for function main_uninit: + maybe +[inout] InOut (internal) for function main_uninit: + Operational inputs: + dest; maybe; l; u; a[0..24]; b[11] + Operational inputs on termination: + dest; maybe; l; u; a[0..24]; b[11] + Sure outputs: + r +[inout] Out (internal) for function many: + tm[0..999]; um{[0..998]; [999][bits 0 to 15]}; ttyp[0..999]; s[0..4]; + p; ty{.ts; .ti} +[inout] Inputs for function many: + maybe +[inout] InOut (internal) for function many: + Operational inputs: + dest; maybe; ty.[bits 16 to 31] + Operational inputs on termination: + dest; maybe; ty.[bits 16 to 31] + Sure outputs: + tm[0]; um[0]; ttyp[0]; s[0..4]; p; ty{.ts; .ti} +[inout] Out (internal) for function main: + src[0..19]; dst1[0..19]; dst2[0..19]; dst3[0..19]; dst4[0..19]; + dst5[0..99]; tm[0..999]; um{[0..998]; [999][bits 0 to 15]}; ttyp[0..999]; + v1{.x; .y}; v2; v3; v4; v5; t[1..3]; b; x; p; ptop1[4..799]; pptop; + ptop2[2..749]; ptop3[2..797]; ptop4[2..798]; garbledsize[10..99]; + pgarbledsize; dstmaybesize1[0..14]; dstmaybesize2[0..5]; maybesize +[inout] Inputs for function main: + i; src[0..19]; maybe; v1; v2; v4; t[0..3]; "d"[bits 0 to 7] +[inout] InOut (internal) for function main: + Operational inputs: + dest; i; src[0..19]; maybe; v1{.p; .padding[0..23]}; v2; + v4{.x; {.p; .padding[0..3]}}; t{[0]; [3]}; a; b; "d"[bits 0 to 7] + Operational inputs on termination: + dest; src[0..19]; maybe; v1{.p; .padding[0..23]}; v2; + v4{.x; {.p; .padding[0..3]}}; t{[0]; [3]}; a; b; "d"[bits 0 to 7] + Sure outputs: + dst1[1..5]; dst2[1..10]; dst3[5..9]; dst4[5..14]; tm[0]; um[0]; ttyp[0]; + v1{.x; .y}; v2; v3; v4.y; t[1..2]; b; p; pptop; pgarbledsize; maybesize +[inout] Out (internal) for function main_all: + src[0..19]; dst1[0..19]; dst2[0..19]; dst3[0..19]; dst4[0..19]; + dst5[0..99]; tm[0..999]; um{[0..998]; [999][bits 0 to 15]}; ttyp[0..999]; + v1{.x; .y}; v2; v3; v4; v5; t[1..3] +[inout] Inputs for function main_all: + i; src[0..19]; maybe; v1; v2; v4; t[0..3]; "d"[bits 0 to 7] +[inout] InOut (internal) for function main_all: + Operational inputs: + dest; i; src[0..19]; maybe; v1{.p; .padding[0..23]}; v2; + v4{.x; {.p; .padding[0..3]}}; t{[0]; [3]}; l; u; "d"[bits 0 to 7] + Operational inputs on termination: + \nothing + Sure outputs: + ANYTHING(origin:Unknown) +[report] Computing properties status... + +-------------------------------------------------------------------------------- +--- Properties of Function 'Frama_C_make_unknown' +-------------------------------------------------------------------------------- + +[ Extern ] Post-condition (file share/libc/__fc_builtin.h, line 34) + Unverifiable but considered Valid. +[ Extern ] Assigns (file share/libc/__fc_builtin.h, line 32) + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/__fc_builtin.h, line 32) + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/__fc_builtin.h, line 33) + Unverifiable but considered Valid. +[ Valid ] Default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'Frama_C_nondet' +-------------------------------------------------------------------------------- + +[ Extern ] Post-condition (file share/libc/__fc_builtin.h, line 40) + Unverifiable but considered Valid. +[ Extern ] Assigns (file share/libc/__fc_builtin.h, line 38) + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/__fc_builtin.h, line 38) + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/__fc_builtin.h, line 39) + Unverifiable but considered Valid. +[ Valid ] Default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'Frama_C_nondet_ptr' +-------------------------------------------------------------------------------- + +[ Extern ] Post-condition (file share/libc/__fc_builtin.h, line 46) + Unverifiable but considered Valid. +[ Extern ] Assigns (file share/libc/__fc_builtin.h, line 44) + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/__fc_builtin.h, line 44) + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/__fc_builtin.h, line 45) + Unverifiable but considered Valid. +[ Valid ] Default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'Frama_C_interval' +-------------------------------------------------------------------------------- + +[ Extern ] Post-condition (file share/libc/__fc_builtin.h, line 53) + Unverifiable but considered Valid. +[ Extern ] Assigns (file share/libc/__fc_builtin.h, line 51) + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/__fc_builtin.h, line 51) + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/__fc_builtin.h, line 52) + Unverifiable but considered Valid. +[ Valid ] Default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'Frama_C_interval_split' +-------------------------------------------------------------------------------- + +[ Extern ] Post-condition (file share/libc/__fc_builtin.h, line 60) + Unverifiable but considered Valid. +[ Extern ] Assigns (file share/libc/__fc_builtin.h, line 58) + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/__fc_builtin.h, line 58) + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/__fc_builtin.h, line 59) + Unverifiable but considered Valid. +[ Valid ] Default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'Frama_C_unsigned_char_interval' +-------------------------------------------------------------------------------- + +[ Extern ] Post-condition (file share/libc/__fc_builtin.h, line 67) + Unverifiable but considered Valid. +[ Extern ] Assigns (file share/libc/__fc_builtin.h, line 65) + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/__fc_builtin.h, line 65) + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/__fc_builtin.h, line 66) + Unverifiable but considered Valid. +[ Valid ] Default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'Frama_C_char_interval' +-------------------------------------------------------------------------------- + +[ Extern ] Post-condition (file share/libc/__fc_builtin.h, line 75) + Unverifiable but considered Valid. +[ Extern ] Assigns (file share/libc/__fc_builtin.h, line 73) + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/__fc_builtin.h, line 73) + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/__fc_builtin.h, line 74) + Unverifiable but considered Valid. +[ Valid ] Default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'Frama_C_unsigned_short_interval' +-------------------------------------------------------------------------------- + +[ Extern ] Post-condition (file share/libc/__fc_builtin.h, line 82) + Unverifiable but considered Valid. +[ Extern ] Assigns (file share/libc/__fc_builtin.h, line 80) + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/__fc_builtin.h, line 80) + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/__fc_builtin.h, line 81) + Unverifiable but considered Valid. +[ Valid ] Default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'Frama_C_short_interval' +-------------------------------------------------------------------------------- + +[ Extern ] Post-condition (file share/libc/__fc_builtin.h, line 89) + Unverifiable but considered Valid. +[ Extern ] Assigns (file share/libc/__fc_builtin.h, line 87) + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/__fc_builtin.h, line 87) + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/__fc_builtin.h, line 88) + Unverifiable but considered Valid. +[ Valid ] Default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'Frama_C_unsigned_int_interval' +-------------------------------------------------------------------------------- + +[ Extern ] Post-condition (file share/libc/__fc_builtin.h, line 97) + Unverifiable but considered Valid. +[ Extern ] Assigns (file share/libc/__fc_builtin.h, line 95) + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/__fc_builtin.h, line 95) + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/__fc_builtin.h, line 96) + Unverifiable but considered Valid. +[ Valid ] Default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'Frama_C_int_interval' +-------------------------------------------------------------------------------- + +[ Extern ] Post-condition (file share/libc/__fc_builtin.h, line 104) + Unverifiable but considered Valid. +[ Extern ] Assigns (file share/libc/__fc_builtin.h, line 102) + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/__fc_builtin.h, line 102) + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/__fc_builtin.h, line 103) + Unverifiable but considered Valid. +[ Valid ] Default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'Frama_C_unsigned_long_interval' +-------------------------------------------------------------------------------- + +[ Extern ] Post-condition (file share/libc/__fc_builtin.h, line 112) + Unverifiable but considered Valid. +[ Extern ] Assigns (file share/libc/__fc_builtin.h, line 110) + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/__fc_builtin.h, line 110) + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/__fc_builtin.h, line 111) + Unverifiable but considered Valid. +[ Valid ] Default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'Frama_C_long_interval' +-------------------------------------------------------------------------------- + +[ Extern ] Post-condition (file share/libc/__fc_builtin.h, line 120) + Unverifiable but considered Valid. +[ Extern ] Assigns (file share/libc/__fc_builtin.h, line 118) + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/__fc_builtin.h, line 118) + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/__fc_builtin.h, line 119) + Unverifiable but considered Valid. +[ Valid ] Default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'Frama_C_unsigned_long_long_interval' +-------------------------------------------------------------------------------- + +[ Extern ] Post-condition (file share/libc/__fc_builtin.h, line 128) + Unverifiable but considered Valid. +[ Extern ] Assigns (file share/libc/__fc_builtin.h, line 126) + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/__fc_builtin.h, line 126) + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/__fc_builtin.h, line 127) + Unverifiable but considered Valid. +[ Valid ] Default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'Frama_C_long_long_interval' +-------------------------------------------------------------------------------- + +[ Extern ] Post-condition (file share/libc/__fc_builtin.h, line 136) + Unverifiable but considered Valid. +[ Extern ] Assigns (file share/libc/__fc_builtin.h, line 134) + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/__fc_builtin.h, line 134) + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/__fc_builtin.h, line 135) + Unverifiable but considered Valid. +[ Valid ] Default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'Frama_C_float_interval' +-------------------------------------------------------------------------------- + +[ Extern ] Post-condition (file share/libc/__fc_builtin.h, line 145) + Unverifiable but considered Valid. +[ Extern ] Assigns (file share/libc/__fc_builtin.h, line 143) + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/__fc_builtin.h, line 143) + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/__fc_builtin.h, line 144) + Unverifiable but considered Valid. +[ Valid ] Default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'Frama_C_double_interval' +-------------------------------------------------------------------------------- + +[ Extern ] Post-condition (file share/libc/__fc_builtin.h, line 153) + Unverifiable but considered Valid. +[ Extern ] Assigns (file share/libc/__fc_builtin.h, line 151) + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/__fc_builtin.h, line 151) + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/__fc_builtin.h, line 152) + Unverifiable but considered Valid. +[ Valid ] Default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'Frama_C_memcpy' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns (file share/libc/__fc_builtin.h, line 158) + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/__fc_builtin.h, line 158) + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/__fc_builtin.h, line 159) + Unverifiable but considered Valid. +[ Valid ] Default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'Frama_C_memset' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns (file share/libc/__fc_builtin.h, line 163) + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/__fc_builtin.h, line 163) + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/__fc_builtin.h, line 163) + Unverifiable but considered Valid. +[ Valid ] Default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'Frama_C_abort' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns nothing + Unverifiable but considered Valid. +[ Valid ] Default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'Frama_C_offset' +-------------------------------------------------------------------------------- + +[ Extern ] Assigns nothing + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/__fc_builtin.h, line 172) + Unverifiable but considered Valid. +[ Valid ] Default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'buggy' +-------------------------------------------------------------------------------- + +[ - ] Assertion 'Value,logic_mem_access' (file tests/non-free/memcpy.c, line 28) + tried with Value. + +-------------------------------------------------------------------------------- +--- Properties of Function 'many' +-------------------------------------------------------------------------------- + +[ - ] Assertion (file tests/non-free/memcpy.c, line 44) + tried with Value. + +-------------------------------------------------------------------------------- +--- Properties of Function 'main' +-------------------------------------------------------------------------------- + +[ - ] Assertion (file tests/non-free/memcpy.c, line 67) + tried with Value. +[ - ] Assertion (file tests/non-free/memcpy.c, line 72) + tried with Value. +[ - ] Assertion (file tests/non-free/memcpy.c, line 103) + tried with Value. +[ - ] Assertion (file tests/non-free/memcpy.c, line 150) + tried with Value. +[ - ] Assertion (file tests/non-free/memcpy.c, line 152) + tried with Value. +[ - ] Assertion 'Value,logic_mem_access' (file tests/non-free/memcpy.c, line 70) + tried with Value. +[ - ] Assertion 'Value,logic_mem_access' (file tests/non-free/memcpy.c, line 75) + tried with Value. +[ - ] Assertion 'Value,logic_mem_access' (file tests/non-free/memcpy.c, line 87) + tried with Value. +[ - ] Assertion 'Value,logic_mem_access' (file tests/non-free/memcpy.c, line 89) + tried with Value. +[ - ] Assertion 'Value,logic_mem_access' (file tests/non-free/memcpy.c, line 91) + tried with Value. +[ - ] Assertion 'Value,logic_mem_access' (file tests/non-free/memcpy.c, line 96) + tried with Value. +[ - ] Assertion 'Value,logic_mem_access' (file tests/non-free/memcpy.c, line 96) + tried with Value. +[ - ] Assertion 'Value,logic_mem_access' (file tests/non-free/memcpy.c, line 114) + tried with Value. +[ - ] Assertion 'Value,logic_mem_access' (file tests/non-free/memcpy.c, line 122) + tried with Value. +[ - ] Assertion 'Value,logic_mem_access' (file tests/non-free/memcpy.c, line 131) + tried with Value. +[ - ] Assertion 'Value,logic_mem_access' (file tests/non-free/memcpy.c, line 140) + tried with Value. +[ - ] Assertion 'Value,logic_mem_access' (file tests/non-free/memcpy.c, line 145) + tried with Value. +[ - ] Assertion 'Value,logic_mem_access' (file tests/non-free/memcpy.c, line 145) + tried with Value. +[ - ] Assertion 'Value,logic_mem_access' (file tests/non-free/memcpy.c, line 151) + tried with Value. +[ - ] Assertion 'Value,logic_mem_access' (file tests/non-free/memcpy.c, line 151) + tried with Value. + +-------------------------------------------------------------------------------- +--- Properties of Function 'itv' +-------------------------------------------------------------------------------- + +[ Extern ] Post-condition (file tests/non-free/memcpy.c, line 158) + Unverifiable but considered Valid. +[ Extern ] Assigns nothing + Unverifiable but considered Valid. +[ Extern ] Froms (file tests/non-free/memcpy.c, line 157) + Unverifiable but considered Valid. +[ Valid ] Default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'make_unknown' +-------------------------------------------------------------------------------- + +[ Extern ] Post-condition (file tests/non-free/memcpy.c, line 163) + Unverifiable but considered Valid. +[ Valid ] Pre-condition (file tests/non-free/memcpy.c, line 161) + by Call Preconditions. +[ Extern ] Assigns (file tests/non-free/memcpy.c, line 162) + Unverifiable but considered Valid. +[ Extern ] Froms (file tests/non-free/memcpy.c, line 162) + Unverifiable but considered Valid. +[ Valid ] Default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'main_uninit' +-------------------------------------------------------------------------------- + +[ Valid ] Assertion (file tests/non-free/memcpy.c, line 173) + by Value. +[ Valid ] Assertion (file tests/non-free/memcpy.c, line 175) + by Value. +[ Valid ] Assertion (file tests/non-free/memcpy.c, line 180) + by Value. +[ Valid ] Assertion (file tests/non-free/memcpy.c, line 188) + by Value. +[ Valid ] Assertion (file tests/non-free/memcpy.c, line 191) + by Value. +[ Valid ] Assertion (file tests/non-free/memcpy.c, line 199) + by Value. +[ - ] Assertion 'Value,initialisation' (file tests/non-free/memcpy.c, line 182) + tried with Value. +[ - ] Assertion 'Value,initialisation' (file tests/non-free/memcpy.c, line 192) + tried with Value. +[ - ] Assertion 'Value,initialisation' (file tests/non-free/memcpy.c, line 201) + tried with Value. +[ Valid ] Instance of 'Pre-condition (file tests/non-free/memcpy.c, line 161)' at call 'make_unknown' (file tests/non-free/memcpy.c, line 178) + + by Value. +[ Valid ] Instance of 'Pre-condition (file tests/non-free/memcpy.c, line 161)' at call 'make_unknown' (file tests/non-free/memcpy.c, line 185) + + by Value. +[ Valid ] Instance of 'Pre-condition (file tests/non-free/memcpy.c, line 161)' at call 'make_unknown' (file tests/non-free/memcpy.c, line 196) + + by Value. +[ Valid ] Instance of 'Pre-condition (file tests/non-free/memcpy.c, line 161)' at call 'make_unknown' (file tests/non-free/memcpy.c, line 197) + + by Value. + +-------------------------------------------------------------------------------- +--- Status Report Summary +-------------------------------------------------------------------------------- + 34 Completely validated + 83 Considered valid + 25 To be validated + 142 Total +-------------------------------------------------------------------------------- diff --git a/tests/non-free/oracle_symblocs/memcpy2.err.oracle b/tests/non-free/oracle_symblocs/memcpy2.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/non-free/oracle_symblocs/memcpy2.res.oracle b/tests/non-free/oracle_symblocs/memcpy2.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..9e4e9a3a1dfe97d93267bab7d46eb56d61117271 --- /dev/null +++ b/tests/non-free/oracle_symblocs/memcpy2.res.oracle @@ -0,0 +1,69 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/non-free/memcpy2.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + Frama_C_entropy_source ∈ [--..--] +[value] Call to builtin bzero(({{ (unsigned char *)&s }},{512})) +[value] computing for function Frama_C_interval <- main. + Called from tests/non-free/memcpy2.c:9. +[value] using specification for function Frama_C_interval +share/libc/__fc_builtin.h:50:[value] function Frama_C_interval: precondition got status valid. +[value] Done for function Frama_C_interval +tests/non-free/memcpy2.c:10:[value] Call to builtin memcpy(({{ (void *)&t }},{{ (void const *)&s }},[0..511])) +[value] DUMPING STATE of file tests/non-free/memcpy2.c line 12 + Frama_C_entropy_source ∈ [--..--] + c ∈ [--..--] + v ∈ {{ NULL ; &S_v[0] }} + t[0..510] ∈ {0} or UNINITIALIZED + [511] ∈ UNINITIALIZED + s[0..511] ∈ {0} + l ∈ [0..511] + __retres ∈ UNINITIALIZED + S_v[0] ∈ {{ NULL ; &S_0_S_v[0] }} + [1] ∈ {{ NULL ; &S_1_S_v[0] }} + S_0_S_v[0..1] ∈ [--..--] + S_1_S_v[0..1] ∈ [--..--] + =END OF DUMP== +[value] computing for function Frama_C_interval <- main. + Called from tests/non-free/memcpy2.c:14. +[value] Done for function Frama_C_interval +tests/non-free/memcpy2.c:15:[value] Call to builtin memcpy(({{ (void *)&t }},{{ (void const *)&s }},[0..512])) +[value] computing for function Frama_C_interval <- main. + Called from tests/non-free/memcpy2.c:17. +[value] Done for function Frama_C_interval +tests/non-free/memcpy2.c:18:[value] Call to builtin memcpy(({{ (void *)&t }},{{ (void const *)&s }},[1..512])) +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + Frama_C_entropy_source ∈ [--..--] + t[0] ∈ {0} + [1..511] ∈ {0} or UNINITIALIZED + s[0..511] ∈ {0} + l ∈ [1..512] + __retres ∈ {0} +[from] Computing for function main +[from] Computing for function Frama_C_bzero <-main +[from] Done for function Frama_C_bzero +[from] Computing for function Frama_C_interval <-main +[from] Done for function Frama_C_interval +[from] Computing for function Frama_C_memcpy <-main +[from] Done for function Frama_C_memcpy +[from] Computing for function Frama_C_dump_each <-main +[from] Done for function Frama_C_dump_each +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function Frama_C_interval: + Frama_C_entropy_source FROM Frama_C_entropy_source (and SELF) + \result FROM Frama_C_entropy_source; min; max +[from] Function main: + Frama_C_entropy_source FROM Frama_C_entropy_source (and SELF) + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + Frama_C_entropy_source; t[0..511]; s[0..511]; l; __retres +[inout] Inputs for function main: + Frama_C_entropy_source diff --git a/tests/non-free/oracle_symblocs/memcpy_invalid.err.oracle b/tests/non-free/oracle_symblocs/memcpy_invalid.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/non-free/oracle_symblocs/memcpy_invalid.res.oracle b/tests/non-free/oracle_symblocs/memcpy_invalid.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..a52c9bff1754d7d7d6b77e7df36d351b6749b4f8 --- /dev/null +++ b/tests/non-free/oracle_symblocs/memcpy_invalid.res.oracle @@ -0,0 +1,61 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/non-free/memcpy_invalid.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] computing for function test <- main. + Called from tests/non-free/memcpy_invalid.i:22. +[value] computing for function Frama_C_interval <- test <- main. + Called from tests/non-free/memcpy_invalid.i:16. +[value] using specification for function Frama_C_interval +[value] Done for function Frama_C_interval +tests/non-free/memcpy_invalid.i:17:[value] Call to builtin memcpy(({{ (void *)&dst }}, + {{ &src + {0; 2; 4; 6; 8; 10; 12; 14} }}, + {1; 4294967283; 4294967285; 4294967287; 4294967289; + 4294967291; 4294967293; 4294967295})) +tests/non-free/memcpy_invalid.i:17:[value] warning: out of bounds read. + assert + \valid_read((&src+i)+(0 .. (unsigned long)((unsigned long)sizeof(src)-i)-1)); +[value] Recording results for test +[from] Computing for function test +[from] Done for function test +[value] Done for function test +[value] computing for function test <- main. + Called from tests/non-free/memcpy_invalid.i:23. +[value] computing for function Frama_C_interval <- test <- main. + Called from tests/non-free/memcpy_invalid.i:16. +[value] Done for function Frama_C_interval +tests/non-free/memcpy_invalid.i:17:[value] Call to builtin memcpy(({{ (void *)&dst }},{{ &src + [0..16],0%2 }}, + [1..4294967295],1%2)) +tests/non-free/memcpy_invalid.i:17:[value] warning: out of bounds write. + assert \valid(&dst+(0 .. (unsigned long)((unsigned long)sizeof(src)-i)-1)); +[value] Recording results for test +[from] Computing for function test +[from] Done for function test +[value] Done for function test +[value] Recording results for main +[from] Computing for function main +[from] Done for function main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function test: + dst ∈ {0} + src ∈ {0} + i ∈ [0..16],0%2 +[value:final-states] Values at end of function main: + __retres ∈ {0} +[from] ====== DISPLAYING CALLWISE DEPENDENCIES ====== +[from] call to Frama_C_interval at tests/non-free/memcpy_invalid.i:16 (by test): + \result FROM min; max +[from] call to memcpy at tests/non-free/memcpy_invalid.i:17 (by test): + dst FROM src + \result FROM dst +[from] call to test at tests/non-free/memcpy_invalid.i:22 (by main): + NO EFFECTS +[from] call to test at tests/non-free/memcpy_invalid.i:23 (by main): + NO EFFECTS +[from] entry point: + \result FROM \nothing +[from] ====== END OF CALLWISE DEPENDENCIES ====== diff --git a/tests/non-free/oracle_symblocs/memexec-malloc.err.oracle b/tests/non-free/oracle_symblocs/memexec-malloc.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/non-free/oracle_symblocs/memexec-malloc.res.oracle b/tests/non-free/oracle_symblocs/memexec-malloc.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..b7903ebe95f89e0843cc117737515c139e53ecef --- /dev/null +++ b/tests/non-free/oracle_symblocs/memexec-malloc.res.oracle @@ -0,0 +1,112 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/non-free/memexec-malloc.c (with preprocessing) +tests/non-free/memexec-malloc.c:15:[kernel] warning: Calling undeclared function Frama_C_alloc_by_stack. Old style K&R code? +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + t[0..1999] ∈ {0} +[value] computing for function f <- main. + Called from tests/non-free/memexec-malloc.c:23. +tests/non-free/memexec-malloc.c:10:[value] entering loop for the first time +[value] Recording results for f +[value] Done for function f +[value] computing for function f <- main. + Called from tests/non-free/memexec-malloc.c:24. +[value] Recording results for f +[value] Done for function f +[value] computing for function f <- main. + Called from tests/non-free/memexec-malloc.c:25. +[value] Recording results for f +[value] Done for function f +[value] Called Frama_C_show_each([0..1999]) +[value] Called Frama_C_show_each([0..1999]) +[value] Called Frama_C_show_each([0..1999]) +[value] computing for function f <- main. + Called from tests/non-free/memexec-malloc.c:29. +[value] Recording results for f +[value] Done for function f +[value] computing for function alloc <- main. + Called from tests/non-free/memexec-malloc.c:31. +tests/non-free/memexec-malloc.c:15:[value] allocating variable __malloc_main_l31 +[value] Recording results for alloc +[value] Done for function alloc +[value] computing for function alloc <- main. + Called from tests/non-free/memexec-malloc.c:32. +tests/non-free/memexec-malloc.c:15:[value] allocating variable __malloc_main_l32 +[value] Recording results for alloc +[value] Done for function alloc +[value] computing for function k <- main. + Called from tests/non-free/memexec-malloc.c:34. +[value] computing for function alloc <- k <- main. + Called from tests/non-free/memexec-malloc.c:19. +tests/non-free/memexec-malloc.c:15:[value] allocating variable __malloc_k_l19 +[value] Recording results for alloc +[value] Done for function alloc +[value] Recording results for k +[value] Done for function k +[value] computing for function k <- main. + Called from tests/non-free/memexec-malloc.c:35. +[value] computing for function alloc <- k <- main. + Called from tests/non-free/memexec-malloc.c:19. +tests/non-free/memexec-malloc.c:15:[value] allocating variable __malloc_k_l19_0 +[value] Recording results for alloc +[value] Done for function alloc +[value] Recording results for k +[value] Done for function k +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +tests/non-free/memexec-malloc.c:15:[kernel] warning: Neither code nor specification for function Frama_C_alloc_by_stack, generating default assigns from the prototype +[value:final-states] Values at end of function alloc: + __retres ∈ + {{ &__malloc_main_l31 ; &__malloc_main_l32 ; &__malloc_k_l19 ; + &__malloc_k_l19_0 }} +[value:final-states] Values at end of function f: + t[0..1999] ∈ [0..1999] + i ∈ {2000} +[value:final-states] Values at end of function k: + +[value:final-states] Values at end of function main: + t[0..1999] ∈ [0..1999] + p1 ∈ {{ &__malloc_main_l31 }} + p2 ∈ {{ &__malloc_main_l32 }} + p3 ∈ {{ &__malloc_k_l19 }} + p4 ∈ {{ &__malloc_k_l19_0 }} +[from] Computing for function alloc +[from] Computing for function Frama_C_alloc_by_stack <-alloc +[from] Done for function Frama_C_alloc_by_stack +[from] Done for function alloc +[from] Computing for function f +[from] Done for function f +[from] Computing for function k +[from] Done for function k +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function alloc: + \result FROM \nothing +[from] Function f: + t[0..1999] FROM \nothing (and SELF) +[from] Function k: + \result FROM \nothing +[from] Function main: + t[0..1999] FROM \nothing (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function alloc: + tmp; __retres +[inout] Inputs for function alloc: + \nothing +[inout] Out (internal) for function f: + t[0..1999]; i +[inout] Inputs for function f: + \nothing +[inout] Out (internal) for function k: + tmp +[inout] Inputs for function k: + \nothing +[inout] Out (internal) for function main: + t[0..1999]; p1; p2; p3; p4 +[inout] Inputs for function main: + t[1..2] diff --git a/tests/non-free/oracle_symblocs/memset.err.oracle b/tests/non-free/oracle_symblocs/memset.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/non-free/oracle_symblocs/memset.res.oracle b/tests/non-free/oracle_symblocs/memset.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..f98b826ce4e7a60d37794fad00a44fdf1274b262 --- /dev/null +++ b/tests/non-free/oracle_symblocs/memset.res.oracle @@ -0,0 +1,187 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/non-free/memset.i (no preprocessing) +tests/non-free/memset.i:46:[kernel] warning: A.QUESTION: char * does not match int * (different integer types) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + t1[0..99] ∈ {0} + t2[0..99] ∈ {0} + t3[0..99] ∈ {0} + t4[0..99] ∈ {0} + t5[0..99] ∈ {0} + t6[0..99] ∈ {0} + t7[0..99] ∈ {0} + t8[0..99] ∈ {0} + t9[0..99] ∈ {0} + t10[0..99] ∈ {0} + t11[0..99] ∈ {0} + t12[0..99] ∈ {0} + ts[0..4] ∈ {0} + vol ∈ [--..--] +tests/non-free/memset.i:33:[value] Call to builtin memset(({{ (void *)&t1 }},{17},{400})) +tests/non-free/memset.i:34:[value] Call to builtin memset(({{ garbled mix of &{t2} + (origin: Arithmetic {tests/non-free/memset.i:34}) }}, + {18},{400})) +tests/non-free/memset.i:34:[value:imprecision] Call to builtin precise_memset(({{ garbled mix of &{t2} + (origin: Arithmetic + {tests/non-free/memset.i:34}) }},{18}, + {400})) failed; destination is not exact +tests/non-free/memset.i:34:[value] warning: out of bounds write. + assert + \valid((char *)(&t2[(int)((int *)t2)])+(0 .. (unsigned long)sizeof(t2)-1)); +tests/non-free/memset.i:35:[value] Call to builtin memset(({{ (void *)&t3[10] }},{17},{{ (unsigned long)&t1 }})) +tests/non-free/memset.i:35:[value:imprecision] Call to builtin precise_memset(({{ (void *)&t3[10] }},{17}, + {{ (unsigned long)&t1 }})) failed; size is imprecise +tests/non-free/memset.i:35:[value] warning: out of bounds write. + assert \valid((char *)(&t3[10])+(0 .. (unsigned long)((int *)t1)-1)); +tests/non-free/memset.i:38:[value] Call to builtin memset(({{ (void *)&t4[1] }},{1},{400})) +tests/non-free/memset.i:38:[value] warning: out of bounds write. + assert \valid((char *)(&t4[1])+(0 .. (unsigned long)sizeof(t4)-1)); +tests/non-free/memset.i:41:[value] Call to builtin memset(({{ (void *)&t5 }},{{ (int)&t1 }},{400})) +tests/non-free/memset.i:41:[value:imprecision] Call to builtin precise_memset(({{ (void *)&t5 }},{{ (int)&t1 }},{400})) failed; value to write is imprecise +tests/non-free/memset.i:44:[value] Call to builtin memset(({{ (void *)&t6[10] ; (void *)&t7 }},{34},{16})) +tests/non-free/memset.i:44:[value:imprecision] Call to builtin precise_memset(({{ (void *)&t6[10] ; (void *)&t7 }},{34}, + {16})) failed; destination is not exact +tests/non-free/memset.i:47:[value] Call to builtin memset(({{ NULL ; (void *)&t8 }},{34},{16})) +tests/non-free/memset.i:47:[value:imprecision] Call to builtin precise_memset(({{ NULL ; (void *)&t8 }},{34},{16})) failed; destination is not exact +tests/non-free/memset.i:47:[value] warning: out of bounds write. assert \valid((char *)p+(0 .. (unsigned long)16-1)); +tests/non-free/memset.i:50:[value] entering loop for the first time +tests/non-free/memset.i:54:[value] Call to builtin memset(({{ &t9 + [80..--],0%4 }},{2302},{4})) +tests/non-free/memset.i:54:[value:imprecision] Call to builtin precise_memset(({{ &t9 + [80..--],0%4 }},{2302},{4})) failed; destination is not exact +tests/non-free/memset.i:54:[value] warning: out of bounds write. assert \valid((char *)p+(0 .. (unsigned long)4-1)); +tests/non-free/memset.i:58:[value] Call to builtin memset(({{ (void *)&t10[4] }},{136},{12; 36})) +tests/non-free/memset.i:58:[value:imprecision] Call to builtin precise_memset(({{ (void *)&t10[4] }},{136},{12; 36})) failed; size is imprecise +tests/non-free/memset.i:65:[value] Call to builtin memset(({{ (void *)&t11{[2], [3]} }},{153},{8; 16})) +tests/non-free/memset.i:65:[value:imprecision] Call to builtin precise_memset(({{ (void *)&t11{[2], [3]} }},{153},{8; 16})) failed; size is imprecise +tests/non-free/memset.i:68:[value] Call to builtin memset(({{ (void *)&ts }},{254},{100})) +tests/non-free/memset.i:71:[value] warning: assertion 'Assume' got status unknown. +tests/non-free/memset.i:72:[value] Call to builtin memset(({{ &t12 + [0..384],0%32 }},{1},{4})) +tests/non-free/memset.i:72:[value:imprecision] Call to builtin precise_memset(({{ &t12 + [0..384],0%32 }},{1},{4})) failed; destination is not exact +[value] Recording results for main +[from] Computing for function main +[from] Done for function main +[value] done for function main +tests/non-free/memset.i:38:[value] assertion 'Value,logic_mem_access' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + t1[0..99] ∈ {286331153} + t2[0..99] ∈ [--..--] + t3[0..9] ∈ {0} + [10..99]# ∈ {0; 17} repeated %8 + t5[0..99] ∈ + {{ garbled mix of &{t1} + (origin: Misaligned {tests/non-free/memset.i:41}) }} + t6[0..9] ∈ {0} + [10..13]# ∈ {0; 34} repeated %8 + [14..99] ∈ {0} + t7[0..3]# ∈ {0; 34} repeated %8 + [4..99] ∈ {0} + t8[0..3]# ∈ {0; 34} repeated %8 + [4..99] ∈ {0} + t9[0..19] ∈ {0} + [20..99]# ∈ {0; 254} repeated %8 + t10[0..3] ∈ {0} + [4..6]# ∈ {136} repeated %8 + [7..12]# ∈ {0; 136} repeated %8 + [13..99] ∈ {0} + t11[0..1] ∈ {0} + [2]# ∈ {0; 153} repeated %8 + [3]# ∈ {153} repeated %8 + [4..6]# ∈ {0; 153} repeated %8 + [7..99] ∈ {0} + t12[0..96]# ∈ {0; 1} repeated %8 + [97..99] ∈ {0} + ts[0].f1 ∈ {-2; 0} + [0].[bits 8 to 15] ∈ {0; 254} + [0].f2 ∈ {-258; 0} + [0]{.f3; .f4[0..2]} ∈ {-16843010; 0} + [1].f1 ∈ {-2; 0} + [1].[bits 8 to 15] ∈ {0; 254} + [1].f2 ∈ {-258; 0} + [1]{.f3; .f4[0..2]} ∈ {-16843010; 0} + [2].f1 ∈ {-2; 0} + [2].[bits 8 to 15] ∈ {0; 254} + [2].f2 ∈ {-258; 0} + [2]{.f3; .f4[0..2]} ∈ {-16843010; 0} + [3].f1 ∈ {-2; 0} + [3].[bits 8 to 15] ∈ {0; 254} + [3].f2 ∈ {-258; 0} + [3]{.f3; .f4[0..2]} ∈ {-16843010; 0} + [4].f1 ∈ {-2; 0} + [4].[bits 8 to 15] ∈ {0; 254} + [4].f2 ∈ {-258; 0} + [4]{.f3; .f4[0..2]} ∈ {-16843010; 0} + dst ∈ {{ (void *)&t1 }} + p ∈ {{ &t11{[2], [3]} }} + s ∈ {12; 36} + s1 ∈ {8; 16} + k ∈ [0..12] +[from] ====== DISPLAYING CALLWISE DEPENDENCIES ====== +[from] call to Frama_C_memset at tests/non-free/memset.i:33 (by main): + t1[0..99] FROM v + \result FROM dst +[from] call to Frama_C_memset at tests/non-free/memset.i:34 (by main): + t2[0..99] FROM v (and SELF) + \result FROM dst +[from] call to Frama_C_memset at tests/non-free/memset.i:35 (by main): + t3[10..99] FROM v (and SELF) + \result FROM dst +[from] call to Frama_C_memset at tests/non-free/memset.i:38 (by main): + \result FROM dst +[from] call to Frama_C_memset at tests/non-free/memset.i:41 (by main): + t5[0..99] FROM v + \result FROM dst +[from] call to Frama_C_memset at tests/non-free/memset.i:44 (by main): + t6[10..13] FROM v (and SELF) + t7[0..3] FROM v (and SELF) + \result FROM dst +[from] call to Frama_C_memset at tests/non-free/memset.i:47 (by main): + t8[0..3] FROM v (and SELF) + \result FROM dst +[from] call to Frama_C_memset at tests/non-free/memset.i:54 (by main): + t9[20..99] FROM v (and SELF) + \result FROM dst +[from] call to Frama_C_memset at tests/non-free/memset.i:58 (by main): + t10[4..6] FROM v + [7..12] FROM v (and SELF) + \result FROM dst +[from] call to Frama_C_memset at tests/non-free/memset.i:65 (by main): + t11{[2]; [4..6]} FROM v (and SELF) + [3] FROM v + \result FROM dst +[from] call to Frama_C_memset at tests/non-free/memset.i:68 (by main): + ts[0..4] FROM v + \result FROM dst +[from] call to Frama_C_memset at tests/non-free/memset.i:72 (by main): + t12[0..96] FROM v (and SELF) + \result FROM dst +[from] entry point: + t1[0..99] FROM \nothing + t2[0..99] FROM \nothing (and SELF) + t3[10..99] FROM \nothing (and SELF) + t5[0..99] FROM \nothing + t6[10..13] FROM \nothing (and SELF) + t7[0..3] FROM \nothing (and SELF) + t8[0..3] FROM \nothing (and SELF) + t9[20..99] FROM \nothing (and SELF) + t10[4..6] FROM \nothing + [7..12] FROM \nothing (and SELF) + t11{[2]; [4..6]} FROM \nothing (and SELF) + [3] FROM \nothing + t12[0..96] FROM \nothing (and SELF) + ts[0..4] FROM vol (and SELF) +[from] ====== END OF CALLWISE DEPENDENCIES ====== +[inout] Out (internal) for function main: + t1[0..99]; t2[0..99]; t3[10..99]; t5[0..99]; t6[10..13]; t7[0..3]; + t8[0..3]; t9[20..99]; t10[4..12]; t11[2..6]; t12[0..96]; ts[0..4]; + dst; p; tmp_0; s; s1; k +[inout] Inputs for function main: + t1[0..99]; t2[0..99]; t4[0..99]; ts[0..4]; vol +[inout] InOut (internal) for function main: + Operational inputs: + dst; v; vol + Operational inputs on termination: + dst; v; vol + Sure outputs: + t1[0..99]; t5[0..99]; t10[4..6]; t11[3]; dst; p; tmp_0; s; s1; k diff --git a/tests/non-free/oracle_symblocs/memset_block.0.err.oracle b/tests/non-free/oracle_symblocs/memset_block.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/non-free/oracle_symblocs/memset_block.0.res.oracle b/tests/non-free/oracle_symblocs/memset_block.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..7cf7ccfc49d1ddb4b77192860ba2fbe97d3e5899 --- /dev/null +++ b/tests/non-free/oracle_symblocs/memset_block.0.res.oracle @@ -0,0 +1,56 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/non-free/memset_block.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] Call to builtin bzero(({{ (unsigned char *)&TS }},{1392})) +[value] Call to builtin bzero(({{ (unsigned char *)&T2 }},{600})) +[value] Call to builtin bzero(({{ (unsigned char *)&T }},{40})) +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + S[0] ∈ {49} + [1] ∈ {50} + [2] ∈ {51} + [3] ∈ {52} + [4] ∈ {53} + TS[0].x ∈ {1} + [0].y ∈ {3} + [0].name[0] ∈ {175304776} + {[0].name[1..9]; [1..28]} ∈ {0} + PC[0] ∈ {108} + [1] ∈ {107} + [2] ∈ {106} + [3] ∈ {108} + [4] ∈ {106} + [5] ∈ {0} + T2[0].x2 ∈ {1} + [0].y2 ∈ {2} + [0].[bits 48 to 63] ∈ {0} + [0].ptr ∈ {{ &PC[0] }} + [1].x2 ∈ {1} + [1].y2 ∈ {2} + {[1]{.ptr; .[bits 48 to 63]}; [2..49]} ∈ {0} + T[0] ∈ {1} + [1..9] ∈ {0} + U[0] ∈ {3} + [1] ∈ {4} + x ∈ {8} + y ∈ {40} + __retres ∈ {8} +[from] Computing for function main +[from] Computing for function Frama_C_bzero <-main +[from] Done for function Frama_C_bzero +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + S[0..4]; TS[0..28]; PC[0..5]; T2[0..49]; T[0..9]; U[0..1]; x; y; __retres +[inout] Inputs for function main: + \nothing diff --git a/tests/non-free/oracle_symblocs/memset_block.1.err.oracle b/tests/non-free/oracle_symblocs/memset_block.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/non-free/oracle_symblocs/memset_block.1.res.oracle b/tests/non-free/oracle_symblocs/memset_block.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..62a7327347887b9776e8acfdc389a4e9392ac203 --- /dev/null +++ b/tests/non-free/oracle_symblocs/memset_block.1.res.oracle @@ -0,0 +1,155 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/non-free/memset_block.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +tests/non-free/memset_block.i:10:[value] Call to builtin copy_block(({{ (unsigned char *)&TS[0].name }},{4},{10})) +tests/non-free/memset_block.i:10:[value] Call to builtin copy_block(({{ (unsigned char *)&TS }},{48},{29})) +tests/non-free/memset_block.i:14:[value] Call to builtin copy_block(({{ (unsigned char *)&T2 }},{12},{50})) +tests/non-free/memset_block.i:16:[value] Call to builtin copy_block(({{ (unsigned char *)&T }},{4},{10})) +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + S[0] ∈ {49} + [1] ∈ {50} + [2] ∈ {51} + [3] ∈ {52} + [4] ∈ {53} + TS[0].x ∈ {1} + [0].y ∈ {3} + [0].name[0] ∈ {175304776} + {[0].name[1..9]; [1..28]} ∈ {0} + PC[0] ∈ {108} + [1] ∈ {107} + [2] ∈ {106} + [3] ∈ {108} + [4] ∈ {106} + [5] ∈ {0} + T2[0].x2 ∈ {1} + [0].y2 ∈ {2} + [0].[bits 48 to 63] ∈ UNINITIALIZED + [0].ptr ∈ {{ &PC[0] }} + [1].x2 ∈ {1} + [1].y2 ∈ {2} + [1].[bits 48 to 63] ∈ UNINITIALIZED + {[1].ptr; [2]{.x2; .y2}} ∈ {0} + [2].[bits 48 to 63] ∈ UNINITIALIZED + {[2].ptr; [3]{.x2; .y2}} ∈ {0} + [3].[bits 48 to 63] ∈ UNINITIALIZED + {[3].ptr; [4]{.x2; .y2}} ∈ {0} + [4].[bits 48 to 63] ∈ UNINITIALIZED + {[4].ptr; [5]{.x2; .y2}} ∈ {0} + [5].[bits 48 to 63] ∈ UNINITIALIZED + {[5].ptr; [6]{.x2; .y2}} ∈ {0} + [6].[bits 48 to 63] ∈ UNINITIALIZED + {[6].ptr; [7]{.x2; .y2}} ∈ {0} + [7].[bits 48 to 63] ∈ UNINITIALIZED + {[7].ptr; [8]{.x2; .y2}} ∈ {0} + [8].[bits 48 to 63] ∈ UNINITIALIZED + {[8].ptr; [9]{.x2; .y2}} ∈ {0} + [9].[bits 48 to 63] ∈ UNINITIALIZED + {[9].ptr; [10]{.x2; .y2}} ∈ {0} + [10].[bits 48 to 63] ∈ UNINITIALIZED + {[10].ptr; [11]{.x2; .y2}} ∈ {0} + [11].[bits 48 to 63] ∈ UNINITIALIZED + {[11].ptr; [12]{.x2; .y2}} ∈ {0} + [12].[bits 48 to 63] ∈ UNINITIALIZED + {[12].ptr; [13]{.x2; .y2}} ∈ {0} + [13].[bits 48 to 63] ∈ UNINITIALIZED + {[13].ptr; [14]{.x2; .y2}} ∈ {0} + [14].[bits 48 to 63] ∈ UNINITIALIZED + {[14].ptr; [15]{.x2; .y2}} ∈ {0} + [15].[bits 48 to 63] ∈ UNINITIALIZED + {[15].ptr; [16]{.x2; .y2}} ∈ {0} + [16].[bits 48 to 63] ∈ UNINITIALIZED + {[16].ptr; [17]{.x2; .y2}} ∈ {0} + [17].[bits 48 to 63] ∈ UNINITIALIZED + {[17].ptr; [18]{.x2; .y2}} ∈ {0} + [18].[bits 48 to 63] ∈ UNINITIALIZED + {[18].ptr; [19]{.x2; .y2}} ∈ {0} + [19].[bits 48 to 63] ∈ UNINITIALIZED + {[19].ptr; [20]{.x2; .y2}} ∈ {0} + [20].[bits 48 to 63] ∈ UNINITIALIZED + {[20].ptr; [21]{.x2; .y2}} ∈ {0} + [21].[bits 48 to 63] ∈ UNINITIALIZED + {[21].ptr; [22]{.x2; .y2}} ∈ {0} + [22].[bits 48 to 63] ∈ UNINITIALIZED + {[22].ptr; [23]{.x2; .y2}} ∈ {0} + [23].[bits 48 to 63] ∈ UNINITIALIZED + {[23].ptr; [24]{.x2; .y2}} ∈ {0} + [24].[bits 48 to 63] ∈ UNINITIALIZED + {[24].ptr; [25]{.x2; .y2}} ∈ {0} + [25].[bits 48 to 63] ∈ UNINITIALIZED + {[25].ptr; [26]{.x2; .y2}} ∈ {0} + [26].[bits 48 to 63] ∈ UNINITIALIZED + {[26].ptr; [27]{.x2; .y2}} ∈ {0} + [27].[bits 48 to 63] ∈ UNINITIALIZED + {[27].ptr; [28]{.x2; .y2}} ∈ {0} + [28].[bits 48 to 63] ∈ UNINITIALIZED + {[28].ptr; [29]{.x2; .y2}} ∈ {0} + [29].[bits 48 to 63] ∈ UNINITIALIZED + {[29].ptr; [30]{.x2; .y2}} ∈ {0} + [30].[bits 48 to 63] ∈ UNINITIALIZED + {[30].ptr; [31]{.x2; .y2}} ∈ {0} + [31].[bits 48 to 63] ∈ UNINITIALIZED + {[31].ptr; [32]{.x2; .y2}} ∈ {0} + [32].[bits 48 to 63] ∈ UNINITIALIZED + {[32].ptr; [33]{.x2; .y2}} ∈ {0} + [33].[bits 48 to 63] ∈ UNINITIALIZED + {[33].ptr; [34]{.x2; .y2}} ∈ {0} + [34].[bits 48 to 63] ∈ UNINITIALIZED + {[34].ptr; [35]{.x2; .y2}} ∈ {0} + [35].[bits 48 to 63] ∈ UNINITIALIZED + {[35].ptr; [36]{.x2; .y2}} ∈ {0} + [36].[bits 48 to 63] ∈ UNINITIALIZED + {[36].ptr; [37]{.x2; .y2}} ∈ {0} + [37].[bits 48 to 63] ∈ UNINITIALIZED + {[37].ptr; [38]{.x2; .y2}} ∈ {0} + [38].[bits 48 to 63] ∈ UNINITIALIZED + {[38].ptr; [39]{.x2; .y2}} ∈ {0} + [39].[bits 48 to 63] ∈ UNINITIALIZED + {[39].ptr; [40]{.x2; .y2}} ∈ {0} + [40].[bits 48 to 63] ∈ UNINITIALIZED + {[40].ptr; [41]{.x2; .y2}} ∈ {0} + [41].[bits 48 to 63] ∈ UNINITIALIZED + {[41].ptr; [42]{.x2; .y2}} ∈ {0} + [42].[bits 48 to 63] ∈ UNINITIALIZED + {[42].ptr; [43]{.x2; .y2}} ∈ {0} + [43].[bits 48 to 63] ∈ UNINITIALIZED + {[43].ptr; [44]{.x2; .y2}} ∈ {0} + [44].[bits 48 to 63] ∈ UNINITIALIZED + {[44].ptr; [45]{.x2; .y2}} ∈ {0} + [45].[bits 48 to 63] ∈ UNINITIALIZED + {[45].ptr; [46]{.x2; .y2}} ∈ {0} + [46].[bits 48 to 63] ∈ UNINITIALIZED + {[46].ptr; [47]{.x2; .y2}} ∈ {0} + [47].[bits 48 to 63] ∈ UNINITIALIZED + {[47].ptr; [48]{.x2; .y2}} ∈ {0} + [48].[bits 48 to 63] ∈ UNINITIALIZED + {[48].ptr; [49]{.x2; .y2}} ∈ {0} + [49].[bits 48 to 63] ∈ UNINITIALIZED + [49].ptr ∈ {0} + T[0] ∈ {1} + [1..9] ∈ {0} + U[0] ∈ {3} + [1] ∈ {4} + x ∈ {8} + y ∈ {40} + __retres ∈ {8} +[from] Computing for function main +[from] Computing for function Frama_C_copy_block <-main +[from] Done for function Frama_C_copy_block +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + S[0..4]; TS[0..28]; PC[0..5]; T2{[0]{.x2; .y2}; {[0].ptr; [1..49]}}; + T[0..9]; U[0..1]; x; y; __retres +[inout] Inputs for function main: + \nothing diff --git a/tests/non-free/oracle_symblocs/memset_malloc_0.err.oracle b/tests/non-free/oracle_symblocs/memset_malloc_0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/non-free/oracle_symblocs/memset_malloc_0.res.oracle b/tests/non-free/oracle_symblocs/memset_malloc_0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..c33946fadf9067b8aafb6636d46fc731dfca0b86 --- /dev/null +++ b/tests/non-free/oracle_symblocs/memset_malloc_0.res.oracle @@ -0,0 +1,38 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/non-free/memset_malloc_0.i (no preprocessing) +[value] user error: no assigns specified for function 'malloc', for which a builtin + or the specification will be used. Potential unsoundness. +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + p ∈ {0} +tests/non-free/memset_malloc_0.i:17:[value] allocating variable __malloc_main_l17 +tests/non-free/memset_malloc_0.i:18:[value] Call to builtin memset(({{ (void *)&__malloc_main_l17 }},{0},{0})) +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +tests/non-free/memset_malloc_0.i:17:[kernel] warning: Neither code nor specification for function malloc, generating default assigns from the prototype +[value:final-states] Values at end of function main: + p ∈ {{ &__malloc_main_l17[0] }} + __retres ∈ {0} +[from] Computing for function main +[from] Computing for function malloc <-main +[from] Done for function malloc +[from] Computing for function memset <-main +[from] Done for function memset +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function malloc: + \result FROM s +[from] Function memset: + \result FROM s +[from] Function main: + p FROM \nothing + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + p; __retres +[inout] Inputs for function main: + p diff --git a/tests/non-free/oracle_symblocs/precise_memset.err.oracle b/tests/non-free/oracle_symblocs/precise_memset.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/non-free/oracle_symblocs/precise_memset.res.oracle b/tests/non-free/oracle_symblocs/precise_memset.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..1c72904eabe3b8ba96401b14c3cd1b65cf23d704 --- /dev/null +++ b/tests/non-free/oracle_symblocs/precise_memset.res.oracle @@ -0,0 +1,216 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/non-free/precise_memset.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + v ∈ [--..--] + x ∈ {0} + t[0..49] ∈ {0} + u[0..11] ∈ {0} + f ∈ {0} + fnan ∈ {0} + d ∈ {0} + dnan ∈ {0} + w1[0..3] ∈ {0} + w2[0..3] ∈ {0} + bitf ∈ {0} + tone[0] ∈ {0} + vs ∈ {0} + vv ∈ {0} + t_b[0..1023] ∈ {0} + t_s[0..1023] ∈ {0} +tests/non-free/precise_memset.c:72:[value] Call to builtin memset(({{ (void *)&x }},{2},{4})) +tests/non-free/precise_memset.c:73:[value] Call to builtin memset(({{ (void *)&t }},{3},{100})) +tests/non-free/precise_memset.c:74:[value] Call to builtin memset(({{ (void *)&u }},{154},{48})) +tests/non-free/precise_memset.c:75:[value] Call to builtin memset(({{ (void *)&f }},{2},{4})) +tests/non-free/precise_memset.c:76:[value] Call to builtin memset(({{ (void *)&fnan }},{255},{4})) +tests/non-free/precise_memset.c:77:[value] Call to builtin memset(({{ (void *)&d }},{2},{8})) +tests/non-free/precise_memset.c:78:[value] Call to builtin memset(({{ (void *)&dnan }},{255},{8})) +tests/non-free/precise_memset.c:79:[value] Call to builtin memset(({{ (void *)&w1 }},{2},{48})) +tests/non-free/precise_memset.c:80:[value] Call to builtin memset(({{ (void *)&bitf }},{126},{8})) +tests/non-free/precise_memset.c:81:[value] Call to builtin memset(({{ (void *)&tone }},{6},{4})) +tests/non-free/precise_memset.c:84:[value] warning: assertion got status unknown. +tests/non-free/precise_memset.c:85:[value] Call to builtin memset(({{ (void *)&w2 }},{1; 2; 3; 4; 5; 6; 7; 8},{48})) +tests/non-free/precise_memset.c:87:[value] Call to builtin memset(({{ (void *)&vs }},{4},{2})) +tests/non-free/precise_memset.c:88:[value] Call to builtin memset(({{ (void *)&vs.t }},{2},{40})) +tests/non-free/precise_memset.c:89:[value] Call to builtin memset(({{ (void *)&vv }},{6},{2})) +tests/non-free/precise_memset.c:90:[value] Call to builtin memset(({{ (void *)&t[15] }},{7},{40})) +tests/non-free/precise_memset.c:91:[value] Call to builtin memset(({{ (void *)&t_b }},{5},{1024})) +tests/non-free/precise_memset.c:92:[value] Call to builtin memset(({{ (void *)&t_s }},{19},{2048})) +[value] Recording results for main +[from] Computing for function main +[from] Done for function main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + x ∈ {33686018} + t[0..14] ∈ {771} + [15..34] ∈ {1799} + [35..49] ∈ {771} + u[0..11] ∈ {-1701143910} + f ∈ {9.55146781436e-38} + fnan ∈ {4294967295} + d ∈ {5.37794075127e-299} + dnan ∈ {18446744073709551615} + w1[0].s ∈ {514} + [0].[bits 16 to 31]# ∈ {2} repeated %8 + [0].i ∈ {33686018} + [0]{.c; .[bits 72 to 95]#} ∈ {2} repeated %8 + [1].s ∈ {514} + [1].[bits 16 to 31]# ∈ {2} repeated %8 + [1].i ∈ {33686018} + [1]{.c; .[bits 72 to 95]#} ∈ {2} repeated %8 + [2].s ∈ {514} + [2].[bits 16 to 31]# ∈ {2} repeated %8 + [2].i ∈ {33686018} + [2]{.c; .[bits 72 to 95]#} ∈ {2} repeated %8 + [3].s ∈ {514} + [3].[bits 16 to 31]# ∈ {2} repeated %8 + [3].i ∈ {33686018} + [3]{.c; .[bits 72 to 95]#} ∈ {2} repeated %8 + w2[0].s ∈ {257; 514; 771; 1028; 1285; 1542; 1799; 2056} + [0].[bits 16 to 31]# ∈ {1; 2; 3; 4; 5; 6; 7; 8} repeated %8 + [0].i ∈ + {16843009; 33686018; 50529027; 67372036; 84215045; 101058054; 117901063; + 134744072} + [0]{.c; .[bits 72 to 95]#} ∈ {1; 2; 3; 4; 5; 6; 7; 8} repeated %8 + [1].s ∈ {257; 514; 771; 1028; 1285; 1542; 1799; 2056} + [1].[bits 16 to 31]# ∈ {1; 2; 3; 4; 5; 6; 7; 8} repeated %8 + [1].i ∈ + {16843009; 33686018; 50529027; 67372036; 84215045; 101058054; 117901063; + 134744072} + [1]{.c; .[bits 72 to 95]#} ∈ {1; 2; 3; 4; 5; 6; 7; 8} repeated %8 + [2].s ∈ {257; 514; 771; 1028; 1285; 1542; 1799; 2056} + [2].[bits 16 to 31]# ∈ {1; 2; 3; 4; 5; 6; 7; 8} repeated %8 + [2].i ∈ + {16843009; 33686018; 50529027; 67372036; 84215045; 101058054; 117901063; + 134744072} + [2]{.c; .[bits 72 to 95]#} ∈ {1; 2; 3; 4; 5; 6; 7; 8} repeated %8 + [3].s ∈ {257; 514; 771; 1028; 1285; 1542; 1799; 2056} + [3].[bits 16 to 31]# ∈ {1; 2; 3; 4; 5; 6; 7; 8} repeated %8 + [3].i ∈ + {16843009; 33686018; 50529027; 67372036; 84215045; 101058054; 117901063; + 134744072} + [3]{.c; .[bits 72 to 95]#} ∈ {1; 2; 3; 4; 5; 6; 7; 8} repeated %8 + bitf.i1 ∈ {-2} + .i1 ∈ {7} + {.i3; .[bits 6 to 7]#} ∈ {126} repeated %8, bits 6 to 15 + .i4 ∈ {126} + .i5 ∈ {252} + {.i6; .[bits 31 to 31]#} ∈ {126} repeated %8, bits 7 to 15 + .i7 ∈ {0} + .i8 ∈ {1} + {.i9; .i10} ∈ {-1} + {.i11; .i12} ∈ {1} + .i13 ∈ {-1} + .i14 ∈ {0} + .[bits 48 to 63]# ∈ {126} repeated %8 + tone[0] ∈ {101058054} + vs.c2 ∈ {1028} + .[bits 16 to 31] ∈ {0} + .t[0..9] ∈ {33686018} + {.c2; .[bits 360 to 383]} ∈ {0} + vv.c3.s ∈ {1542} + {.c3{.i; .c; .[bits 16 to 31]; .[bits 72 to 95]}; .c4} ∈ {0} + t_b[0..1023] ∈ {5} + t_s[0..1023] ∈ {4883} + n ∈ {1; 2; 3; 4; 5; 6; 7; 8} +[from] Computing for function main +[from] Computing for function Frama_C_memset <-main +[from] Done for function Frama_C_memset +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + x FROM v (and SELF) + t[0..49] FROM v (and SELF) + u[0..11] FROM v (and SELF) + f FROM v (and SELF) + fnan FROM v (and SELF) + d FROM v (and SELF) + dnan FROM v (and SELF) + w1[0..3] FROM v (and SELF) + w2[0..3] FROM v (and SELF) + bitf FROM v (and SELF) + tone[0] FROM v (and SELF) + vs FROM v (and SELF) + vv FROM v (and SELF) + t_b[0..1023] FROM v (and SELF) + t_s[0..1023] FROM v (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[from] ====== DISPLAYING CALLWISE DEPENDENCIES ====== +[from] call to Frama_C_memset at tests/non-free/precise_memset.c:72 (by main): + x FROM v + \result FROM dst +[from] call to Frama_C_memset at tests/non-free/precise_memset.c:73 (by main): + t[0..49] FROM v + \result FROM dst +[from] call to Frama_C_memset at tests/non-free/precise_memset.c:74 (by main): + u[0..11] FROM v + \result FROM dst +[from] call to Frama_C_memset at tests/non-free/precise_memset.c:75 (by main): + f FROM v + \result FROM dst +[from] call to Frama_C_memset at tests/non-free/precise_memset.c:76 (by main): + fnan FROM v + \result FROM dst +[from] call to Frama_C_memset at tests/non-free/precise_memset.c:77 (by main): + d FROM v + \result FROM dst +[from] call to Frama_C_memset at tests/non-free/precise_memset.c:78 (by main): + dnan FROM v + \result FROM dst +[from] call to Frama_C_memset at tests/non-free/precise_memset.c:79 (by main): + w1[0..3] FROM v + \result FROM dst +[from] call to Frama_C_memset at tests/non-free/precise_memset.c:80 (by main): + bitf FROM v + \result FROM dst +[from] call to Frama_C_memset at tests/non-free/precise_memset.c:81 (by main): + tone[0] FROM v + \result FROM dst +[from] call to Frama_C_memset at tests/non-free/precise_memset.c:85 (by main): + w2[0..3] FROM v + \result FROM dst +[from] call to Frama_C_memset at tests/non-free/precise_memset.c:87 (by main): + vs.c2 FROM v + \result FROM dst +[from] call to Frama_C_memset at tests/non-free/precise_memset.c:88 (by main): + vs.t[0..9] FROM v + \result FROM dst +[from] call to Frama_C_memset at tests/non-free/precise_memset.c:89 (by main): + vv.c3.s FROM v + \result FROM dst +[from] call to Frama_C_memset at tests/non-free/precise_memset.c:90 (by main): + t[15..34] FROM v + \result FROM dst +[from] call to Frama_C_memset at tests/non-free/precise_memset.c:91 (by main): + t_b[0..1023] FROM v + \result FROM dst +[from] call to Frama_C_memset at tests/non-free/precise_memset.c:92 (by main): + t_s[0..1023] FROM v + \result FROM dst +[from] entry point: + x FROM \nothing + t[0..49] FROM \nothing + u[0..11] FROM \nothing + f FROM \nothing + fnan FROM \nothing + d FROM \nothing + dnan FROM \nothing + w1[0..3] FROM \nothing + w2[0..3] FROM v + bitf FROM \nothing + tone[0] FROM \nothing + vs{.c2; .t[0..9]} FROM \nothing + vv.c3.s FROM \nothing + t_b[0..1023] FROM \nothing + t_s[0..1023] FROM \nothing +[from] ====== END OF CALLWISE DEPENDENCIES ====== +[inout] Out (internal) for function main: + x; t[0..49]; u[0..11]; f; fnan; d; dnan; w1[0..3]; w2[0..3]; bitf; + tone[0]; vs{.c2; .t[0..9]}; vv.c3.s; t_b[0..1023]; t_s[0..1023]; n +[inout] Inputs for function main: + v; x; t[0..49]; u[0..11]; w1[0..3]; w2[0..3]; bitf; tone[0]; vs.t[0..9]; + t_b[0..1023]; t_s[0..1023] diff --git a/tests/non-free/oracle_symblocs/print.err.oracle b/tests/non-free/oracle_symblocs/print.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/non-free/oracle_symblocs/print.res.oracle b/tests/non-free/oracle_symblocs/print.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..136375f5b54890efeef612047fd2a18fa7c2d16e --- /dev/null +++ b/tests/non-free/oracle_symblocs/print.res.oracle @@ -0,0 +1,99 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/non-free/print.c (with preprocessing) +tests/non-free/print.c:33:[kernel] warning: Floating-point constant 1.1f is not represented exactly. Will use 0x1.19999a0000000p0. See documentation for option -warn-decimal-float +[value] user error: no assigns specified for function 'wprintf', for which a builtin + or the specification will be used. Potential unsoundness. +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + __FC_errno ∈ [--..--] + __fc_stdin ∈ {{ NULL ; &S___fc_stdin[0] }} + __fc_stdout ∈ {{ NULL ; &S___fc_stdout[0] }} + __fc_fopen[0..511] ∈ {0} + __p_fc_fopen ∈ {{ &__fc_fopen[0] }} + a ∈ {0} + S___fc_stdin[0]{.__fc_stdio_id; .__fc_position; .__fc_error; .__fc_eof} ∈ + [--..--] + [0].[bits 80 to 95] ∈ UNINITIALIZED + [0].__fc_flags ∈ [--..--] + [0].__fc_inode ∈ {{ NULL ; &S___fc_inode_0_S___fc_stdin[0] }} + [0].__fc_real_data ∈ + {{ NULL ; &S___fc_real_data_0_S___fc_stdin[0] }} + {[0].__fc_real_data_max_size; [1]{.__fc_stdio_id; .__fc_position; .__fc_error; .__fc_eof}} ∈ + [--..--] + [1].[bits 80 to 95] ∈ UNINITIALIZED + [1].__fc_flags ∈ [--..--] + [1].__fc_inode ∈ {{ NULL ; &S___fc_inode_1_S___fc_stdin[0] }} + [1].__fc_real_data ∈ + {{ NULL ; &S___fc_real_data_1_S___fc_stdin[0] }} + [1].__fc_real_data_max_size ∈ [--..--] + S___fc_inode_0_S___fc_stdin[0..1] ∈ [--..--] + S___fc_real_data_0_S___fc_stdin[0..1] ∈ [--..--] + S___fc_inode_1_S___fc_stdin[0..1] ∈ [--..--] + S___fc_real_data_1_S___fc_stdin[0..1] ∈ [--..--] + S___fc_stdout[0]{.__fc_stdio_id; .__fc_position; .__fc_error; .__fc_eof} ∈ + [--..--] + [0].[bits 80 to 95] ∈ UNINITIALIZED + [0].__fc_flags ∈ [--..--] + [0].__fc_inode ∈ + {{ NULL ; &S___fc_inode_0_S___fc_stdout[0] }} + [0].__fc_real_data ∈ + {{ NULL ; &S___fc_real_data_0_S___fc_stdout[0] }} + {[0].__fc_real_data_max_size; [1]{.__fc_stdio_id; .__fc_position; .__fc_error; .__fc_eof}} ∈ + [--..--] + [1].[bits 80 to 95] ∈ UNINITIALIZED + [1].__fc_flags ∈ [--..--] + [1].__fc_inode ∈ + {{ NULL ; &S___fc_inode_1_S___fc_stdout[0] }} + [1].__fc_real_data ∈ + {{ NULL ; &S___fc_real_data_1_S___fc_stdout[0] }} + [1].__fc_real_data_max_size ∈ [--..--] + S___fc_inode_0_S___fc_stdout[0..1] ∈ [--..--] + S___fc_real_data_0_S___fc_stdout[0..1] ∈ [--..--] + S___fc_inode_1_S___fc_stdout[0..1] ∈ [--..--] + S___fc_real_data_1_S___fc_stdout[0..1] ∈ [--..--] + +0xFA 0x101 |0xA + + +250 257 |10 + + +1 101 |10 + + +1 -3 + +1 -3 + +{{ &a }} + +totatuti + +foobar + + +fizzbuzz + +tests/non-free/print.c:27:[value] Precise construction of result impossible. + +abc +tests/non-free/print.c:29:[value] Precise construction of result impossible. + +abc +tests/non-free/print.c:31:[value] Precise construction of result impossible. + +abc + +{1.10000002384} + +tests/non-free/print.c:36:[value] warning: argument 1U has type unsigned int but format indicates int +[value] warning: Continuing analysis because this seems innocuous + +1 + +ok +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== diff --git a/tests/non-free/oracle_symblocs/realloc.err.oracle b/tests/non-free/oracle_symblocs/realloc.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/non-free/oracle_symblocs/realloc.res.oracle b/tests/non-free/oracle_symblocs/realloc.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..6c7f0bafc4c995efaa15a09a57700e9be31349b6 --- /dev/null +++ b/tests/non-free/oracle_symblocs/realloc.res.oracle @@ -0,0 +1,598 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/non-free/realloc.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + __fc_random_counter ∈ {0} + __fc_rand_max ∈ {32767} + __fc_heap_status ∈ [--..--] + Frama_C_entropy_source ∈ [--..--] + v ∈ [--..--] +[value] computing for function main1 <- main. + Called from tests/non-free/realloc.c:160. +tests/non-free/realloc.c:12:[value] allocating variable __malloc_main1_l12 +[value] DUMPING STATE of file tests/non-free/realloc.c line 15 + __fc_random_counter ∈ {0} + __fc_rand_max ∈ {32767} + __fc_heap_status ∈ [--..--] + Frama_C_entropy_source ∈ [--..--] + p ∈ {{ &__malloc_main1_l12 }} + pp ∈ {{ &__malloc_main1_l12 }} + q ∈ UNINITIALIZED + v ∈ [--..--] + __malloc_main1_l12 ∈ {17} + =END OF DUMP== +[value:malloc] bases_to_realloc: {__malloc_main1_l12} +tests/non-free/realloc.c:16:[value] allocating variable __realloc_main1_l16 +tests/non-free/realloc.c:16:[value:malloc] strong free on bases: {__malloc_main1_l12} +[value] DUMPING STATE of file tests/non-free/realloc.c line 17 + __fc_random_counter ∈ {0} + __fc_rand_max ∈ {32767} + __fc_heap_status ∈ [--..--] + Frama_C_entropy_source ∈ [--..--] + p ∈ ESCAPINGADDR + pp ∈ ESCAPINGADDR + q ∈ {{ &__realloc_main1_l16[0] }} + v ∈ [--..--] + __realloc_main1_l16[0] ∈ {17} + [1] ∈ UNINITIALIZED + =END OF DUMP== +tests/non-free/realloc.c:18:[value:malloc] strong free on bases: {__realloc_main1_l16} +[value] Recording results for main1 +[value] Done for function main1 +[value] computing for function main2 <- main. + Called from tests/non-free/realloc.c:161. +[value] computing for function Frama_C_interval <- main2 <- main. + Called from tests/non-free/realloc.c:22. +[value] using specification for function Frama_C_interval +share/libc/__fc_builtin.h:50:[value] function Frama_C_interval: precondition got status valid. +[value] Done for function Frama_C_interval +tests/non-free/realloc.c:23:[value] allocating variable __malloc_main2_l23 +tests/non-free/realloc.c:24:[value] warning: out of bounds write. assert \valid(r+i); +[value:malloc] bases_to_realloc: {__malloc_main2_l23} +tests/non-free/realloc.c:26:[value] allocating variable __realloc_main2_l26 +tests/non-free/realloc.c:26:[value:malloc] strong free on bases: {__malloc_main2_l23} +[value] DUMPING STATE of file tests/non-free/realloc.c line 27 + __fc_random_counter ∈ {0} + __fc_rand_max ∈ {32767} + __fc_heap_status ∈ [--..--] + Frama_C_entropy_source ∈ [--..--] + x ∈ {3; 4} + r ∈ ESCAPINGADDR + s ∈ {{ &__realloc_main2_l26[0] }} + v ∈ [--..--] + __realloc_main2_l26[0..2] ∈ {6} + [3] ∈ {6} or UNINITIALIZED + [4..5] ∈ UNINITIALIZED + =END OF DUMP== +tests/non-free/realloc.c:28:[value:malloc] strong free on bases: {__realloc_main2_l26} +[value] Recording results for main2 +[value] Done for function main2 +[value] computing for function main3 <- main. + Called from tests/non-free/realloc.c:162. +tests/non-free/realloc.c:32:[value] allocating variable __malloc_main3_l32 +tests/non-free/realloc.c:35:[value] allocating variable __malloc_main3_l35 +[value] computing for function Frama_C_interval <- main3 <- main. + Called from tests/non-free/realloc.c:39. +[value] Done for function Frama_C_interval +[value] DUMPING STATE of file tests/non-free/realloc.c line 44 + __fc_random_counter ∈ {0} + __fc_rand_max ∈ {32767} + __fc_heap_status ∈ [--..--] + Frama_C_entropy_source ∈ [--..--] + q ∈ {{ &__malloc_main3_l32[0] }} + r ∈ {{ &__malloc_main3_l35[0] }} + p ∈ {{ &__malloc_main3_l32[0] ; &__malloc_main3_l35[0] }} + x ∈ {0; 1} + s ∈ UNINITIALIZED + v ∈ [--..--] + __malloc_main3_l32[0..4] ∈ {5} + __malloc_main3_l35[0..5] ∈ {6} + =END OF DUMP== +[value:malloc] bases_to_realloc: {__malloc_main3_l32, __malloc_main3_l35} +tests/non-free/realloc.c:46:[value] allocating variable __realloc_main3_l46 +tests/non-free/realloc.c:46:[value:malloc] weak free on bases: {__malloc_main3_l32, __malloc_main3_l35} +[value] DUMPING STATE of file tests/non-free/realloc.c line 48 + __fc_random_counter ∈ {0} + __fc_rand_max ∈ {32767} + __fc_heap_status ∈ [--..--] + Frama_C_entropy_source ∈ [--..--] + q ∈ {{ &__malloc_main3_l32[0] }} or ESCAPINGADDR + r ∈ {{ &__malloc_main3_l35[0] }} or ESCAPINGADDR + p ∈ {{ &__malloc_main3_l32[0] ; &__malloc_main3_l35[0] }} or ESCAPINGADDR + x ∈ {0; 1} + s ∈ {{ &__realloc_main3_l46[0] }} + v ∈ [--..--] + __malloc_main3_l32[0..4] ∈ {5} + __malloc_main3_l35[0..5] ∈ {6} + __realloc_main3_l46[0..4] ∈ {5; 6} + [5] ∈ {6} or UNINITIALIZED + [6] ∈ UNINITIALIZED + =END OF DUMP== +tests/non-free/realloc.c:49:[value] warning: accessing left-value that contains escaping addresses. + assert ¬\dangling(&q); +tests/non-free/realloc.c:49:[value:malloc] strong free on bases: {__malloc_main3_l32} +tests/non-free/realloc.c:49:[value] warning: accessing left-value that contains escaping addresses. + assert ¬\dangling(&r); +tests/non-free/realloc.c:49:[value:malloc] strong free on bases: {__malloc_main3_l35} +tests/non-free/realloc.c:49:[value:malloc] strong free on bases: {__realloc_main3_l46} +[value] Recording results for main3 +[value] Done for function main3 +[value] computing for function main4 <- main. + Called from tests/non-free/realloc.c:163. +[value] computing for function Frama_C_interval <- main4 <- main. + Called from tests/non-free/realloc.c:53. +[value] Done for function Frama_C_interval +[value] computing for function Frama_C_interval <- main4 <- main. + Called from tests/non-free/realloc.c:54. +[value] Done for function Frama_C_interval +tests/non-free/realloc.c:55:[value] allocating variable __malloc_main4_l55 +tests/non-free/realloc.c:56:[value] allocating variable __malloc_main4_l56 +tests/non-free/realloc.c:59:[value] warning: out of bounds write. assert \valid(q+i); +tests/non-free/realloc.c:58:[value] warning: out of bounds write. assert \valid(p+i); +tests/non-free/realloc.c:57:[value] entering loop for the first time +[value] DUMPING STATE of file tests/non-free/realloc.c line 61 + __fc_random_counter ∈ {0} + __fc_rand_max ∈ {32767} + __fc_heap_status ∈ [--..--] + Frama_C_entropy_source ∈ [--..--] + sizep ∈ [2..10] + sizeq ∈ [0..10] + p ∈ {{ &__malloc_main4_l55[0] }} + q ∈ {{ &__malloc_main4_l56[0] }} + rp ∈ UNINITIALIZED + rq ∈ UNINITIALIZED + v ∈ [--..--] + __malloc_main4_l55[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {2} + [3] ∈ {3} + [4] ∈ {4} + [5] ∈ {5} + [6] ∈ {6} + [7] ∈ {7} + [8] ∈ {8} + [9] ∈ {9} + __malloc_main4_l56[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {2} + [3] ∈ {3} + [4] ∈ {4} + [5] ∈ {5} + [6] ∈ {6} + [7] ∈ {7} + [8] ∈ {8} + [9] ∈ {9} + =END OF DUMP== +[value:malloc] bases_to_realloc: {__malloc_main4_l55} +tests/non-free/realloc.c:67:[value] allocating variable __realloc_main4_l67 +tests/non-free/realloc.c:67:[value:malloc] strong free on bases: {__malloc_main4_l55} +[value:malloc] bases_to_realloc: {__malloc_main4_l56} +tests/non-free/realloc.c:68:[value] allocating variable __realloc_main4_l68 +tests/non-free/realloc.c:68:[value:malloc] strong free on bases: {__malloc_main4_l56} +[value] DUMPING STATE of file tests/non-free/realloc.c line 69 + __fc_random_counter ∈ {0} + __fc_rand_max ∈ {32767} + __fc_heap_status ∈ [--..--] + Frama_C_entropy_source ∈ [--..--] + sizep ∈ [2..10] + sizeq ∈ [0..10] + p ∈ ESCAPINGADDR + q ∈ ESCAPINGADDR + rp ∈ {{ &__realloc_main4_l67[0] }} + rq ∈ {{ &__realloc_main4_l68[0] }} + v ∈ [--..--] + __realloc_main4_l67[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {2} or UNINITIALIZED + [3] ∈ {3} or UNINITIALIZED + [4] ∈ {4} or UNINITIALIZED + [5] ∈ {5} or UNINITIALIZED + [6] ∈ {6} or UNINITIALIZED + [7] ∈ {7} or UNINITIALIZED + [8] ∈ {8} or UNINITIALIZED + [9] ∈ {9} or UNINITIALIZED + [10..14] ∈ UNINITIALIZED + __realloc_main4_l68[0] ∈ {0} or UNINITIALIZED + [1] ∈ {1} or UNINITIALIZED + [2] ∈ {2} or UNINITIALIZED + [3] ∈ {3} or UNINITIALIZED + [4] ∈ {4} or UNINITIALIZED + [5] ∈ {5} or UNINITIALIZED + [6] ∈ {6} or UNINITIALIZED + [7] ∈ {7} or UNINITIALIZED + =END OF DUMP== +tests/non-free/realloc.c:72:[value:malloc] strong free on bases: {__realloc_main4_l67} +tests/non-free/realloc.c:72:[value:malloc] strong free on bases: {__realloc_main4_l68} +[value] Recording results for main4 +[value] Done for function main4 +[value] computing for function main5 <- main. + Called from tests/non-free/realloc.c:164. +tests/non-free/realloc.c:76:[value] allocating variable __malloc_main5_l76 +[value] computing for function Frama_C_interval <- main5 <- main. + Called from tests/non-free/realloc.c:78. +[value] Done for function Frama_C_interval +[value] DUMPING STATE of file tests/non-free/realloc.c line 83 + __fc_random_counter ∈ {0} + __fc_rand_max ∈ {32767} + __fc_heap_status ∈ [--..--] + Frama_C_entropy_source ∈ [--..--] + p ∈ {{ &__malloc_main5_l76 }} + c ∈ {0; 1} + q ∈ {{ NULL ; &__malloc_main5_l76 }} + r ∈ UNINITIALIZED + v ∈ [--..--] + __malloc_main5_l76 ∈ {1} + =END OF DUMP== +[value:malloc] bases_to_realloc: {__malloc_main5_l76} +tests/non-free/realloc.c:85:[value] allocating variable __realloc_main5_l85 +tests/non-free/realloc.c:85:[value:malloc] weak free on bases: {__malloc_main5_l76} +[value] DUMPING STATE of file tests/non-free/realloc.c line 86 + __fc_random_counter ∈ {0} + __fc_rand_max ∈ {32767} + __fc_heap_status ∈ [--..--] + Frama_C_entropy_source ∈ [--..--] + p ∈ {{ &__malloc_main5_l76 }} or ESCAPINGADDR + c ∈ {0; 1} + q ∈ {{ NULL ; &__malloc_main5_l76 }} or ESCAPINGADDR + r ∈ {{ &__realloc_main5_l85[0] }} + v ∈ [--..--] + __malloc_main5_l76 ∈ {1} + __realloc_main5_l85[0] ∈ {1} or UNINITIALIZED + [1] ∈ UNINITIALIZED + =END OF DUMP== +tests/non-free/realloc.c:88:[value] warning: accessing left-value that contains escaping addresses. + assert ¬\dangling(&p); +tests/non-free/realloc.c:88:[value:malloc] strong free on bases: {__malloc_main5_l76} +tests/non-free/realloc.c:88:[value:malloc] strong free on bases: {__realloc_main5_l85} +[value] Recording results for main5 +[value] Done for function main5 +[value] computing for function main6 <- main. + Called from tests/non-free/realloc.c:165. +[value] computing for function Frama_C_interval <- main6 <- main. + Called from tests/non-free/realloc.c:92. +[value] Done for function Frama_C_interval +tests/non-free/realloc.c:93:[value] allocating variable __malloc_main6_l93 +[value] Called Frama_C_show_each({{ &x ; &__malloc_main6_l93 + {4} }}) +tests/non-free/realloc.c:103:[value] warning: Wrong free: assert(pass a freeable address) +tests/non-free/realloc.c:106:[value:malloc] strong free on bases: {__malloc_main6_l93} +[value] Recording results for main6 +[value] Done for function main6 +[value] computing for function main7 <- main. + Called from tests/non-free/realloc.c:166. +tests/non-free/realloc.c:110:[value] allocating variable __malloc_main7_l110 +[value:malloc] bases_to_realloc: {__malloc_main7_l110} +tests/non-free/realloc.c:115:[value] allocating variable __realloc_main7_l115 +tests/non-free/realloc.c:115:[value:malloc] strong free on bases: {__malloc_main7_l110} +[value] DUMPING STATE of file tests/non-free/realloc.c line 116 + __fc_random_counter ∈ {0} + __fc_rand_max ∈ {32767} + __fc_heap_status ∈ [--..--] + Frama_C_entropy_source ∈ [--..--] + p ∈ ESCAPINGADDR + q ∈ {{ &__realloc_main7_l115[0] }} + x ∈ UNINITIALIZED + v ∈ [--..--] + __realloc_main7_l115[0] ∈ {{ &x }} + [1] ∈ UNINITIALIZED + =END OF DUMP== +tests/non-free/realloc.c:116:[value] warning: locals {x} escaping the scope of a block of main7 through __realloc_main7_l115 +[value] DUMPING STATE of file tests/non-free/realloc.c line 118 + __fc_random_counter ∈ {0} + __fc_rand_max ∈ {32767} + __fc_heap_status ∈ [--..--] + Frama_C_entropy_source ∈ [--..--] + p ∈ ESCAPINGADDR + q ∈ {{ &__realloc_main7_l115[0] }} + v ∈ [--..--] + __realloc_main7_l115[0] ∈ ESCAPINGADDR + [1] ∈ UNINITIALIZED + =END OF DUMP== +tests/non-free/realloc.c:119:[value:malloc] strong free on bases: {__realloc_main7_l115} +[value] Recording results for main7 +[value] Done for function main7 +[value] computing for function main8 <- main. + Called from tests/non-free/realloc.c:167. +tests/non-free/realloc.c:123:[value] allocating variable __malloc_main8_l123 +[value:malloc] bases_to_realloc: {__malloc_main8_l123} +tests/non-free/realloc.c:126:[value] allocating variable __realloc_main8_l126 +tests/non-free/realloc.c:126:[value:malloc] strong free on bases: {__malloc_main8_l123} +[value] DUMPING STATE of file tests/non-free/realloc.c line 127 + __fc_random_counter ∈ {0} + __fc_rand_max ∈ {32767} + __fc_heap_status ∈ [--..--] + Frama_C_entropy_source ∈ [--..--] + p ∈ ESCAPINGADDR + q ∈ {{ &__realloc_main8_l126[0] }} + v ∈ [--..--] + __realloc_main8_l126∈ ∅ + =END OF DUMP== +tests/non-free/realloc.c:128:[value:malloc] strong free on bases: {__realloc_main8_l126} +[value] Recording results for main8 +[value] Done for function main8 +[value] computing for function main9 <- main. + Called from tests/non-free/realloc.c:168. +tests/non-free/realloc.c:132:[value] allocating variable __malloc_main9_l132 +[value:malloc] bases_to_realloc: {__malloc_main9_l132} +tests/non-free/realloc.c:135:[value] allocating variable __realloc_main9_l135 +tests/non-free/realloc.c:135:[value:malloc] strong free on bases: {__malloc_main9_l132} +[value] DUMPING STATE of file tests/non-free/realloc.c line 136 + __fc_random_counter ∈ {0} + __fc_rand_max ∈ {32767} + __fc_heap_status ∈ [--..--] + Frama_C_entropy_source ∈ [--..--] + p ∈ ESCAPINGADDR + q ∈ {{ (int *)&__realloc_main9_l135 }} + v ∈ [--..--] + __realloc_main9_l135# ∈ {1}%32, bits 0 to 7 + =END OF DUMP== +tests/non-free/realloc.c:137:[value:malloc] strong free on bases: {__realloc_main9_l135} +[value] Recording results for main9 +[value] Done for function main9 +[value] computing for function main10 <- main. + Called from tests/non-free/realloc.c:169. +tests/non-free/realloc.c:147:[value] allocating variable __malloc_main10_l147 +[value:malloc] bases_to_realloc: {__malloc_main10_l147} +tests/non-free/realloc.c:152:[value] allocating variable __realloc_main10_l152 +tests/non-free/realloc.c:152:[value:malloc] strong free on bases: {__malloc_main10_l147} +[value] Called Frama_C_show_each_main10({4}) +[value] DUMPING STATE of file tests/non-free/realloc.c line 155 + __fc_random_counter ∈ {0} + __fc_rand_max ∈ {32767} + __fc_heap_status ∈ [--..--] + Frama_C_entropy_source ∈ [--..--] + v ∈ [--..--] + p ∈ {{ &__realloc_main10_l152[0] }} + q ∈ ESCAPINGADDR + __realloc_main10_l152[0] ∈ {4} + [1] ∈ UNINITIALIZED + =END OF DUMP== +[value:malloc] bases_to_realloc: {__realloc_main10_l152} +tests/non-free/realloc.c:152:[value:malloc] marking variable `__realloc_main10_l152' as weak +tests/non-free/realloc.c:152:[value:malloc] weak free on bases: {__realloc_w_main10_l152} +[value] Called Frama_C_show_each_main10({4}) +[value] DUMPING STATE of file tests/non-free/realloc.c line 155 + __fc_random_counter ∈ {0} + __fc_rand_max ∈ {32767} + __fc_heap_status ∈ [--..--] + Frama_C_entropy_source ∈ [--..--] + v ∈ [--..--] + p ∈ {{ &__realloc_w_main10_l152[0] }} + q ∈ {{ &__realloc_w_main10_l152[0] }} or ESCAPINGADDR + __realloc_w_main10_l152[0] ∈ {4} + [1] ∈ UNINITIALIZED + =END OF DUMP== +[value] Recording results for main10 +[value] Done for function main10 +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main1: + __fc_heap_status ∈ [--..--] + p ∈ ESCAPINGADDR + pp ∈ ESCAPINGADDR + q ∈ ESCAPINGADDR +[value:final-states] Values at end of function main10: + __fc_heap_status ∈ [--..--] + p ∈ {{ &__malloc_main10_l147 ; &__realloc_w_main10_l152[0] }} + q ∈ {{ &__realloc_w_main10_l152[0] }} or UNINITIALIZED or ESCAPINGADDR + __malloc_main10_l147 ∈ {4} + __realloc_w_main10_l152[0] ∈ {4} + [1] ∈ UNINITIALIZED +[value:final-states] Values at end of function main2: + __fc_heap_status ∈ [--..--] + Frama_C_entropy_source ∈ [--..--] + x ∈ {3; 4} + r ∈ ESCAPINGADDR + s ∈ ESCAPINGADDR +[value:final-states] Values at end of function main3: + __fc_heap_status ∈ [--..--] + Frama_C_entropy_source ∈ [--..--] + q ∈ ESCAPINGADDR + r ∈ ESCAPINGADDR + p ∈ ESCAPINGADDR + x ∈ {0; 1} + s ∈ ESCAPINGADDR +[value:final-states] Values at end of function main4: + __fc_heap_status ∈ [--..--] + Frama_C_entropy_source ∈ [--..--] + sizep ∈ [2..10] + sizeq ∈ [0..10] + p ∈ ESCAPINGADDR + q ∈ ESCAPINGADDR + rp ∈ ESCAPINGADDR + rq ∈ ESCAPINGADDR +[value:final-states] Values at end of function main5: + __fc_heap_status ∈ [--..--] + Frama_C_entropy_source ∈ [--..--] + p ∈ ESCAPINGADDR + c ∈ {0; 1} + q ∈ {0} or ESCAPINGADDR + r ∈ ESCAPINGADDR +[value:final-states] Values at end of function main6: + __fc_heap_status ∈ [--..--] + Frama_C_entropy_source ∈ [--..--] + c ∈ {0} + m ∈ ESCAPINGADDR +[value:final-states] Values at end of function main7: + __fc_heap_status ∈ [--..--] + p ∈ ESCAPINGADDR + q ∈ ESCAPINGADDR +[value:final-states] Values at end of function main8: + __fc_heap_status ∈ [--..--] + p ∈ ESCAPINGADDR + q ∈ ESCAPINGADDR +[value:final-states] Values at end of function main9: + __fc_heap_status ∈ [--..--] + p ∈ ESCAPINGADDR + q ∈ ESCAPINGADDR +[value:final-states] Values at end of function main: + __fc_heap_status ∈ [--..--] + Frama_C_entropy_source ∈ [--..--] + __malloc_main10_l147 ∈ {4} + __realloc_w_main10_l152[0] ∈ {4} + [1] ∈ UNINITIALIZED +[from] Computing for function main1 +[from] Computing for function malloc <-main1 +[from] Done for function malloc +[from] Computing for function Frama_C_dump_each <-main1 +[from] Done for function Frama_C_dump_each +[from] Computing for function realloc <-main1 +[from] Done for function realloc +[from] Computing for function free <-main1 +[from] Done for function free +[from] Done for function main1 +[from] Computing for function main10 +[from] Done for function main10 +[from] Computing for function main2 +[from] Computing for function Frama_C_interval <-main2 +[from] Done for function Frama_C_interval +[from] Done for function main2 +[from] Computing for function main3 +[from] Done for function main3 +[from] Computing for function main4 +[from] Done for function main4 +[from] Computing for function main5 +[from] Done for function main5 +[from] Computing for function main6 +[from] Done for function main6 +[from] Computing for function main7 +[from] Done for function main7 +[from] Computing for function main8 +[from] Done for function main8 +[from] Computing for function main9 +[from] Done for function main9 +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function Frama_C_interval: + Frama_C_entropy_source FROM Frama_C_entropy_source (and SELF) + \result FROM Frama_C_entropy_source; min; max +[from] Function free: + __fc_heap_status FROM __fc_heap_status (and SELF) +[from] Function malloc: + __fc_heap_status FROM __fc_heap_status; size (and SELF) + \result FROM __fc_heap_status; size +[from] Function realloc: + __fc_heap_status FROM __fc_heap_status (and SELF) + \result FROM __fc_heap_status; ptr; size +[from] Function main1: + __fc_heap_status FROM __fc_heap_status (and SELF) + __malloc_main1_l12 FROM __fc_heap_status +[from] Function main10: + __fc_heap_status FROM __fc_heap_status; v (and SELF) + __malloc_main10_l147 FROM __fc_heap_status + __realloc_w_main10_l152[0] + FROM __fc_heap_status; v; + __realloc_w_main10_l152[0] (and SELF) +[from] Function main2: + __fc_heap_status FROM __fc_heap_status; Frama_C_entropy_source (and SELF) + Frama_C_entropy_source FROM Frama_C_entropy_source (and SELF) + __malloc_main2_l23[0..3] + FROM __fc_heap_status; Frama_C_entropy_source (and SELF) +[from] Function main3: + __fc_heap_status FROM __fc_heap_status (and SELF) + Frama_C_entropy_source FROM Frama_C_entropy_source (and SELF) + __malloc_main3_l32[0..4] FROM __fc_heap_status (and SELF) + __malloc_main3_l35[0..5] FROM __fc_heap_status (and SELF) +[from] Function main4: + __fc_heap_status FROM __fc_heap_status; Frama_C_entropy_source (and SELF) + Frama_C_entropy_source FROM Frama_C_entropy_source (and SELF) + __malloc_main4_l55[0..9] + FROM __fc_heap_status; Frama_C_entropy_source (and SELF) + __malloc_main4_l56[0..9] + FROM __fc_heap_status; Frama_C_entropy_source (and SELF) +[from] Function main5: + __fc_heap_status FROM __fc_heap_status (and SELF) + Frama_C_entropy_source FROM Frama_C_entropy_source (and SELF) + __malloc_main5_l76 FROM __fc_heap_status +[from] Function main6: + __fc_heap_status FROM __fc_heap_status (and SELF) + Frama_C_entropy_source FROM Frama_C_entropy_source (and SELF) +[from] Function main7: + __fc_heap_status FROM __fc_heap_status (and SELF) + __malloc_main7_l110 FROM __fc_heap_status +[from] Function main8: + __fc_heap_status FROM __fc_heap_status (and SELF) + __malloc_main8_l123[0..1] FROM __fc_heap_status +[from] Function main9: + __fc_heap_status FROM __fc_heap_status (and SELF) + __malloc_main9_l132[0..1] FROM __fc_heap_status +[from] Function main: + __fc_heap_status FROM __fc_heap_status; Frama_C_entropy_source; + v (and SELF) + Frama_C_entropy_source FROM Frama_C_entropy_source (and SELF) + __malloc_main1_l12 FROM __fc_heap_status + __malloc_main2_l23[0..3] + FROM __fc_heap_status; Frama_C_entropy_source (and SELF) + __malloc_main3_l32[0..4] FROM __fc_heap_status; + Frama_C_entropy_source (and SELF) + __malloc_main3_l35[0..5] FROM __fc_heap_status; + Frama_C_entropy_source (and SELF) + __malloc_main4_l55[0..9] + FROM __fc_heap_status; Frama_C_entropy_source (and SELF) + __malloc_main4_l56[0..9] + FROM __fc_heap_status; Frama_C_entropy_source (and SELF) + __malloc_main5_l76 FROM __fc_heap_status; Frama_C_entropy_source + __malloc_main7_l110 FROM __fc_heap_status; Frama_C_entropy_source + __malloc_main8_l123[0..1] FROM __fc_heap_status; Frama_C_entropy_source + __malloc_main9_l132[0..1] FROM __fc_heap_status; Frama_C_entropy_source + __malloc_main10_l147 FROM __fc_heap_status; Frama_C_entropy_source + __realloc_w_main10_l152[0] + FROM __fc_heap_status; Frama_C_entropy_source; + v; __realloc_w_main10_l152[0] (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main1: + __fc_heap_status; p; pp; q; __malloc_main1_l12 +[inout] Inputs for function main1: + __fc_heap_status +[inout] Out (internal) for function main10: + __fc_heap_status; p; q; __malloc_main10_l147; __realloc_w_main10_l152[0] +[inout] Inputs for function main10: + __fc_heap_status; v; __realloc_w_main10_l152[0] +[inout] Out (internal) for function main2: + __fc_heap_status; Frama_C_entropy_source; x; r; i; s; + __malloc_main2_l23[0..3] +[inout] Inputs for function main2: + __fc_heap_status; Frama_C_entropy_source +[inout] Out (internal) for function main3: + __fc_heap_status; Frama_C_entropy_source; q; i; r; i_0; p; x; s; + __malloc_main3_l32[0..4]; __malloc_main3_l35[0..5] +[inout] Inputs for function main3: + __fc_heap_status; Frama_C_entropy_source +[inout] Out (internal) for function main4: + __fc_heap_status; Frama_C_entropy_source; sizep; sizeq; p; q; i; rp; + rq; __malloc_main4_l55[0..9]; __malloc_main4_l56[0..9] +[inout] Inputs for function main4: + __fc_heap_status; Frama_C_entropy_source +[inout] Out (internal) for function main5: + __fc_heap_status; Frama_C_entropy_source; p; c; q; r; __malloc_main5_l76 +[inout] Inputs for function main5: + __fc_heap_status; Frama_C_entropy_source +[inout] Out (internal) for function main6: + __fc_heap_status; Frama_C_entropy_source; c; m; x; p; q +[inout] Inputs for function main6: + __fc_heap_status; Frama_C_entropy_source +[inout] Out (internal) for function main7: + __fc_heap_status; p; q; __malloc_main7_l110 +[inout] Inputs for function main7: + __fc_heap_status +[inout] Out (internal) for function main8: + __fc_heap_status; p; q; __malloc_main8_l123[0..1] +[inout] Inputs for function main8: + __fc_heap_status +[inout] Out (internal) for function main9: + __fc_heap_status; p; q; __malloc_main9_l132[0..1] +[inout] Inputs for function main9: + __fc_heap_status +[inout] Out (internal) for function main: + __fc_heap_status; Frama_C_entropy_source; __malloc_main1_l12; + __malloc_main2_l23[0..3]; __malloc_main3_l32[0..4]; + __malloc_main3_l35[0..5]; __malloc_main4_l55[0..9]; + __malloc_main4_l56[0..9]; __malloc_main5_l76; __malloc_main7_l110; + __malloc_main8_l123[0..1]; __malloc_main9_l132[0..1]; __malloc_main10_l147; + __realloc_w_main10_l152[0] +[inout] Inputs for function main: + __fc_heap_status; Frama_C_entropy_source; v; __realloc_w_main10_l152[0] diff --git a/tests/non-free/oracle_symblocs/realloc2.err.oracle b/tests/non-free/oracle_symblocs/realloc2.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/non-free/oracle_symblocs/realloc2.res.oracle b/tests/non-free/oracle_symblocs/realloc2.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..70fe5bc3049951890152e10f79884b1855d6c947 --- /dev/null +++ b/tests/non-free/oracle_symblocs/realloc2.res.oracle @@ -0,0 +1,1801 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/non-free/realloc2.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + __fc_random_counter ∈ {0} + __fc_rand_max ∈ {32767} + __fc_heap_status ∈ [--..--] + nondet ∈ [--..--] +[value] computing for function test_exact_null <- main. + Called from tests/non-free/realloc2.c:194. +[value:malloc] bases_to_realloc: {} +tests/non-free/realloc2.c:27:[value] allocating variable __realloc_test_exact_null_l27 +tests/non-free/realloc2.c:27:[value:malloc] strong free on bases: {} +[value] computing for function fill <- test_exact_null <- main. + Called from tests/non-free/realloc2.c:28. +[value] Recording results for fill +[value] Done for function fill +[value] Recording results for test_exact_null +[value] Done for function test_exact_null +[value] computing for function test_exact_null_free <- main. + Called from tests/non-free/realloc2.c:195. +[value:malloc] bases_to_realloc: {} +tests/non-free/realloc2.c:32:[value] allocating variable __realloc_test_exact_null_free_l32 +tests/non-free/realloc2.c:32:[value:malloc] strong free on bases: {} +[value] Recording results for test_exact_null_free +[value] Done for function test_exact_null_free +[value] computing for function test_exact_nonnull_expand <- main. + Called from tests/non-free/realloc2.c:196. +tests/non-free/realloc2.c:36:[value] allocating variable __malloc_test_exact_nonnull_expand_l36 +[value] computing for function fill <- test_exact_nonnull_expand <- main. + Called from tests/non-free/realloc2.c:37. +[value] Recording results for fill +[value] Done for function fill +[value:malloc] bases_to_realloc: {__malloc_test_exact_nonnull_expand_l36} +tests/non-free/realloc2.c:38:[value] allocating variable __realloc_test_exact_nonnull_expand_l38 +tests/non-free/realloc2.c:38:[value:malloc] strong free on bases: {__malloc_test_exact_nonnull_expand_l36} +[value] computing for function fill <- test_exact_nonnull_expand <- main. + Called from tests/non-free/realloc2.c:39. +[value] Recording results for fill +[value] Done for function fill +[value] Recording results for test_exact_nonnull_expand +[value] Done for function test_exact_nonnull_expand +[value] computing for function test_exact_nonnull_shrink <- main. + Called from tests/non-free/realloc2.c:197. +tests/non-free/realloc2.c:44:[value] allocating variable __malloc_test_exact_nonnull_shrink_l44 +[value] computing for function fill <- test_exact_nonnull_shrink <- main. + Called from tests/non-free/realloc2.c:45. +[value] Recording results for fill +[value] Done for function fill +[value:malloc] bases_to_realloc: {__malloc_test_exact_nonnull_shrink_l44} +tests/non-free/realloc2.c:46:[value] allocating variable __realloc_test_exact_nonnull_shrink_l46 +tests/non-free/realloc2.c:46:[value:malloc] strong free on bases: {__malloc_test_exact_nonnull_shrink_l44} +[value] computing for function fill <- test_exact_nonnull_shrink <- main. + Called from tests/non-free/realloc2.c:47. +[value] Recording results for fill +[value] Done for function fill +[value] Recording results for test_exact_nonnull_shrink +[value] Done for function test_exact_nonnull_shrink +[value] computing for function test_exact_nonnull_free <- main. + Called from tests/non-free/realloc2.c:198. +tests/non-free/realloc2.c:51:[value] allocating variable __malloc_test_exact_nonnull_free_l51 +[value] computing for function fill <- test_exact_nonnull_free <- main. + Called from tests/non-free/realloc2.c:52. +[value] Recording results for fill +[value] Done for function fill +[value:malloc] bases_to_realloc: {__malloc_test_exact_nonnull_free_l51} +tests/non-free/realloc2.c:53:[value] allocating variable __realloc_test_exact_nonnull_free_l53 +tests/non-free/realloc2.c:53:[value:malloc] strong free on bases: {__malloc_test_exact_nonnull_free_l51} +[value] Recording results for test_exact_nonnull_free +[value] Done for function test_exact_nonnull_free +[value] computing for function test_maybe_nonnull <- main. + Called from tests/non-free/realloc2.c:199. +tests/non-free/realloc2.c:57:[value] allocating variable __malloc_test_maybe_nonnull_l57 +[value:malloc] bases_to_realloc: {__malloc_test_maybe_nonnull_l57} +tests/non-free/realloc2.c:58:[value] allocating variable __realloc_test_maybe_nonnull_l58 +tests/non-free/realloc2.c:58:[value:malloc] weak free on bases: {__malloc_test_maybe_nonnull_l57} +[value] computing for function fill <- test_maybe_nonnull <- main. + Called from tests/non-free/realloc2.c:59. +[value] Recording results for fill +[value] Done for function fill +[value] Recording results for test_maybe_nonnull +[value] Done for function test_maybe_nonnull +[value] computing for function test_same_size <- main. + Called from tests/non-free/realloc2.c:200. +tests/non-free/realloc2.c:63:[value] allocating variable __malloc_test_same_size_l63 +[value] computing for function fill <- test_same_size <- main. + Called from tests/non-free/realloc2.c:64. +[value] Recording results for fill +[value] Done for function fill +[value:malloc] bases_to_realloc: {__malloc_test_same_size_l63} +tests/non-free/realloc2.c:65:[value] allocating variable __realloc_test_same_size_l65 +tests/non-free/realloc2.c:65:[value:malloc] strong free on bases: {__malloc_test_same_size_l63} +[value] Recording results for test_same_size +[value] Done for function test_same_size +[value] computing for function test_imprecise_size <- main. + Called from tests/non-free/realloc2.c:201. +[value:malloc] bases_to_realloc: {} +tests/non-free/realloc2.c:70:[value] allocating variable __realloc_test_imprecise_size_l70 +tests/non-free/realloc2.c:70:[value:malloc] strong free on bases: {} +[value] computing for function fill <- test_imprecise_size <- main. + Called from tests/non-free/realloc2.c:71. +tests/non-free/realloc2.c:11:[value] warning: out of bounds write. assert \valid(b+i); +[value] Recording results for fill +[value] Done for function fill +[value] Recording results for test_imprecise_size +[value] Done for function test_imprecise_size +[value] computing for function test_imprecise_size_but_precise_fill <- main. + Called from tests/non-free/realloc2.c:202. +[value:malloc] bases_to_realloc: {} +tests/non-free/realloc2.c:76:[value] allocating variable __realloc_test_imprecise_size_but_precise_fill_l76 +tests/non-free/realloc2.c:76:[value:malloc] strong free on bases: {} +[value] computing for function fill <- test_imprecise_size_but_precise_fill <- main. + Called from tests/non-free/realloc2.c:77. +[value] Recording results for fill +[value] Done for function fill +[value] Recording results for test_imprecise_size_but_precise_fill +[value] Done for function test_imprecise_size_but_precise_fill +[value] computing for function test_imprecise_size_free <- main. + Called from tests/non-free/realloc2.c:203. +tests/non-free/realloc2.c:81:[value] allocating variable __malloc_test_imprecise_size_free_l81 +[value] computing for function fill <- test_imprecise_size_free <- main. + Called from tests/non-free/realloc2.c:82. +[value] Recording results for fill +[value] Done for function fill +[value:malloc] bases_to_realloc: {__malloc_test_imprecise_size_free_l81} +tests/non-free/realloc2.c:84:[value] allocating variable __realloc_test_imprecise_size_free_l84 +tests/non-free/realloc2.c:84:[value:malloc] strong free on bases: {__malloc_test_imprecise_size_free_l81} +[value] computing for function fill <- test_imprecise_size_free <- main. + Called from tests/non-free/realloc2.c:85. +[value] Recording results for fill +[value] Done for function fill +[value] Recording results for test_imprecise_size_free +[value] Done for function test_imprecise_size_free +[value] computing for function test_imprecise_both <- main. + Called from tests/non-free/realloc2.c:204. +tests/non-free/realloc2.c:89:[value] allocating variable __malloc_test_imprecise_both_l89 +[value:malloc] bases_to_realloc: {__malloc_test_imprecise_both_l89} +tests/non-free/realloc2.c:91:[value] allocating variable __realloc_test_imprecise_both_l91 +tests/non-free/realloc2.c:91:[value:malloc] weak free on bases: {__malloc_test_imprecise_both_l89} +[value] computing for function fill <- test_imprecise_both <- main. + Called from tests/non-free/realloc2.c:92. +[value] Recording results for fill +[value] Done for function fill +[value] Recording results for test_imprecise_both +[value] Done for function test_imprecise_both +[value] computing for function test_possibly_invalid_realloc <- main. + Called from tests/non-free/realloc2.c:205. +tests/non-free/realloc2.c:96:[value] allocating variable __malloc_test_possibly_invalid_realloc_l96 +tests/non-free/realloc2.c:99:[value] warning: Wrong free: assert(pass a freeable address) +[value:malloc] bases_to_realloc: {__malloc_test_possibly_invalid_realloc_l96} +tests/non-free/realloc2.c:99:[value] allocating variable __realloc_test_possibly_invalid_realloc_l99 +tests/non-free/realloc2.c:99:[value:malloc] strong free on bases: {__malloc_test_possibly_invalid_realloc_l96} +[value] computing for function fill <- test_possibly_invalid_realloc <- main. + Called from tests/non-free/realloc2.c:100. +[value] Recording results for fill +[value] Done for function fill +[value] Recording results for test_possibly_invalid_realloc +[value] Done for function test_possibly_invalid_realloc +[value] computing for function test_invalid_realloc <- main. + Called from tests/non-free/realloc2.c:206. +tests/non-free/realloc2.c:104:[value] allocating variable __malloc_test_invalid_realloc_l104 +tests/non-free/realloc2.c:106:[value] warning: Wrong free: assert(pass a freeable address) +[value] Recording results for test_invalid_realloc +[value] Done for function test_invalid_realloc +[value] computing for function test_invalid_realloc2 <- main. + Called from tests/non-free/realloc2.c:207. +tests/non-free/realloc2.c:111:[value] warning: Wrong free: assert(pass a freeable address) +[value] Recording results for test_invalid_realloc2 +[value] Done for function test_invalid_realloc2 +[value] computing for function test_invalid_realloc3 <- main. + Called from tests/non-free/realloc2.c:208. +tests/non-free/realloc2.c:116:[value] allocating variable __malloc_test_invalid_realloc3_l116 +tests/non-free/realloc2.c:119:[value] warning: Wrong free: assert(pass a freeable address) +[value] Recording results for test_invalid_realloc3 +[value] Done for function test_invalid_realloc3 +[value] computing for function test_realloc_sequence <- main. + Called from tests/non-free/realloc2.c:209. +tests/non-free/realloc2.c:124:[value] allocating variable __malloc_test_realloc_sequence_l124 +[value:malloc] bases_to_realloc: {__malloc_test_realloc_sequence_l124} +tests/non-free/realloc2.c:125:[value] allocating variable __realloc_test_realloc_sequence_l125 +tests/non-free/realloc2.c:125:[value:malloc] strong free on bases: {__malloc_test_realloc_sequence_l124} +[value:malloc] bases_to_realloc: {__realloc_test_realloc_sequence_l125} +tests/non-free/realloc2.c:126:[value] allocating variable __realloc_test_realloc_sequence_l126 +tests/non-free/realloc2.c:126:[value:malloc] strong free on bases: {__realloc_test_realloc_sequence_l125} +[value] computing for function fill <- test_realloc_sequence <- main. + Called from tests/non-free/realloc2.c:127. +[value] Recording results for fill +[value] Done for function fill +[value] Recording results for test_realloc_sequence +[value] Done for function test_realloc_sequence +[value] computing for function test_realloc_loop <- main. + Called from tests/non-free/realloc2.c:210. +tests/non-free/realloc2.c:131:[value] allocating variable __malloc_test_realloc_loop_l131 +[value] computing for function fill <- test_realloc_loop <- main. + Called from tests/non-free/realloc2.c:134. +[value] Recording results for fill +[value] Done for function fill +[value:malloc] bases_to_realloc: {__malloc_test_realloc_loop_l131} +tests/non-free/realloc2.c:138:[value] allocating variable __realloc_test_realloc_loop_l138 +tests/non-free/realloc2.c:138:[value:malloc] strong free on bases: {__malloc_test_realloc_loop_l131} +[value] computing for function fill <- test_realloc_loop <- main. + Called from tests/non-free/realloc2.c:142. +[value] Recording results for fill +[value] Done for function fill +[value:malloc] bases_to_realloc: {__realloc_test_realloc_loop_l138} +tests/non-free/realloc2.c:138:[value:malloc] marking variable `__realloc_test_realloc_loop_l138' as weak +tests/non-free/realloc2.c:138:[value:malloc] resizing variable `__realloc_w_test_realloc_loop_l138' (0..79) to fit 0..119 +tests/non-free/realloc2.c:138:[value:malloc] weak free on bases: {__realloc_w_test_realloc_loop_l138} +[value] computing for function fill <- test_realloc_loop <- main. + Called from tests/non-free/realloc2.c:142. +[value] Recording results for fill +[value] Done for function fill +[value:malloc] bases_to_realloc: {__realloc_w_test_realloc_loop_l138} +tests/non-free/realloc2.c:138:[value:malloc] resizing variable `__realloc_w_test_realloc_loop_l138' + (0..79/119) to fit 0..159 +tests/non-free/realloc2.c:138:[value:malloc] weak free on bases: {__realloc_w_test_realloc_loop_l138} +[value] computing for function fill <- test_realloc_loop <- main. + Called from tests/non-free/realloc2.c:142. +[value] Recording results for fill +[value] Done for function fill +[value:malloc] bases_to_realloc: {__realloc_w_test_realloc_loop_l138} +tests/non-free/realloc2.c:138:[value:malloc] resizing variable `__realloc_w_test_realloc_loop_l138' + (0..79/159) to fit 0..199 +tests/non-free/realloc2.c:138:[value:malloc] weak free on bases: {__realloc_w_test_realloc_loop_l138} +[value] computing for function fill <- test_realloc_loop <- main. + Called from tests/non-free/realloc2.c:142. +[value] Recording results for fill +[value] Done for function fill +[value:malloc] bases_to_realloc: {__realloc_w_test_realloc_loop_l138} +tests/non-free/realloc2.c:138:[value:malloc] resizing variable `__realloc_w_test_realloc_loop_l138' + (0..79/199) to fit 0..239 +tests/non-free/realloc2.c:138:[value:malloc] weak free on bases: {__realloc_w_test_realloc_loop_l138} +[value] computing for function fill <- test_realloc_loop <- main. + Called from tests/non-free/realloc2.c:142. +[value] Recording results for fill +[value] Done for function fill +[value] Recording results for test_realloc_loop +[value] Done for function test_realloc_loop +[value] computing for function test_realloc_multiple_bases <- main. + Called from tests/non-free/realloc2.c:211. +tests/non-free/realloc2.c:151:[value] allocating variable __malloc_test_realloc_multiple_bases_l151 +tests/non-free/realloc2.c:154:[value] allocating variable __malloc_test_realloc_multiple_bases_l154 +[value:malloc] bases_to_realloc: {__malloc_test_realloc_multiple_bases_l151} +tests/non-free/realloc2.c:156:[value] allocating variable __realloc_test_realloc_multiple_bases_l156 +tests/non-free/realloc2.c:156:[value:malloc] strong free on bases: {__malloc_test_realloc_multiple_bases_l151} +[value:malloc] bases_to_realloc: {__malloc_test_realloc_multiple_bases_l154, + __realloc_test_realloc_multiple_bases_l156} +tests/non-free/realloc2.c:158:[value] allocating variable __realloc_test_realloc_multiple_bases_l158 +tests/non-free/realloc2.c:158:[value:malloc] weak free on bases: {__malloc_test_realloc_multiple_bases_l154, + __realloc_test_realloc_multiple_bases_l156} +[value] computing for function fill <- test_realloc_multiple_bases <- main. + Called from tests/non-free/realloc2.c:159. +[value] Recording results for fill +[value] Done for function fill +[value] Recording results for test_realloc_multiple_bases +[value] Done for function test_realloc_multiple_bases +[value] computing for function test_realloc_multiple_bases2 <- main. + Called from tests/non-free/realloc2.c:212. +tests/non-free/realloc2.c:163:[value] allocating variable __malloc_test_realloc_multiple_bases2_l163 +[value] computing for function fill <- test_realloc_multiple_bases2 <- main. + Called from tests/non-free/realloc2.c:165. +[value] Recording results for fill +[value] Done for function fill +[value:malloc] bases_to_realloc: {__malloc_test_realloc_multiple_bases2_l163} +tests/non-free/realloc2.c:166:[value] allocating variable __realloc_test_realloc_multiple_bases2_l166 +tests/non-free/realloc2.c:166:[value:malloc] strong free on bases: {__malloc_test_realloc_multiple_bases2_l163} +tests/non-free/realloc2.c:166:[value] allocating variable __malloc_test_realloc_multiple_bases2_l166 +[value] computing for function fill2 <- test_realloc_multiple_bases2 <- main. + Called from tests/non-free/realloc2.c:168. +[value] Recording results for fill2 +[value] Done for function fill2 +[value:malloc] bases_to_realloc: {__realloc_test_realloc_multiple_bases2_l166, + __malloc_test_realloc_multiple_bases2_l166} +tests/non-free/realloc2.c:169:[value] allocating variable __realloc_test_realloc_multiple_bases2_l169 +tests/non-free/realloc2.c:169:[value:malloc] weak free on bases: {__realloc_test_realloc_multiple_bases2_l166, + __malloc_test_realloc_multiple_bases2_l166} +[value:malloc] bases_to_realloc: {__realloc_test_realloc_multiple_bases2_l169} +tests/non-free/realloc2.c:171:[value] allocating variable __realloc_test_realloc_multiple_bases2_l171 +tests/non-free/realloc2.c:171:[value:malloc] strong free on bases: {__realloc_test_realloc_multiple_bases2_l169} +[value] computing for function fill <- test_realloc_multiple_bases2 <- main. + Called from tests/non-free/realloc2.c:173. +[value] Recording results for fill +[value] Done for function fill +tests/non-free/realloc2.c:174:[value] allocating variable __malloc_test_realloc_multiple_bases2_l174 +[value] computing for function fill2 <- test_realloc_multiple_bases2 <- main. + Called from tests/non-free/realloc2.c:176. +[value] Recording results for fill2 +[value] Done for function fill2 +[value:malloc] bases_to_realloc: {__realloc_test_realloc_multiple_bases2_l171, + __malloc_test_realloc_multiple_bases2_l174} +tests/non-free/realloc2.c:177:[value] allocating variable __realloc_test_realloc_multiple_bases2_l177 +tests/non-free/realloc2.c:177:[value:malloc] weak free on bases: {__realloc_test_realloc_multiple_bases2_l171, + __malloc_test_realloc_multiple_bases2_l174} +[value] computing for function fill <- test_realloc_multiple_bases2 <- main. + Called from tests/non-free/realloc2.c:179. +[value] Recording results for fill +[value] Done for function fill +[value] Recording results for test_realloc_multiple_bases2 +[value] Done for function test_realloc_multiple_bases2 +[value] computing for function test_realloc_multiple_bases_loop <- main. + Called from tests/non-free/realloc2.c:213. +tests/non-free/realloc2.c:184:[value] allocating variable __malloc_test_realloc_multiple_bases_loop_l184 +tests/non-free/realloc2.c:185:[value] entering loop for the first time +[value:malloc] bases_to_realloc: {__malloc_test_realloc_multiple_bases_loop_l184} +tests/non-free/realloc2.c:187:[value] allocating variable __realloc_test_realloc_multiple_bases_loop_l187 +tests/non-free/realloc2.c:187:[value:malloc] strong free on bases: {__malloc_test_realloc_multiple_bases_loop_l184} +[value] computing for function fill <- test_realloc_multiple_bases_loop <- main. + Called from tests/non-free/realloc2.c:189. +[value] Recording results for fill +[value] Done for function fill +[value:malloc] bases_to_realloc: {__malloc_test_realloc_multiple_bases_loop_l184, + __realloc_test_realloc_multiple_bases_loop_l187} +tests/non-free/realloc2.c:187:[value:malloc] marking variable `__realloc_test_realloc_multiple_bases_loop_l187' as weak +tests/non-free/realloc2.c:187:[value:malloc] resizing variable `__realloc_w_test_realloc_multiple_bases_loop_l187' + (0..79) to fit 0..79/95 +tests/non-free/realloc2.c:187:[value:malloc] weak free on bases: {__malloc_test_realloc_multiple_bases_loop_l184, + __realloc_w_test_realloc_multiple_bases_loop_l187} +[value] computing for function fill <- test_realloc_multiple_bases_loop <- main. + Called from tests/non-free/realloc2.c:189. +[value] Recording results for fill +[value] Done for function fill +[value:malloc] bases_to_realloc: {__malloc_test_realloc_multiple_bases_loop_l184, + __realloc_w_test_realloc_multiple_bases_loop_l187} +tests/non-free/realloc2.c:187:[value:malloc] resizing variable `__realloc_w_test_realloc_multiple_bases_loop_l187' + (0..79/95) to fit 0..79/111 +tests/non-free/realloc2.c:187:[value:malloc] weak free on bases: {__malloc_test_realloc_multiple_bases_loop_l184, + __realloc_w_test_realloc_multiple_bases_loop_l187} +[value] computing for function fill <- test_realloc_multiple_bases_loop <- main. + Called from tests/non-free/realloc2.c:189. +[value] Recording results for fill +[value] Done for function fill +[value:malloc] bases_to_realloc: {__malloc_test_realloc_multiple_bases_loop_l184, + __realloc_w_test_realloc_multiple_bases_loop_l187} +tests/non-free/realloc2.c:187:[value:malloc] resizing variable `__realloc_w_test_realloc_multiple_bases_loop_l187' + (0..79/111) to fit 0..79/223 +tests/non-free/realloc2.c:187:[value:malloc] weak free on bases: {__malloc_test_realloc_multiple_bases_loop_l184, + __realloc_w_test_realloc_multiple_bases_loop_l187} +[value] computing for function fill <- test_realloc_multiple_bases_loop <- main. + Called from tests/non-free/realloc2.c:189. +[value] Recording results for fill +[value] Done for function fill +[value:malloc] bases_to_realloc: {__malloc_test_realloc_multiple_bases_loop_l184, + __realloc_w_test_realloc_multiple_bases_loop_l187} +tests/non-free/realloc2.c:187:[value:malloc] weak free on bases: {__malloc_test_realloc_multiple_bases_loop_l184, + __realloc_w_test_realloc_multiple_bases_loop_l187} +[value] computing for function fill <- test_realloc_multiple_bases_loop <- main. + Called from tests/non-free/realloc2.c:189. +[value] Recording results for fill +[value] Done for function fill +[value] Recording results for test_realloc_multiple_bases_loop +[value] Done for function test_realloc_multiple_bases_loop +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function fill: + __realloc_test_exact_null_l27[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {2} + [3] ∈ {3} + [4] ∈ {4} + [5] ∈ {5} + [6] ∈ {6} + [7] ∈ {7} + [8] ∈ {8} + [9] ∈ {9} + __malloc_test_exact_nonnull_expand_l36[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {2} + [3] ∈ {3} + [4] ∈ {4} + __realloc_test_exact_nonnull_expand_l38[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {2} + [3] ∈ {3} + [4] ∈ {4} + [5] ∈ {5} + [6] ∈ {6} + [7] ∈ {7} + [8] ∈ {8} + [9] ∈ {9} + __malloc_test_exact_nonnull_shrink_l44[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {2} + [3] ∈ {3} + [4] ∈ {4} + __realloc_test_exact_nonnull_shrink_l46[0] ∈ {0} + [1] ∈ {1} + __malloc_test_exact_nonnull_free_l51[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {2} + [3] ∈ {3} + [4] ∈ {4} + __realloc_test_maybe_nonnull_l58[0] ∈ {0} + [1] ∈ {1} + __malloc_test_same_size_l63[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {2} + [3] ∈ {3} + [4] ∈ {4} + __realloc_test_imprecise_size_l70[0] ∈ {0} + [1] ∈ {1} or UNINITIALIZED + __realloc_test_imprecise_size_but_precise_fill_l76[0] ∈ {0} + [1] ∈ UNINITIALIZED + __malloc_test_imprecise_size_free_l81[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {2} + [3] ∈ {3} + [4] ∈ {4} + __realloc_test_imprecise_size_free_l84[0] ∈ {0} + [1] ∈ {1} + __realloc_test_imprecise_both_l91[0] ∈ {0} or UNINITIALIZED + [1] ∈ {1} or UNINITIALIZED + __realloc_test_possibly_invalid_realloc_l99[0] ∈ {0} + [1] ∈ {1} + __realloc_test_realloc_sequence_l126[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {2} + [3] ∈ {3} + [4] ∈ {4} + __malloc_test_realloc_loop_l131[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {2} + [3] ∈ {3} + [4] ∈ {4} + [5..9] ∈ UNINITIALIZED + __realloc_w_test_realloc_loop_l138[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {2} + [3] ∈ {3} + [4] ∈ {4} + [5] ∈ {0} + [6] ∈ {1} + [7] ∈ {2} + [8] ∈ {3} + [9] ∈ {4} + [10] ∈ {0} or UNINITIALIZED + [11] ∈ {1} or UNINITIALIZED + [12] ∈ {2} or UNINITIALIZED + [13] ∈ {3} or UNINITIALIZED + [14] ∈ {4} or UNINITIALIZED + [15] ∈ {0} or UNINITIALIZED + [16] ∈ {1} or UNINITIALIZED + [17] ∈ {2} or UNINITIALIZED + [18] ∈ {3} or UNINITIALIZED + [19] ∈ {4} or UNINITIALIZED + [20] ∈ {0} or UNINITIALIZED + [21] ∈ {1} or UNINITIALIZED + [22] ∈ {2} or UNINITIALIZED + [23] ∈ {3} or UNINITIALIZED + [24] ∈ {4} or UNINITIALIZED + [25] ∈ {0} or UNINITIALIZED + [26] ∈ {1} or UNINITIALIZED + [27] ∈ {2} or UNINITIALIZED + [28] ∈ {3} or UNINITIALIZED + [29] ∈ {4} or UNINITIALIZED + __realloc_test_realloc_multiple_bases_l158[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {2} + [3] ∈ {3} + [4] ∈ {4} + __malloc_test_realloc_multiple_bases2_l163[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {2} + [3] ∈ {3} + __realloc_test_realloc_multiple_bases2_l171[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {2} + [3] ∈ {3} + [4] ∈ {4} + __realloc_test_realloc_multiple_bases2_l177[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {2} + [3] ∈ {3} + __malloc_test_realloc_multiple_bases_loop_l184[0] ∈ {0} or UNINITIALIZED + [1] ∈ {1} or UNINITIALIZED + [2] ∈ {2} or UNINITIALIZED + [3] ∈ {3} or UNINITIALIZED + [4] ∈ {4} or UNINITIALIZED + [5] ∈ {5} or UNINITIALIZED + [6] ∈ {6} or UNINITIALIZED + [7] ∈ {7} or UNINITIALIZED + [8] ∈ {8} or UNINITIALIZED + [9] ∈ {9} or UNINITIALIZED + __realloc_w_test_realloc_multiple_bases_loop_l187[0] ∈ + {0} or UNINITIALIZED + [1] ∈ + {1} or UNINITIALIZED + [2] ∈ + {2} or UNINITIALIZED + [3] ∈ + {3} or UNINITIALIZED + [4] ∈ + {4} or UNINITIALIZED + [5] ∈ + {5} or UNINITIALIZED + [6] ∈ + {6} or UNINITIALIZED + [7] ∈ + {7} or UNINITIALIZED + [8] ∈ + {8} or UNINITIALIZED + [9] ∈ + {9} or UNINITIALIZED + [10] ∈ + {10} or UNINITIALIZED + [11] ∈ + {11} or UNINITIALIZED + [12] ∈ + {12} or UNINITIALIZED + [13] ∈ + {13} or UNINITIALIZED + [14] ∈ + {14} or UNINITIALIZED + [15] ∈ + {15} or UNINITIALIZED + [16] ∈ + {16} or UNINITIALIZED + [17] ∈ + {17} or UNINITIALIZED + [18] ∈ + {18} or UNINITIALIZED + [19] ∈ + {19} or UNINITIALIZED + [20] ∈ + {20} or UNINITIALIZED + [21] ∈ + {21} or UNINITIALIZED + [22] ∈ + {22} or UNINITIALIZED + [23] ∈ + {23} or UNINITIALIZED + [24] ∈ + {24} or UNINITIALIZED + [25] ∈ + {25} or UNINITIALIZED + [26] ∈ + {26} or UNINITIALIZED + [27] ∈ + {27} or UNINITIALIZED +[value:final-states] Values at end of function fill2: + __realloc_test_realloc_multiple_bases2_l166[0] ∈ {0} + [1] ∈ {1; 10} + [2] ∈ {2} + [3] ∈ {3} + [4..5] ∈ UNINITIALIZED + __malloc_test_realloc_multiple_bases2_l166[0] ∈ {0} or UNINITIALIZED + [1] ∈ {10} or UNINITIALIZED + __malloc_test_realloc_multiple_bases2_l174[0] ∈ {0} + [1] ∈ {10} + [2] ∈ {20} + [3..5] ∈ UNINITIALIZED +[value:final-states] Values at end of function test_exact_nonnull_expand: + __fc_heap_status ∈ [--..--] + p1 ∈ ESCAPINGADDR + p2 ∈ {{ &__realloc_test_exact_nonnull_expand_l38[0] }} + __realloc_test_exact_nonnull_expand_l38[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {2} + [3] ∈ {3} + [4] ∈ {4} + [5] ∈ {5} + [6] ∈ {6} + [7] ∈ {7} + [8] ∈ {8} + [9] ∈ {9} +[value:final-states] Values at end of function test_exact_nonnull_free: + __fc_heap_status ∈ [--..--] + p1 ∈ ESCAPINGADDR + p2 ∈ {{ &__realloc_test_exact_nonnull_free_l53[0] }} +[value:final-states] Values at end of function test_exact_nonnull_shrink: + __fc_heap_status ∈ [--..--] + p1 ∈ ESCAPINGADDR + p2 ∈ {{ &__realloc_test_exact_nonnull_shrink_l46[0] }} + __realloc_test_exact_nonnull_shrink_l46[0] ∈ {0} + [1] ∈ {1} +[value:final-states] Values at end of function test_exact_null: + __fc_heap_status ∈ [--..--] + p ∈ {{ &__realloc_test_exact_null_l27[0] }} + __realloc_test_exact_null_l27[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {2} + [3] ∈ {3} + [4] ∈ {4} + [5] ∈ {5} + [6] ∈ {6} + [7] ∈ {7} + [8] ∈ {8} + [9] ∈ {9} +[value:final-states] Values at end of function test_exact_null_free: + __fc_heap_status ∈ [--..--] + p ∈ {{ &__realloc_test_exact_null_free_l32[0] }} +[value:final-states] Values at end of function test_imprecise_both: + __fc_heap_status ∈ [--..--] + p1 ∈ + {{ NULL ; (void *)&__malloc_test_imprecise_both_l89 }} or ESCAPINGADDR + s ∈ {0; 2} + p2 ∈ {{ &__realloc_test_imprecise_both_l91[0] }} + __realloc_test_imprecise_both_l91[0] ∈ {0} or UNINITIALIZED + [1] ∈ {1} or UNINITIALIZED +[value:final-states] Values at end of function test_imprecise_size: + __fc_heap_status ∈ [--..--] + s ∈ {1; 2} + p ∈ {{ &__realloc_test_imprecise_size_l70[0] }} + __realloc_test_imprecise_size_l70[0] ∈ {0} + [1] ∈ {1} or UNINITIALIZED +[value:final-states] Values at end of function test_imprecise_size_but_precise_fill: + __fc_heap_status ∈ [--..--] + s ∈ {1; 2} + p ∈ {{ &__realloc_test_imprecise_size_but_precise_fill_l76[0] }} + __realloc_test_imprecise_size_but_precise_fill_l76[0] ∈ {0} + [1] ∈ UNINITIALIZED +[value:final-states] Values at end of function test_imprecise_size_free: + __fc_heap_status ∈ [--..--] + p1 ∈ ESCAPINGADDR + s ∈ {0; 2} + p2 ∈ {{ &__realloc_test_imprecise_size_free_l84[0] }} + __realloc_test_imprecise_size_free_l84[0] ∈ {0} + [1] ∈ {1} +[value:final-states] Values at end of function test_invalid_realloc: + NON TERMINATING FUNCTION +[value:final-states] Values at end of function test_invalid_realloc2: + NON TERMINATING FUNCTION +[value:final-states] Values at end of function test_invalid_realloc3: + NON TERMINATING FUNCTION +[value:final-states] Values at end of function test_maybe_nonnull: + __fc_heap_status ∈ [--..--] + p1 ∈ + {{ NULL ; (void *)&__malloc_test_maybe_nonnull_l57 }} or ESCAPINGADDR + p2 ∈ {{ &__realloc_test_maybe_nonnull_l58[0] }} + __realloc_test_maybe_nonnull_l58[0] ∈ {0} + [1] ∈ {1} +[value:final-states] Values at end of function test_possibly_invalid_realloc: + __fc_heap_status ∈ [--..--] + p1 ∈ ESCAPINGADDR + offset ∈ {0; 10; 20} + p2 ∈ {{ &__realloc_test_possibly_invalid_realloc_l99[0] }} + __realloc_test_possibly_invalid_realloc_l99[0] ∈ {0} + [1] ∈ {1} +[value:final-states] Values at end of function test_realloc_loop: + __fc_heap_status ∈ [--..--] + p1 ∈ ESCAPINGADDR + p2 ∈ {{ &__realloc_w_test_realloc_loop_l138[0] }} + __realloc_w_test_realloc_loop_l138[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {2} + [3] ∈ {3} + [4] ∈ {4} + [5] ∈ {0} + [6] ∈ {1} + [7] ∈ {2} + [8] ∈ {3} + [9] ∈ {4} + [10] ∈ {0} or UNINITIALIZED + [11] ∈ {1} or UNINITIALIZED + [12] ∈ {2} or UNINITIALIZED + [13] ∈ {3} or UNINITIALIZED + [14] ∈ {4} or UNINITIALIZED + [15] ∈ {0} or UNINITIALIZED + [16] ∈ {1} or UNINITIALIZED + [17] ∈ {2} or UNINITIALIZED + [18] ∈ {3} or UNINITIALIZED + [19] ∈ {4} or UNINITIALIZED + [20] ∈ {0} or UNINITIALIZED + [21] ∈ {1} or UNINITIALIZED + [22] ∈ {2} or UNINITIALIZED + [23] ∈ {3} or UNINITIALIZED + [24] ∈ {4} or UNINITIALIZED + [25] ∈ {0} or UNINITIALIZED + [26] ∈ {1} or UNINITIALIZED + [27] ∈ {2} or UNINITIALIZED + [28] ∈ {3} or UNINITIALIZED + [29] ∈ {4} or UNINITIALIZED +[value:final-states] Values at end of function test_realloc_multiple_bases: + __fc_heap_status ∈ [--..--] + p1 ∈ + {{ (void *)&__malloc_test_realloc_multiple_bases_l151 }} or ESCAPINGADDR + p2 ∈ + {{ &__malloc_test_realloc_multiple_bases_l154[0] ; + &__realloc_test_realloc_multiple_bases_l156[0] }} or ESCAPINGADDR + p3 ∈ {{ &__realloc_test_realloc_multiple_bases_l158[0] }} + __realloc_test_realloc_multiple_bases_l158[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {2} + [3] ∈ {3} + [4] ∈ {4} +[value:final-states] Values at end of function test_realloc_multiple_bases2: + __fc_heap_status ∈ [--..--] + p1 ∈ + {{ (void *)&__malloc_test_realloc_multiple_bases2_l163 }} or ESCAPINGADDR + p2 ∈ + {{ &__realloc_test_realloc_multiple_bases2_l166[0] ; + &__malloc_test_realloc_multiple_bases2_l166[0] }} or ESCAPINGADDR + p3 ∈ ESCAPINGADDR + p4 ∈ + {{ &__realloc_test_realloc_multiple_bases2_l171[0] }} or ESCAPINGADDR + p5 ∈ {{ &__malloc_test_realloc_multiple_bases2_l174[0] }} or ESCAPINGADDR + p6 ∈ {{ &__realloc_test_realloc_multiple_bases2_l177[0] }} + __malloc_test_realloc_multiple_bases2_l163[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {2} + [3] ∈ {3} + __realloc_test_realloc_multiple_bases2_l166[0] ∈ {0} + [1] ∈ {1; 10} + [2] ∈ {2} + [3] ∈ {3} + [4..5] ∈ UNINITIALIZED + __malloc_test_realloc_multiple_bases2_l166[0] ∈ {0} or UNINITIALIZED + [1] ∈ {10} or UNINITIALIZED + __realloc_test_realloc_multiple_bases2_l171[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {2} + [3] ∈ {3} + [4] ∈ {4} + __malloc_test_realloc_multiple_bases2_l174[0] ∈ {0} + [1] ∈ {10} + [2] ∈ {20} + [3..5] ∈ UNINITIALIZED + __realloc_test_realloc_multiple_bases2_l177[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {2} + [3] ∈ {3} +[value:final-states] Values at end of function test_realloc_multiple_bases_loop: + __fc_heap_status ∈ [--..--] + size ∈ {10} + p ∈ + {{ &__malloc_test_realloc_multiple_bases_loop_l184[0] ; + &__realloc_w_test_realloc_multiple_bases_loop_l187[0] }} + __malloc_test_realloc_multiple_bases_loop_l184[0] ∈ {0} or UNINITIALIZED + [1] ∈ {1} or UNINITIALIZED + [2] ∈ {2} or UNINITIALIZED + [3] ∈ {3} or UNINITIALIZED + [4] ∈ {4} or UNINITIALIZED + [5] ∈ {5} or UNINITIALIZED + [6] ∈ {6} or UNINITIALIZED + [7] ∈ {7} or UNINITIALIZED + [8] ∈ {8} or UNINITIALIZED + [9] ∈ {9} or UNINITIALIZED + __realloc_w_test_realloc_multiple_bases_loop_l187[0] ∈ + {0} or UNINITIALIZED + [1] ∈ + {1} or UNINITIALIZED + [2] ∈ + {2} or UNINITIALIZED + [3] ∈ + {3} or UNINITIALIZED + [4] ∈ + {4} or UNINITIALIZED + [5] ∈ + {5} or UNINITIALIZED + [6] ∈ + {6} or UNINITIALIZED + [7] ∈ + {7} or UNINITIALIZED + [8] ∈ + {8} or UNINITIALIZED + [9] ∈ + {9} or UNINITIALIZED + [10] ∈ + {10} or UNINITIALIZED + [11] ∈ + {11} or UNINITIALIZED + [12] ∈ + {12} or UNINITIALIZED + [13] ∈ + {13} or UNINITIALIZED + [14] ∈ + {14} or UNINITIALIZED + [15] ∈ + {15} or UNINITIALIZED + [16] ∈ + {16} or UNINITIALIZED + [17] ∈ + {17} or UNINITIALIZED + [18] ∈ + {18} or UNINITIALIZED + [19] ∈ + {19} or UNINITIALIZED + [20] ∈ + {20} or UNINITIALIZED + [21] ∈ + {21} or UNINITIALIZED + [22] ∈ + {22} or UNINITIALIZED + [23] ∈ + {23} or UNINITIALIZED + [24] ∈ + {24} or UNINITIALIZED + [25] ∈ + {25} or UNINITIALIZED + [26] ∈ + {26} or UNINITIALIZED + [27] ∈ + {27} or UNINITIALIZED +[value:final-states] Values at end of function test_realloc_sequence: + __fc_heap_status ∈ [--..--] + p1 ∈ ESCAPINGADDR + p2 ∈ ESCAPINGADDR + p3 ∈ {{ &__realloc_test_realloc_sequence_l126[0] }} + __realloc_test_realloc_sequence_l126[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {2} + [3] ∈ {3} + [4] ∈ {4} +[value:final-states] Values at end of function test_same_size: + __fc_heap_status ∈ [--..--] + p1 ∈ ESCAPINGADDR + p2 ∈ {{ &__realloc_test_same_size_l65[0] }} + __realloc_test_same_size_l65[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {2} + [3] ∈ {3} + [4] ∈ {4} +[value:final-states] Values at end of function main: + __fc_heap_status ∈ [--..--] + __retres ∈ {0} + __realloc_test_exact_null_l27[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {2} + [3] ∈ {3} + [4] ∈ {4} + [5] ∈ {5} + [6] ∈ {6} + [7] ∈ {7} + [8] ∈ {8} + [9] ∈ {9} + __realloc_test_exact_nonnull_expand_l38[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {2} + [3] ∈ {3} + [4] ∈ {4} + [5] ∈ {5} + [6] ∈ {6} + [7] ∈ {7} + [8] ∈ {8} + [9] ∈ {9} + __realloc_test_exact_nonnull_shrink_l46[0] ∈ {0} + [1] ∈ {1} + __realloc_test_maybe_nonnull_l58[0] ∈ {0} + [1] ∈ {1} + __realloc_test_same_size_l65[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {2} + [3] ∈ {3} + [4] ∈ {4} + __realloc_test_imprecise_size_l70[0] ∈ {0} + [1] ∈ {1} or UNINITIALIZED + __realloc_test_imprecise_size_but_precise_fill_l76[0] ∈ {0} + [1] ∈ UNINITIALIZED + __realloc_test_imprecise_size_free_l84[0] ∈ {0} + [1] ∈ {1} + __realloc_test_imprecise_both_l91[0] ∈ {0} or UNINITIALIZED + [1] ∈ {1} or UNINITIALIZED + __realloc_test_possibly_invalid_realloc_l99[0] ∈ {0} + [1] ∈ {1} + __realloc_test_realloc_sequence_l126[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {2} + [3] ∈ {3} + [4] ∈ {4} + __realloc_w_test_realloc_loop_l138[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {2} + [3] ∈ {3} + [4] ∈ {4} + [5] ∈ {0} + [6] ∈ {1} + [7] ∈ {2} + [8] ∈ {3} + [9] ∈ {4} + [10] ∈ {0} or UNINITIALIZED + [11] ∈ {1} or UNINITIALIZED + [12] ∈ {2} or UNINITIALIZED + [13] ∈ {3} or UNINITIALIZED + [14] ∈ {4} or UNINITIALIZED + [15] ∈ {0} or UNINITIALIZED + [16] ∈ {1} or UNINITIALIZED + [17] ∈ {2} or UNINITIALIZED + [18] ∈ {3} or UNINITIALIZED + [19] ∈ {4} or UNINITIALIZED + [20] ∈ {0} or UNINITIALIZED + [21] ∈ {1} or UNINITIALIZED + [22] ∈ {2} or UNINITIALIZED + [23] ∈ {3} or UNINITIALIZED + [24] ∈ {4} or UNINITIALIZED + [25] ∈ {0} or UNINITIALIZED + [26] ∈ {1} or UNINITIALIZED + [27] ∈ {2} or UNINITIALIZED + [28] ∈ {3} or UNINITIALIZED + [29] ∈ {4} or UNINITIALIZED + __realloc_test_realloc_multiple_bases_l158[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {2} + [3] ∈ {3} + [4] ∈ {4} + __malloc_test_realloc_multiple_bases2_l163[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {2} + [3] ∈ {3} + __realloc_test_realloc_multiple_bases2_l166[0] ∈ {0} + [1] ∈ {1; 10} + [2] ∈ {2} + [3] ∈ {3} + [4..5] ∈ UNINITIALIZED + __malloc_test_realloc_multiple_bases2_l166[0] ∈ {0} or UNINITIALIZED + [1] ∈ {10} or UNINITIALIZED + __realloc_test_realloc_multiple_bases2_l171[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {2} + [3] ∈ {3} + [4] ∈ {4} + __malloc_test_realloc_multiple_bases2_l174[0] ∈ {0} + [1] ∈ {10} + [2] ∈ {20} + [3..5] ∈ UNINITIALIZED + __realloc_test_realloc_multiple_bases2_l177[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {2} + [3] ∈ {3} + __malloc_test_realloc_multiple_bases_loop_l184[0] ∈ {0} or UNINITIALIZED + [1] ∈ {1} or UNINITIALIZED + [2] ∈ {2} or UNINITIALIZED + [3] ∈ {3} or UNINITIALIZED + [4] ∈ {4} or UNINITIALIZED + [5] ∈ {5} or UNINITIALIZED + [6] ∈ {6} or UNINITIALIZED + [7] ∈ {7} or UNINITIALIZED + [8] ∈ {8} or UNINITIALIZED + [9] ∈ {9} or UNINITIALIZED + __realloc_w_test_realloc_multiple_bases_loop_l187[0] ∈ + {0} or UNINITIALIZED + [1] ∈ + {1} or UNINITIALIZED + [2] ∈ + {2} or UNINITIALIZED + [3] ∈ + {3} or UNINITIALIZED + [4] ∈ + {4} or UNINITIALIZED + [5] ∈ + {5} or UNINITIALIZED + [6] ∈ + {6} or UNINITIALIZED + [7] ∈ + {7} or UNINITIALIZED + [8] ∈ + {8} or UNINITIALIZED + [9] ∈ + {9} or UNINITIALIZED + [10] ∈ + {10} or UNINITIALIZED + [11] ∈ + {11} or UNINITIALIZED + [12] ∈ + {12} or UNINITIALIZED + [13] ∈ + {13} or UNINITIALIZED + [14] ∈ + {14} or UNINITIALIZED + [15] ∈ + {15} or UNINITIALIZED + [16] ∈ + {16} or UNINITIALIZED + [17] ∈ + {17} or UNINITIALIZED + [18] ∈ + {18} or UNINITIALIZED + [19] ∈ + {19} or UNINITIALIZED + [20] ∈ + {20} or UNINITIALIZED + [21] ∈ + {21} or UNINITIALIZED + [22] ∈ + {22} or UNINITIALIZED + [23] ∈ + {23} or UNINITIALIZED + [24] ∈ + {24} or UNINITIALIZED + [25] ∈ + {25} or UNINITIALIZED + [26] ∈ + {26} or UNINITIALIZED + [27] ∈ + {27} or UNINITIALIZED +[from] Computing for function fill +[from] Done for function fill +[from] Computing for function fill2 +[from] Done for function fill2 +[from] Computing for function test_exact_nonnull_expand +[from] Computing for function malloc <-test_exact_nonnull_expand +[from] Done for function malloc +[from] Computing for function realloc <-test_exact_nonnull_expand +[from] Done for function realloc +[from] Done for function test_exact_nonnull_expand +[from] Computing for function test_exact_nonnull_free +[from] Done for function test_exact_nonnull_free +[from] Computing for function test_exact_nonnull_shrink +[from] Done for function test_exact_nonnull_shrink +[from] Computing for function test_exact_null +[from] Done for function test_exact_null +[from] Computing for function test_exact_null_free +[from] Done for function test_exact_null_free +[from] Computing for function test_imprecise_both +[from] Done for function test_imprecise_both +[from] Computing for function test_imprecise_size +[from] Done for function test_imprecise_size +[from] Computing for function test_imprecise_size_but_precise_fill +[from] Done for function test_imprecise_size_but_precise_fill +[from] Computing for function test_imprecise_size_free +[from] Done for function test_imprecise_size_free +[from] Computing for function test_invalid_realloc +[from] Non-terminating function test_invalid_realloc (no dependencies) +[from] Done for function test_invalid_realloc +[from] Computing for function test_invalid_realloc2 +[from] Non-terminating function test_invalid_realloc2 (no dependencies) +[from] Done for function test_invalid_realloc2 +[from] Computing for function test_invalid_realloc3 +[from] Non-terminating function test_invalid_realloc3 (no dependencies) +[from] Done for function test_invalid_realloc3 +[from] Computing for function test_maybe_nonnull +[from] Done for function test_maybe_nonnull +[from] Computing for function test_possibly_invalid_realloc +[from] Done for function test_possibly_invalid_realloc +[from] Computing for function test_realloc_loop +[from] Done for function test_realloc_loop +[from] Computing for function test_realloc_multiple_bases +[from] Done for function test_realloc_multiple_bases +[from] Computing for function test_realloc_multiple_bases2 +[from] Done for function test_realloc_multiple_bases2 +[from] Computing for function test_realloc_multiple_bases_loop +[from] Done for function test_realloc_multiple_bases_loop +[from] Computing for function test_realloc_sequence +[from] Done for function test_realloc_sequence +[from] Computing for function test_same_size +[from] Done for function test_same_size +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function fill: + __realloc_test_exact_null_l27[0..9] FROM b; n (and SELF) + __malloc_test_exact_nonnull_expand_l36[0..4] FROM b; n (and SELF) + __realloc_test_exact_nonnull_expand_l38[0..9] FROM b; n (and SELF) + __malloc_test_exact_nonnull_shrink_l44[0..4] FROM b; n (and SELF) + __realloc_test_exact_nonnull_shrink_l46[0..1] FROM b; n (and SELF) + __malloc_test_exact_nonnull_free_l51[0..4] FROM b; n (and SELF) + __realloc_test_maybe_nonnull_l58[0..1] FROM b; n (and SELF) + __malloc_test_same_size_l63[0..4] FROM b; n (and SELF) + __realloc_test_imprecise_size_l70[0..1] FROM b; n (and SELF) + __realloc_test_imprecise_size_but_precise_fill_l76[0..1] + FROM b; n (and SELF) + __malloc_test_imprecise_size_free_l81[0..4] FROM b; n (and SELF) + __realloc_test_imprecise_size_free_l84[0..1] FROM b; n (and SELF) + __realloc_test_imprecise_both_l91[0..1] FROM b; n (and SELF) + __realloc_test_possibly_invalid_realloc_l99[0..1] FROM b; n (and SELF) + __realloc_test_realloc_sequence_l126[0..4] FROM b; n (and SELF) + __malloc_test_realloc_loop_l131[0..9] FROM b; n (and SELF) + __realloc_w_test_realloc_loop_l138[5..29] FROM b; n (and SELF) + __realloc_test_realloc_multiple_bases_l158[0..4] FROM b; n (and SELF) + __malloc_test_realloc_multiple_bases2_l163[0..3] FROM b; n (and SELF) + __realloc_test_realloc_multiple_bases2_l171[0..4] FROM b; n (and SELF) + __realloc_test_realloc_multiple_bases2_l177[0..3] FROM b; n (and SELF) + __malloc_test_realloc_multiple_bases_loop_l184[0..9] FROM b; n (and SELF) + __realloc_w_test_realloc_multiple_bases_loop_l187[0..27] + FROM b; n (and SELF) +[from] Function fill2: + __realloc_test_realloc_multiple_bases2_l166[0..2] FROM b; n (and SELF) + __malloc_test_realloc_multiple_bases2_l166[0..1] FROM b; n (and SELF) + __malloc_test_realloc_multiple_bases2_l174[0..2] FROM b; n (and SELF) +[from] Function malloc: + __fc_heap_status FROM __fc_heap_status; size (and SELF) + \result FROM __fc_heap_status; size +[from] Function realloc: + __fc_heap_status FROM __fc_heap_status (and SELF) + \result FROM __fc_heap_status; ptr; size +[from] Function test_exact_nonnull_expand: + __fc_heap_status FROM __fc_heap_status (and SELF) + __realloc_test_exact_null_l27[0..9] FROM __fc_heap_status (and SELF) + __malloc_test_exact_nonnull_expand_l36[0..4] FROM __fc_heap_status (and SELF) + __realloc_test_exact_nonnull_expand_l38[0..9] FROM __fc_heap_status (and SELF) + __malloc_test_exact_nonnull_shrink_l44[0..4] FROM __fc_heap_status (and SELF) + __realloc_test_exact_nonnull_shrink_l46[0..1] FROM __fc_heap_status (and SELF) + __malloc_test_exact_nonnull_free_l51[0..4] FROM __fc_heap_status (and SELF) + __realloc_test_maybe_nonnull_l58[0..1] FROM __fc_heap_status (and SELF) + __malloc_test_same_size_l63[0..4] FROM __fc_heap_status (and SELF) + __realloc_test_imprecise_size_l70[0..1] FROM __fc_heap_status (and SELF) + __realloc_test_imprecise_size_but_precise_fill_l76[0..1] + FROM __fc_heap_status (and SELF) + __malloc_test_imprecise_size_free_l81[0..4] FROM __fc_heap_status (and SELF) + __realloc_test_imprecise_size_free_l84[0..1] + FROM __fc_heap_status (and SELF) + __realloc_test_imprecise_both_l91[0..1] FROM __fc_heap_status (and SELF) + __realloc_test_possibly_invalid_realloc_l99[0..1] FROM __fc_heap_status (and SELF) + __realloc_test_realloc_sequence_l126[0..4] FROM __fc_heap_status (and SELF) + __malloc_test_realloc_loop_l131[0..9] FROM __fc_heap_status (and SELF) + __realloc_w_test_realloc_loop_l138[5..29] FROM __fc_heap_status (and SELF) + __realloc_test_realloc_multiple_bases_l158[0..4] FROM __fc_heap_status (and SELF) + __malloc_test_realloc_multiple_bases2_l163[0..3] FROM __fc_heap_status (and SELF) + __realloc_test_realloc_multiple_bases2_l171[0..4] FROM __fc_heap_status (and SELF) + __realloc_test_realloc_multiple_bases2_l177[0..3] FROM __fc_heap_status (and SELF) + __malloc_test_realloc_multiple_bases_loop_l184[0..9] FROM __fc_heap_status (and SELF) + __realloc_w_test_realloc_multiple_bases_loop_l187[0..27] + FROM __fc_heap_status (and SELF) +[from] Function test_exact_nonnull_free: + __fc_heap_status FROM __fc_heap_status (and SELF) + __realloc_test_exact_null_l27[0..9] FROM __fc_heap_status (and SELF) + __malloc_test_exact_nonnull_expand_l36[0..4] FROM __fc_heap_status (and SELF) + __realloc_test_exact_nonnull_expand_l38[0..9] FROM __fc_heap_status (and SELF) + __malloc_test_exact_nonnull_shrink_l44[0..4] FROM __fc_heap_status (and SELF) + __realloc_test_exact_nonnull_shrink_l46[0..1] FROM __fc_heap_status (and SELF) + __malloc_test_exact_nonnull_free_l51[0..4] FROM __fc_heap_status (and SELF) + __realloc_test_maybe_nonnull_l58[0..1] FROM __fc_heap_status (and SELF) + __malloc_test_same_size_l63[0..4] FROM __fc_heap_status (and SELF) + __realloc_test_imprecise_size_l70[0..1] FROM __fc_heap_status (and SELF) + __realloc_test_imprecise_size_but_precise_fill_l76[0..1] + FROM __fc_heap_status (and SELF) + __malloc_test_imprecise_size_free_l81[0..4] FROM __fc_heap_status (and SELF) + __realloc_test_imprecise_size_free_l84[0..1] + FROM __fc_heap_status (and SELF) + __realloc_test_imprecise_both_l91[0..1] FROM __fc_heap_status (and SELF) + __realloc_test_possibly_invalid_realloc_l99[0..1] FROM __fc_heap_status (and SELF) + __realloc_test_realloc_sequence_l126[0..4] FROM __fc_heap_status (and SELF) + __malloc_test_realloc_loop_l131[0..9] FROM __fc_heap_status (and SELF) + __realloc_w_test_realloc_loop_l138[5..29] FROM __fc_heap_status (and SELF) + __realloc_test_realloc_multiple_bases_l158[0..4] FROM __fc_heap_status (and SELF) + __malloc_test_realloc_multiple_bases2_l163[0..3] FROM __fc_heap_status (and SELF) + __realloc_test_realloc_multiple_bases2_l171[0..4] FROM __fc_heap_status (and SELF) + __realloc_test_realloc_multiple_bases2_l177[0..3] FROM __fc_heap_status (and SELF) + __malloc_test_realloc_multiple_bases_loop_l184[0..9] FROM __fc_heap_status (and SELF) + __realloc_w_test_realloc_multiple_bases_loop_l187[0..27] + FROM __fc_heap_status (and SELF) +[from] Function test_exact_nonnull_shrink: + __fc_heap_status FROM __fc_heap_status (and SELF) + __realloc_test_exact_null_l27[0..9] FROM __fc_heap_status (and SELF) + __malloc_test_exact_nonnull_expand_l36[0..4] FROM __fc_heap_status (and SELF) + __realloc_test_exact_nonnull_expand_l38[0..9] FROM __fc_heap_status (and SELF) + __malloc_test_exact_nonnull_shrink_l44[0..4] FROM __fc_heap_status (and SELF) + __realloc_test_exact_nonnull_shrink_l46[0..1] FROM __fc_heap_status (and SELF) + __malloc_test_exact_nonnull_free_l51[0..4] FROM __fc_heap_status (and SELF) + __realloc_test_maybe_nonnull_l58[0..1] FROM __fc_heap_status (and SELF) + __malloc_test_same_size_l63[0..4] FROM __fc_heap_status (and SELF) + __realloc_test_imprecise_size_l70[0..1] FROM __fc_heap_status (and SELF) + __realloc_test_imprecise_size_but_precise_fill_l76[0..1] + FROM __fc_heap_status (and SELF) + __malloc_test_imprecise_size_free_l81[0..4] FROM __fc_heap_status (and SELF) + __realloc_test_imprecise_size_free_l84[0..1] + FROM __fc_heap_status (and SELF) + __realloc_test_imprecise_both_l91[0..1] FROM __fc_heap_status (and SELF) + __realloc_test_possibly_invalid_realloc_l99[0..1] FROM __fc_heap_status (and SELF) + __realloc_test_realloc_sequence_l126[0..4] FROM __fc_heap_status (and SELF) + __malloc_test_realloc_loop_l131[0..9] FROM __fc_heap_status (and SELF) + __realloc_w_test_realloc_loop_l138[5..29] FROM __fc_heap_status (and SELF) + __realloc_test_realloc_multiple_bases_l158[0..4] FROM __fc_heap_status (and SELF) + __malloc_test_realloc_multiple_bases2_l163[0..3] FROM __fc_heap_status (and SELF) + __realloc_test_realloc_multiple_bases2_l171[0..4] FROM __fc_heap_status (and SELF) + __realloc_test_realloc_multiple_bases2_l177[0..3] FROM __fc_heap_status (and SELF) + __malloc_test_realloc_multiple_bases_loop_l184[0..9] FROM __fc_heap_status (and SELF) + __realloc_w_test_realloc_multiple_bases_loop_l187[0..27] + FROM __fc_heap_status (and SELF) +[from] Function test_exact_null: + __fc_heap_status FROM __fc_heap_status (and SELF) + __realloc_test_exact_null_l27[0..9] FROM __fc_heap_status (and SELF) + __malloc_test_exact_nonnull_expand_l36[0..4] FROM __fc_heap_status (and SELF) + __realloc_test_exact_nonnull_expand_l38[0..9] FROM __fc_heap_status (and SELF) + __malloc_test_exact_nonnull_shrink_l44[0..4] FROM __fc_heap_status (and SELF) + __realloc_test_exact_nonnull_shrink_l46[0..1] FROM __fc_heap_status (and SELF) + __malloc_test_exact_nonnull_free_l51[0..4] FROM __fc_heap_status (and SELF) + __realloc_test_maybe_nonnull_l58[0..1] FROM __fc_heap_status (and SELF) + __malloc_test_same_size_l63[0..4] FROM __fc_heap_status (and SELF) + __realloc_test_imprecise_size_l70[0..1] FROM __fc_heap_status (and SELF) + __realloc_test_imprecise_size_but_precise_fill_l76[0..1] + FROM __fc_heap_status (and SELF) + __malloc_test_imprecise_size_free_l81[0..4] FROM __fc_heap_status (and SELF) + __realloc_test_imprecise_size_free_l84[0..1] + FROM __fc_heap_status (and SELF) + __realloc_test_imprecise_both_l91[0..1] FROM __fc_heap_status (and SELF) + __realloc_test_possibly_invalid_realloc_l99[0..1] FROM __fc_heap_status (and SELF) + __realloc_test_realloc_sequence_l126[0..4] FROM __fc_heap_status (and SELF) + __malloc_test_realloc_loop_l131[0..9] FROM __fc_heap_status (and SELF) + __realloc_w_test_realloc_loop_l138[5..29] FROM __fc_heap_status (and SELF) + __realloc_test_realloc_multiple_bases_l158[0..4] FROM __fc_heap_status (and SELF) + __malloc_test_realloc_multiple_bases2_l163[0..3] FROM __fc_heap_status (and SELF) + __realloc_test_realloc_multiple_bases2_l171[0..4] FROM __fc_heap_status (and SELF) + __realloc_test_realloc_multiple_bases2_l177[0..3] FROM __fc_heap_status (and SELF) + __malloc_test_realloc_multiple_bases_loop_l184[0..9] FROM __fc_heap_status (and SELF) + __realloc_w_test_realloc_multiple_bases_loop_l187[0..27] + FROM __fc_heap_status (and SELF) +[from] Function test_exact_null_free: + __fc_heap_status FROM __fc_heap_status (and SELF) +[from] Function test_imprecise_both: + __fc_heap_status FROM __fc_heap_status; nondet (and SELF) + __realloc_test_exact_null_l27[0..9] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_exact_nonnull_expand_l36[0..4] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_exact_nonnull_expand_l38[0..9] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_exact_nonnull_shrink_l44[0..4] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_exact_nonnull_shrink_l46[0..1] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_exact_nonnull_free_l51[0..4] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_maybe_nonnull_l58[0..1] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_same_size_l63[0..4] FROM __fc_heap_status; nondet (and SELF) + __realloc_test_imprecise_size_l70[0..1] + FROM __fc_heap_status; nondet (and SELF) + __realloc_test_imprecise_size_but_precise_fill_l76[0..1] + FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_imprecise_size_free_l81[0..4] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_imprecise_size_free_l84[0..1] + FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_imprecise_both_l91[0..1] + FROM __fc_heap_status; nondet (and SELF) + __realloc_test_possibly_invalid_realloc_l99[0..1] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_realloc_sequence_l126[0..4] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_realloc_loop_l131[0..9] FROM __fc_heap_status; + nondet (and SELF) + __realloc_w_test_realloc_loop_l138[5..29] + FROM __fc_heap_status; nondet (and SELF) + __realloc_test_realloc_multiple_bases_l158[0..4] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_realloc_multiple_bases2_l163[0..3] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_realloc_multiple_bases2_l171[0..4] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_realloc_multiple_bases2_l177[0..3] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_realloc_multiple_bases_loop_l184[0..9] FROM __fc_heap_status; + nondet (and SELF) + __realloc_w_test_realloc_multiple_bases_loop_l187[0..27] + FROM __fc_heap_status; + nondet (and SELF) +[from] Function test_imprecise_size: + __fc_heap_status FROM __fc_heap_status (and SELF) + __realloc_test_exact_null_l27[0..9] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_exact_nonnull_expand_l36[0..4] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_exact_nonnull_expand_l38[0..9] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_exact_nonnull_shrink_l44[0..4] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_exact_nonnull_shrink_l46[0..1] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_exact_nonnull_free_l51[0..4] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_maybe_nonnull_l58[0..1] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_same_size_l63[0..4] FROM __fc_heap_status; nondet (and SELF) + __realloc_test_imprecise_size_l70[0..1] + FROM __fc_heap_status; nondet (and SELF) + __realloc_test_imprecise_size_but_precise_fill_l76[0..1] + FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_imprecise_size_free_l81[0..4] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_imprecise_size_free_l84[0..1] + FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_imprecise_both_l91[0..1] + FROM __fc_heap_status; nondet (and SELF) + __realloc_test_possibly_invalid_realloc_l99[0..1] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_realloc_sequence_l126[0..4] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_realloc_loop_l131[0..9] FROM __fc_heap_status; + nondet (and SELF) + __realloc_w_test_realloc_loop_l138[5..29] + FROM __fc_heap_status; nondet (and SELF) + __realloc_test_realloc_multiple_bases_l158[0..4] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_realloc_multiple_bases2_l163[0..3] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_realloc_multiple_bases2_l171[0..4] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_realloc_multiple_bases2_l177[0..3] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_realloc_multiple_bases_loop_l184[0..9] FROM __fc_heap_status; + nondet (and SELF) + __realloc_w_test_realloc_multiple_bases_loop_l187[0..27] + FROM __fc_heap_status; + nondet (and SELF) +[from] Function test_imprecise_size_but_precise_fill: + __fc_heap_status FROM __fc_heap_status (and SELF) + __realloc_test_exact_null_l27[0..9] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_exact_nonnull_expand_l36[0..4] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_exact_nonnull_expand_l38[0..9] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_exact_nonnull_shrink_l44[0..4] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_exact_nonnull_shrink_l46[0..1] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_exact_nonnull_free_l51[0..4] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_maybe_nonnull_l58[0..1] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_same_size_l63[0..4] FROM __fc_heap_status; nondet (and SELF) + __realloc_test_imprecise_size_l70[0..1] + FROM __fc_heap_status; nondet (and SELF) + __realloc_test_imprecise_size_but_precise_fill_l76[0..1] + FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_imprecise_size_free_l81[0..4] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_imprecise_size_free_l84[0..1] + FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_imprecise_both_l91[0..1] + FROM __fc_heap_status; nondet (and SELF) + __realloc_test_possibly_invalid_realloc_l99[0..1] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_realloc_sequence_l126[0..4] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_realloc_loop_l131[0..9] FROM __fc_heap_status; + nondet (and SELF) + __realloc_w_test_realloc_loop_l138[5..29] + FROM __fc_heap_status; nondet (and SELF) + __realloc_test_realloc_multiple_bases_l158[0..4] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_realloc_multiple_bases2_l163[0..3] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_realloc_multiple_bases2_l171[0..4] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_realloc_multiple_bases2_l177[0..3] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_realloc_multiple_bases_loop_l184[0..9] FROM __fc_heap_status; + nondet (and SELF) + __realloc_w_test_realloc_multiple_bases_loop_l187[0..27] + FROM __fc_heap_status; + nondet (and SELF) +[from] Function test_imprecise_size_free: + __fc_heap_status FROM __fc_heap_status (and SELF) + __realloc_test_exact_null_l27[0..9] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_exact_nonnull_expand_l36[0..4] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_exact_nonnull_expand_l38[0..9] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_exact_nonnull_shrink_l44[0..4] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_exact_nonnull_shrink_l46[0..1] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_exact_nonnull_free_l51[0..4] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_maybe_nonnull_l58[0..1] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_same_size_l63[0..4] FROM __fc_heap_status; nondet (and SELF) + __realloc_test_imprecise_size_l70[0..1] + FROM __fc_heap_status; nondet (and SELF) + __realloc_test_imprecise_size_but_precise_fill_l76[0..1] + FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_imprecise_size_free_l81[0..4] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_imprecise_size_free_l84[0..1] + FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_imprecise_both_l91[0..1] + FROM __fc_heap_status; nondet (and SELF) + __realloc_test_possibly_invalid_realloc_l99[0..1] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_realloc_sequence_l126[0..4] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_realloc_loop_l131[0..9] FROM __fc_heap_status; + nondet (and SELF) + __realloc_w_test_realloc_loop_l138[5..29] + FROM __fc_heap_status; nondet (and SELF) + __realloc_test_realloc_multiple_bases_l158[0..4] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_realloc_multiple_bases2_l163[0..3] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_realloc_multiple_bases2_l171[0..4] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_realloc_multiple_bases2_l177[0..3] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_realloc_multiple_bases_loop_l184[0..9] FROM __fc_heap_status; + nondet (and SELF) + __realloc_w_test_realloc_multiple_bases_loop_l187[0..27] + FROM __fc_heap_status; + nondet (and SELF) +[from] Function test_invalid_realloc: + NON TERMINATING - NO EFFECTS +[from] Function test_invalid_realloc2: + NON TERMINATING - NO EFFECTS +[from] Function test_invalid_realloc3: + NON TERMINATING - NO EFFECTS +[from] Function test_maybe_nonnull: + __fc_heap_status FROM __fc_heap_status; nondet (and SELF) + __realloc_test_exact_null_l27[0..9] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_exact_nonnull_expand_l36[0..4] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_exact_nonnull_expand_l38[0..9] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_exact_nonnull_shrink_l44[0..4] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_exact_nonnull_shrink_l46[0..1] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_exact_nonnull_free_l51[0..4] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_maybe_nonnull_l58[0..1] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_same_size_l63[0..4] FROM __fc_heap_status; nondet (and SELF) + __realloc_test_imprecise_size_l70[0..1] + FROM __fc_heap_status; nondet (and SELF) + __realloc_test_imprecise_size_but_precise_fill_l76[0..1] + FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_imprecise_size_free_l81[0..4] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_imprecise_size_free_l84[0..1] + FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_imprecise_both_l91[0..1] + FROM __fc_heap_status; nondet (and SELF) + __realloc_test_possibly_invalid_realloc_l99[0..1] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_realloc_sequence_l126[0..4] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_realloc_loop_l131[0..9] FROM __fc_heap_status; + nondet (and SELF) + __realloc_w_test_realloc_loop_l138[5..29] + FROM __fc_heap_status; nondet (and SELF) + __realloc_test_realloc_multiple_bases_l158[0..4] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_realloc_multiple_bases2_l163[0..3] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_realloc_multiple_bases2_l171[0..4] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_realloc_multiple_bases2_l177[0..3] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_realloc_multiple_bases_loop_l184[0..9] FROM __fc_heap_status; + nondet (and SELF) + __realloc_w_test_realloc_multiple_bases_loop_l187[0..27] + FROM __fc_heap_status; + nondet (and SELF) +[from] Function test_possibly_invalid_realloc: + __fc_heap_status FROM __fc_heap_status (and SELF) + __realloc_test_exact_null_l27[0..9] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_exact_nonnull_expand_l36[0..4] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_exact_nonnull_expand_l38[0..9] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_exact_nonnull_shrink_l44[0..4] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_exact_nonnull_shrink_l46[0..1] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_exact_nonnull_free_l51[0..4] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_maybe_nonnull_l58[0..1] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_same_size_l63[0..4] FROM __fc_heap_status; nondet (and SELF) + __realloc_test_imprecise_size_l70[0..1] + FROM __fc_heap_status; nondet (and SELF) + __realloc_test_imprecise_size_but_precise_fill_l76[0..1] + FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_imprecise_size_free_l81[0..4] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_imprecise_size_free_l84[0..1] + FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_imprecise_both_l91[0..1] + FROM __fc_heap_status; nondet (and SELF) + __realloc_test_possibly_invalid_realloc_l99[0..1] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_realloc_sequence_l126[0..4] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_realloc_loop_l131[0..9] FROM __fc_heap_status; + nondet (and SELF) + __realloc_w_test_realloc_loop_l138[5..29] + FROM __fc_heap_status; nondet (and SELF) + __realloc_test_realloc_multiple_bases_l158[0..4] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_realloc_multiple_bases2_l163[0..3] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_realloc_multiple_bases2_l171[0..4] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_realloc_multiple_bases2_l177[0..3] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_realloc_multiple_bases_loop_l184[0..9] FROM __fc_heap_status; + nondet (and SELF) + __realloc_w_test_realloc_multiple_bases_loop_l187[0..27] + FROM __fc_heap_status; + nondet (and SELF) +[from] Function test_realloc_loop: + __fc_heap_status FROM __fc_heap_status (and SELF) + __realloc_test_exact_null_l27[0..9] FROM __fc_heap_status (and SELF) + __malloc_test_exact_nonnull_expand_l36[0..4] FROM __fc_heap_status (and SELF) + __realloc_test_exact_nonnull_expand_l38[0..9] FROM __fc_heap_status (and SELF) + __malloc_test_exact_nonnull_shrink_l44[0..4] FROM __fc_heap_status (and SELF) + __realloc_test_exact_nonnull_shrink_l46[0..1] FROM __fc_heap_status (and SELF) + __malloc_test_exact_nonnull_free_l51[0..4] FROM __fc_heap_status (and SELF) + __realloc_test_maybe_nonnull_l58[0..1] FROM __fc_heap_status (and SELF) + __malloc_test_same_size_l63[0..4] FROM __fc_heap_status (and SELF) + __realloc_test_imprecise_size_l70[0..1] FROM __fc_heap_status (and SELF) + __realloc_test_imprecise_size_but_precise_fill_l76[0..1] + FROM __fc_heap_status (and SELF) + __malloc_test_imprecise_size_free_l81[0..4] FROM __fc_heap_status (and SELF) + __realloc_test_imprecise_size_free_l84[0..1] + FROM __fc_heap_status (and SELF) + __realloc_test_imprecise_both_l91[0..1] FROM __fc_heap_status (and SELF) + __realloc_test_possibly_invalid_realloc_l99[0..1] FROM __fc_heap_status (and SELF) + __realloc_test_realloc_sequence_l126[0..4] FROM __fc_heap_status (and SELF) + __malloc_test_realloc_loop_l131[0..9] FROM __fc_heap_status (and SELF) + __realloc_w_test_realloc_loop_l138[5..29] FROM __fc_heap_status (and SELF) + __realloc_test_realloc_multiple_bases_l158[0..4] FROM __fc_heap_status (and SELF) + __malloc_test_realloc_multiple_bases2_l163[0..3] FROM __fc_heap_status (and SELF) + __realloc_test_realloc_multiple_bases2_l171[0..4] FROM __fc_heap_status (and SELF) + __realloc_test_realloc_multiple_bases2_l177[0..3] FROM __fc_heap_status (and SELF) + __malloc_test_realloc_multiple_bases_loop_l184[0..9] FROM __fc_heap_status (and SELF) + __realloc_w_test_realloc_multiple_bases_loop_l187[0..27] + FROM __fc_heap_status (and SELF) +[from] Function test_realloc_multiple_bases: + __fc_heap_status FROM __fc_heap_status; nondet (and SELF) + __realloc_test_exact_null_l27[0..9] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_exact_nonnull_expand_l36[0..4] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_exact_nonnull_expand_l38[0..9] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_exact_nonnull_shrink_l44[0..4] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_exact_nonnull_shrink_l46[0..1] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_exact_nonnull_free_l51[0..4] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_maybe_nonnull_l58[0..1] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_same_size_l63[0..4] FROM __fc_heap_status; nondet (and SELF) + __realloc_test_imprecise_size_l70[0..1] + FROM __fc_heap_status; nondet (and SELF) + __realloc_test_imprecise_size_but_precise_fill_l76[0..1] + FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_imprecise_size_free_l81[0..4] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_imprecise_size_free_l84[0..1] + FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_imprecise_both_l91[0..1] + FROM __fc_heap_status; nondet (and SELF) + __realloc_test_possibly_invalid_realloc_l99[0..1] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_realloc_sequence_l126[0..4] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_realloc_loop_l131[0..9] FROM __fc_heap_status; + nondet (and SELF) + __realloc_w_test_realloc_loop_l138[5..29] + FROM __fc_heap_status; nondet (and SELF) + __realloc_test_realloc_multiple_bases_l158[0..4] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_realloc_multiple_bases2_l163[0..3] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_realloc_multiple_bases2_l171[0..4] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_realloc_multiple_bases2_l177[0..3] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_realloc_multiple_bases_loop_l184[0..9] FROM __fc_heap_status; + nondet (and SELF) + __realloc_w_test_realloc_multiple_bases_loop_l187[0..27] + FROM __fc_heap_status; + nondet (and SELF) +[from] Function test_realloc_multiple_bases2: + __fc_heap_status FROM __fc_heap_status; nondet (and SELF) + __realloc_test_exact_null_l27[0..9] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_exact_nonnull_expand_l36[0..4] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_exact_nonnull_expand_l38[0..9] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_exact_nonnull_shrink_l44[0..4] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_exact_nonnull_shrink_l46[0..1] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_exact_nonnull_free_l51[0..4] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_maybe_nonnull_l58[0..1] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_same_size_l63[0..4] FROM __fc_heap_status; nondet (and SELF) + __realloc_test_imprecise_size_l70[0..1] + FROM __fc_heap_status; nondet (and SELF) + __realloc_test_imprecise_size_but_precise_fill_l76[0..1] + FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_imprecise_size_free_l81[0..4] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_imprecise_size_free_l84[0..1] + FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_imprecise_both_l91[0..1] + FROM __fc_heap_status; nondet (and SELF) + __realloc_test_possibly_invalid_realloc_l99[0..1] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_realloc_sequence_l126[0..4] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_realloc_loop_l131[0..9] FROM __fc_heap_status; + nondet (and SELF) + __realloc_w_test_realloc_loop_l138[5..29] + FROM __fc_heap_status; nondet (and SELF) + __realloc_test_realloc_multiple_bases_l158[0..4] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_realloc_multiple_bases2_l163[0..3] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_realloc_multiple_bases2_l166[0..2] + FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_realloc_multiple_bases2_l166[0..1] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_realloc_multiple_bases2_l171[0..4] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_realloc_multiple_bases2_l174[0..2] + FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_realloc_multiple_bases2_l177[0..3] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_realloc_multiple_bases_loop_l184[0..9] FROM __fc_heap_status; + nondet (and SELF) + __realloc_w_test_realloc_multiple_bases_loop_l187[0..27] + FROM __fc_heap_status; + nondet (and SELF) +[from] Function test_realloc_multiple_bases_loop: + __fc_heap_status FROM __fc_heap_status; nondet (and SELF) + __realloc_test_exact_null_l27[0..9] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_exact_nonnull_expand_l36[0..4] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_exact_nonnull_expand_l38[0..9] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_exact_nonnull_shrink_l44[0..4] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_exact_nonnull_shrink_l46[0..1] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_exact_nonnull_free_l51[0..4] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_maybe_nonnull_l58[0..1] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_same_size_l63[0..4] FROM __fc_heap_status; nondet (and SELF) + __realloc_test_imprecise_size_l70[0..1] + FROM __fc_heap_status; nondet (and SELF) + __realloc_test_imprecise_size_but_precise_fill_l76[0..1] + FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_imprecise_size_free_l81[0..4] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_imprecise_size_free_l84[0..1] + FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_imprecise_both_l91[0..1] + FROM __fc_heap_status; nondet (and SELF) + __realloc_test_possibly_invalid_realloc_l99[0..1] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_realloc_sequence_l126[0..4] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_realloc_loop_l131[0..9] FROM __fc_heap_status; + nondet (and SELF) + __realloc_w_test_realloc_loop_l138[5..29] + FROM __fc_heap_status; nondet (and SELF) + __realloc_test_realloc_multiple_bases_l158[0..4] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_realloc_multiple_bases2_l163[0..3] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_realloc_multiple_bases2_l171[0..4] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_realloc_multiple_bases2_l177[0..3] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_realloc_multiple_bases_loop_l184[0..9] FROM __fc_heap_status; + nondet (and SELF) + __realloc_w_test_realloc_multiple_bases_loop_l187[0..27] + FROM __fc_heap_status; + nondet (and SELF) +[from] Function test_realloc_sequence: + __fc_heap_status FROM __fc_heap_status (and SELF) + __realloc_test_exact_null_l27[0..9] FROM __fc_heap_status (and SELF) + __malloc_test_exact_nonnull_expand_l36[0..4] FROM __fc_heap_status (and SELF) + __realloc_test_exact_nonnull_expand_l38[0..9] FROM __fc_heap_status (and SELF) + __malloc_test_exact_nonnull_shrink_l44[0..4] FROM __fc_heap_status (and SELF) + __realloc_test_exact_nonnull_shrink_l46[0..1] FROM __fc_heap_status (and SELF) + __malloc_test_exact_nonnull_free_l51[0..4] FROM __fc_heap_status (and SELF) + __realloc_test_maybe_nonnull_l58[0..1] FROM __fc_heap_status (and SELF) + __malloc_test_same_size_l63[0..4] FROM __fc_heap_status (and SELF) + __realloc_test_imprecise_size_l70[0..1] FROM __fc_heap_status (and SELF) + __realloc_test_imprecise_size_but_precise_fill_l76[0..1] + FROM __fc_heap_status (and SELF) + __malloc_test_imprecise_size_free_l81[0..4] FROM __fc_heap_status (and SELF) + __realloc_test_imprecise_size_free_l84[0..1] + FROM __fc_heap_status (and SELF) + __realloc_test_imprecise_both_l91[0..1] FROM __fc_heap_status (and SELF) + __realloc_test_possibly_invalid_realloc_l99[0..1] FROM __fc_heap_status (and SELF) + __realloc_test_realloc_sequence_l126[0..4] FROM __fc_heap_status (and SELF) + __malloc_test_realloc_loop_l131[0..9] FROM __fc_heap_status (and SELF) + __realloc_w_test_realloc_loop_l138[5..29] FROM __fc_heap_status (and SELF) + __realloc_test_realloc_multiple_bases_l158[0..4] FROM __fc_heap_status (and SELF) + __malloc_test_realloc_multiple_bases2_l163[0..3] FROM __fc_heap_status (and SELF) + __realloc_test_realloc_multiple_bases2_l171[0..4] FROM __fc_heap_status (and SELF) + __realloc_test_realloc_multiple_bases2_l177[0..3] FROM __fc_heap_status (and SELF) + __malloc_test_realloc_multiple_bases_loop_l184[0..9] FROM __fc_heap_status (and SELF) + __realloc_w_test_realloc_multiple_bases_loop_l187[0..27] + FROM __fc_heap_status (and SELF) +[from] Function test_same_size: + __fc_heap_status FROM __fc_heap_status (and SELF) + __realloc_test_exact_null_l27[0..9] FROM __fc_heap_status (and SELF) + __malloc_test_exact_nonnull_expand_l36[0..4] FROM __fc_heap_status (and SELF) + __realloc_test_exact_nonnull_expand_l38[0..9] FROM __fc_heap_status (and SELF) + __malloc_test_exact_nonnull_shrink_l44[0..4] FROM __fc_heap_status (and SELF) + __realloc_test_exact_nonnull_shrink_l46[0..1] FROM __fc_heap_status (and SELF) + __malloc_test_exact_nonnull_free_l51[0..4] FROM __fc_heap_status (and SELF) + __realloc_test_maybe_nonnull_l58[0..1] FROM __fc_heap_status (and SELF) + __malloc_test_same_size_l63[0..4] FROM __fc_heap_status (and SELF) + __realloc_test_same_size_l65[0] FROM __fc_heap_status + __realloc_test_imprecise_size_l70[0..1] FROM __fc_heap_status (and SELF) + __realloc_test_imprecise_size_but_precise_fill_l76[0..1] + FROM __fc_heap_status (and SELF) + __malloc_test_imprecise_size_free_l81[0..4] FROM __fc_heap_status (and SELF) + __realloc_test_imprecise_size_free_l84[0..1] + FROM __fc_heap_status (and SELF) + __realloc_test_imprecise_both_l91[0..1] FROM __fc_heap_status (and SELF) + __realloc_test_possibly_invalid_realloc_l99[0..1] FROM __fc_heap_status (and SELF) + __realloc_test_realloc_sequence_l126[0..4] FROM __fc_heap_status (and SELF) + __malloc_test_realloc_loop_l131[0..9] FROM __fc_heap_status (and SELF) + __realloc_w_test_realloc_loop_l138[5..29] FROM __fc_heap_status (and SELF) + __realloc_test_realloc_multiple_bases_l158[0..4] FROM __fc_heap_status (and SELF) + __malloc_test_realloc_multiple_bases2_l163[0..3] FROM __fc_heap_status (and SELF) + __realloc_test_realloc_multiple_bases2_l171[0..4] FROM __fc_heap_status (and SELF) + __realloc_test_realloc_multiple_bases2_l177[0..3] FROM __fc_heap_status (and SELF) + __malloc_test_realloc_multiple_bases_loop_l184[0..9] FROM __fc_heap_status (and SELF) + __realloc_w_test_realloc_multiple_bases_loop_l187[0..27] + FROM __fc_heap_status (and SELF) +[from] Function main: + __fc_heap_status FROM __fc_heap_status; nondet (and SELF) + __realloc_test_exact_null_l27[0..9] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_exact_nonnull_expand_l36[0..4] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_exact_nonnull_expand_l38[0..9] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_exact_nonnull_shrink_l44[0..4] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_exact_nonnull_shrink_l46[0..1] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_exact_nonnull_free_l51[0..4] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_maybe_nonnull_l58[0..1] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_same_size_l63[0..4] FROM __fc_heap_status; nondet (and SELF) + __realloc_test_same_size_l65[0] FROM __fc_heap_status; nondet + __realloc_test_imprecise_size_l70[0..1] + FROM __fc_heap_status; nondet (and SELF) + __realloc_test_imprecise_size_but_precise_fill_l76[0..1] + FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_imprecise_size_free_l81[0..4] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_imprecise_size_free_l84[0..1] + FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_imprecise_both_l91[0..1] + FROM __fc_heap_status; nondet (and SELF) + __realloc_test_possibly_invalid_realloc_l99[0..1] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_realloc_sequence_l126[0..4] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_realloc_loop_l131[0..9] FROM __fc_heap_status; + nondet (and SELF) + __realloc_w_test_realloc_loop_l138[5..29] + FROM __fc_heap_status; nondet (and SELF) + __realloc_test_realloc_multiple_bases_l158[0..4] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_realloc_multiple_bases2_l163[0..3] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_realloc_multiple_bases2_l166[0..2] + FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_realloc_multiple_bases2_l166[0..1] FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_realloc_multiple_bases2_l171[0..4] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_realloc_multiple_bases2_l174[0..2] + FROM __fc_heap_status; + nondet (and SELF) + __realloc_test_realloc_multiple_bases2_l177[0..3] FROM __fc_heap_status; + nondet (and SELF) + __malloc_test_realloc_multiple_bases_loop_l184[0..9] FROM __fc_heap_status; + nondet (and SELF) + __realloc_w_test_realloc_multiple_bases_loop_l187[0..27] + FROM __fc_heap_status; + nondet (and SELF) + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== diff --git a/tests/non-free/oracle_symblocs/realloc_multiple.err.oracle b/tests/non-free/oracle_symblocs/realloc_multiple.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/non-free/oracle_symblocs/realloc_multiple.res.oracle b/tests/non-free/oracle_symblocs/realloc_multiple.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..71f64c915d6b23a657f39f4e1c4b00bea2f3511b --- /dev/null +++ b/tests/non-free/oracle_symblocs/realloc_multiple.res.oracle @@ -0,0 +1,314 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/non-free/realloc_multiple.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + __fc_random_counter ∈ {0} + __fc_rand_max ∈ {32767} + __fc_heap_status ∈ [--..--] + Frama_C_entropy_source ∈ [--..--] +[value] computing for function main1 <- main. + Called from tests/non-free/realloc_multiple.c:75. +tests/non-free/realloc_multiple.c:9:[value] allocating variable __malloc_main1_l9 +tests/non-free/realloc_multiple.c:12:[value] allocating variable __malloc_main1_l12 +[value] computing for function Frama_C_interval <- main1 <- main. + Called from tests/non-free/realloc_multiple.c:16. +[value] using specification for function Frama_C_interval +share/libc/__fc_builtin.h:50:[value] function Frama_C_interval: precondition got status valid. +[value] Done for function Frama_C_interval +[value] DUMPING STATE of file tests/non-free/realloc_multiple.c line 21 + __fc_random_counter ∈ {0} + __fc_rand_max ∈ {32767} + __fc_heap_status ∈ [--..--] + Frama_C_entropy_source ∈ [--..--] + q ∈ {{ &__malloc_main1_l9[0] }} + r ∈ {{ &__malloc_main1_l12[0] }} + p ∈ {{ &__malloc_main1_l9[0] ; &__malloc_main1_l12[0] }} + x ∈ {0; 1} + s ∈ UNINITIALIZED + v ∈ {1} + __malloc_main1_l9[0..4] ∈ {5} + __malloc_main1_l12[0..5] ∈ {6} + =END OF DUMP== +[value:malloc] bases_to_realloc: {__malloc_main1_l12} +tests/non-free/realloc_multiple.c:23:[value] allocating variable __realloc_main1_l23 +[value:malloc] bases_to_realloc: {__malloc_main1_l9} +tests/non-free/realloc_multiple.c:23:[value] allocating variable __realloc_main1_l23_0 +tests/non-free/realloc_multiple.c:23:[value:malloc] weak free on bases: {__malloc_main1_l9, __malloc_main1_l12} +[value] DUMPING STATE of file tests/non-free/realloc_multiple.c line 25 + __fc_random_counter ∈ {0} + __fc_rand_max ∈ {32767} + __fc_heap_status ∈ [--..--] + Frama_C_entropy_source ∈ [--..--] + q ∈ {{ &__malloc_main1_l9[0] }} or ESCAPINGADDR + r ∈ {{ &__malloc_main1_l12[0] }} or ESCAPINGADDR + p ∈ {{ &__malloc_main1_l9[0] ; &__malloc_main1_l12[0] }} or ESCAPINGADDR + x ∈ {0; 1} + s ∈ {{ &__realloc_main1_l23[0] ; &__realloc_main1_l23_0[0] }} + v ∈ {1} + __malloc_main1_l9[0..4] ∈ {5} + __malloc_main1_l12[0..5] ∈ {6} + __realloc_main1_l23[0..5] ∈ {6} + [6] ∈ UNINITIALIZED + __realloc_main1_l23_0[0..4] ∈ {5} + [5..6] ∈ UNINITIALIZED + =END OF DUMP== +tests/non-free/realloc_multiple.c:26:[value:malloc] weak free on bases: {__realloc_main1_l23, __realloc_main1_l23_0} +[value] Recording results for main1 +[value] Done for function main1 +[value] computing for function main2 <- main. + Called from tests/non-free/realloc_multiple.c:76. +tests/non-free/realloc_multiple.c:30:[value] allocating variable __malloc_main2_l30 +tests/non-free/realloc_multiple.c:33:[value] allocating variable __malloc_main2_l33 +[value] computing for function Frama_C_interval <- main2 <- main. + Called from tests/non-free/realloc_multiple.c:37. +[value] Done for function Frama_C_interval +[value] DUMPING STATE of file tests/non-free/realloc_multiple.c line 43 + __fc_random_counter ∈ {0} + __fc_rand_max ∈ {32767} + __fc_heap_status ∈ [--..--] + Frama_C_entropy_source ∈ [--..--] + q ∈ {{ &__malloc_main2_l30[0] }} + r ∈ {{ &__malloc_main2_l33[0] }} + p ∈ {{ NULL ; &__malloc_main2_l30[0] ; &__malloc_main2_l33[0] }} + x ∈ {0; 1; 2} + s ∈ UNINITIALIZED + v ∈ {2} + __malloc_main2_l30[0..4] ∈ {7} + __malloc_main2_l33[0..5] ∈ {8} + =END OF DUMP== +[value:malloc] bases_to_realloc: {__malloc_main2_l33} +tests/non-free/realloc_multiple.c:45:[value] allocating variable __realloc_main2_l45 +[value:malloc] bases_to_realloc: {__malloc_main2_l30} +tests/non-free/realloc_multiple.c:45:[value] allocating variable __realloc_main2_l45_0 +[value:malloc] bases_to_realloc: {} +tests/non-free/realloc_multiple.c:45:[value] allocating variable __realloc_main2_l45_1 +tests/non-free/realloc_multiple.c:45:[value:malloc] weak free on bases: {__malloc_main2_l30, __malloc_main2_l33} +[value] DUMPING STATE of file tests/non-free/realloc_multiple.c line 47 + __fc_random_counter ∈ {0} + __fc_rand_max ∈ {32767} + __fc_heap_status ∈ [--..--] + Frama_C_entropy_source ∈ [--..--] + q ∈ {{ &__malloc_main2_l30[0] }} or ESCAPINGADDR + r ∈ {{ &__malloc_main2_l33[0] }} or ESCAPINGADDR + p ∈ + {{ NULL ; &__malloc_main2_l30[0] ; &__malloc_main2_l33[0] }} or ESCAPINGADDR + x ∈ {0; 1; 2} + s ∈ + {{ &__realloc_main2_l45[0] ; &__realloc_main2_l45_0[0] ; + &__realloc_main2_l45_1[0] }} + v ∈ {2} + __malloc_main2_l30[0..4] ∈ {7} + __malloc_main2_l33[0..5] ∈ {8} + __realloc_main2_l45[0..5] ∈ {8} + [6] ∈ UNINITIALIZED + __realloc_main2_l45_0[0..4] ∈ {7} + [5..6] ∈ UNINITIALIZED + __realloc_main2_l45_1[0..6] ∈ UNINITIALIZED + =END OF DUMP== +tests/non-free/realloc_multiple.c:48:[value:malloc] weak free on bases: {__realloc_main2_l45, __realloc_main2_l45_0, + __realloc_main2_l45_1} +[value] Recording results for main2 +[value] Done for function main2 +[value] computing for function main3 <- main. + Called from tests/non-free/realloc_multiple.c:77. +tests/non-free/realloc_multiple.c:52:[value] allocating variable __malloc_main3_l52 +tests/non-free/realloc_multiple.c:53:[value] allocating variable __malloc_main3_l53 +[value] computing for function Frama_C_interval <- main3 <- main. + Called from tests/non-free/realloc_multiple.c:59. +[value] Done for function Frama_C_interval +[value] DUMPING STATE of file tests/non-free/realloc_multiple.c line 64 + __fc_random_counter ∈ {0} + __fc_rand_max ∈ {32767} + __fc_heap_status ∈ [--..--] + Frama_C_entropy_source ∈ [--..--] + p ∈ {{ &__malloc_main3_l52 }} + q ∈ {{ &__malloc_main3_l53 }} + r ∈ {{ NULL ; &__malloc_main3_l52 ; &__malloc_main3_l53 }} + s ∈ UNINITIALIZED + x ∈ UNINITIALIZED + y ∈ UNINITIALIZED + c ∈ {0; 1; 2} + v ∈ {3} + __malloc_main3_l52 ∈ {{ &x }} + __malloc_main3_l53 ∈ {{ &y }} + =END OF DUMP== +[value:malloc] bases_to_realloc: {__malloc_main3_l53} +tests/non-free/realloc_multiple.c:65:[value] allocating variable __realloc_main3_l65 +[value:malloc] bases_to_realloc: {__malloc_main3_l52} +tests/non-free/realloc_multiple.c:65:[value] allocating variable __realloc_main3_l65_0 +[value:malloc] bases_to_realloc: {} +tests/non-free/realloc_multiple.c:65:[value] allocating variable __realloc_main3_l65_1 +tests/non-free/realloc_multiple.c:65:[value:malloc] weak free on bases: {__malloc_main3_l52, __malloc_main3_l53} +tests/non-free/realloc_multiple.c:66:[value] warning: accessing uninitialized left-value. assert \initialized(s); +[value] DUMPING STATE of file tests/non-free/realloc_multiple.c line 67 + __fc_random_counter ∈ {0} + __fc_rand_max ∈ {32767} + __fc_heap_status ∈ [--..--] + Frama_C_entropy_source ∈ [--..--] + p ∈ {{ &__malloc_main3_l52 }} or ESCAPINGADDR + q ∈ {{ &__malloc_main3_l53 }} or ESCAPINGADDR + r ∈ {{ NULL ; &__malloc_main3_l52 ; &__malloc_main3_l53 }} or ESCAPINGADDR + s ∈ {{ &__realloc_main3_l65[0] ; &__realloc_main3_l65_0[0] }} + x ∈ {17} or UNINITIALIZED + y ∈ {17} or UNINITIALIZED + c ∈ {0; 1; 2} + v ∈ {3} + __malloc_main3_l52 ∈ {{ &x }} + __malloc_main3_l53 ∈ {{ &y }} + __realloc_main3_l65[0] ∈ {{ &y }} + [1] ∈ UNINITIALIZED + __realloc_main3_l65_0[0] ∈ {{ &x }} + [1] ∈ UNINITIALIZED + __realloc_main3_l65_1[0..1] ∈ UNINITIALIZED + =END OF DUMP== +tests/non-free/realloc_multiple.c:67:[value] warning: locals {x} escaping the scope of a block of main3 through __malloc_main3_l52 +tests/non-free/realloc_multiple.c:67:[value] warning: locals {y} escaping the scope of a block of main3 through __malloc_main3_l53 +tests/non-free/realloc_multiple.c:67:[value] warning: locals {y} escaping the scope of a block of main3 through __realloc_main3_l65 +tests/non-free/realloc_multiple.c:67:[value] warning: locals {x} escaping the scope of a block of main3 through __realloc_main3_l65_0 +[value] DUMPING STATE of file tests/non-free/realloc_multiple.c line 69 + __fc_random_counter ∈ {0} + __fc_rand_max ∈ {32767} + __fc_heap_status ∈ [--..--] + Frama_C_entropy_source ∈ [--..--] + p ∈ {{ &__malloc_main3_l52 }} or ESCAPINGADDR + q ∈ {{ &__malloc_main3_l53 }} or ESCAPINGADDR + r ∈ {{ NULL ; &__malloc_main3_l52 ; &__malloc_main3_l53 }} or ESCAPINGADDR + s ∈ {{ &__realloc_main3_l65[0] ; &__realloc_main3_l65_0[0] }} + v ∈ {3} + __malloc_main3_l52 ∈ ESCAPINGADDR + __malloc_main3_l53 ∈ ESCAPINGADDR + __realloc_main3_l65[0] ∈ ESCAPINGADDR + [1] ∈ UNINITIALIZED + __realloc_main3_l65_0[0] ∈ ESCAPINGADDR + [1] ∈ UNINITIALIZED + __realloc_main3_l65_1[0..1] ∈ UNINITIALIZED + =END OF DUMP== +tests/non-free/realloc_multiple.c:70:[value] warning: accessing left-value that contains escaping addresses. + assert ¬\dangling(&q); +tests/non-free/realloc_multiple.c:70:[value:malloc] strong free on bases: {__malloc_main3_l53} +[value] Recording results for main3 +[value] Done for function main3 +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main1: + __fc_heap_status ∈ [--..--] + Frama_C_entropy_source ∈ [--..--] + q ∈ {{ &__malloc_main1_l9[0] }} or ESCAPINGADDR + r ∈ {{ &__malloc_main1_l12[0] }} or ESCAPINGADDR + p ∈ {{ &__malloc_main1_l9[0] ; &__malloc_main1_l12[0] }} or ESCAPINGADDR + x ∈ {0; 1} + s ∈ + {{ &__realloc_main1_l23[0] ; &__realloc_main1_l23_0[0] }} or ESCAPINGADDR + __malloc_main1_l9[0..4] ∈ {5} + __malloc_main1_l12[0..5] ∈ {6} +[value:final-states] Values at end of function main2: + __fc_heap_status ∈ [--..--] + Frama_C_entropy_source ∈ [--..--] + q ∈ {{ &__malloc_main2_l30[0] }} or ESCAPINGADDR + r ∈ {{ &__malloc_main2_l33[0] }} or ESCAPINGADDR + p ∈ + {{ NULL ; &__malloc_main2_l30[0] ; &__malloc_main2_l33[0] }} or ESCAPINGADDR + x ∈ {0; 1; 2} + s ∈ + {{ &__realloc_main2_l45[0] ; &__realloc_main2_l45_0[0] ; + &__realloc_main2_l45_1[0] }} or ESCAPINGADDR + __malloc_main2_l30[0..4] ∈ {7} + __malloc_main2_l33[0..5] ∈ {8} +[value:final-states] Values at end of function main3: + __fc_heap_status ∈ [--..--] + Frama_C_entropy_source ∈ [--..--] + p ∈ {{ &__malloc_main3_l52 }} or ESCAPINGADDR + q ∈ ESCAPINGADDR + r ∈ {{ NULL ; &__malloc_main3_l52 }} or ESCAPINGADDR + s ∈ {{ &__realloc_main3_l65[0] ; &__realloc_main3_l65_0[0] }} + __malloc_main3_l52 ∈ ESCAPINGADDR +[value:final-states] Values at end of function main: + __fc_heap_status ∈ [--..--] + Frama_C_entropy_source ∈ [--..--] + __malloc_main1_l9[0..4] ∈ {5} + __malloc_main1_l12[0..5] ∈ {6} + __malloc_main2_l30[0..4] ∈ {7} + __malloc_main2_l33[0..5] ∈ {8} + __malloc_main3_l52 ∈ ESCAPINGADDR +[from] Computing for function main1 +[from] Computing for function malloc <-main1 +[from] Done for function malloc +[from] Computing for function Frama_C_interval <-main1 +[from] Done for function Frama_C_interval +[from] Computing for function Frama_C_dump_each <-main1 +[from] Done for function Frama_C_dump_each +[from] Computing for function realloc <-main1 +[from] Done for function realloc +[from] Computing for function free <-main1 +[from] Done for function free +[from] Done for function main1 +[from] Computing for function main2 +[from] Done for function main2 +[from] Computing for function main3 +[from] Done for function main3 +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function Frama_C_interval: + Frama_C_entropy_source FROM Frama_C_entropy_source (and SELF) + \result FROM Frama_C_entropy_source; min; max +[from] Function free: + __fc_heap_status FROM __fc_heap_status (and SELF) +[from] Function malloc: + __fc_heap_status FROM __fc_heap_status; size (and SELF) + \result FROM __fc_heap_status; size +[from] Function realloc: + __fc_heap_status FROM __fc_heap_status (and SELF) + \result FROM __fc_heap_status; ptr; size +[from] Function main1: + __fc_heap_status FROM __fc_heap_status (and SELF) + Frama_C_entropy_source FROM Frama_C_entropy_source (and SELF) + __malloc_main1_l9[0..4] FROM __fc_heap_status (and SELF) + __malloc_main1_l12[0..5] FROM __fc_heap_status (and SELF) +[from] Function main2: + __fc_heap_status FROM __fc_heap_status (and SELF) + Frama_C_entropy_source FROM Frama_C_entropy_source (and SELF) + __malloc_main2_l30[0..4] FROM __fc_heap_status (and SELF) + __malloc_main2_l33[0..5] FROM __fc_heap_status (and SELF) +[from] Function main3: + __fc_heap_status FROM __fc_heap_status (and SELF) + Frama_C_entropy_source FROM Frama_C_entropy_source (and SELF) + __malloc_main3_l52 FROM __fc_heap_status + __malloc_main3_l53 FROM __fc_heap_status +[from] Function main: + __fc_heap_status FROM __fc_heap_status; v (and SELF) + Frama_C_entropy_source FROM Frama_C_entropy_source; v (and SELF) + __malloc_main1_l9[0..4] FROM __fc_heap_status; v (and SELF) + __malloc_main1_l12[0..5] FROM __fc_heap_status; v (and SELF) + __malloc_main2_l30[0..4] FROM __fc_heap_status; v (and SELF) + __malloc_main2_l33[0..5] FROM __fc_heap_status; v (and SELF) + __malloc_main3_l52 FROM __fc_heap_status; v (and SELF) + __malloc_main3_l53 FROM __fc_heap_status; v (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main1: + __fc_heap_status; Frama_C_entropy_source; q; i; r; i_0; p; x; s; + __malloc_main1_l9[0..4]; __malloc_main1_l12[0..5] +[inout] Inputs for function main1: + __fc_heap_status; Frama_C_entropy_source +[inout] Out (internal) for function main2: + __fc_heap_status; Frama_C_entropy_source; q; i; r; i_0; p; x; s; + __malloc_main2_l30[0..4]; __malloc_main2_l33[0..5] +[inout] Inputs for function main2: + __fc_heap_status; Frama_C_entropy_source +[inout] Out (internal) for function main3: + __fc_heap_status; Frama_C_entropy_source; p; q; r; s; x; y; c; + __malloc_main3_l52; __malloc_main3_l53 +[inout] Inputs for function main3: + __fc_heap_status; Frama_C_entropy_source; __realloc_main3_l65[0]; + __realloc_main3_l65_0[0]; __realloc_main3_l65_1[0] +[inout] Out (internal) for function main: + __fc_heap_status; Frama_C_entropy_source; __malloc_main1_l9[0..4]; + __malloc_main1_l12[0..5]; __malloc_main2_l30[0..4]; + __malloc_main2_l33[0..5]; __malloc_main3_l52; __malloc_main3_l53 +[inout] Inputs for function main: + __fc_heap_status; Frama_C_entropy_source; __realloc_main3_l65[0]; + __realloc_main3_l65_0[0]; __realloc_main3_l65_1[0] diff --git a/tests/non-free/oracle_symblocs/snprintf0.err.oracle b/tests/non-free/oracle_symblocs/snprintf0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/non-free/oracle_symblocs/snprintf0.res.oracle b/tests/non-free/oracle_symblocs/snprintf0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e3b55e21639fd320522d50a26062b3e5f6bd690f --- /dev/null +++ b/tests/non-free/oracle_symblocs/snprintf0.res.oracle @@ -0,0 +1,14 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/non-free/snprintf0.i (no preprocessing) +[value] user error: no assigns specified for function 'snprintf', for which a builtin + or the specification will be used. Potential unsoundness. +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +tests/non-free/snprintf0.i:12:[value] warning: Destination possibly invalid. assert(match format and arguments) +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +tests/non-free/snprintf0.i:12:[kernel] warning: Neither code nor specification for function snprintf, generating default assigns from the prototype +[value:final-states] Values at end of function main: + b ∈ {0; 1; 2} diff --git a/tests/non-free/oracle_symblocs/sprintf.err.oracle b/tests/non-free/oracle_symblocs/sprintf.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/non-free/oracle_symblocs/sprintf.res.oracle b/tests/non-free/oracle_symblocs/sprintf.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..c1c515a7f8c1347c95fdc9c716f6bd4d33471cef --- /dev/null +++ b/tests/non-free/oracle_symblocs/sprintf.res.oracle @@ -0,0 +1,158 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/non-free/sprintf.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +tests/non-free/sprintf.c:25:[value] Precise construction of result impossible. +tests/non-free/sprintf.c:25:[value] warning: Destination possibly invalid. assert(match format and arguments) +tests/non-free/sprintf.c:32:[value] Precise construction of result impossible. +tests/non-free/sprintf.c:32:[value] warning: Destination possibly invalid. assert(match format and arguments) +tests/non-free/sprintf.c:34:[value] warning: out of bounds read. assert \valid_read(v); +tests/non-free/sprintf.c:34:[value] Precise construction of result impossible. +tests/non-free/sprintf.c:34:[value] warning: Destination possibly invalid. assert(match format and arguments) +tests/non-free/sprintf.c:36:[value] warning: Destination is not precise +tests/non-free/sprintf.c:37:[value] warning: Destination is not precise +tests/non-free/sprintf.c:40:[value] warning: Destination is not precise +tests/non-free/sprintf.c:40:[value] warning: Destination possibly invalid. assert(match format and arguments) +tests/non-free/sprintf.c:41:[value] warning: Destination is not precise +tests/non-free/sprintf.c:41:[value] warning: Destination possibly invalid. assert(match format and arguments) +tests/non-free/sprintf.c:42:[value] warning: Destination possibly invalid. assert(match format and arguments) +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + d1[0] ∈ {48} + [1] ∈ {120} + [2] ∈ {70} + [3] ∈ {65} + [4] ∈ {32} + [5] ∈ {48} + [6] ∈ {120} + [7] ∈ {49} + [8] ∈ {48} + [9] ∈ {49} + [10] ∈ {32} + [11] ∈ {124} + [12] ∈ {48} + [13] ∈ {120} + [14] ∈ {65} + [15] ∈ {10} + [16] ∈ {0} + [17..99] ∈ UNINITIALIZED + d2[0] ∈ {50} + [1] ∈ {53} + [2] ∈ {48} + [3] ∈ {32} + [4] ∈ {50} + [5] ∈ {53} + [6] ∈ {55} + [7] ∈ {32} + [8] ∈ {124} + [9] ∈ {49} + [10] ∈ {48} + [11] ∈ {10} + [12] ∈ {0} + [13..99] ∈ UNINITIALIZED + d3[0] ∈ {49} + [1] ∈ {32} + [2] ∈ {49} + [3] ∈ {48} + [4] ∈ {49} + [5] ∈ {32} + [6] ∈ {124} + [7] ∈ {49} + [8] ∈ {48} + [9] ∈ {10} + [10] ∈ {0} + [11..99] ∈ UNINITIALIZED + d4[0] ∈ {49} + [1] ∈ {32} + [2] ∈ {45} + [3] ∈ {51} + [4] ∈ {0} + [5..99] ∈ UNINITIALIZED + d4b[0] ∈ {49} + [1] ∈ {32} + [2] ∈ {45} + [3] ∈ {51} + [4] ∈ {0} + [5..99] ∈ UNINITIALIZED + d4c[0..99] ∈ [--..--] or UNINITIALIZED + d5[0] ∈ {49} + [1] ∈ {32} + [2] ∈ {45} + [3] ∈ {51} + [4] ∈ {0} + [5..99] ∈ UNINITIALIZED + d6[0..1] ∈ {123} + [2] ∈ {32} + [3] ∈ {38} + [4] ∈ {97} + [5] ∈ {32} + [6..7] ∈ {125} + [8] ∈ {0} + [9..99] ∈ UNINITIALIZED + d7[0] ∈ {116} + [1] ∈ {111} + [2] ∈ {116} + [3] ∈ {97} + [4] ∈ {116} + [5] ∈ {117} + [6] ∈ {116} + [7] ∈ {105} + [8] ∈ {0} + [9..99] ∈ UNINITIALIZED + d8[0] ∈ {102} + [1..2] ∈ {111} + [3] ∈ {98} + [4] ∈ {97} + [5] ∈ {114} + [6] ∈ {10} + [7] ∈ {0} + [8..99] ∈ UNINITIALIZED + u1[0..99] ∈ [--..--] or UNINITIALIZED + u2[0..1] ∈ {123} + [2] ∈ {32} + [3] ∈ {38} + [4] ∈ {99} + [5] ∈ {32} + [6..7] ∈ {125} + [8] ∈ {0} + [9..99] ∈ UNINITIALIZED + u3[0] ∈ {83} + [1..2] ∈ {101} + [3] ∈ {32} + [4] ∈ {39} + [5..99] ∈ [--..--] or UNINITIALIZED + u4a[0..2] ∈ {57} or UNINITIALIZED + [3] ∈ {0} or UNINITIALIZED + [4..99] ∈ UNINITIALIZED + u4b[0..2] ∈ UNINITIALIZED + [3..5] ∈ {57} or UNINITIALIZED + [6] ∈ {0} or UNINITIALIZED + [7..99] ∈ UNINITIALIZED + u5[0] ∈ {49} or UNINITIALIZED + [1] ∈ {50} or UNINITIALIZED + [2] ∈ {49; 51} or UNINITIALIZED + [3] ∈ {50; 52} or UNINITIALIZED + [4] ∈ {51; 53} or UNINITIALIZED + [5] ∈ {0; 52} or UNINITIALIZED + [6] ∈ {53} or UNINITIALIZED + [7] ∈ {0} or UNINITIALIZED + [8..99] ∈ UNINITIALIZED + u6[0..99] ∈ [--..--] or UNINITIALIZED + u7[0] ∈ {49} or UNINITIALIZED + [1] ∈ {50} or UNINITIALIZED + [2] ∈ {51} or UNINITIALIZED + [3] ∈ {52} or UNINITIALIZED + [4] ∈ {53} or UNINITIALIZED + [5] ∈ {0} or UNINITIALIZED + [6..96] ∈ UNINITIALIZED + [97] ∈ {49} or UNINITIALIZED + [98] ∈ {50} or UNINITIALIZED + [99] ∈ {51} or UNINITIALIZED + u8[0..99] ∈ UNINITIALIZED + ad1 ∈ {{ &d1[0] }} + ll ∈ {-3} + l ∈ {1} + __retres ∈ {0} diff --git a/tests/non-free/oracle_symblocs/str_allocated.err.oracle b/tests/non-free/oracle_symblocs/str_allocated.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/non-free/oracle_symblocs/str_allocated.res.oracle b/tests/non-free/oracle_symblocs/str_allocated.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e5e44c9184390537d66e1c900a2bfe5efacc08bb --- /dev/null +++ b/tests/non-free/oracle_symblocs/str_allocated.res.oracle @@ -0,0 +1,60 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/non-free/str_allocated.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + __fc_random_counter ∈ {0} + __fc_rand_max ∈ {32767} + __fc_heap_status ∈ [--..--] + nondet ∈ [--..--] +[value] computing for function memchr_bug <- main. + Called from tests/non-free/str_allocated.c:19. +tests/non-free/str_allocated.c:11:[value] entering loop for the first time +tests/non-free/str_allocated.c:12:[value] allocating variable __malloc_memchr_bug_l12 +tests/non-free/str_allocated.c:12:[value:malloc] marking variable `__malloc_memchr_bug_l12' as weak +tests/non-free/str_allocated.c:12:[value:malloc] resizing variable `__malloc_w_memchr_bug_l12' (0..-1) to fit 0..-1/7 +tests/non-free/str_allocated.c:14:[value] warning: accessing uninitialized left-value. assert \initialized(&b); +tests/non-free/str_allocated.c:14:[value] Call to builtin Frama_C_memchr(({{ (void const *)&__malloc_w_memchr_bug_l12 }}, + {1},{1})) +tests/non-free/str_allocated.c:14:[value] warning: builtin Frama_C_memchr: reading indeterminate data +[value] Recording results for memchr_bug +[value] Done for function memchr_bug +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +tests/non-free/str_allocated.c:14:[value] cannot evaluate ACSL term, unsupported ACSL construct: logic functions or predicates +[value:final-states] Values at end of function memchr_bug: + NON TERMINATING FUNCTION +[value:final-states] Values at end of function main: + __fc_heap_status ∈ [--..--] + __retres ∈ {0} +[from] Computing for function memchr_bug +[from] Computing for function malloc <-memchr_bug +[from] Done for function malloc +[from] Computing for function memchr <-memchr_bug +[from] Done for function memchr +[from] Non-terminating function memchr_bug (no dependencies) +[from] Done for function memchr_bug +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function malloc: + __fc_heap_status FROM __fc_heap_status; size (and SELF) + \result FROM __fc_heap_status; size +[from] Function memchr: + \result FROM s; c; __malloc_w_memchr_bug_l12[0] +[from] Function memchr_bug: + NON TERMINATING - NO EFFECTS +[from] Function main: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function memchr_bug: + __fc_heap_status; b; i +[inout] Inputs for function memchr_bug: + __fc_heap_status; __malloc_w_memchr_bug_l12[0] +[inout] Out (internal) for function main: + __fc_heap_status; __retres +[inout] Inputs for function main: + __fc_heap_status; nondet; __malloc_w_memchr_bug_l12[0] diff --git a/tests/non-free/oracle_symblocs/strchr.err.oracle b/tests/non-free/oracle_symblocs/strchr.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/non-free/oracle_symblocs/strchr.res.oracle b/tests/non-free/oracle_symblocs/strchr.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..a49bc2418f65a65e8c5c8f72600cc045d15bd1ad --- /dev/null +++ b/tests/non-free/oracle_symblocs/strchr.res.oracle @@ -0,0 +1,1614 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/non-free/strchr.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + Frama_C_entropy_source ∈ [--..--] + tab_str[0] ∈ {{ "" }} + [1] ∈ {{ "a" }} + [2] ∈ {{ "aa" }} + [3] ∈ {{ "aaa" }} + [4] ∈ {{ "aaaa" }} + [5] ∈ {{ "aaaaa" }} + [6] ∈ {{ "aaaaaa" }} + [7] ∈ {{ "aaaaaaaaa" }} + [8] ∈ {{ "aaaaaaaaaa" }} + [9] ∈ {{ "aaaaaaaaaaa" }} + [10] ∈ {{ "aaaaaaaaaaaa" }} + [11] ∈ {{ "aaaaaaaaaaaaa" }} + nondet ∈ [--..--] + static_str ∈ {0} + zero_str ∈ {0} +[value] computing for function strchr_small_sets <- main. + Called from tests/non-free/strchr.c:532. +[value] computing for function my_strchr <- strchr_small_sets <- main. + Called from tests/non-free/strchr.c:79. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "abc" + {0; 1} }},{0})) +[value] Called Frama_C_show_each_mystrchr({3}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +tests/non-free/strchr.c:80:[value] assertion got status valid. +[value] computing for function my_strchr <- strchr_small_sets <- main. + Called from tests/non-free/strchr.c:83. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "\000bc" + {0; 1} }},{0})) +[value] Called Frama_C_show_each_mystrchr({0; 3}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +tests/non-free/strchr.c:84:[value] assertion got status valid. +[value] computing for function my_strchr <- strchr_small_sets <- main. + Called from tests/non-free/strchr.c:86. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "" }},{0})) +[value] Called Frama_C_show_each_mystrchr({0}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +tests/non-free/strchr.c:87:[value] assertion got status valid. +[value] computing for function my_strchr <- strchr_small_sets <- main. + Called from tests/non-free/strchr.c:90. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "b\000c" + {0; 2} }},{0})) +[value] Called Frama_C_show_each_mystrchr({1; 3}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +tests/non-free/strchr.c:91:[value] assertion got status valid. +[value] computing for function my_strchr <- strchr_small_sets <- main. + Called from tests/non-free/strchr.c:95. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t[0] }},{0})) +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data +[value] Called Frama_C_show_each_mystrchr({0; 1}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +tests/non-free/strchr.c:96:[value] assertion got status valid. +[value] Recording results for strchr_small_sets +[value] Done for function strchr_small_sets +[value] computing for function strchr_zero_termination <- main. + Called from tests/non-free/strchr.c:533. +[value] computing for function my_strchr <- strchr_zero_termination <- main. + Called from tests/non-free/strchr.c:104. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &empty_or_non_terminated[0] }},{0})) +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data +[value] Called Frama_C_show_each_mystrchr({0}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +tests/non-free/strchr.c:105:[value] assertion got status valid. +[value] computing for function my_strchr <- strchr_zero_termination <- main. + Called from tests/non-free/strchr.c:109. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &non_terminated[0] }},{0})) +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data +[value] Recording results for my_strchr +[value] Done for function my_strchr +[value] computing for function my_strchr <- strchr_zero_termination <- main. + Called from tests/non-free/strchr.c:115. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &non_terminated2[2] }},{0})) +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data +[value] Recording results for my_strchr +[value] Done for function my_strchr +[value] Recording results for strchr_zero_termination +[value] Done for function strchr_zero_termination +[value] computing for function strchr_initialization <- main. + Called from tests/non-free/strchr.c:534. +[value] computing for function my_strchr <- strchr_initialization <- main. + Called from tests/non-free/strchr.c:123. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &empty_or_uninitialized[0] }},{0})) +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possible uninitialized values +[value] Called Frama_C_show_each_mystrchr({0}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +tests/non-free/strchr.c:124:[value] assertion got status valid. +[value] computing for function my_strchr <- strchr_initialization <- main. + Called from tests/non-free/strchr.c:127. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &uninitialized[0] }},{0})) +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data +[value] Recording results for my_strchr +[value] Done for function my_strchr +[value] computing for function my_strchr <- strchr_initialization <- main. + Called from tests/non-free/strchr.c:132. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &s[0] }},{0})) +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possible uninitialized values +[value] Called Frama_C_show_each_mystrchr({1}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +tests/non-free/strchr.c:133:[value] assertion got status valid. +[value] computing for function my_strchr <- strchr_initialization <- main. + Called from tests/non-free/strchr.c:139. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t[0] }},{0})) +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possible uninitialized values +[value] Called Frama_C_show_each_mystrchr({3}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +tests/non-free/strchr.c:140:[value] assertion got status valid. +[value] Recording results for strchr_initialization +[value] Done for function strchr_initialization +[value] computing for function strchr_large <- main. + Called from tests/non-free/strchr.c:535. +[value] computing for function init_array_nondet <- strchr_large <- main. + Called from tests/non-free/strchr.c:188. +tests/non-free/strchr.c:180:[value] Call to builtin memset(({{ (void *)&a }},{1; 2},{100})) +[value] Recording results for init_array_nondet +[value] Done for function init_array_nondet +[value] computing for function Frama_C_interval <- strchr_large <- main. + Called from tests/non-free/strchr.c:191. +[value] using specification for function Frama_C_interval +share/libc/__fc_builtin.h:50:[value] function Frama_C_interval: precondition got status valid. +[value] Done for function Frama_C_interval +[value] computing for function my_strchr <- strchr_large <- main. + Called from tests/non-free/strchr.c:192. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &a + [3..30] }},{0})) +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating + possible uninitialized values + possible escaping addresses + possibly reading indeterminate data +[value] Called Frama_C_show_each_mystrchr([-1..75]) +[value] Recording results for my_strchr +[value] Done for function my_strchr +tests/non-free/strchr.c:193:[value] assertion got status valid. +[value] computing for function Frama_C_interval <- strchr_large <- main. + Called from tests/non-free/strchr.c:195. +[value] Done for function Frama_C_interval +[value] computing for function my_strchr <- strchr_large <- main. + Called from tests/non-free/strchr.c:196. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &a + [5..17] }},{0})) +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating + possible uninitialized values + possible escaping addresses + possibly reading indeterminate data +[value] Called Frama_C_show_each_mystrchr([-1..20]) +[value] Recording results for my_strchr +[value] Done for function my_strchr +tests/non-free/strchr.c:197:[value] assertion got status valid. +tests/non-free/strchr.c:198:[value] warning: assertion 'refined' got status unknown. +[value] computing for function Frama_C_interval <- strchr_large <- main. + Called from tests/non-free/strchr.c:200. +[value] Done for function Frama_C_interval +[value] computing for function my_strchr <- strchr_large <- main. + Called from tests/non-free/strchr.c:201. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &a + [60..74] }},{0})) +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating + possible uninitialized values + possible escaping addresses + possibly reading indeterminate data +[value] Called Frama_C_show_each_mystrchr([-1..75]) +[value] Recording results for my_strchr +[value] Done for function my_strchr +tests/non-free/strchr.c:202:[value] assertion got status valid. +tests/non-free/strchr.c:203:[value] warning: assertion 'refined' got status unknown. +[value] computing for function Frama_C_interval <- strchr_large <- main. + Called from tests/non-free/strchr.c:205. +[value] Done for function Frama_C_interval +[value] computing for function my_strchr <- strchr_large <- main. + Called from tests/non-free/strchr.c:206. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &a + [63..80] }},{0})) +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating + possible uninitialized values + possible escaping addresses + possibly reading indeterminate data +[value] Called Frama_C_show_each_mystrchr([-1..79]) +[value] Recording results for my_strchr +[value] Done for function my_strchr +tests/non-free/strchr.c:207:[value] assertion got status valid. +tests/non-free/strchr.c:208:[value] warning: assertion 'refined' got status unknown. +[value] computing for function init_array_nondet <- strchr_large <- main. + Called from tests/non-free/strchr.c:210. +tests/non-free/strchr.c:180:[value] Call to builtin memset(({{ (void *)&a }},{0; 2},{100})) +[value] Recording results for init_array_nondet +[value] Done for function init_array_nondet +[value] computing for function Frama_C_interval <- strchr_large <- main. + Called from tests/non-free/strchr.c:211. +[value] Done for function Frama_C_interval +[value] computing for function my_strchr <- strchr_large <- main. + Called from tests/non-free/strchr.c:212. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &a + [50..70] }},{0})) +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating + possible uninitialized values + possible escaping addresses + possibly reading indeterminate data +[value] Called Frama_C_show_each_mystrchr([-1..99]) +[value] Recording results for my_strchr +[value] Done for function my_strchr +tests/non-free/strchr.c:213:[value] assertion got status valid. +[value] Recording results for strchr_large +[value] Done for function strchr_large +[value] computing for function strchr_large_uninit <- main. + Called from tests/non-free/strchr.c:536. +[value] computing for function init_array_nondet <- strchr_large_uninit <- main. + Called from tests/non-free/strchr.c:220. +tests/non-free/strchr.c:180:[value] Call to builtin memset(({{ (void *)&a }},{1; 2},{40})) +[value] Recording results for init_array_nondet +[value] Done for function init_array_nondet +[value] computing for function init_array_nondet <- strchr_large_uninit <- main. + Called from tests/non-free/strchr.c:221. +tests/non-free/strchr.c:180:[value] Call to builtin memset(({{ (void *)&a[50] }},{3; 4},{45})) +[value] Recording results for init_array_nondet +[value] Done for function init_array_nondet +[value] computing for function Frama_C_interval <- strchr_large_uninit <- main. + Called from tests/non-free/strchr.c:225. +[value] Done for function Frama_C_interval +[value] computing for function my_strchr <- strchr_large_uninit <- main. + Called from tests/non-free/strchr.c:226. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &a + [3..30] }},{0})) +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating + possible uninitialized values + possible escaping addresses + possibly reading indeterminate data +[value] Called Frama_C_show_each_mystrchr([-1..29]) +[value] Recording results for my_strchr +[value] Done for function my_strchr +tests/non-free/strchr.c:227:[value] assertion got status valid. +tests/non-free/strchr.c:228:[value] warning: assertion 'refined' got status unknown. +[value] computing for function Frama_C_interval <- strchr_large_uninit <- main. + Called from tests/non-free/strchr.c:231. +[value] Done for function Frama_C_interval +[value] computing for function my_strchr <- strchr_large_uninit <- main. + Called from tests/non-free/strchr.c:232. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &a + [63..80] }},{0})) +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating + possible uninitialized values + possible escaping addresses + possibly reading indeterminate data +[value] Called Frama_C_show_each_mystrchr([-1..79]) +[value] Recording results for my_strchr +[value] Done for function my_strchr +tests/non-free/strchr.c:233:[value] assertion got status valid. +tests/non-free/strchr.c:234:[value] warning: assertion 'refined' got status unknown. +[value] computing for function Frama_C_interval <- strchr_large_uninit <- main. + Called from tests/non-free/strchr.c:236. +[value] Done for function Frama_C_interval +[value] computing for function my_strchr <- strchr_large_uninit <- main. + Called from tests/non-free/strchr.c:237. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &a + [45..55] }},{0})) +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating + possible uninitialized values + possible escaping addresses + possibly reading indeterminate data +[value] Called Frama_C_show_each_mystrchr([-1..75]) +[value] Recording results for my_strchr +[value] Done for function my_strchr +tests/non-free/strchr.c:238:[value] assertion got status valid. +tests/non-free/strchr.c:239:[value] warning: assertion 'refined' got status unknown. +[value] Recording results for strchr_large_uninit +[value] Done for function strchr_large_uninit +[value] computing for function strchr_misc_array <- main. + Called from tests/non-free/strchr.c:537. +[value] computing for function Frama_C_interval <- strchr_misc_array <- main. + Called from tests/non-free/strchr.c:261. +[value] Done for function Frama_C_interval +[value] computing for function my_strchr <- strchr_misc_array <- main. + Called from tests/non-free/strchr.c:262. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "" ; "a" ; "aa" ; "aaa" ; "aaaa" ; + "aaaaa" ; "aaaaaa" ; "aaaaaaaaa" ; + "aaaaaaaaaa" ; "aaaaaaaaaaa" ; + "aaaaaaaaaaaa" ; "aaaaaaaaaaaaa" }}, + {0})) +tests/non-free/strchr.c:54:[value] warning: pointer subtraction. assert \base_addr(ss) ≡ \base_addr(s); +[value] Called Frama_C_show_each_mystrchr([0..13]) +[value] Recording results for my_strchr +[value] Done for function my_strchr +tests/non-free/strchr.c:263:[value] assertion got status valid. +[value] Recording results for strchr_misc_array +[value] Done for function strchr_misc_array +[value] computing for function strchr_misc <- main. + Called from tests/non-free/strchr.c:538. +[value] computing for function my_strchr <- strchr_misc <- main. + Called from tests/non-free/strchr.c:293. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &unterminated_string[0] }},{0})) +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data +[value] Recording results for my_strchr +[value] Done for function my_strchr +[value] computing for function my_strchr <- strchr_misc <- main. + Called from tests/non-free/strchr.c:296. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "Hello World\n" ; "Bonjour Monde\n" }}, + {0})) +[value] Called Frama_C_show_each_mystrchr({12; 14}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +tests/non-free/strchr.c:297:[value] assertion got status valid. +[value] computing for function my_strchr2 <- strchr_misc <- main. + Called from tests/non-free/strchr.c:299. +tests/non-free/strchr.c:62:[value] Call to builtin Frama_C_strchr(({{ &x + {0; 3} }},{0})) +tests/non-free/strchr.c:62:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data +[value] Called Frama_C_show_each_mystrchr2({0}) +[value] Recording results for my_strchr2 +[value] Done for function my_strchr2 +tests/non-free/strchr.c:300:[value] assertion got status valid. +[value] computing for function my_strchr <- strchr_misc <- main. + Called from tests/non-free/strchr.c:302. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &loc_char_array[0] }},{0})) +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data +[value] Recording results for my_strchr +[value] Done for function my_strchr +[value] computing for function my_strchr <- strchr_misc <- main. + Called from tests/non-free/strchr.c:303. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "abc\000\000\000abc" }},{0})) +[value] Called Frama_C_show_each_mystrchr({3}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +tests/non-free/strchr.c:304:[value] assertion got status valid. +[value] computing for function my_strchr <- strchr_misc <- main. + Called from tests/non-free/strchr.c:305. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "abc\000\000\000abc" + {4} }},{0})) +[value] Called Frama_C_show_each_mystrchr({4}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +tests/non-free/strchr.c:306:[value] assertion got status valid. +[value] computing for function my_strchr <- strchr_misc <- main. + Called from tests/non-free/strchr.c:307. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "abc\000\000\000abc" + {5} }},{0})) +[value] Called Frama_C_show_each_mystrchr({5}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +tests/non-free/strchr.c:308:[value] assertion got status valid. +[value] computing for function my_strchr <- strchr_misc <- main. + Called from tests/non-free/strchr.c:309. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "abc\000\000\000abc" + {6} }},{0})) +[value] Called Frama_C_show_each_mystrchr({9}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +tests/non-free/strchr.c:310:[value] assertion got status valid. +[value] Recording results for strchr_misc +[value] Done for function strchr_misc +[value] computing for function strchr_misc2 <- main. + Called from tests/non-free/strchr.c:539. +[value] computing for function my_strchr2 <- strchr_misc2 <- main. + Called from tests/non-free/strchr.c:319. +tests/non-free/strchr.c:62:[value] Call to builtin Frama_C_strchr(({{ "abc" + {0; 1} ; "ABCD" + {0; 1} }},{0})) +tests/non-free/strchr.c:67:[value] warning: pointer subtraction. assert \base_addr(s) ≡ \base_addr((char *)base); +[value] Called Frama_C_show_each_mystrchr2({3; 4}) +[value] Recording results for my_strchr2 +[value] Done for function my_strchr2 +tests/non-free/strchr.c:320:[value] assertion got status valid. +[value] computing for function my_strchr2 <- strchr_misc2 <- main. + Called from tests/non-free/strchr.c:323. +tests/non-free/strchr.c:62:[value] Call to builtin Frama_C_strchr(({{ "efg" + {1; 2} ; "EFGH" + {1; 2} }},{0})) +[value] Called Frama_C_show_each_mystrchr2({3; 4}) +[value] Recording results for my_strchr2 +[value] Done for function my_strchr2 +tests/non-free/strchr.c:324:[value] assertion got status valid. +tests/non-free/strchr.c:327:[value] entering loop for the first time +[value] computing for function my_strchr <- strchr_misc2 <- main. + Called from tests/non-free/strchr.c:328. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "mno\000pqr" ; "MNOP\000QRS" }},{0})) +[value] Called Frama_C_show_each_mystrchr({3; 4}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +tests/non-free/strchr.c:329:[value] assertion got status valid. +[value] computing for function my_strchr <- strchr_misc2 <- main. + Called from tests/non-free/strchr.c:328. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "mno\000pqr" + {0; 1} ; + "MNOP\000QRS" + {0; 1} }},{0})) +[value] Called Frama_C_show_each_mystrchr({3; 4}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +[value] computing for function my_strchr <- strchr_misc2 <- main. + Called from tests/non-free/strchr.c:328. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "mno\000pqr" + {0; 1; 2} ; + "MNOP\000QRS" + {0; 1; 2} }},{0})) +[value] Called Frama_C_show_each_mystrchr({3; 4}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +[value] computing for function my_strchr <- strchr_misc2 <- main. + Called from tests/non-free/strchr.c:328. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "mno\000pqr" + {0; 1; 2; 3; 4; 5; 6; 7} ; + "MNOP\000QRS" + {0; 1; 2; 3; 4; 5; 6; 7} }}, + {0})) +[value] Called Frama_C_show_each_mystrchr({3; 4; 7; 8}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +[value] computing for function my_strchr <- strchr_misc2 <- main. + Called from tests/non-free/strchr.c:328. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "mno\000pqr" + {0; 1; 2; 3; 4; 5; 6; 7} ; + "MNOP\000QRS" + {0; 1; 2; 3; 4; 5; 6; 7} }}, + {0})) +[value] Called Frama_C_show_each_mystrchr({3; 4; 7; 8}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +[value] computing for function my_strchr <- strchr_misc2 <- main. + Called from tests/non-free/strchr.c:335. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &maybe_init[0] }},{0})) +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possible uninitialized values +[value] Called Frama_C_show_each_mystrchr({1}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +tests/non-free/strchr.c:336:[value] assertion got status valid. +[value] Recording results for strchr_misc2 +[value] Done for function strchr_misc2 +[value] computing for function strchr_bitfields <- main. + Called from tests/non-free/strchr.c:540. +tests/non-free/strchr.c:157:[value] Call to builtin Frama_C_strchr(({{ (char const *)&s }},{0})) +tests/non-free/strchr.c:157:[value] warning: builtin Frama_C_strchr: reading indeterminate data +[value] Recording results for strchr_bitfields +[value] Done for function strchr_bitfields +[value] computing for function strchr_bitfields2 <- main. + Called from tests/non-free/strchr.c:541. +[value] computing for function my_strchr <- strchr_bitfields2 <- main. + Called from tests/non-free/strchr.c:174. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ (char const *)&s }},{0})) +[value] Called Frama_C_show_each_mystrchr({2}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +tests/non-free/strchr.c:175:[value] assertion got status valid. +[value] Recording results for strchr_bitfields2 +[value] Done for function strchr_bitfields2 +[value] computing for function strchr_escaping <- main. + Called from tests/non-free/strchr.c:542. +tests/non-free/strchr.c:249:[value] warning: locals {x} escaping the scope of a block of strchr_escaping through s +[value] computing for function my_strchr <- strchr_escaping <- main. + Called from tests/non-free/strchr.c:252. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &s[0] }},{0})) +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possible escaping addresses +[value] Called Frama_C_show_each_mystrchr({0}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +tests/non-free/strchr.c:253:[value] assertion got status valid. +[value] computing for function my_strchr <- strchr_escaping <- main. + Called from tests/non-free/strchr.c:255. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &s[0] }},{0})) +[value] Called Frama_C_show_each_mystrchr({0}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +tests/non-free/strchr.c:256:[value] assertion got status valid. +[value] Recording results for strchr_escaping +[value] Done for function strchr_escaping +[value] computing for function strchr_big_array <- main. + Called from tests/non-free/strchr.c:543. +tests/non-free/strchr.c:346:[value] warning: out of bounds write. assert \valid(p); +tests/non-free/strchr.c:348:[value] warning: out of bounds write. assert \valid(p); +tests/non-free/strchr.c:350:[value] warning: out of bounds write. assert \valid(p); +[value] computing for function my_strchr <- strchr_big_array <- main. + Called from tests/non-free/strchr.c:359. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ (char const *)&u }},{0})) +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possible uninitialized values +[value] Called Frama_C_show_each_mystrchr({1}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +[value] computing for function my_strchr <- strchr_big_array <- main. + Called from tests/non-free/strchr.c:360. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ (char const *)&r }},{0})) +tests/non-free/strchr.c:49:[kernel] more than 200(201) locations to update in array. Approximating. +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possible uninitialized values +[value] Called Frama_C_show_each_mystrchr({1}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +[value] computing for function my_strchr <- strchr_big_array <- main. + Called from tests/non-free/strchr.c:361. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ (char const *)&t }},{0})) +tests/non-free/strchr.c:49:[kernel] more than 200(1000000) locations to update in array. Approximating. +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possible uninitialized values +[value] Called Frama_C_show_each_mystrchr({1}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +[value] Called Frama_C_show_each({1}, {1}, {1}) +tests/non-free/strchr.c:363:[value] assertion got status valid. +tests/non-free/strchr.c:364:[value] assertion got status valid. +tests/non-free/strchr.c:365:[value] assertion got status valid. +[value] computing for function my_strchr <- strchr_big_array <- main. + Called from tests/non-free/strchr.c:367. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &u + [0..4294967295] }},{0})) +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating + possible uninitialized values + possible escaping addresses + possibly reading indeterminate data +[value] Called Frama_C_show_each_mystrchr([-1..799]) +[value] Recording results for my_strchr +[value] Done for function my_strchr +[value] computing for function my_strchr <- strchr_big_array <- main. + Called from tests/non-free/strchr.c:368. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &r + [0..4294967295] }},{0})) +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating + possible uninitialized values + possible escaping addresses + possibly reading indeterminate data +[value] Called Frama_C_show_each_mystrchr([-1..803]) +[value] Recording results for my_strchr +[value] Done for function my_strchr +[value] computing for function my_strchr <- strchr_big_array <- main. + Called from tests/non-free/strchr.c:369. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t + [0..4294967295] }},{0})) +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating + possible uninitialized values + possible escaping addresses + possibly reading indeterminate data +[value] Called Frama_C_show_each_mystrchr([-1..3999999]) +[value] Recording results for my_strchr +[value] Done for function my_strchr +[value] Called Frama_C_show_each([-1..799], [-1..803], [-1..3999999]) +tests/non-free/strchr.c:371:[value] assertion got status valid. +tests/non-free/strchr.c:372:[value] assertion got status valid. +tests/non-free/strchr.c:373:[value] assertion got status valid. +tests/non-free/strchr.c:374:[value] warning: assertion 'refined' got status unknown. +tests/non-free/strchr.c:375:[value] warning: assertion 'refined' got status unknown. +tests/non-free/strchr.c:376:[value] warning: assertion 'refined' got status unknown. +[value] computing for function init_array_nondet <- strchr_big_array <- main. + Called from tests/non-free/strchr.c:378. +tests/non-free/strchr.c:180:[value] Call to builtin memset(({{ (void *)&u }},{0; 1},{800})) +[value] Recording results for init_array_nondet +[value] Done for function init_array_nondet +[value] computing for function init_array_nondet <- strchr_big_array <- main. + Called from tests/non-free/strchr.c:379. +tests/non-free/strchr.c:180:[value] Call to builtin memset(({{ (void *)&r }},{0; 1},{804})) +[value] Recording results for init_array_nondet +[value] Done for function init_array_nondet +[value] computing for function init_array_nondet <- strchr_big_array <- main. + Called from tests/non-free/strchr.c:380. +tests/non-free/strchr.c:180:[value] Call to builtin memset(({{ (void *)&t }},{0; 1},{4000000})) +[value] Recording results for init_array_nondet +[value] Done for function init_array_nondet +tests/non-free/strchr.c:382:[value] warning: out of bounds write. assert \valid(p); +tests/non-free/strchr.c:384:[value] warning: out of bounds write. assert \valid(p); +tests/non-free/strchr.c:386:[value] warning: out of bounds write. assert \valid(p); +[value] computing for function my_strchr <- strchr_big_array <- main. + Called from tests/non-free/strchr.c:387. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ (char const *)&u }},{0})) +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data +[value] Called Frama_C_show_each_mystrchr([0..799]) +[value] Recording results for my_strchr +[value] Done for function my_strchr +[value] computing for function my_strchr <- strchr_big_array <- main. + Called from tests/non-free/strchr.c:388. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ (char const *)&r }},{0})) +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data +[value] Called Frama_C_show_each_mystrchr([0..803]) +[value] Recording results for my_strchr +[value] Done for function my_strchr +[value] computing for function my_strchr <- strchr_big_array <- main. + Called from tests/non-free/strchr.c:389. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ (char const *)&t }},{0})) +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data +[value] Called Frama_C_show_each_mystrchr([0..3999999]) +[value] Recording results for my_strchr +[value] Done for function my_strchr +[value] Called Frama_C_show_each([0..799], [0..803], [0..3999999]) +tests/non-free/strchr.c:391:[value] assertion got status valid. +tests/non-free/strchr.c:392:[value] assertion got status valid. +tests/non-free/strchr.c:393:[value] assertion got status valid. +[value] computing for function my_strchr <- strchr_big_array <- main. + Called from tests/non-free/strchr.c:395. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &u + [0..4294967295] }},{0})) +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating + possible uninitialized values + possible escaping addresses + possibly reading indeterminate data +[value] Called Frama_C_show_each_mystrchr([-1..799]) +[value] Recording results for my_strchr +[value] Done for function my_strchr +[value] computing for function my_strchr <- strchr_big_array <- main. + Called from tests/non-free/strchr.c:396. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &r + [0..4294967295] }},{0})) +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating + possible uninitialized values + possible escaping addresses + possibly reading indeterminate data +[value] Called Frama_C_show_each_mystrchr([-1..803]) +[value] Recording results for my_strchr +[value] Done for function my_strchr +[value] computing for function my_strchr <- strchr_big_array <- main. + Called from tests/non-free/strchr.c:397. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t + [0..4294967295] }},{0})) +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating + possible uninitialized values + possible escaping addresses + possibly reading indeterminate data +[value] Called Frama_C_show_each_mystrchr([-1..3999999]) +[value] Recording results for my_strchr +[value] Done for function my_strchr +[value] Called Frama_C_show_each([-1..799], [-1..803], [-1..3999999]) +tests/non-free/strchr.c:399:[value] assertion got status valid. +tests/non-free/strchr.c:400:[value] assertion got status valid. +tests/non-free/strchr.c:401:[value] assertion got status valid. +tests/non-free/strchr.c:402:[value] warning: assertion 'refined' got status unknown. +tests/non-free/strchr.c:403:[value] warning: assertion 'refined' got status unknown. +tests/non-free/strchr.c:404:[value] warning: assertion 'refined' got status unknown. +[value] Recording results for strchr_big_array +[value] Done for function strchr_big_array +[value] computing for function strchr_no_zero_but_ok <- main. + Called from tests/non-free/strchr.c:544. +[value] computing for function my_strchr <- strchr_no_zero_but_ok <- main. + Called from tests/non-free/strchr.c:415. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &s[0] }},{0})) +[value] Called Frama_C_show_each_mystrchr({10}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +tests/non-free/strchr.c:416:[value] assertion got status valid. +[value] computing for function my_strchr <- strchr_no_zero_but_ok <- main. + Called from tests/non-free/strchr.c:417. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &s[0] }},{0})) +[value] Called Frama_C_show_each_mystrchr({10}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +tests/non-free/strchr.c:418:[value] assertion got status valid. +[value] computing for function my_strchr <- strchr_no_zero_but_ok <- main. + Called from tests/non-free/strchr.c:420. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &s{[1], [8]} }},{0})) +[value] Called Frama_C_show_each_mystrchr({10}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +tests/non-free/strchr.c:421:[value] assertion got status valid. +[value] computing for function my_strchr <- strchr_no_zero_but_ok <- main. + Called from tests/non-free/strchr.c:423. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &s{[7], [11]} }},{0})) +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data +[value] Called Frama_C_show_each_mystrchr({10; 14; 15; 16; 17; 18; 19}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +tests/non-free/strchr.c:424:[value] assertion got status valid. +[value] computing for function my_strchr <- strchr_no_zero_but_ok <- main. + Called from tests/non-free/strchr.c:426. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &s{[7], [18]} }},{0})) +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data +[value] Called Frama_C_show_each_mystrchr({10; 18; 19}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +tests/non-free/strchr.c:427:[value] assertion got status valid. +[value] Recording results for strchr_no_zero_but_ok +[value] Done for function strchr_no_zero_but_ok +[value] computing for function strchr_small_sets_chars <- main. + Called from tests/non-free/strchr.c:545. +[value] Called Frama_C_show_each_c({97}) +[value] computing for function strchr_small_sets_no_assertions <- + strchr_small_sets_chars <- main. + Called from tests/non-free/strchr.c:456. +[value] computing for function my_strchr <- strchr_small_sets_no_assertions <- + strchr_small_sets_chars <- main. + Called from tests/non-free/strchr.c:435. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "abc" + {0; 1} }},{97})) +[value] Called Frama_C_show_each_mystrchr({-1; 0}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +[value] computing for function my_strchr <- strchr_small_sets_no_assertions <- + strchr_small_sets_chars <- main. + Called from tests/non-free/strchr.c:438. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "\000bc" + {0; 1} }},{97})) +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data +[value] Called Frama_C_show_each_mystrchr({-1}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +[value] computing for function my_strchr <- strchr_small_sets_no_assertions <- + strchr_small_sets_chars <- main. + Called from tests/non-free/strchr.c:440. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "" }},{97})) +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data +[value] Called Frama_C_show_each_mystrchr({-1}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +[value] computing for function my_strchr <- strchr_small_sets_no_assertions <- + strchr_small_sets_chars <- main. + Called from tests/non-free/strchr.c:443. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "b\000c" + {0; 2} }},{97})) +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data +[value] Called Frama_C_show_each_mystrchr({-1}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +[value] computing for function my_strchr <- strchr_small_sets_no_assertions <- + strchr_small_sets_chars <- main. + Called from tests/non-free/strchr.c:447. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t[0] }},{97})) +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data +[value] Called Frama_C_show_each_mystrchr({0; 1}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +[value] Recording results for strchr_small_sets_no_assertions +[value] Done for function strchr_small_sets_no_assertions +[value] Called Frama_C_show_each_res({-1; 0}, {-1}, {-1}, {-1}, {0; 1}) +tests/non-free/strchr.c:458:[value] assertion got status valid. +tests/non-free/strchr.c:459:[value] assertion got status valid. +tests/non-free/strchr.c:460:[value] assertion got status valid. +tests/non-free/strchr.c:461:[value] assertion got status valid. +tests/non-free/strchr.c:462:[value] assertion got status valid. +[value] computing for function strchr_small_sets_no_assertions <- + strchr_small_sets_chars <- main. + Called from tests/non-free/strchr.c:465. +[value] computing for function my_strchr <- strchr_small_sets_no_assertions <- + strchr_small_sets_chars <- main. + Called from tests/non-free/strchr.c:435. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "abc" + {0; 1} }},{98})) +[value] Called Frama_C_show_each_mystrchr({1}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +[value] computing for function my_strchr <- strchr_small_sets_no_assertions <- + strchr_small_sets_chars <- main. + Called from tests/non-free/strchr.c:438. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "\000bc" + {0; 1} }},{98})) +[value] Called Frama_C_show_each_mystrchr({-1; 1}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +[value] computing for function my_strchr <- strchr_small_sets_no_assertions <- + strchr_small_sets_chars <- main. + Called from tests/non-free/strchr.c:440. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "" }},{98})) +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data +[value] Called Frama_C_show_each_mystrchr({-1}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +[value] computing for function my_strchr <- strchr_small_sets_no_assertions <- + strchr_small_sets_chars <- main. + Called from tests/non-free/strchr.c:443. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "b\000c" + {0; 2} }},{98})) +[value] Called Frama_C_show_each_mystrchr({-1; 0}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +[value] computing for function my_strchr <- strchr_small_sets_no_assertions <- + strchr_small_sets_chars <- main. + Called from tests/non-free/strchr.c:447. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t[0] }},{98})) +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data +[value] Called Frama_C_show_each_mystrchr({0; 1}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +[value] Recording results for strchr_small_sets_no_assertions +[value] Done for function strchr_small_sets_no_assertions +[value] Called Frama_C_show_each_res({1}, {-1; 1}, {-1}, {-1; 0}, {0; 1}) +tests/non-free/strchr.c:467:[value] assertion got status valid. +tests/non-free/strchr.c:468:[value] assertion got status valid. +tests/non-free/strchr.c:469:[value] assertion got status valid. +tests/non-free/strchr.c:470:[value] assertion got status valid. +tests/non-free/strchr.c:471:[value] assertion got status valid. +[value] Called Frama_C_show_each_c({97; 98}) +[value] computing for function strchr_small_sets_no_assertions <- + strchr_small_sets_chars <- main. + Called from tests/non-free/strchr.c:475. +[value] computing for function my_strchr <- strchr_small_sets_no_assertions <- + strchr_small_sets_chars <- main. + Called from tests/non-free/strchr.c:435. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "abc" + {0; 1} }},{97; 98})) +[value] Called Frama_C_show_each_mystrchr({-1; 0; 1}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +[value] computing for function my_strchr <- strchr_small_sets_no_assertions <- + strchr_small_sets_chars <- main. + Called from tests/non-free/strchr.c:438. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "\000bc" + {0; 1} }},{97; 98})) +[value] Called Frama_C_show_each_mystrchr({-1; 1}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +[value] computing for function my_strchr <- strchr_small_sets_no_assertions <- + strchr_small_sets_chars <- main. + Called from tests/non-free/strchr.c:440. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "" }},{97; 98})) +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data +[value] Called Frama_C_show_each_mystrchr({-1}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +[value] computing for function my_strchr <- strchr_small_sets_no_assertions <- + strchr_small_sets_chars <- main. + Called from tests/non-free/strchr.c:443. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "b\000c" + {0; 2} }},{97; 98})) +[value] Called Frama_C_show_each_mystrchr({-1; 0}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +[value] computing for function my_strchr <- strchr_small_sets_no_assertions <- + strchr_small_sets_chars <- main. + Called from tests/non-free/strchr.c:447. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t[0] }},{97; 98})) +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data +[value] Called Frama_C_show_each_mystrchr({0; 1}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +[value] Recording results for strchr_small_sets_no_assertions +[value] Done for function strchr_small_sets_no_assertions +[value] Called Frama_C_show_each_res({-1; 0; 1}, {-1; 1}, {-1}, {-1; 0}, {0; 1}) +tests/non-free/strchr.c:478:[value] assertion got status valid. +tests/non-free/strchr.c:479:[value] assertion got status valid. +tests/non-free/strchr.c:480:[value] assertion got status valid. +tests/non-free/strchr.c:481:[value] assertion got status valid. +tests/non-free/strchr.c:482:[value] assertion got status valid. +[value] Called Frama_C_show_each_c({98; 99}) +[value] computing for function strchr_small_sets_no_assertions <- + strchr_small_sets_chars <- main. + Called from tests/non-free/strchr.c:486. +[value] computing for function my_strchr <- strchr_small_sets_no_assertions <- + strchr_small_sets_chars <- main. + Called from tests/non-free/strchr.c:435. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "abc" + {0; 1} }},{98; 99})) +[value] Called Frama_C_show_each_mystrchr({-1; 1; 2}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +[value] computing for function my_strchr <- strchr_small_sets_no_assertions <- + strchr_small_sets_chars <- main. + Called from tests/non-free/strchr.c:438. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "\000bc" + {0; 1} }},{98; 99})) +[value] Called Frama_C_show_each_mystrchr({-1; 1; 2}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +[value] computing for function my_strchr <- strchr_small_sets_no_assertions <- + strchr_small_sets_chars <- main. + Called from tests/non-free/strchr.c:440. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "" }},{98; 99})) +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data +[value] Called Frama_C_show_each_mystrchr({-1}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +[value] computing for function my_strchr <- strchr_small_sets_no_assertions <- + strchr_small_sets_chars <- main. + Called from tests/non-free/strchr.c:443. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "b\000c" + {0; 2} }},{98; 99})) +[value] Called Frama_C_show_each_mystrchr({-1; 0; 2}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +[value] computing for function my_strchr <- strchr_small_sets_no_assertions <- + strchr_small_sets_chars <- main. + Called from tests/non-free/strchr.c:447. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t[0] }},{98; 99})) +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data +[value] Called Frama_C_show_each_mystrchr({0; 1}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +[value] Recording results for strchr_small_sets_no_assertions +[value] Done for function strchr_small_sets_no_assertions +[value] Called Frama_C_show_each_res({-1; 1; 2}, {-1; 1; 2}, {-1}, {-1; 0; 2}, {0; 1}) +tests/non-free/strchr.c:488:[value] assertion got status valid. +tests/non-free/strchr.c:489:[value] warning: assertion 'refined' got status unknown. +tests/non-free/strchr.c:490:[value] assertion got status valid. +tests/non-free/strchr.c:491:[value] assertion got status valid. +tests/non-free/strchr.c:492:[value] assertion got status valid. +tests/non-free/strchr.c:493:[value] assertion got status valid. +[value] Called Frama_C_show_each_c({0; 98; 99}) +[value] computing for function strchr_small_sets_no_assertions <- + strchr_small_sets_chars <- main. + Called from tests/non-free/strchr.c:497. +[value] computing for function my_strchr <- strchr_small_sets_no_assertions <- + strchr_small_sets_chars <- main. + Called from tests/non-free/strchr.c:435. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "abc" + {0; 1} }},{0; 98; 99})) +[value] Called Frama_C_show_each_mystrchr({-1; 1; 2; 3}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +[value] computing for function my_strchr <- strchr_small_sets_no_assertions <- + strchr_small_sets_chars <- main. + Called from tests/non-free/strchr.c:438. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "\000bc" + {0; 1} }},{0; 98; 99})) +[value] Called Frama_C_show_each_mystrchr({-1; 0; 1; 2; 3}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +[value] computing for function my_strchr <- strchr_small_sets_no_assertions <- + strchr_small_sets_chars <- main. + Called from tests/non-free/strchr.c:440. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "" }},{0; 98; 99})) +[value] Called Frama_C_show_each_mystrchr({-1; 0}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +[value] computing for function my_strchr <- strchr_small_sets_no_assertions <- + strchr_small_sets_chars <- main. + Called from tests/non-free/strchr.c:443. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "b\000c" + {0; 2} }},{0; 98; 99})) +[value] Called Frama_C_show_each_mystrchr({-1; 0; 1; 2; 3}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +[value] computing for function my_strchr <- strchr_small_sets_no_assertions <- + strchr_small_sets_chars <- main. + Called from tests/non-free/strchr.c:447. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t[0] }},{0; 98; 99})) +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data +[value] Called Frama_C_show_each_mystrchr({-1; 0; 1}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +[value] Recording results for strchr_small_sets_no_assertions +[value] Done for function strchr_small_sets_no_assertions +[value] Called Frama_C_show_each_res({-1; 1; 2; 3}, + {-1; 0; 1; 2; 3}, + {-1; 0}, + {-1; 0; 1; 2; 3}, + {-1; 0; 1}) +tests/non-free/strchr.c:499:[value] assertion got status valid. +tests/non-free/strchr.c:500:[value] warning: assertion 'refined' got status unknown. +tests/non-free/strchr.c:501:[value] assertion got status valid. +tests/non-free/strchr.c:502:[value] assertion got status valid. +tests/non-free/strchr.c:503:[value] assertion got status valid. +tests/non-free/strchr.c:504:[value] assertion got status valid. +[value] Recording results for strchr_small_sets_chars +[value] Done for function strchr_small_sets_chars +[value] computing for function strchr_unbounded <- main. + Called from tests/non-free/strchr.c:546. +[value] computing for function my_strchr <- strchr_unbounded <- main. + Called from tests/non-free/strchr.c:511. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ "abcd" }},[-128..127])) +[value] Called Frama_C_show_each_mystrchr({-1; 0; 1; 2; 3; 4}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +tests/non-free/strchr.c:512:[value] assertion got status valid. +[value] computing for function my_strchr <- strchr_unbounded <- main. + Called from tests/non-free/strchr.c:516. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t[0] ; "ABCDEFGHIJKLMNOPQRSTUVWXYZ" }}, + [-128..127])) +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: reading indeterminate data +[value] Called Frama_C_show_each_mystrchr([-1..26]) +[value] Recording results for my_strchr +[value] Done for function my_strchr +tests/non-free/strchr.c:517:[value] assertion got status valid. +[value] computing for function init_array_nondet <- strchr_unbounded <- main. + Called from tests/non-free/strchr.c:518. +tests/non-free/strchr.c:180:[value] Call to builtin memset(({{ (void *)&t }},{0; 1},{30})) +[value] Recording results for init_array_nondet +[value] Done for function init_array_nondet +[value] computing for function my_strchr <- strchr_unbounded <- main. + Called from tests/non-free/strchr.c:519. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t[0] ; "ABCDEFGHIJKLMNOPQRSTUVWXYZ" }}, + [-128..127])) +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: possibly reading indeterminate data +[value] Called Frama_C_show_each_mystrchr([-1..29]) +[value] Recording results for my_strchr +[value] Done for function my_strchr +tests/non-free/strchr.c:520:[value] assertion got status valid. +[value] computing for function my_strchr <- strchr_unbounded <- main. + Called from tests/non-free/strchr.c:521. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ &t + [0..4294967295] ; + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + + [0..4294967295] }},[-128..127])) +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + range too large and/or imprecise, approximating + possible uninitialized values + possible escaping addresses + possibly reading indeterminate data +[value] Called Frama_C_show_each_mystrchr([-1..29]) +[value] Recording results for my_strchr +[value] Done for function my_strchr +tests/non-free/strchr.c:522:[value] assertion got status valid. +[value] Recording results for strchr_unbounded +[value] Done for function strchr_unbounded +[value] computing for function strchr_invalid <- main. + Called from tests/non-free/strchr.c:547. +[value] computing for function my_strchr <- strchr_invalid <- main. + Called from tests/non-free/strchr.c:528. +tests/non-free/strchr.c:49:[value] Call to builtin Frama_C_strchr(({{ garbled mix of &{s; "hello"} + (origin: Arithmetic + {tests/non-free/strchr.c:49}) }},{1})) +tests/non-free/strchr.c:49:[value] warning: builtin Frama_C_strchr: + string argument is too imprecise, cannot compute a useful result. +[value] Called Frama_C_show_each_mystrchr({-1}) +[value] Recording results for my_strchr +[value] Done for function my_strchr +[value] Recording results for strchr_invalid +[value] Done for function strchr_invalid +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function init_array_nondet: + from ∈ {-1} + to ∈ {-1} + val1 ∈ {-1} + val2 ∈ {-1} + val ∈ {0; 1; 2; 3; 4} + a[0..99] ∈ {0; 1; 2} + a[0..39] ∈ {1; 2} + [40..49] ∈ UNINITIALIZED + [50..94] ∈ {3; 4} or UNINITIALIZED + [95..99] ∈ UNINITIALIZED + u[0..199] ∈ {0; 16843009} + r[0..200] ∈ {0; 16843009; 270729319} or UNINITIALIZED + t[0..999999] ∈ {0; 16843009; 270729319} or UNINITIALIZED + t[0..29] ∈ {0; 1} +[value:final-states] Values at end of function my_strchr: + ss ∈ + {{ NULL ; &t{[0], [1]} ; &empty_or_non_terminated[0] ; + &empty_or_uninitialized[0] ; &s[1] ; &t[3] ; &s + {2} ; &a + [0..99] ; + &a + [0..79] ; &s[0] ; &maybe_init[1] ; &u + [0..799] ; + &r + [0..803] ; &t + [0..3999999] ; + &s{[10], [14], [15], [16], [17], [18], [19]} ; &t{[0], [1]} ; + &t + [0..29] ; "" ; "a" + {1} ; "aa" + {2} ; "aaa" + {3} ; + "aaaa" + {4} ; "aaaaa" + {5} ; "aaaaaa" + {6} ; "aaaaaaaaa" + {9} ; + "aaaaaaaaaa" + {10} ; "aaaaaaaaaaa" + {11} ; "aaaaaaaaaaaa" + {12} ; + "aaaaaaaaaaaaa" + {13} ; "abc" + {3} ; "\000bc" + {0; 3} ; "" ; + "b\000c" + {1; 3} ; "Hello World\n" + {12} ; + "abc\000\000\000abc" + {3; 4; 5; 9} ; "Bonjour Monde\n" + {14} ; + "mno\000pqr" + {3; 7} ; "MNOP\000QRS" + {4; 8} ; + "abc" + {0; 1; 2; 3} ; "\000bc" + {0; 1; 2; 3} ; "" ; + "b\000c" + {0; 1; 2; 3} ; "abcd" + {0; 1; 2; 3; 4} ; + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + [0..26] }} + res ∈ [-1..3999999] +[value:final-states] Values at end of function my_strchr2: + p ∈ + {{ &x + {0; 3} ; "abc" + {0; 1} ; "ABCD" + {0; 1} ; "efg" + {1; 2} ; + "EFGH" + {1; 2} }} + s ∈ + {{ (char *)&x ; "abc" + {3} ; "ABCD" + {4} ; "efg" + {3} ; "EFGH" + {4} }} + res ∈ {0; 3; 4} +[value:final-states] Values at end of function strchr_big_array: + c ∈ {0} + u[0..199] ∈ {0; 16843009; 270729319} + r[0..200] ∈ {0; 16843009; 270729319} + t[0..999999] ∈ {0; 16843009; 270729319} + p ∈ {{ &t + [0..3999996],0%4 }} + len_u ∈ [0..799] + len_r ∈ [0..803] + len_t ∈ [0..3999999] +[value:final-states] Values at end of function strchr_bitfields: + c ∈ {0} + s.a ∈ {3} + .b ∈ {1} + .[bits 16 to 31] ∈ UNINITIALIZED + .c ∈ {7} + .[bits 49 to 63] ∈ UNINITIALIZED + p ∈ {{ (char *)&s }} +[value:final-states] Values at end of function strchr_bitfields2: + c ∈ {0} + s.a ∈ {3} + .b ∈ {1} + .c ∈ {7} + .[bits 25 to 31] ∈ UNINITIALIZED + p ∈ {{ (char *)&s }} + z1 ∈ {2} +[value:final-states] Values at end of function strchr_escaping: + c ∈ {0} + s[0] ∈ {0} + [1..3] ∈ ESCAPINGADDR + z1 ∈ {0} + z2 ∈ {0} +[value:final-states] Values at end of function strchr_initialization: + c ∈ {0} + empty_or_uninitialized[0] ∈ {0} or UNINITIALIZED + z1 ∈ {0} + s[0] ∈ {1} or UNINITIALIZED + [1] ∈ {0} + z2 ∈ {1} + t[0..1] ∈ {10} + [2] ∈ {10} or UNINITIALIZED + [3] ∈ {0} + z3 ∈ {3} +[value:final-states] Values at end of function strchr_invalid: + s ∈ {{ "hello" }} +[value:final-states] Values at end of function strchr_large: + Frama_C_entropy_source ∈ [--..--] + c ∈ {0} + a[0..99] ∈ {0; 2} + offset ∈ [50..70] + z1 ∈ [-1..75] + z2 ∈ {20} + z3 ∈ {75} + z4 ∈ {75} + z5 ∈ [-1..99] +[value:final-states] Values at end of function strchr_large_uninit: + Frama_C_entropy_source ∈ [--..--] + c ∈ {0} + a[0..19] ∈ {1; 2} + [20] ∈ {0} + [21..39] ∈ {1; 2} + [40..49] ∈ UNINITIALIZED + [50..74] ∈ {3; 4} + [75] ∈ {0} + [76..94] ∈ {3; 4} + [95..97] ∈ UNINITIALIZED + [98] ∈ {0} + [99] ∈ UNINITIALIZED + offset ∈ {0} + z1 ∈ {20} + z2 ∈ {75} + z3 ∈ {75} +[value:final-states] Values at end of function strchr_misc: + c ∈ {0} + loc_str ∈ {{ "Bonjour Monde\n" }} + loc_char_array[0..2] ∈ UNINITIALIZED + [3] ∈ {0} + [4] ∈ UNINITIALIZED + sz1 ∈ {12; 14} + sz2 ∈ {0} + sz4a ∈ {3} + sz4b ∈ {4} + sz4c ∈ {5} + sz4d ∈ {9} + x ∈ {-1412567296} + str ∈ {{ (char *)&x }} + unterminated_string[0] ∈ {117} + [1] ∈ {110} + [2] ∈ {116} + [3] ∈ {101} + [4] ∈ {114} + [5] ∈ {109} + [6] ∈ {105} + [7] ∈ {110} + [8] ∈ {97} + [9] ∈ {116} + [10] ∈ {101} + [11] ∈ {100} + static_str ∈ {{ "Hello World\n" }} + zero_str ∈ {{ "abc\000\000\000abc" }} +[value:final-states] Values at end of function strchr_misc2: + c ∈ {0} + sz5 ∈ {3; 4} + sz6 ∈ {3; 4} + sz7 ∈ {3; 4; 7; 8} or UNINITIALIZED + sz8 ∈ {1} + s1 ∈ {{ "mno\000pqr" ; "MNOP\000QRS" }} + maybe_init[0] ∈ {65} or UNINITIALIZED + [1] ∈ {0} +[value:final-states] Values at end of function strchr_misc_array: + Frama_C_entropy_source ∈ [--..--] + c ∈ {0} + i ∈ [0..11] + sz3 ∈ [0..13] +[value:final-states] Values at end of function strchr_no_zero_but_ok: + c ∈ {0} + s[0..9] ∈ {1} + [10] ∈ {0} + [11..13] ∈ {1} + [14..19] ∈ {0; 1} + z1 ∈ {10} + z2 ∈ {10} + offs ∈ {7; 18} + z3 ∈ {10} + z4 ∈ {10; 14; 15; 16; 17; 18; 19} + z5 ∈ {10; 18; 19} +[value:final-states] Values at end of function strchr_small_sets: + c ∈ {0} + s ∈ {{ "b\000c" }} + o ∈ {0; 2} + z1 ∈ {3} + z2 ∈ {0; 3} + z3 ∈ {0} + z4 ∈ {1; 3} + t[0..1] ∈ {0; 1} + [2..3] ∈ {1} + z5 ∈ {0; 1} +[value:final-states] Values at end of function strchr_small_sets_no_assertions: + s ∈ {{ "b\000c" }} + o ∈ {0; 2} + t[0..1] ∈ {0; 1; 97; 98; 99} + [2..3] ∈ {1} + res[0..1] ∈ {-1; 0; 1; 2; 3} + [2] ∈ {-1; 0} + [3] ∈ {-1; 0; 1; 2; 3} + [4] ∈ {-1; 0; 1} + __retres ∈ {0} +[value:final-states] Values at end of function strchr_small_sets_chars: + c ∈ {0; 98; 99} + res[0] ∈ {1; 2; 3} + [1] ∈ {-1; 0; 1; 2; 3} + [2] ∈ {-1; 0} + [3] ∈ {-1; 0; 1; 2; 3} + [4] ∈ {-1; 0; 1} +[value:final-states] Values at end of function strchr_unbounded: + c ∈ [--..--] + s ∈ {{ &t[0] ; "ABCDEFGHIJKLMNOPQRSTUVWXYZ" }} + u1 ∈ {-1; 0; 1; 2; 3; 4} + t[0..29] ∈ {0; 1} + u2 ∈ [-1..26] + u3 ∈ [-1..29] + u4 ∈ [-1..29] +[value:final-states] Values at end of function strchr_zero_termination: + c ∈ {0} + empty_or_non_terminated[0] ∈ {0; 100} + z1 ∈ {0} + non_terminated[0] ∈ {88} + non_terminated2[0] ∈ {76} + [1] ∈ {0} + [2] ∈ {28} + [3] ∈ {14} + o ∈ {2; 3} +[value:final-states] Values at end of function main: + Frama_C_entropy_source ∈ [--..--] + static_str ∈ {{ "Hello World\n" }} + zero_str ∈ {{ "abc\000\000\000abc" }} + __retres ∈ {0} +[from] Computing for function init_array_nondet +[from] Computing for function Frama_C_memset <-init_array_nondet +[from] Done for function Frama_C_memset +[from] Done for function init_array_nondet +[from] Computing for function my_strchr +[from] Computing for function Frama_C_strchr <-my_strchr +[from] Done for function Frama_C_strchr +[from] Done for function my_strchr +[from] Computing for function my_strchr2 +[from] Done for function my_strchr2 +[from] Computing for function strchr_big_array +[from] Done for function strchr_big_array +[from] Computing for function strchr_bitfields +[from] Done for function strchr_bitfields +[from] Computing for function strchr_bitfields2 +[from] Done for function strchr_bitfields2 +[from] Computing for function strchr_escaping +[from] Done for function strchr_escaping +[from] Computing for function strchr_initialization +[from] Done for function strchr_initialization +[from] Computing for function strchr_invalid +[from] Done for function strchr_invalid +[from] Computing for function strchr_large +[from] Computing for function Frama_C_interval <-strchr_large +[from] Done for function Frama_C_interval +[from] Done for function strchr_large +[from] Computing for function strchr_large_uninit +[from] Done for function strchr_large_uninit +[from] Computing for function strchr_misc +[from] Done for function strchr_misc +[from] Computing for function strchr_misc2 +[from] Done for function strchr_misc2 +[from] Computing for function strchr_misc_array +[from] Done for function strchr_misc_array +[from] Computing for function strchr_no_zero_but_ok +[from] Done for function strchr_no_zero_but_ok +[from] Computing for function strchr_small_sets +[from] Done for function strchr_small_sets +[from] Computing for function strchr_small_sets_no_assertions +[from] Done for function strchr_small_sets_no_assertions +[from] Computing for function strchr_small_sets_chars +[from] Done for function strchr_small_sets_chars +[from] Computing for function strchr_unbounded +[from] Done for function strchr_unbounded +[from] Computing for function strchr_zero_termination +[from] Done for function strchr_zero_termination +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function Frama_C_interval: + Frama_C_entropy_source FROM Frama_C_entropy_source (and SELF) + \result FROM Frama_C_entropy_source; min; max +[from] Function init_array_nondet: + a[0..99] FROM val1; val2; nondet (and SELF) + a[0..99] FROM val1; val2; nondet (and SELF) + u[0..199] FROM val1; val2; nondet (and SELF) + r[0..200] FROM val1; val2; nondet (and SELF) + t[0..999999] FROM val1; val2; nondet (and SELF) + t[0..29] FROM val1; val2; nondet (and SELF) +[from] Function my_strchr: + \result FROM s; c; t[0..3]; empty_or_non_terminated[0]; non_terminated[0]; + non_terminated2[0..3]; empty_or_uninitialized[0]; + uninitialized[0]; s[0..1]; t[0..3]; s; a[0..99]; a[0..99]; + s[0..3]; loc_char_array[0..4]; x; unterminated_string[0..11]; + maybe_init[0..1]; u[0..199]; r[0..200]; t[0..999999]; + s[0..19]; t[0..3]; t[0..29]; s; ""[bits 0 to 7]; + "a"[bits 0 to 15]; "aa"[bits 0 to 23]; "aaa"; + "aaaa"[bits 0 to 39]; "aaaaa"[bits 0 to 47]; + "aaaaaa"[bits 0 to 55]; "aaaaaaaaa"[bits 0 to 79]; + "aaaaaaaaaa"[bits 0 to 87]; "aaaaaaaaaaa"[bits 0 to 95]; + "aaaaaaaaaaaa"[bits 0 to 103]; "aaaaaaaaaaaaa"[bits 0 to 111]; + "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c"; + "Hello World\n"[bits 0 to 103]; + "abc\000\000\000abc"[bits 0 to 79]; + "Bonjour Monde\n"[bits 0 to 119]; "abc"; "ABCD"[bits 0 to 39]; + "efg"; "EFGH"[bits 0 to 39]; "mno\000pqr"[bits 0 to 63]; + "MNOP\000QRS"[bits 0 to 71]; "abc"; "\000bc"; ""[bits 0 to 7]; + "b\000c"; "abcd"[bits 0 to 39]; + "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[bits 0 to 215]; + "hello"[bits 0 to 47] +[from] Function my_strchr2: + \result FROM base; c; loc_char_array[0..4]; x; unterminated_string[0..11]; + maybe_init[0..1]; ""[bits 0 to 7]; "a"[bits 0 to 15]; + "aa"[bits 0 to 23]; "aaa"; "aaaa"[bits 0 to 39]; + "aaaaa"[bits 0 to 47]; "aaaaaa"[bits 0 to 55]; + "aaaaaaaaa"[bits 0 to 79]; "aaaaaaaaaa"[bits 0 to 87]; + "aaaaaaaaaaa"[bits 0 to 95]; "aaaaaaaaaaaa"[bits 0 to 103]; + "aaaaaaaaaaaaa"[bits 0 to 111]; "abc"; "\000bc"; + ""[bits 0 to 7]; "b\000c"; "Hello World\n"[bits 0 to 103]; + "abc\000\000\000abc"[bits 0 to 79]; + "Bonjour Monde\n"[bits 0 to 119]; "abc"; "ABCD"[bits 0 to 39]; + "efg"; "EFGH"[bits 0 to 39]; "mno\000pqr"[bits 0 to 63]; + "MNOP\000QRS"[bits 0 to 71]; "abc"; "\000bc"; ""[bits 0 to 7]; + "b\000c"; "abcd"[bits 0 to 39]; + "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[bits 0 to 215]; + "hello"[bits 0 to 47] +[from] Function strchr_big_array: + NO EFFECTS +[from] Function strchr_bitfields: + NO EFFECTS +[from] Function strchr_bitfields2: + NO EFFECTS +[from] Function strchr_escaping: + NO EFFECTS +[from] Function strchr_initialization: + NO EFFECTS +[from] Function strchr_invalid: + NO EFFECTS +[from] Function strchr_large: + Frama_C_entropy_source FROM Frama_C_entropy_source (and SELF) +[from] Function strchr_large_uninit: + Frama_C_entropy_source FROM Frama_C_entropy_source (and SELF) +[from] Function strchr_misc: + static_str FROM \nothing + zero_str FROM \nothing +[from] Function strchr_misc2: + NO EFFECTS +[from] Function strchr_misc_array: + Frama_C_entropy_source FROM Frama_C_entropy_source (and SELF) +[from] Function strchr_no_zero_but_ok: + NO EFFECTS +[from] Function strchr_small_sets: + NO EFFECTS +[from] Function strchr_small_sets_no_assertions: + res[0..3] + FROM c; res; ""[bits 0 to 7]; "a"[bits 0 to 15]; "aa"[bits 0 to 23]; + "aaa"; "aaaa"[bits 0 to 39]; "aaaaa"[bits 0 to 47]; + "aaaaaa"[bits 0 to 55]; "aaaaaaaaa"[bits 0 to 79]; + "aaaaaaaaaa"[bits 0 to 87]; "aaaaaaaaaaa"[bits 0 to 95]; + "aaaaaaaaaaaa"[bits 0 to 103]; "aaaaaaaaaaaaa"[bits 0 to 111]; + "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c"; + "Hello World\n"[bits 0 to 103]; "abc\000\000\000abc"[bits 0 to 79]; + "Bonjour Monde\n"[bits 0 to 119]; "abc"; "ABCD"[bits 0 to 39]; + "efg"; "EFGH"[bits 0 to 39]; "mno\000pqr"[bits 0 to 63]; + "MNOP\000QRS"[bits 0 to 71]; "abc"; "\000bc"; ""[bits 0 to 7]; + "b\000c"; "abcd"[bits 0 to 39]; + "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[bits 0 to 215]; "hello"[bits 0 to 47] + [4] + FROM c; res; nondet; ""[bits 0 to 7]; "a"[bits 0 to 15]; + "aa"[bits 0 to 23]; "aaa"; "aaaa"[bits 0 to 39]; + "aaaaa"[bits 0 to 47]; "aaaaaa"[bits 0 to 55]; + "aaaaaaaaa"[bits 0 to 79]; "aaaaaaaaaa"[bits 0 to 87]; + "aaaaaaaaaaa"[bits 0 to 95]; "aaaaaaaaaaaa"[bits 0 to 103]; + "aaaaaaaaaaaaa"[bits 0 to 111]; "abc"; "\000bc"; ""[bits 0 to 7]; + "b\000c"; "Hello World\n"[bits 0 to 103]; + "abc\000\000\000abc"[bits 0 to 79]; + "Bonjour Monde\n"[bits 0 to 119]; "abc"; "ABCD"[bits 0 to 39]; + "efg"; "EFGH"[bits 0 to 39]; "mno\000pqr"[bits 0 to 63]; + "MNOP\000QRS"[bits 0 to 71]; "abc"; "\000bc"; ""[bits 0 to 7]; + "b\000c"; "abcd"[bits 0 to 39]; + "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[bits 0 to 215]; "hello"[bits 0 to 47] + \result FROM \nothing +[from] Function strchr_small_sets_chars: + NO EFFECTS +[from] Function strchr_unbounded: + NO EFFECTS +[from] Function strchr_zero_termination: + NO EFFECTS +[from] Function main: + Frama_C_entropy_source FROM Frama_C_entropy_source (and SELF) + static_str FROM \nothing + zero_str FROM \nothing + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function init_array_nondet: + from; to; val1; val2; val; tmp; a[0..99]; a[0..99]; u[0..199]; r[0..200]; + t[0..999999]; t[0..29] +[inout] Inputs for function init_array_nondet: + nondet +[inout] Out (internal) for function my_strchr: + ss; res +[inout] Inputs for function my_strchr: + t[0..3]; empty_or_non_terminated[0]; non_terminated[0]; + non_terminated2[0..3]; empty_or_uninitialized[0]; uninitialized[0]; + s[0..1]; t[0..3]; s; a[0..99]; a[0..99]; s[0..3]; loc_char_array[0..4]; + unterminated_string[0..11]; maybe_init[0..1]; u[0..199]; r[0..200]; + t[0..999999]; s[0..19]; t[0..3]; t[0..29]; s; ""[bits 0 to 7]; + "a"[bits 0 to 15]; "aa"[bits 0 to 23]; "aaa"; "aaaa"[bits 0 to 39]; + "aaaaa"[bits 0 to 47]; "aaaaaa"[bits 0 to 55]; "aaaaaaaaa"[bits 0 to 79]; + "aaaaaaaaaa"[bits 0 to 87]; "aaaaaaaaaaa"[bits 0 to 95]; + "aaaaaaaaaaaa"[bits 0 to 103]; "aaaaaaaaaaaaa"[bits 0 to 111]; "abc"; + "\000bc"; ""[bits 0 to 7]; "b\000c"; "Hello World\n"[bits 0 to 103]; + "abc\000\000\000abc"[bits 0 to 79]; "Bonjour Monde\n"[bits 0 to 119]; + "mno\000pqr"[bits 0 to 63]; "MNOP\000QRS"[bits 0 to 71]; "abc"; "\000bc"; + ""[bits 0 to 7]; "b\000c"; "abcd"[bits 0 to 39]; + "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[bits 0 to 215]; "hello"[bits 0 to 47] +[inout] Out (internal) for function my_strchr2: + p; tmp; s; res +[inout] Inputs for function my_strchr2: + x; nondet; "abc"; "ABCD"[bits 0 to 39]; "efg"[bits 8 to 31]; + "EFGH"[bits 8 to 39] +[inout] Out (internal) for function strchr_big_array: + c; u[0..199]; r[0..200]; t[0..999999]; p; len_u; len_r; len_t +[inout] Inputs for function strchr_big_array: + nondet; ""[bits 0 to 7]; "a"[bits 0 to 15]; "aa"[bits 0 to 23]; "aaa"; + "aaaa"[bits 0 to 39]; "aaaaa"[bits 0 to 47]; "aaaaaa"[bits 0 to 55]; + "aaaaaaaaa"[bits 0 to 79]; "aaaaaaaaaa"[bits 0 to 87]; + "aaaaaaaaaaa"[bits 0 to 95]; "aaaaaaaaaaaa"[bits 0 to 103]; + "aaaaaaaaaaaaa"[bits 0 to 111]; "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c"; + "Hello World\n"[bits 0 to 103]; "abc\000\000\000abc"[bits 0 to 79]; + "Bonjour Monde\n"[bits 0 to 119]; "mno\000pqr"[bits 0 to 63]; + "MNOP\000QRS"[bits 0 to 71]; "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c"; + "abcd"[bits 0 to 39]; "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[bits 0 to 215]; + "hello"[bits 0 to 47] +[inout] Out (internal) for function strchr_bitfields: + c; s{{.a; .b}; .c}; p +[inout] Inputs for function strchr_bitfields: + nondet +[inout] Out (internal) for function strchr_bitfields2: + c; s{.a; .b; .c}; p; z1 +[inout] Inputs for function strchr_bitfields2: + ""[bits 0 to 7]; "a"[bits 0 to 15]; "aa"[bits 0 to 23]; "aaa"; + "aaaa"[bits 0 to 39]; "aaaaa"[bits 0 to 47]; "aaaaaa"[bits 0 to 55]; + "aaaaaaaaa"[bits 0 to 79]; "aaaaaaaaaa"[bits 0 to 87]; + "aaaaaaaaaaa"[bits 0 to 95]; "aaaaaaaaaaaa"[bits 0 to 103]; + "aaaaaaaaaaaaa"[bits 0 to 111]; "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c"; + "Hello World\n"[bits 0 to 103]; "abc\000\000\000abc"[bits 0 to 79]; + "Bonjour Monde\n"[bits 0 to 119]; "mno\000pqr"[bits 0 to 63]; + "MNOP\000QRS"[bits 0 to 71]; "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c"; + "abcd"[bits 0 to 39]; "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[bits 0 to 215]; + "hello"[bits 0 to 47] +[inout] Out (internal) for function strchr_escaping: + c; s[0..3]; z1; z2 +[inout] Inputs for function strchr_escaping: + nondet; ""[bits 0 to 7]; "a"[bits 0 to 15]; "aa"[bits 0 to 23]; "aaa"; + "aaaa"[bits 0 to 39]; "aaaaa"[bits 0 to 47]; "aaaaaa"[bits 0 to 55]; + "aaaaaaaaa"[bits 0 to 79]; "aaaaaaaaaa"[bits 0 to 87]; + "aaaaaaaaaaa"[bits 0 to 95]; "aaaaaaaaaaaa"[bits 0 to 103]; + "aaaaaaaaaaaaa"[bits 0 to 111]; "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c"; + "Hello World\n"[bits 0 to 103]; "abc\000\000\000abc"[bits 0 to 79]; + "Bonjour Monde\n"[bits 0 to 119]; "mno\000pqr"[bits 0 to 63]; + "MNOP\000QRS"[bits 0 to 71]; "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c"; + "abcd"[bits 0 to 39]; "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[bits 0 to 215]; + "hello"[bits 0 to 47] +[inout] Out (internal) for function strchr_initialization: + c; empty_or_uninitialized[0]; z1; s[0..1]; z2; t[0..3]; z3 +[inout] Inputs for function strchr_initialization: + nondet; ""[bits 0 to 7]; "a"[bits 0 to 15]; "aa"[bits 0 to 23]; "aaa"; + "aaaa"[bits 0 to 39]; "aaaaa"[bits 0 to 47]; "aaaaaa"[bits 0 to 55]; + "aaaaaaaaa"[bits 0 to 79]; "aaaaaaaaaa"[bits 0 to 87]; + "aaaaaaaaaaa"[bits 0 to 95]; "aaaaaaaaaaaa"[bits 0 to 103]; + "aaaaaaaaaaaaa"[bits 0 to 111]; "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c"; + "Hello World\n"[bits 0 to 103]; "abc\000\000\000abc"[bits 0 to 79]; + "Bonjour Monde\n"[bits 0 to 119]; "mno\000pqr"[bits 0 to 63]; + "MNOP\000QRS"[bits 0 to 71]; "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c"; + "abcd"[bits 0 to 39]; "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[bits 0 to 215]; + "hello"[bits 0 to 47] +[inout] Out (internal) for function strchr_invalid: + s +[inout] Inputs for function strchr_invalid: + ""[bits 0 to 7]; "a"[bits 0 to 15]; "aa"[bits 0 to 23]; "aaa"; + "aaaa"[bits 0 to 39]; "aaaaa"[bits 0 to 47]; "aaaaaa"[bits 0 to 55]; + "aaaaaaaaa"[bits 0 to 79]; "aaaaaaaaaa"[bits 0 to 87]; + "aaaaaaaaaaa"[bits 0 to 95]; "aaaaaaaaaaaa"[bits 0 to 103]; + "aaaaaaaaaaaaa"[bits 0 to 111]; "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c"; + "Hello World\n"[bits 0 to 103]; "abc\000\000\000abc"[bits 0 to 79]; + "Bonjour Monde\n"[bits 0 to 119]; "mno\000pqr"[bits 0 to 63]; + "MNOP\000QRS"[bits 0 to 71]; "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c"; + "abcd"[bits 0 to 39]; "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[bits 0 to 215]; + "hello"[bits 0 to 47] +[inout] Out (internal) for function strchr_large: + Frama_C_entropy_source; c; a[0..99]; offset; z1; z2; z3; z4; z5 +[inout] Inputs for function strchr_large: + Frama_C_entropy_source; nondet; ""[bits 0 to 7]; "a"[bits 0 to 15]; + "aa"[bits 0 to 23]; "aaa"; "aaaa"[bits 0 to 39]; "aaaaa"[bits 0 to 47]; + "aaaaaa"[bits 0 to 55]; "aaaaaaaaa"[bits 0 to 79]; + "aaaaaaaaaa"[bits 0 to 87]; "aaaaaaaaaaa"[bits 0 to 95]; + "aaaaaaaaaaaa"[bits 0 to 103]; "aaaaaaaaaaaaa"[bits 0 to 111]; "abc"; + "\000bc"; ""[bits 0 to 7]; "b\000c"; "Hello World\n"[bits 0 to 103]; + "abc\000\000\000abc"[bits 0 to 79]; "Bonjour Monde\n"[bits 0 to 119]; + "mno\000pqr"[bits 0 to 63]; "MNOP\000QRS"[bits 0 to 71]; "abc"; "\000bc"; + ""[bits 0 to 7]; "b\000c"; "abcd"[bits 0 to 39]; + "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[bits 0 to 215]; "hello"[bits 0 to 47] +[inout] Out (internal) for function strchr_large_uninit: + Frama_C_entropy_source; c; a[0..99]; offset; z1; z2; z3 +[inout] Inputs for function strchr_large_uninit: + Frama_C_entropy_source; nondet; ""[bits 0 to 7]; "a"[bits 0 to 15]; + "aa"[bits 0 to 23]; "aaa"; "aaaa"[bits 0 to 39]; "aaaaa"[bits 0 to 47]; + "aaaaaa"[bits 0 to 55]; "aaaaaaaaa"[bits 0 to 79]; + "aaaaaaaaaa"[bits 0 to 87]; "aaaaaaaaaaa"[bits 0 to 95]; + "aaaaaaaaaaaa"[bits 0 to 103]; "aaaaaaaaaaaaa"[bits 0 to 111]; "abc"; + "\000bc"; ""[bits 0 to 7]; "b\000c"; "Hello World\n"[bits 0 to 103]; + "abc\000\000\000abc"[bits 0 to 79]; "Bonjour Monde\n"[bits 0 to 119]; + "mno\000pqr"[bits 0 to 63]; "MNOP\000QRS"[bits 0 to 71]; "abc"; "\000bc"; + ""[bits 0 to 7]; "b\000c"; "abcd"[bits 0 to 39]; + "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[bits 0 to 215]; "hello"[bits 0 to 47] +[inout] Out (internal) for function strchr_misc: + c; loc_str; loc_char_array[3]; sz1; sz2; sz4a; sz4b; sz4c; sz4d; x; + str; unterminated_string[0..11]; static_str; zero_str +[inout] Inputs for function strchr_misc: + nondet; static_str; zero_str; ""[bits 0 to 7]; "a"[bits 0 to 15]; + "aa"[bits 0 to 23]; "aaa"; "aaaa"[bits 0 to 39]; "aaaaa"[bits 0 to 47]; + "aaaaaa"[bits 0 to 55]; "aaaaaaaaa"[bits 0 to 79]; + "aaaaaaaaaa"[bits 0 to 87]; "aaaaaaaaaaa"[bits 0 to 95]; + "aaaaaaaaaaaa"[bits 0 to 103]; "aaaaaaaaaaaaa"[bits 0 to 111]; "abc"; + "\000bc"; ""[bits 0 to 7]; "b\000c"; "Hello World\n"[bits 0 to 103]; + "abc\000\000\000abc"[bits 0 to 79]; "Bonjour Monde\n"[bits 0 to 119]; + "abc"; "ABCD"[bits 0 to 39]; "efg"[bits 8 to 31]; "EFGH"[bits 8 to 39]; + "mno\000pqr"[bits 0 to 63]; "MNOP\000QRS"[bits 0 to 71]; "abc"; "\000bc"; + ""[bits 0 to 7]; "b\000c"; "abcd"[bits 0 to 39]; + "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[bits 0 to 215]; "hello"[bits 0 to 47] +[inout] Out (internal) for function strchr_misc2: + c; sz5; sz6; sz7; sz8; s1; j; maybe_init[0..1] +[inout] Inputs for function strchr_misc2: + nondet; ""[bits 0 to 7]; "a"[bits 0 to 15]; "aa"[bits 0 to 23]; "aaa"; + "aaaa"[bits 0 to 39]; "aaaaa"[bits 0 to 47]; "aaaaaa"[bits 0 to 55]; + "aaaaaaaaa"[bits 0 to 79]; "aaaaaaaaaa"[bits 0 to 87]; + "aaaaaaaaaaa"[bits 0 to 95]; "aaaaaaaaaaaa"[bits 0 to 103]; + "aaaaaaaaaaaaa"[bits 0 to 111]; "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c"; + "Hello World\n"[bits 0 to 103]; "abc\000\000\000abc"[bits 0 to 79]; + "Bonjour Monde\n"[bits 0 to 119]; "abc"; "ABCD"[bits 0 to 39]; + "efg"[bits 8 to 31]; "EFGH"[bits 8 to 39]; "mno\000pqr"[bits 0 to 63]; + "MNOP\000QRS"[bits 0 to 71]; "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c"; + "abcd"[bits 0 to 39]; "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[bits 0 to 215]; + "hello"[bits 0 to 47] +[inout] Out (internal) for function strchr_misc_array: + Frama_C_entropy_source; c; i; sz3 +[inout] Inputs for function strchr_misc_array: + Frama_C_entropy_source; tab_str[0..11]; ""[bits 0 to 7]; "a"[bits 0 to 15]; + "aa"[bits 0 to 23]; "aaa"; "aaaa"[bits 0 to 39]; "aaaaa"[bits 0 to 47]; + "aaaaaa"[bits 0 to 55]; "aaaaaaaaa"[bits 0 to 79]; + "aaaaaaaaaa"[bits 0 to 87]; "aaaaaaaaaaa"[bits 0 to 95]; + "aaaaaaaaaaaa"[bits 0 to 103]; "aaaaaaaaaaaaa"[bits 0 to 111]; "abc"; + "\000bc"; ""[bits 0 to 7]; "b\000c"; "Hello World\n"[bits 0 to 103]; + "abc\000\000\000abc"[bits 0 to 79]; "Bonjour Monde\n"[bits 0 to 119]; + "mno\000pqr"[bits 0 to 63]; "MNOP\000QRS"[bits 0 to 71]; "abc"; "\000bc"; + ""[bits 0 to 7]; "b\000c"; "abcd"[bits 0 to 39]; + "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[bits 0 to 215]; "hello"[bits 0 to 47] +[inout] Out (internal) for function strchr_no_zero_but_ok: + c; s[0..19]; z1; z2; offs; tmp_1; z3; z4; z5 +[inout] Inputs for function strchr_no_zero_but_ok: + nondet; ""[bits 0 to 7]; "a"[bits 0 to 15]; "aa"[bits 0 to 23]; "aaa"; + "aaaa"[bits 0 to 39]; "aaaaa"[bits 0 to 47]; "aaaaaa"[bits 0 to 55]; + "aaaaaaaaa"[bits 0 to 79]; "aaaaaaaaaa"[bits 0 to 87]; + "aaaaaaaaaaa"[bits 0 to 95]; "aaaaaaaaaaaa"[bits 0 to 103]; + "aaaaaaaaaaaaa"[bits 0 to 111]; "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c"; + "Hello World\n"[bits 0 to 103]; "abc\000\000\000abc"[bits 0 to 79]; + "Bonjour Monde\n"[bits 0 to 119]; "mno\000pqr"[bits 0 to 63]; + "MNOP\000QRS"[bits 0 to 71]; "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c"; + "abcd"[bits 0 to 39]; "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[bits 0 to 215]; + "hello"[bits 0 to 47] +[inout] Out (internal) for function strchr_small_sets: + c; s; o; tmp; z1; z2; z3; z4; t[0..3]; z5 +[inout] Inputs for function strchr_small_sets: + nondet; ""[bits 0 to 7]; "a"[bits 0 to 15]; "aa"[bits 0 to 23]; "aaa"; + "aaaa"[bits 0 to 39]; "aaaaa"[bits 0 to 47]; "aaaaaa"[bits 0 to 55]; + "aaaaaaaaa"[bits 0 to 79]; "aaaaaaaaaa"[bits 0 to 87]; + "aaaaaaaaaaa"[bits 0 to 95]; "aaaaaaaaaaaa"[bits 0 to 103]; + "aaaaaaaaaaaaa"[bits 0 to 111]; "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c"; + "Hello World\n"[bits 0 to 103]; "abc\000\000\000abc"[bits 0 to 79]; + "Bonjour Monde\n"[bits 0 to 119]; "mno\000pqr"[bits 0 to 63]; + "MNOP\000QRS"[bits 0 to 71]; "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c"; + "abcd"[bits 0 to 39]; "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[bits 0 to 215]; + "hello"[bits 0 to 47] +[inout] Out (internal) for function strchr_small_sets_no_assertions: + s; o; tmp; t[0..3]; res[0..4]; __retres +[inout] Inputs for function strchr_small_sets_no_assertions: + nondet; ""[bits 0 to 7]; "a"[bits 0 to 15]; "aa"[bits 0 to 23]; "aaa"; + "aaaa"[bits 0 to 39]; "aaaaa"[bits 0 to 47]; "aaaaaa"[bits 0 to 55]; + "aaaaaaaaa"[bits 0 to 79]; "aaaaaaaaaa"[bits 0 to 87]; + "aaaaaaaaaaa"[bits 0 to 95]; "aaaaaaaaaaaa"[bits 0 to 103]; + "aaaaaaaaaaaaa"[bits 0 to 111]; "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c"; + "Hello World\n"[bits 0 to 103]; "abc\000\000\000abc"[bits 0 to 79]; + "Bonjour Monde\n"[bits 0 to 119]; "mno\000pqr"[bits 0 to 63]; + "MNOP\000QRS"[bits 0 to 71]; "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c"; + "abcd"[bits 0 to 39]; "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[bits 0 to 215]; + "hello"[bits 0 to 47] +[inout] Out (internal) for function strchr_small_sets_chars: + c; res[0..4] +[inout] Inputs for function strchr_small_sets_chars: + nondet; ""[bits 0 to 7]; "a"[bits 0 to 15]; "aa"[bits 0 to 23]; "aaa"; + "aaaa"[bits 0 to 39]; "aaaaa"[bits 0 to 47]; "aaaaaa"[bits 0 to 55]; + "aaaaaaaaa"[bits 0 to 79]; "aaaaaaaaaa"[bits 0 to 87]; + "aaaaaaaaaaa"[bits 0 to 95]; "aaaaaaaaaaaa"[bits 0 to 103]; + "aaaaaaaaaaaaa"[bits 0 to 111]; "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c"; + "Hello World\n"[bits 0 to 103]; "abc\000\000\000abc"[bits 0 to 79]; + "Bonjour Monde\n"[bits 0 to 119]; "mno\000pqr"[bits 0 to 63]; + "MNOP\000QRS"[bits 0 to 71]; "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c"; + "abcd"[bits 0 to 39]; "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[bits 0 to 215]; + "hello"[bits 0 to 47] +[inout] Out (internal) for function strchr_unbounded: + c; s; u1; t[0..29]; u2; u3; u4 +[inout] Inputs for function strchr_unbounded: + nondet; ""[bits 0 to 7]; "a"[bits 0 to 15]; "aa"[bits 0 to 23]; "aaa"; + "aaaa"[bits 0 to 39]; "aaaaa"[bits 0 to 47]; "aaaaaa"[bits 0 to 55]; + "aaaaaaaaa"[bits 0 to 79]; "aaaaaaaaaa"[bits 0 to 87]; + "aaaaaaaaaaa"[bits 0 to 95]; "aaaaaaaaaaaa"[bits 0 to 103]; + "aaaaaaaaaaaaa"[bits 0 to 111]; "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c"; + "Hello World\n"[bits 0 to 103]; "abc\000\000\000abc"[bits 0 to 79]; + "Bonjour Monde\n"[bits 0 to 119]; "mno\000pqr"[bits 0 to 63]; + "MNOP\000QRS"[bits 0 to 71]; "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c"; + "abcd"[bits 0 to 39]; "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[bits 0 to 215]; + "hello"[bits 0 to 47] +[inout] Out (internal) for function strchr_zero_termination: + c; empty_or_non_terminated[0]; z1; non_terminated[0]; + non_terminated2[0..3]; o; tmp_0 +[inout] Inputs for function strchr_zero_termination: + nondet; ""[bits 0 to 7]; "a"[bits 0 to 15]; "aa"[bits 0 to 23]; "aaa"; + "aaaa"[bits 0 to 39]; "aaaaa"[bits 0 to 47]; "aaaaaa"[bits 0 to 55]; + "aaaaaaaaa"[bits 0 to 79]; "aaaaaaaaaa"[bits 0 to 87]; + "aaaaaaaaaaa"[bits 0 to 95]; "aaaaaaaaaaaa"[bits 0 to 103]; + "aaaaaaaaaaaaa"[bits 0 to 111]; "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c"; + "Hello World\n"[bits 0 to 103]; "abc\000\000\000abc"[bits 0 to 79]; + "Bonjour Monde\n"[bits 0 to 119]; "mno\000pqr"[bits 0 to 63]; + "MNOP\000QRS"[bits 0 to 71]; "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c"; + "abcd"[bits 0 to 39]; "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[bits 0 to 215]; + "hello"[bits 0 to 47] +[inout] Out (internal) for function main: + Frama_C_entropy_source; static_str; zero_str; __retres +[inout] Inputs for function main: + Frama_C_entropy_source; tab_str[0..11]; nondet; static_str; zero_str; + ""[bits 0 to 7]; "a"[bits 0 to 15]; "aa"[bits 0 to 23]; "aaa"; + "aaaa"[bits 0 to 39]; "aaaaa"[bits 0 to 47]; "aaaaaa"[bits 0 to 55]; + "aaaaaaaaa"[bits 0 to 79]; "aaaaaaaaaa"[bits 0 to 87]; + "aaaaaaaaaaa"[bits 0 to 95]; "aaaaaaaaaaaa"[bits 0 to 103]; + "aaaaaaaaaaaaa"[bits 0 to 111]; "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c"; + "Hello World\n"[bits 0 to 103]; "abc\000\000\000abc"[bits 0 to 79]; + "Bonjour Monde\n"[bits 0 to 119]; "abc"; "ABCD"[bits 0 to 39]; + "efg"[bits 8 to 31]; "EFGH"[bits 8 to 39]; "mno\000pqr"[bits 0 to 63]; + "MNOP\000QRS"[bits 0 to 71]; "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c"; + "abcd"[bits 0 to 39]; "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[bits 0 to 215]; + "hello"[bits 0 to 47] diff --git a/tests/non-free/oracle_symblocs/strlen.err.oracle b/tests/non-free/oracle_symblocs/strlen.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/non-free/oracle_symblocs/strlen.res.oracle b/tests/non-free/oracle_symblocs/strlen.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..a5f44175539bd1d22c10dbb76a8664ee3b74badc --- /dev/null +++ b/tests/non-free/oracle_symblocs/strlen.res.oracle @@ -0,0 +1,571 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/non-free/strlen.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + Frama_C_entropy_source ∈ [--..--] + static_str ∈ {{ "Hello World\n" }} + zero_str ∈ {{ "abc\000\000\000abc" }} + tab_str[0] ∈ {{ "" }} + [1] ∈ {{ "a" }} + [2] ∈ {{ "aa" }} + [3] ∈ {{ "aaa" }} + [4] ∈ {{ "aaaa" }} + [5] ∈ {{ "aaaaa" }} + [6] ∈ {{ "aaaaaa" }} + [7] ∈ {{ "aaaaaaaaa" }} + [8] ∈ {{ "aaaaaaaaaa" }} + [9] ∈ {{ "aaaaaaaaaaa" }} + [10] ∈ {{ "aaaaaaaaaaaa" }} + [11] ∈ {{ "aaaaaaaaaaaaa" }} + unterminated_string[0] ∈ {117} + [1] ∈ {110} + [2] ∈ {116} + [3] ∈ {101} + [4] ∈ {114} + [5] ∈ {109} + [6] ∈ {105} + [7] ∈ {110} + [8] ∈ {97} + [9] ∈ {116} + [10] ∈ {101} + [11] ∈ {100} + nondet ∈ [--..--] +[value] computing for function small_sets <- main. + Called from tests/non-free/strlen.c:309. +tests/non-free/strlen.c:60:[value] Call to builtin Frama_C_strlen(({{ "abc" + {0; 1} }})) +tests/non-free/strlen.c:61:[value] assertion got status valid. +tests/non-free/strlen.c:65:[value] Call to builtin Frama_C_strlen(({{ "\000bc" + {0; 1} }})) +tests/non-free/strlen.c:66:[value] assertion got status valid. +tests/non-free/strlen.c:70:[value] Call to builtin Frama_C_strlen(({{ "" }})) +tests/non-free/strlen.c:71:[value] assertion got status valid. +tests/non-free/strlen.c:75:[value] Call to builtin Frama_C_strlen(({{ "b\000c" + {0; 2} }})) +tests/non-free/strlen.c:76:[value] assertion got status valid. +tests/non-free/strlen.c:81:[value] Call to builtin Frama_C_strlen(({{ &t[0] }})) +tests/non-free/strlen.c:81:[value] warning: builtin Frama_C_strlen: possibly reading indeterminate data +tests/non-free/strlen.c:82:[value] assertion got status valid. +[value] Recording results for small_sets +[value] Done for function small_sets +[value] computing for function zero_termination <- main. + Called from tests/non-free/strlen.c:310. +tests/non-free/strlen.c:89:[value] Call to builtin Frama_C_strlen(({{ &empty_or_non_terminated[0] }})) +tests/non-free/strlen.c:89:[value] warning: builtin Frama_C_strlen: possibly reading indeterminate data +tests/non-free/strlen.c:90:[value] assertion got status valid. +tests/non-free/strlen.c:93:[value] Call to builtin Frama_C_strlen(({{ &non_terminated[0] }})) +tests/non-free/strlen.c:93:[value] warning: builtin Frama_C_strlen: reading indeterminate data +tests/non-free/strlen.c:97:[value] Call to builtin Frama_C_strlen(({{ &non_terminated2{[2], [3]} }})) +tests/non-free/strlen.c:97:[value] warning: builtin Frama_C_strlen: reading indeterminate data +[value] Recording results for zero_termination +[value] Done for function zero_termination +[value] computing for function strlen_initialization <- main. + Called from tests/non-free/strlen.c:311. +[value] computing for function my_strlen <- strlen_initialization <- main. + Called from tests/non-free/strlen.c:105. +tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &empty_or_uninitialized[0] }})) +tests/non-free/strlen.c:54:[value] warning: builtin Frama_C_strlen: possible uninitialized values +[value] Recording results for my_strlen +[value] Done for function my_strlen +tests/non-free/strlen.c:106:[value] assertion got status valid. +[value] computing for function my_strlen <- strlen_initialization <- main. + Called from tests/non-free/strlen.c:109. +tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &uninitialized[0] }})) +tests/non-free/strlen.c:54:[value] warning: builtin Frama_C_strlen: reading indeterminate data +[value] Recording results for my_strlen +[value] Done for function my_strlen +[value] computing for function my_strlen <- strlen_initialization <- main. + Called from tests/non-free/strlen.c:116. +tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &s[0] }})) +tests/non-free/strlen.c:54:[value] warning: builtin Frama_C_strlen: possible uninitialized values +[value] Recording results for my_strlen +[value] Done for function my_strlen +tests/non-free/strlen.c:117:[value] assertion got status valid. +[value] computing for function my_strlen <- strlen_initialization <- main. + Called from tests/non-free/strlen.c:124. +tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &t[0] }})) +tests/non-free/strlen.c:54:[value] warning: builtin Frama_C_strlen: possible uninitialized values +[value] Recording results for my_strlen +[value] Done for function my_strlen +tests/non-free/strlen.c:125:[value] assertion got status valid. +[value] Recording results for strlen_initialization +[value] Done for function strlen_initialization +[value] computing for function strlen_large <- main. + Called from tests/non-free/strlen.c:312. +[value] computing for function init_array_nondet <- strlen_large <- main. + Called from tests/non-free/strlen.c:168. +tests/non-free/strlen.c:161:[value] Call to builtin memset(({{ (void *)&a }},{1; 2},{100})) +[value] Recording results for init_array_nondet +[value] Done for function init_array_nondet +[value] computing for function Frama_C_interval <- strlen_large <- main. + Called from tests/non-free/strlen.c:171. +[value] using specification for function Frama_C_interval +share/libc/__fc_builtin.h:50:[value] function Frama_C_interval: precondition got status valid. +[value] Done for function Frama_C_interval +[value] computing for function my_strlen <- strlen_large <- main. + Called from tests/non-free/strlen.c:172. +tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &a + [3..30] }})) +[value] Recording results for my_strlen +[value] Done for function my_strlen +tests/non-free/strlen.c:173:[value] assertion got status valid. +[value] computing for function Frama_C_interval <- strlen_large <- main. + Called from tests/non-free/strlen.c:175. +[value] Done for function Frama_C_interval +[value] computing for function my_strlen <- strlen_large <- main. + Called from tests/non-free/strlen.c:176. +tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &a + [5..17] }})) +[value] Recording results for my_strlen +[value] Done for function my_strlen +tests/non-free/strlen.c:177:[value] assertion got status valid. +[value] computing for function Frama_C_interval <- strlen_large <- main. + Called from tests/non-free/strlen.c:179. +[value] Done for function Frama_C_interval +[value] computing for function my_strlen <- strlen_large <- main. + Called from tests/non-free/strlen.c:180. +tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &a + [60..74] }})) +[value] Recording results for my_strlen +[value] Done for function my_strlen +tests/non-free/strlen.c:181:[value] assertion got status valid. +[value] computing for function Frama_C_interval <- strlen_large <- main. + Called from tests/non-free/strlen.c:183. +[value] Done for function Frama_C_interval +[value] computing for function my_strlen <- strlen_large <- main. + Called from tests/non-free/strlen.c:184. +tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &a + [63..80] }})) +tests/non-free/strlen.c:54:[value] warning: builtin Frama_C_strlen: possibly reading indeterminate data +[value] Recording results for my_strlen +[value] Done for function my_strlen +tests/non-free/strlen.c:185:[value] assertion got status valid. +[value] computing for function init_array_nondet <- strlen_large <- main. + Called from tests/non-free/strlen.c:187. +tests/non-free/strlen.c:161:[value] Call to builtin memset(({{ (void *)&a }},{0; 2},{100})) +[value] Recording results for init_array_nondet +[value] Done for function init_array_nondet +[value] computing for function Frama_C_interval <- strlen_large <- main. + Called from tests/non-free/strlen.c:188. +[value] Done for function Frama_C_interval +[value] computing for function my_strlen <- strlen_large <- main. + Called from tests/non-free/strlen.c:189. +tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &a + [50..70] }})) +tests/non-free/strlen.c:54:[value] warning: builtin Frama_C_strlen: possibly reading indeterminate data +[value] Recording results for my_strlen +[value] Done for function my_strlen +tests/non-free/strlen.c:190:[value] assertion got status valid. +[value] Recording results for strlen_large +[value] Done for function strlen_large +[value] computing for function strlen_large_uninit <- main. + Called from tests/non-free/strlen.c:313. +[value] computing for function init_array_nondet <- strlen_large_uninit <- main. + Called from tests/non-free/strlen.c:197. +tests/non-free/strlen.c:161:[value] Call to builtin memset(({{ (void *)&a }},{1; 2},{40})) +[value] Recording results for init_array_nondet +[value] Done for function init_array_nondet +[value] computing for function init_array_nondet <- strlen_large_uninit <- main. + Called from tests/non-free/strlen.c:198. +tests/non-free/strlen.c:161:[value] Call to builtin memset(({{ (void *)&a[50] }},{3; 4},{45})) +[value] Recording results for init_array_nondet +[value] Done for function init_array_nondet +[value] computing for function Frama_C_interval <- strlen_large_uninit <- main. + Called from tests/non-free/strlen.c:202. +[value] Done for function Frama_C_interval +[value] computing for function my_strlen <- strlen_large_uninit <- main. + Called from tests/non-free/strlen.c:203. +tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &a + [3..30] }})) +tests/non-free/strlen.c:54:[value] warning: builtin Frama_C_strlen: possibly reading indeterminate data +[value] Recording results for my_strlen +[value] Done for function my_strlen +tests/non-free/strlen.c:204:[value] assertion got status valid. +[value] computing for function Frama_C_interval <- strlen_large_uninit <- main. + Called from tests/non-free/strlen.c:207. +[value] Done for function Frama_C_interval +[value] computing for function my_strlen <- strlen_large_uninit <- main. + Called from tests/non-free/strlen.c:208. +tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &a + [63..80] }})) +tests/non-free/strlen.c:54:[value] warning: builtin Frama_C_strlen: possibly reading indeterminate data +[value] Recording results for my_strlen +[value] Done for function my_strlen +tests/non-free/strlen.c:209:[value] assertion got status valid. +[value] computing for function Frama_C_interval <- strlen_large_uninit <- main. + Called from tests/non-free/strlen.c:211. +[value] Done for function Frama_C_interval +[value] computing for function my_strlen <- strlen_large_uninit <- main. + Called from tests/non-free/strlen.c:212. +tests/non-free/strlen.c:54:[value] Call to builtin Frama_C_strlen(({{ &a + [45..55] }})) +tests/non-free/strlen.c:54:[value] warning: builtin Frama_C_strlen: + possible uninitialized values + possibly reading indeterminate data +[value] Recording results for my_strlen +[value] Done for function my_strlen +tests/non-free/strlen.c:213:[value] assertion got status valid. +[value] Recording results for strlen_large_uninit +[value] Done for function strlen_large_uninit +[value] computing for function misc <- main. + Called from tests/non-free/strlen.c:314. +tests/non-free/strlen.c:241:[value] Call to builtin Frama_C_strlen(({{ &unterminated_string[0] }})) +tests/non-free/strlen.c:241:[value] warning: builtin Frama_C_strlen: reading indeterminate data +tests/non-free/strlen.c:244:[value] Call to builtin Frama_C_strlen(({{ "Hello World\n" ; "Bonjour Monde\n" }})) +tests/non-free/strlen.c:245:[value] assertion got status valid. +tests/non-free/strlen.c:248:[value] Call to builtin Frama_C_strlen(({{ &x + {0; 3} }})) +tests/non-free/strlen.c:248:[value] warning: builtin Frama_C_strlen: possibly reading indeterminate data +tests/non-free/strlen.c:249:[value] assertion got status valid. +[value] computing for function Frama_C_interval <- misc <- main. + Called from tests/non-free/strlen.c:250. +[value] Done for function Frama_C_interval +tests/non-free/strlen.c:252:[value] Call to builtin Frama_C_strlen(({{ "" ; "a" ; "aa" ; "aaa" ; "aaaa" ; + "aaaaa" ; "aaaaaa" ; "aaaaaaaaa" ; + "aaaaaaaaaa" ; "aaaaaaaaaaa" ; + "aaaaaaaaaaaa" ; "aaaaaaaaaaaaa" }})) +tests/non-free/strlen.c:253:[value] assertion got status valid. +tests/non-free/strlen.c:255:[value] Call to builtin Frama_C_strlen(({{ &loc_char_array[0] }})) +tests/non-free/strlen.c:255:[value] warning: builtin Frama_C_strlen: reading indeterminate data +tests/non-free/strlen.c:256:[value] Call to builtin Frama_C_strlen(({{ "abc\000\000\000abc" }})) +tests/non-free/strlen.c:257:[value] assertion got status valid. +tests/non-free/strlen.c:260:[value] Call to builtin Frama_C_strlen(({{ "abc" + {0; 1} ; "ABCD" + {0; 1} }})) +tests/non-free/strlen.c:261:[value] assertion got status valid. +tests/non-free/strlen.c:265:[value] Call to builtin Frama_C_strlen(({{ "efg" + {1; 2} ; "EFGH" + {1; 2} }})) +tests/non-free/strlen.c:266:[value] assertion got status valid. +tests/non-free/strlen.c:269:[value] entering loop for the first time +tests/non-free/strlen.c:270:[value] Call to builtin Frama_C_strlen(({{ "mno\000pqr" ; "MNOP\000QRS" }})) +tests/non-free/strlen.c:271:[value] assertion got status valid. +tests/non-free/strlen.c:270:[value] Call to builtin Frama_C_strlen(({{ "mno\000pqr" + {0; 1} ; + "MNOP\000QRS" + {0; 1} }})) +tests/non-free/strlen.c:270:[value] Call to builtin Frama_C_strlen(({{ "mno\000pqr" + {0; 1; 2} ; + "MNOP\000QRS" + {0; 1; 2} }})) +tests/non-free/strlen.c:270:[value] Call to builtin Frama_C_strlen(({{ "mno\000pqr" + {0; 1; 2; 3; 4; 5; 6; 7} ; + "MNOP\000QRS" + {0; 1; 2; 3; 4; 5; 6; 7} }})) +tests/non-free/strlen.c:270:[value] Call to builtin Frama_C_strlen(({{ "mno\000pqr" + {0; 1; 2; 3; 4; 5; 6; 7} ; + "MNOP\000QRS" + {0; 1; 2; 3; 4; 5; 6; 7} }})) +tests/non-free/strlen.c:277:[value] Call to builtin Frama_C_strlen(({{ &maybe_init[0] }})) +tests/non-free/strlen.c:277:[value] warning: builtin Frama_C_strlen: possible uninitialized values +tests/non-free/strlen.c:278:[value] assertion got status valid. +[value] Recording results for misc +[value] Done for function misc +[value] computing for function bitfields <- main. + Called from tests/non-free/strlen.c:315. +tests/non-free/strlen.c:140:[value] Call to builtin Frama_C_strlen(({{ (char const *)&s }})) +tests/non-free/strlen.c:140:[value] warning: builtin Frama_C_strlen: reading indeterminate data +[value] Recording results for bitfields +[value] Done for function bitfields +[value] computing for function bitfields2 <- main. + Called from tests/non-free/strlen.c:316. +tests/non-free/strlen.c:155:[value] Call to builtin Frama_C_strlen(({{ (char const *)&s }})) +tests/non-free/strlen.c:156:[value] assertion got status valid. +[value] Recording results for bitfields2 +[value] Done for function bitfields2 +[value] computing for function escaping <- main. + Called from tests/non-free/strlen.c:317. +tests/non-free/strlen.c:222:[value] warning: locals {x} escaping the scope of a block of escaping through s +tests/non-free/strlen.c:225:[value] Call to builtin Frama_C_strlen(({{ &s[0] }})) +tests/non-free/strlen.c:225:[value] warning: builtin Frama_C_strlen: possible escaping addresses +tests/non-free/strlen.c:226:[value] assertion got status valid. +tests/non-free/strlen.c:228:[value] Call to builtin Frama_C_strlen(({{ &s[0] }})) +tests/non-free/strlen.c:229:[value] assertion got status valid. +[value] Recording results for escaping +[value] Done for function escaping +[value] computing for function big_array <- main. + Called from tests/non-free/strlen.c:318. +tests/non-free/strlen.c:287:[value] warning: out of bounds write. assert \valid(p); +tests/non-free/strlen.c:289:[value] warning: out of bounds write. assert \valid(p); +tests/non-free/strlen.c:291:[value] warning: out of bounds write. assert \valid(p); +tests/non-free/strlen.c:297:[value] Call to builtin Frama_C_strlen(({{ (char const *)&u }})) +tests/non-free/strlen.c:297:[value] warning: builtin Frama_C_strlen: possible uninitialized values +tests/non-free/strlen.c:298:[value] Call to builtin Frama_C_strlen(({{ (char const *)&r }})) +tests/non-free/strlen.c:298:[kernel] more than 200(201) locations to update in array. Approximating. +tests/non-free/strlen.c:298:[value] warning: builtin Frama_C_strlen: possible uninitialized values +tests/non-free/strlen.c:299:[value] Call to builtin Frama_C_strlen(({{ (char const *)&t }})) +tests/non-free/strlen.c:299:[kernel] more than 200(1000000) locations to update in array. Approximating. +tests/non-free/strlen.c:299:[value] warning: builtin Frama_C_strlen: possible uninitialized values +[value] Called Frama_C_show_each({1}, {1}, {1}) +tests/non-free/strlen.c:302:[value] Call to builtin Frama_C_strlen(({{ &u + [-8589934592..8589934588],0%4 }})) +tests/non-free/strlen.c:302:[value] warning: builtin Frama_C_strlen: + possible uninitialized values + possibly reading indeterminate data +tests/non-free/strlen.c:303:[value] Call to builtin Frama_C_strlen(({{ &r + [-8589934592..8589934588],0%4 }})) +tests/non-free/strlen.c:303:[kernel] more than 200(201) locations to update in array. Approximating. +tests/non-free/strlen.c:303:[value] warning: builtin Frama_C_strlen: + possible uninitialized values + possibly reading indeterminate data +tests/non-free/strlen.c:304:[value] Call to builtin Frama_C_strlen(({{ &t + [-8589934592..8589934588],0%4 }})) +tests/non-free/strlen.c:304:[kernel] more than 200(1000000) locations to update in array. Approximating. +tests/non-free/strlen.c:304:[value] warning: builtin Frama_C_strlen: + possible uninitialized values + possibly reading indeterminate data +[value] Called Frama_C_show_each({0; 1; 2; 3}, [0..800], [0..3999996]) +[value] Recording results for big_array +[value] Done for function big_array +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function big_array: + t[0..999999] ∈ {270729319} or UNINITIALIZED + u[0..199] ∈ {270729319} or UNINITIALIZED + r[0..200] ∈ {270729319} or UNINITIALIZED + p ∈ {{ &r + [0..800],0%4 }} + len_u ∈ {0; 1; 2; 3} + len_r ∈ [0..800] + len_t ∈ [0..3999996] +[value:final-states] Values at end of function bitfields: + s.a ∈ {3} + .b ∈ {1} + .[bits 16 to 31] ∈ UNINITIALIZED + .c ∈ {7} + .[bits 49 to 63] ∈ UNINITIALIZED + p ∈ {{ (char *)&s }} +[value:final-states] Values at end of function bitfields2: + s.a ∈ {3} + .b ∈ {1} + .c ∈ {7} + .[bits 25 to 31] ∈ UNINITIALIZED + p ∈ {{ (char *)&s }} + z1 ∈ {2} +[value:final-states] Values at end of function escaping: + s[0] ∈ {0} + [1..3] ∈ ESCAPINGADDR + z1 ∈ {0} + z2 ∈ {0} +[value:final-states] Values at end of function init_array_nondet: + from ∈ {-1} + to ∈ {-1} + val1 ∈ {-1} + val2 ∈ {-1} + val ∈ {0; 1; 2; 3; 4} + a[0..99] ∈ {0; 1; 2} + a[0..39] ∈ {1; 2} + [40..49] ∈ UNINITIALIZED + [50..94] ∈ {3; 4} or UNINITIALIZED + [95..99] ∈ UNINITIALIZED +[value:final-states] Values at end of function misc: + Frama_C_entropy_source ∈ [--..--] + loc_str ∈ {{ "Bonjour Monde\n" }} + loc_char_array[0..2] ∈ UNINITIALIZED + [3] ∈ {0} + [4] ∈ UNINITIALIZED + sz1 ∈ {12; 14} + sz2 ∈ {0} + sz3 ∈ [0..13] + sz4 ∈ {3} + sz5 ∈ {2; 3; 4} + sz6 ∈ {1; 2; 3} + sz7 ∈ {0; 1; 2; 3; 4} or UNINITIALIZED + sz8 ∈ {1} + x ∈ {-1412567296} + z ∈ {305419776} + i ∈ [0..11] + str ∈ + {{ "" ; "a" ; "aa" ; "aaa" ; "aaaa" ; "aaaaa" ; "aaaaaa" ; "aaaaaaaaa" ; + "aaaaaaaaaa" ; "aaaaaaaaaaa" ; "aaaaaaaaaaaa" ; "aaaaaaaaaaaaa" }} + s1 ∈ {{ "mno\000pqr" ; "MNOP\000QRS" }} + s2 ∈ {{ "efg" + {1; 2} ; "EFGH" + {1; 2} }} + maybe_init[0] ∈ {65} or UNINITIALIZED + [1] ∈ {0} +[value:final-states] Values at end of function my_strlen: + __retres ∈ [0..54] +[value:final-states] Values at end of function small_sets: + s ∈ {{ "b\000c" }} + p ∈ {{ "b\000c" + {0; 2} }} + z1 ∈ {2; 3} + z2 ∈ {0; 2} + z3 ∈ {0} + z4 ∈ {1} + t[0..1] ∈ {0; 1} + [2..3] ∈ {1} + z5 ∈ {0; 1} +[value:final-states] Values at end of function strlen_initialization: + empty_or_uninitialized[0] ∈ {0} or UNINITIALIZED + z1 ∈ {0} + s[0] ∈ {1} or UNINITIALIZED + [1] ∈ {0} + p ∈ {{ &t[0] }} + z2 ∈ {1} + t[0..1] ∈ {10} + [2] ∈ {10} or UNINITIALIZED + [3] ∈ {0} + z3 ∈ {3} +[value:final-states] Values at end of function strlen_large: + Frama_C_entropy_source ∈ [--..--] + a[0..99] ∈ {0; 2} + offset ∈ [50..70] + z1 ∈ [0..54] + z2 ∈ [3..15] + z3 ∈ [1..15] + z4 ∈ [0..12] + z5 ∈ [0..49] +[value:final-states] Values at end of function strlen_large_uninit: + Frama_C_entropy_source ∈ [--..--] + a[0..19] ∈ {1; 2} + [20] ∈ {0} + [21..39] ∈ {1; 2} + [40..49] ∈ UNINITIALIZED + [50..74] ∈ {3; 4} + [75] ∈ {0} + [76..94] ∈ {3; 4} + [95..97] ∈ UNINITIALIZED + [98] ∈ {0} + [99] ∈ UNINITIALIZED + offset ∈ {0} + z1 ∈ [0..17] + z2 ∈ [0..12] + z3 ∈ {20; 21; 22; 23; 24; 25} +[value:final-states] Values at end of function zero_termination: + empty_or_non_terminated[0] ∈ {0; 100} + z1 ∈ {0} + non_terminated[0] ∈ {88} + non_terminated2[0] ∈ {76} + [1] ∈ {0} + [2] ∈ {28} + [3] ∈ {14} + p ∈ {{ &non_terminated2{[2], [3]} }} +[value:final-states] Values at end of function main: + Frama_C_entropy_source ∈ [--..--] + __retres ∈ {0} +[from] Computing for function big_array +[from] Computing for function Frama_C_strlen <-big_array +[from] Done for function Frama_C_strlen +[from] Done for function big_array +[from] Computing for function bitfields +[from] Done for function bitfields +[from] Computing for function bitfields2 +[from] Done for function bitfields2 +[from] Computing for function escaping +[from] Done for function escaping +[from] Computing for function init_array_nondet +[from] Computing for function Frama_C_memset <-init_array_nondet +[from] Done for function Frama_C_memset +[from] Done for function init_array_nondet +[from] Computing for function misc +[from] Computing for function Frama_C_interval <-misc +[from] Done for function Frama_C_interval +[from] Done for function misc +[from] Computing for function my_strlen +[from] Done for function my_strlen +[from] Computing for function small_sets +[from] Done for function small_sets +[from] Computing for function strlen_initialization +[from] Done for function strlen_initialization +[from] Computing for function strlen_large +[from] Done for function strlen_large +[from] Computing for function strlen_large_uninit +[from] Done for function strlen_large_uninit +[from] Computing for function zero_termination +[from] Done for function zero_termination +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function Frama_C_interval: + Frama_C_entropy_source FROM Frama_C_entropy_source (and SELF) + \result FROM Frama_C_entropy_source; min; max +[from] Function big_array: + NO EFFECTS +[from] Function bitfields: + NO EFFECTS +[from] Function bitfields2: + NO EFFECTS +[from] Function escaping: + NO EFFECTS +[from] Function init_array_nondet: + a[0..99] FROM val1; val2; nondet (and SELF) + a[0..99] FROM val1; val2; nondet (and SELF) +[from] Function misc: + Frama_C_entropy_source FROM Frama_C_entropy_source (and SELF) +[from] Function my_strlen: + \result FROM unterminated_string[0..11]; empty_or_uninitialized[0]; + uninitialized[0]; s[0..1]; t[0..3]; a[3..99]; a[3..99]; + "Hello World\n"[bits 0 to 103]; + "abc\000\000\000abc"[bits 0 to 79]; ""[bits 0 to 7]; + "a"[bits 0 to 15]; "aa"[bits 0 to 23]; "aaa"; + "aaaa"[bits 0 to 39]; "aaaaa"[bits 0 to 47]; + "aaaaaa"[bits 0 to 55]; "aaaaaaaaa"[bits 0 to 79]; + "aaaaaaaaaa"[bits 0 to 87]; "aaaaaaaaaaa"[bits 0 to 95]; + "aaaaaaaaaaaa"[bits 0 to 103]; "aaaaaaaaaaaaa"[bits 0 to 111]; + "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c"; + "Bonjour Monde\n"[bits 0 to 119]; "abc"; "ABCD"[bits 0 to 39]; + "efg"[bits 8 to 31]; "EFGH"[bits 8 to 39]; + "mno\000pqr"[bits 0 to 63]; "MNOP\000QRS"[bits 0 to 71] +[from] Function small_sets: + NO EFFECTS +[from] Function strlen_initialization: + NO EFFECTS +[from] Function strlen_large: + Frama_C_entropy_source FROM Frama_C_entropy_source (and SELF) +[from] Function strlen_large_uninit: + Frama_C_entropy_source FROM Frama_C_entropy_source (and SELF) +[from] Function zero_termination: + NO EFFECTS +[from] Function main: + Frama_C_entropy_source FROM Frama_C_entropy_source (and SELF) + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function big_array: + t[0..999999]; u[0..199]; r[0..200]; p; len_u; len_r; len_t +[inout] Inputs for function big_array: + nondet +[inout] Out (internal) for function bitfields: + s{{.a; .b}; .c}; p +[inout] Inputs for function bitfields: + nondet +[inout] Out (internal) for function bitfields2: + s{.a; .b; .c}; p; z1; tmp +[inout] Inputs for function bitfields2: + \nothing +[inout] Out (internal) for function escaping: + s[0..3]; z1; tmp; z2; tmp_0 +[inout] Inputs for function escaping: + nondet +[inout] Out (internal) for function init_array_nondet: + from; to; val1; val2; val; tmp; a[0..99]; a[0..99] +[inout] Inputs for function init_array_nondet: + nondet +[inout] Out (internal) for function misc: + Frama_C_entropy_source; loc_str; loc_char_array[3]; sz1; sz2; sz3; + sz4; sz5; sz6; sz7; sz8; x; z; i; str; s1; tmp; s2; tmp_0; j; + maybe_init[0..1] +[inout] Inputs for function misc: + Frama_C_entropy_source; static_str; zero_str; tab_str[0..11]; + unterminated_string[0..11]; nondet; "Hello World\n"[bits 0 to 103]; + "abc\000\000\000abc"[bits 0 to 79]; ""[bits 0 to 7]; "a"[bits 0 to 15]; + "aa"[bits 0 to 23]; "aaa"; "aaaa"[bits 0 to 39]; "aaaaa"[bits 0 to 47]; + "aaaaaa"[bits 0 to 55]; "aaaaaaaaa"[bits 0 to 79]; + "aaaaaaaaaa"[bits 0 to 87]; "aaaaaaaaaaa"[bits 0 to 95]; + "aaaaaaaaaaaa"[bits 0 to 103]; "aaaaaaaaaaaaa"[bits 0 to 111]; + "Bonjour Monde\n"[bits 0 to 119]; "abc"; "ABCD"[bits 0 to 39]; + "efg"[bits 8 to 31]; "EFGH"[bits 8 to 39]; "mno\000pqr"[bits 0 to 63]; + "MNOP\000QRS"[bits 0 to 71] +[inout] Out (internal) for function my_strlen: + tmp; __retres +[inout] Inputs for function my_strlen: + empty_or_uninitialized[0]; uninitialized[0]; s[0..1]; t[0..3]; a[0..99]; + a[0..99] +[inout] Out (internal) for function small_sets: + s; p; tmp; z1; tmp_0; z2; tmp_1; z3; tmp_2; z4; tmp_3; t[0..3]; z5; tmp_4 +[inout] Inputs for function small_sets: + nondet; "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c" +[inout] Out (internal) for function strlen_initialization: + empty_or_uninitialized[0]; z1; s[0..1]; p; z2; t[0..3]; z3 +[inout] Inputs for function strlen_initialization: + nondet +[inout] Out (internal) for function strlen_large: + Frama_C_entropy_source; a[0..99]; offset; z1; z2; z3; z4; z5 +[inout] Inputs for function strlen_large: + Frama_C_entropy_source; nondet +[inout] Out (internal) for function strlen_large_uninit: + Frama_C_entropy_source; a[0..99]; offset; z1; z2; z3 +[inout] Inputs for function strlen_large_uninit: + Frama_C_entropy_source; nondet +[inout] Out (internal) for function zero_termination: + empty_or_non_terminated[0]; z1; tmp; non_terminated[0]; + non_terminated2[0..3]; p; tmp_0 +[inout] Inputs for function zero_termination: + nondet +[inout] Out (internal) for function main: + Frama_C_entropy_source; __retres +[inout] Inputs for function main: + Frama_C_entropy_source; static_str; zero_str; tab_str[0..11]; + unterminated_string[0..11]; nondet; "Hello World\n"[bits 0 to 103]; + "abc\000\000\000abc"[bits 0 to 79]; ""[bits 0 to 7]; "a"[bits 0 to 15]; + "aa"[bits 0 to 23]; "aaa"; "aaaa"[bits 0 to 39]; "aaaaa"[bits 0 to 47]; + "aaaaaa"[bits 0 to 55]; "aaaaaaaaa"[bits 0 to 79]; + "aaaaaaaaaa"[bits 0 to 87]; "aaaaaaaaaaa"[bits 0 to 95]; + "aaaaaaaaaaaa"[bits 0 to 103]; "aaaaaaaaaaaaa"[bits 0 to 111]; "abc"; + "\000bc"; ""[bits 0 to 7]; "b\000c"; "Bonjour Monde\n"[bits 0 to 119]; + "abc"; "ABCD"[bits 0 to 39]; "efg"[bits 8 to 31]; "EFGH"[bits 8 to 39]; + "mno\000pqr"[bits 0 to 63]; "MNOP\000QRS"[bits 0 to 71] diff --git a/tests/non-free/oracle_symblocs/strlen_align.err.oracle b/tests/non-free/oracle_symblocs/strlen_align.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/non-free/oracle_symblocs/strlen_align.res.oracle b/tests/non-free/oracle_symblocs/strlen_align.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..f4fd3c324f091f38a4f14d8d706ec0aef00f6606 --- /dev/null +++ b/tests/non-free/oracle_symblocs/strlen_align.res.oracle @@ -0,0 +1,33 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/non-free/strlen_align.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +tests/non-free/strlen_align.c:24:[value] Call to builtin Frama_C_strlen(({{ &o + {12} }})) +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + o.e ∈ UNINITIALIZED + .obval ∈ {{ "a" }} + .c ∈ {32} + p ∈ {{ &o + {12} }} + k# ∈ {32}%64, bits 32 to 39 + z ∈ {0} +[from] Computing for function main +[from] Computing for function strlen <-main +[from] Done for function strlen +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function strlen: + \result FROM o.c[bits 32 to 63] +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + o{.obval; .c}; p; k; z +[inout] Inputs for function main: + \nothing diff --git a/tests/non-free/oracle_symblocs/strnlen.err.oracle b/tests/non-free/oracle_symblocs/strnlen.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/non-free/oracle_symblocs/strnlen.res.oracle b/tests/non-free/oracle_symblocs/strnlen.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..6e97c953b59e769c14d09db22dafc451c33d9080 --- /dev/null +++ b/tests/non-free/oracle_symblocs/strnlen.res.oracle @@ -0,0 +1,76 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/non-free/strnlen.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + t1[0] ∈ {97} + [1] ∈ {98} + [2] ∈ {99} + [3] ∈ {100} + [4] ∈ {101} + t2[0] ∈ {97} + [1] ∈ {98} + [2] ∈ {99} + [3] ∈ {100} + [4] ∈ {101} + [5] ∈ {0} +tests/non-free/strnlen.i:9:[value] Call to builtin Frama_C_strnlen(({{ &t1[0] }},{3})) +tests/non-free/strnlen.i:10:[value] Call to builtin Frama_C_strnlen(({{ &t1[0] }},{5})) +tests/non-free/strnlen.i:11:[value] Call to builtin Frama_C_strnlen(({{ &t1[0] }},{6})) +tests/non-free/strnlen.i:11:[value] warning: builtin Frama_C_strnlen: reading indeterminate data +tests/non-free/strnlen.i:13:[value] Call to builtin Frama_C_strnlen(({{ &t2[0] }},{3})) +tests/non-free/strnlen.i:14:[value] Call to builtin Frama_C_strnlen(({{ &t2[0] }},{5})) +tests/non-free/strnlen.i:15:[value] Call to builtin Frama_C_strnlen(({{ &t2[0] }},{6})) +[value] DUMPING STATE of file tests/non-free/strnlen.i line 17 + t1[0] ∈ {97} + [1] ∈ {98} + [2] ∈ {99} + [3] ∈ {100} + [4] ∈ {101} + t2[0] ∈ {97} + [1] ∈ {98} + [2] ∈ {99} + [3] ∈ {100} + [4] ∈ {101} + [5] ∈ {0} + c ∈ [-2147483648..2147483646] + r1a ∈ {3} + r1b ∈ {5} + r1c ∈ UNINITIALIZED + r2a ∈ {3} + r2b ∈ {5} + r2c ∈ {5} + tmp ∈ {3} + tmp_0 ∈ {5} + tmp_2 ∈ {3} + tmp_3 ∈ {5} + tmp_4 ∈ {5} + __retres ∈ UNINITIALIZED + =END OF DUMP== +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +tests/non-free/strnlen.i:9:[kernel] warning: Neither code nor specification for function Frama_C_strnlen, generating default assigns from the prototype +[value:final-states] Values at end of function main: + r1a ∈ {3} + r1b ∈ {5} + r2a ∈ {3} + r2b ∈ {5} + r2c ∈ {5} + __retres ∈ {0} +[from] Computing for function main +[from] Computing for function Frama_C_strnlen <-main +[from] Done for function Frama_C_strnlen +[from] Computing for function Frama_C_dump_each <-main +[from] Done for function Frama_C_dump_each +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + r1a; r1b; r2a; r2b; r2c; tmp; tmp_0; tmp_1; tmp_2; tmp_3; tmp_4; __retres +[inout] Inputs for function main: + \nothing diff --git a/tests/non-free/oracle_symblocs/strnlen2.err.oracle b/tests/non-free/oracle_symblocs/strnlen2.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/non-free/oracle_symblocs/strnlen2.res.oracle b/tests/non-free/oracle_symblocs/strnlen2.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..993520f015fecb444381bb243fc708439e9df702 --- /dev/null +++ b/tests/non-free/oracle_symblocs/strnlen2.res.oracle @@ -0,0 +1,899 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/non-free/strnlen2.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + Frama_C_entropy_source ∈ [--..--] + static_str ∈ {{ "Hello World\n" }} + zero_str ∈ {{ "abc\000\000\000abc" }} + tab_str[0] ∈ {{ "" }} + [1] ∈ {{ "a" }} + [2] ∈ {{ "aa" }} + [3] ∈ {{ "aaa" }} + [4] ∈ {{ "aaaa" }} + [5] ∈ {{ "aaaaa" }} + [6] ∈ {{ "aaaaaa" }} + [7] ∈ {{ "aaaaaaaaa" }} + [8] ∈ {{ "aaaaaaaaaa" }} + [9] ∈ {{ "aaaaaaaaaaa" }} + [10] ∈ {{ "aaaaaaaaaaaa" }} + [11] ∈ {{ "aaaaaaaaaaaaa" }} + unterminated_string[0] ∈ {117} + [1] ∈ {110} + [2] ∈ {116} + [3] ∈ {101} + [4] ∈ {114} + [5] ∈ {109} + [6] ∈ {105} + [7] ∈ {110} + [8] ∈ {97} + [9] ∈ {116} + [10] ∈ {101} + [11] ∈ {100} + nondet ∈ [--..--] +[value] computing for function small_sets <- main. + Called from tests/non-free/strnlen2.c:488. +tests/non-free/strnlen2.c:45:[value] Call to builtin Frama_C_strnlen(({{ "abc" + {0; 1} }},{3})) +tests/non-free/strnlen2.c:46:[value] assertion got status valid. +tests/non-free/strnlen2.c:49:[value] Call to builtin Frama_C_strnlen(({{ "\000bc" + {0; 1} }},{2})) +tests/non-free/strnlen2.c:50:[value] assertion got status valid. +tests/non-free/strnlen2.c:52:[value] Call to builtin Frama_C_strnlen(({{ "" }},{0})) +tests/non-free/strnlen2.c:53:[value] assertion got status valid. +tests/non-free/strnlen2.c:56:[value] Call to builtin Frama_C_strnlen(({{ "b\000c" + {0; 2} }},{2})) +tests/non-free/strnlen2.c:57:[value] assertion got status valid. +tests/non-free/strnlen2.c:61:[value] Call to builtin Frama_C_strnlen(({{ &t[0] }},{4})) +tests/non-free/strnlen2.c:62:[value] assertion got status valid. +[value] Recording results for small_sets +[value] Done for function small_sets +[value] computing for function zero_termination <- main. + Called from tests/non-free/strnlen2.c:489. +tests/non-free/strnlen2.c:68:[value] Call to builtin Frama_C_strnlen(({{ &empty_or_non_terminated[0] }},{1})) +tests/non-free/strnlen2.c:69:[value] assertion got status valid. +tests/non-free/strnlen2.c:73:[value] Call to builtin Frama_C_strnlen(({{ &non_terminated[0] }},{2})) +tests/non-free/strnlen2.c:73:[value] warning: builtin Frama_C_strnlen: reading indeterminate data +tests/non-free/strnlen2.c:79:[value] Call to builtin Frama_C_strnlen(({{ &non_terminated2{[2], [3]} }},{4})) +tests/non-free/strnlen2.c:79:[value] warning: builtin Frama_C_strnlen: reading indeterminate data +[value] Recording results for zero_termination +[value] Done for function zero_termination +[value] computing for function initialization <- main. + Called from tests/non-free/strnlen2.c:491. +tests/non-free/strnlen2.c:85:[value] Call to builtin Frama_C_strnlen(({{ &empty_or_uninitialized[0] }},{1})) +tests/non-free/strnlen2.c:85:[value] warning: builtin Frama_C_strnlen: possible uninitialized values +tests/non-free/strnlen2.c:86:[value] assertion got status valid. +tests/non-free/strnlen2.c:89:[value] Call to builtin Frama_C_strnlen(({{ &uninitialized[0] }},{1})) +tests/non-free/strnlen2.c:89:[value] warning: builtin Frama_C_strnlen: reading indeterminate data +tests/non-free/strnlen2.c:94:[value] Call to builtin Frama_C_strnlen(({{ &s[0] }},{2})) +tests/non-free/strnlen2.c:94:[value] warning: builtin Frama_C_strnlen: possible uninitialized values +tests/non-free/strnlen2.c:95:[value] assertion got status valid. +tests/non-free/strnlen2.c:101:[value] Call to builtin Frama_C_strnlen(({{ &t[0] }},{4})) +tests/non-free/strnlen2.c:101:[value] warning: builtin Frama_C_strnlen: possible uninitialized values +tests/non-free/strnlen2.c:102:[value] assertion got status valid. +[value] Recording results for initialization +[value] Done for function initialization +[value] computing for function large <- main. + Called from tests/non-free/strnlen2.c:492. +[value] computing for function init_array_nondet <- large <- main. + Called from tests/non-free/strnlen2.c:144. +tests/non-free/strnlen2.c:138:[value] Call to builtin memset(({{ (void *)&a }},{1; 2},{100})) +[value] Recording results for init_array_nondet +[value] Done for function init_array_nondet +[value] computing for function Frama_C_interval <- large <- main. + Called from tests/non-free/strnlen2.c:147. +[value] using specification for function Frama_C_interval +share/libc/__fc_builtin.h:50:[value] function Frama_C_interval: precondition got status valid. +[value] Done for function Frama_C_interval +tests/non-free/strnlen2.c:148:[value] Call to builtin Frama_C_strnlen(({{ &a + [3..30] }},{100})) +tests/non-free/strnlen2.c:149:[value] assertion got status valid. +[value] computing for function Frama_C_interval <- large <- main. + Called from tests/non-free/strnlen2.c:151. +[value] Done for function Frama_C_interval +tests/non-free/strnlen2.c:152:[value] Call to builtin Frama_C_strnlen(({{ &a + [5..17] }},{100})) +tests/non-free/strnlen2.c:153:[value] assertion got status valid. +[value] computing for function Frama_C_interval <- large <- main. + Called from tests/non-free/strnlen2.c:155. +[value] Done for function Frama_C_interval +tests/non-free/strnlen2.c:156:[value] Call to builtin Frama_C_strnlen(({{ &a + [60..74] }},{100})) +tests/non-free/strnlen2.c:157:[value] assertion got status valid. +[value] computing for function Frama_C_interval <- large <- main. + Called from tests/non-free/strnlen2.c:159. +[value] Done for function Frama_C_interval +tests/non-free/strnlen2.c:160:[value] Call to builtin Frama_C_strnlen(({{ &a + [63..80] }},{100})) +tests/non-free/strnlen2.c:160:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data +tests/non-free/strnlen2.c:161:[value] assertion got status valid. +[value] computing for function init_array_nondet <- large <- main. + Called from tests/non-free/strnlen2.c:163. +tests/non-free/strnlen2.c:138:[value] Call to builtin memset(({{ (void *)&a }},{0; 2},{100})) +[value] Recording results for init_array_nondet +[value] Done for function init_array_nondet +[value] computing for function Frama_C_interval <- large <- main. + Called from tests/non-free/strnlen2.c:164. +[value] Done for function Frama_C_interval +tests/non-free/strnlen2.c:165:[value] Call to builtin Frama_C_strnlen(({{ &a + [50..70] }},{100})) +tests/non-free/strnlen2.c:165:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data +tests/non-free/strnlen2.c:166:[value] assertion got status valid. +[value] Recording results for large +[value] Done for function large +[value] computing for function large_uninit <- main. + Called from tests/non-free/strnlen2.c:493. +[value] computing for function init_array_nondet <- large_uninit <- main. + Called from tests/non-free/strnlen2.c:171. +tests/non-free/strnlen2.c:138:[value] Call to builtin memset(({{ (void *)&a }},{1; 2},{40})) +[value] Recording results for init_array_nondet +[value] Done for function init_array_nondet +[value] computing for function init_array_nondet <- large_uninit <- main. + Called from tests/non-free/strnlen2.c:172. +tests/non-free/strnlen2.c:138:[value] Call to builtin memset(({{ (void *)&a[50] }},{3; 4},{45})) +[value] Recording results for init_array_nondet +[value] Done for function init_array_nondet +[value] computing for function Frama_C_interval <- large_uninit <- main. + Called from tests/non-free/strnlen2.c:176. +[value] Done for function Frama_C_interval +tests/non-free/strnlen2.c:177:[value] Call to builtin Frama_C_strnlen(({{ &a + [3..30] }},{100})) +tests/non-free/strnlen2.c:177:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data +tests/non-free/strnlen2.c:178:[value] assertion got status valid. +[value] computing for function Frama_C_interval <- large_uninit <- main. + Called from tests/non-free/strnlen2.c:181. +[value] Done for function Frama_C_interval +tests/non-free/strnlen2.c:182:[value] Call to builtin Frama_C_strnlen(({{ &a + [63..80] }},{100})) +tests/non-free/strnlen2.c:182:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data +tests/non-free/strnlen2.c:183:[value] assertion got status valid. +[value] computing for function Frama_C_interval <- large_uninit <- main. + Called from tests/non-free/strnlen2.c:185. +[value] Done for function Frama_C_interval +tests/non-free/strnlen2.c:186:[value] Call to builtin Frama_C_strnlen(({{ &a + [45..55] }},{100})) +tests/non-free/strnlen2.c:186:[value] warning: builtin Frama_C_strnlen: + possible uninitialized values + possibly reading indeterminate data +tests/non-free/strnlen2.c:187:[value] assertion got status valid. +[value] Recording results for large_uninit +[value] Done for function large_uninit +[value] computing for function misc <- main. + Called from tests/non-free/strnlen2.c:494. +tests/non-free/strnlen2.c:215:[value] Call to builtin Frama_C_strnlen(({{ &unterminated_string[0] }},{13})) +tests/non-free/strnlen2.c:215:[value] warning: builtin Frama_C_strnlen: reading indeterminate data +tests/non-free/strnlen2.c:218:[value] Call to builtin Frama_C_strnlen(({{ "Hello World\n" ; "Bonjour Monde\n" }}, + {14})) +tests/non-free/strnlen2.c:219:[value] assertion got status valid. +tests/non-free/strnlen2.c:222:[value] Call to builtin Frama_C_strnlen(({{ &x + {0; 3} }},{12})) +tests/non-free/strnlen2.c:222:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data +tests/non-free/strnlen2.c:223:[value] assertion got status valid. +[value] computing for function Frama_C_interval <- misc <- main. + Called from tests/non-free/strnlen2.c:224. +[value] Done for function Frama_C_interval +tests/non-free/strnlen2.c:226:[value] Call to builtin Frama_C_strnlen(({{ "" ; "a" ; "aa" ; "aaa" ; "aaaa" ; + "aaaaa" ; "aaaaaa" ; "aaaaaaaaa" ; + "aaaaaaaaaa" ; "aaaaaaaaaaa" ; + "aaaaaaaaaaaa" ; "aaaaaaaaaaaaa" }}, + {13})) +tests/non-free/strnlen2.c:227:[value] assertion got status valid. +tests/non-free/strnlen2.c:229:[value] Call to builtin Frama_C_strnlen(({{ &loc_char_array[0] }},{5})) +tests/non-free/strnlen2.c:229:[value] warning: builtin Frama_C_strnlen: reading indeterminate data +tests/non-free/strnlen2.c:230:[value] Call to builtin Frama_C_strnlen(({{ "abc\000\000\000abc" }},{9})) +tests/non-free/strnlen2.c:231:[value] assertion got status valid. +tests/non-free/strnlen2.c:234:[value] Call to builtin Frama_C_strnlen(({{ "abc" + {0; 1} ; "ABCD" + {0; 1} }},{5})) +tests/non-free/strnlen2.c:235:[value] assertion got status valid. +tests/non-free/strnlen2.c:239:[value] Call to builtin Frama_C_strnlen(({{ "efg" + {1; 2} ; "EFGH" + {1; 2} }},{5})) +tests/non-free/strnlen2.c:240:[value] assertion got status valid. +tests/non-free/strnlen2.c:243:[value] entering loop for the first time +tests/non-free/strnlen2.c:244:[value] Call to builtin Frama_C_strnlen(({{ "mno\000pqr" ; "MNOP\000QRS" }},{10})) +tests/non-free/strnlen2.c:245:[value] assertion got status valid. +tests/non-free/strnlen2.c:244:[value] Call to builtin Frama_C_strnlen(({{ "mno\000pqr" + {0; 1} ; + "MNOP\000QRS" + {0; 1} }},{10})) +tests/non-free/strnlen2.c:244:[value] Call to builtin Frama_C_strnlen(({{ "mno\000pqr" + {0; 1; 2} ; + "MNOP\000QRS" + {0; 1; 2} }},{10})) +tests/non-free/strnlen2.c:244:[value] Call to builtin Frama_C_strnlen(({{ "mno\000pqr" + {0; 1; 2; 3; 4; 5; 6; 7} ; + "MNOP\000QRS" + {0; 1; 2; 3; 4; 5; 6; 7} }}, + {10})) +tests/non-free/strnlen2.c:244:[value] Call to builtin Frama_C_strnlen(({{ "mno\000pqr" + {0; 1; 2; 3; 4; 5; 6; 7} ; + "MNOP\000QRS" + {0; 1; 2; 3; 4; 5; 6; 7} }}, + {10})) +tests/non-free/strnlen2.c:251:[value] Call to builtin Frama_C_strnlen(({{ &maybe_init[0] }},{2})) +tests/non-free/strnlen2.c:251:[value] warning: builtin Frama_C_strnlen: possible uninitialized values +tests/non-free/strnlen2.c:252:[value] assertion got status valid. +[value] Recording results for misc +[value] Done for function misc +[value] computing for function bitfields <- main. + Called from tests/non-free/strnlen2.c:495. +tests/non-free/strnlen2.c:117:[value] Call to builtin Frama_C_strnlen(({{ (char const *)&s }},{3})) +tests/non-free/strnlen2.c:117:[value] warning: builtin Frama_C_strnlen: reading indeterminate data +[value] Recording results for bitfields +[value] Done for function bitfields +[value] computing for function bitfields2 <- main. + Called from tests/non-free/strnlen2.c:496. +tests/non-free/strnlen2.c:132:[value] Call to builtin Frama_C_strnlen(({{ (char const *)&s }},{3})) +tests/non-free/strnlen2.c:133:[value] assertion got status valid. +[value] Recording results for bitfields2 +[value] Done for function bitfields2 +[value] computing for function escaping <- main. + Called from tests/non-free/strnlen2.c:497. +tests/non-free/strnlen2.c:196:[value] warning: locals {x} escaping the scope of a block of escaping through s +tests/non-free/strnlen2.c:199:[value] Call to builtin Frama_C_strnlen(({{ &s[0] }},{4})) +tests/non-free/strnlen2.c:199:[value] warning: builtin Frama_C_strnlen: possible escaping addresses +tests/non-free/strnlen2.c:200:[value] assertion got status valid. +tests/non-free/strnlen2.c:202:[value] Call to builtin Frama_C_strnlen(({{ &s[0] }},{4})) +tests/non-free/strnlen2.c:203:[value] assertion got status valid. +[value] Recording results for escaping +[value] Done for function escaping +[value] computing for function big_array <- main. + Called from tests/non-free/strnlen2.c:498. +tests/non-free/strnlen2.c:261:[value] warning: out of bounds write. assert \valid(p); +tests/non-free/strnlen2.c:263:[value] warning: out of bounds write. assert \valid(p); +tests/non-free/strnlen2.c:265:[value] warning: out of bounds write. assert \valid(p); +tests/non-free/strnlen2.c:272:[value] Call to builtin Frama_C_strnlen(({{ (char const *)&u }},{800})) +tests/non-free/strnlen2.c:272:[value] warning: builtin Frama_C_strnlen: possible uninitialized values +tests/non-free/strnlen2.c:273:[value] Call to builtin Frama_C_strnlen(({{ (char const *)&r }},{804})) +tests/non-free/strnlen2.c:273:[kernel] more than 200(201) locations to update in array. Approximating. +tests/non-free/strnlen2.c:273:[value] warning: builtin Frama_C_strnlen: possible uninitialized values +tests/non-free/strnlen2.c:274:[value] Call to builtin Frama_C_strnlen(({{ (char const *)&t }},{4000000})) +tests/non-free/strnlen2.c:274:[kernel] more than 200(1000000) locations to update in array. Approximating. +tests/non-free/strnlen2.c:274:[value] warning: builtin Frama_C_strnlen: possible uninitialized values +tests/non-free/strnlen2.c:275:[value] assertion got status valid. +tests/non-free/strnlen2.c:276:[value] assertion got status valid. +tests/non-free/strnlen2.c:277:[value] assertion got status valid. +[value] Called Frama_C_show_each({1}, {1}, {1}) +tests/non-free/strnlen2.c:282:[value] Call to builtin Frama_C_strnlen(({{ &u + [-8589934592..8589934588],0%4 }}, + {801})) +tests/non-free/strnlen2.c:282:[value] warning: builtin Frama_C_strnlen: + possible uninitialized values + possibly reading indeterminate data +tests/non-free/strnlen2.c:283:[value] Call to builtin Frama_C_strnlen(({{ &r + [-8589934592..8589934588],0%4 }}, + {805})) +tests/non-free/strnlen2.c:283:[kernel] more than 200(201) locations to update in array. Approximating. +tests/non-free/strnlen2.c:283:[value] warning: builtin Frama_C_strnlen: + possible uninitialized values + possibly reading indeterminate data +tests/non-free/strnlen2.c:284:[value] Call to builtin Frama_C_strnlen(({{ &t + [-8589934592..8589934588],0%4 }}, + {4000001})) +tests/non-free/strnlen2.c:284:[kernel] more than 200(1000000) locations to update in array. Approximating. +tests/non-free/strnlen2.c:284:[value] warning: builtin Frama_C_strnlen: + possible uninitialized values + possibly reading indeterminate data +tests/non-free/strnlen2.c:285:[value] assertion got status valid. +tests/non-free/strnlen2.c:286:[value] assertion got status valid. +tests/non-free/strnlen2.c:287:[value] assertion got status valid. +[value] Called Frama_C_show_each({0; 1; 2; 3}, [0..800], [0..3999996]) +[value] computing for function init_array_nondet <- big_array <- main. + Called from tests/non-free/strnlen2.c:291. +tests/non-free/strnlen2.c:138:[value] Call to builtin memset(({{ (void *)&u }},{0; 1},{800})) +[value] Recording results for init_array_nondet +[value] Done for function init_array_nondet +[value] computing for function init_array_nondet <- big_array <- main. + Called from tests/non-free/strnlen2.c:292. +tests/non-free/strnlen2.c:138:[value] Call to builtin memset(({{ (void *)&r }},{0; 1},{804})) +[value] Recording results for init_array_nondet +[value] Done for function init_array_nondet +[value] computing for function init_array_nondet <- big_array <- main. + Called from tests/non-free/strnlen2.c:293. +tests/non-free/strnlen2.c:138:[value] Call to builtin memset(({{ (void *)&t }},{0; 1},{4000000})) +[value] Recording results for init_array_nondet +[value] Done for function init_array_nondet +tests/non-free/strnlen2.c:295:[value] warning: out of bounds write. assert \valid(p); +tests/non-free/strnlen2.c:297:[value] warning: out of bounds write. assert \valid(p); +tests/non-free/strnlen2.c:299:[value] warning: out of bounds write. assert \valid(p); +tests/non-free/strnlen2.c:300:[value] Call to builtin Frama_C_strnlen(({{ (char const *)&u }},{800})) +tests/non-free/strnlen2.c:301:[value] Call to builtin Frama_C_strnlen(({{ (char const *)&r }},{804})) +tests/non-free/strnlen2.c:301:[kernel] more than 200(201) locations to update in array. Approximating. +tests/non-free/strnlen2.c:302:[value] Call to builtin Frama_C_strnlen(({{ (char const *)&t }},{4000000})) +tests/non-free/strnlen2.c:302:[kernel] more than 200(1000000) locations to update in array. Approximating. +tests/non-free/strnlen2.c:303:[value] assertion got status valid. +tests/non-free/strnlen2.c:304:[value] assertion got status valid. +tests/non-free/strnlen2.c:305:[value] assertion got status valid. +[value] Called Frama_C_show_each([0..800], [0..804], [0..4000000]) +tests/non-free/strnlen2.c:308:[value] Call to builtin Frama_C_strnlen(({{ &u + [-8589934592..8589934588],0%4 }}, + {801})) +tests/non-free/strnlen2.c:308:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data +tests/non-free/strnlen2.c:309:[value] Call to builtin Frama_C_strnlen(({{ &r + [-8589934592..8589934588],0%4 }}, + {805})) +tests/non-free/strnlen2.c:309:[kernel] more than 200(201) locations to update in array. Approximating. +tests/non-free/strnlen2.c:309:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data +tests/non-free/strnlen2.c:310:[value] Call to builtin Frama_C_strnlen(({{ &t + [-8589934592..8589934588],0%4 }}, + {4000001})) +tests/non-free/strnlen2.c:310:[kernel] more than 200(1000000) locations to update in array. Approximating. +tests/non-free/strnlen2.c:310:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data +tests/non-free/strnlen2.c:311:[value] assertion got status valid. +tests/non-free/strnlen2.c:312:[value] assertion got status valid. +tests/non-free/strnlen2.c:313:[value] assertion got status valid. +[value] Called Frama_C_show_each([0..799], [0..803], [0..3999999]) +[value] Recording results for big_array +[value] Done for function big_array +[value] computing for function no_zero_but_ok <- main. + Called from tests/non-free/strnlen2.c:500. +tests/non-free/strnlen2.c:325:[value] Call to builtin Frama_C_strnlen(({{ &s[0] }},{5})) +tests/non-free/strnlen2.c:326:[value] assertion got status valid. +tests/non-free/strnlen2.c:327:[value] Call to builtin Frama_C_strnlen(({{ &s[0] }},{10})) +tests/non-free/strnlen2.c:328:[value] assertion got status valid. +tests/non-free/strnlen2.c:330:[value] Call to builtin Frama_C_strnlen(({{ &s{[1], [8]} }},{10})) +tests/non-free/strnlen2.c:331:[value] assertion got status valid. +tests/non-free/strnlen2.c:333:[value] Call to builtin Frama_C_strnlen(({{ &s{[7], [11]} }},{4})) +tests/non-free/strnlen2.c:334:[value] assertion got status valid. +tests/non-free/strnlen2.c:336:[value] Call to builtin Frama_C_strnlen(({{ &s{[7], [18]} }},{4})) +tests/non-free/strnlen2.c:336:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data +tests/non-free/strnlen2.c:337:[value] assertion got status valid. +[value] Recording results for no_zero_but_ok +[value] Done for function no_zero_but_ok +[value] computing for function small_sets_n <- main. + Called from tests/non-free/strnlen2.c:501. +tests/non-free/strnlen2.c:345:[value] Call to builtin Frama_C_strnlen(({{ "abcde" + {0; 1} }},{2; 5})) +tests/non-free/strnlen2.c:346:[value] assertion got status valid. +tests/non-free/strnlen2.c:351:[value] Call to builtin Frama_C_strnlen(({{ "\000bcdef" + {0; 1} }},{1; 4})) +tests/non-free/strnlen2.c:352:[value] assertion got status valid. +tests/non-free/strnlen2.c:356:[value] Call to builtin Frama_C_strnlen(({{ "bcd\000efg" + {0; 2} }},{2})) +tests/non-free/strnlen2.c:357:[value] assertion got status valid. +tests/non-free/strnlen2.c:361:[value] Call to builtin Frama_C_strnlen(({{ "bcd\000efg" + {0; 2} }},{2; 3})) +tests/non-free/strnlen2.c:362:[value] assertion got status valid. +tests/non-free/strnlen2.c:366:[value] Call to builtin Frama_C_strnlen(({{ "bcd\000efg" + {0; 2; 4} }},{2; 5})) +tests/non-free/strnlen2.c:367:[value] assertion got status valid. +[value] Recording results for small_sets_n +[value] Done for function small_sets_n +[value] computing for function large_n <- main. + Called from tests/non-free/strnlen2.c:502. +[value] computing for function init_array_nondet <- large_n <- main. + Called from tests/non-free/strnlen2.c:372. +tests/non-free/strnlen2.c:138:[value] Call to builtin memset(({{ (void *)&a }},{1; 2},{100})) +[value] Recording results for init_array_nondet +[value] Done for function init_array_nondet +[value] computing for function Frama_C_interval <- large_n <- main. + Called from tests/non-free/strnlen2.c:377. +[value] Done for function Frama_C_interval +[value] computing for function Frama_C_interval <- large_n <- main. + Called from tests/non-free/strnlen2.c:378. +[value] Done for function Frama_C_interval +tests/non-free/strnlen2.c:379:[value] Call to builtin Frama_C_strnlen(({{ &a + [3..30] }},[10..20])) +tests/non-free/strnlen2.c:380:[value] assertion got status valid. +tests/non-free/strnlen2.c:384:[value] Call to builtin Frama_C_strnlen(({{ &a + [3..30] }},[10..20])) +tests/non-free/strnlen2.c:385:[value] assertion got status valid. +tests/non-free/strnlen2.c:388:[value] Call to builtin Frama_C_strnlen(({{ &a + [3..30] }},[10..20])) +tests/non-free/strnlen2.c:389:[value] assertion got status valid. +[value] computing for function Frama_C_interval <- large_n <- main. + Called from tests/non-free/strnlen2.c:391. +[value] Done for function Frama_C_interval +tests/non-free/strnlen2.c:392:[value] Call to builtin Frama_C_strnlen(({{ &a + [5..17] }},[10..20])) +tests/non-free/strnlen2.c:393:[value] assertion got status valid. +[value] computing for function Frama_C_interval <- large_n <- main. + Called from tests/non-free/strnlen2.c:395. +[value] Done for function Frama_C_interval +tests/non-free/strnlen2.c:396:[value] Call to builtin Frama_C_strnlen(({{ &a + [60..74] }},[10..20])) +tests/non-free/strnlen2.c:397:[value] assertion got status valid. +[value] computing for function Frama_C_interval <- large_n <- main. + Called from tests/non-free/strnlen2.c:399. +[value] Done for function Frama_C_interval +tests/non-free/strnlen2.c:400:[value] Call to builtin Frama_C_strnlen(({{ &a + [63..80] }},[10..20])) +tests/non-free/strnlen2.c:401:[value] assertion got status valid. +[value] computing for function init_array_nondet <- large_n <- main. + Called from tests/non-free/strnlen2.c:403. +tests/non-free/strnlen2.c:138:[value] Call to builtin memset(({{ (void *)&a }},{0; 2},{100})) +[value] Recording results for init_array_nondet +[value] Done for function init_array_nondet +[value] computing for function Frama_C_interval <- large_n <- main. + Called from tests/non-free/strnlen2.c:404. +[value] Done for function Frama_C_interval +tests/non-free/strnlen2.c:405:[value] Call to builtin Frama_C_strnlen(({{ &a + [50..70] }},[10..20])) +tests/non-free/strnlen2.c:406:[value] assertion got status valid. +[value] computing for function Frama_C_interval <- large_n <- main. + Called from tests/non-free/strnlen2.c:408. +[value] Done for function Frama_C_interval +tests/non-free/strnlen2.c:409:[value] Call to builtin Frama_C_strnlen(({{ &a + [50..70] }},[0..100])) +tests/non-free/strnlen2.c:409:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data +tests/non-free/strnlen2.c:410:[value] assertion got status valid. +[value] computing for function Frama_C_interval <- large_n <- main. + Called from tests/non-free/strnlen2.c:412. +[value] Done for function Frama_C_interval +[value] computing for function Frama_C_interval <- large_n <- main. + Called from tests/non-free/strnlen2.c:413. +[value] Done for function Frama_C_interval +tests/non-free/strnlen2.c:414:[value] Call to builtin Frama_C_strnlen(({{ &a + [0..10] }},[0..90])) +tests/non-free/strnlen2.c:415:[value] assertion got status valid. +[value] Recording results for large_n +[value] Done for function large_n +[value] computing for function unbounded_n <- main. + Called from tests/non-free/strnlen2.c:504. +tests/non-free/strnlen2.c:423:[value] Call to builtin Frama_C_strnlen(({{ "abc" }},[0..2147483647])) +tests/non-free/strnlen2.c:424:[value] assertion got status valid. +tests/non-free/strnlen2.c:426:[value] Call to builtin Frama_C_strnlen(({{ "abc" + {0; 1} }},[0..2147483647])) +tests/non-free/strnlen2.c:427:[value] assertion got status valid. +tests/non-free/strnlen2.c:429:[value] Call to builtin Frama_C_strnlen(({{ "bcd\000eg" }},[0..2147483647])) +tests/non-free/strnlen2.c:430:[value] assertion got status valid. +[value] Recording results for unbounded_n +[value] Done for function unbounded_n +[value] computing for function intervals <- main. + Called from tests/non-free/strnlen2.c:505. +[value] computing for function init_array_nondet <- intervals <- main. + Called from tests/non-free/strnlen2.c:435. +tests/non-free/strnlen2.c:138:[value] Call to builtin memset(({{ (void *)&a }},{0; 1},{10})) +[value] Recording results for init_array_nondet +[value] Done for function init_array_nondet +[value] computing for function init_array_nondet <- intervals <- main. + Called from tests/non-free/strnlen2.c:436. +tests/non-free/strnlen2.c:138:[value] Call to builtin memset(({{ (void *)&a[3] }},{1},{4})) +[value] Recording results for init_array_nondet +[value] Done for function init_array_nondet +[value] computing for function init_array_nondet <- intervals <- main. + Called from tests/non-free/strnlen2.c:437. +tests/non-free/strnlen2.c:138:[value] Call to builtin memset(({{ (void *)&a[11] }},{0; 1},{1})) +[value] Recording results for init_array_nondet +[value] Done for function init_array_nondet +[value] computing for function init_array_nondet <- intervals <- main. + Called from tests/non-free/strnlen2.c:438. +tests/non-free/strnlen2.c:138:[value] Call to builtin memset(({{ (void *)&a[12] }},{1},{4})) +[value] Recording results for init_array_nondet +[value] Done for function init_array_nondet +[value] computing for function init_array_nondet <- intervals <- main. + Called from tests/non-free/strnlen2.c:439. +tests/non-free/strnlen2.c:138:[value] Call to builtin memset(({{ (void *)&a[16] }},{0; 1},{4})) +[value] Recording results for init_array_nondet +[value] Done for function init_array_nondet +[value] computing for function Frama_C_interval <- intervals <- main. + Called from tests/non-free/strnlen2.c:441. +[value] Done for function Frama_C_interval +[value] computing for function Frama_C_interval <- intervals <- main. + Called from tests/non-free/strnlen2.c:442. +[value] Done for function Frama_C_interval +tests/non-free/strnlen2.c:443:[value] Call to builtin Frama_C_strnlen(({{ &a + [0..9] }},[0..9])) +tests/non-free/strnlen2.c:443:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data +tests/non-free/strnlen2.c:444:[value] assertion got status valid. +[value] computing for function Frama_C_interval <- intervals <- main. + Called from tests/non-free/strnlen2.c:446. +[value] Done for function Frama_C_interval +[value] computing for function Frama_C_interval <- intervals <- main. + Called from tests/non-free/strnlen2.c:447. +[value] Done for function Frama_C_interval +tests/non-free/strnlen2.c:448:[value] Call to builtin Frama_C_strnlen(({{ &a{[3], [4], [5], [6], [7], [8], [9]} }}, + [2..10])) +tests/non-free/strnlen2.c:448:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data +tests/non-free/strnlen2.c:449:[value] assertion got status valid. +[value] computing for function Frama_C_interval <- intervals <- main. + Called from tests/non-free/strnlen2.c:451. +[value] Done for function Frama_C_interval +[value] computing for function Frama_C_interval <- intervals <- main. + Called from tests/non-free/strnlen2.c:452. +[value] Done for function Frama_C_interval +tests/non-free/strnlen2.c:453:[value] Call to builtin Frama_C_strnlen(({{ &a{[3], [4], [5], [6], [7], [8], [9]} }}, + [0..11])) +tests/non-free/strnlen2.c:453:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data +tests/non-free/strnlen2.c:454:[value] assertion got status valid. +[value] computing for function Frama_C_interval <- intervals <- main. + Called from tests/non-free/strnlen2.c:456. +[value] Done for function Frama_C_interval +[value] computing for function Frama_C_interval <- intervals <- main. + Called from tests/non-free/strnlen2.c:457. +[value] Done for function Frama_C_interval +tests/non-free/strnlen2.c:458:[value] Call to builtin Frama_C_strnlen(({{ &a{[3], [4], [5], [6], [7], [8], [9], + [10]} }},[0..9])) +tests/non-free/strnlen2.c:458:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data +tests/non-free/strnlen2.c:459:[value] assertion got status valid. +[value] computing for function Frama_C_interval <- intervals <- main. + Called from tests/non-free/strnlen2.c:461. +[value] Done for function Frama_C_interval +[value] computing for function Frama_C_interval <- intervals <- main. + Called from tests/non-free/strnlen2.c:462. +[value] Done for function Frama_C_interval +tests/non-free/strnlen2.c:463:[value] Call to builtin Frama_C_strnlen(({{ &a{[3], [4], [5], [6], [7], [8], [9], + [10]} }},[0..10])) +tests/non-free/strnlen2.c:463:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data +tests/non-free/strnlen2.c:464:[value] assertion got status valid. +[value] computing for function Frama_C_interval <- intervals <- main. + Called from tests/non-free/strnlen2.c:466. +[value] Done for function Frama_C_interval +[value] computing for function Frama_C_interval <- intervals <- main. + Called from tests/non-free/strnlen2.c:467. +[value] Done for function Frama_C_interval +tests/non-free/strnlen2.c:468:[value] Call to builtin Frama_C_strnlen(({{ &a{[3], [4], [5], [6], [7], [8], [9], + [10]} }},[0..11])) +tests/non-free/strnlen2.c:468:[value] warning: builtin Frama_C_strnlen: possibly reading indeterminate data +tests/non-free/strnlen2.c:469:[value] assertion got status valid. +[value] computing for function Frama_C_interval <- intervals <- main. + Called from tests/non-free/strnlen2.c:471. +[value] Done for function Frama_C_interval +[value] computing for function Frama_C_interval <- intervals <- main. + Called from tests/non-free/strnlen2.c:472. +[value] Done for function Frama_C_interval +tests/non-free/strnlen2.c:473:[value] Call to builtin Frama_C_strnlen(({{ &a + [3..11] }},[0..9])) +tests/non-free/strnlen2.c:473:[value] warning: builtin Frama_C_strnlen: + possible uninitialized values + possibly reading indeterminate data +tests/non-free/strnlen2.c:474:[value] assertion got status valid. +[value] computing for function Frama_C_interval <- intervals <- main. + Called from tests/non-free/strnlen2.c:476. +[value] Done for function Frama_C_interval +[value] computing for function Frama_C_interval <- intervals <- main. + Called from tests/non-free/strnlen2.c:477. +[value] Done for function Frama_C_interval +tests/non-free/strnlen2.c:478:[value] Call to builtin Frama_C_strnlen(({{ &a + [3..11] }},[0..10])) +tests/non-free/strnlen2.c:478:[value] warning: builtin Frama_C_strnlen: + possible uninitialized values + possibly reading indeterminate data +tests/non-free/strnlen2.c:479:[value] assertion got status valid. +[value] computing for function Frama_C_interval <- intervals <- main. + Called from tests/non-free/strnlen2.c:481. +[value] Done for function Frama_C_interval +[value] computing for function Frama_C_interval <- intervals <- main. + Called from tests/non-free/strnlen2.c:482. +[value] Done for function Frama_C_interval +tests/non-free/strnlen2.c:483:[value] Call to builtin Frama_C_strnlen(({{ &a + [3..11] }},[0..11])) +tests/non-free/strnlen2.c:483:[value] warning: builtin Frama_C_strnlen: + possible uninitialized values + possibly reading indeterminate data +tests/non-free/strnlen2.c:484:[value] assertion got status valid. +[value] Recording results for intervals +[value] Done for function intervals +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function bitfields: + s.a ∈ {3} + .b ∈ {1} + .[bits 16 to 31] ∈ UNINITIALIZED + .c ∈ {7} + .[bits 49 to 63] ∈ UNINITIALIZED + p ∈ {{ (char *)&s }} +[value:final-states] Values at end of function bitfields2: + s.a ∈ {3} + .b ∈ {1} + .c ∈ {7} + .[bits 25 to 31] ∈ UNINITIALIZED + p ∈ {{ (char *)&s }} + z1 ∈ {2} +[value:final-states] Values at end of function escaping: + s[0] ∈ {0} + [1..3] ∈ ESCAPINGADDR + z1 ∈ {0} + z2 ∈ {0} +[value:final-states] Values at end of function init_array_nondet: + from ∈ {-1} + to ∈ {-1} + val1 ∈ {-1} + val2 ∈ {-1} + val ∈ {0; 1; 2; 3; 4} + a[0..99] ∈ {0; 1; 2} + a[0..39] ∈ {1; 2} + [40..49] ∈ UNINITIALIZED + [50..94] ∈ {3; 4} or UNINITIALIZED + [95..99] ∈ UNINITIALIZED + u[0..199] ∈ {0; 16843009} + r[0..200] ∈ {0; 16843009; 270729319} or UNINITIALIZED + t[0..999999] ∈ {0; 16843009; 270729319} or UNINITIALIZED + a[0..99] ∈ {0; 1; 2} + a[0..9] ∈ {0; 1} + [10] ∈ UNINITIALIZED + [11] ∈ {0; 1} or UNINITIALIZED + [12..15] ∈ {1} or UNINITIALIZED + [16..19] ∈ {0; 1} or UNINITIALIZED + [20..99] ∈ UNINITIALIZED +[value:final-states] Values at end of function big_array: + u[0..199] ∈ {0; 16843009; 270729319} + r[0..200] ∈ {0; 16843009; 270729319} + t[0..999999] ∈ {0; 16843009; 270729319} + p ∈ {{ &t + [0..3999996],0%4 }} + len_u ∈ [0..799] + len_r ∈ [0..803] + len_t ∈ [0..3999999] +[value:final-states] Values at end of function initialization: + empty_or_uninitialized[0] ∈ {0} or UNINITIALIZED + z1 ∈ {0} + s[0] ∈ {1} or UNINITIALIZED + [1] ∈ {0} + z2 ∈ {1} + t[0..1] ∈ {10} + [2] ∈ {10} or UNINITIALIZED + [3] ∈ {0} + z3 ∈ {3} +[value:final-states] Values at end of function intervals: + Frama_C_entropy_source ∈ [--..--] + a[0..2] ∈ {0; 1} + [3..6] ∈ {1} + [7..9] ∈ {0; 1} + [10] ∈ UNINITIALIZED + [11] ∈ {0; 1} + [12..15] ∈ {1} + [16..19] ∈ {0; 1} + [20..99] ∈ UNINITIALIZED + offset ∈ [3..11] + n ∈ [0..11] + z1 ∈ [0..9] + z2 ∈ {0; 1; 2; 3; 4; 5; 6; 7} + z3 ∈ {0; 1; 2; 3; 4; 5; 6; 7} + z4 ∈ {0; 1; 2; 3; 4; 5; 6; 7} + z5 ∈ {0; 1; 2; 3; 4; 5; 6; 7} + z6 ∈ {0; 1; 2; 3; 4; 5; 6; 7} + z7 ∈ [0..9] + z8 ∈ [0..9] + z9 ∈ [0..9] +[value:final-states] Values at end of function large: + Frama_C_entropy_source ∈ [--..--] + a[0..99] ∈ {0; 2} + offset ∈ [50..70] + z1 ∈ [0..54] + z2 ∈ [3..15] + z3 ∈ [1..15] + z4 ∈ [0..12] + z5 ∈ [0..49] +[value:final-states] Values at end of function large_n: + Frama_C_entropy_source ∈ [--..--] + a[0..99] ∈ {0; 2} + offset ∈ [0..10] + n ∈ [0..90] + z1 ∈ [0..12] + z2 ∈ [0..13] + z3 ∈ [0..20] + z4 ∈ [0..13] + z5 ∈ [1..15] + z6 ∈ [0..20] + z7 ∈ [0..20] + z8 ∈ [0..50] + z9 ∈ [0..90] +[value:final-states] Values at end of function large_uninit: + Frama_C_entropy_source ∈ [--..--] + a[0..19] ∈ {1; 2} + [20] ∈ {0} + [21..39] ∈ {1; 2} + [40..49] ∈ UNINITIALIZED + [50..74] ∈ {3; 4} + [75] ∈ {0} + [76..94] ∈ {3; 4} + [95..97] ∈ UNINITIALIZED + [98] ∈ {0} + [99] ∈ UNINITIALIZED + offset ∈ {0} + z1 ∈ [0..17] + z2 ∈ [0..12] + z3 ∈ {20; 21; 22; 23; 24; 25} +[value:final-states] Values at end of function misc: + Frama_C_entropy_source ∈ [--..--] + loc_str ∈ {{ "Bonjour Monde\n" }} + loc_char_array[0..2] ∈ UNINITIALIZED + [3] ∈ {0} + [4] ∈ UNINITIALIZED + sz1 ∈ {12; 14} + sz2 ∈ {0} + sz3 ∈ [0..13] + sz4 ∈ {3} + sz5 ∈ {2; 3; 4} + sz6 ∈ {1; 2; 3} + sz7 ∈ {0; 1; 2; 3; 4} or UNINITIALIZED + sz8 ∈ {1} + x ∈ {-1412567296} + z ∈ {305419776} + i ∈ [0..11] + str ∈ + {{ "" ; "a" ; "aa" ; "aaa" ; "aaaa" ; "aaaaa" ; "aaaaaa" ; "aaaaaaaaa" ; + "aaaaaaaaaa" ; "aaaaaaaaaaa" ; "aaaaaaaaaaaa" ; "aaaaaaaaaaaaa" }} + s1 ∈ {{ "mno\000pqr" ; "MNOP\000QRS" }} + s2 ∈ {{ "efg" + {1; 2} ; "EFGH" + {1; 2} }} + maybe_init[0] ∈ {65} or UNINITIALIZED + [1] ∈ {0} +[value:final-states] Values at end of function no_zero_but_ok: + s[0..9] ∈ {1} + [10] ∈ {0} + [11..13] ∈ {1} + [14..19] ∈ {0; 1} + z1 ∈ {5} + z2 ∈ {10} + p ∈ {{ &s{[7], [18]} }} + z3 ∈ {2; 9} + z4 ∈ {3; 4} + z5 ∈ {0; 1; 3} +[value:final-states] Values at end of function small_sets: + s ∈ {{ "b\000c" }} + o ∈ {0; 2} + z1 ∈ {2; 3} + z2 ∈ {0; 2} + z3 ∈ {0} + z4 ∈ {1} + t[0..1] ∈ {0; 1} + [2..3] ∈ {1} + z5 ∈ {0; 1; 4} +[value:final-states] Values at end of function small_sets_n: + s ∈ {{ "bcd\000efg" }} + p ∈ {{ "bcd\000efg" + {0; 2; 4} }} + n ∈ {2; 5} + z1 ∈ {2; 4; 5} + z2 ∈ {0; 1; 4} + z3a ∈ {1; 2} + z3 ∈ {1; 2; 3} + z4 ∈ {1; 2; 3} +[value:final-states] Values at end of function unbounded_n: + n ∈ [0..2147483647] + s ∈ {{ "bcd\000eg" }} + zu1 ∈ {3} + o ∈ {0; 1} + zu2 ∈ {2; 3} + zu3 ∈ {3} +[value:final-states] Values at end of function zero_termination: + empty_or_non_terminated[0] ∈ {0; 100} + z1 ∈ {0; 1} + non_terminated[0] ∈ {88} + non_terminated2[0] ∈ {76} + [1] ∈ {0} + [2] ∈ {28} + [3] ∈ {14} + o ∈ {2; 3} +[value:final-states] Values at end of function main: + Frama_C_entropy_source ∈ [--..--] + __retres ∈ {0} +[from] Computing for function bitfields +[from] Computing for function Frama_C_strnlen <-bitfields +[from] Done for function Frama_C_strnlen +[from] Done for function bitfields +[from] Computing for function bitfields2 +[from] Done for function bitfields2 +[from] Computing for function escaping +[from] Done for function escaping +[from] Computing for function init_array_nondet +[from] Computing for function Frama_C_memset <-init_array_nondet +[from] Done for function Frama_C_memset +[from] Done for function init_array_nondet +[from] Computing for function big_array +[from] Done for function big_array +[from] Computing for function initialization +[from] Done for function initialization +[from] Computing for function intervals +[from] Computing for function Frama_C_interval <-intervals +[from] Done for function Frama_C_interval +[from] Done for function intervals +[from] Computing for function large +[from] Done for function large +[from] Computing for function large_n +[from] Done for function large_n +[from] Computing for function large_uninit +[from] Done for function large_uninit +[from] Computing for function misc +[from] Done for function misc +[from] Computing for function no_zero_but_ok +[from] Done for function no_zero_but_ok +[from] Computing for function small_sets +[from] Done for function small_sets +[from] Computing for function small_sets_n +[from] Done for function small_sets_n +[from] Computing for function unbounded_n +[from] Done for function unbounded_n +[from] Computing for function zero_termination +[from] Done for function zero_termination +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function Frama_C_interval: + Frama_C_entropy_source FROM Frama_C_entropy_source (and SELF) + \result FROM Frama_C_entropy_source; min; max +[from] Function bitfields: + NO EFFECTS +[from] Function bitfields2: + NO EFFECTS +[from] Function escaping: + NO EFFECTS +[from] Function init_array_nondet: + a[0..99] FROM val1; val2; nondet (and SELF) + a[0..99] FROM val1; val2; nondet (and SELF) + u[0..199] FROM val1; val2; nondet (and SELF) + r[0..200] FROM val1; val2; nondet (and SELF) + t[0..999999] FROM val1; val2; nondet (and SELF) + a[0..99] FROM val1; val2; nondet (and SELF) + a[0..99] FROM val1; val2; nondet (and SELF) +[from] Function big_array: + NO EFFECTS +[from] Function initialization: + NO EFFECTS +[from] Function intervals: + Frama_C_entropy_source FROM Frama_C_entropy_source (and SELF) +[from] Function large: + Frama_C_entropy_source FROM Frama_C_entropy_source (and SELF) +[from] Function large_n: + Frama_C_entropy_source FROM Frama_C_entropy_source (and SELF) +[from] Function large_uninit: + Frama_C_entropy_source FROM Frama_C_entropy_source (and SELF) +[from] Function misc: + Frama_C_entropy_source FROM Frama_C_entropy_source (and SELF) +[from] Function no_zero_but_ok: + NO EFFECTS +[from] Function small_sets: + NO EFFECTS +[from] Function small_sets_n: + NO EFFECTS +[from] Function unbounded_n: + NO EFFECTS +[from] Function zero_termination: + NO EFFECTS +[from] Function main: + Frama_C_entropy_source FROM Frama_C_entropy_source (and SELF) + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function bitfields: + s{{.a; .b}; .c}; p +[inout] Inputs for function bitfields: + nondet +[inout] Out (internal) for function bitfields2: + s{.a; .b; .c}; p; z1; tmp +[inout] Inputs for function bitfields2: + \nothing +[inout] Out (internal) for function escaping: + s[0..3]; z1; tmp; z2; tmp_0 +[inout] Inputs for function escaping: + nondet +[inout] Out (internal) for function init_array_nondet: + from; to; val1; val2; val; tmp; a[0..99]; a[0..99]; u[0..199]; r[0..200]; + t[0..999999]; a[0..99]; a[0..99] +[inout] Inputs for function init_array_nondet: + nondet +[inout] Out (internal) for function big_array: + u[0..199]; r[0..200]; t[0..999999]; p; len_u; len_r; len_t +[inout] Inputs for function big_array: + nondet +[inout] Out (internal) for function initialization: + empty_or_uninitialized[0]; z1; tmp; s[0..1]; z2; tmp_0; t[0..3]; z3; tmp_1 +[inout] Inputs for function initialization: + nondet +[inout] Out (internal) for function intervals: + Frama_C_entropy_source; a[0..99]; offset; n; z1; tmp_1; z2; tmp_2; + z3; tmp_3; z4; tmp_4; z5; tmp_5; z6; tmp_6; z7; tmp_7; z8; tmp_8; z9; + tmp_9 +[inout] Inputs for function intervals: + Frama_C_entropy_source; nondet +[inout] Out (internal) for function large: + Frama_C_entropy_source; a[0..99]; offset; z1; tmp_0; z2; tmp_1; z3; + tmp_2; z4; tmp_3; z5; tmp_4 +[inout] Inputs for function large: + Frama_C_entropy_source; nondet +[inout] Out (internal) for function large_n: + Frama_C_entropy_source; a[0..99]; offset; n; z1; tmp_1; z2; tmp_2; + z3; tmp_3; z4; tmp_4; z5; tmp_5; z6; tmp_6; z7; tmp_7; z8; tmp_8; z9; + tmp_9 +[inout] Inputs for function large_n: + Frama_C_entropy_source; nondet +[inout] Out (internal) for function large_uninit: + Frama_C_entropy_source; a[0..99]; offset; z1; tmp_0; z2; tmp_1; z3; tmp_2 +[inout] Inputs for function large_uninit: + Frama_C_entropy_source; nondet +[inout] Out (internal) for function misc: + Frama_C_entropy_source; loc_str; loc_char_array[3]; sz1; sz2; sz3; + sz4; sz5; sz6; sz7; sz8; x; z; i; str; s1; tmp; s2; tmp_0; j; + maybe_init[0..1] +[inout] Inputs for function misc: + Frama_C_entropy_source; static_str; zero_str; tab_str[0..11]; + unterminated_string[0..11]; nondet; "Hello World\n"[bits 0 to 103]; + "abc\000\000\000abc"[bits 0 to 79]; ""[bits 0 to 7]; "a"[bits 0 to 15]; + "aa"[bits 0 to 23]; "aaa"; "aaaa"[bits 0 to 39]; "aaaaa"[bits 0 to 47]; + "aaaaaa"[bits 0 to 55]; "aaaaaaaaa"[bits 0 to 79]; + "aaaaaaaaaa"[bits 0 to 87]; "aaaaaaaaaaa"[bits 0 to 95]; + "aaaaaaaaaaaa"[bits 0 to 103]; "aaaaaaaaaaaaa"[bits 0 to 111]; + "Bonjour Monde\n"[bits 0 to 119]; "abc"; "ABCD"[bits 0 to 39]; + "efg"[bits 8 to 31]; "EFGH"[bits 8 to 39]; "mno\000pqr"[bits 0 to 63]; + "MNOP\000QRS"[bits 0 to 71] +[inout] Out (internal) for function no_zero_but_ok: + s[0..19]; z1; tmp; z2; tmp_0; p; tmp_1; z3; tmp_2; z4; tmp_3; z5; tmp_4 +[inout] Inputs for function no_zero_but_ok: + nondet +[inout] Out (internal) for function small_sets: + s; o; tmp; z1; tmp_0; z2; tmp_1; z3; tmp_2; z4; tmp_3; t[0..3]; z5; tmp_4 +[inout] Inputs for function small_sets: + nondet; "abc"; "\000bc"; ""[bits 0 to 7]; "b\000c" +[inout] Out (internal) for function small_sets_n: + s; p; tmp; n; tmp_0; z1; tmp_1; z2; tmp_2; z3a; tmp_3; z3; tmp_4; tmp_5; + z4; tmp_6 +[inout] Inputs for function small_sets_n: + nondet; "abcde"[bits 0 to 47]; "\000bcdef"[bits 0 to 55]; + "bcd\000efg"[bits 0 to 63] +[inout] Out (internal) for function unbounded_n: + n; s; zu1; tmp; o; tmp_0; zu2; tmp_1; zu3; tmp_2 +[inout] Inputs for function unbounded_n: + nondet; "abc"; "bcd\000eg"[bits 0 to 55] +[inout] Out (internal) for function zero_termination: + empty_or_non_terminated[0]; z1; tmp; non_terminated[0]; + non_terminated2[0..3]; o; tmp_0 +[inout] Inputs for function zero_termination: + nondet +[inout] Out (internal) for function main: + Frama_C_entropy_source; __retres +[inout] Inputs for function main: + Frama_C_entropy_source; static_str; zero_str; tab_str[0..11]; + unterminated_string[0..11]; nondet; "Hello World\n"[bits 0 to 103]; + "abc\000\000\000abc"[bits 0 to 79]; ""[bits 0 to 7]; "a"[bits 0 to 15]; + "aa"[bits 0 to 23]; "aaa"; "aaaa"[bits 0 to 39]; "aaaaa"[bits 0 to 47]; + "aaaaaa"[bits 0 to 55]; "aaaaaaaaa"[bits 0 to 79]; + "aaaaaaaaaa"[bits 0 to 87]; "aaaaaaaaaaa"[bits 0 to 95]; + "aaaaaaaaaaaa"[bits 0 to 103]; "aaaaaaaaaaaaa"[bits 0 to 111]; "abc"; + "\000bc"; ""[bits 0 to 7]; "b\000c"; "Bonjour Monde\n"[bits 0 to 119]; + "abc"; "ABCD"[bits 0 to 39]; "efg"[bits 8 to 31]; "EFGH"[bits 8 to 39]; + "mno\000pqr"[bits 0 to 63]; "MNOP\000QRS"[bits 0 to 71]; + "abcde"[bits 0 to 47]; "\000bcdef"[bits 0 to 55]; + "bcd\000efg"[bits 0 to 63]; "abc"; "bcd\000eg"[bits 0 to 55] diff --git a/tests/non-free/oracle_symblocs/watch.err.oracle b/tests/non-free/oracle_symblocs/watch.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/non-free/oracle_symblocs/watch.res.oracle b/tests/non-free/oracle_symblocs/watch.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..80ad5ed36d0c980c1e8f5436bd2fa2cc69ada760 --- /dev/null +++ b/tests/non-free/oracle_symblocs/watch.res.oracle @@ -0,0 +1,46 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/non-free/watch.c (with preprocessing) +tests/non-free/watch.c:5:[kernel] warning: Calling undeclared function Frama_C_watch_value. Old style K&R code? +tests/non-free/watch.c:11:[kernel] warning: Calling undeclared function u. Old style K&R code? +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + x ∈ {0} + y ∈ {0} + z ∈ {0} +[value] Call to builtin Frama_C_add_watch(({{ &c }},{4},{2000000000},{5})) +tests/non-free/watch.c:8:[value] Watchpoint: & c [--..--] +tests/non-free/watch.c:9:[value] Watchpoint: & c [--..--] +[value] computing for function u <- main. + Called from tests/non-free/watch.c:11. +tests/non-free/watch.c:11:[kernel] warning: Neither code nor specification for function u, generating default assigns from the prototype +[value] using specification for function u +[value] Done for function u +tests/non-free/watch.c:12:[value] Watchpoint: & c [--..--] +tests/non-free/watch.c:13:[value] Watchpoint: & c [--..--] +tests/non-free/watch.c:14:[value] Watchpoint: & c [--..--] +[value] user error: Degeneration occurred: + results are not correct for lines of code that can be reached from the degeneration point. +[value] ====== VALUES COMPUTED ====== +tests/non-free/watch.c:5:[kernel] warning: Neither code nor specification for function Frama_C_watch_value, generating default assigns from the prototype +[value:final-states] Values at end of function main: + NON TERMINATING FUNCTION +[from] Computing for function main +[from] Computing for function Frama_C_watch_value <-main +[from] Done for function Frama_C_watch_value +[from] Computing for function u <-main +[from] Done for function u +[from] Non-terminating function main (no dependencies) +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function u: + \result FROM \nothing +[from] Function main: + NON TERMINATING - NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + x; c +[inout] Inputs for function main: + x diff --git a/tests/non-free/test_config_symblocs b/tests/non-free/test_config_symblocs new file mode 100644 index 0000000000000000000000000000000000000000..f01c6127543316f79ee935b8ed894c2e55383337 --- /dev/null +++ b/tests/non-free/test_config_symblocs @@ -0,0 +1,2 @@ +MACRO: VALUECONFIG -eva-symbolic-locations-domain +OPT: -val @VALUECONFIG@ -journal-disable -out -input -deps -value-msg-key malloc \ No newline at end of file diff --git a/tests/rte/fptr_assert.c b/tests/rte/fptr_assert.c index e3a465d047273e417e385dd42e9b21ad4c8d5306..b57722f203198d829944c339180ae28251330dfc 100644 --- a/tests/rte/fptr_assert.c +++ b/tests/rte/fptr_assert.c @@ -1,5 +1,5 @@ /* run.config - OPT: -rte -warn-signed-overflow -rte-precond -print + OPT: -rte -rte-precond -print */ typedef int (*fptr)(int); diff --git a/tests/rte/my_annot_proxy/my_annot_proxy.ml b/tests/rte/my_annot_proxy/my_annot_proxy.ml index b646cd7674ad89821109ae01ff53039c5bac41d9..a34a416d9092deef2f7cd925dc3afb2eb0e213b4 100644 --- a/tests/rte/my_annot_proxy/my_annot_proxy.ml +++ b/tests/rte/my_annot_proxy/my_annot_proxy.ml @@ -9,7 +9,7 @@ let print_status () = (fun kf -> Kernel.log "kf = %s" (Kernel_function.get_name kf) ; List.iter - (fun (s, _, getter) -> Kernel.log "%s = %b" s (getter kf)) + (fun (s, _, getter) -> Kernel.log "- %s = %b" s (getter kf)) rte_state_getter_list); Kernel.log "================================" diff --git a/tests/rte/oracle/bts0580_2.res.oracle b/tests/rte/oracle/bts0580_2.res.oracle index 7e4a76cd3cf0aef286b6b542ef8cd33ceb8bb4ef..8aace82c36e6e4ff1b07b6a0ff18442b6744409d 100644 --- a/tests/rte/oracle/bts0580_2.res.oracle +++ b/tests/rte/oracle/bts0580_2.res.oracle @@ -1,8 +1,6 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) [kernel] Parsing tests/rte/bts0580_2.c (with preprocessing) [rte] annotating function main -tests/rte/bts0580_2.c:32:[rte] warning: no predicate available yet to check validity of function pointer dereferencing *(buff.data[c[2]].f) -tests/rte/bts0580_2.c:33:[rte] warning: no predicate available yet to check validity of function pointer dereferencing *f /* Generated by Frama-C */ struct S { int val ; diff --git a/tests/rte/oracle/fptr_assert.res.oracle b/tests/rte/oracle/fptr_assert.res.oracle index 1b560fb580f58c637f9d4831f91fab99d537f08f..8c1fabc05bfd39a927fde3d1d64ee878d2d277aa 100644 --- a/tests/rte/oracle/fptr_assert.res.oracle +++ b/tests/rte/oracle/fptr_assert.res.oracle @@ -5,13 +5,9 @@ [rte] annotating function h [rte] annotating function main tests/rte/fptr_assert.c:21:[rte] warning: ((*fp1)();) function called through a pointer: not treated -tests/rte/fptr_assert.c:21:[rte] warning: no predicate available yet to check validity of function pointer dereferencing *fp1 tests/rte/fptr_assert.c:22:[rte] warning: ((*fp2)(3);) function called through a pointer: not treated -tests/rte/fptr_assert.c:22:[rte] warning: no predicate available yet to check validity of function pointer dereferencing *fp2 tests/rte/fptr_assert.c:23:[rte] warning: ((*(ma[1]))(5);) function called through a pointer: not treated -tests/rte/fptr_assert.c:23:[rte] warning: no predicate available yet to check validity of function pointer dereferencing *(ma[1]) tests/rte/fptr_assert.c:24:[rte] warning: ((*(ma[i]))(5);) function called through a pointer: not treated -tests/rte/fptr_assert.c:24:[rte] warning: no predicate available yet to check validity of function pointer dereferencing *(ma[i]) /* Generated by Frama-C */ typedef int (*fptr)(int ); void g(void) @@ -43,11 +39,15 @@ int main(int i) ma[1] = & h; fp1 = (void (*)())(& g); fp2 = & f; + /*@ assert rte: function_pointer: \valid_function(fp1); */ (*fp1)(); + /*@ assert rte: function_pointer: \valid_function(fp2); */ (*fp2)(3); + /*@ assert rte: function_pointer: \valid_function(ma[1]); */ (*(ma[1]))(5); /*@ assert rte: index_bound: 0 ≤ i; */ /*@ assert rte: index_bound: i < 2; */ + /*@ assert rte: function_pointer: \valid_function(ma[i]); */ (*(ma[i]))(5); __retres = 0; return __retres; diff --git a/tests/rte/oracle/twofunc.res.oracle b/tests/rte/oracle/twofunc.res.oracle index 2de87aef871e5bf98da3b00505d6623102a4871e..d5c859f60b2e96eb156484c09e1a3d3a5e6b7f11 100644 --- a/tests/rte/oracle/twofunc.res.oracle +++ b/tests/rte/oracle/twofunc.res.oracle @@ -137,45 +137,49 @@ int main(void) [kernel] ================================ [kernel] printing status [kernel] kf = Frama_C_bzero -[kernel] precondition = true -[kernel] mem_access = true -[kernel] division_by_zero = true -[kernel] shift_value_out_of_bounds = true -[kernel] signed_overflow = true -[kernel] downcast = true -[kernel] unsigned_overflow = true -[kernel] unsigned_downcast = true -[kernel] float_to_int = true +[kernel] - precondition = true +[kernel] - mem_access = true +[kernel] - pointer_call = true +[kernel] - division_by_zero = true +[kernel] - shift_value_out_of_bounds = true +[kernel] - signed_overflow = true +[kernel] - downcast = true +[kernel] - unsigned_overflow = true +[kernel] - unsigned_downcast = true +[kernel] - float_to_int = true [kernel] kf = Frama_C_copy_block -[kernel] precondition = true -[kernel] mem_access = true -[kernel] division_by_zero = true -[kernel] shift_value_out_of_bounds = true -[kernel] signed_overflow = true -[kernel] downcast = true -[kernel] unsigned_overflow = true -[kernel] unsigned_downcast = true -[kernel] float_to_int = true +[kernel] - precondition = true +[kernel] - mem_access = true +[kernel] - pointer_call = true +[kernel] - division_by_zero = true +[kernel] - shift_value_out_of_bounds = true +[kernel] - signed_overflow = true +[kernel] - downcast = true +[kernel] - unsigned_overflow = true +[kernel] - unsigned_downcast = true +[kernel] - float_to_int = true [kernel] kf = f -[kernel] precondition = true -[kernel] mem_access = true -[kernel] division_by_zero = true -[kernel] shift_value_out_of_bounds = true -[kernel] signed_overflow = true -[kernel] downcast = false -[kernel] unsigned_overflow = false -[kernel] unsigned_downcast = false -[kernel] float_to_int = true +[kernel] - precondition = true +[kernel] - mem_access = true +[kernel] - pointer_call = true +[kernel] - division_by_zero = true +[kernel] - shift_value_out_of_bounds = true +[kernel] - signed_overflow = true +[kernel] - downcast = false +[kernel] - unsigned_overflow = false +[kernel] - unsigned_downcast = false +[kernel] - float_to_int = true [kernel] kf = main -[kernel] precondition = true -[kernel] mem_access = true -[kernel] division_by_zero = true -[kernel] shift_value_out_of_bounds = true -[kernel] signed_overflow = true -[kernel] downcast = false -[kernel] unsigned_overflow = false -[kernel] unsigned_downcast = false -[kernel] float_to_int = true +[kernel] - precondition = true +[kernel] - mem_access = true +[kernel] - pointer_call = true +[kernel] - division_by_zero = true +[kernel] - shift_value_out_of_bounds = true +[kernel] - signed_overflow = true +[kernel] - downcast = false +[kernel] - unsigned_overflow = false +[kernel] - unsigned_downcast = false +[kernel] - float_to_int = true [kernel] ================================ /* Generated by Frama-C */ int f(int x, int y) @@ -242,43 +246,47 @@ int main(void) [kernel] ================================ [kernel] printing status [kernel] kf = Frama_C_bzero -[kernel] precondition = true -[kernel] mem_access = true -[kernel] division_by_zero = true -[kernel] shift_value_out_of_bounds = true -[kernel] signed_overflow = true -[kernel] downcast = true -[kernel] unsigned_overflow = true -[kernel] unsigned_downcast = true -[kernel] float_to_int = true +[kernel] - precondition = true +[kernel] - mem_access = true +[kernel] - pointer_call = true +[kernel] - division_by_zero = true +[kernel] - shift_value_out_of_bounds = true +[kernel] - signed_overflow = true +[kernel] - downcast = true +[kernel] - unsigned_overflow = true +[kernel] - unsigned_downcast = true +[kernel] - float_to_int = true [kernel] kf = Frama_C_copy_block -[kernel] precondition = true -[kernel] mem_access = true -[kernel] division_by_zero = true -[kernel] shift_value_out_of_bounds = true -[kernel] signed_overflow = true -[kernel] downcast = true -[kernel] unsigned_overflow = true -[kernel] unsigned_downcast = true -[kernel] float_to_int = true +[kernel] - precondition = true +[kernel] - mem_access = true +[kernel] - pointer_call = true +[kernel] - division_by_zero = true +[kernel] - shift_value_out_of_bounds = true +[kernel] - signed_overflow = true +[kernel] - downcast = true +[kernel] - unsigned_overflow = true +[kernel] - unsigned_downcast = true +[kernel] - float_to_int = true [kernel] kf = f -[kernel] precondition = true -[kernel] mem_access = true -[kernel] division_by_zero = true -[kernel] shift_value_out_of_bounds = true -[kernel] signed_overflow = true -[kernel] downcast = false -[kernel] unsigned_overflow = false -[kernel] unsigned_downcast = false -[kernel] float_to_int = true +[kernel] - precondition = true +[kernel] - mem_access = true +[kernel] - pointer_call = true +[kernel] - division_by_zero = true +[kernel] - shift_value_out_of_bounds = true +[kernel] - signed_overflow = true +[kernel] - downcast = false +[kernel] - unsigned_overflow = false +[kernel] - unsigned_downcast = false +[kernel] - float_to_int = true [kernel] kf = main -[kernel] precondition = true -[kernel] mem_access = true -[kernel] division_by_zero = true -[kernel] shift_value_out_of_bounds = true -[kernel] signed_overflow = true -[kernel] downcast = false -[kernel] unsigned_overflow = false -[kernel] unsigned_downcast = false -[kernel] float_to_int = true +[kernel] - precondition = true +[kernel] - mem_access = true +[kernel] - pointer_call = true +[kernel] - division_by_zero = true +[kernel] - shift_value_out_of_bounds = true +[kernel] - signed_overflow = true +[kernel] - downcast = false +[kernel] - unsigned_overflow = false +[kernel] - unsigned_downcast = false +[kernel] - float_to_int = true [kernel] ================================ diff --git a/tests/rte_manual/oracle/safearrays.res.oracle b/tests/rte_manual/oracle/safearrays.res.oracle index 433c41198beddbd5dd6b1ec0aa441fe9673c5f15..da7df5b9b69dddba981969c8f01a5602ab8c0434 100644 --- a/tests/rte_manual/oracle/safearrays.res.oracle +++ b/tests/rte_manual/oracle/safearrays.res.oracle @@ -1,7 +1,6 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) [kernel] Parsing tests/rte_manual/safearrays.i (no preprocessing) [rte] annotating function main -tests/rte_manual/safearrays.i:28:[rte] warning: no predicate available yet to check validity of function pointer dereferencing *(buff.data[i].f) /* Generated by Frama-C */ struct S { int val ; @@ -27,6 +26,7 @@ int main(void) */ a = (buff.data[i].cell[j].next)->val; /*@ assert rte: index_bound: i < 10; */ + /*@ assert rte: function_pointer: \valid_function(buff.data[i].f); */ (*(buff.data[i].f))(a); __retres = 0; return __retres; diff --git a/tests/slicing/adpcm.c b/tests/slicing/adpcm.c new file mode 100644 index 0000000000000000000000000000000000000000..53c248a400047c411bff1b960c01baf059399faf --- /dev/null +++ b/tests/slicing/adpcm.c @@ -0,0 +1,6 @@ +/* run.config + EXECNOW: make -s tests/slicing/adpcm.cmxs + OPT: -load-module ./tests/slicing/libSelect.cmxs -load-module ./tests/slicing/adpcm.cmxs -ulevel -1 -deps -slicing-level 2 -journal-disable +*/ + +#include "tests/test/adpcm.c" diff --git a/tests/slicing2/adpcm.ml b/tests/slicing/adpcm.ml similarity index 77% rename from tests/slicing2/adpcm.ml rename to tests/slicing/adpcm.ml index fabf7e0f35f9633d2887b15395123ae7e5e2dc9e..0da186815d051e27681f0ed1f6c4cacb639bcdbb 100644 --- a/tests/slicing2/adpcm.ml +++ b/tests/slicing/adpcm.ml @@ -1,6 +1,6 @@ (* -ledit bin/toplevel.top -no-annot -deps -slicing_level 2 tests/slicing2/adpcm.c -#use "tests/slicing2/select.ml";; +ledit bin/toplevel.top -no-annot -deps -slicing_level 2 tests/slicing/adpcm.c +#use "tests/slicing/select.ml";; *) include LibSelect;; @@ -8,7 +8,7 @@ include LibSelect;; (* Kernel.slicing_level := 2;; = MinimizeNbCalls *) (* -let resname = "tests/slicing2/adpcm.sliced" in +let resname = "tests/slicing/adpcm.sliced" in ignore (test "uppol2" ~do_prop_to_callers:true ~resname (select_retres));; *) let () = diff --git a/tests/slicing/annot.c b/tests/slicing/annot.c deleted file mode 100644 index 6b81121d62bb82f9b7f2e62abf2bda3c6c672053..0000000000000000000000000000000000000000 --- a/tests/slicing/annot.c +++ /dev/null @@ -1,24 +0,0 @@ -/* run.config - OPT: -main f1 -slice-assert f1 -then-on 'Slicing export' -print - OPT: -main f2 -slice-assert f2 -then-on 'Slicing export' -print -*/ - -extern int x, z; -int t[10]; - -void f1() { - int v = 3; - x = x + x - x; - int y = z; - x = 3; - int r = x; - //@ assert x == \at(x, Pre); -} - -void f2() { - t[1] = 5; - t[6] = 4; - x = 2; - x = 3; - //@ assert \initialized(&t[x..9]); -} diff --git a/tests/slicing/annot.i b/tests/slicing/annot.i new file mode 100644 index 0000000000000000000000000000000000000000..21f027de6fd1e98d2bbd56f966aade8e86bae23a --- /dev/null +++ b/tests/slicing/annot.i @@ -0,0 +1,24 @@ +/* run.config + OPT: -main f1 -slice-assert f1 -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check + OPT: -main f2 -slice-assert f2 -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check +*/ + +extern int x, z; +int t[10]; + +void f1() { + int v = 3; + x = x + x - x; + int y = z; + x = 3; + int r = x; + //@ assert x == \at(x, Pre); +} + +void f2() { + t[1] = 5; + t[6] = 4; + x = 2; + x = 3; + //@ assert \initialized(&t[x..9]); +} diff --git a/tests/slicing/bts0184.c b/tests/slicing/bts0184.c deleted file mode 100644 index 3c2e6afcbfeeeb69bd4e8f406613e94068142a8d..0000000000000000000000000000000000000000 --- a/tests/slicing/bts0184.c +++ /dev/null @@ -1,20 +0,0 @@ -/* run.config - OPT: -check -slice-pragma x -journal-disable - **/ -int x(int y, int z) -{ -/*@ slice pragma expr y == 1; */ -//@ assert y == 1; -//@ assert y + z == 3; - return y; -} - -int main() -{ - return 0; -} - -int z1() -{ - return x(2,2); -} diff --git a/tests/slicing/bts0184.i b/tests/slicing/bts0184.i new file mode 100644 index 0000000000000000000000000000000000000000..22d2f416b0307fe451769bdf05bfcf5aff9ea3f5 --- /dev/null +++ b/tests/slicing/bts0184.i @@ -0,0 +1,20 @@ +/* run.config + OPT: -check -slice-pragma x -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check + **/ +int x(int y, int z) +{ +/*@ slice pragma expr y == 1; */ +//@ assert y == 1; +//@ assert y + z == 3; + return y; +} + +int main() +{ + return 0; +} + +int z1() +{ + return x(2,2); +} diff --git a/tests/slicing/bts0190.c b/tests/slicing/bts0190.c deleted file mode 100644 index ba6f0d32a6d05de2561b76714c0c4b3f6ab98403..0000000000000000000000000000000000000000 --- a/tests/slicing/bts0190.c +++ /dev/null @@ -1,22 +0,0 @@ -/* run.config -OPT: -check -slice-rd y -*/ -int z1(void); - -int x(int y, int z){ -/*@ slice pragma expr y == 1; */ -//@ assert y == 1; -//@ assert y + z == 3; - return 2*y*z1(); -} - -int main() -{ - x(1,2); - return 0; -} - -int z1() -{ - return 1; -} diff --git a/tests/slicing/bts0190.i b/tests/slicing/bts0190.i new file mode 100644 index 0000000000000000000000000000000000000000..86fe1d0fc8afb8a265de38439c7f587510e08712 --- /dev/null +++ b/tests/slicing/bts0190.i @@ -0,0 +1,22 @@ +/* run.config +OPT: -check -slice-rd y -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check +*/ +int z1(void); + +int x(int y, int z){ +/*@ slice pragma expr y == 1; */ +//@ assert y == 1; +//@ assert y + z == 3; + return 2*y*z1(); +} + +int main() +{ + x(1,2); + return 0; +} + +int z1() +{ + return 1; +} diff --git a/tests/slicing/bts0950_annot.i b/tests/slicing/bts0950_annot.i index 7f293ba26d2b4a52793fa063f009f9956d1aff12..02035872d12d568974cf3bb51a00acb706e51774 100644 --- a/tests/slicing/bts0950_annot.i +++ b/tests/slicing/bts0950_annot.i @@ -1,5 +1,5 @@ /* run.config - OPT: -val -slice-value a -then-on "Slicing export" -print + OPT: -val -slice-value a -then-on "Slicing export" -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check */ /*@ requires \valid(dest); */ extern void cpy(int *dest, const int *src); diff --git a/tests/slicing/bts1248.i b/tests/slicing/bts1248.i index 76e14e8cfdac722d9d6c729e4035e32c4d88e3d7..ebf21968d171286c2bf2efc6d4dda9f6b155df94 100644 --- a/tests/slicing/bts1248.i +++ b/tests/slicing/bts1248.i @@ -1,5 +1,5 @@ /* run.config -OPT: -check -slice-rd x -main f -slicing-project-name p -then-on 'p export' -val +OPT: -slice-rd x -main f -slicing-project-name p -then-on 'p export' -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i */ int f(void) { diff --git a/tests/slicing/bts1445.i b/tests/slicing/bts1445.i index 7224227901299e0661524e1c04b80f4f2d527cc2..3c5a5c48c28b5c3f6b448a329b58b15a3547f092 100644 --- a/tests/slicing/bts1445.i +++ b/tests/slicing/bts1445.i @@ -1,6 +1,6 @@ /* run.config -OPT: -check -slice-calls main -then-on "Slicing export" -print -OPT: -check -slice-calls f -main f -then-on "Slicing export" -print +OPT: -slice-calls main -then-on "Slicing export" -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i +OPT: -slice-calls f -main f -then-on "Slicing export" -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i */ int x = 0; diff --git a/tests/slicing/bts1684.i b/tests/slicing/bts1684.i index 2da2f65a2616458aa85e93c90e5a99be43f5c8bc..996b6f9f26949deab524e8cd94fc8a371e2cf9ad 100644 --- a/tests/slicing/bts1684.i +++ b/tests/slicing/bts1684.i @@ -1,5 +1,5 @@ /* run.config - OPT: -check -slice-calls main -journal-enable -then-on 'Slicing export' -print + OPT: -slice-calls main -journal-enable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i */ // one bug about JOURNALIZATION and another one about slicing CALLS TO MAIN function. double d1, d2, d3; diff --git a/tests/slicing/bts1768.i b/tests/slicing/bts1768.i index 83cb78260778996cc49f87c01dd43b6d9455dd2b..58105e7598e2508c961069a5caa8fed6844ab71f 100644 --- a/tests/slicing/bts1768.i +++ b/tests/slicing/bts1768.i @@ -1,5 +1,5 @@ /* run.config - OPT: -check -main main -slice-pragma main -ulevel 10 -journal-disable -then-on 'Slicing export' -print + OPT: -main main -slice-pragma main -ulevel 10 -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i */ int choix ; int state = 1; diff --git a/tests/slicing/bts179.c b/tests/slicing/bts179.c deleted file mode 100644 index ce937e8ab6458a9eba3b6510b1201ac28c1ce436..0000000000000000000000000000000000000000 --- a/tests/slicing/bts179.c +++ /dev/null @@ -1,20 +0,0 @@ -/* run.config - OPT: -check -slice-return main -journal-disable -then-on 'Slicing export' -print - OPT: -check -slice-pragma main -journal-disable -then-on 'Slicing export' -print - OPT: -check -sparecode-analysis -journal-disable -*/ - -struct {int a; int ab; int b; int c ; int d;} S; -int X, Y; -void g (void) { - S.a = 1; - S.ab = 0; - S.b = 2; /* here, better can be done ! */ - S.d = 4; -} -int main (void) { - g(); - //@ slice pragma expr S.b; - S.ab = 1; /* so that S.ab is sparecode in g() */ - return S.a ; -} diff --git a/tests/slicing/bts179.i b/tests/slicing/bts179.i new file mode 100644 index 0000000000000000000000000000000000000000..f6581778b820de4d8eff32261b2795ca66c4b639 --- /dev/null +++ b/tests/slicing/bts179.i @@ -0,0 +1,20 @@ +/* run.config + OPT: -slice-return main -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i + OPT: -slice-pragma main -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i + OPT: -sparecode-analysis -journal-disable +*/ + +struct {int a; int ab; int b; int c ; int d;} S; +int X, Y; +void g (void) { + S.a = 1; + S.ab = 0; + S.b = 2; /* here, better can be done ! */ + S.d = 4; +} +int main (void) { + g(); + //@ slice pragma expr S.b; + S.ab = 1; /* so that S.ab is sparecode in g() */ + return S.a ; +} diff --git a/tests/slicing/bts283.c b/tests/slicing/bts283.i similarity index 63% rename from tests/slicing/bts283.c rename to tests/slicing/bts283.i index 0c9e5843cb25e7ffa693cf27589f5dc243f27235..8de2bccbceef13e6c7945aeae075267eba1ae6e3 100644 --- a/tests/slicing/bts283.c +++ b/tests/slicing/bts283.i @@ -1,5 +1,5 @@ /* run.config - OPT: -check -slice-return main -slice-undef-functions -journal-disable -then-on 'Slicing export' -print + OPT: -slice-return main -slice-undef-functions -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i */ int x,y,z; diff --git a/tests/slicing/bts326.c b/tests/slicing/bts326.c deleted file mode 100644 index 13da6ab42b3d80d6b05fe50f87343c249256b72e..0000000000000000000000000000000000000000 --- a/tests/slicing/bts326.c +++ /dev/null @@ -1,20 +0,0 @@ -/* run.config - OPT: -check -calldeps -slice-return main -journal-disable -then-on 'Slicing export' -print -*/ -/* Problem : f(1) should be sliced out. See BTS#326 */ -int t[2] ; -int r; -void f (int i) { - t[i] = i; -} - -void g (void) { - f(0) ; - f(1) ; -} - -int main (void) { - g () ; - r = t[0] ; - return r; -} diff --git a/tests/slicing/bts326.i b/tests/slicing/bts326.i new file mode 100644 index 0000000000000000000000000000000000000000..99858acccaef22fa290ce3cb4738cffd4af70184 --- /dev/null +++ b/tests/slicing/bts326.i @@ -0,0 +1,20 @@ +/* run.config + OPT: -calldeps -slice-return main -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-calldeps +*/ +/* Problem : f(1) should be sliced out. See BTS#326 */ +int t[2] ; +int r; +void f (int i) { + t[i] = i; +} + +void g (void) { + f(0) ; + f(1) ; +} + +int main (void) { + g () ; + r = t[0] ; + return r; +} diff --git a/tests/slicing/bts335.c b/tests/slicing/bts335.c deleted file mode 100644 index 19c268a9d5648da7eae23ae25c155480fad2ede5..0000000000000000000000000000000000000000 --- a/tests/slicing/bts335.c +++ /dev/null @@ -1,12 +0,0 @@ -/* run.config - OPT: -check -slice-pragma g -calldeps -slicing-level 3 -*/ - -/* -bin/toplevel.opt -check -slice-pragma g -calldeps -slicing-level 3 tests/slicing/bts335.c -debug 2 -bin/toplevel.opt -pdg-debug -pdg -pdg-debug "-pdg-pot bts335" tests/slicing/bts335.c - */ -int T[2] = {0, 0}; -void f (int i) { T[i]++; } -void g (void) { f(0); /*@ slice pragma expr T[0]; */ } -void main (int c) { if (c) g(); else f(1); } diff --git a/tests/slicing/bts335.i b/tests/slicing/bts335.i new file mode 100644 index 0000000000000000000000000000000000000000..065b5d94a28c9f53b89a39722bfe5e9e3469b96f --- /dev/null +++ b/tests/slicing/bts335.i @@ -0,0 +1,12 @@ +/* run.config + OPT: -slice-pragma g -calldeps -slicing-level 3 -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-calldeps +*/ + +/* +bin/toplevel.opt -slice-pragma g -calldeps -slicing-level 3 tests/slicing/bts335.c -debug 2 +bin/toplevel.opt -pdg-debug -pdg -pdg-debug "-pdg-pot bts335" tests/slicing/bts335.c + */ +int T[2] = {0, 0}; +void f (int i) { T[i]++; } +void g (void) { f(0); /*@ slice pragma expr T[0]; */ } +void main (int c) { if (c) g(); else f(1); } diff --git a/tests/slicing/bts335b.c b/tests/slicing/bts335b.i similarity index 53% rename from tests/slicing/bts335b.c rename to tests/slicing/bts335b.i index 3053368844ae336344cc1a5e8d52d5e10f880d57..859572f5498038bc3df6e2c20eff4b59bcf931e2 100644 --- a/tests/slicing/bts335b.c +++ b/tests/slicing/bts335b.i @@ -1,5 +1,5 @@ /* run.config - OPT: -check -slice-return main -calldeps -slicing-level 3 -slicing-verbose 2 -journal-disable -then-on 'Slicing export' -print + OPT: -slice-return main -calldeps -slicing-level 3 -slicing-verbose 2 -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-calldeps */ int X, Y; diff --git a/tests/slicing/bts336.c b/tests/slicing/bts336.c deleted file mode 100644 index 70aa18cfcdcd3b1cd1b11a053003d347873ae783..0000000000000000000000000000000000000000 --- a/tests/slicing/bts336.c +++ /dev/null @@ -1,102 +0,0 @@ -/* run.config - OPT: -check -slice-return main -calldeps -journal-disable -then-on 'Slicing export' -print - OPT: -check -main main2 -slice-return main2 -calldeps -journal-disable -then-on 'Slicing export' -print - OPT: -check -main main3 -slice-return main3 -journal-disable -then-on 'Slicing export' -print - OPT: -check -journal-disable -main main3 -inout -inout-callwise -calldeps -slice-return main3 -then-on 'Slicing export' -print - OPT: -check -journal-disable -main main -calldeps -inout-callwise -slice-return main -then-on 'Slicing export' -print - OPT: -check -journal-disable -main main4 -calldeps -inout-callwise -slice-return main4 -then-on 'Slicing export' -print - OPT: -check -journal-disable -main main4 -calldeps -inout-callwise -slice-return main4 -slicing-level 3 -then-on 'Slicing export' -print - OPT: -check -journal-disable -main main5 -calldeps -inout-callwise -slice-return main5 -then-on 'Slicing export' -print -calldeps -inout-callwise -slice-return main5 -then-on 'Slicing export 2' -print -*/ -// something to do to have better results... -int T[10]; - -int f (int i) { - T[i] ++; - return T[i]; -} - -int main (void) { - int x1 = f(1); - int x2 = f(2); - return x2; -} - -//-------------------------------------- -// Notice that the example below is very similar to the one above : -// f2 also modifies T[1..2], but in this one, the slicing is ok -// because T[1..2] is not in the right part of the assignment. - -void f2 (int i) { - T[i] = i; -} - -int main2 (void) { - f2 (1); - f2 (2); - return T[2]; -} - -//-------------------------------------- -// This is a similar problem, but without any array. -// Option -calldeps gives a better result because we can then slice f3 (&c); -// but we cannot slice f3(&a) because it seems to have b as an output, -// and f3 (&b); needs b as an input. -void f3 (int * p) { - *p += 1; -} - -int main3 (void) { - int a = 1; - int b = 2; - int c = 3; - f3 (&a); - f3 (&b); - f3 (&c); - return b; -} -//-------------------------------------- - -// more complicated variant of 'main3'. This has been resolved in the same way as the first 'main' of this file -void f4 (int * p, int* q) { - *p += 1; - *q += 1; -} - -int main4 (volatile int c) { - int a1 = 1; - int b1 = 2; - int a2 = 3; - int b2 = 4; - int a3 = 5; - int b3 = 6; - int a4 = 7; - int b4 = 8; - int a5 = 9; - int b5 = 10; - while(c) { - f4 (&a1, &b1); - f4 (&a2, &b2); - f4 (&a3, &b3); - f4 (&a4, &b4); - f4 (&a5, &b5); - } - return a2+b4; -} -//-------------------------------------- -// Non-optimal example if only one phase of slicing is done. Would need a notion of "operational functional dependencies", or a callwise pdg - -int x5; - -void f5(int *p, int *q) { - (*p)++; - x5 = *q; -} - -int main5() { - int a1=1, a2=2, b1=3, b2=4; - f5(&a1, &b1); // This call should be sliced away - f5(&a2, &a1); - - return a2; -} diff --git a/tests/slicing/bts336.i b/tests/slicing/bts336.i new file mode 100644 index 0000000000000000000000000000000000000000..2f4fc1cea754c3aeac5a8f340d7e723586f4501e --- /dev/null +++ b/tests/slicing/bts336.i @@ -0,0 +1,102 @@ +/* run.config + OPT: -slice-return main -calldeps -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-calldeps + OPT: -main main2 -slice-return main2 -calldeps -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-calldeps + OPT: -main main3 -slice-return main3 -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-calldeps + OPT: -journal-disable -main main3 -inout -inout-callwise -calldeps -slice-return main3 -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-calldeps -no-inout + OPT: -journal-disable -main main -calldeps -inout-callwise -slice-return main -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-calldeps + OPT: -journal-disable -main main4 -calldeps -inout-callwise -slice-return main4 -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-calldeps + OPT: -journal-disable -main main4 -calldeps -inout-callwise -slice-return main4 -slicing-level 3 -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-calldeps + OPT: -journal-disable -main main5 -calldeps -inout-callwise -slice-return main5 -then-on 'Slicing export' -set-project-as-default -print -calldeps -inout-callwise -slice-return main5 -then-on 'Slicing export 2' -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-calldeps +*/ +// something to do to have better results... +int T[10]; + +int f (int i) { + T[i] ++; + return T[i]; +} + +int main (void) { + int x1 = f(1); + int x2 = f(2); + return x2; +} + +//-------------------------------------- +// Notice that the example below is very similar to the one above : +// f2 also modifies T[1..2], but in this one, the slicing is ok +// because T[1..2] is not in the right part of the assignment. + +void f2 (int i) { + T[i] = i; +} + +int main2 (void) { + f2 (1); + f2 (2); + return T[2]; +} + +//-------------------------------------- +// This is a similar problem, but without any array. +// Option -calldeps gives a better result because we can then slice f3 (&c); +// but we cannot slice f3(&a) because it seems to have b as an output, +// and f3 (&b); needs b as an input. +void f3 (int * p) { + *p += 1; +} + +int main3 (void) { + int a = 1; + int b = 2; + int c = 3; + f3 (&a); + f3 (&b); + f3 (&c); + return b; +} +//-------------------------------------- + +// more complicated variant of 'main3'. This has been resolved in the same way as the first 'main' of this file +void f4 (int * p, int* q) { + *p += 1; + *q += 1; +} + +int main4 (volatile int c) { + int a1 = 1; + int b1 = 2; + int a2 = 3; + int b2 = 4; + int a3 = 5; + int b3 = 6; + int a4 = 7; + int b4 = 8; + int a5 = 9; + int b5 = 10; + while(c) { + f4 (&a1, &b1); + f4 (&a2, &b2); + f4 (&a3, &b3); + f4 (&a4, &b4); + f4 (&a5, &b5); + } + return a2+b4; +} +//-------------------------------------- +// Non-optimal example if only one phase of slicing is done. Would need a notion of "operational functional dependencies", or a callwise pdg + +int x5; + +void f5(int *p, int *q) { + (*p)++; + x5 = *q; +} + +int main5() { + int a1=1, a2=2, b1=3, b2=4; + f5(&a1, &b1); // This call should be sliced away + f5(&a2, &a1); + + return a2; +} diff --git a/tests/slicing/bts341.c b/tests/slicing/bts341.c deleted file mode 100644 index e50dbaa3f54fa03b10ced0bb440c75621c676588..0000000000000000000000000000000000000000 --- a/tests/slicing/bts341.c +++ /dev/null @@ -1,9 +0,0 @@ -/* run.config - OPT: -check -slice-assert main -journal-disable -then-on 'Slicing export' -print -*/ -int main (int c) { - if (c) - while (1) { ; } - //@ assert c == 0; - return c; -} diff --git a/tests/slicing/bts341.i b/tests/slicing/bts341.i new file mode 100644 index 0000000000000000000000000000000000000000..425b56cfbb68a17ce02bc672066bb8e15196322a --- /dev/null +++ b/tests/slicing/bts341.i @@ -0,0 +1,9 @@ +/* run.config + OPT: -check -slice-assert main -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check +*/ +int main (int c) { + if (c) + while (1) { ; } + //@ assert c == 0; + return c; +} diff --git a/tests/slicing/bts344.c b/tests/slicing/bts344.c deleted file mode 100644 index 9355ed0d9af8e6972134c413e7095b48becdda20..0000000000000000000000000000000000000000 --- a/tests/slicing/bts344.c +++ /dev/null @@ -1,34 +0,0 @@ -/* run.config - OPT: -check -slice-return main -journal-disable -then-on 'Slicing export' -print - OPT: -check -slice-return main_bis -main main_bis -journal-disable -then-on 'Slicing export' -print -*/ - -int X, Y ; -void h(int x); - -/*@ ensures X == \old(X) + x; */ -void k(int x) { - X += x ; - Y ++ ; -} -void h(int x) { - X += x ; - Y ++ ; -} -void f(int x, ...) { - void (*q) (int) = &h; - void (*p) (int) = &k; - h(x); -} -int main (int x) { - f (1) ; - h(2) ; - k(3); - return X ; -} - -int main_bis (void) { - void (*p) (int) = &k; - (*p)(1) ; - return Y; -} diff --git a/tests/slicing/bts344.i b/tests/slicing/bts344.i new file mode 100644 index 0000000000000000000000000000000000000000..ac84ec0876cf37ec6a5f3673c16aa1501b1479b5 --- /dev/null +++ b/tests/slicing/bts344.i @@ -0,0 +1,34 @@ +/* run.config + OPT: -slice-return main -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-deps + OPT: -slice-return main_bis -main main_bis -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-deps +*/ + +int X, Y ; +void h(int x); + +/*@ ensures X == \old(X) + x; */ +void k(int x) { + X += x ; + Y ++ ; +} +void h(int x) { + X += x ; + Y ++ ; +} +void f(int x, ...) { + void (*q) (int) = &h; + void (*p) (int) = &k; + h(x); +} +int main (int x) { + f (1) ; + h(2) ; + k(3); + return X ; +} + +int main_bis (void) { + void (*p) (int) = &k; + (*p)(1) ; + return Y; +} diff --git a/tests/slicing/bts345.c b/tests/slicing/bts345.c deleted file mode 100644 index a0b04e6b01dc40178ed369d62f3e81be4761d38e..0000000000000000000000000000000000000000 --- a/tests/slicing/bts345.c +++ /dev/null @@ -1,30 +0,0 @@ -/* run.config - OPT: -check -slice-return call_top -main call_top -journal-disable -then-on 'Slicing export' -print - OPT: -check -slice-return top -main top -journal-disable -then-on 'Slicing export' -print - OPT: -check -slice-return top -main call_top -journal-disable -then-on 'Slicing export' -print - OPT: -check -slice-return called_by_top -main top -journal-disable - OPT: -check -slice-return called_by_top -main call_top -journal-disable -*/ - -int called_indirectly_by_top (int x) { - x++ ; - return x ; -} - -int called_by_top (int x) { - x++ ; - int z = called_indirectly_by_top (x) ; - return z ; -} - -int top (int x, ...) { - x++ ; - int z = called_by_top (x) ; - return z; -} - -int call_top (int y) { - y++; - int z = top (y) ; - return z ; -} diff --git a/tests/slicing/bts345.i b/tests/slicing/bts345.i new file mode 100644 index 0000000000000000000000000000000000000000..82a8aa116be58142c2287bbd0a593aaa329fd108 --- /dev/null +++ b/tests/slicing/bts345.i @@ -0,0 +1,30 @@ +/* run.config + OPT: -check -slice-return call_top -main call_top -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check + OPT: -check -slice-return top -main top -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check + OPT: -check -slice-return top -main call_top -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check + OPT: -check -slice-return called_by_top -main top -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check + OPT: -check -slice-return called_by_top -main call_top -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check +*/ + +int called_indirectly_by_top (int x) { + x++ ; + return x ; +} + +int called_by_top (int x) { + x++ ; + int z = called_indirectly_by_top (x) ; + return z ; +} + +int top (int x, ...) { + x++ ; + int z = called_by_top (x) ; + return z; +} + +int call_top (int y) { + y++; + int z = top (y) ; + return z ; +} diff --git a/tests/slicing/bts679.i b/tests/slicing/bts679.i index b076f8edd38e05f41a7ddd32d24f38d423c1f8b6..ad624355ed5a5806382526fdd961d111455fcf86 100644 --- a/tests/slicing/bts679.i +++ b/tests/slicing/bts679.i @@ -1,5 +1,5 @@ /* run.config -OPT: -check -slice-return main -then-on "Slicing export" -print +OPT: -slice-return main -then-on "Slicing export" -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i */ void f(void) { return; } int X = 1 ; diff --git a/tests/slicing/bts679b.i b/tests/slicing/bts679b.i index 2fc0dc753407b63800e60425676d69a2d6c2862c..06b9f727b57e40e4aa4eefb0ddc07841f0e18dd8 100644 --- a/tests/slicing/bts679b.i +++ b/tests/slicing/bts679b.i @@ -1,5 +1,5 @@ /* run.config -OPT: -check -slice-assert main -then-on "Slicing export" -print +OPT: -slice-assert main -then-on "Slicing export" -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-deps */ int X = 1 ; diff --git a/tests/slicing/bts709.c b/tests/slicing/bts709.i similarity index 75% rename from tests/slicing/bts709.c rename to tests/slicing/bts709.i index 11c67b3b81bba97bab8837ae040e59ef3633917d..52ea3d885ae90aba90609a5db8367e2f53b94fe4 100644 --- a/tests/slicing/bts709.c +++ b/tests/slicing/bts709.i @@ -1,5 +1,5 @@ /* run.config - OPT: -check -slice-pragma func -no-unicode -journal-disable -then-on 'Slicing export' -print + OPT: -slice-pragma func -no-unicode -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-deps */ int inputsOf_testcase_func (); diff --git a/tests/slicing/bts808.c b/tests/slicing/bts808.i similarity index 53% rename from tests/slicing/bts808.c rename to tests/slicing/bts808.i index c0fec1d322836456b26d4357dfe2eee1f0d882e8..20ac89988ea2996baed4ef052aff3f8a6699a603 100644 --- a/tests/slicing/bts808.c +++ b/tests/slicing/bts808.i @@ -1,5 +1,5 @@ /* run.config -* OPT: -check -slice-return main -journal-disable -then-on 'Slicing export' -print +* OPT: -slice-return main -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i */ int f0 (void) { diff --git a/tests/slicing/bts827.c b/tests/slicing/bts827.c deleted file mode 100644 index f035b47663667dbb7368cc3567a98f19a01fbb1c..0000000000000000000000000000000000000000 --- a/tests/slicing/bts827.c +++ /dev/null @@ -1,19 +0,0 @@ -/* run.config - OPT: -check -slice-return main -journal-disable -then-on 'Slicing export' -print -*/ - -/* The problem was a mix-up between f outputs and retrun value. */ - -int G; - -int f (void) { - G = 3; - return 5; -} - -int main (void) { - G = 1; - G += f (); - return G; -} - diff --git a/tests/slicing/bts827.i b/tests/slicing/bts827.i new file mode 100644 index 0000000000000000000000000000000000000000..4891fc7d179829fd5b68a10bf1a87ba7c245e66e --- /dev/null +++ b/tests/slicing/bts827.i @@ -0,0 +1,19 @@ +/* run.config + OPT: -slice-return main -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-deps +*/ + +/* The problem was a mix-up between f outputs and retrun value. */ + +int G; + +int f (void) { + G = 3; + return 5; +} + +int main (void) { + G = 1; + G += f (); + return G; +} + diff --git a/tests/slicing/call_accuracy.c b/tests/slicing/call_accuracy.i similarity index 83% rename from tests/slicing/call_accuracy.c rename to tests/slicing/call_accuracy.i index e15e4bbb72269e172993bcfce007e4a48cb0a814..7ca519ce01ab9242adf150a3836756f436016b85 100644 --- a/tests/slicing/call_accuracy.c +++ b/tests/slicing/call_accuracy.i @@ -1,5 +1,5 @@ /* run.config - OPT: -check -calldeps -slice-return main -slicing-level 3 -journal-disable -then-on 'Slicing export' -print + OPT: -calldeps -slice-return main -slicing-level 3 -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-calldeps */ int f_cond (int c, int a, int b) { ++a; diff --git a/tests/slicing/call_demo.c b/tests/slicing/call_demo.c deleted file mode 100644 index 6afb3fe85326b31a48bc7b1145f8da630744f5a5..0000000000000000000000000000000000000000 --- a/tests/slicing/call_demo.c +++ /dev/null @@ -1,27 +0,0 @@ -/* run.config - OPT: -check -slice-calls call1 -journal-disable -then-on 'Slicing export' -print - OPT: -check -slice-calls call2 -journal-disable -then-on 'Slicing export' -print -*/ - -//@ assigns \result \from v; -int call1 (int v); - -//@ assigns \result \from v; -int call2 (int v); - -void oper (int * s, int * p, int i) { - *s = *s + i; - *p = *p * i; -} - -void main (int n) { - int i; - int sum = 0; - int product = 1; - - for(i = 0; i < n; ++i) - oper (& sum, & product, i); - - call1(sum); - call2(product); -} diff --git a/tests/slicing/call_demo.i b/tests/slicing/call_demo.i new file mode 100644 index 0000000000000000000000000000000000000000..95a86ca1ee3dff1be50c73108057fc0eb7cf0b75 --- /dev/null +++ b/tests/slicing/call_demo.i @@ -0,0 +1,27 @@ +/* run.config + OPT: -slice-calls call1 -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-deps + OPT: -slice-calls call2 -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-deps +*/ + +//@ assigns \result \from v; +int call1 (int v); + +//@ assigns \result \from v; +int call2 (int v); + +void oper (int * s, int * p, int i) { + *s = *s + i; + *p = *p * i; +} + +void main (int n) { + int i; + int sum = 0; + int product = 1; + + for(i = 0; i < n; ++i) + oper (& sum, & product, i); + + call1(sum); + call2(product); +} diff --git a/tests/slicing/callwise.c b/tests/slicing/callwise.i similarity index 67% rename from tests/slicing/callwise.c rename to tests/slicing/callwise.i index a604b003568ad51cb7c6d560302df86af1db9b0e..e97eb63808583065b2703da8e483a1e717014cef 100644 --- a/tests/slicing/callwise.c +++ b/tests/slicing/callwise.i @@ -1,5 +1,5 @@ /* run.config - OPT: -check -calldeps -slice-return main -slicing-level 2 -journal-disable -then-on 'Slicing export' -print + OPT: -calldeps -slice-return main -slicing-level 2 -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-calldeps */ int a = 1, b = 1, c = 1, d = 1, *p; diff --git a/tests/slicing/combine.c b/tests/slicing/combine.i similarity index 91% rename from tests/slicing/combine.c rename to tests/slicing/combine.i index 7f03a5d681268645291f3ba2c3270f1f4264ee9e..fdefddedb14f69098f92ed04e3dac93c98e963b5 100644 --- a/tests/slicing/combine.c +++ b/tests/slicing/combine.i @@ -1,7 +1,7 @@ /* run.config EXECNOW: make -s tests/slicing/combine.cmxs CMD: @frama-c@ -load-module tests/slicing/libSelect.cmxs -load-module tests/slicing/combine.cmxs - OPT: -check -deps -journal-disable + OPT: -deps -journal-disable */ //@ assigns \result \from x; diff --git a/tests/slicing/csmith.c b/tests/slicing/csmith.i similarity index 93% rename from tests/slicing/csmith.c rename to tests/slicing/csmith.i index 6d61bbd87f69b7db319b578765cc7fa929122178..9dd6d9bf3fe44e0d9b6e43c36c8539ea802abe23 100644 --- a/tests/slicing/csmith.c +++ b/tests/slicing/csmith.i @@ -1,6 +1,6 @@ /* run.config - OPT: -slice-return main -journal-disable -then-on 'Slicing export' -print -COMMENT: TODO add -check to the command, but it fails at the moment... + OPT: -slice-return main -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i +COMMENT: OPT: -main bts906b -fct-pdg bts906b -pdg-print -pdg-verbose 2 OPT: -main bts906c -fct-pdg bts906c -pdg-print -pdg-verbose 2 COMMENT: The two PDG tests above test interesting case where the slicing may diff --git a/tests/slicing/ex_spec_interproc.c b/tests/slicing/ex_spec_interproc.i similarity index 93% rename from tests/slicing/ex_spec_interproc.c rename to tests/slicing/ex_spec_interproc.i index 1bec1beaef40874c0ac3cb829c747ab41ef847aa..4ed253d83230a9a9bfa46d3ae17cc98ea82de2c4 100644 --- a/tests/slicing/ex_spec_interproc.c +++ b/tests/slicing/ex_spec_interproc.i @@ -1,7 +1,7 @@ /* run.config EXECNOW: make -s tests/slicing/ex_spec_interproc.cmxs CMD: @frama-c@ -load-module tests/slicing/libSelect.cmxs -load-module tests/slicing/ex_spec_interproc.cmxs - OPT: -check -deps -journal-disable + OPT: -deps -journal-disable */ int X, Y; diff --git a/tests/slicing/filter.c b/tests/slicing/filter.i similarity index 72% rename from tests/slicing/filter.c rename to tests/slicing/filter.i index 2264d4c4faa41efa51227a6c7bcf09a7d870d312..d41f7e84053595207530515cbc6d57b8a075fb6a 100644 --- a/tests/slicing/filter.c +++ b/tests/slicing/filter.i @@ -1,5 +1,5 @@ /* run.config - OPT: -check -slice-return main -journal-disable -then-on 'Slicing export' -print + OPT: -slice-return main -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i **/ /* TESTS: this is about [filter] optimisations since sometimes, * slicing results are ok, but the generated new project is not correct. */ diff --git a/tests/slicing/forall_loop_invariant.i b/tests/slicing/forall_loop_invariant.i index f8bb3332802176e00366da354e1a9fce221868aa..6b5dd549078069e51df148794331d04a2bdb9a35 100644 --- a/tests/slicing/forall_loop_invariant.i +++ b/tests/slicing/forall_loop_invariant.i @@ -1,5 +1,5 @@ /* run.config - OPT: -slice-assert main -then-on 'Slicing export' -print -then-on default -slice-value t -then-on 'Slicing export 2' -print + OPT: -slice-assert main -then-on 'Slicing export' -print -then-on default -slice-value t -then-on 'Slicing export 2' -print -check -set-project-as-default -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check -no-deps **/ diff --git a/tests/slicing/horwitz.c b/tests/slicing/horwitz.i similarity index 91% rename from tests/slicing/horwitz.c rename to tests/slicing/horwitz.i index b8c2eb0a83f3f3482ab8c70b887b8c7b3abf6bc2..5cbca9e2e39226e7235985ab26c33570b15a664c 100644 --- a/tests/slicing/horwitz.c +++ b/tests/slicing/horwitz.i @@ -1,7 +1,7 @@ /* run.config EXECNOW: make -s tests/slicing/horwitz.cmxs CMD: @frama-c@ -load-module tests/slicing/libSelect.cmxs -load-module tests/slicing/horwitz.cmxs - OPT: -check -deps -slicing-level 0 -journal-disable + OPT: -deps -slicing-level 0 -journal-disable */ /* bin/toplevel.opt -deps -val tests/slicing/horwitz.c */ diff --git a/tests/slicing/if_many_values.c b/tests/slicing/if_many_values.c deleted file mode 100644 index 2d8b47a539602de8d736a18a76dfb73cbd095253..0000000000000000000000000000000000000000 --- a/tests/slicing/if_many_values.c +++ /dev/null @@ -1,14 +0,0 @@ -/* run.config - OPT: -check -slice-value r -journal-disable -slevel 101 -then-on 'Slicing export' -print - **/ - -int r=1; - -int main() { - for (int i = -100; i < 100; i++) { - if (i != 0) - if (i) - r += 1; - } - return r; -} diff --git a/tests/slicing/if_many_values.i b/tests/slicing/if_many_values.i new file mode 100644 index 0000000000000000000000000000000000000000..955ddde53d993caba360f463df19981ff7ee3883 --- /dev/null +++ b/tests/slicing/if_many_values.i @@ -0,0 +1,14 @@ +/* run.config + OPT: -check -slice-value r -journal-disable -slevel 101 -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check -no-deps + **/ + +int r=1; + +int main() { + for (int i = -100; i < 100; i++) { + if (i != 0) + if (i) + r += 1; + } + return r; +} diff --git a/tests/slicing/initialized.c b/tests/slicing/initialized.c deleted file mode 100644 index 490f1e1515f438d5896582871cc4b3809bdc8550..0000000000000000000000000000000000000000 --- a/tests/slicing/initialized.c +++ /dev/null @@ -1,14 +0,0 @@ -/* run.config - OPT: -slice-assert main -then-on 'Slicing export' -print - **/ - -void main() { - int x = 1; - int y; - - L: - x = 3; - y = 2; - //@ assert \initialized(&x); - // assert !\initialized{L}(&y); -} diff --git a/tests/slicing/initialized.i b/tests/slicing/initialized.i new file mode 100644 index 0000000000000000000000000000000000000000..db0808f47bada41de9b33b8308b82ffb7e194289 --- /dev/null +++ b/tests/slicing/initialized.i @@ -0,0 +1,14 @@ +/* run.config + OPT: -slice-assert main -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check + **/ + +void main() { + int x = 1; + int y; + + L: + x = 3; + y = 2; + //@ assert \initialized(&x); + // assert !\initialized{L}(&y); +} diff --git a/tests/slicing/keep_annot.c b/tests/slicing/keep_annot.c deleted file mode 100644 index fb9f0a05398a77aa7dd59c77b60d340d0a5c9c10..0000000000000000000000000000000000000000 --- a/tests/slicing/keep_annot.c +++ /dev/null @@ -1,56 +0,0 @@ -/* run.config - OPT: -check -context-valid-pointers -lib-entry -main f -slice-assert f -then-on 'Slicing export' -print - OPT: -check -context-valid-pointers -lib-entry -main f -slice-assert f -slicing-keep-annotations -then-on 'Slicing export' -print - OPT: -check -context-valid-pointers -lib-entry -main L -slice-pragma L -slicing-keep-annotations -then-on 'Slicing export' -print - OPT: -check -context-valid-pointers -lib-entry -main L -slice-pragma L -then-on 'Slicing export' -print - OPT: -slice-return bts1110 -main bts1110 -then-on 'Slicing export' -print - - -*/ - -typedef struct { int a; double b; } las; - -void g (las * p) { - int i=0; - while (i<5) { - p->b = (double)i / (double)(i+1); - p->a = 1 + i; - i++; - } - //@ assert 1<=p->a<=6; - //@ assert 0.0<=p->b<=1.0; -} - -//@assigns *p; -void f (las * p, int n, int m) { - g(p); - //@ assert 0.0<=p->b<=1.0; - //@ assert (\forall integer k; k < n ==> k < m); -} - - -/* from BTS#448 from Dillon : the loop invariant is not in the slice. - * After bug fix, it is kept when using option -slicing-keep-annotations - * TODO: maybe it should also be kept without the option. - */ - -void L (float u,int nn, float dabs[], float *y) { - int ii; - /*@ loop invariant (\forall integer k; u<=dabs[k]); */ - for (ii = nn-2; ii >= 0; ii--) { - *y = u - dabs[ii+1] * 2.0; - //@ assert (\forall integer k; u<=dabs[k]); - } - //@slice pragma expr *y; -} - -int bts1110(int x) { - int y = 3; - int z; - //@ assert y == 3; - y = 2; - //@ assert x == 5; - z = 5; - x = x+1; - return x; -} diff --git a/tests/slicing/keep_annot.i b/tests/slicing/keep_annot.i new file mode 100644 index 0000000000000000000000000000000000000000..79a205b88b49fcdd3838c0a2375ac4a0461d7dc8 --- /dev/null +++ b/tests/slicing/keep_annot.i @@ -0,0 +1,56 @@ +/* run.config + OPT: -context-valid-pointers -lib-entry -main f -slice-assert f -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-deps + OPT: -context-valid-pointers -lib-entry -main f -slice-assert f -slicing-keep-annotations -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-deps + OPT: -context-valid-pointers -lib-entry -main L -slice-pragma L -slicing-keep-annotations -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-deps + OPT: -context-valid-pointers -lib-entry -main L -slice-pragma L -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-deps + OPT: -slice-return bts1110 -main bts1110 -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-deps + + +*/ + +typedef struct { int a; double b; } las; + +void g (las * p) { + int i=0; + while (i<5) { + p->b = (double)i / (double)(i+1); + p->a = 1 + i; + i++; + } + //@ assert 1<=p->a<=6; + //@ assert 0.0<=p->b<=1.0; +} + +//@assigns *p; +void f (las * p, int n, int m) { + g(p); + //@ assert 0.0<=p->b<=1.0; + //@ assert (\forall integer k; k < n ==> k < m); +} + + +/* from BTS#448 from Dillon : the loop invariant is not in the slice. + * After bug fix, it is kept when using option -slicing-keep-annotations + * TODO: maybe it should also be kept without the option. + */ + +void L (float u,int nn, float dabs[], float *y) { + int ii; + /*@ loop invariant (\forall integer k; u<=dabs[k]); */ + for (ii = nn-2; ii >= 0; ii--) { + *y = u - dabs[ii+1] * 2.0; + //@ assert (\forall integer k; u<=dabs[k]); + } + //@slice pragma expr *y; +} + +int bts1110(int x) { + int y = 3; + int z; + //@ assert y == 3; + y = 2; + //@ assert x == 5; + z = 5; + x = x+1; + return x; +} diff --git a/tests/slicing/loop_infinite.c b/tests/slicing/loop_infinite.c deleted file mode 100644 index d97e73f6c627731b46cc8b0344848aaaec760a31..0000000000000000000000000000000000000000 --- a/tests/slicing/loop_infinite.c +++ /dev/null @@ -1,13 +0,0 @@ -/* run.config - OPT: -check -deps -slice-return main -journal-disable -then-on 'Slicing export' -print -*/ -int main() { - volatile int a=0,b,c; - if (a) - {a = 1; - - while (1) { - a++; - }; - return 0;} -} diff --git a/tests/slicing/loop_infinite.i b/tests/slicing/loop_infinite.i new file mode 100644 index 0000000000000000000000000000000000000000..d07912fe778b226ae2871a588b1f1ad5cb92a03c --- /dev/null +++ b/tests/slicing/loop_infinite.i @@ -0,0 +1,13 @@ +/* run.config + OPT: -check -deps -slice-return main -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check -no-deps +*/ +int main() { + volatile int a=0,b,c; + if (a) + {a = 1; + + while (1) { + a++; + }; + return 0;} +} diff --git a/tests/slicing/loop_simple.c b/tests/slicing/loop_simple.i similarity index 55% rename from tests/slicing/loop_simple.c rename to tests/slicing/loop_simple.i index b4bacd1a0477c91ff262a047ea274c4e1cc830c6..2d9cea68eea662f4f3f7cdbfe5e90cb9182d006b 100644 --- a/tests/slicing/loop_simple.c +++ b/tests/slicing/loop_simple.i @@ -1,5 +1,5 @@ /* run.config - OPT: -check -deps -slice-return main -journal-disable -then-on 'Slicing export' -print + OPT: -deps -slice-return main -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-deps */ int main() { int a,c; volatile int b = 0; diff --git a/tests/slicing/loops.c b/tests/slicing/loops.c deleted file mode 100644 index 9262ebe86d734e6cc649e2aece1b595b5d105144..0000000000000000000000000000000000000000 --- a/tests/slicing/loops.c +++ /dev/null @@ -1,212 +0,0 @@ -/* run.config - OPT: -check -deps -lib-entry -main f1 -slice-pragma f1 -journal-disable -then-on 'Slicing export' -print - OPT: -check -deps -lib-entry -main f1 -slice-assert f1 -journal-disable -then-on 'Slicing export' -print - OPT: -check -deps -lib-entry -main f2 -slice-pragma f2 -journal-disable -then-on 'Slicing export' -print - OPT: -check -deps -lib-entry -main f2 -slice-assert f2 -journal-disable -then-on 'Slicing export' -print - OPT: -check -deps -main test_infinite_loop_3 -slice-value G -journal-disable -then-on 'Slicing export' -print - OPT: -check -deps -main test_infinite_loop_4 -slice-value G -journal-disable -then-on 'Slicing export' -print - OPT: -check -deps -main test_infinite_loop_5 -slice-value G -journal-disable -then-on 'Slicing export' -print - OPT: -check -deps -main loop -slice-value Z -journal-disable -then-on 'Slicing export' -print - OPT: -check -deps -slice-calls loop -journal-disable -then-on 'Slicing export' -print - OPT: -check -deps -slice-pragma loop -journal-disable -then-on 'Slicing export' -print - OPT: -check -deps -slice-assert loop -journal-disable -then-on 'Slicing export' -print - OPT: -check -deps -main loop -slice-rd Y -journal-disable -then-on 'Slicing export' -print - OPT: -check -deps -main loop -slice-rd Z -journal-disable -then-on 'Slicing export' -print - OPT: -check -deps -main loop -slice-wr Y -journal-disable -then-on 'Slicing export' -print - OPT: -check -deps -main loop -slice-wr Z -journal-disable -then-on 'Slicing export' -print - OPT: -check -deps -lib-entry -main stop_f1 -slice-pragma stop_f1 -journal-disable -then-on 'Slicing export' -print - OPT: -check -deps -lib-entry -main stop_f1 -slice-assert stop_f1 -journal-disable -then-on 'Slicing export' -print - OPT: -check -deps -lib-entry -main stop_f2 -slice-pragma stop_f2 -journal-disable -then-on 'Slicing export' -print - OPT: -check -deps -lib-entry -main stop_f2 -slice-assert stop_f2 -journal-disable -then-on 'Slicing export' -print - OPT: -check -deps -slice-value Z -journal-disable -then-on 'Slicing export' -print - OPT: -check -deps -slice-rd Y -journal-disable -then-on 'Slicing export' -print - OPT: -check -deps -slice-rd Z -journal-disable -then-on 'Slicing export' -print - OPT: -check -deps -slice-wr Y -journal-disable -then-on 'Slicing export' -print - OPT: -check -deps -slice-wr Z -journal-disable -then-on 'Slicing export' -print - OPT: -check -deps -lib-entry -main alarm -slice-threat alarm -journal-disable -then-on 'Slicing export' -print - - - */ - -int f1 (int c) { - int x = 0, s = 0; - if (c) { - while(1) { /* infinite loop */ - s++; - //@ assert s > 0 ; - } - //@ assert \false ; - } - else - x = 1; - //@ slice pragma stmt; - x ++; - return x; -} - -void f2 (int c) { - int x1 = 0, x2 = 0; - - while (1) { - if (c) - x1++; - else - x2++; - //@slice pragma expr x1; - //@ assert x2 > 0 ; - } -} - -/*-------------------------------------------*/ -void stop(void) __attribute__ ((noreturn)) ; - -int stop_f1 (int c) { - int x = 0, s = 0; - if (c) { - while(s < c) { - s++; - //@ assert s > 0 ; - } - stop () ; /* never returns */ - } - else - x = 1; - //@ slice pragma stmt; - x ++; - return x; -} - -void stop_f2 (int c) { - int x1 = 0, x2 = 0; - - while (x1+x2 < c + 10) { - if (c) - x1++; - else - x2++; - //@slice pragma expr x1; - //@ assert x2 > 0 ; - stop () ; /* never loops nor returns */ - x1++; /* dead code */ - //@ assert \false ; - } -} -/*-------------------------------------------*/ -int G ; -void test_infinite_loop_3 (int ctrl1, int ctrl2, - int no_ctrl, - int data1, int data2, - int no_data) { - G = 0 ; - if (ctrl1) { - G = data1 ; - if (no_ctrl) { /* Don't control an assignment of G - * which leads to the return */ - G = no_data ; /* Don't affect the final value of G - * because the assignement - * does not lead to the return */ - while (1) - G = no_data ; /* Don't affect the final value of G - * because the assignement - * does not lead to the return */ - G = no_data ; /* Don't affect the final value of G - * because the assignement - * is dead code */ - } - if (ctrl2) - G = data2 ; - } - return; -} - -void test_infinite_loop_4 (int ctrl1, int ctrl2, int no_ctrl, - int data1, int data2, int no_data) { - G = 0 ; - while (ctrl1) { - G += data1 ; - if (no_ctrl) { /* Don't control an assignment of G - * which leads to the return */ - G += no_data ; /* Don't affect the final value of G - * because the assignement - * does not lead to the return */ - while (1) - G += no_data ; /* Don't affect the final value of G - * because the assignement - * does not lead to the return */ - G += no_data ; /* Don't affect the final value of G - * because the assignement - * is dead code */ - } - if (ctrl2) - G += data2 ; - } - return; -} - -void test_infinite_loop_5 (int ctrl1, int ctrl2, int no_ctrl, - int data1, int data2, int no_data) { - G = 0 ; - while (ctrl1) { - G += data1 ; - if (no_ctrl) { /* Don't control the final value of G. - * It only controls the terminaison of the function. - */ - G += no_data ; /* Don't affect ... */ - while (1) - G += no_data ; /* Don't affect ... */ - G += no_data ; /* Don't affect ... dead code */ - } - else /* <-- This is the difference with test_infinite_loop_4. - * It is only a syntaxical difference, - * and not a semantical difference - * since the previous statement "G += no_data" is dead. - */ - if (ctrl2) - G += data2 ; - } - return; -} -/*-------------------------------------------*/ -int C1 = 1, C2 = 1 ; -int X, Y, Z ; - -void loop (int cond) { - if (cond) { - int c = 0 ; - /*@ loop pragma WIDEN_HINTS X, 10, 100 ; */ while (1) { - //@ slice pragma ctrl ; - if (c) { - X++; - Y = Z ; - } - c=1; - //@ assert c==1 ; - } - } - Z = Y ; // dead code with -main main -} -/*---------------------*/ -/*@ assigns *p \from p, y, Z ; - */ -void may_write_Y_from_Z (int * p, int y) ; -void test_assigns (int * p, int y) { if (y < Z) *p = y + Z; } -/*---------------------*/ -void main (int y) { - int no_ctrl = 1 ; - Z = 0; - if (no_ctrl) - Z = X ; - may_write_Y_from_Z (&Y, y) ; - if (C1) { - int cond = C2 ; - loop (cond) ; - } -} -/*-------------------------------------------*/ - -void alarm() { - int i = 1; - volatile int j = 3; - //@ assert i == 1; - j++; -} diff --git a/tests/slicing/loops.i b/tests/slicing/loops.i new file mode 100644 index 0000000000000000000000000000000000000000..1a21b4580570f3b70de62a19fdfb66141db4d327 --- /dev/null +++ b/tests/slicing/loops.i @@ -0,0 +1,212 @@ +/* run.config + OPT: -deps -lib-entry -main f1 -slice-pragma f1 -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-deps + OPT: -deps -lib-entry -main f1 -slice-assert f1 -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-deps + OPT: -deps -lib-entry -main f2 -slice-pragma f2 -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-deps + OPT: -deps -lib-entry -main f2 -slice-assert f2 -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-deps + OPT: -deps -main test_infinite_loop_3 -slice-value G -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-deps + OPT: -deps -main test_infinite_loop_4 -slice-value G -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-deps + OPT: -deps -main test_infinite_loop_5 -slice-value G -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-deps + OPT: -deps -main loop -slice-value Z -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-deps + OPT: -deps -slice-calls loop -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-deps + OPT: -deps -slice-pragma loop -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-deps + OPT: -deps -slice-assert loop -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-deps + OPT: -deps -main loop -slice-rd Y -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-deps + OPT: -deps -main loop -slice-rd Z -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-deps + OPT: -deps -main loop -slice-wr Y -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-deps + OPT: -deps -main loop -slice-wr Z -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-deps + OPT: -deps -lib-entry -main stop_f1 -slice-pragma stop_f1 -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-deps + OPT: -deps -lib-entry -main stop_f1 -slice-assert stop_f1 -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-deps + OPT: -deps -lib-entry -main stop_f2 -slice-pragma stop_f2 -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-deps + OPT: -deps -lib-entry -main stop_f2 -slice-assert stop_f2 -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-deps + OPT: -deps -slice-value Z -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-deps + OPT: -deps -slice-rd Y -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-deps + OPT: -deps -slice-rd Z -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-deps + OPT: -deps -slice-wr Y -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-deps + OPT: -deps -slice-wr Z -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-deps + OPT: -deps -lib-entry -main alarm -slice-threat alarm -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-deps + + + */ + +int f1 (int c) { + int x = 0, s = 0; + if (c) { + while(1) { /* infinite loop */ + s++; + //@ assert s > 0 ; + } + //@ assert \false ; + } + else + x = 1; + //@ slice pragma stmt; + x ++; + return x; +} + +void f2 (int c) { + int x1 = 0, x2 = 0; + + while (1) { + if (c) + x1++; + else + x2++; + //@slice pragma expr x1; + //@ assert x2 > 0 ; + } +} + +/*-------------------------------------------*/ +void stop(void) __attribute__ ((noreturn)) ; + +int stop_f1 (int c) { + int x = 0, s = 0; + if (c) { + while(s < c) { + s++; + //@ assert s > 0 ; + } + stop () ; /* never returns */ + } + else + x = 1; + //@ slice pragma stmt; + x ++; + return x; +} + +void stop_f2 (int c) { + int x1 = 0, x2 = 0; + + while (x1+x2 < c + 10) { + if (c) + x1++; + else + x2++; + //@slice pragma expr x1; + //@ assert x2 > 0 ; + stop () ; /* never loops nor returns */ + x1++; /* dead code */ + //@ assert \false ; + } +} +/*-------------------------------------------*/ +int G ; +void test_infinite_loop_3 (int ctrl1, int ctrl2, + int no_ctrl, + int data1, int data2, + int no_data) { + G = 0 ; + if (ctrl1) { + G = data1 ; + if (no_ctrl) { /* Don't control an assignment of G + * which leads to the return */ + G = no_data ; /* Don't affect the final value of G + * because the assignement + * does not lead to the return */ + while (1) + G = no_data ; /* Don't affect the final value of G + * because the assignement + * does not lead to the return */ + G = no_data ; /* Don't affect the final value of G + * because the assignement + * is dead code */ + } + if (ctrl2) + G = data2 ; + } + return; +} + +void test_infinite_loop_4 (int ctrl1, int ctrl2, int no_ctrl, + int data1, int data2, int no_data) { + G = 0 ; + while (ctrl1) { + G += data1 ; + if (no_ctrl) { /* Don't control an assignment of G + * which leads to the return */ + G += no_data ; /* Don't affect the final value of G + * because the assignement + * does not lead to the return */ + while (1) + G += no_data ; /* Don't affect the final value of G + * because the assignement + * does not lead to the return */ + G += no_data ; /* Don't affect the final value of G + * because the assignement + * is dead code */ + } + if (ctrl2) + G += data2 ; + } + return; +} + +void test_infinite_loop_5 (int ctrl1, int ctrl2, int no_ctrl, + int data1, int data2, int no_data) { + G = 0 ; + while (ctrl1) { + G += data1 ; + if (no_ctrl) { /* Don't control the final value of G. + * It only controls the terminaison of the function. + */ + G += no_data ; /* Don't affect ... */ + while (1) + G += no_data ; /* Don't affect ... */ + G += no_data ; /* Don't affect ... dead code */ + } + else /* <-- This is the difference with test_infinite_loop_4. + * It is only a syntaxical difference, + * and not a semantical difference + * since the previous statement "G += no_data" is dead. + */ + if (ctrl2) + G += data2 ; + } + return; +} +/*-------------------------------------------*/ +int C1 = 1, C2 = 1 ; +int X, Y, Z ; + +void loop (int cond) { + if (cond) { + int c = 0 ; + /*@ loop pragma WIDEN_HINTS X, 10, 100 ; */ while (1) { + //@ slice pragma ctrl ; + if (c) { + X++; + Y = Z ; + } + c=1; + //@ assert c==1 ; + } + } + Z = Y ; // dead code with -main main +} +/*---------------------*/ +/*@ assigns *p \from p, y, Z ; + */ +void may_write_Y_from_Z (int * p, int y) ; +void test_assigns (int * p, int y) { if (y < Z) *p = y + Z; } +/*---------------------*/ +void main (int y) { + int no_ctrl = 1 ; + Z = 0; + if (no_ctrl) + Z = X ; + may_write_Y_from_Z (&Y, y) ; + if (C1) { + int cond = C2 ; + loop (cond) ; + } +} +/*-------------------------------------------*/ + +void alarm() { + int i = 1; + volatile int j = 3; + //@ assert i == 1; + j++; +} diff --git a/tests/slicing/mark_all_slices.c b/tests/slicing/mark_all_slices.i similarity index 87% rename from tests/slicing/mark_all_slices.c rename to tests/slicing/mark_all_slices.i index 4fea292e38f4637a3c91cc788d70a154397c641f..278136f554173a0113a00f5a00e4cdfe9fffe66a 100644 --- a/tests/slicing/mark_all_slices.c +++ b/tests/slicing/mark_all_slices.i @@ -1,7 +1,7 @@ /* run.config EXECNOW: make -s tests/slicing/mark_all_slices.cmxs CMD: @frama-c@ -load-module tests/slicing/libSelect.cmxs -load-module tests/slicing/mark_all_slices.cmxs - OPT: -check -deps -slicing-level 3 -no-slice-callers -journal-disable + OPT: -deps -slicing-level 3 -no-slice-callers -journal-disable */ int A, B, C, D; int A2, B2, C2, D2; diff --git a/tests/slicing/merge.c b/tests/slicing/merge.i similarity index 91% rename from tests/slicing/merge.c rename to tests/slicing/merge.i index b177639d6f1fbcbe59694eb473d18ee0b708146d..ff8df9a76008b92810e69260669e1dbd716095d9 100644 --- a/tests/slicing/merge.c +++ b/tests/slicing/merge.i @@ -1,7 +1,7 @@ /* run.config EXECNOW: make -s tests/slicing/merge.cmxs CMD: @frama-c@ -load-module tests/slicing/libSelect.cmxs -load-module tests/slicing/libAnim.cmxs -load-module tests/slicing/merge.cmxs - OPT: -check -deps -slicing-level 3 -journal-disable + OPT: -deps -slicing-level 3 -journal-disable */ int G1, G2, G3; diff --git a/tests/slicing/min_call.c b/tests/slicing/min_call.i similarity index 79% rename from tests/slicing/min_call.c rename to tests/slicing/min_call.i index b8300b3344d4039dd1a6dc66233311ba5fed72c5..d2e21555304f95e58b40396cdbd7918c397e932f 100644 --- a/tests/slicing/min_call.c +++ b/tests/slicing/min_call.i @@ -1,7 +1,7 @@ /* run.config EXECNOW: make -s tests/slicing/min_call.cmxs CMD: @frama-c@ -load-module tests/slicing/libSelect.cmxs -load-module tests/slicing/min_call.cmxs - OPT: -check -deps -lib-entry -main g -journal-disable -slicing-level 3 + OPT: -deps -lib-entry -main g -journal-disable -slicing-level 3 */ /* dummy source file in order to test minimal calls feature diff --git a/tests/slicing/oracle/adpcm.err.oracle b/tests/slicing/oracle/adpcm.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/slicing2/oracle/adpcm.res.oracle b/tests/slicing/oracle/adpcm.res.oracle similarity index 99% rename from tests/slicing2/oracle/adpcm.res.oracle rename to tests/slicing/oracle/adpcm.res.oracle index 75f7299a9d6f8d957567c0c5edf339b7eaa5010d..c91dcfd863f782ea2e5fe4e347613effaff04dda 100644 --- a/tests/slicing2/oracle/adpcm.res.oracle +++ b/tests/slicing/oracle/adpcm.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing2/adpcm.c (with preprocessing) +[kernel] Parsing tests/slicing/adpcm.c (with preprocessing) [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed diff --git a/tests/slicing/oracle/annot.0.res.oracle b/tests/slicing/oracle/annot.0.res.oracle index a1d4f22470882faf82a4575aa23168ff641ea23a..5a8323dd995300abece8085f6c64633038056875 100644 --- a/tests/slicing/oracle/annot.0.res.oracle +++ b/tests/slicing/oracle/annot.0.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/annot.c (with preprocessing) +[kernel] Parsing tests/slicing/annot.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at f1 [value] Computing initial state @@ -8,11 +8,11 @@ x ∈ [--..--] z ∈ [--..--] t[0..9] ∈ {0} -tests/slicing/annot.c:11:[value] warning: signed overflow. assert -2147483648 ≤ x+x; -tests/slicing/annot.c:11:[value] warning: signed overflow. assert x+x ≤ 2147483647; -tests/slicing/annot.c:11:[value] warning: signed overflow. assert -2147483648 ≤ (int)(x+x)-x; -tests/slicing/annot.c:11:[value] warning: signed overflow. assert (int)(x+x)-x ≤ 2147483647; -tests/slicing/annot.c:15:[value] warning: assertion got status unknown. +tests/slicing/annot.i:11:[value] warning: signed overflow. assert -2147483648 ≤ x+x; +tests/slicing/annot.i:11:[value] warning: signed overflow. assert x+x ≤ 2147483647; +tests/slicing/annot.i:11:[value] warning: signed overflow. assert -2147483648 ≤ (int)(x+x)-x; +tests/slicing/annot.i:11:[value] warning: signed overflow. assert (int)(x+x)-x ≤ 2147483647; +tests/slicing/annot.i:15:[value] warning: assertion got status unknown. [value] Recording results for f1 [value] done for function f1 [slicing] making slicing project 'Slicing'... @@ -42,3 +42,5 @@ void f1(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_0_annot.i (no preprocessing) diff --git a/tests/slicing/oracle/annot.1.res.oracle b/tests/slicing/oracle/annot.1.res.oracle index 0f4108810b31f1d3a5c09a83d5f0b7cda96944ad..f8923878616d2f71d745772e35d7baaeaec7f945 100644 --- a/tests/slicing/oracle/annot.1.res.oracle +++ b/tests/slicing/oracle/annot.1.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/annot.c (with preprocessing) +[kernel] Parsing tests/slicing/annot.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at f2 [value] Computing initial state @@ -8,7 +8,7 @@ x ∈ [--..--] z ∈ [--..--] t[0..9] ∈ {0} -tests/slicing/annot.c:23:[value] assertion got status valid. +tests/slicing/annot.i:23:[value] assertion got status valid. [value] Recording results for f2 [value] done for function f2 [slicing] making slicing project 'Slicing'... @@ -38,3 +38,5 @@ void f2(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_1_annot.i (no preprocessing) diff --git a/tests/slicing/oracle/bts0184.res.oracle b/tests/slicing/oracle/bts0184.res.oracle index dcaaf5a6abbb92e20e99c1267576d9b8eed0eea0..02f53368cca1bb12406971e7ecaa61aa994c2a69 100644 --- a/tests/slicing/oracle/bts0184.res.oracle +++ b/tests/slicing/oracle/bts0184.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/bts0184.c (with preprocessing) +[kernel] Parsing tests/slicing/bts0184.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at main [value] Computing initial state @@ -25,3 +25,7 @@ [slicing] applying 0 actions... [sparecode] remove unused global declarations from project 'Slicing export tmp' [sparecode] removed unused global declarations in new project 'Slicing export' +/* Generated by Frama-C */ + +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_0_bts0184.i (no preprocessing) diff --git a/tests/slicing/oracle/bts0190.res.oracle b/tests/slicing/oracle/bts0190.res.oracle index 6dea81fe6c1802f3f7c03e3d1374cf50e7b72c1a..47ac4764bafc9b96c0c3f9301b40e8e87c8dc4e0 100644 --- a/tests/slicing/oracle/bts0190.res.oracle +++ b/tests/slicing/oracle/bts0190.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/bts0190.c (with preprocessing) +[kernel] Parsing tests/slicing/bts0190.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at main [value] Computing initial state @@ -7,11 +7,11 @@ [value:initial-state] Values of globals at initialization [value] computing for function x <- main. - Called from tests/slicing/bts0190.c:15. -tests/slicing/bts0190.c:8:[value] assertion got status valid. -tests/slicing/bts0190.c:9:[value] assertion got status valid. + Called from tests/slicing/bts0190.i:15. +tests/slicing/bts0190.i:8:[value] assertion got status valid. +tests/slicing/bts0190.i:9:[value] assertion got status valid. [value] computing for function z1 <- x <- main. - Called from tests/slicing/bts0190.c:10. + Called from tests/slicing/bts0190.i:10. [value] Recording results for z1 [value] Done for function z1 [value] Recording results for x @@ -39,3 +39,12 @@ tests/slicing/bts0190.c:9:[value] assertion got status valid. [slicing] applying 0 actions... [sparecode] remove unused global declarations from project 'Slicing export tmp' [sparecode] removed unused global declarations in new project 'Slicing export' +/* Generated by Frama-C */ +void main(void) +{ + return; +} + + +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_0_bts0190.i (no preprocessing) diff --git a/tests/slicing/oracle/bts0950_annot.res.oracle b/tests/slicing/oracle/bts0950_annot.res.oracle index 40e3edbea01a0fe8f36fca8b6daeb2c994fc57b7..13da51b5c2e86d0d2644f0f0e0e7828bd9b18d54 100644 --- a/tests/slicing/oracle/bts0950_annot.res.oracle +++ b/tests/slicing/oracle/bts0950_annot.res.oracle @@ -56,3 +56,23 @@ void main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_0_bts0950_annot.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + a ∈ {1} + b ∈ {2} +[value] computing for function cpy <- main. + Called from tests/slicing/result/ocode_0_bts0950_annot.i:15. +tests/slicing/result/ocode_0_bts0950_annot.i:4:[value] function cpy: precondition got status valid. +[value] Recording results for cpy +[value] Done for function cpy +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function cpy: + a ∈ {2} +[value:final-states] Values at end of function main: + a ∈ {2} diff --git a/tests/slicing/oracle/bts1248.res.oracle b/tests/slicing/oracle/bts1248.res.oracle index d3bfd423511d8ebb1a763a8e12a3e3d8dcc25d52..b4b9319420c43c3df8f634653a3d2b2ed680c6c8 100644 --- a/tests/slicing/oracle/bts1248.res.oracle +++ b/tests/slicing/oracle/bts1248.res.oracle @@ -24,13 +24,12 @@ [slicing] applying 0 actions... [sparecode] remove unused global declarations from project 'p export tmp' [sparecode] removed unused global declarations in new project 'p export' -[value] Analyzing a complete application starting at f -[value] Computing initial state -[value] Initial state computed -[value:initial-state] Values of globals at initialization - -[value] Recording results for f -[value] done for function f -[value] ====== VALUES COMPUTED ====== -[value:final-states] Values at end of function f: - +/* Generated by Frama-C */ +void f(void) +{ + return; +} + + +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_0_bts1248.i (no preprocessing) diff --git a/tests/slicing/oracle/bts1445.0.res.oracle b/tests/slicing/oracle/bts1445.0.res.oracle index 458c96da044adcecbf717176b59b04f2bccc91f2..e0b164f0d3eb41731cdc86875189791ad3279fd4 100644 --- a/tests/slicing/oracle/bts1445.0.res.oracle +++ b/tests/slicing/oracle/bts1445.0.res.oracle @@ -32,3 +32,5 @@ void main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_0_bts1445.i (no preprocessing) diff --git a/tests/slicing/oracle/bts1445.1.res.oracle b/tests/slicing/oracle/bts1445.1.res.oracle index eea903b24942decb5a5ddead012d9650658c32a9..b59b96293e3e076103a85dabec42d62d0e8b724b 100644 --- a/tests/slicing/oracle/bts1445.1.res.oracle +++ b/tests/slicing/oracle/bts1445.1.res.oracle @@ -32,3 +32,5 @@ void f(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_1_bts1445.i (no preprocessing) diff --git a/tests/slicing/oracle/bts1684.res.oracle b/tests/slicing/oracle/bts1684.res.oracle index a1e0c15087ffbb8c2b1bc3c940b2aea9eefcf1b0..9b5660c3bbe2fa594991d665fafd14c108617594 100644 --- a/tests/slicing/oracle/bts1684.res.oracle +++ b/tests/slicing/oracle/bts1684.res.oracle @@ -59,4 +59,6 @@ int main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_0_bts1684.i (no preprocessing) [kernel] writing journal in file `./frama_c_journal.ml'. diff --git a/tests/slicing/oracle/bts1768.res.oracle b/tests/slicing/oracle/bts1768.res.oracle index f254956c4e9e7a8f5d8cc6f7142a6db74f42d934..850c45c1100b19f8d92a52aec93185a6208f9912 100644 --- a/tests/slicing/oracle/bts1768.res.oracle +++ b/tests/slicing/oracle/bts1768.res.oracle @@ -304,3 +304,5 @@ void main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_0_bts1768.i (no preprocessing) diff --git a/tests/slicing/oracle/bts179.0.res.oracle b/tests/slicing/oracle/bts179.0.res.oracle index ef7818ab88d59e22c1f6ed4bb27498e13dc73f61..1da7fc0cbc32b2f74c8d237df71cca26b58508b3 100644 --- a/tests/slicing/oracle/bts179.0.res.oracle +++ b/tests/slicing/oracle/bts179.0.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/bts179.c (with preprocessing) +[kernel] Parsing tests/slicing/bts179.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at main [value] Computing initial state @@ -9,7 +9,7 @@ X ∈ {0} Y ∈ {0} [value] computing for function g <- main. - Called from tests/slicing/bts179.c:16. + Called from tests/slicing/bts179.i:16. [value] Recording results for g [value] Done for function g [value] Recording results for main @@ -56,3 +56,5 @@ int main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_0_bts179.i (no preprocessing) diff --git a/tests/slicing/oracle/bts179.1.res.oracle b/tests/slicing/oracle/bts179.1.res.oracle index 25b81cd3326640f908d2b662d7ab984e3edb9a9e..d059760dadba80f91b4026b965b42faf4ee2ad06 100644 --- a/tests/slicing/oracle/bts179.1.res.oracle +++ b/tests/slicing/oracle/bts179.1.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/bts179.c (with preprocessing) +[kernel] Parsing tests/slicing/bts179.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at main [value] Computing initial state @@ -9,7 +9,7 @@ X ∈ {0} Y ∈ {0} [value] computing for function g <- main. - Called from tests/slicing/bts179.c:16. + Called from tests/slicing/bts179.i:16. [value] Recording results for g [value] Done for function g [value] Recording results for main @@ -55,3 +55,5 @@ void main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_1_bts179.i (no preprocessing) diff --git a/tests/slicing/oracle/bts179.2.res.oracle b/tests/slicing/oracle/bts179.2.res.oracle index 5ff0beb5eea5ecdbfb58a23885edc4cab228c5e3..a4eb1a88df2e3bec8fe0b1e8c613c9514e602f73 100644 --- a/tests/slicing/oracle/bts179.2.res.oracle +++ b/tests/slicing/oracle/bts179.2.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/bts179.c (with preprocessing) +[kernel] Parsing tests/slicing/bts179.i (no preprocessing) [sparecode] remove unused code... [value] Analyzing a complete application starting at main [value] Computing initial state @@ -9,7 +9,7 @@ X ∈ {0} Y ∈ {0} [value] computing for function g <- main. - Called from tests/slicing/bts179.c:16. + Called from tests/slicing/bts179.i:16. [value] Recording results for g [value] Done for function g [value] Recording results for main diff --git a/tests/slicing/oracle/bts283.res.oracle b/tests/slicing/oracle/bts283.res.oracle index 36512c13be545b409e80fe110d4b68ee5ede6c08..a6fef5ebb719f4a7ee5d6665e751156db82c2d45 100644 --- a/tests/slicing/oracle/bts283.res.oracle +++ b/tests/slicing/oracle/bts283.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/bts283.c (with preprocessing) +[kernel] Parsing tests/slicing/bts283.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at main [value] Computing initial state @@ -11,28 +11,28 @@ X ∈ {0} Y ∈ {0} [value] computing for function f <- main. - Called from tests/slicing/bts283.c:33. -tests/slicing/bts283.c:9:[value] function f: precondition got status valid. -tests/slicing/bts283.c:10:[value] function f: postcondition got status valid. + Called from tests/slicing/bts283.i:33. +tests/slicing/bts283.i:9:[value] function f: precondition got status valid. +tests/slicing/bts283.i:10:[value] function f: postcondition got status valid. [value] Recording results for f [value] Done for function f [value] computing for function g <- main. - Called from tests/slicing/bts283.c:34. + Called from tests/slicing/bts283.i:34. [value] using specification for function g -tests/slicing/bts283.c:14:[value] function g: precondition got status valid. -tests/slicing/bts283.c:15:[value] function g: precondition got status valid. +tests/slicing/bts283.i:14:[value] function g: precondition got status valid. +tests/slicing/bts283.i:15:[value] function g: precondition got status valid. [value] Done for function g -tests/slicing/bts283.c:34:[value] warning: signed overflow. assert z+tmp ≤ 2147483647; +tests/slicing/bts283.i:34:[value] warning: signed overflow. assert z+tmp ≤ 2147483647; (tmp from g(1, 2)) [value] computing for function k <- main. - Called from tests/slicing/bts283.c:35. -tests/slicing/bts283.c:21:[value] function k: precondition got status valid. -tests/slicing/bts283.c:27:[value] warning: signed overflow. assert Y+1 ≤ 2147483647; -tests/slicing/bts283.c:22:[value] function k: postcondition got status valid. -tests/slicing/bts283.c:23:[value] warning: function k: postcondition got status unknown. + Called from tests/slicing/bts283.i:35. +tests/slicing/bts283.i:21:[value] function k: precondition got status valid. +tests/slicing/bts283.i:27:[value] warning: signed overflow. assert Y+1 ≤ 2147483647; +tests/slicing/bts283.i:22:[value] function k: postcondition got status valid. +tests/slicing/bts283.i:23:[value] warning: function k: postcondition got status unknown. [value] Recording results for k [value] Done for function k -tests/slicing/bts283.c:36:[value] warning: signed overflow. assert X+z ≤ 2147483647; +tests/slicing/bts283.i:36:[value] warning: signed overflow. assert X+z ≤ 2147483647; [value] Recording results for main [value] done for function main [slicing] making slicing project 'Slicing'... @@ -99,3 +99,5 @@ int main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_0_bts283.i (no preprocessing) diff --git a/tests/slicing/oracle/bts326.res.oracle b/tests/slicing/oracle/bts326.res.oracle index 4ef6d50dfa3335bf545d46562d3ca7f319b6723d..6d4564973106959949b16353dc021fb157dbd4b5 100644 --- a/tests/slicing/oracle/bts326.res.oracle +++ b/tests/slicing/oracle/bts326.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/bts326.c (with preprocessing) +[kernel] Parsing tests/slicing/bts326.i (no preprocessing) [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed @@ -7,15 +7,15 @@ t[0..1] ∈ {0} r ∈ {0} [value] computing for function g <- main. - Called from tests/slicing/bts326.c:17. + Called from tests/slicing/bts326.i:17. [value] computing for function f <- g <- main. - Called from tests/slicing/bts326.c:12. + Called from tests/slicing/bts326.i:12. [value] Recording results for f [from] Computing for function f [from] Done for function f [value] Done for function f [value] computing for function f <- g <- main. - Called from tests/slicing/bts326.c:13. + Called from tests/slicing/bts326.i:13. [value] Recording results for f [from] Computing for function f [from] Done for function f @@ -29,11 +29,11 @@ [from] Done for function main [value] done for function main [from] ====== DISPLAYING CALLWISE DEPENDENCIES ====== -[from] call to f at tests/slicing/bts326.c:12 (by g): +[from] call to f at tests/slicing/bts326.i:12 (by g): t[0] FROM i -[from] call to f at tests/slicing/bts326.c:13 (by g): +[from] call to f at tests/slicing/bts326.i:13 (by g): t[1] FROM i -[from] call to g at tests/slicing/bts326.c:17 (by main): +[from] call to g at tests/slicing/bts326.i:17 (by main): t[0..1] FROM \nothing [from] entry point: t[0..1] FROM \nothing @@ -82,3 +82,5 @@ int main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_0_bts326.i (no preprocessing) diff --git a/tests/slicing/oracle/bts335.res.oracle b/tests/slicing/oracle/bts335.res.oracle index 20699b1bf54d3cb4c3fc9c1f6cc4860032b783c1..3242f8a7f94f93e10d3488be271361afe4c4b6fc 100644 --- a/tests/slicing/oracle/bts335.res.oracle +++ b/tests/slicing/oracle/bts335.res.oracle @@ -1,14 +1,14 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/bts335.c (with preprocessing) +[kernel] Parsing tests/slicing/bts335.i (no preprocessing) [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed [value:initial-state] Values of globals at initialization T[0..1] ∈ {0} [value] computing for function g <- main. - Called from tests/slicing/bts335.c:12. + Called from tests/slicing/bts335.i:12. [value] computing for function f <- g <- main. - Called from tests/slicing/bts335.c:11. + Called from tests/slicing/bts335.i:11. [value] Recording results for f [from] Computing for function f [from] Done for function f @@ -18,7 +18,7 @@ [from] Done for function g [value] Done for function g [value] computing for function f <- main. - Called from tests/slicing/bts335.c:12. + Called from tests/slicing/bts335.i:12. [value] Recording results for f [from] Computing for function f [from] Done for function f @@ -28,11 +28,11 @@ [from] Done for function main [value] done for function main [from] ====== DISPLAYING CALLWISE DEPENDENCIES ====== -[from] call to f at tests/slicing/bts335.c:11 (by g): +[from] call to f at tests/slicing/bts335.i:11 (by g): T[0] FROM T[0]; i -[from] call to g at tests/slicing/bts335.c:12 (by main): +[from] call to g at tests/slicing/bts335.i:12 (by main): T[0] FROM T[0] -[from] call to f at tests/slicing/bts335.c:12 (by main): +[from] call to f at tests/slicing/bts335.i:12 (by main): T[1] FROM T[1]; i [from] entry point: T[0] FROM T[0]; c (and SELF) @@ -57,3 +57,27 @@ [slicing] applying 0 actions... [sparecode] remove unused global declarations from project 'Slicing export tmp' [sparecode] removed unused global declarations in new project 'Slicing export' +/* Generated by Frama-C */ +int T[2] = {0, 0}; +void f_slice_1(int i) +{ + (T[i]) ++; + return; +} + +void g_slice_1(void) +{ + f_slice_1(0); + /*@ slice pragma expr T[0]; */ ; + return; +} + +void main(int c) +{ + if (c) g_slice_1(); + return; +} + + +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_0_bts335.i (no preprocessing) diff --git a/tests/slicing/oracle/bts335b.res.oracle b/tests/slicing/oracle/bts335b.res.oracle index b40325c6d0cb72e5162fc9c8ac59e32eeb17316d..63d633929868aba5594895236b38b244f41ddfd9 100644 --- a/tests/slicing/oracle/bts335b.res.oracle +++ b/tests/slicing/oracle/bts335b.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/bts335b.c (with preprocessing) +[kernel] Parsing tests/slicing/bts335b.i (no preprocessing) [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed @@ -7,10 +7,10 @@ X ∈ {0} Y ∈ {0} [value] computing for function f <- main. - Called from tests/slicing/bts335b.c:20. -tests/slicing/bts335b.c:16:[value] warning: signed overflow. assert z+1 ≤ 2147483647; + Called from tests/slicing/bts335b.i:20. +tests/slicing/bts335b.i:16:[value] warning: signed overflow. assert z+1 ≤ 2147483647; [value] computing for function g <- f <- main. - Called from tests/slicing/bts335b.c:17. + Called from tests/slicing/bts335b.i:17. [value] Recording results for g [from] Computing for function g [from] Done for function g @@ -19,31 +19,31 @@ tests/slicing/bts335b.c:16:[value] warning: signed overflow. assert z+1 ≤ 2147 [from] Computing for function f [from] Done for function f [value] Done for function f -tests/slicing/bts335b.c:21:[value] warning: signed overflow. assert j+1 ≤ 2147483647; +tests/slicing/bts335b.i:21:[value] warning: signed overflow. assert j+1 ≤ 2147483647; [value] computing for function g <- main. - Called from tests/slicing/bts335b.c:22. + Called from tests/slicing/bts335b.i:22. [value] Recording results for g [from] Computing for function g [from] Done for function g [value] Done for function g -tests/slicing/bts335b.c:22:[value] warning: signed overflow. assert -2147483648 ≤ r+tmp_0; +tests/slicing/bts335b.i:22:[value] warning: signed overflow. assert -2147483648 ≤ r+tmp_0; (tmp_0 from g(2, w, b, j)) -tests/slicing/bts335b.c:22:[value] warning: signed overflow. assert r+tmp_0 ≤ 2147483647; +tests/slicing/bts335b.i:22:[value] warning: signed overflow. assert r+tmp_0 ≤ 2147483647; (tmp_0 from g(2, w, b, j)) [value] Recording results for main [from] Computing for function main [from] Done for function main [value] done for function main [from] ====== DISPLAYING CALLWISE DEPENDENCIES ====== -[from] call to g at tests/slicing/bts335b.c:17 (by f): +[from] call to g at tests/slicing/bts335b.i:17 (by f): X FROM c; x Y FROM c; x \result FROM c; x -[from] call to f at tests/slicing/bts335b.c:20 (by main): +[from] call to f at tests/slicing/bts335b.i:20 (by main): X FROM c; x Y FROM c; x \result FROM c; x -[from] call to g at tests/slicing/bts335b.c:22 (by main): +[from] call to g at tests/slicing/bts335b.i:22 (by main): X FROM c; y Y FROM c; y \result FROM c; y @@ -126,3 +126,5 @@ int main(int v, int w, int a, int b, int i, int j) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_0_bts335b.i (no preprocessing) diff --git a/tests/slicing/oracle/bts336.0.res.oracle b/tests/slicing/oracle/bts336.0.res.oracle index e48fa1d34a682c4fd74120c4773fe0f000ff4b81..a0961581cac237b91d9841e970cd1d0533512b72 100644 --- a/tests/slicing/oracle/bts336.0.res.oracle +++ b/tests/slicing/oracle/bts336.0.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/bts336.c (with preprocessing) +[kernel] Parsing tests/slicing/bts336.i (no preprocessing) [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed @@ -7,13 +7,13 @@ T[0..9] ∈ {0} x5 ∈ {0} [value] computing for function f <- main. - Called from tests/slicing/bts336.c:20. + Called from tests/slicing/bts336.i:20. [value] Recording results for f [from] Computing for function f [from] Done for function f [value] Done for function f [value] computing for function f <- main. - Called from tests/slicing/bts336.c:21. + Called from tests/slicing/bts336.i:21. [value] Recording results for f [from] Computing for function f [from] Done for function f @@ -23,10 +23,10 @@ [from] Done for function main [value] done for function main [from] ====== DISPLAYING CALLWISE DEPENDENCIES ====== -[from] call to f at tests/slicing/bts336.c:20 (by main): +[from] call to f at tests/slicing/bts336.i:20 (by main): T[1] FROM T[1]; i \result FROM T[1]; i -[from] call to f at tests/slicing/bts336.c:21 (by main): +[from] call to f at tests/slicing/bts336.i:21 (by main): T[2] FROM T[2]; i \result FROM T[2]; i [from] entry point: @@ -70,3 +70,5 @@ int main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_0_bts336.i (no preprocessing) diff --git a/tests/slicing/oracle/bts336.1.res.oracle b/tests/slicing/oracle/bts336.1.res.oracle index d79b6c88f4216e2a8e756a9868be402170a57969..0c17ca100c4d9262d59af31c1747d821be9bcffe 100644 --- a/tests/slicing/oracle/bts336.1.res.oracle +++ b/tests/slicing/oracle/bts336.1.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/bts336.c (with preprocessing) +[kernel] Parsing tests/slicing/bts336.i (no preprocessing) [value] Analyzing a complete application starting at main2 [value] Computing initial state [value] Initial state computed @@ -7,13 +7,13 @@ T[0..9] ∈ {0} x5 ∈ {0} [value] computing for function f2 <- main2. - Called from tests/slicing/bts336.c:35. + Called from tests/slicing/bts336.i:35. [value] Recording results for f2 [from] Computing for function f2 [from] Done for function f2 [value] Done for function f2 [value] computing for function f2 <- main2. - Called from tests/slicing/bts336.c:36. + Called from tests/slicing/bts336.i:36. [value] Recording results for f2 [from] Computing for function f2 [from] Done for function f2 @@ -23,9 +23,9 @@ [from] Done for function main2 [value] done for function main2 [from] ====== DISPLAYING CALLWISE DEPENDENCIES ====== -[from] call to f2 at tests/slicing/bts336.c:35 (by main2): +[from] call to f2 at tests/slicing/bts336.i:35 (by main2): T[1] FROM i -[from] call to f2 at tests/slicing/bts336.c:36 (by main2): +[from] call to f2 at tests/slicing/bts336.i:36 (by main2): T[2] FROM i [from] entry point: T[1..2] FROM \nothing @@ -65,3 +65,5 @@ int main2(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_1_bts336.i (no preprocessing) diff --git a/tests/slicing/oracle/bts336.2.res.oracle b/tests/slicing/oracle/bts336.2.res.oracle index 254cdc8c5f4a62086af6684a15dc18dada52e50f..35b332982a881ee93d20966fec3c8cf7d047092e 100644 --- a/tests/slicing/oracle/bts336.2.res.oracle +++ b/tests/slicing/oracle/bts336.2.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/bts336.c (with preprocessing) +[kernel] Parsing tests/slicing/bts336.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at main3 [value] Computing initial state @@ -8,15 +8,15 @@ T[0..9] ∈ {0} x5 ∈ {0} [value] computing for function f3 <- main3. - Called from tests/slicing/bts336.c:53. + Called from tests/slicing/bts336.i:53. [value] Recording results for f3 [value] Done for function f3 [value] computing for function f3 <- main3. - Called from tests/slicing/bts336.c:54. + Called from tests/slicing/bts336.i:54. [value] Recording results for f3 [value] Done for function f3 [value] computing for function f3 <- main3. - Called from tests/slicing/bts336.c:55. + Called from tests/slicing/bts336.i:55. [value] Recording results for f3 [value] Done for function f3 [value] Recording results for main3 @@ -61,3 +61,5 @@ int main3(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_2_bts336.i (no preprocessing) diff --git a/tests/slicing/oracle/bts336.3.res.oracle b/tests/slicing/oracle/bts336.3.res.oracle index dd27402011e1489b95d517a819e2e3f8f299ee94..c1cbb2bb60cb0c38f3c152d98a68da8049354cb4 100644 --- a/tests/slicing/oracle/bts336.3.res.oracle +++ b/tests/slicing/oracle/bts336.3.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/bts336.c (with preprocessing) +[kernel] Parsing tests/slicing/bts336.i (no preprocessing) [value] Analyzing a complete application starting at main3 [value] Computing initial state [value] Initial state computed @@ -7,19 +7,19 @@ T[0..9] ∈ {0} x5 ∈ {0} [value] computing for function f3 <- main3. - Called from tests/slicing/bts336.c:53. + Called from tests/slicing/bts336.i:53. [value] Recording results for f3 [from] Computing for function f3 [from] Done for function f3 [value] Done for function f3 [value] computing for function f3 <- main3. - Called from tests/slicing/bts336.c:54. + Called from tests/slicing/bts336.i:54. [value] Recording results for f3 [from] Computing for function f3 [from] Done for function f3 [value] Done for function f3 [value] computing for function f3 <- main3. - Called from tests/slicing/bts336.c:55. + Called from tests/slicing/bts336.i:55. [value] Recording results for f3 [from] Computing for function f3 [from] Done for function f3 @@ -29,11 +29,11 @@ [from] Done for function main3 [value] done for function main3 [from] ====== DISPLAYING CALLWISE DEPENDENCIES ====== -[from] call to f3 at tests/slicing/bts336.c:53 (by main3): +[from] call to f3 at tests/slicing/bts336.i:53 (by main3): a FROM p; a -[from] call to f3 at tests/slicing/bts336.c:54 (by main3): +[from] call to f3 at tests/slicing/bts336.i:54 (by main3): b FROM p; b -[from] call to f3 at tests/slicing/bts336.c:55 (by main3): +[from] call to f3 at tests/slicing/bts336.i:55 (by main3): c FROM p; c [from] entry point: \result FROM \nothing @@ -85,3 +85,5 @@ int main3(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_3_bts336.i (no preprocessing) diff --git a/tests/slicing/oracle/bts336.4.res.oracle b/tests/slicing/oracle/bts336.4.res.oracle index 4d3f32fe1c50dac9829ad34d85c45a9f1e88be2d..b66c7e82fcbc181ef7b4cd344d2e7a0f824e05df 100644 --- a/tests/slicing/oracle/bts336.4.res.oracle +++ b/tests/slicing/oracle/bts336.4.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/bts336.c (with preprocessing) +[kernel] Parsing tests/slicing/bts336.i (no preprocessing) [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed @@ -7,13 +7,13 @@ T[0..9] ∈ {0} x5 ∈ {0} [value] computing for function f <- main. - Called from tests/slicing/bts336.c:20. + Called from tests/slicing/bts336.i:20. [value] Recording results for f [from] Computing for function f [from] Done for function f [value] Done for function f [value] computing for function f <- main. - Called from tests/slicing/bts336.c:21. + Called from tests/slicing/bts336.i:21. [value] Recording results for f [from] Computing for function f [from] Done for function f @@ -23,10 +23,10 @@ [from] Done for function main [value] done for function main [from] ====== DISPLAYING CALLWISE DEPENDENCIES ====== -[from] call to f at tests/slicing/bts336.c:20 (by main): +[from] call to f at tests/slicing/bts336.i:20 (by main): T[1] FROM T[1]; i \result FROM T[1]; i -[from] call to f at tests/slicing/bts336.c:21 (by main): +[from] call to f at tests/slicing/bts336.i:21 (by main): T[2] FROM T[2]; i \result FROM T[2]; i [from] entry point: @@ -69,3 +69,5 @@ int main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_4_bts336.i (no preprocessing) diff --git a/tests/slicing/oracle/bts336.5.res.oracle b/tests/slicing/oracle/bts336.5.res.oracle index 729776b22b7aa3826ba003210e49b84a348fdc5d..41dd0bb3cebe6c8b3c5597cb7805ed2aec8c15cf 100644 --- a/tests/slicing/oracle/bts336.5.res.oracle +++ b/tests/slicing/oracle/bts336.5.res.oracle @@ -1,153 +1,153 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/bts336.c (with preprocessing) +[kernel] Parsing tests/slicing/bts336.i (no preprocessing) [value] Analyzing a complete application starting at main4 [value] Computing initial state [value] Initial state computed [value:initial-state] Values of globals at initialization T[0..9] ∈ {0} x5 ∈ {0} -tests/slicing/bts336.c:77:[value] entering loop for the first time +tests/slicing/bts336.i:77:[value] entering loop for the first time [value] computing for function f4 <- main4. - Called from tests/slicing/bts336.c:78. + Called from tests/slicing/bts336.i:78. [value] Recording results for f4 [from] Computing for function f4 [from] Done for function f4 [value] Done for function f4 [value] computing for function f4 <- main4. - Called from tests/slicing/bts336.c:79. + Called from tests/slicing/bts336.i:79. [value] Recording results for f4 [from] Computing for function f4 [from] Done for function f4 [value] Done for function f4 [value] computing for function f4 <- main4. - Called from tests/slicing/bts336.c:80. + Called from tests/slicing/bts336.i:80. [value] Recording results for f4 [from] Computing for function f4 [from] Done for function f4 [value] Done for function f4 [value] computing for function f4 <- main4. - Called from tests/slicing/bts336.c:81. + Called from tests/slicing/bts336.i:81. [value] Recording results for f4 [from] Computing for function f4 [from] Done for function f4 [value] Done for function f4 [value] computing for function f4 <- main4. - Called from tests/slicing/bts336.c:82. + Called from tests/slicing/bts336.i:82. [value] Recording results for f4 [from] Computing for function f4 [from] Done for function f4 [value] Done for function f4 [value] computing for function f4 <- main4. - Called from tests/slicing/bts336.c:78. + Called from tests/slicing/bts336.i:78. [value] Recording results for f4 [from] Computing for function f4 [from] Done for function f4 [value] Done for function f4 [value] computing for function f4 <- main4. - Called from tests/slicing/bts336.c:79. + Called from tests/slicing/bts336.i:79. [value] Recording results for f4 [from] Computing for function f4 [from] Done for function f4 [value] Done for function f4 [value] computing for function f4 <- main4. - Called from tests/slicing/bts336.c:80. + Called from tests/slicing/bts336.i:80. [value] Recording results for f4 [from] Computing for function f4 [from] Done for function f4 [value] Done for function f4 [value] computing for function f4 <- main4. - Called from tests/slicing/bts336.c:81. + Called from tests/slicing/bts336.i:81. [value] Recording results for f4 [from] Computing for function f4 [from] Done for function f4 [value] Done for function f4 [value] computing for function f4 <- main4. - Called from tests/slicing/bts336.c:82. + Called from tests/slicing/bts336.i:82. [value] Recording results for f4 [from] Computing for function f4 [from] Done for function f4 [value] Done for function f4 [value] computing for function f4 <- main4. - Called from tests/slicing/bts336.c:78. + Called from tests/slicing/bts336.i:78. [value] Recording results for f4 [from] Computing for function f4 [from] Done for function f4 [value] Done for function f4 [value] computing for function f4 <- main4. - Called from tests/slicing/bts336.c:79. + Called from tests/slicing/bts336.i:79. [value] Recording results for f4 [from] Computing for function f4 [from] Done for function f4 [value] Done for function f4 [value] computing for function f4 <- main4. - Called from tests/slicing/bts336.c:80. + Called from tests/slicing/bts336.i:80. [value] Recording results for f4 [from] Computing for function f4 [from] Done for function f4 [value] Done for function f4 [value] computing for function f4 <- main4. - Called from tests/slicing/bts336.c:81. + Called from tests/slicing/bts336.i:81. [value] Recording results for f4 [from] Computing for function f4 [from] Done for function f4 [value] Done for function f4 [value] computing for function f4 <- main4. - Called from tests/slicing/bts336.c:82. + Called from tests/slicing/bts336.i:82. [value] Recording results for f4 [from] Computing for function f4 [from] Done for function f4 [value] Done for function f4 [value] computing for function f4 <- main4. - Called from tests/slicing/bts336.c:78. -tests/slicing/bts336.c:62:[value] warning: signed overflow. assert *p+1 ≤ 2147483647; -tests/slicing/bts336.c:63:[value] warning: signed overflow. assert *q+1 ≤ 2147483647; + Called from tests/slicing/bts336.i:78. +tests/slicing/bts336.i:62:[value] warning: signed overflow. assert *p+1 ≤ 2147483647; +tests/slicing/bts336.i:63:[value] warning: signed overflow. assert *q+1 ≤ 2147483647; [value] Recording results for f4 [from] Computing for function f4 [from] Done for function f4 [value] Done for function f4 [value] computing for function f4 <- main4. - Called from tests/slicing/bts336.c:79. + Called from tests/slicing/bts336.i:79. [value] Recording results for f4 [from] Computing for function f4 [from] Done for function f4 [value] Done for function f4 [value] computing for function f4 <- main4. - Called from tests/slicing/bts336.c:80. + Called from tests/slicing/bts336.i:80. [value] Recording results for f4 [from] Computing for function f4 [from] Done for function f4 [value] Done for function f4 [value] computing for function f4 <- main4. - Called from tests/slicing/bts336.c:81. + Called from tests/slicing/bts336.i:81. [value] Recording results for f4 [from] Computing for function f4 [from] Done for function f4 [value] Done for function f4 [value] computing for function f4 <- main4. - Called from tests/slicing/bts336.c:82. + Called from tests/slicing/bts336.i:82. [value] Recording results for f4 [from] Computing for function f4 [from] Done for function f4 [value] Done for function f4 -tests/slicing/bts336.c:84:[value] warning: signed overflow. assert a2+b4 ≤ 2147483647; +tests/slicing/bts336.i:84:[value] warning: signed overflow. assert a2+b4 ≤ 2147483647; [value] Recording results for main4 [from] Computing for function main4 [from] Done for function main4 [value] done for function main4 [from] ====== DISPLAYING CALLWISE DEPENDENCIES ====== -[from] call to f4 at tests/slicing/bts336.c:78 (by main4): +[from] call to f4 at tests/slicing/bts336.i:78 (by main4): a1 FROM p; a1 b1 FROM q; b1 -[from] call to f4 at tests/slicing/bts336.c:79 (by main4): +[from] call to f4 at tests/slicing/bts336.i:79 (by main4): a2 FROM p; a2 b2 FROM q; b2 -[from] call to f4 at tests/slicing/bts336.c:80 (by main4): +[from] call to f4 at tests/slicing/bts336.i:80 (by main4): a3 FROM p; a3 b3 FROM q; b3 -[from] call to f4 at tests/slicing/bts336.c:81 (by main4): +[from] call to f4 at tests/slicing/bts336.i:81 (by main4): a4 FROM p; a4 b4 FROM q; b4 -[from] call to f4 at tests/slicing/bts336.c:82 (by main4): +[from] call to f4 at tests/slicing/bts336.i:82 (by main4): a5 FROM p; a5 b5 FROM q; b5 [from] entry point: @@ -198,3 +198,5 @@ int main4(int volatile c) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_5_bts336.i (no preprocessing) diff --git a/tests/slicing/oracle/bts336.6.res.oracle b/tests/slicing/oracle/bts336.6.res.oracle index 7f3a0b196aa82dde22a6234cd2c0e6f76ee1e1dd..158af864081911fe9a514d31be9bd624e920e835 100644 --- a/tests/slicing/oracle/bts336.6.res.oracle +++ b/tests/slicing/oracle/bts336.6.res.oracle @@ -1,153 +1,153 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/bts336.c (with preprocessing) +[kernel] Parsing tests/slicing/bts336.i (no preprocessing) [value] Analyzing a complete application starting at main4 [value] Computing initial state [value] Initial state computed [value:initial-state] Values of globals at initialization T[0..9] ∈ {0} x5 ∈ {0} -tests/slicing/bts336.c:77:[value] entering loop for the first time +tests/slicing/bts336.i:77:[value] entering loop for the first time [value] computing for function f4 <- main4. - Called from tests/slicing/bts336.c:78. + Called from tests/slicing/bts336.i:78. [value] Recording results for f4 [from] Computing for function f4 [from] Done for function f4 [value] Done for function f4 [value] computing for function f4 <- main4. - Called from tests/slicing/bts336.c:79. + Called from tests/slicing/bts336.i:79. [value] Recording results for f4 [from] Computing for function f4 [from] Done for function f4 [value] Done for function f4 [value] computing for function f4 <- main4. - Called from tests/slicing/bts336.c:80. + Called from tests/slicing/bts336.i:80. [value] Recording results for f4 [from] Computing for function f4 [from] Done for function f4 [value] Done for function f4 [value] computing for function f4 <- main4. - Called from tests/slicing/bts336.c:81. + Called from tests/slicing/bts336.i:81. [value] Recording results for f4 [from] Computing for function f4 [from] Done for function f4 [value] Done for function f4 [value] computing for function f4 <- main4. - Called from tests/slicing/bts336.c:82. + Called from tests/slicing/bts336.i:82. [value] Recording results for f4 [from] Computing for function f4 [from] Done for function f4 [value] Done for function f4 [value] computing for function f4 <- main4. - Called from tests/slicing/bts336.c:78. + Called from tests/slicing/bts336.i:78. [value] Recording results for f4 [from] Computing for function f4 [from] Done for function f4 [value] Done for function f4 [value] computing for function f4 <- main4. - Called from tests/slicing/bts336.c:79. + Called from tests/slicing/bts336.i:79. [value] Recording results for f4 [from] Computing for function f4 [from] Done for function f4 [value] Done for function f4 [value] computing for function f4 <- main4. - Called from tests/slicing/bts336.c:80. + Called from tests/slicing/bts336.i:80. [value] Recording results for f4 [from] Computing for function f4 [from] Done for function f4 [value] Done for function f4 [value] computing for function f4 <- main4. - Called from tests/slicing/bts336.c:81. + Called from tests/slicing/bts336.i:81. [value] Recording results for f4 [from] Computing for function f4 [from] Done for function f4 [value] Done for function f4 [value] computing for function f4 <- main4. - Called from tests/slicing/bts336.c:82. + Called from tests/slicing/bts336.i:82. [value] Recording results for f4 [from] Computing for function f4 [from] Done for function f4 [value] Done for function f4 [value] computing for function f4 <- main4. - Called from tests/slicing/bts336.c:78. + Called from tests/slicing/bts336.i:78. [value] Recording results for f4 [from] Computing for function f4 [from] Done for function f4 [value] Done for function f4 [value] computing for function f4 <- main4. - Called from tests/slicing/bts336.c:79. + Called from tests/slicing/bts336.i:79. [value] Recording results for f4 [from] Computing for function f4 [from] Done for function f4 [value] Done for function f4 [value] computing for function f4 <- main4. - Called from tests/slicing/bts336.c:80. + Called from tests/slicing/bts336.i:80. [value] Recording results for f4 [from] Computing for function f4 [from] Done for function f4 [value] Done for function f4 [value] computing for function f4 <- main4. - Called from tests/slicing/bts336.c:81. + Called from tests/slicing/bts336.i:81. [value] Recording results for f4 [from] Computing for function f4 [from] Done for function f4 [value] Done for function f4 [value] computing for function f4 <- main4. - Called from tests/slicing/bts336.c:82. + Called from tests/slicing/bts336.i:82. [value] Recording results for f4 [from] Computing for function f4 [from] Done for function f4 [value] Done for function f4 [value] computing for function f4 <- main4. - Called from tests/slicing/bts336.c:78. -tests/slicing/bts336.c:62:[value] warning: signed overflow. assert *p+1 ≤ 2147483647; -tests/slicing/bts336.c:63:[value] warning: signed overflow. assert *q+1 ≤ 2147483647; + Called from tests/slicing/bts336.i:78. +tests/slicing/bts336.i:62:[value] warning: signed overflow. assert *p+1 ≤ 2147483647; +tests/slicing/bts336.i:63:[value] warning: signed overflow. assert *q+1 ≤ 2147483647; [value] Recording results for f4 [from] Computing for function f4 [from] Done for function f4 [value] Done for function f4 [value] computing for function f4 <- main4. - Called from tests/slicing/bts336.c:79. + Called from tests/slicing/bts336.i:79. [value] Recording results for f4 [from] Computing for function f4 [from] Done for function f4 [value] Done for function f4 [value] computing for function f4 <- main4. - Called from tests/slicing/bts336.c:80. + Called from tests/slicing/bts336.i:80. [value] Recording results for f4 [from] Computing for function f4 [from] Done for function f4 [value] Done for function f4 [value] computing for function f4 <- main4. - Called from tests/slicing/bts336.c:81. + Called from tests/slicing/bts336.i:81. [value] Recording results for f4 [from] Computing for function f4 [from] Done for function f4 [value] Done for function f4 [value] computing for function f4 <- main4. - Called from tests/slicing/bts336.c:82. + Called from tests/slicing/bts336.i:82. [value] Recording results for f4 [from] Computing for function f4 [from] Done for function f4 [value] Done for function f4 -tests/slicing/bts336.c:84:[value] warning: signed overflow. assert a2+b4 ≤ 2147483647; +tests/slicing/bts336.i:84:[value] warning: signed overflow. assert a2+b4 ≤ 2147483647; [value] Recording results for main4 [from] Computing for function main4 [from] Done for function main4 [value] done for function main4 [from] ====== DISPLAYING CALLWISE DEPENDENCIES ====== -[from] call to f4 at tests/slicing/bts336.c:78 (by main4): +[from] call to f4 at tests/slicing/bts336.i:78 (by main4): a1 FROM p; a1 b1 FROM q; b1 -[from] call to f4 at tests/slicing/bts336.c:79 (by main4): +[from] call to f4 at tests/slicing/bts336.i:79 (by main4): a2 FROM p; a2 b2 FROM q; b2 -[from] call to f4 at tests/slicing/bts336.c:80 (by main4): +[from] call to f4 at tests/slicing/bts336.i:80 (by main4): a3 FROM p; a3 b3 FROM q; b3 -[from] call to f4 at tests/slicing/bts336.c:81 (by main4): +[from] call to f4 at tests/slicing/bts336.i:81 (by main4): a4 FROM p; a4 b4 FROM q; b4 -[from] call to f4 at tests/slicing/bts336.c:82 (by main4): +[from] call to f4 at tests/slicing/bts336.i:82 (by main4): a5 FROM p; a5 b5 FROM q; b5 [from] entry point: @@ -199,3 +199,5 @@ int main4(int volatile c) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_6_bts336.i (no preprocessing) diff --git a/tests/slicing/oracle/bts336.7.res.oracle b/tests/slicing/oracle/bts336.7.res.oracle index 7e0451ad4458455d59e6232cbf783401cc2a6ee4..4543621518372699eb630ea396a5cfa5f5b05a9b 100644 --- a/tests/slicing/oracle/bts336.7.res.oracle +++ b/tests/slicing/oracle/bts336.7.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/bts336.c (with preprocessing) +[kernel] Parsing tests/slicing/bts336.i (no preprocessing) [value] Analyzing a complete application starting at main5 [value] Computing initial state [value] Initial state computed @@ -7,13 +7,13 @@ T[0..9] ∈ {0} x5 ∈ {0} [value] computing for function f5 <- main5. - Called from tests/slicing/bts336.c:98. + Called from tests/slicing/bts336.i:98. [value] Recording results for f5 [from] Computing for function f5 [from] Done for function f5 [value] Done for function f5 [value] computing for function f5 <- main5. - Called from tests/slicing/bts336.c:99. + Called from tests/slicing/bts336.i:99. [value] Recording results for f5 [from] Computing for function f5 [from] Done for function f5 @@ -23,10 +23,10 @@ [from] Done for function main5 [value] done for function main5 [from] ====== DISPLAYING CALLWISE DEPENDENCIES ====== -[from] call to f5 at tests/slicing/bts336.c:98 (by main5): +[from] call to f5 at tests/slicing/bts336.i:98 (by main5): x5 FROM q; b1 a1 FROM p; a1 -[from] call to f5 at tests/slicing/bts336.c:99 (by main5): +[from] call to f5 at tests/slicing/bts336.i:99 (by main5): x5 FROM q; a1 a2 FROM p; a2 [from] entry point: @@ -56,13 +56,13 @@ [value:initial-state] Values of globals at initialization [value] computing for function f5_slice_1 <- main5. - Called from tests/slicing/bts336.c:98. + Called from tests/slicing/bts336.i:98. [value] Recording results for f5_slice_1 [from] Computing for function f5_slice_1 [from] Done for function f5_slice_1 [value] Done for function f5_slice_1 [value] computing for function f5_slice_1 <- main5. - Called from tests/slicing/bts336.c:99. + Called from tests/slicing/bts336.i:99. [value] Recording results for f5_slice_1 [from] Computing for function f5_slice_1 [from] Done for function f5_slice_1 @@ -72,9 +72,9 @@ [from] Done for function main5 [value] done for function main5 [from] ====== DISPLAYING CALLWISE DEPENDENCIES ====== -[from] call to f5_slice_1 at tests/slicing/bts336.c:98 (by main5): +[from] call to f5_slice_1 at tests/slicing/bts336.i:98 (by main5): a1 FROM p; a1 -[from] call to f5_slice_1 at tests/slicing/bts336.c:99 (by main5): +[from] call to f5_slice_1 at tests/slicing/bts336.i:99 (by main5): a2 FROM p; a2 [from] entry point: \result FROM \nothing @@ -131,3 +131,5 @@ int main5(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_7_bts336.i (no preprocessing) diff --git a/tests/slicing/oracle/bts341.res.oracle b/tests/slicing/oracle/bts341.res.oracle index aa34973365621abefcf12d8d9e71e6abea779d72..7b92f971aff76f6b069999fe9d01126179ce1069 100644 --- a/tests/slicing/oracle/bts341.res.oracle +++ b/tests/slicing/oracle/bts341.res.oracle @@ -1,13 +1,13 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/bts341.c (with preprocessing) +[kernel] Parsing tests/slicing/bts341.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed [value:initial-state] Values of globals at initialization -tests/slicing/bts341.c:6:[value] entering loop for the first time -tests/slicing/bts341.c:7:[value] assertion got status valid. +tests/slicing/bts341.i:6:[value] entering loop for the first time +tests/slicing/bts341.i:7:[value] assertion got status valid. [value] Recording results for main [value] done for function main [slicing] making slicing project 'Slicing'... @@ -32,3 +32,5 @@ void main(int c) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_0_bts341.i (no preprocessing) diff --git a/tests/slicing/oracle/bts344.0.res.oracle b/tests/slicing/oracle/bts344.0.res.oracle index 18ea20ba613b915d06b296c1082157552bcc1b76..02d4c27596f851618fe571ad0d16e725e92e9157 100644 --- a/tests/slicing/oracle/bts344.0.res.oracle +++ b/tests/slicing/oracle/bts344.0.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/bts344.c (with preprocessing) +[kernel] Parsing tests/slicing/bts344.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at main [value] Computing initial state @@ -8,20 +8,20 @@ X ∈ {0} Y ∈ {0} [value] computing for function f <- main. - Called from tests/slicing/bts344.c:24. + Called from tests/slicing/bts344.i:24. [value] computing for function h <- f <- main. - Called from tests/slicing/bts344.c:21. + Called from tests/slicing/bts344.i:21. [value] Recording results for h [value] Done for function h [value] Recording results for f [value] Done for function f [value] computing for function h <- main. - Called from tests/slicing/bts344.c:25. + Called from tests/slicing/bts344.i:25. [value] Recording results for h [value] Done for function h [value] computing for function k <- main. - Called from tests/slicing/bts344.c:26. -tests/slicing/bts344.c:9:[value] function k: postcondition got status valid. + Called from tests/slicing/bts344.i:26. +tests/slicing/bts344.i:9:[value] function k: postcondition got status valid. [value] Recording results for k [value] Done for function k [value] Recording results for main @@ -99,3 +99,5 @@ int main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_0_bts344.i (no preprocessing) diff --git a/tests/slicing/oracle/bts344.1.res.oracle b/tests/slicing/oracle/bts344.1.res.oracle index 8c1d96ead48ec59fc59f6b2d6b0ef67bcc7321b8..d6a41fffb0e1994ec9f426fbdf38fd6fde602cc5 100644 --- a/tests/slicing/oracle/bts344.1.res.oracle +++ b/tests/slicing/oracle/bts344.1.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/bts344.c (with preprocessing) +[kernel] Parsing tests/slicing/bts344.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at main_bis [value] Computing initial state @@ -8,8 +8,8 @@ X ∈ {0} Y ∈ {0} [value] computing for function k <- main_bis. - Called from tests/slicing/bts344.c:32. -tests/slicing/bts344.c:9:[value] function k: postcondition got status valid. + Called from tests/slicing/bts344.i:32. +tests/slicing/bts344.i:9:[value] function k: postcondition got status valid. [value] Recording results for k [value] Done for function k [value] Recording results for main_bis @@ -53,3 +53,5 @@ int main_bis(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_1_bts344.i (no preprocessing) diff --git a/tests/slicing/oracle/bts345.0.res.oracle b/tests/slicing/oracle/bts345.0.res.oracle index 5664e42eefd233c60d55d78ae761f475b5c41569..f84289d31c616d4aac288543858f056d5217714b 100644 --- a/tests/slicing/oracle/bts345.0.res.oracle +++ b/tests/slicing/oracle/bts345.0.res.oracle @@ -1,22 +1,22 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/bts345.c (with preprocessing) +[kernel] Parsing tests/slicing/bts345.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at call_top [value] Computing initial state [value] Initial state computed [value:initial-state] Values of globals at initialization -tests/slicing/bts345.c:27:[value] warning: signed overflow. assert y+1 ≤ 2147483647; +tests/slicing/bts345.i:27:[value] warning: signed overflow. assert y+1 ≤ 2147483647; [value] computing for function top <- call_top. - Called from tests/slicing/bts345.c:28. -tests/slicing/bts345.c:21:[value] warning: signed overflow. assert x+1 ≤ 2147483647; + Called from tests/slicing/bts345.i:28. +tests/slicing/bts345.i:21:[value] warning: signed overflow. assert x+1 ≤ 2147483647; [value] computing for function called_by_top <- top <- call_top. - Called from tests/slicing/bts345.c:22. -tests/slicing/bts345.c:15:[value] warning: signed overflow. assert x+1 ≤ 2147483647; + Called from tests/slicing/bts345.i:22. +tests/slicing/bts345.i:15:[value] warning: signed overflow. assert x+1 ≤ 2147483647; [value] computing for function called_indirectly_by_top <- called_by_top <- top <- call_top. - Called from tests/slicing/bts345.c:16. -tests/slicing/bts345.c:10:[value] warning: signed overflow. assert x+1 ≤ 2147483647; + Called from tests/slicing/bts345.i:16. +tests/slicing/bts345.i:10:[value] warning: signed overflow. assert x+1 ≤ 2147483647; [value] Recording results for called_indirectly_by_top [value] Done for function called_indirectly_by_top [value] Recording results for called_by_top @@ -77,3 +77,5 @@ int call_top(int y) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_0_bts345.i (no preprocessing) diff --git a/tests/slicing/oracle/bts345.1.res.oracle b/tests/slicing/oracle/bts345.1.res.oracle index 88d1aff16d61b73df9608207dee782d1e190b3ab..00ccd96bce671a9182164a7b5978543331de79cc 100644 --- a/tests/slicing/oracle/bts345.1.res.oracle +++ b/tests/slicing/oracle/bts345.1.res.oracle @@ -1,18 +1,18 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/bts345.c (with preprocessing) +[kernel] Parsing tests/slicing/bts345.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at top [value] Computing initial state [value] Initial state computed [value:initial-state] Values of globals at initialization -tests/slicing/bts345.c:21:[value] warning: signed overflow. assert x+1 ≤ 2147483647; +tests/slicing/bts345.i:21:[value] warning: signed overflow. assert x+1 ≤ 2147483647; [value] computing for function called_by_top <- top. - Called from tests/slicing/bts345.c:22. -tests/slicing/bts345.c:15:[value] warning: signed overflow. assert x+1 ≤ 2147483647; + Called from tests/slicing/bts345.i:22. +tests/slicing/bts345.i:15:[value] warning: signed overflow. assert x+1 ≤ 2147483647; [value] computing for function called_indirectly_by_top <- called_by_top <- top. - Called from tests/slicing/bts345.c:16. -tests/slicing/bts345.c:10:[value] warning: signed overflow. assert x+1 ≤ 2147483647; + Called from tests/slicing/bts345.i:16. +tests/slicing/bts345.i:10:[value] warning: signed overflow. assert x+1 ≤ 2147483647; [value] Recording results for called_indirectly_by_top [value] Done for function called_indirectly_by_top [value] Recording results for called_by_top @@ -59,3 +59,5 @@ int top_orig(int x , ...) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_1_bts345.i (no preprocessing) diff --git a/tests/slicing/oracle/bts345.2.res.oracle b/tests/slicing/oracle/bts345.2.res.oracle index b163d9ef100163b2436e90c10a2410fcbcccd84b..1a0b91c731c612a56978f620f7b1268db3f963b0 100644 --- a/tests/slicing/oracle/bts345.2.res.oracle +++ b/tests/slicing/oracle/bts345.2.res.oracle @@ -1,22 +1,22 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/bts345.c (with preprocessing) +[kernel] Parsing tests/slicing/bts345.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at call_top [value] Computing initial state [value] Initial state computed [value:initial-state] Values of globals at initialization -tests/slicing/bts345.c:27:[value] warning: signed overflow. assert y+1 ≤ 2147483647; +tests/slicing/bts345.i:27:[value] warning: signed overflow. assert y+1 ≤ 2147483647; [value] computing for function top <- call_top. - Called from tests/slicing/bts345.c:28. -tests/slicing/bts345.c:21:[value] warning: signed overflow. assert x+1 ≤ 2147483647; + Called from tests/slicing/bts345.i:28. +tests/slicing/bts345.i:21:[value] warning: signed overflow. assert x+1 ≤ 2147483647; [value] computing for function called_by_top <- top <- call_top. - Called from tests/slicing/bts345.c:22. -tests/slicing/bts345.c:15:[value] warning: signed overflow. assert x+1 ≤ 2147483647; + Called from tests/slicing/bts345.i:22. +tests/slicing/bts345.i:15:[value] warning: signed overflow. assert x+1 ≤ 2147483647; [value] computing for function called_indirectly_by_top <- called_by_top <- top <- call_top. - Called from tests/slicing/bts345.c:16. -tests/slicing/bts345.c:10:[value] warning: signed overflow. assert x+1 ≤ 2147483647; + Called from tests/slicing/bts345.i:16. +tests/slicing/bts345.i:10:[value] warning: signed overflow. assert x+1 ≤ 2147483647; [value] Recording results for called_indirectly_by_top [value] Done for function called_indirectly_by_top [value] Recording results for called_by_top @@ -81,3 +81,5 @@ void call_top(int y) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_2_bts345.i (no preprocessing) diff --git a/tests/slicing/oracle/bts345.3.res.oracle b/tests/slicing/oracle/bts345.3.res.oracle index 01559377e94dfa9f808bddd751458eaa0cede373..5b330d8eab2625e802e0f7937a358adbd19929bc 100644 --- a/tests/slicing/oracle/bts345.3.res.oracle +++ b/tests/slicing/oracle/bts345.3.res.oracle @@ -1,18 +1,18 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/bts345.c (with preprocessing) +[kernel] Parsing tests/slicing/bts345.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at top [value] Computing initial state [value] Initial state computed [value:initial-state] Values of globals at initialization -tests/slicing/bts345.c:21:[value] warning: signed overflow. assert x+1 ≤ 2147483647; +tests/slicing/bts345.i:21:[value] warning: signed overflow. assert x+1 ≤ 2147483647; [value] computing for function called_by_top <- top. - Called from tests/slicing/bts345.c:22. -tests/slicing/bts345.c:15:[value] warning: signed overflow. assert x+1 ≤ 2147483647; + Called from tests/slicing/bts345.i:22. +tests/slicing/bts345.i:15:[value] warning: signed overflow. assert x+1 ≤ 2147483647; [value] computing for function called_indirectly_by_top <- called_by_top <- top. - Called from tests/slicing/bts345.c:16. -tests/slicing/bts345.c:10:[value] warning: signed overflow. assert x+1 ≤ 2147483647; + Called from tests/slicing/bts345.i:16. +tests/slicing/bts345.i:10:[value] warning: signed overflow. assert x+1 ≤ 2147483647; [value] Recording results for called_indirectly_by_top [value] Done for function called_indirectly_by_top [value] Recording results for called_by_top @@ -42,3 +42,29 @@ tests/slicing/bts345.c:10:[value] warning: signed overflow. assert x+1 ≤ 21474 [slicing] applying 0 actions... [sparecode] remove unused global declarations from project 'Slicing export tmp' [sparecode] removed unused global declarations in new project 'Slicing export' +/* Generated by Frama-C */ +int called_indirectly_by_top(int x) +{ + x ++; + return x; +} + +int called_by_top(int x) +{ + int z; + x ++; + z = called_indirectly_by_top(x); + return z; +} + +int top_orig(int x , ...) +{ + int z; + x ++; + z = called_by_top(x); + return z; +} + + +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_3_bts345.i (no preprocessing) diff --git a/tests/slicing/oracle/bts345.4.res.oracle b/tests/slicing/oracle/bts345.4.res.oracle index 859d8c4937574ff8393fdac52767ef46ff192997..d1110b4021c62e25941c85ef796d3e886d546877 100644 --- a/tests/slicing/oracle/bts345.4.res.oracle +++ b/tests/slicing/oracle/bts345.4.res.oracle @@ -1,22 +1,22 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/bts345.c (with preprocessing) +[kernel] Parsing tests/slicing/bts345.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at call_top [value] Computing initial state [value] Initial state computed [value:initial-state] Values of globals at initialization -tests/slicing/bts345.c:27:[value] warning: signed overflow. assert y+1 ≤ 2147483647; +tests/slicing/bts345.i:27:[value] warning: signed overflow. assert y+1 ≤ 2147483647; [value] computing for function top <- call_top. - Called from tests/slicing/bts345.c:28. -tests/slicing/bts345.c:21:[value] warning: signed overflow. assert x+1 ≤ 2147483647; + Called from tests/slicing/bts345.i:28. +tests/slicing/bts345.i:21:[value] warning: signed overflow. assert x+1 ≤ 2147483647; [value] computing for function called_by_top <- top <- call_top. - Called from tests/slicing/bts345.c:22. -tests/slicing/bts345.c:15:[value] warning: signed overflow. assert x+1 ≤ 2147483647; + Called from tests/slicing/bts345.i:22. +tests/slicing/bts345.i:15:[value] warning: signed overflow. assert x+1 ≤ 2147483647; [value] computing for function called_indirectly_by_top <- called_by_top <- top <- call_top. - Called from tests/slicing/bts345.c:16. -tests/slicing/bts345.c:10:[value] warning: signed overflow. assert x+1 ≤ 2147483647; + Called from tests/slicing/bts345.i:16. +tests/slicing/bts345.i:10:[value] warning: signed overflow. assert x+1 ≤ 2147483647; [value] Recording results for called_indirectly_by_top [value] Done for function called_indirectly_by_top [value] Recording results for called_by_top @@ -54,3 +54,37 @@ tests/slicing/bts345.c:10:[value] warning: signed overflow. assert x+1 ≤ 21474 [slicing] applying 0 actions... [sparecode] remove unused global declarations from project 'Slicing export tmp' [sparecode] removed unused global declarations in new project 'Slicing export' +/* Generated by Frama-C */ +int called_indirectly_by_top(int x) +{ + x ++; + return x; +} + +int called_by_top(int x) +{ + int z; + x ++; + z = called_indirectly_by_top(x); + return z; +} + +int top(int x , ...) +{ + int z; + x ++; + z = called_by_top(x); + return z; +} + +void call_top(int y) +{ + int z; + y ++; + z = top(y); + return; +} + + +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_4_bts345.i (no preprocessing) diff --git a/tests/slicing/oracle/bts679.res.oracle b/tests/slicing/oracle/bts679.res.oracle index 23a4ff912402973513fce69088e45e510d6771f2..3cf1ffd6dc8d81c64d1c92f347c8bdc3e2fc1439 100644 --- a/tests/slicing/oracle/bts679.res.oracle +++ b/tests/slicing/oracle/bts679.res.oracle @@ -39,3 +39,5 @@ int main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_0_bts679.i (no preprocessing) diff --git a/tests/slicing/oracle/bts679b.res.oracle b/tests/slicing/oracle/bts679b.res.oracle index 65b19e8ead60a7b142845d3e9c94070ec1815b0f..6c7fd9484a13f854a37a5bab9041850d57e05bda 100644 --- a/tests/slicing/oracle/bts679b.res.oracle +++ b/tests/slicing/oracle/bts679b.res.oracle @@ -37,3 +37,5 @@ void main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_0_bts679b.i (no preprocessing) diff --git a/tests/slicing/oracle/bts709.res.oracle b/tests/slicing/oracle/bts709.res.oracle index 93b72e236e5ad2f16bdc588c83c7421d5c5c5847..ef824f122427e222adf24c58db96b355630ab305 100644 --- a/tests/slicing/oracle/bts709.res.oracle +++ b/tests/slicing/oracle/bts709.res.oracle @@ -1,6 +1,6 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/bts709.c (with preprocessing) -tests/slicing/bts709.c:36:[kernel] warning: Calling undeclared function assert. Old style K&R code? +[kernel] Parsing tests/slicing/bts709.i (no preprocessing) +tests/slicing/bts709.i:36:[kernel] warning: Calling undeclared function assert. Old style K&R code? [slicing] slicing requests in progress... [value] Analyzing a complete application starting at main [value] Computing initial state @@ -9,41 +9,41 @@ tests/slicing/bts709.c:36:[kernel] warning: Calling undeclared function assert. inp1 IN {0} var1 IN {0} var2 IN {0} -tests/slicing/bts709.c:44:[value] entering loop for the first time +tests/slicing/bts709.i:44:[value] entering loop for the first time [value] computing for function inputsOf_testcase_func <- main. - Called from tests/slicing/bts709.c:45. + Called from tests/slicing/bts709.i:45. [value] computing for function nondet_int <- inputsOf_testcase_func <- main. - Called from tests/slicing/bts709.c:53. -tests/slicing/bts709.c:53:[kernel] warning: Neither code nor specification for function nondet_int, generating default assigns from the prototype + Called from tests/slicing/bts709.i:53. +tests/slicing/bts709.i:53:[kernel] warning: Neither code nor specification for function nondet_int, generating default assigns from the prototype [value] using specification for function nondet_int [value] Done for function nondet_int [value] computing for function nondet_int <- inputsOf_testcase_func <- main. - Called from tests/slicing/bts709.c:54. + Called from tests/slicing/bts709.i:54. [value] Done for function nondet_int [value] computing for function nondet_int <- inputsOf_testcase_func <- main. - Called from tests/slicing/bts709.c:55. + Called from tests/slicing/bts709.i:55. [value] Done for function nondet_int [value] Recording results for inputsOf_testcase_func [value] Done for function inputsOf_testcase_func [value] computing for function func <- main. - Called from tests/slicing/bts709.c:46. + Called from tests/slicing/bts709.i:46. [value] computing for function assert <- func <- main. - Called from tests/slicing/bts709.c:36. -tests/slicing/bts709.c:36:[kernel] warning: Neither code nor specification for function assert, generating default assigns from the prototype + Called from tests/slicing/bts709.i:36. +tests/slicing/bts709.i:36:[kernel] warning: Neither code nor specification for function assert, generating default assigns from the prototype [value] using specification for function assert [value] Done for function assert [value] Recording results for func [value] Done for function func [value] computing for function inputsOf_testcase_func <- main. - Called from tests/slicing/bts709.c:45. + Called from tests/slicing/bts709.i:45. [value] computing for function nondet_int <- inputsOf_testcase_func <- main. - Called from tests/slicing/bts709.c:53. + Called from tests/slicing/bts709.i:53. [value] Done for function nondet_int [value] computing for function nondet_int <- inputsOf_testcase_func <- main. - Called from tests/slicing/bts709.c:54. + Called from tests/slicing/bts709.i:54. [value] Done for function nondet_int [value] computing for function nondet_int <- inputsOf_testcase_func <- main. - Called from tests/slicing/bts709.c:55. + Called from tests/slicing/bts709.i:55. [value] Done for function nondet_int [value] Recording results for inputsOf_testcase_func [value] Done for function inputsOf_testcase_func @@ -127,3 +127,5 @@ void inputsOf_testcase_func_slice_1(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_0_bts709.i (no preprocessing) diff --git a/tests/slicing/oracle/bts808.res.oracle b/tests/slicing/oracle/bts808.res.oracle index 693840ae528abf25843bf0603ad43e0f2feb09de..24bcf3fe44b08a65c77929b64d5dc724e04f020c 100644 --- a/tests/slicing/oracle/bts808.res.oracle +++ b/tests/slicing/oracle/bts808.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/bts808.c (with preprocessing) +[kernel] Parsing tests/slicing/bts808.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at main [value] Computing initial state @@ -7,11 +7,11 @@ [value:initial-state] Values of globals at initialization [value] computing for function f0 <- main. - Called from tests/slicing/bts808.c:21. + Called from tests/slicing/bts808.i:21. [value] Recording results for f0 [value] Done for function f0 [value] computing for function f1 <- main. - Called from tests/slicing/bts808.c:21. + Called from tests/slicing/bts808.i:21. [value] Recording results for f1 [value] Done for function f1 [value] Recording results for main @@ -75,3 +75,5 @@ int main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_0_bts808.i (no preprocessing) diff --git a/tests/slicing/oracle/bts827.res.oracle b/tests/slicing/oracle/bts827.res.oracle index 8beb44cb45b960a8dcce88251c0c524f8c212559..c10d5ed3f77639b7f14e1e512c0a2c9116509b66 100644 --- a/tests/slicing/oracle/bts827.res.oracle +++ b/tests/slicing/oracle/bts827.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/bts827.c (with preprocessing) +[kernel] Parsing tests/slicing/bts827.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at main [value] Computing initial state @@ -7,7 +7,7 @@ [value:initial-state] Values of globals at initialization G ∈ {0} [value] computing for function f <- main. - Called from tests/slicing/bts827.c:16. + Called from tests/slicing/bts827.i:16. [value] Recording results for f [value] Done for function f [value] Recording results for main @@ -51,3 +51,5 @@ int main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_0_bts827.i (no preprocessing) diff --git a/tests/slicing/oracle/call_accuracy.res.oracle b/tests/slicing/oracle/call_accuracy.res.oracle index 93bd14ad6b49dab0a5969ca2080a156b0e838cae..2dd3007d7086d6e62809019ff1572057ab971900 100644 --- a/tests/slicing/oracle/call_accuracy.res.oracle +++ b/tests/slicing/oracle/call_accuracy.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/call_accuracy.c (with preprocessing) +[kernel] Parsing tests/slicing/call_accuracy.i (no preprocessing) [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed @@ -9,29 +9,29 @@ S3 ∈ {0} S4 ∈ {0} [value] computing for function test_struct <- main. - Called from tests/slicing/call_accuracy.c:62. + Called from tests/slicing/call_accuracy.i:62. [value] Recording results for test_struct [from] Computing for function test_struct [from] Done for function test_struct [value] Done for function test_struct [value] computing for function test_cond <- main. - Called from tests/slicing/call_accuracy.c:63. -tests/slicing/call_accuracy.c:11:[value] warning: signed overflow. assert x+1 ≤ 2147483647; -tests/slicing/call_accuracy.c:12:[value] warning: signed overflow. assert y+1 ≤ 2147483647; -tests/slicing/call_accuracy.c:13:[value] warning: signed overflow. assert z+1 ≤ 2147483647; + Called from tests/slicing/call_accuracy.i:63. +tests/slicing/call_accuracy.i:11:[value] warning: signed overflow. assert x+1 ≤ 2147483647; +tests/slicing/call_accuracy.i:12:[value] warning: signed overflow. assert y+1 ≤ 2147483647; +tests/slicing/call_accuracy.i:13:[value] warning: signed overflow. assert z+1 ≤ 2147483647; [value] computing for function f_cond <- test_cond <- main. - Called from tests/slicing/call_accuracy.c:14. -tests/slicing/call_accuracy.c:5:[value] warning: signed overflow. assert a+1 ≤ 2147483647; -tests/slicing/call_accuracy.c:6:[value] warning: signed overflow. assert b+1 ≤ 2147483647; + Called from tests/slicing/call_accuracy.i:14. +tests/slicing/call_accuracy.i:5:[value] warning: signed overflow. assert a+1 ≤ 2147483647; +tests/slicing/call_accuracy.i:6:[value] warning: signed overflow. assert b+1 ≤ 2147483647; [value] Recording results for f_cond [from] Computing for function f_cond [from] Done for function f_cond [value] Done for function f_cond -tests/slicing/call_accuracy.c:15:[value] warning: signed overflow. assert y+1 ≤ 2147483647; -tests/slicing/call_accuracy.c:16:[value] warning: signed overflow. assert x+1 ≤ 2147483647; -tests/slicing/call_accuracy.c:17:[value] warning: signed overflow. assert z+1 ≤ 2147483647; +tests/slicing/call_accuracy.i:15:[value] warning: signed overflow. assert y+1 ≤ 2147483647; +tests/slicing/call_accuracy.i:16:[value] warning: signed overflow. assert x+1 ≤ 2147483647; +tests/slicing/call_accuracy.i:17:[value] warning: signed overflow. assert z+1 ≤ 2147483647; [value] computing for function f_cond <- test_cond <- main. - Called from tests/slicing/call_accuracy.c:18. + Called from tests/slicing/call_accuracy.i:18. [value] Recording results for f_cond [from] Computing for function f_cond [from] Done for function f_cond @@ -41,158 +41,158 @@ tests/slicing/call_accuracy.c:17:[value] warning: signed overflow. assert z+1 [from] Done for function test_cond [value] Done for function test_cond [value] computing for function test_set <- main. - Called from tests/slicing/call_accuracy.c:64. + Called from tests/slicing/call_accuracy.i:64. [value] computing for function f_set <- test_set <- main. - Called from tests/slicing/call_accuracy.c:32. + Called from tests/slicing/call_accuracy.i:32. [value] Recording results for f_set [from] Computing for function f_set [from] Done for function f_set [value] Done for function f_set [value] computing for function f_set <- test_set <- main. - Called from tests/slicing/call_accuracy.c:33. + Called from tests/slicing/call_accuracy.i:33. [value] Recording results for f_set [from] Computing for function f_set [from] Done for function f_set [value] Done for function f_set [value] computing for function f_set <- test_set <- main. - Called from tests/slicing/call_accuracy.c:34. + Called from tests/slicing/call_accuracy.i:34. [value] Recording results for f_set [from] Computing for function f_set [from] Done for function f_set [value] Done for function f_set [value] computing for function f_set <- test_set <- main. - Called from tests/slicing/call_accuracy.c:35. + Called from tests/slicing/call_accuracy.i:35. [value] Recording results for f_set [from] Computing for function f_set [from] Done for function f_set [value] Done for function f_set [value] computing for function f_set <- test_set <- main. - Called from tests/slicing/call_accuracy.c:36. + Called from tests/slicing/call_accuracy.i:36. [value] Recording results for f_set [from] Computing for function f_set [from] Done for function f_set [value] Done for function f_set [value] computing for function f_set <- test_set <- main. - Called from tests/slicing/call_accuracy.c:37. + Called from tests/slicing/call_accuracy.i:37. [value] Recording results for f_set [from] Computing for function f_set [from] Done for function f_set [value] Done for function f_set [value] computing for function f_set <- test_set <- main. - Called from tests/slicing/call_accuracy.c:38. + Called from tests/slicing/call_accuracy.i:38. [value] Recording results for f_set [from] Computing for function f_set [from] Done for function f_set [value] Done for function f_set [value] computing for function f_set <- test_set <- main. - Called from tests/slicing/call_accuracy.c:39. + Called from tests/slicing/call_accuracy.i:39. [value] Recording results for f_set [from] Computing for function f_set [from] Done for function f_set [value] Done for function f_set [value] computing for function f_set <- test_set <- main. - Called from tests/slicing/call_accuracy.c:40. + Called from tests/slicing/call_accuracy.i:40. [value] Recording results for f_set [from] Computing for function f_set [from] Done for function f_set [value] Done for function f_set [value] computing for function f_set <- test_set <- main. - Called from tests/slicing/call_accuracy.c:41. + Called from tests/slicing/call_accuracy.i:41. [value] Recording results for f_set [from] Computing for function f_set [from] Done for function f_set [value] Done for function f_set [value] computing for function f_set <- test_set <- main. - Called from tests/slicing/call_accuracy.c:42. + Called from tests/slicing/call_accuracy.i:42. [value] Recording results for f_set [from] Computing for function f_set [from] Done for function f_set [value] Done for function f_set [value] computing for function f_set <- test_set <- main. - Called from tests/slicing/call_accuracy.c:43. + Called from tests/slicing/call_accuracy.i:43. [value] Recording results for f_set [from] Computing for function f_set [from] Done for function f_set [value] Done for function f_set [value] computing for function f_set <- test_set <- main. - Called from tests/slicing/call_accuracy.c:44. + Called from tests/slicing/call_accuracy.i:44. [value] Recording results for f_set [from] Computing for function f_set [from] Done for function f_set [value] Done for function f_set [value] computing for function f_set <- test_set <- main. - Called from tests/slicing/call_accuracy.c:45. + Called from tests/slicing/call_accuracy.i:45. [value] Recording results for f_set [from] Computing for function f_set [from] Done for function f_set [value] Done for function f_set -tests/slicing/call_accuracy.c:49:[value] warning: signed overflow. assert -2147483648 ≤ b+s1.b; -tests/slicing/call_accuracy.c:49:[value] warning: signed overflow. assert b+s1.b ≤ 2147483647; -tests/slicing/call_accuracy.c:49:[value] warning: signed overflow. assert (int)(b+s1.b)+s3.b ≤ 2147483647; -tests/slicing/call_accuracy.c:49:[value] warning: signed overflow. assert -2147483648 ≤ (int)((int)(b+s1.b)+s3.b)+tab[1]; -tests/slicing/call_accuracy.c:49:[value] warning: signed overflow. assert (int)((int)(b+s1.b)+s3.b)+tab[1] ≤ 2147483647; -tests/slicing/call_accuracy.c:49:[value] warning: signed overflow. +tests/slicing/call_accuracy.i:49:[value] warning: signed overflow. assert -2147483648 ≤ b+s1.b; +tests/slicing/call_accuracy.i:49:[value] warning: signed overflow. assert b+s1.b ≤ 2147483647; +tests/slicing/call_accuracy.i:49:[value] warning: signed overflow. assert (int)(b+s1.b)+s3.b ≤ 2147483647; +tests/slicing/call_accuracy.i:49:[value] warning: signed overflow. assert -2147483648 ≤ (int)((int)(b+s1.b)+s3.b)+tab[1]; +tests/slicing/call_accuracy.i:49:[value] warning: signed overflow. assert (int)((int)(b+s1.b)+s3.b)+tab[1] ≤ 2147483647; +tests/slicing/call_accuracy.i:49:[value] warning: signed overflow. assert -2147483648 ≤ (int)((int)((int)(b+s1.b)+s3.b)+tab[1])+S1.b; -tests/slicing/call_accuracy.c:49:[value] warning: signed overflow. +tests/slicing/call_accuracy.i:49:[value] warning: signed overflow. assert (int)((int)((int)(b+s1.b)+s3.b)+tab[1])+S1.b ≤ 2147483647; -tests/slicing/call_accuracy.c:49:[value] warning: signed overflow. +tests/slicing/call_accuracy.i:49:[value] warning: signed overflow. assert -2147483648 ≤ (int)((int)((int)((int)(b+s1.b)+s3.b)+tab[1])+S1.b)+S2.b; -tests/slicing/call_accuracy.c:49:[value] warning: signed overflow. +tests/slicing/call_accuracy.i:49:[value] warning: signed overflow. assert (int)((int)((int)((int)(b+s1.b)+s3.b)+tab[1])+S1.b)+S2.b ≤ 2147483647; [value] Recording results for test_set [from] Computing for function test_set [from] Done for function test_set [value] Done for function test_set -tests/slicing/call_accuracy.c:65:[value] warning: signed overflow. assert r1+r2 ≤ 2147483647; -tests/slicing/call_accuracy.c:65:[value] warning: signed overflow. assert -2147483648 ≤ (int)(r1+r2)+r3; -tests/slicing/call_accuracy.c:65:[value] warning: signed overflow. assert (int)(r1+r2)+r3 ≤ 2147483647; -tests/slicing/call_accuracy.c:65:[value] warning: signed overflow. assert (int)((int)(r1+r2)+r3)+S3.b ≤ 2147483647; +tests/slicing/call_accuracy.i:65:[value] warning: signed overflow. assert r1+r2 ≤ 2147483647; +tests/slicing/call_accuracy.i:65:[value] warning: signed overflow. assert -2147483648 ≤ (int)(r1+r2)+r3; +tests/slicing/call_accuracy.i:65:[value] warning: signed overflow. assert (int)(r1+r2)+r3 ≤ 2147483647; +tests/slicing/call_accuracy.i:65:[value] warning: signed overflow. assert (int)((int)(r1+r2)+r3)+S3.b ≤ 2147483647; [value] Recording results for main [from] Computing for function main [from] Done for function main [value] done for function main [from] ====== DISPLAYING CALLWISE DEPENDENCIES ====== -[from] call to f_cond at tests/slicing/call_accuracy.c:14 (by test_cond): +[from] call to f_cond at tests/slicing/call_accuracy.i:14 (by test_cond): \result FROM c; a -[from] call to f_cond at tests/slicing/call_accuracy.c:18 (by test_cond): +[from] call to f_cond at tests/slicing/call_accuracy.i:18 (by test_cond): \result FROM c; b -[from] call to f_set at tests/slicing/call_accuracy.c:32 (by test_set): +[from] call to f_set at tests/slicing/call_accuracy.i:32 (by test_set): a FROM p; v -[from] call to f_set at tests/slicing/call_accuracy.c:33 (by test_set): +[from] call to f_set at tests/slicing/call_accuracy.i:33 (by test_set): b FROM p; v -[from] call to f_set at tests/slicing/call_accuracy.c:34 (by test_set): +[from] call to f_set at tests/slicing/call_accuracy.i:34 (by test_set): s1.a FROM p; v -[from] call to f_set at tests/slicing/call_accuracy.c:35 (by test_set): +[from] call to f_set at tests/slicing/call_accuracy.i:35 (by test_set): s1.b FROM p; v -[from] call to f_set at tests/slicing/call_accuracy.c:36 (by test_set): +[from] call to f_set at tests/slicing/call_accuracy.i:36 (by test_set): s2.a FROM p; v -[from] call to f_set at tests/slicing/call_accuracy.c:37 (by test_set): +[from] call to f_set at tests/slicing/call_accuracy.i:37 (by test_set): s2.b FROM p; v -[from] call to f_set at tests/slicing/call_accuracy.c:38 (by test_set): +[from] call to f_set at tests/slicing/call_accuracy.i:38 (by test_set): s3.a FROM p; v -[from] call to f_set at tests/slicing/call_accuracy.c:39 (by test_set): +[from] call to f_set at tests/slicing/call_accuracy.i:39 (by test_set): tab[0] FROM p; v -[from] call to f_set at tests/slicing/call_accuracy.c:40 (by test_set): +[from] call to f_set at tests/slicing/call_accuracy.i:40 (by test_set): tab[1] FROM p; v -[from] call to f_set at tests/slicing/call_accuracy.c:41 (by test_set): +[from] call to f_set at tests/slicing/call_accuracy.i:41 (by test_set): tab[2] FROM p; v -[from] call to f_set at tests/slicing/call_accuracy.c:42 (by test_set): +[from] call to f_set at tests/slicing/call_accuracy.i:42 (by test_set): S1.a FROM p; v -[from] call to f_set at tests/slicing/call_accuracy.c:43 (by test_set): +[from] call to f_set at tests/slicing/call_accuracy.i:43 (by test_set): S1.b FROM p; v -[from] call to f_set at tests/slicing/call_accuracy.c:44 (by test_set): +[from] call to f_set at tests/slicing/call_accuracy.i:44 (by test_set): S2.a FROM p; v -[from] call to f_set at tests/slicing/call_accuracy.c:45 (by test_set): +[from] call to f_set at tests/slicing/call_accuracy.i:45 (by test_set): S2.b FROM p; v -[from] call to test_struct at tests/slicing/call_accuracy.c:62 (by main): +[from] call to test_struct at tests/slicing/call_accuracy.i:62 (by main): S1 FROM \nothing S2 FROM \nothing \result FROM \nothing -[from] call to test_cond at tests/slicing/call_accuracy.c:63 (by main): +[from] call to test_cond at tests/slicing/call_accuracy.i:63 (by main): \result FROM x -[from] call to test_set at tests/slicing/call_accuracy.c:64 (by main): +[from] call to test_set at tests/slicing/call_accuracy.i:64 (by main): S1.a FROM x .b FROM y S2.a FROM x @@ -312,3 +312,5 @@ int main(int x, int y, int z) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_0_call_accuracy.i (no preprocessing) diff --git a/tests/slicing/oracle/call_demo.0.res.oracle b/tests/slicing/oracle/call_demo.0.res.oracle index 9aa34e6902e58126e0b6f62087204ec7fc6da1e6..b2540b6cf6247addda7f9bf6ed6a7c5904629fe0 100644 --- a/tests/slicing/oracle/call_demo.0.res.oracle +++ b/tests/slicing/oracle/call_demo.0.res.oracle @@ -1,40 +1,40 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/call_demo.c (with preprocessing) +[kernel] Parsing tests/slicing/call_demo.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed [value:initial-state] Values of globals at initialization -tests/slicing/call_demo.c:22:[value] entering loop for the first time +tests/slicing/call_demo.i:22:[value] entering loop for the first time [value] computing for function oper <- main. - Called from tests/slicing/call_demo.c:23. + Called from tests/slicing/call_demo.i:23. [value] Recording results for oper [value] Done for function oper [value] computing for function oper <- main. - Called from tests/slicing/call_demo.c:23. + Called from tests/slicing/call_demo.i:23. [value] Recording results for oper [value] Done for function oper [value] computing for function oper <- main. - Called from tests/slicing/call_demo.c:23. + Called from tests/slicing/call_demo.i:23. [value] Recording results for oper [value] Done for function oper [value] computing for function oper <- main. - Called from tests/slicing/call_demo.c:23. -tests/slicing/call_demo.c:13:[value] warning: signed overflow. assert *s+i ≤ 2147483647; -tests/slicing/call_demo.c:14:[value] warning: signed overflow. assert *p*i ≤ 2147483647; + Called from tests/slicing/call_demo.i:23. +tests/slicing/call_demo.i:13:[value] warning: signed overflow. assert *s+i ≤ 2147483647; +tests/slicing/call_demo.i:14:[value] warning: signed overflow. assert *p*i ≤ 2147483647; [value] Recording results for oper [value] Done for function oper [value] computing for function oper <- main. - Called from tests/slicing/call_demo.c:23. + Called from tests/slicing/call_demo.i:23. [value] Recording results for oper [value] Done for function oper [value] computing for function call1 <- main. - Called from tests/slicing/call_demo.c:25. + Called from tests/slicing/call_demo.i:25. [value] using specification for function call1 [value] Done for function call1 [value] computing for function call2 <- main. - Called from tests/slicing/call_demo.c:26. + Called from tests/slicing/call_demo.i:26. [value] using specification for function call2 [value] Done for function call2 [value] Recording results for main @@ -85,3 +85,5 @@ void main(int n) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_0_call_demo.i (no preprocessing) diff --git a/tests/slicing/oracle/call_demo.1.res.oracle b/tests/slicing/oracle/call_demo.1.res.oracle index 7b77a08637f6b2040d3684012eadcbe74d642bf0..9bf80f11f72369ad5b331573d0e3f597533ea735 100644 --- a/tests/slicing/oracle/call_demo.1.res.oracle +++ b/tests/slicing/oracle/call_demo.1.res.oracle @@ -1,40 +1,40 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/call_demo.c (with preprocessing) +[kernel] Parsing tests/slicing/call_demo.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed [value:initial-state] Values of globals at initialization -tests/slicing/call_demo.c:22:[value] entering loop for the first time +tests/slicing/call_demo.i:22:[value] entering loop for the first time [value] computing for function oper <- main. - Called from tests/slicing/call_demo.c:23. + Called from tests/slicing/call_demo.i:23. [value] Recording results for oper [value] Done for function oper [value] computing for function oper <- main. - Called from tests/slicing/call_demo.c:23. + Called from tests/slicing/call_demo.i:23. [value] Recording results for oper [value] Done for function oper [value] computing for function oper <- main. - Called from tests/slicing/call_demo.c:23. + Called from tests/slicing/call_demo.i:23. [value] Recording results for oper [value] Done for function oper [value] computing for function oper <- main. - Called from tests/slicing/call_demo.c:23. -tests/slicing/call_demo.c:13:[value] warning: signed overflow. assert *s+i ≤ 2147483647; -tests/slicing/call_demo.c:14:[value] warning: signed overflow. assert *p*i ≤ 2147483647; + Called from tests/slicing/call_demo.i:23. +tests/slicing/call_demo.i:13:[value] warning: signed overflow. assert *s+i ≤ 2147483647; +tests/slicing/call_demo.i:14:[value] warning: signed overflow. assert *p*i ≤ 2147483647; [value] Recording results for oper [value] Done for function oper [value] computing for function oper <- main. - Called from tests/slicing/call_demo.c:23. + Called from tests/slicing/call_demo.i:23. [value] Recording results for oper [value] Done for function oper [value] computing for function call1 <- main. - Called from tests/slicing/call_demo.c:25. + Called from tests/slicing/call_demo.i:25. [value] using specification for function call1 [value] Done for function call1 [value] computing for function call2 <- main. - Called from tests/slicing/call_demo.c:26. + Called from tests/slicing/call_demo.i:26. [value] using specification for function call2 [value] Done for function call2 [value] Recording results for main @@ -85,3 +85,5 @@ void main(int n) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_1_call_demo.i (no preprocessing) diff --git a/tests/slicing/oracle/callwise.res.oracle b/tests/slicing/oracle/callwise.res.oracle index f8422009b61563fd007948f04a8728f75f6035bc..a83d4e572cb2d969f1c90487c961869409049a64 100644 --- a/tests/slicing/oracle/callwise.res.oracle +++ b/tests/slicing/oracle/callwise.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/callwise.c (with preprocessing) +[kernel] Parsing tests/slicing/callwise.i (no preprocessing) [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed @@ -10,88 +10,88 @@ d ∈ {1} p ∈ {0} [value] computing for function f <- main. - Called from tests/slicing/callwise.c:39. + Called from tests/slicing/callwise.i:39. [value] Recording results for f [from] Computing for function f [from] Done for function f [value] Done for function f [value] computing for function f <- main. - Called from tests/slicing/callwise.c:40. + Called from tests/slicing/callwise.i:40. [value] Recording results for f [from] Computing for function f [from] Done for function f [value] Done for function f [value] computing for function choose <- main. - Called from tests/slicing/callwise.c:42. + Called from tests/slicing/callwise.i:42. [value] Recording results for choose [from] Computing for function choose [from] Done for function choose [value] Done for function choose [value] computing for function choose <- main. - Called from tests/slicing/callwise.c:43. + Called from tests/slicing/callwise.i:43. [value] Recording results for choose [from] Computing for function choose [from] Done for function choose [value] Done for function choose [value] computing for function fs163_main <- main. - Called from tests/slicing/callwise.c:45. + Called from tests/slicing/callwise.i:45. [value] computing for function fs163_f <- fs163_main <- main. - Called from tests/slicing/callwise.c:24. + Called from tests/slicing/callwise.i:24. [value] Recording results for fs163_f [from] Computing for function fs163_f [from] Done for function fs163_f [value] Done for function fs163_f [value] computing for function fs163_f <- fs163_main <- main. - Called from tests/slicing/callwise.c:25. + Called from tests/slicing/callwise.i:25. [value] Recording results for fs163_f [from] Computing for function fs163_f [from] Done for function fs163_f [value] Done for function fs163_f [value] computing for function fs163_f <- fs163_main <- main. - Called from tests/slicing/callwise.c:26. + Called from tests/slicing/callwise.i:26. [value] Recording results for fs163_f [from] Computing for function fs163_f [from] Done for function fs163_f [value] Done for function fs163_f [value] computing for function fs163_f <- fs163_main <- main. - Called from tests/slicing/callwise.c:27. + Called from tests/slicing/callwise.i:27. [value] Recording results for fs163_f [from] Computing for function fs163_f [from] Done for function fs163_f [value] Done for function fs163_f [value] computing for function fs163_f <- fs163_main <- main. - Called from tests/slicing/callwise.c:28. + Called from tests/slicing/callwise.i:28. [value] Recording results for fs163_f [from] Computing for function fs163_f [from] Done for function fs163_f [value] Done for function fs163_f -tests/slicing/callwise.c:29:[value] entering loop for the first time +tests/slicing/callwise.i:29:[value] entering loop for the first time [value] computing for function fs163_f <- fs163_main <- main. - Called from tests/slicing/callwise.c:30. + Called from tests/slicing/callwise.i:30. [value] Recording results for fs163_f [from] Computing for function fs163_f [from] Done for function fs163_f [value] Done for function fs163_f [value] computing for function fs163_f <- fs163_main <- main. - Called from tests/slicing/callwise.c:30. + Called from tests/slicing/callwise.i:30. [value] Recording results for fs163_f [from] Computing for function fs163_f [from] Done for function fs163_f [value] Done for function fs163_f [value] computing for function fs163_f <- fs163_main <- main. - Called from tests/slicing/callwise.c:30. + Called from tests/slicing/callwise.i:30. [value] Recording results for fs163_f [from] Computing for function fs163_f [from] Done for function fs163_f [value] Done for function fs163_f [value] computing for function fs163_f <- fs163_main <- main. - Called from tests/slicing/callwise.c:30. + Called from tests/slicing/callwise.i:30. [value] Recording results for fs163_f [from] Computing for function fs163_f [from] Done for function fs163_f [value] Done for function fs163_f [value] computing for function fs163_f <- fs163_main <- main. - Called from tests/slicing/callwise.c:30. + Called from tests/slicing/callwise.i:30. [value] Recording results for fs163_f [from] Computing for function fs163_f [from] Done for function fs163_f @@ -100,7 +100,7 @@ tests/slicing/callwise.c:29:[value] entering loop for the first time [from] Computing for function fs163_main [from] Done for function fs163_main [value] Done for function fs163_main -tests/slicing/callwise.c:45:[value] warning: accessing uninitialized left-value. +tests/slicing/callwise.i:45:[value] warning: accessing uninitialized left-value. assert \initialized(&tmp_0); (tmp_0 from fs163_main(10)) [value] Recording results for main @@ -108,27 +108,27 @@ tests/slicing/callwise.c:45:[value] warning: accessing uninitialized left-value. [from] Done for function main [value] done for function main [from] ====== DISPLAYING CALLWISE DEPENDENCIES ====== -[from] call to fs163_f at tests/slicing/callwise.c:24 (by fs163_main): +[from] call to fs163_f at tests/slicing/callwise.i:24 (by fs163_main): A FROM p_0; n -[from] call to fs163_f at tests/slicing/callwise.c:25 (by fs163_main): +[from] call to fs163_f at tests/slicing/callwise.i:25 (by fs163_main): B FROM p_0; n -[from] call to fs163_f at tests/slicing/callwise.c:26 (by fs163_main): +[from] call to fs163_f at tests/slicing/callwise.i:26 (by fs163_main): C FROM p_0; n -[from] call to fs163_f at tests/slicing/callwise.c:27 (by fs163_main): +[from] call to fs163_f at tests/slicing/callwise.i:27 (by fs163_main): T[0] FROM p_0; n -[from] call to fs163_f at tests/slicing/callwise.c:28 (by fs163_main): +[from] call to fs163_f at tests/slicing/callwise.i:28 (by fs163_main): T[1] FROM p_0; n -[from] call to fs163_f at tests/slicing/callwise.c:30 (by fs163_main): +[from] call to fs163_f at tests/slicing/callwise.i:30 (by fs163_main): T[0..4] FROM p_0; n (and SELF) -[from] call to f at tests/slicing/callwise.c:39 (by main): +[from] call to f at tests/slicing/callwise.i:39 (by main): a FROM a; b; p_0; q -[from] call to f at tests/slicing/callwise.c:40 (by main): +[from] call to f at tests/slicing/callwise.i:40 (by main): c FROM c; d; p_0; q -[from] call to choose at tests/slicing/callwise.c:42 (by main): +[from] call to choose at tests/slicing/callwise.i:42 (by main): \result FROM cond; y -[from] call to choose at tests/slicing/callwise.c:43 (by main): +[from] call to choose at tests/slicing/callwise.i:43 (by main): \result FROM cond; x -[from] call to fs163_main at tests/slicing/callwise.c:45 (by main): +[from] call to fs163_main at tests/slicing/callwise.i:45 (by main): \result FROM \nothing [from] entry point: a FROM a; b @@ -218,3 +218,5 @@ int main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_0_callwise.i (no preprocessing) diff --git a/tests/slicing/oracle/combine.res.oracle b/tests/slicing/oracle/combine.res.oracle index 7c458cfa20e72d29719dd752249f26c3bd1d6286..13ec2e526587c69439b2bb181054d45a2fe90f9e 100644 --- a/tests/slicing/oracle/combine.res.oracle +++ b/tests/slicing/oracle/combine.res.oracle @@ -1,22 +1,22 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/combine.c (with preprocessing) +[kernel] Parsing tests/slicing/combine.i (no preprocessing) [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed [value:initial-state] Values of globals at initialization [value] computing for function f <- main. - Called from tests/slicing/combine.c:24. + Called from tests/slicing/combine.i:24. [value] computing for function g <- f <- main. - Called from tests/slicing/combine.c:17. + Called from tests/slicing/combine.i:17. [value] using specification for function g [value] Done for function g [value] Recording results for f [value] Done for function f [value] computing for function f <- main. - Called from tests/slicing/combine.c:26. + Called from tests/slicing/combine.i:26. [value] computing for function g <- f <- main. - Called from tests/slicing/combine.c:17. + Called from tests/slicing/combine.i:17. [value] Done for function g [value] Recording results for f [value] Done for function f @@ -124,18 +124,18 @@ int main(int x) [value:initial-state] Values of globals at initialization [value] computing for function f <- main. - Called from tests/slicing/combine.c:24. + Called from tests/slicing/combine.i:24. [value] computing for function g <- f <- main. - Called from tests/slicing/combine.c:17. -tests/slicing/combine.c:17:[kernel] warning: Neither code nor specification for function g, generating default assigns from the prototype + Called from tests/slicing/combine.i:17. +tests/slicing/combine.i:17:[kernel] warning: Neither code nor specification for function g, generating default assigns from the prototype [value] using specification for function g [value] Done for function g [value] Recording results for f [value] Done for function f [value] computing for function f_s_2 <- main. - Called from tests/slicing/combine.c:26. + Called from tests/slicing/combine.i:26. [value] computing for function g <- f_s_2 <- main. - Called from tests/slicing/combine.c:17. + Called from tests/slicing/combine.i:17. [value] Done for function g [value] Recording results for f_s_2 [value] Done for function f_s_2 @@ -186,17 +186,17 @@ int main(int x) [value:initial-state] Values of globals at initialization [value] computing for function f <- main. - Called from tests/slicing/combine.c:24. + Called from tests/slicing/combine.i:24. [value] computing for function g <- f <- main. - Called from tests/slicing/combine.c:17. + Called from tests/slicing/combine.i:17. [value] using specification for function g [value] Done for function g [value] Recording results for f [value] Done for function f [value] computing for function f_s_2 <- main. - Called from tests/slicing/combine.c:26. + Called from tests/slicing/combine.i:26. [value] computing for function g <- f_s_2 <- main. - Called from tests/slicing/combine.c:17. + Called from tests/slicing/combine.i:17. [value] Done for function g [value] Recording results for f_s_2 [value] Done for function f_s_2 diff --git a/tests/slicing/oracle/csmith.0.res.oracle b/tests/slicing/oracle/csmith.0.res.oracle index 03528daad957e08e0630d23cf07735de4ef5485d..f733e975b4863635c9b16ed38257dcc644e61851 100644 --- a/tests/slicing/oracle/csmith.0.res.oracle +++ b/tests/slicing/oracle/csmith.0.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/csmith.c (with preprocessing) +[kernel] Parsing tests/slicing/csmith.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at main [value] Computing initial state @@ -9,82 +9,82 @@ G1b ∈ {0} G2 ∈ {0} [value] computing for function f1 <- main. - Called from tests/slicing/csmith.c:234. -tests/slicing/csmith.c:15:[value] entering loop for the first time + Called from tests/slicing/csmith.i:234. +tests/slicing/csmith.i:15:[value] entering loop for the first time [value] Recording results for f1 [value] Done for function f1 [value] computing for function f1b <- main. - Called from tests/slicing/csmith.c:235. + Called from tests/slicing/csmith.i:235. [value] Recording results for f1b [value] Done for function f1b [value] computing for function f2 <- main. - Called from tests/slicing/csmith.c:236. -tests/slicing/csmith.c:36:[value] entering loop for the first time + Called from tests/slicing/csmith.i:236. +tests/slicing/csmith.i:36:[value] entering loop for the first time [value] Recording results for f2 [value] Done for function f2 [value] computing for function bts181 <- main. - Called from tests/slicing/csmith.c:237. + Called from tests/slicing/csmith.i:237. [value] Recording results for bts181 [value] Done for function bts181 [value] computing for function bts181b <- main. - Called from tests/slicing/csmith.c:238. + Called from tests/slicing/csmith.i:238. [value] Recording results for bts181b [value] Done for function bts181b [value] computing for function bts807 <- main. - Called from tests/slicing/csmith.c:239. -tests/slicing/csmith.c:68:[value] entering loop for the first time + Called from tests/slicing/csmith.i:239. +tests/slicing/csmith.i:68:[value] entering loop for the first time [value] Recording results for bts807 [value] Done for function bts807 [value] computing for function bts809 <- main. - Called from tests/slicing/csmith.c:240. -tests/slicing/csmith.c:78:[value] entering loop for the first time + Called from tests/slicing/csmith.i:240. +tests/slicing/csmith.i:78:[value] entering loop for the first time [value] Recording results for bts809 [value] Done for function bts809 [value] computing for function bts879 <- main. - Called from tests/slicing/csmith.c:241. + Called from tests/slicing/csmith.i:241. [value] Recording results for bts879 [value] Done for function bts879 [value] computing for function bts879b <- main. - Called from tests/slicing/csmith.c:242. + Called from tests/slicing/csmith.i:242. [value] Recording results for bts879b [value] Done for function bts879b [value] computing for function bts899 <- main. - Called from tests/slicing/csmith.c:243. -tests/slicing/csmith.c:135:[value] entering loop for the first time -tests/slicing/csmith.c:141:[value] warning: signed overflow. assert x+1 ≤ 2147483647; + Called from tests/slicing/csmith.i:243. +tests/slicing/csmith.i:135:[value] entering loop for the first time +tests/slicing/csmith.i:141:[value] warning: signed overflow. assert x+1 ≤ 2147483647; [value] Recording results for bts899 [value] Done for function bts899 -tests/slicing/csmith.c:243:[value] warning: signed overflow. assert x+tmp_5 ≤ 2147483647; +tests/slicing/csmith.i:243:[value] warning: signed overflow. assert x+tmp_5 ≤ 2147483647; (tmp_5 from bts899()) [value] computing for function bts906 <- main. - Called from tests/slicing/csmith.c:244. -tests/slicing/csmith.c:149:[value] entering loop for the first time -tests/slicing/csmith.c:150:[value] entering loop for the first time + Called from tests/slicing/csmith.i:244. +tests/slicing/csmith.i:149:[value] entering loop for the first time +tests/slicing/csmith.i:150:[value] entering loop for the first time [value] Recording results for bts906 [value] Done for function bts906 -tests/slicing/csmith.c:244:[value] warning: signed overflow. assert x+tmp_6 ≤ 2147483647; +tests/slicing/csmith.i:244:[value] warning: signed overflow. assert x+tmp_6 ≤ 2147483647; (tmp_6 from bts906()) [value] computing for function bts906b <- main. - Called from tests/slicing/csmith.c:245. -tests/slicing/csmith.c:168:[value] entering loop for the first time -tests/slicing/csmith.c:169:[value] entering loop for the first time + Called from tests/slicing/csmith.i:245. +tests/slicing/csmith.i:168:[value] entering loop for the first time +tests/slicing/csmith.i:169:[value] entering loop for the first time [value] Recording results for bts906b [value] Done for function bts906b -tests/slicing/csmith.c:245:[value] warning: signed overflow. assert x+tmp_7 ≤ 2147483647; +tests/slicing/csmith.i:245:[value] warning: signed overflow. assert x+tmp_7 ≤ 2147483647; (tmp_7 from bts906b()) [value] computing for function bts963 <- main. - Called from tests/slicing/csmith.c:247. -tests/slicing/csmith.c:211:[value] entering loop for the first time + Called from tests/slicing/csmith.i:247. +tests/slicing/csmith.i:211:[value] entering loop for the first time [value] Recording results for bts963 [value] Done for function bts963 -tests/slicing/csmith.c:247:[value] warning: signed overflow. assert x+tmp_8 ≤ 2147483647; +tests/slicing/csmith.i:247:[value] warning: signed overflow. assert x+tmp_8 ≤ 2147483647; (tmp_8 from bts963()) [value] computing for function bts963b <- main. - Called from tests/slicing/csmith.c:248. -tests/slicing/csmith.c:223:[value] entering loop for the first time + Called from tests/slicing/csmith.i:248. +tests/slicing/csmith.i:223:[value] entering loop for the first time [value] Recording results for bts963b [value] Done for function bts963b -tests/slicing/csmith.c:248:[value] warning: signed overflow. assert x+tmp_9 ≤ 2147483647; +tests/slicing/csmith.i:248:[value] warning: signed overflow. assert x+tmp_9 ≤ 2147483647; (tmp_9 from bts963b()) [value] Recording results for main [value] done for function main @@ -411,3 +411,5 @@ int main(int n) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_0_csmith.i (no preprocessing) diff --git a/tests/slicing/oracle/csmith.1.res.oracle b/tests/slicing/oracle/csmith.1.res.oracle index c6c1e28f6d853e5c80538b367774b5eb90f8d0ed..4551e20717f94fcc48387e367374def9cf3dc8fd 100644 --- a/tests/slicing/oracle/csmith.1.res.oracle +++ b/tests/slicing/oracle/csmith.1.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/csmith.c (with preprocessing) +[kernel] Parsing tests/slicing/csmith.i (no preprocessing) [value] Analyzing a complete application starting at bts906b [value] Computing initial state [value] Initial state computed @@ -7,8 +7,8 @@ G1 ∈ {0} G1b ∈ {0} G2 ∈ {0} -tests/slicing/csmith.c:168:[value] entering loop for the first time -tests/slicing/csmith.c:169:[value] entering loop for the first time +tests/slicing/csmith.i:168:[value] entering loop for the first time +tests/slicing/csmith.i:169:[value] entering loop for the first time [value] Recording results for bts906b [value] done for function bts906b [pdg] computing for function bts906b diff --git a/tests/slicing/oracle/csmith.2.res.oracle b/tests/slicing/oracle/csmith.2.res.oracle index 28d9c586a85f69db8e171e4092c9d52416dfe6eb..5e69a131b0550da045a659b38cdf1042f837144a 100644 --- a/tests/slicing/oracle/csmith.2.res.oracle +++ b/tests/slicing/oracle/csmith.2.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/csmith.c (with preprocessing) +[kernel] Parsing tests/slicing/csmith.i (no preprocessing) [value] Analyzing a complete application starting at bts906c [value] Computing initial state [value] Initial state computed @@ -7,8 +7,8 @@ G1 ∈ {0} G1b ∈ {0} G2 ∈ {0} -tests/slicing/csmith.c:189:[value] entering loop for the first time -tests/slicing/csmith.c:190:[value] entering loop for the first time +tests/slicing/csmith.i:189:[value] entering loop for the first time +tests/slicing/csmith.i:190:[value] entering loop for the first time [value] Recording results for bts906c [value] done for function bts906c [pdg] computing for function bts906c diff --git a/tests/slicing/oracle/ex_spec_interproc.res.oracle b/tests/slicing/oracle/ex_spec_interproc.res.oracle index e22409b67933afee423b3e4da2ac6f035695f1a6..8109ef068b3628b9efed56790d3c82e9f76730c1 100644 --- a/tests/slicing/oracle/ex_spec_interproc.res.oracle +++ b/tests/slicing/oracle/ex_spec_interproc.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/ex_spec_interproc.c (with preprocessing) +[kernel] Parsing tests/slicing/ex_spec_interproc.i (no preprocessing) [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed @@ -13,13 +13,13 @@ L ∈ {0} M ∈ {0} [value] computing for function f <- main. - Called from tests/slicing/ex_spec_interproc.c:35. + Called from tests/slicing/ex_spec_interproc.i:35. [value] computing for function g <- f <- main. - Called from tests/slicing/ex_spec_interproc.c:21. + Called from tests/slicing/ex_spec_interproc.i:21. [value] Recording results for g [value] Done for function g [value] computing for function g <- f <- main. - Called from tests/slicing/ex_spec_interproc.c:22. + Called from tests/slicing/ex_spec_interproc.i:22. [value] Recording results for g [value] Done for function g [value] Recording results for f diff --git a/tests/slicing/oracle/filter.res.oracle b/tests/slicing/oracle/filter.res.oracle index edf05c4cfa24909e8d2efec7a92919f89246bb50..a08ef9f5d5f269bc327142d236ac2a4532b279e1 100644 --- a/tests/slicing/oracle/filter.res.oracle +++ b/tests/slicing/oracle/filter.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/filter.c (with preprocessing) +[kernel] Parsing tests/slicing/filter.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at main [value] Computing initial state @@ -7,19 +7,19 @@ [value:initial-state] Values of globals at initialization T[0..9] ∈ {0} [value] computing for function bts806 <- main. - Called from tests/slicing/filter.c:42. + Called from tests/slicing/filter.i:42. [value] Recording results for bts806 [value] Done for function bts806 [value] computing for function unspec <- main. - Called from tests/slicing/filter.c:43. + Called from tests/slicing/filter.i:43. [value] computing for function f <- unspec <- main. - Called from tests/slicing/filter.c:36. -tests/slicing/filter.c:36:[kernel] warning: Neither code nor specification for function f, generating default assigns from the prototype + Called from tests/slicing/filter.i:36. +tests/slicing/filter.i:36:[kernel] warning: Neither code nor specification for function f, generating default assigns from the prototype [value] using specification for function f [value] Done for function f [value] Recording results for unspec [value] Done for function unspec -tests/slicing/filter.c:43:[value] warning: signed overflow. assert r+tmp_0 ≤ 2147483647; +tests/slicing/filter.i:43:[value] warning: signed overflow. assert r+tmp_0 ≤ 2147483647; (tmp_0 from unspec()) [value] Recording results for main [value] done for function main @@ -95,3 +95,5 @@ int main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_0_filter.i (no preprocessing) diff --git a/tests/slicing/oracle/forall_loop_invariant.res.oracle b/tests/slicing/oracle/forall_loop_invariant.res.oracle index e0f8ef588167573f0899bc50b9063230eb7c7b66..124f10ba355fbe6d32e73a8e5f9e268c435c469f 100644 --- a/tests/slicing/oracle/forall_loop_invariant.res.oracle +++ b/tests/slicing/oracle/forall_loop_invariant.res.oracle @@ -89,3 +89,5 @@ int main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_0_forall_loop_invariant.i (no preprocessing) diff --git a/tests/slicing/oracle/horwitz.res.oracle b/tests/slicing/oracle/horwitz.res.oracle index ce32c058dc365e2381ccf0c11c9b9071ca56f746..f02749fa05660ce011feeafb9e79079e79d25271 100644 --- a/tests/slicing/oracle/horwitz.res.oracle +++ b/tests/slicing/oracle/horwitz.res.oracle @@ -1,21 +1,21 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/horwitz.c (with preprocessing) +[kernel] Parsing tests/slicing/horwitz.i (no preprocessing) [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed [value:initial-state] Values of globals at initialization -tests/slicing/horwitz.c:26:[value] entering loop for the first time +tests/slicing/horwitz.i:26:[value] entering loop for the first time [value] computing for function A <- main. - Called from tests/slicing/horwitz.c:27. + Called from tests/slicing/horwitz.i:27. [value] computing for function add <- A <- main. - Called from tests/slicing/horwitz.c:18. + Called from tests/slicing/horwitz.i:18. [value] Recording results for add [value] Done for function add [value] computing for function incr <- A <- main. - Called from tests/slicing/horwitz.c:19. + Called from tests/slicing/horwitz.i:19. [value] computing for function add <- incr <- A <- main. - Called from tests/slicing/horwitz.c:15. + Called from tests/slicing/horwitz.i:15. [value] Recording results for add [value] Done for function add [value] Recording results for incr @@ -23,15 +23,15 @@ tests/slicing/horwitz.c:26:[value] entering loop for the first time [value] Recording results for A [value] Done for function A [value] computing for function A <- main. - Called from tests/slicing/horwitz.c:27. + Called from tests/slicing/horwitz.i:27. [value] computing for function add <- A <- main. - Called from tests/slicing/horwitz.c:18. + Called from tests/slicing/horwitz.i:18. [value] Recording results for add [value] Done for function add [value] computing for function incr <- A <- main. - Called from tests/slicing/horwitz.c:19. + Called from tests/slicing/horwitz.i:19. [value] computing for function add <- incr <- A <- main. - Called from tests/slicing/horwitz.c:15. + Called from tests/slicing/horwitz.i:15. [value] Recording results for add [value] Done for function add [value] Recording results for incr @@ -39,15 +39,15 @@ tests/slicing/horwitz.c:26:[value] entering loop for the first time [value] Recording results for A [value] Done for function A [value] computing for function A <- main. - Called from tests/slicing/horwitz.c:27. + Called from tests/slicing/horwitz.i:27. [value] computing for function add <- A <- main. - Called from tests/slicing/horwitz.c:18. + Called from tests/slicing/horwitz.i:18. [value] Recording results for add [value] Done for function add [value] computing for function incr <- A <- main. - Called from tests/slicing/horwitz.c:19. + Called from tests/slicing/horwitz.i:19. [value] computing for function add <- incr <- A <- main. - Called from tests/slicing/horwitz.c:15. + Called from tests/slicing/horwitz.i:15. [value] Recording results for add [value] Done for function add [value] Recording results for incr @@ -55,15 +55,15 @@ tests/slicing/horwitz.c:26:[value] entering loop for the first time [value] Recording results for A [value] Done for function A [value] computing for function A <- main. - Called from tests/slicing/horwitz.c:27. + Called from tests/slicing/horwitz.i:27. [value] computing for function add <- A <- main. - Called from tests/slicing/horwitz.c:18. + Called from tests/slicing/horwitz.i:18. [value] Recording results for add [value] Done for function add [value] computing for function incr <- A <- main. - Called from tests/slicing/horwitz.c:19. + Called from tests/slicing/horwitz.i:19. [value] computing for function add <- incr <- A <- main. - Called from tests/slicing/horwitz.c:15. + Called from tests/slicing/horwitz.i:15. [value] Recording results for add [value] Done for function add [value] Recording results for incr @@ -71,15 +71,15 @@ tests/slicing/horwitz.c:26:[value] entering loop for the first time [value] Recording results for A [value] Done for function A [value] computing for function A <- main. - Called from tests/slicing/horwitz.c:27. + Called from tests/slicing/horwitz.i:27. [value] computing for function add <- A <- main. - Called from tests/slicing/horwitz.c:18. + Called from tests/slicing/horwitz.i:18. [value] Recording results for add [value] Done for function add [value] computing for function incr <- A <- main. - Called from tests/slicing/horwitz.c:19. + Called from tests/slicing/horwitz.i:19. [value] computing for function add <- incr <- A <- main. - Called from tests/slicing/horwitz.c:15. + Called from tests/slicing/horwitz.i:15. [value] Recording results for add [value] Done for function add [value] Recording results for incr @@ -87,16 +87,16 @@ tests/slicing/horwitz.c:26:[value] entering loop for the first time [value] Recording results for A [value] Done for function A [value] computing for function A <- main. - Called from tests/slicing/horwitz.c:27. + Called from tests/slicing/horwitz.i:27. [value] computing for function add <- A <- main. - Called from tests/slicing/horwitz.c:18. -tests/slicing/horwitz.c:12:[value] warning: signed overflow. assert a+b ≤ 2147483647; + Called from tests/slicing/horwitz.i:18. +tests/slicing/horwitz.i:12:[value] warning: signed overflow. assert a+b ≤ 2147483647; [value] Recording results for add [value] Done for function add [value] computing for function incr <- A <- main. - Called from tests/slicing/horwitz.c:19. + Called from tests/slicing/horwitz.i:19. [value] computing for function add <- incr <- A <- main. - Called from tests/slicing/horwitz.c:15. + Called from tests/slicing/horwitz.i:15. [value] Recording results for add [value] Done for function add [value] Recording results for incr diff --git a/tests/slicing/oracle/if_many_values.res.oracle b/tests/slicing/oracle/if_many_values.res.oracle index ff2dc0bb95904e4ea030822ede1b6bc4381f8823..0395586066d3e9c70fed67f44da84db8ed5b3f78 100644 --- a/tests/slicing/oracle/if_many_values.res.oracle +++ b/tests/slicing/oracle/if_many_values.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/if_many_values.c (with preprocessing) +[kernel] Parsing tests/slicing/if_many_values.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at main [value] Computing initial state @@ -7,8 +7,8 @@ [value:initial-state] Values of globals at initialization r ∈ {1} [value] Semantic level unrolling superposing up to 100 states -tests/slicing/if_many_values.c:8:[value] entering loop for the first time -tests/slicing/if_many_values.c:11:[value] warning: signed overflow. assert r+1 ≤ 2147483647; +tests/slicing/if_many_values.i:8:[value] entering loop for the first time +tests/slicing/if_many_values.i:11:[value] warning: signed overflow. assert r+1 ≤ 2147483647; [value] Recording results for main [value] done for function main [slicing] making slicing project 'Slicing'... @@ -41,3 +41,5 @@ int main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_0_if_many_values.i (no preprocessing) diff --git a/tests/slicing/oracle/initialized.res.oracle b/tests/slicing/oracle/initialized.res.oracle index d6d2b00065b9afb4c257bfa6f1684bf19374a941..47dfeb13a4f0ab5b8f5b2b9bd1e59f6811655508 100644 --- a/tests/slicing/oracle/initialized.res.oracle +++ b/tests/slicing/oracle/initialized.res.oracle @@ -1,12 +1,12 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/initialized.c (with preprocessing) +[kernel] Parsing tests/slicing/initialized.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed [value:initial-state] Values of globals at initialization -tests/slicing/initialized.c:12:[value] assertion got status valid. +tests/slicing/initialized.i:12:[value] assertion got status valid. [value] Recording results for main [value] done for function main [slicing] making slicing project 'Slicing'... @@ -33,3 +33,5 @@ void main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_0_initialized.i (no preprocessing) diff --git a/tests/slicing/oracle/keep_annot.0.res.oracle b/tests/slicing/oracle/keep_annot.0.res.oracle index 78f93d99e4de057aecdec3bae18d64934df9cabd..718e576475175cfe81a979c4b5fa4553974e2a72 100644 --- a/tests/slicing/oracle/keep_annot.0.res.oracle +++ b/tests/slicing/oracle/keep_annot.0.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/keep_annot.c (with preprocessing) +[kernel] Parsing tests/slicing/keep_annot.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing an incomplete application starting at f [value] Computing initial state @@ -7,14 +7,14 @@ [value:initial-state] Values of globals at initialization [value] computing for function g <- f. - Called from tests/slicing/keep_annot.c:26. -tests/slicing/keep_annot.c:15:[value] entering loop for the first time -tests/slicing/keep_annot.c:20:[value] warning: assertion got status unknown. -tests/slicing/keep_annot.c:21:[value] warning: assertion got status unknown. + Called from tests/slicing/keep_annot.i:26. +tests/slicing/keep_annot.i:15:[value] entering loop for the first time +tests/slicing/keep_annot.i:20:[value] warning: assertion got status unknown. +tests/slicing/keep_annot.i:21:[value] warning: assertion got status unknown. [value] Recording results for g [value] Done for function g -tests/slicing/keep_annot.c:27:[value] assertion got status valid. -tests/slicing/keep_annot.c:28:[value] warning: assertion got status unknown. +tests/slicing/keep_annot.i:27:[value] assertion got status valid. +tests/slicing/keep_annot.i:28:[value] warning: assertion got status unknown. [value] Recording results for f [value] done for function f [slicing] making slicing project 'Slicing'... @@ -61,3 +61,5 @@ void f(las *p, int n, int m) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_0_keep_annot.i (no preprocessing) diff --git a/tests/slicing/oracle/keep_annot.1.res.oracle b/tests/slicing/oracle/keep_annot.1.res.oracle index 9de7ab671d6dedda1709fd985a1987ec1666ec54..a43bb8a5dc0fed901ad6a11727e78bcd5492a9b0 100644 --- a/tests/slicing/oracle/keep_annot.1.res.oracle +++ b/tests/slicing/oracle/keep_annot.1.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/keep_annot.c (with preprocessing) +[kernel] Parsing tests/slicing/keep_annot.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing an incomplete application starting at f [value] Computing initial state @@ -7,14 +7,14 @@ [value:initial-state] Values of globals at initialization [value] computing for function g <- f. - Called from tests/slicing/keep_annot.c:26. -tests/slicing/keep_annot.c:15:[value] entering loop for the first time -tests/slicing/keep_annot.c:20:[value] warning: assertion got status unknown. -tests/slicing/keep_annot.c:21:[value] warning: assertion got status unknown. + Called from tests/slicing/keep_annot.i:26. +tests/slicing/keep_annot.i:15:[value] entering loop for the first time +tests/slicing/keep_annot.i:20:[value] warning: assertion got status unknown. +tests/slicing/keep_annot.i:21:[value] warning: assertion got status unknown. [value] Recording results for g [value] Done for function g -tests/slicing/keep_annot.c:27:[value] assertion got status valid. -tests/slicing/keep_annot.c:28:[value] warning: assertion got status unknown. +tests/slicing/keep_annot.i:27:[value] assertion got status valid. +tests/slicing/keep_annot.i:28:[value] warning: assertion got status unknown. [value] Recording results for f [value] done for function f [slicing] making slicing project 'Slicing'... @@ -64,3 +64,5 @@ void f(las *p, int n, int m) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_1_keep_annot.i (no preprocessing) diff --git a/tests/slicing/oracle/keep_annot.2.res.oracle b/tests/slicing/oracle/keep_annot.2.res.oracle index 37e54210c825058850358dee21118d14930614d4..0379f402e867235c35e17550452b157ddfe59b60 100644 --- a/tests/slicing/oracle/keep_annot.2.res.oracle +++ b/tests/slicing/oracle/keep_annot.2.res.oracle @@ -1,19 +1,19 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/keep_annot.c (with preprocessing) +[kernel] Parsing tests/slicing/keep_annot.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing an incomplete application starting at L [value] Computing initial state [value] Initial state computed [value:initial-state] Values of globals at initialization -tests/slicing/keep_annot.c:40:[value] warning: signed overflow. assert -2147483648 ≤ nn-2; -tests/slicing/keep_annot.c:39:[value] warning: loop invariant got status unknown. -tests/slicing/keep_annot.c:40:[value] entering loop for the first time -tests/slicing/keep_annot.c:41:[value] warning: out of bounds read. assert \valid_read(dabs+(int)(ii+1)); -tests/slicing/keep_annot.c:41:[value] warning: non-finite float value. +tests/slicing/keep_annot.i:40:[value] warning: signed overflow. assert -2147483648 ≤ nn-2; +tests/slicing/keep_annot.i:39:[value] warning: loop invariant got status unknown. +tests/slicing/keep_annot.i:40:[value] entering loop for the first time +tests/slicing/keep_annot.i:41:[value] warning: out of bounds read. assert \valid_read(dabs+(int)(ii+1)); +tests/slicing/keep_annot.i:41:[value] warning: non-finite float value. assert \is_finite((float)((double)((double)u-(double)((double)*(dabs+(int)(ii+1))*2.0)))); -tests/slicing/keep_annot.c:42:[value] warning: assertion got status unknown. +tests/slicing/keep_annot.i:42:[value] warning: assertion got status unknown. [value] Recording results for L [value] done for function L [slicing] making slicing project 'Slicing'... @@ -46,3 +46,5 @@ void L(float u, int nn, float *dabs, float *y) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_2_keep_annot.i (no preprocessing) diff --git a/tests/slicing/oracle/keep_annot.3.res.oracle b/tests/slicing/oracle/keep_annot.3.res.oracle index e25be890f15d32b14b4f51eac9dcc381b8a7c86d..036ebf350bfc5a023c9fe90ce81911c501537c6a 100644 --- a/tests/slicing/oracle/keep_annot.3.res.oracle +++ b/tests/slicing/oracle/keep_annot.3.res.oracle @@ -1,19 +1,19 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/keep_annot.c (with preprocessing) +[kernel] Parsing tests/slicing/keep_annot.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing an incomplete application starting at L [value] Computing initial state [value] Initial state computed [value:initial-state] Values of globals at initialization -tests/slicing/keep_annot.c:40:[value] warning: signed overflow. assert -2147483648 ≤ nn-2; -tests/slicing/keep_annot.c:39:[value] warning: loop invariant got status unknown. -tests/slicing/keep_annot.c:40:[value] entering loop for the first time -tests/slicing/keep_annot.c:41:[value] warning: out of bounds read. assert \valid_read(dabs+(int)(ii+1)); -tests/slicing/keep_annot.c:41:[value] warning: non-finite float value. +tests/slicing/keep_annot.i:40:[value] warning: signed overflow. assert -2147483648 ≤ nn-2; +tests/slicing/keep_annot.i:39:[value] warning: loop invariant got status unknown. +tests/slicing/keep_annot.i:40:[value] entering loop for the first time +tests/slicing/keep_annot.i:41:[value] warning: out of bounds read. assert \valid_read(dabs+(int)(ii+1)); +tests/slicing/keep_annot.i:41:[value] warning: non-finite float value. assert \is_finite((float)((double)((double)u-(double)((double)*(dabs+(int)(ii+1))*2.0)))); -tests/slicing/keep_annot.c:42:[value] warning: assertion got status unknown. +tests/slicing/keep_annot.i:42:[value] warning: assertion got status unknown. [value] Recording results for L [value] done for function L [slicing] making slicing project 'Slicing'... @@ -44,3 +44,5 @@ void L(float u, int nn, float *dabs, float *y) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_3_keep_annot.i (no preprocessing) diff --git a/tests/slicing/oracle/keep_annot.4.res.oracle b/tests/slicing/oracle/keep_annot.4.res.oracle index 2cf92eb00d63ef85e34d209a79e9bd108da3a81c..ee6db1de5ec9a0788f01205bd1271aacf477f74c 100644 --- a/tests/slicing/oracle/keep_annot.4.res.oracle +++ b/tests/slicing/oracle/keep_annot.4.res.oracle @@ -1,13 +1,13 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/keep_annot.c (with preprocessing) +[kernel] Parsing tests/slicing/keep_annot.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at bts1110 [value] Computing initial state [value] Initial state computed [value:initial-state] Values of globals at initialization -tests/slicing/keep_annot.c:50:[value] assertion got status valid. -tests/slicing/keep_annot.c:52:[value] warning: assertion got status unknown. +tests/slicing/keep_annot.i:50:[value] assertion got status valid. +tests/slicing/keep_annot.i:52:[value] warning: assertion got status unknown. [value] Recording results for bts1110 [value] done for function bts1110 [slicing] making slicing project 'Slicing'... @@ -33,3 +33,5 @@ int bts1110(int x) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_4_keep_annot.i (no preprocessing) diff --git a/tests/slicing/oracle/loop_infinite.res.oracle b/tests/slicing/oracle/loop_infinite.res.oracle index 4fe04cb074bb4101b663a6b55f7ffd7a88b8c26a..86c39747587566da9fbcd6a152b5022c7de86d8d 100644 --- a/tests/slicing/oracle/loop_infinite.res.oracle +++ b/tests/slicing/oracle/loop_infinite.res.oracle @@ -1,12 +1,12 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/loop_infinite.c (with preprocessing) +[kernel] Parsing tests/slicing/loop_infinite.i (no preprocessing) [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed [value:initial-state] Values of globals at initialization -tests/slicing/loop_infinite.c:9:[value] entering loop for the first time -tests/slicing/loop_infinite.c:10:[value] warning: signed overflow. assert a+1 ≤ 2147483647; +tests/slicing/loop_infinite.i:9:[value] entering loop for the first time +tests/slicing/loop_infinite.i:10:[value] warning: signed overflow. assert a+1 ≤ 2147483647; [value] Recording results for main [value] done for function main [from] Computing for function main @@ -40,3 +40,5 @@ int main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_0_loop_infinite.i (no preprocessing) diff --git a/tests/slicing/oracle/loop_simple.res.oracle b/tests/slicing/oracle/loop_simple.res.oracle index b85c958d913a285b3c05f83f1b1d1920910da914..94ec8f0afc8b942b3be17110200acec4d04c21e2 100644 --- a/tests/slicing/oracle/loop_simple.res.oracle +++ b/tests/slicing/oracle/loop_simple.res.oracle @@ -1,14 +1,14 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/loop_simple.c (with preprocessing) +[kernel] Parsing tests/slicing/loop_simple.i (no preprocessing) [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed [value:initial-state] Values of globals at initialization -tests/slicing/loop_simple.c:8:[value] entering loop for the first time -tests/slicing/loop_simple.c:10:[value] entering loop for the first time -tests/slicing/loop_simple.c:12:[value] entering loop for the first time -tests/slicing/loop_simple.c:16:[value] entering loop for the first time +tests/slicing/loop_simple.i:8:[value] entering loop for the first time +tests/slicing/loop_simple.i:10:[value] entering loop for the first time +tests/slicing/loop_simple.i:12:[value] entering loop for the first time +tests/slicing/loop_simple.i:16:[value] entering loop for the first time [value] Recording results for main [value] done for function main [from] Computing for function main @@ -56,3 +56,5 @@ int main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_0_loop_simple.i (no preprocessing) diff --git a/tests/slicing/oracle/loops.0.res.oracle b/tests/slicing/oracle/loops.0.res.oracle index 691eea315c3c78a5e55bc65d1951e7b6758ae24e..8dad3e739a4b6e44fadaa5317dd291735be7a0fa 100644 --- a/tests/slicing/oracle/loops.0.res.oracle +++ b/tests/slicing/oracle/loops.0.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/loops.c (with preprocessing) +[kernel] Parsing tests/slicing/loops.i (no preprocessing) [value] Analyzing an incomplete application starting at f1 [value] Computing initial state [value] Initial state computed @@ -10,9 +10,9 @@ X ∈ [--..--] Y ∈ [--..--] Z ∈ [--..--] -tests/slicing/loops.c:34:[value] entering loop for the first time -tests/slicing/loops.c:36:[value] assertion got status valid. -tests/slicing/loops.c:35:[value] warning: signed overflow. assert s+1 ≤ 2147483647; +tests/slicing/loops.i:34:[value] entering loop for the first time +tests/slicing/loops.i:36:[value] assertion got status valid. +tests/slicing/loops.i:35:[value] warning: signed overflow. assert s+1 ≤ 2147483647; [value] Recording results for f1 [value] done for function f1 [from] Computing for function f1 @@ -48,3 +48,5 @@ void f1(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_0_loops.i (no preprocessing) diff --git a/tests/slicing/oracle/loops.1.res.oracle b/tests/slicing/oracle/loops.1.res.oracle index 01e8c336fca5c18803d483f45b4d84e3153b258c..5ef79b28d15ef3893d1417969fe71b8490a27b04 100644 --- a/tests/slicing/oracle/loops.1.res.oracle +++ b/tests/slicing/oracle/loops.1.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/loops.c (with preprocessing) +[kernel] Parsing tests/slicing/loops.i (no preprocessing) [value] Analyzing an incomplete application starting at f1 [value] Computing initial state [value] Initial state computed @@ -10,9 +10,9 @@ X ∈ [--..--] Y ∈ [--..--] Z ∈ [--..--] -tests/slicing/loops.c:34:[value] entering loop for the first time -tests/slicing/loops.c:36:[value] assertion got status valid. -tests/slicing/loops.c:35:[value] warning: signed overflow. assert s+1 ≤ 2147483647; +tests/slicing/loops.i:34:[value] entering loop for the first time +tests/slicing/loops.i:36:[value] assertion got status valid. +tests/slicing/loops.i:35:[value] warning: signed overflow. assert s+1 ≤ 2147483647; [value] Recording results for f1 [value] done for function f1 [from] Computing for function f1 @@ -51,3 +51,5 @@ void f1(int c) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_1_loops.i (no preprocessing) diff --git a/tests/slicing/oracle/loops.10.res.oracle b/tests/slicing/oracle/loops.10.res.oracle index e30889f52d09267e19dc6bd22b7c234146342264..fbaa0f748114ac9749b90503415aeb09b5d2f105 100644 --- a/tests/slicing/oracle/loops.10.res.oracle +++ b/tests/slicing/oracle/loops.10.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/loops.c (with preprocessing) +[kernel] Parsing tests/slicing/loops.i (no preprocessing) [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed @@ -11,14 +11,14 @@ Y ∈ {0} Z ∈ {0} [value] computing for function may_write_Y_from_Z <- main. - Called from tests/slicing/loops.c:199. + Called from tests/slicing/loops.i:199. [value] using specification for function may_write_Y_from_Z [value] Done for function may_write_Y_from_Z [value] computing for function loop <- main. - Called from tests/slicing/loops.c:202. -tests/slicing/loops.c:176:[value] entering loop for the first time -tests/slicing/loops.c:183:[value] assertion got status valid. -tests/slicing/loops.c:179:[value] warning: signed overflow. assert X+1 ≤ 2147483647; + Called from tests/slicing/loops.i:202. +tests/slicing/loops.i:176:[value] entering loop for the first time +tests/slicing/loops.i:183:[value] assertion got status valid. +tests/slicing/loops.i:179:[value] warning: signed overflow. assert X+1 ≤ 2147483647; [value] Recording results for loop [value] Done for function loop [value] Recording results for main @@ -44,7 +44,7 @@ tests/slicing/loops.c:179:[value] warning: signed overflow. assert X+1 ≤ 21474 [slicing] making slicing project 'Slicing'... [slicing] interpreting slicing requests from the command line... [pdg] computing for function loop -tests/slicing/loops.c:187:[pdg] warning: no final state. Probably unreachable... +tests/slicing/loops.i:187:[pdg] warning: no final state. Probably unreachable... [pdg] done for function loop [slicing] applying all slicing requests... [slicing] applying 0 actions... @@ -52,7 +52,7 @@ tests/slicing/loops.c:187:[pdg] warning: no final state. Probably unreachable... [slicing] applying 1 actions... [slicing] applying actions: 1/1... [pdg] computing for function main -tests/slicing/loops.c:204:[pdg] warning: no final state. Probably unreachable... +tests/slicing/loops.i:204:[pdg] warning: no final state. Probably unreachable... [pdg] done for function main [slicing] exporting project to 'Slicing export'... [slicing] applying all slicing requests... @@ -82,3 +82,5 @@ void main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_10_loops.i (no preprocessing) diff --git a/tests/slicing/oracle/loops.11.res.oracle b/tests/slicing/oracle/loops.11.res.oracle index 3dddb41e8ff5808ee925cae3039153535cf41317..2ee25f2f5e5b7025067108d826882424ba81b6b8 100644 --- a/tests/slicing/oracle/loops.11.res.oracle +++ b/tests/slicing/oracle/loops.11.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/loops.c (with preprocessing) +[kernel] Parsing tests/slicing/loops.i (no preprocessing) [value] Analyzing a complete application starting at loop [value] Computing initial state [value] Initial state computed @@ -10,9 +10,9 @@ X ∈ {0} Y ∈ {0} Z ∈ {0} -tests/slicing/loops.c:176:[value] entering loop for the first time -tests/slicing/loops.c:183:[value] assertion got status valid. -tests/slicing/loops.c:179:[value] warning: signed overflow. assert X+1 ≤ 2147483647; +tests/slicing/loops.i:176:[value] entering loop for the first time +tests/slicing/loops.i:183:[value] assertion got status valid. +tests/slicing/loops.i:179:[value] warning: signed overflow. assert X+1 ≤ 2147483647; [value] Recording results for loop [value] done for function loop [from] Computing for function loop @@ -47,3 +47,5 @@ void loop(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_11_loops.i (no preprocessing) diff --git a/tests/slicing/oracle/loops.12.res.oracle b/tests/slicing/oracle/loops.12.res.oracle index 759a212d130685445d22a885d48ac44a06ca24a2..cbe1d6e97252879dee2d202c7ca1c8dbd2a33b82 100644 --- a/tests/slicing/oracle/loops.12.res.oracle +++ b/tests/slicing/oracle/loops.12.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/loops.c (with preprocessing) +[kernel] Parsing tests/slicing/loops.i (no preprocessing) [value] Analyzing a complete application starting at loop [value] Computing initial state [value] Initial state computed @@ -10,9 +10,9 @@ X ∈ {0} Y ∈ {0} Z ∈ {0} -tests/slicing/loops.c:176:[value] entering loop for the first time -tests/slicing/loops.c:183:[value] assertion got status valid. -tests/slicing/loops.c:179:[value] warning: signed overflow. assert X+1 ≤ 2147483647; +tests/slicing/loops.i:176:[value] entering loop for the first time +tests/slicing/loops.i:183:[value] assertion got status valid. +tests/slicing/loops.i:179:[value] warning: signed overflow. assert X+1 ≤ 2147483647; [value] Recording results for loop [value] done for function loop [from] Computing for function loop @@ -58,3 +58,5 @@ void loop(int cond) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_12_loops.i (no preprocessing) diff --git a/tests/slicing/oracle/loops.13.res.oracle b/tests/slicing/oracle/loops.13.res.oracle index 759a212d130685445d22a885d48ac44a06ca24a2..1ba1ae8bd5cd1d08e7e9028b97299f77546af1ee 100644 --- a/tests/slicing/oracle/loops.13.res.oracle +++ b/tests/slicing/oracle/loops.13.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/loops.c (with preprocessing) +[kernel] Parsing tests/slicing/loops.i (no preprocessing) [value] Analyzing a complete application starting at loop [value] Computing initial state [value] Initial state computed @@ -10,9 +10,9 @@ X ∈ {0} Y ∈ {0} Z ∈ {0} -tests/slicing/loops.c:176:[value] entering loop for the first time -tests/slicing/loops.c:183:[value] assertion got status valid. -tests/slicing/loops.c:179:[value] warning: signed overflow. assert X+1 ≤ 2147483647; +tests/slicing/loops.i:176:[value] entering loop for the first time +tests/slicing/loops.i:183:[value] assertion got status valid. +tests/slicing/loops.i:179:[value] warning: signed overflow. assert X+1 ≤ 2147483647; [value] Recording results for loop [value] done for function loop [from] Computing for function loop @@ -58,3 +58,5 @@ void loop(int cond) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_13_loops.i (no preprocessing) diff --git a/tests/slicing/oracle/loops.14.res.oracle b/tests/slicing/oracle/loops.14.res.oracle index 3dddb41e8ff5808ee925cae3039153535cf41317..cb280eff23fad3b8204dcb9cf1b61fd40768ab69 100644 --- a/tests/slicing/oracle/loops.14.res.oracle +++ b/tests/slicing/oracle/loops.14.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/loops.c (with preprocessing) +[kernel] Parsing tests/slicing/loops.i (no preprocessing) [value] Analyzing a complete application starting at loop [value] Computing initial state [value] Initial state computed @@ -10,9 +10,9 @@ X ∈ {0} Y ∈ {0} Z ∈ {0} -tests/slicing/loops.c:176:[value] entering loop for the first time -tests/slicing/loops.c:183:[value] assertion got status valid. -tests/slicing/loops.c:179:[value] warning: signed overflow. assert X+1 ≤ 2147483647; +tests/slicing/loops.i:176:[value] entering loop for the first time +tests/slicing/loops.i:183:[value] assertion got status valid. +tests/slicing/loops.i:179:[value] warning: signed overflow. assert X+1 ≤ 2147483647; [value] Recording results for loop [value] done for function loop [from] Computing for function loop @@ -47,3 +47,5 @@ void loop(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_14_loops.i (no preprocessing) diff --git a/tests/slicing/oracle/loops.15.res.oracle b/tests/slicing/oracle/loops.15.res.oracle index 11478d5138f04e13137a089c9e7a897109a51a1f..47a89e08bc8e391ac5da2aed028e29b7cb8b4011 100644 --- a/tests/slicing/oracle/loops.15.res.oracle +++ b/tests/slicing/oracle/loops.15.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/loops.c (with preprocessing) +[kernel] Parsing tests/slicing/loops.i (no preprocessing) [value] Analyzing an incomplete application starting at stop_f1 [value] Computing initial state [value] Initial state computed @@ -10,11 +10,11 @@ X ∈ [--..--] Y ∈ [--..--] Z ∈ [--..--] -tests/slicing/loops.c:66:[value] entering loop for the first time -tests/slicing/loops.c:68:[value] assertion got status valid. +tests/slicing/loops.i:66:[value] entering loop for the first time +tests/slicing/loops.i:68:[value] assertion got status valid. [value] computing for function stop <- stop_f1. - Called from tests/slicing/loops.c:70. -tests/slicing/loops.c:70:[kernel] warning: Neither code nor specification for function stop, generating default assigns from the prototype + Called from tests/slicing/loops.i:70. +tests/slicing/loops.i:70:[kernel] warning: Neither code nor specification for function stop, generating default assigns from the prototype [value] using specification for function stop [value] Done for function stop [value] Recording results for stop_f1 @@ -56,3 +56,5 @@ void stop_f1(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_15_loops.i (no preprocessing) diff --git a/tests/slicing/oracle/loops.16.res.oracle b/tests/slicing/oracle/loops.16.res.oracle index 07eadf352ecbe3c1cbb0259e8de23491059c6cc9..3b0b898b3dcde5d2b09a47bd5f6883244a6a7636 100644 --- a/tests/slicing/oracle/loops.16.res.oracle +++ b/tests/slicing/oracle/loops.16.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/loops.c (with preprocessing) +[kernel] Parsing tests/slicing/loops.i (no preprocessing) [value] Analyzing an incomplete application starting at stop_f1 [value] Computing initial state [value] Initial state computed @@ -10,11 +10,11 @@ X ∈ [--..--] Y ∈ [--..--] Z ∈ [--..--] -tests/slicing/loops.c:66:[value] entering loop for the first time -tests/slicing/loops.c:68:[value] assertion got status valid. +tests/slicing/loops.i:66:[value] entering loop for the first time +tests/slicing/loops.i:68:[value] assertion got status valid. [value] computing for function stop <- stop_f1. - Called from tests/slicing/loops.c:70. -tests/slicing/loops.c:70:[kernel] warning: Neither code nor specification for function stop, generating default assigns from the prototype + Called from tests/slicing/loops.i:70. +tests/slicing/loops.i:70:[kernel] warning: Neither code nor specification for function stop, generating default assigns from the prototype [value] using specification for function stop [value] Done for function stop [value] Recording results for stop_f1 @@ -59,3 +59,5 @@ void stop_f1(int c) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_16_loops.i (no preprocessing) diff --git a/tests/slicing/oracle/loops.17.res.oracle b/tests/slicing/oracle/loops.17.res.oracle index c897d528294ddc24b4535bba79314489da6afb92..ed02b6c343d47152f238c8e4cfb8f8cfa4d6abdb 100644 --- a/tests/slicing/oracle/loops.17.res.oracle +++ b/tests/slicing/oracle/loops.17.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/loops.c (with preprocessing) +[kernel] Parsing tests/slicing/loops.i (no preprocessing) [value] Analyzing an incomplete application starting at stop_f2 [value] Computing initial state [value] Initial state computed @@ -10,12 +10,12 @@ X ∈ [--..--] Y ∈ [--..--] Z ∈ [--..--] -tests/slicing/loops.c:82:[value] entering loop for the first time -tests/slicing/loops.c:82:[value] warning: signed overflow. assert c+10 ≤ 2147483647; -tests/slicing/loops.c:88:[value] warning: assertion got status unknown. +tests/slicing/loops.i:82:[value] entering loop for the first time +tests/slicing/loops.i:82:[value] warning: signed overflow. assert c+10 ≤ 2147483647; +tests/slicing/loops.i:88:[value] warning: assertion got status unknown. [value] computing for function stop <- stop_f2. - Called from tests/slicing/loops.c:89. -tests/slicing/loops.c:89:[kernel] warning: Neither code nor specification for function stop, generating default assigns from the prototype + Called from tests/slicing/loops.i:89. +tests/slicing/loops.i:89:[kernel] warning: Neither code nor specification for function stop, generating default assigns from the prototype [value] using specification for function stop [value] Done for function stop [value] Recording results for stop_f2 @@ -60,3 +60,5 @@ void stop_f2(int c) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_17_loops.i (no preprocessing) diff --git a/tests/slicing/oracle/loops.18.res.oracle b/tests/slicing/oracle/loops.18.res.oracle index 75070f8269ed9d1a59d4bd57b0211fae58c0297c..d746f60e0819fed3ca0e8ad88bba4f0118c6fbf4 100644 --- a/tests/slicing/oracle/loops.18.res.oracle +++ b/tests/slicing/oracle/loops.18.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/loops.c (with preprocessing) +[kernel] Parsing tests/slicing/loops.i (no preprocessing) [value] Analyzing an incomplete application starting at stop_f2 [value] Computing initial state [value] Initial state computed @@ -10,12 +10,12 @@ X ∈ [--..--] Y ∈ [--..--] Z ∈ [--..--] -tests/slicing/loops.c:82:[value] entering loop for the first time -tests/slicing/loops.c:82:[value] warning: signed overflow. assert c+10 ≤ 2147483647; -tests/slicing/loops.c:88:[value] warning: assertion got status unknown. +tests/slicing/loops.i:82:[value] entering loop for the first time +tests/slicing/loops.i:82:[value] warning: signed overflow. assert c+10 ≤ 2147483647; +tests/slicing/loops.i:88:[value] warning: assertion got status unknown. [value] computing for function stop <- stop_f2. - Called from tests/slicing/loops.c:89. -tests/slicing/loops.c:89:[kernel] warning: Neither code nor specification for function stop, generating default assigns from the prototype + Called from tests/slicing/loops.i:89. +tests/slicing/loops.i:89:[kernel] warning: Neither code nor specification for function stop, generating default assigns from the prototype [value] using specification for function stop [value] Done for function stop [value] Recording results for stop_f2 @@ -60,3 +60,5 @@ void stop_f2(int c) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_18_loops.i (no preprocessing) diff --git a/tests/slicing/oracle/loops.19.res.oracle b/tests/slicing/oracle/loops.19.res.oracle index 60dfea0b18d115eb21cd8627e7a12a67d70638f3..8a586a78cf180623fbb2b939ae00fd357990e415 100644 --- a/tests/slicing/oracle/loops.19.res.oracle +++ b/tests/slicing/oracle/loops.19.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/loops.c (with preprocessing) +[kernel] Parsing tests/slicing/loops.i (no preprocessing) [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed @@ -11,14 +11,14 @@ Y ∈ {0} Z ∈ {0} [value] computing for function may_write_Y_from_Z <- main. - Called from tests/slicing/loops.c:199. + Called from tests/slicing/loops.i:199. [value] using specification for function may_write_Y_from_Z [value] Done for function may_write_Y_from_Z [value] computing for function loop <- main. - Called from tests/slicing/loops.c:202. -tests/slicing/loops.c:176:[value] entering loop for the first time -tests/slicing/loops.c:183:[value] assertion got status valid. -tests/slicing/loops.c:179:[value] warning: signed overflow. assert X+1 ≤ 2147483647; + Called from tests/slicing/loops.i:202. +tests/slicing/loops.i:176:[value] entering loop for the first time +tests/slicing/loops.i:183:[value] assertion got status valid. +tests/slicing/loops.i:179:[value] warning: signed overflow. assert X+1 ≤ 2147483647; [value] Recording results for loop [value] Done for function loop [value] Recording results for main @@ -51,7 +51,7 @@ tests/slicing/loops.c:179:[value] warning: signed overflow. assert X+1 ≤ 21474 [slicing] applying 1 actions... [slicing] applying actions: 1/1... [pdg] computing for function main -tests/slicing/loops.c:204:[pdg] warning: no final state. Probably unreachable... +tests/slicing/loops.i:204:[pdg] warning: no final state. Probably unreachable... [pdg] done for function main [slicing] exporting project to 'Slicing export'... [slicing] applying all slicing requests... @@ -65,3 +65,5 @@ void main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_19_loops.i (no preprocessing) diff --git a/tests/slicing/oracle/loops.2.res.oracle b/tests/slicing/oracle/loops.2.res.oracle index 821408911703c9cdcbdd968461fb842c1e4eb62d..8499130921b59cf89f5f4b72a0a4c4dbc38b9696 100644 --- a/tests/slicing/oracle/loops.2.res.oracle +++ b/tests/slicing/oracle/loops.2.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/loops.c (with preprocessing) +[kernel] Parsing tests/slicing/loops.i (no preprocessing) [value] Analyzing an incomplete application starting at f2 [value] Computing initial state [value] Initial state computed @@ -10,10 +10,10 @@ X ∈ [--..--] Y ∈ [--..--] Z ∈ [--..--] -tests/slicing/loops.c:50:[value] entering loop for the first time -tests/slicing/loops.c:56:[value] warning: assertion got status unknown. -tests/slicing/loops.c:52:[value] warning: signed overflow. assert x1+1 ≤ 2147483647; -tests/slicing/loops.c:54:[value] warning: signed overflow. assert x2+1 ≤ 2147483647; +tests/slicing/loops.i:50:[value] entering loop for the first time +tests/slicing/loops.i:56:[value] warning: assertion got status unknown. +tests/slicing/loops.i:52:[value] warning: signed overflow. assert x1+1 ≤ 2147483647; +tests/slicing/loops.i:54:[value] warning: signed overflow. assert x2+1 ≤ 2147483647; [value] Recording results for f2 [value] done for function f2 [from] Computing for function f2 @@ -28,7 +28,7 @@ tests/slicing/loops.c:54:[value] warning: signed overflow. assert x2+1 ≤ 21474 [slicing] making slicing project 'Slicing'... [slicing] interpreting slicing requests from the command line... [pdg] computing for function f2 -tests/slicing/loops.c:50:[pdg] warning: no final state. Probably unreachable... +tests/slicing/loops.i:50:[pdg] warning: no final state. Probably unreachable... [pdg] done for function f2 [slicing] applying all slicing requests... [slicing] applying 0 actions... @@ -53,3 +53,5 @@ void f2(int c) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_2_loops.i (no preprocessing) diff --git a/tests/slicing/oracle/loops.20.res.oracle b/tests/slicing/oracle/loops.20.res.oracle index b08d1b2410064e6a78165c45de7931fa2f37d877..f38b78d35668dcd434d511d2f5310624a05a3001 100644 --- a/tests/slicing/oracle/loops.20.res.oracle +++ b/tests/slicing/oracle/loops.20.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/loops.c (with preprocessing) +[kernel] Parsing tests/slicing/loops.i (no preprocessing) [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed @@ -11,14 +11,14 @@ Y ∈ {0} Z ∈ {0} [value] computing for function may_write_Y_from_Z <- main. - Called from tests/slicing/loops.c:199. + Called from tests/slicing/loops.i:199. [value] using specification for function may_write_Y_from_Z [value] Done for function may_write_Y_from_Z [value] computing for function loop <- main. - Called from tests/slicing/loops.c:202. -tests/slicing/loops.c:176:[value] entering loop for the first time -tests/slicing/loops.c:183:[value] assertion got status valid. -tests/slicing/loops.c:179:[value] warning: signed overflow. assert X+1 ≤ 2147483647; + Called from tests/slicing/loops.i:202. +tests/slicing/loops.i:176:[value] entering loop for the first time +tests/slicing/loops.i:183:[value] assertion got status valid. +tests/slicing/loops.i:179:[value] warning: signed overflow. assert X+1 ≤ 2147483647; [value] Recording results for loop [value] Done for function loop [value] Recording results for main @@ -46,7 +46,7 @@ tests/slicing/loops.c:179:[value] warning: signed overflow. assert X+1 ≤ 21474 [slicing] warning: No internal slicing request from the command line. [slicing] warning: Adding an extra request on the entry point of function: main. [pdg] computing for function main -tests/slicing/loops.c:204:[pdg] warning: no final state. Probably unreachable... +tests/slicing/loops.i:204:[pdg] warning: no final state. Probably unreachable... [pdg] done for function main [slicing] applying all slicing requests... [slicing] applying 0 actions... @@ -65,3 +65,5 @@ void main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_20_loops.i (no preprocessing) diff --git a/tests/slicing/oracle/loops.21.res.oracle b/tests/slicing/oracle/loops.21.res.oracle index 0a8d10134e40544c057f16282e0eb07a4b9b4683..9dbfb3171e9459f54e1e9a2441ad919420a5ec2d 100644 --- a/tests/slicing/oracle/loops.21.res.oracle +++ b/tests/slicing/oracle/loops.21.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/loops.c (with preprocessing) +[kernel] Parsing tests/slicing/loops.i (no preprocessing) [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed @@ -11,14 +11,14 @@ Y ∈ {0} Z ∈ {0} [value] computing for function may_write_Y_from_Z <- main. - Called from tests/slicing/loops.c:199. + Called from tests/slicing/loops.i:199. [value] using specification for function may_write_Y_from_Z [value] Done for function may_write_Y_from_Z [value] computing for function loop <- main. - Called from tests/slicing/loops.c:202. -tests/slicing/loops.c:176:[value] entering loop for the first time -tests/slicing/loops.c:183:[value] assertion got status valid. -tests/slicing/loops.c:179:[value] warning: signed overflow. assert X+1 ≤ 2147483647; + Called from tests/slicing/loops.i:202. +tests/slicing/loops.i:176:[value] entering loop for the first time +tests/slicing/loops.i:183:[value] assertion got status valid. +tests/slicing/loops.i:179:[value] warning: signed overflow. assert X+1 ≤ 2147483647; [value] Recording results for loop [value] Done for function loop [value] Recording results for main @@ -44,7 +44,7 @@ tests/slicing/loops.c:179:[value] warning: signed overflow. assert X+1 ≤ 21474 [slicing] making slicing project 'Slicing'... [slicing] interpreting slicing requests from the command line... [pdg] computing for function loop -tests/slicing/loops.c:187:[pdg] warning: no final state. Probably unreachable... +tests/slicing/loops.i:187:[pdg] warning: no final state. Probably unreachable... [pdg] done for function loop [pdg] computing for function may_write_Y_from_Z [pdg] done for function may_write_Y_from_Z @@ -54,7 +54,7 @@ tests/slicing/loops.c:187:[pdg] warning: no final state. Probably unreachable... [slicing] applying 2 actions... [slicing] applying actions: 1/2... [pdg] computing for function main -tests/slicing/loops.c:204:[pdg] warning: no final state. Probably unreachable... +tests/slicing/loops.i:204:[pdg] warning: no final state. Probably unreachable... [pdg] done for function main [slicing] applying actions: 2/2... [slicing] exporting project to 'Slicing export'... @@ -94,3 +94,5 @@ void main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_21_loops.i (no preprocessing) diff --git a/tests/slicing/oracle/loops.22.res.oracle b/tests/slicing/oracle/loops.22.res.oracle index 76b7cde6d79fca19b090ef5272727c2bd032961e..d039f41fa11396c24ebda1d61dceb2eb0adf5904 100644 --- a/tests/slicing/oracle/loops.22.res.oracle +++ b/tests/slicing/oracle/loops.22.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/loops.c (with preprocessing) +[kernel] Parsing tests/slicing/loops.i (no preprocessing) [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed @@ -11,14 +11,14 @@ Y ∈ {0} Z ∈ {0} [value] computing for function may_write_Y_from_Z <- main. - Called from tests/slicing/loops.c:199. + Called from tests/slicing/loops.i:199. [value] using specification for function may_write_Y_from_Z [value] Done for function may_write_Y_from_Z [value] computing for function loop <- main. - Called from tests/slicing/loops.c:202. -tests/slicing/loops.c:176:[value] entering loop for the first time -tests/slicing/loops.c:183:[value] assertion got status valid. -tests/slicing/loops.c:179:[value] warning: signed overflow. assert X+1 ≤ 2147483647; + Called from tests/slicing/loops.i:202. +tests/slicing/loops.i:176:[value] entering loop for the first time +tests/slicing/loops.i:183:[value] assertion got status valid. +tests/slicing/loops.i:179:[value] warning: signed overflow. assert X+1 ≤ 2147483647; [value] Recording results for loop [value] Done for function loop [value] Recording results for main @@ -44,7 +44,7 @@ tests/slicing/loops.c:179:[value] warning: signed overflow. assert X+1 ≤ 21474 [slicing] making slicing project 'Slicing'... [slicing] interpreting slicing requests from the command line... [pdg] computing for function loop -tests/slicing/loops.c:187:[pdg] warning: no final state. Probably unreachable... +tests/slicing/loops.i:187:[pdg] warning: no final state. Probably unreachable... [pdg] done for function loop [pdg] computing for function may_write_Y_from_Z [pdg] done for function may_write_Y_from_Z @@ -54,7 +54,7 @@ tests/slicing/loops.c:187:[pdg] warning: no final state. Probably unreachable... [slicing] applying 2 actions... [slicing] applying actions: 1/2... [pdg] computing for function main -tests/slicing/loops.c:204:[pdg] warning: no final state. Probably unreachable... +tests/slicing/loops.i:204:[pdg] warning: no final state. Probably unreachable... [pdg] done for function main [slicing] applying actions: 2/2... [slicing] exporting project to 'Slicing export'... @@ -94,3 +94,5 @@ void main(int y) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_22_loops.i (no preprocessing) diff --git a/tests/slicing/oracle/loops.23.res.oracle b/tests/slicing/oracle/loops.23.res.oracle index 864dea65b049fa46e631ad7056a52938ff412a85..35ca98fb4dc7f323c67d17d5ae26563c8f5af04e 100644 --- a/tests/slicing/oracle/loops.23.res.oracle +++ b/tests/slicing/oracle/loops.23.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/loops.c (with preprocessing) +[kernel] Parsing tests/slicing/loops.i (no preprocessing) [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed @@ -11,14 +11,14 @@ Y ∈ {0} Z ∈ {0} [value] computing for function may_write_Y_from_Z <- main. - Called from tests/slicing/loops.c:199. + Called from tests/slicing/loops.i:199. [value] using specification for function may_write_Y_from_Z [value] Done for function may_write_Y_from_Z [value] computing for function loop <- main. - Called from tests/slicing/loops.c:202. -tests/slicing/loops.c:176:[value] entering loop for the first time -tests/slicing/loops.c:183:[value] assertion got status valid. -tests/slicing/loops.c:179:[value] warning: signed overflow. assert X+1 ≤ 2147483647; + Called from tests/slicing/loops.i:202. +tests/slicing/loops.i:176:[value] entering loop for the first time +tests/slicing/loops.i:183:[value] assertion got status valid. +tests/slicing/loops.i:179:[value] warning: signed overflow. assert X+1 ≤ 2147483647; [value] Recording results for loop [value] Done for function loop [value] Recording results for main @@ -44,7 +44,7 @@ tests/slicing/loops.c:179:[value] warning: signed overflow. assert X+1 ≤ 21474 [slicing] making slicing project 'Slicing'... [slicing] interpreting slicing requests from the command line... [pdg] computing for function main -tests/slicing/loops.c:204:[pdg] warning: no final state. Probably unreachable... +tests/slicing/loops.i:204:[pdg] warning: no final state. Probably unreachable... [pdg] done for function main [slicing] applying all slicing requests... [slicing] applying 0 actions... @@ -67,3 +67,5 @@ void main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_23_loops.i (no preprocessing) diff --git a/tests/slicing/oracle/loops.24.res.oracle b/tests/slicing/oracle/loops.24.res.oracle index f27cc1ffa21dff8d5dfa76a5fc949cd06fc8950c..b1a3db343f23382958405bd714f384987a2fe304 100644 --- a/tests/slicing/oracle/loops.24.res.oracle +++ b/tests/slicing/oracle/loops.24.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/loops.c (with preprocessing) +[kernel] Parsing tests/slicing/loops.i (no preprocessing) [value] Analyzing an incomplete application starting at alarm [value] Computing initial state [value] Initial state computed @@ -10,8 +10,8 @@ X ∈ [--..--] Y ∈ [--..--] Z ∈ [--..--] -tests/slicing/loops.c:210:[value] assertion got status valid. -tests/slicing/loops.c:211:[value] warning: signed overflow. assert j+1 ≤ 2147483647; +tests/slicing/loops.i:210:[value] assertion got status valid. +tests/slicing/loops.i:211:[value] warning: signed overflow. assert j+1 ≤ 2147483647; [value] Recording results for alarm [value] done for function alarm [from] Computing for function alarm @@ -46,3 +46,5 @@ void alarm(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_24_loops.i (no preprocessing) diff --git a/tests/slicing/oracle/loops.3.res.oracle b/tests/slicing/oracle/loops.3.res.oracle index 5b29775572dfbf589285e895d0a61753113e8879..714c7618594575ba3b462a61b0e04eecc1411080 100644 --- a/tests/slicing/oracle/loops.3.res.oracle +++ b/tests/slicing/oracle/loops.3.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/loops.c (with preprocessing) +[kernel] Parsing tests/slicing/loops.i (no preprocessing) [value] Analyzing an incomplete application starting at f2 [value] Computing initial state [value] Initial state computed @@ -10,10 +10,10 @@ X ∈ [--..--] Y ∈ [--..--] Z ∈ [--..--] -tests/slicing/loops.c:50:[value] entering loop for the first time -tests/slicing/loops.c:56:[value] warning: assertion got status unknown. -tests/slicing/loops.c:52:[value] warning: signed overflow. assert x1+1 ≤ 2147483647; -tests/slicing/loops.c:54:[value] warning: signed overflow. assert x2+1 ≤ 2147483647; +tests/slicing/loops.i:50:[value] entering loop for the first time +tests/slicing/loops.i:56:[value] warning: assertion got status unknown. +tests/slicing/loops.i:52:[value] warning: signed overflow. assert x1+1 ≤ 2147483647; +tests/slicing/loops.i:54:[value] warning: signed overflow. assert x2+1 ≤ 2147483647; [value] Recording results for f2 [value] done for function f2 [from] Computing for function f2 @@ -28,7 +28,7 @@ tests/slicing/loops.c:54:[value] warning: signed overflow. assert x2+1 ≤ 21474 [slicing] making slicing project 'Slicing'... [slicing] interpreting slicing requests from the command line... [pdg] computing for function f2 -tests/slicing/loops.c:50:[pdg] warning: no final state. Probably unreachable... +tests/slicing/loops.i:50:[pdg] warning: no final state. Probably unreachable... [pdg] done for function f2 [slicing] applying all slicing requests... [slicing] applying 0 actions... @@ -53,3 +53,5 @@ void f2(int c) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_3_loops.i (no preprocessing) diff --git a/tests/slicing/oracle/loops.4.res.oracle b/tests/slicing/oracle/loops.4.res.oracle index 2a6c931d85806138dbf1e0b218466f1a4038a5f6..afaf22b173ba990f9cbf159b160eb22c1113ab1f 100644 --- a/tests/slicing/oracle/loops.4.res.oracle +++ b/tests/slicing/oracle/loops.4.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/loops.c (with preprocessing) +[kernel] Parsing tests/slicing/loops.i (no preprocessing) [value] Analyzing a complete application starting at test_infinite_loop_3 [value] Computing initial state [value] Initial state computed @@ -10,7 +10,7 @@ X ∈ {0} Y ∈ {0} Z ∈ {0} -tests/slicing/loops.c:108:[value] entering loop for the first time +tests/slicing/loops.i:108:[value] entering loop for the first time [value] Recording results for test_infinite_loop_3 [value] done for function test_infinite_loop_3 [from] Computing for function test_infinite_loop_3 @@ -48,3 +48,5 @@ void test_infinite_loop_3(int ctrl1, int ctrl2, int data1, int data2) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_4_loops.i (no preprocessing) diff --git a/tests/slicing/oracle/loops.5.res.oracle b/tests/slicing/oracle/loops.5.res.oracle index 2795ffdcebdd9f5f735a805a1f4cc188b7924793..091a0d15361199d6fd66b6bb21fb49d2d77db104 100644 --- a/tests/slicing/oracle/loops.5.res.oracle +++ b/tests/slicing/oracle/loops.5.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/loops.c (with preprocessing) +[kernel] Parsing tests/slicing/loops.i (no preprocessing) [value] Analyzing a complete application starting at test_infinite_loop_4 [value] Computing initial state [value] Initial state computed @@ -10,16 +10,16 @@ X ∈ {0} Y ∈ {0} Z ∈ {0} -tests/slicing/loops.c:125:[value] entering loop for the first time -tests/slicing/loops.c:141:[value] warning: signed overflow. assert -2147483648 ≤ G+data2; -tests/slicing/loops.c:141:[value] warning: signed overflow. assert G+data2 ≤ 2147483647; -tests/slicing/loops.c:126:[value] warning: signed overflow. assert -2147483648 ≤ G+data1; -tests/slicing/loops.c:126:[value] warning: signed overflow. assert G+data1 ≤ 2147483647; -tests/slicing/loops.c:129:[value] warning: signed overflow. assert -2147483648 ≤ G+no_data; -tests/slicing/loops.c:129:[value] warning: signed overflow. assert G+no_data ≤ 2147483647; -tests/slicing/loops.c:132:[value] entering loop for the first time -tests/slicing/loops.c:133:[value] warning: signed overflow. assert -2147483648 ≤ G+no_data; -tests/slicing/loops.c:133:[value] warning: signed overflow. assert G+no_data ≤ 2147483647; +tests/slicing/loops.i:125:[value] entering loop for the first time +tests/slicing/loops.i:141:[value] warning: signed overflow. assert -2147483648 ≤ G+data2; +tests/slicing/loops.i:141:[value] warning: signed overflow. assert G+data2 ≤ 2147483647; +tests/slicing/loops.i:126:[value] warning: signed overflow. assert -2147483648 ≤ G+data1; +tests/slicing/loops.i:126:[value] warning: signed overflow. assert G+data1 ≤ 2147483647; +tests/slicing/loops.i:129:[value] warning: signed overflow. assert -2147483648 ≤ G+no_data; +tests/slicing/loops.i:129:[value] warning: signed overflow. assert G+no_data ≤ 2147483647; +tests/slicing/loops.i:132:[value] entering loop for the first time +tests/slicing/loops.i:133:[value] warning: signed overflow. assert -2147483648 ≤ G+no_data; +tests/slicing/loops.i:133:[value] warning: signed overflow. assert G+no_data ≤ 2147483647; [value] Recording results for test_infinite_loop_4 [value] done for function test_infinite_loop_4 [from] Computing for function test_infinite_loop_4 @@ -57,3 +57,5 @@ void test_infinite_loop_4(int ctrl1, int ctrl2, int data1, int data2) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_5_loops.i (no preprocessing) diff --git a/tests/slicing/oracle/loops.6.res.oracle b/tests/slicing/oracle/loops.6.res.oracle index 227b09108c29e409b27b98778daccb9b8b6a1d30..76cac439f4b931bf4c150b7ae579c36e789ceafe 100644 --- a/tests/slicing/oracle/loops.6.res.oracle +++ b/tests/slicing/oracle/loops.6.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/loops.c (with preprocessing) +[kernel] Parsing tests/slicing/loops.i (no preprocessing) [value] Analyzing a complete application starting at test_infinite_loop_5 [value] Computing initial state [value] Initial state computed @@ -10,16 +10,16 @@ X ∈ {0} Y ∈ {0} Z ∈ {0} -tests/slicing/loops.c:149:[value] entering loop for the first time -tests/slicing/loops.c:165:[value] warning: signed overflow. assert -2147483648 ≤ G+data2; -tests/slicing/loops.c:165:[value] warning: signed overflow. assert G+data2 ≤ 2147483647; -tests/slicing/loops.c:150:[value] warning: signed overflow. assert -2147483648 ≤ G+data1; -tests/slicing/loops.c:150:[value] warning: signed overflow. assert G+data1 ≤ 2147483647; -tests/slicing/loops.c:154:[value] warning: signed overflow. assert -2147483648 ≤ G+no_data; -tests/slicing/loops.c:154:[value] warning: signed overflow. assert G+no_data ≤ 2147483647; -tests/slicing/loops.c:155:[value] entering loop for the first time -tests/slicing/loops.c:156:[value] warning: signed overflow. assert -2147483648 ≤ G+no_data; -tests/slicing/loops.c:156:[value] warning: signed overflow. assert G+no_data ≤ 2147483647; +tests/slicing/loops.i:149:[value] entering loop for the first time +tests/slicing/loops.i:165:[value] warning: signed overflow. assert -2147483648 ≤ G+data2; +tests/slicing/loops.i:165:[value] warning: signed overflow. assert G+data2 ≤ 2147483647; +tests/slicing/loops.i:150:[value] warning: signed overflow. assert -2147483648 ≤ G+data1; +tests/slicing/loops.i:150:[value] warning: signed overflow. assert G+data1 ≤ 2147483647; +tests/slicing/loops.i:154:[value] warning: signed overflow. assert -2147483648 ≤ G+no_data; +tests/slicing/loops.i:154:[value] warning: signed overflow. assert G+no_data ≤ 2147483647; +tests/slicing/loops.i:155:[value] entering loop for the first time +tests/slicing/loops.i:156:[value] warning: signed overflow. assert -2147483648 ≤ G+no_data; +tests/slicing/loops.i:156:[value] warning: signed overflow. assert G+no_data ≤ 2147483647; [value] Recording results for test_infinite_loop_5 [value] done for function test_infinite_loop_5 [from] Computing for function test_infinite_loop_5 @@ -57,3 +57,5 @@ void test_infinite_loop_5(int ctrl1, int ctrl2, int data1, int data2) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_6_loops.i (no preprocessing) diff --git a/tests/slicing/oracle/loops.7.res.oracle b/tests/slicing/oracle/loops.7.res.oracle index 3dddb41e8ff5808ee925cae3039153535cf41317..1b70d1aabd8c086fc77def1b586d495f9845538b 100644 --- a/tests/slicing/oracle/loops.7.res.oracle +++ b/tests/slicing/oracle/loops.7.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/loops.c (with preprocessing) +[kernel] Parsing tests/slicing/loops.i (no preprocessing) [value] Analyzing a complete application starting at loop [value] Computing initial state [value] Initial state computed @@ -10,9 +10,9 @@ X ∈ {0} Y ∈ {0} Z ∈ {0} -tests/slicing/loops.c:176:[value] entering loop for the first time -tests/slicing/loops.c:183:[value] assertion got status valid. -tests/slicing/loops.c:179:[value] warning: signed overflow. assert X+1 ≤ 2147483647; +tests/slicing/loops.i:176:[value] entering loop for the first time +tests/slicing/loops.i:183:[value] assertion got status valid. +tests/slicing/loops.i:179:[value] warning: signed overflow. assert X+1 ≤ 2147483647; [value] Recording results for loop [value] done for function loop [from] Computing for function loop @@ -47,3 +47,5 @@ void loop(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_7_loops.i (no preprocessing) diff --git a/tests/slicing/oracle/loops.8.res.oracle b/tests/slicing/oracle/loops.8.res.oracle index 9c29379e4db109f622b41ceeaa30280ff9febf65..bc6f9e6694fc852f7991edd1cdd7284bb0de89b8 100644 --- a/tests/slicing/oracle/loops.8.res.oracle +++ b/tests/slicing/oracle/loops.8.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/loops.c (with preprocessing) +[kernel] Parsing tests/slicing/loops.i (no preprocessing) [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed @@ -11,14 +11,14 @@ Y ∈ {0} Z ∈ {0} [value] computing for function may_write_Y_from_Z <- main. - Called from tests/slicing/loops.c:199. + Called from tests/slicing/loops.i:199. [value] using specification for function may_write_Y_from_Z [value] Done for function may_write_Y_from_Z [value] computing for function loop <- main. - Called from tests/slicing/loops.c:202. -tests/slicing/loops.c:176:[value] entering loop for the first time -tests/slicing/loops.c:183:[value] assertion got status valid. -tests/slicing/loops.c:179:[value] warning: signed overflow. assert X+1 ≤ 2147483647; + Called from tests/slicing/loops.i:202. +tests/slicing/loops.i:176:[value] entering loop for the first time +tests/slicing/loops.i:183:[value] assertion got status valid. +tests/slicing/loops.i:179:[value] warning: signed overflow. assert X+1 ≤ 2147483647; [value] Recording results for loop [value] Done for function loop [value] Recording results for main @@ -44,7 +44,7 @@ tests/slicing/loops.c:179:[value] warning: signed overflow. assert X+1 ≤ 21474 [slicing] making slicing project 'Slicing'... [slicing] interpreting slicing requests from the command line... [pdg] computing for function main -tests/slicing/loops.c:204:[pdg] warning: no final state. Probably unreachable... +tests/slicing/loops.i:204:[pdg] warning: no final state. Probably unreachable... [pdg] done for function main [slicing] applying all slicing requests... [slicing] applying 0 actions... @@ -52,7 +52,7 @@ tests/slicing/loops.c:204:[pdg] warning: no final state. Probably unreachable... [slicing] applying 1 actions... [slicing] applying actions: 1/1... [pdg] computing for function loop -tests/slicing/loops.c:187:[pdg] warning: no final state. Probably unreachable... +tests/slicing/loops.i:187:[pdg] warning: no final state. Probably unreachable... [pdg] done for function loop [slicing] exporting project to 'Slicing export'... [slicing] applying all slicing requests... @@ -77,3 +77,5 @@ void main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_8_loops.i (no preprocessing) diff --git a/tests/slicing/oracle/loops.9.res.oracle b/tests/slicing/oracle/loops.9.res.oracle index a49fb2fd494f38c46e68a2a7a6ed891f1a4216af..ba0a60058b9c4fa7c5c6092fce5e8d3e05eccf07 100644 --- a/tests/slicing/oracle/loops.9.res.oracle +++ b/tests/slicing/oracle/loops.9.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/loops.c (with preprocessing) +[kernel] Parsing tests/slicing/loops.i (no preprocessing) [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed @@ -11,14 +11,14 @@ Y ∈ {0} Z ∈ {0} [value] computing for function may_write_Y_from_Z <- main. - Called from tests/slicing/loops.c:199. + Called from tests/slicing/loops.i:199. [value] using specification for function may_write_Y_from_Z [value] Done for function may_write_Y_from_Z [value] computing for function loop <- main. - Called from tests/slicing/loops.c:202. -tests/slicing/loops.c:176:[value] entering loop for the first time -tests/slicing/loops.c:183:[value] assertion got status valid. -tests/slicing/loops.c:179:[value] warning: signed overflow. assert X+1 ≤ 2147483647; + Called from tests/slicing/loops.i:202. +tests/slicing/loops.i:176:[value] entering loop for the first time +tests/slicing/loops.i:183:[value] assertion got status valid. +tests/slicing/loops.i:179:[value] warning: signed overflow. assert X+1 ≤ 2147483647; [value] Recording results for loop [value] Done for function loop [value] Recording results for main @@ -44,7 +44,7 @@ tests/slicing/loops.c:179:[value] warning: signed overflow. assert X+1 ≤ 21474 [slicing] making slicing project 'Slicing'... [slicing] interpreting slicing requests from the command line... [pdg] computing for function loop -tests/slicing/loops.c:187:[pdg] warning: no final state. Probably unreachable... +tests/slicing/loops.i:187:[pdg] warning: no final state. Probably unreachable... [pdg] done for function loop [slicing] applying all slicing requests... [slicing] applying 0 actions... @@ -52,7 +52,7 @@ tests/slicing/loops.c:187:[pdg] warning: no final state. Probably unreachable... [slicing] applying 1 actions... [slicing] applying actions: 1/1... [pdg] computing for function main -tests/slicing/loops.c:204:[pdg] warning: no final state. Probably unreachable... +tests/slicing/loops.i:204:[pdg] warning: no final state. Probably unreachable... [pdg] done for function main [slicing] exporting project to 'Slicing export'... [slicing] applying all slicing requests... @@ -77,3 +77,5 @@ void main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_9_loops.i (no preprocessing) diff --git a/tests/slicing/oracle/mark_all_slices.res.oracle b/tests/slicing/oracle/mark_all_slices.res.oracle index 3841804585788dcfa45162211ec75c7b7fb8b92d..7f06c1d031366a8ee6682f9db74c0b5623931a43 100644 --- a/tests/slicing/oracle/mark_all_slices.res.oracle +++ b/tests/slicing/oracle/mark_all_slices.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/mark_all_slices.c (with preprocessing) +[kernel] Parsing tests/slicing/mark_all_slices.i (no preprocessing) [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed @@ -13,39 +13,39 @@ C2 ∈ {0} D2 ∈ {0} [value] computing for function fA <- main. - Called from tests/slicing/mark_all_slices.c:23. + Called from tests/slicing/mark_all_slices.i:23. [value] computing for function all <- fA <- main. - Called from tests/slicing/mark_all_slices.c:17. + Called from tests/slicing/mark_all_slices.i:17. [value] Recording results for all [value] Done for function all [value] Recording results for fA [value] Done for function fA [value] computing for function fB <- main. - Called from tests/slicing/mark_all_slices.c:24. + Called from tests/slicing/mark_all_slices.i:24. [value] computing for function all <- fB <- main. - Called from tests/slicing/mark_all_slices.c:18. + Called from tests/slicing/mark_all_slices.i:18. [value] Recording results for all [value] Done for function all [value] Recording results for fB [value] Done for function fB [value] computing for function fC <- main. - Called from tests/slicing/mark_all_slices.c:25. + Called from tests/slicing/mark_all_slices.i:25. [value] computing for function all <- fC <- main. - Called from tests/slicing/mark_all_slices.c:19. + Called from tests/slicing/mark_all_slices.i:19. [value] Recording results for all [value] Done for function all [value] Recording results for fC [value] Done for function fC [value] computing for function fD <- main. - Called from tests/slicing/mark_all_slices.c:26. + Called from tests/slicing/mark_all_slices.i:26. [value] computing for function all <- fD <- main. - Called from tests/slicing/mark_all_slices.c:20. + Called from tests/slicing/mark_all_slices.i:20. [value] Recording results for all [value] Done for function all [value] Recording results for fD [value] Done for function fD [value] computing for function all <- main. - Called from tests/slicing/mark_all_slices.c:27. + Called from tests/slicing/mark_all_slices.i:27. [value] Recording results for all [value] Done for function all [value] Recording results for main diff --git a/tests/slicing/oracle/merge.res.oracle b/tests/slicing/oracle/merge.res.oracle index 92d3e9df3663233838ece865365cc0486f666b0d..edcaf417ab0c860ca251da25bde86787ad8ccb21 100644 --- a/tests/slicing/oracle/merge.res.oracle +++ b/tests/slicing/oracle/merge.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/merge.c (with preprocessing) +[kernel] Parsing tests/slicing/merge.i (no preprocessing) [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed @@ -8,19 +8,19 @@ G2 ∈ {0} G3 ∈ {0} [value] computing for function g <- main. - Called from tests/slicing/merge.c:26. + Called from tests/slicing/merge.i:26. [value] computing for function init <- g <- main. - Called from tests/slicing/merge.c:21. + Called from tests/slicing/merge.i:21. [value] Recording results for init [value] Done for function init [value] computing for function add <- g <- main. - Called from tests/slicing/merge.c:22. -tests/slicing/merge.c:17:[value] warning: signed overflow. assert -2147483648 ≤ G1+a1; -tests/slicing/merge.c:17:[value] warning: signed overflow. assert G1+a1 ≤ 2147483647; -tests/slicing/merge.c:17:[value] warning: signed overflow. assert -2147483648 ≤ G2+a2; -tests/slicing/merge.c:17:[value] warning: signed overflow. assert G2+a2 ≤ 2147483647; -tests/slicing/merge.c:17:[value] warning: signed overflow. assert -2147483648 ≤ G3+a3; -tests/slicing/merge.c:17:[value] warning: signed overflow. assert G3+a3 ≤ 2147483647; + Called from tests/slicing/merge.i:22. +tests/slicing/merge.i:17:[value] warning: signed overflow. assert -2147483648 ≤ G1+a1; +tests/slicing/merge.i:17:[value] warning: signed overflow. assert G1+a1 ≤ 2147483647; +tests/slicing/merge.i:17:[value] warning: signed overflow. assert -2147483648 ≤ G2+a2; +tests/slicing/merge.i:17:[value] warning: signed overflow. assert G2+a2 ≤ 2147483647; +tests/slicing/merge.i:17:[value] warning: signed overflow. assert -2147483648 ≤ G3+a3; +tests/slicing/merge.i:17:[value] warning: signed overflow. assert G3+a3 ≤ 2147483647; [value] Recording results for add [value] Done for function add [value] Recording results for g diff --git a/tests/slicing/oracle/min_call.res.oracle b/tests/slicing/oracle/min_call.res.oracle index adf85bac9696ba6515b79162f66bbc251eb36d3c..0c880a0b9b6cf96a95ba31b00ac6a08f3396c390 100644 --- a/tests/slicing/oracle/min_call.res.oracle +++ b/tests/slicing/oracle/min_call.res.oracle @@ -1,599 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/min_call.c (with preprocessing) -tests/slicing/select_return.c:45:[kernel] warning: Calling undeclared function f. Old style K&R code? -[value] Analyzing an incomplete application starting at g -[value] Computing initial state -[value] Initial state computed -[value:initial-state] Values of globals at initialization - G ∈ [--..--] - H ∈ [--..--] - I ∈ [--..--] -[value] computing for function k <- g. - Called from tests/slicing/select_return.c:44. -[value] computing for function get <- k <- g. - Called from tests/slicing/select_return.c:35. -tests/slicing/select_return.c:35:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype -[value] using specification for function get -[value] Done for function get -[value] computing for function send_bis <- k <- g. - Called from tests/slicing/select_return.c:39. -tests/slicing/select_return.c:39:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype -[value] using specification for function send_bis -[value] Done for function send_bis -[value] Recording results for k -[value] Done for function k -[value] computing for function f <- g. - Called from tests/slicing/select_return.c:45. -[value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:49. -[value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. -[value] Done for function get -[value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. -[value] Done for function send_bis -[value] Recording results for k -[value] Done for function k -[value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:50. -[value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. -[value] Done for function get -[value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. -[value] Done for function send_bis -[value] Recording results for k -[value] Done for function k -[value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:51. -[value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. -[value] Done for function get -[value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. -[value] Done for function send_bis -[value] Recording results for k -[value] Done for function k -[value] computing for function send <- f <- g. - Called from tests/slicing/select_return.c:53. -tests/slicing/select_return.c:53:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype -[value] using specification for function send -[value] Done for function send -[value] Recording results for f -[value] Done for function f -[value] Recording results for g -[value] done for function g -[from] Computing for function k -[from] Computing for function get <-k -[from] Done for function get -[from] Computing for function send_bis <-k -[from] Done for function send_bis -[from] Done for function k -[from] Computing for function f -[from] Computing for function send <-f -[from] Done for function send -[from] Done for function f -[from] Computing for function g -[from] Done for function g -[from] ====== DEPENDENCIES COMPUTED ====== - These dependencies hold at termination for the executions that terminate: -[from] Function get: - \result FROM y -[from] Function send: - NO EFFECTS -[from] Function send_bis: - NO EFFECTS -[from] Function k: - G FROM b - H FROM c - \result FROM a -[from] Function f: - G FROM \nothing - H FROM \nothing - \result FROM y -[from] Function g: - G FROM \nothing - H FROM \nothing -[from] ====== END OF DEPENDENCIES ====== -[slicing] making slicing project 'slicing_1'... -[pdg] computing for function k -[pdg] done for function k -[slicing] applying all slicing requests... -[slicing] applying 1 actions... -[slicing] applying actions: 1/1... -[pdg] computing for function f -[pdg] done for function f -[pdg] computing for function g -[pdg] done for function g -Project1 - result1 : -[slicing] exporting project to 'Sliced code'... -[slicing] applying all slicing requests... -[slicing] applying 0 actions... -[sparecode] remove unused global declarations from project 'Sliced code tmp' -[sparecode] removed unused global declarations in new project 'Sliced code' -/* Generated by Frama-C */ -extern int get(int y); - -/*@ assigns \nothing; */ -extern void send_bis(int x); - -void k_slice_1(int d) -{ - int cond; - cond = get(d); - if (cond) send_bis(d); - return; -} - -void f_slice_1(void); - -void g(void) -{ - k_slice_1(0); - f_slice_1(); - return; -} - -void f_slice_1(void) -{ - k_slice_1(0); - k_slice_1(0); - k_slice_1(0); - return; -} - - -Project1 - result2 : -int G; -int H; -int I; -/*@ assigns \result; - assigns \result \from y; */ -extern int get(int y); - -/*@ assigns \nothing; */ -extern void send(int x); - -/*@ assigns \nothing; */ -extern void send_bis(int x); - -Print slice = k_slice_2: (InCtrl: <[ S ], [---]>) - (In4: <[--d], [---]>) - -/**/int k(/* <[---], [---]> */ int a, /* <[---], [---]> */ int b, - /* <[---], [---]> */ int c, /* <[--d], [---]> */ int d) -{ - /* <[ S ], [---]> */ int cond; - /* sig call: - (InCtrl: <[ S ], [---]>) - (In1: <[ S ], [---]>) - (OutRet: <[ S ], [---]>) */ - /* undetermined call */ - /* <[ S ], [---]> */ - cond = get(d); - /* <[---], [---]> */ - G = b; - /* <[---], [---]> */ - H = c; - /* <[ S ], [---]> */ - if (cond) { - /* sig call: (InCtrl: <[ S ], [---]>) - (In1: <[ S ], [---]>) */ - /* undetermined call */ - /* <[ S ], [---]> */ - send_bis(d); - } - /* <[---], [---]> */ - return a; -} - -Print slice = k_slice_1: (InCtrl: <[ S ], [ S ]>) - (In4: <[--d], [ S ]>) - -/**/int k(/* <[---], [---]> */ int a, /* <[---], [---]> */ int b, - /* <[---], [---]> */ int c, /* <[--d], [ S ]> */ int d) -{ - /* <[ S ], [ S ]> */ int cond; - /* sig call: - (InCtrl: <[ S ], [ S ]>) - (In1: <[ S ], [ S ]>) - (OutRet: <[ S ], [ S ]>) */ - /* call to source function */ - /* <[ S ], [ S ]> */ - cond = get(d); - /* <[---], [---]> */ - G = b; - /* <[---], [---]> */ - H = c; - /* <[ S ], [ S ]> */ - if (cond) { - /* sig call: (InCtrl: <[ S ], [ S ]>) - (In1: <[ S ], [ S ]>) */ - /* call to source function */ - /* <[ S ], [ S ]> */ - send_bis(d); - } - /* <[---], [---]> */ - return a; -} - -int f(int y); - -Print slice = g_slice_1: (InCtrl: <[--d], [ S ]>) - -/**/void g(/* <[---], [---]> */ int b, /* <[---], [---]> */ int c) -{ - /* <[---], [---]> */ int r; - /* sig call: (InCtrl: <[--d], [ S ]>) - (In4: <[--d], [ S ]>) */ - /* call to k_slice_1: (InCtrl: <[ S ], [ S ]>) - (In4: <[--d], [ S ]>) */ - /* <[--d], [ S ]> */ - r = k(0,0,c,0); - /* sig call: (InCtrl: <[--d], [ S ]>) */ - /* call to f_slice_1: (InCtrl: <[--d], [ S ]>) */ - /* <[--d], [ S ]> */ - f(b); - /* <[---], [---]> */ - return; -} - -Print slice = f_slice_1: (InCtrl: <[--d], [ S ]>) - -/**/int f(/* <[---], [---]> */ int y) -{ - /* <[---], [---]> */ int r; - /* <[---], [---]> */ int z; - /* sig call: (InCtrl: <[--d], [ S ]>) - (In4: <[--d], [ S ]>) */ - /* call to k_slice_1: (InCtrl: <[ S ], [ S ]>) - (In4: <[--d], [ S ]>) */ - /* <[--d], [ S ]> */ - k(0,0,0,0); - /* sig call: (InCtrl: <[--d], [ S ]>) - (In4: <[--d], [ S ]>) */ - /* call to k_slice_1: (InCtrl: <[ S ], [ S ]>) - (In4: <[--d], [ S ]>) */ - /* <[--d], [ S ]> */ - r = k(0,y,0,0); - /* sig call: (InCtrl: <[--d], [ S ]>) - (In4: <[--d], [ S ]>) */ - /* call to k_slice_1: (InCtrl: <[ S ], [ S ]>) - (In4: <[--d], [ S ]>) */ - /* <[--d], [ S ]> */ - z = k(G,0,0,0); - /*@ slice pragma expr z; */ /* <[---], [---]> */ - ; - /* invisible call */ /* <[---], [---]> */ - send(z); - /* <[---], [---]> */ - return z; -} - -Slicing project worklist [default/slicing_1] = -[k_slice_2 = choose_call for call 6][k_slice_2 = choose_call for call 1] - -[slicing] exporting project to 'Sliced code'... -[slicing] applying all slicing requests... -[slicing] applying 2 actions... -[slicing] applying actions: 1/2... -[slicing] applying actions: 2/2... -[sparecode] remove unused global declarations from project 'Sliced code tmp' -[sparecode] removed unused global declarations in new project 'Sliced code' -/* Generated by Frama-C */ -extern int get(int y); - -/*@ assigns \nothing; */ -extern void send_bis(int x); - -void k_slice_2(int d) -{ - int cond; - cond = get(d); - if (cond) send_bis(d); - return; -} - -void k_slice_1(int d) -{ - int cond; - cond = get(d); - if (cond) send_bis(d); - return; -} - -void f_slice_1(void); - -void g(void) -{ - k_slice_1(0); - f_slice_1(); - return; -} - -void f_slice_1(void) -{ - k_slice_1(0); - k_slice_1(0); - k_slice_1(0); - return; -} - - -[slicing] making slicing project 'slicing_2'... -Slicing project worklist [default/slicing_2] = -[k = (n:17 ,<[--d], [---]>)] - -[slicing] applying all slicing requests... -[slicing] applying 1 actions... -[slicing] applying actions: 1/1... -Project3 - result : -int G; -int H; -int I; -/*@ assigns \result; - assigns \result \from y; */ -extern int get(int y); - -/*@ assigns \nothing; */ -extern void send(int x); - -/*@ assigns \nothing; */ -extern void send_bis(int x); - -Print slice = k_slice_1: (InCtrl: <[--d], [ S ]>) - (In4: <[--d], [ S ]>) - -/**/int k(/* <[---], [---]> */ int a, /* <[---], [---]> */ int b, - /* <[---], [---]> */ int c, /* <[--d], [ S ]> */ int d) -{ - /* <[--d], [ S ]> */ int cond; - /* sig call: - (InCtrl: <[--d], [ S ]>) - (In1: <[--d], [ S ]>) - (OutRet: <[--d], [ S ]>) */ - /* call to source function */ - /* <[--d], [ S ]> */ - cond = get(d); - /* <[---], [---]> */ - G = b; - /* <[---], [---]> */ - H = c; - /* <[--d], [ S ]> */ - if (cond) { - /* sig call: (InCtrl: <[--d], [ S ]>) - (In1: <[---], [ S ]>) */ - /* call to source function */ - /* <[--d], [ S ]> */ - send_bis(d); - } - /* <[---], [---]> */ - return a; -} - -int f(int y); - -Print slice = g_slice_1: (InCtrl: <[--d], [ S ]>) - -/**/void g(/* <[---], [---]> */ int b, /* <[---], [---]> */ int c) -{ - /* <[---], [---]> */ int r; - /* sig call: (InCtrl: <[--d], [ S ]>) - (In4: <[--d], [ S ]>) */ - /* call to k_slice_1: (InCtrl: <[--d], [ S ]>) - (In4: <[--d], [ S ]>) */ - /* <[--d], [ S ]> */ - r = k(0,0,c,0); - /* sig call: (InCtrl: <[--d], [ S ]>) */ - /* call to f_slice_1: (InCtrl: <[--d], [ S ]>) */ - /* <[--d], [ S ]> */ - f(b); - /* <[---], [---]> */ - return; -} - -Print slice = f_slice_1: (InCtrl: <[--d], [ S ]>) - -/**/int f(/* <[---], [---]> */ int y) -{ - /* <[---], [---]> */ int r; - /* <[---], [---]> */ int z; - /* sig call: (InCtrl: <[--d], [ S ]>) - (In4: <[--d], [ S ]>) */ - /* call to k_slice_1: (InCtrl: <[--d], [ S ]>) - (In4: <[--d], [ S ]>) */ - /* <[--d], [ S ]> */ - k(0,0,0,0); - /* sig call: (InCtrl: <[--d], [ S ]>) - (In4: <[--d], [ S ]>) */ - /* call to k_slice_1: (InCtrl: <[--d], [ S ]>) - (In4: <[--d], [ S ]>) */ - /* <[--d], [ S ]> */ - r = k(0,y,0,0); - /* sig call: (InCtrl: <[--d], [ S ]>) - (In4: <[--d], [ S ]>) */ - /* call to k_slice_1: (InCtrl: <[--d], [ S ]>) - (In4: <[--d], [ S ]>) */ - /* <[--d], [ S ]> */ - z = k(G,0,0,0); - /*@ slice pragma expr z; */ /* <[---], [---]> */ - ; - /* invisible call */ /* <[---], [---]> */ - send(z); - /* <[---], [---]> */ - return z; -} - -Slicing project worklist [default/slicing_2] = - - -[slicing] exporting project to 'Sliced code'... -[slicing] applying all slicing requests... -[slicing] applying 0 actions... -[sparecode] remove unused global declarations from project 'Sliced code tmp' -[sparecode] removed unused global declarations in new project 'Sliced code' -/* Generated by Frama-C */ -extern int get(int y); - -/*@ assigns \nothing; */ -extern void send_bis(int x); - -void k_slice_1(int d) -{ - int cond; - cond = get(d); - if (cond) send_bis(d); - return; -} - -void f_slice_1(void); - -void g(void) -{ - k_slice_1(0); - f_slice_1(); - return; -} - -void f_slice_1(void) -{ - k_slice_1(0); - k_slice_1(0); - k_slice_1(0); - return; -} - - -[slicing] making slicing project 'slicing_3'... -[slicing] applying all slicing requests... -[slicing] applying 0 actions... -Slicing project worklist [default/slicing_3] = -[f = (n:26 ,<[acd], [---]>)(n:33 ,<[acd], [---]>)(n:41 ,<[acd], [---]>)][g = (n:60 , -<[acd], -[---]>)] - -Slicing project worklist [default/slicing_3] = -[f_slice_1 = choose_call for call 17][f_slice_1 = choose_call for call 16][f_slice_1 = choose_call for call 15][g = propagate (n:68 , -<[acd], -[---]>)][Appli : calls to f][g = (n:60 ,<[acd], [---]>)] - -[slicing] applying all slicing requests... -[slicing] applying 6 actions... -[slicing] applying actions: 1/6... -[slicing] applying actions: 2/6... -[slicing] applying actions: 3/6... -[slicing] applying actions: 4/6... -[slicing] applying actions: 5/6... -[slicing] applying actions: 6/6... -Project3 - result : -int G; -int H; -int I; -/*@ assigns \result; - assigns \result \from y; */ -extern int get(int y); - -/*@ assigns \nothing; */ -extern void send(int x); - -/*@ assigns \nothing; */ -extern void send_bis(int x); - -Print slice = k_slice_1: - -/**/int k(/* <[---], [---]> */ int a, /* <[---], [---]> */ int b, - /* <[---], [---]> */ int c, /* <[---], [---]> */ int d) -{ - /* <[---], [---]> */ int cond; - /* invisible call */ /* <[---], [---]> */ - cond = get(d); - /* <[---], [---]> */ - G = b; - /* <[---], [---]> */ - H = c; - /* <[---], [---]> */ - if (cond) { - /* invisible call */ /* <[---], [---]> */ - send_bis(d); - } - /* <[---], [---]> */ - return a; -} - -int f(int y); - -Print slice = g_slice_1: (InCtrl: <[acd], [---]>) - -/**/void g(/* <[---], [---]> */ int b, /* <[---], [---]> */ int c) -{ - /* <[---], [---]> */ int r; - /* sig call: (InCtrl: <[acd], [---]>) */ - /* call to k_slice_1: */ - /* <[acd], [---]> */ - r = k(0,0,c,0); - /* sig call: (InCtrl: <[acd], [---]>) */ - /* call to f_slice_1: (InCtrl: <[acd], [---]>) */ - /* <[acd], [---]> */ - f(b); - /* <[---], [---]> */ - return; -} - -Print slice = f_slice_1: (InCtrl: <[acd], [---]>) - -/**/int f(/* <[---], [---]> */ int y) -{ - /* <[---], [---]> */ int r; - /* <[---], [---]> */ int z; - /* sig call: (InCtrl: <[acd], [---]>) */ - /* call to k_slice_1: */ - /* <[acd], [---]> */ - k(0,0,0,0); - /* sig call: (InCtrl: <[acd], [---]>) */ - /* call to k_slice_1: */ - /* <[acd], [---]> */ - r = k(0,y,0,0); - /* sig call: (InCtrl: <[acd], [---]>) */ - /* call to k_slice_1: */ - /* <[acd], [---]> */ - z = k(G,0,0,0); - /*@ slice pragma expr z; */ /* <[---], [---]> */ - ; - /* invisible call */ /* <[---], [---]> */ - send(z); - /* <[---], [---]> */ - return z; -} - -Slicing project worklist [default/slicing_3] = - - -[slicing] exporting project to 'Sliced code'... -[slicing] applying all slicing requests... -[slicing] applying 0 actions... -[sparecode] remove unused global declarations from project 'Sliced code tmp' -[sparecode] removed unused global declarations in new project 'Sliced code' -/* Generated by Frama-C */ -void k_slice_1(void) -{ - return; -} - -void f_slice_1(void); - -void g(void) -{ - k_slice_1(); - f_slice_1(); - return; -} - -void f_slice_1(void) -{ - k_slice_1(); - k_slice_1(); - k_slice_1(); - return; -} - - +[kernel] Parsing tests/slicing/min_call.i (no preprocessing) +[kernel] user error: cannot find entry point `g'. + Please use option `-main' for specifying a valid entry point. +[kernel] Frama-C aborted: invalid user input. diff --git a/tests/slicing/oracle/ptr_fct.res.oracle b/tests/slicing/oracle/ptr_fct.res.oracle index fb135056727d6a897de9809d761a9fec95e39269..41b336b9c6b17d0821b7a4a70e6ecedb03ef3976 100644 --- a/tests/slicing/oracle/ptr_fct.res.oracle +++ b/tests/slicing/oracle/ptr_fct.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/ptr_fct.c (with preprocessing) +[kernel] Parsing tests/slicing/ptr_fct.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at h [value] Computing initial state @@ -8,14 +8,14 @@ X ∈ {0} ptf ∈ {0} [value] computing for function g <- h. - Called from tests/slicing/ptr_fct.c:23. + Called from tests/slicing/ptr_fct.i:23. [value] computing for function f2 <- g <- h. - Called from tests/slicing/ptr_fct.c:17. -tests/slicing/ptr_fct.c:17:[kernel] warning: Neither code nor specification for function f2, generating default assigns from the prototype + Called from tests/slicing/ptr_fct.i:17. +tests/slicing/ptr_fct.i:17:[kernel] warning: Neither code nor specification for function f2, generating default assigns from the prototype [value] using specification for function f2 [value] Done for function f2 [value] computing for function f1 <- g <- h. - Called from tests/slicing/ptr_fct.c:17. + Called from tests/slicing/ptr_fct.i:17. [value] Recording results for f1 [value] Done for function f1 [value] Recording results for g @@ -76,3 +76,5 @@ PTF h(int a, int b) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_0_ptr_fct.i (no preprocessing) diff --git a/tests/slicing/oracle/same_sliced_name_bts1422.res.oracle b/tests/slicing/oracle/same_sliced_name_bts1422.res.oracle index 4dcb70cee09e50a979ca34c784fd7b22e0ae15ed..e71bd2998b24e142a5d37261d7e65f228445cda8 100644 --- a/tests/slicing/oracle/same_sliced_name_bts1422.res.oracle +++ b/tests/slicing/oracle/same_sliced_name_bts1422.res.oracle @@ -35,3 +35,5 @@ void foo(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_0_same_sliced_name_bts1422.i (no preprocessing) diff --git a/tests/slicing/oracle/select_by_annot.0.res.oracle b/tests/slicing/oracle/select_by_annot.0.res.oracle index 72fca11faebea0e69ee4a15e78d7c5a0dacc7946..30ffa0b30e1dda894d092ee29390eae61fb5304d 100644 --- a/tests/slicing/oracle/select_by_annot.0.res.oracle +++ b/tests/slicing/oracle/select_by_annot.0.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/select_by_annot.c (with preprocessing) +[kernel] Parsing tests/slicing/select_by_annot.i (no preprocessing) [value] Analyzing an incomplete application starting at main [value] Computing initial state [value] Initial state computed @@ -10,60 +10,60 @@ Y9 ∈ [--..--] Z9 ∈ [--..--] d ∈ [--..--] -tests/slicing/select_by_annot.c:133:[value] assertion got status valid. -tests/slicing/select_by_annot.c:137:[value] warning: signed overflow. assert (int)((int)(a+b)+c)+d ≤ 2147483647; +tests/slicing/select_by_annot.i:133:[value] assertion got status valid. +tests/slicing/select_by_annot.i:137:[value] warning: signed overflow. assert (int)((int)(a+b)+c)+d ≤ 2147483647; [value] computing for function modifS <- main. - Called from tests/slicing/select_by_annot.c:138. -tests/slicing/select_by_annot.c:122:[value] warning: signed overflow. assert S.a+a ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:138. +tests/slicing/select_by_annot.i:122:[value] warning: signed overflow. assert S.a+a ≤ 2147483647; [value] Recording results for modifS [value] Done for function modifS [value] computing for function new_int <- main. - Called from tests/slicing/select_by_annot.c:140. -tests/slicing/select_by_annot.c:140:[kernel] warning: Neither code nor specification for function new_int, generating default assigns from the prototype + Called from tests/slicing/select_by_annot.i:140. +tests/slicing/select_by_annot.i:140:[kernel] warning: Neither code nor specification for function new_int, generating default assigns from the prototype [value] using specification for function new_int [value] Done for function new_int [value] computing for function f1 <- main. - Called from tests/slicing/select_by_annot.c:141. -tests/slicing/select_by_annot.c:29:[value] warning: assertion got status unknown. + Called from tests/slicing/select_by_annot.i:141. +tests/slicing/select_by_annot.i:29:[value] warning: assertion got status unknown. [value] Recording results for f1 [value] Done for function f1 [value] computing for function f2 <- main. - Called from tests/slicing/select_by_annot.c:142. -tests/slicing/select_by_annot.c:39:[value] warning: assertion got status unknown. + Called from tests/slicing/select_by_annot.i:142. +tests/slicing/select_by_annot.i:39:[value] warning: assertion got status unknown. [value] Recording results for f2 [value] Done for function f2 [value] computing for function f3 <- main. - Called from tests/slicing/select_by_annot.c:143. + Called from tests/slicing/select_by_annot.i:143. [value] Recording results for f3 [value] Done for function f3 [value] computing for function f4 <- main. - Called from tests/slicing/select_by_annot.c:144. + Called from tests/slicing/select_by_annot.i:144. [value] Recording results for f4 [value] Done for function f4 [value] computing for function f5 <- main. - Called from tests/slicing/select_by_annot.c:145. + Called from tests/slicing/select_by_annot.i:145. [value] Recording results for f5 [value] Done for function f5 [value] computing for function f6 <- main. - Called from tests/slicing/select_by_annot.c:146. -tests/slicing/select_by_annot.c:77:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:146. +tests/slicing/select_by_annot.i:77:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; [value] Recording results for f6 [value] Done for function f6 [value] computing for function f7 <- main. - Called from tests/slicing/select_by_annot.c:147. -tests/slicing/select_by_annot.c:88:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:147. +tests/slicing/select_by_annot.i:88:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; [value] Recording results for f7 [value] Done for function f7 [value] computing for function f8 <- main. - Called from tests/slicing/select_by_annot.c:148. -tests/slicing/select_by_annot.c:97:[value] warning: loop invariant got status unknown. -tests/slicing/select_by_annot.c:99:[value] entering loop for the first time -tests/slicing/select_by_annot.c:100:[value] warning: assertion got status unknown. -tests/slicing/select_by_annot.c:104:[value] warning: signed overflow. assert S.a+1 ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:148. +tests/slicing/select_by_annot.i:97:[value] warning: loop invariant got status unknown. +tests/slicing/select_by_annot.i:99:[value] entering loop for the first time +tests/slicing/select_by_annot.i:100:[value] warning: assertion got status unknown. +tests/slicing/select_by_annot.i:104:[value] warning: signed overflow. assert S.a+1 ≤ 2147483647; [value] Recording results for f8 [value] Done for function f8 [value] computing for function f9 <- main. - Called from tests/slicing/select_by_annot.c:149. + Called from tests/slicing/select_by_annot.i:149. [value] Recording results for f9 [value] Done for function f9 [value] Recording results for main diff --git a/tests/slicing/oracle/select_by_annot.1.res.oracle b/tests/slicing/oracle/select_by_annot.1.res.oracle index 4a573a0e52abe393cda9fbc3ff0fa98f8ec7a7b5..8596d3db0099c2f70aa7e4ea683991af693fe96b 100644 --- a/tests/slicing/oracle/select_by_annot.1.res.oracle +++ b/tests/slicing/oracle/select_by_annot.1.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/select_by_annot.c (with preprocessing) +[kernel] Parsing tests/slicing/select_by_annot.i (no preprocessing) [value] Analyzing an incomplete application starting at main [value] Computing initial state [value] Initial state computed @@ -10,60 +10,60 @@ Y9 ∈ [--..--] Z9 ∈ [--..--] d ∈ [--..--] -tests/slicing/select_by_annot.c:133:[value] assertion got status valid. -tests/slicing/select_by_annot.c:137:[value] warning: signed overflow. assert (int)((int)(a+b)+c)+d ≤ 2147483647; +tests/slicing/select_by_annot.i:133:[value] assertion got status valid. +tests/slicing/select_by_annot.i:137:[value] warning: signed overflow. assert (int)((int)(a+b)+c)+d ≤ 2147483647; [value] computing for function modifS <- main. - Called from tests/slicing/select_by_annot.c:138. -tests/slicing/select_by_annot.c:122:[value] warning: signed overflow. assert S.a+a ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:138. +tests/slicing/select_by_annot.i:122:[value] warning: signed overflow. assert S.a+a ≤ 2147483647; [value] Recording results for modifS [value] Done for function modifS [value] computing for function new_int <- main. - Called from tests/slicing/select_by_annot.c:140. -tests/slicing/select_by_annot.c:140:[kernel] warning: Neither code nor specification for function new_int, generating default assigns from the prototype + Called from tests/slicing/select_by_annot.i:140. +tests/slicing/select_by_annot.i:140:[kernel] warning: Neither code nor specification for function new_int, generating default assigns from the prototype [value] using specification for function new_int [value] Done for function new_int [value] computing for function f1 <- main. - Called from tests/slicing/select_by_annot.c:141. -tests/slicing/select_by_annot.c:29:[value] warning: assertion got status unknown. + Called from tests/slicing/select_by_annot.i:141. +tests/slicing/select_by_annot.i:29:[value] warning: assertion got status unknown. [value] Recording results for f1 [value] Done for function f1 [value] computing for function f2 <- main. - Called from tests/slicing/select_by_annot.c:142. -tests/slicing/select_by_annot.c:39:[value] warning: assertion got status unknown. + Called from tests/slicing/select_by_annot.i:142. +tests/slicing/select_by_annot.i:39:[value] warning: assertion got status unknown. [value] Recording results for f2 [value] Done for function f2 [value] computing for function f3 <- main. - Called from tests/slicing/select_by_annot.c:143. + Called from tests/slicing/select_by_annot.i:143. [value] Recording results for f3 [value] Done for function f3 [value] computing for function f4 <- main. - Called from tests/slicing/select_by_annot.c:144. + Called from tests/slicing/select_by_annot.i:144. [value] Recording results for f4 [value] Done for function f4 [value] computing for function f5 <- main. - Called from tests/slicing/select_by_annot.c:145. + Called from tests/slicing/select_by_annot.i:145. [value] Recording results for f5 [value] Done for function f5 [value] computing for function f6 <- main. - Called from tests/slicing/select_by_annot.c:146. -tests/slicing/select_by_annot.c:77:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:146. +tests/slicing/select_by_annot.i:77:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; [value] Recording results for f6 [value] Done for function f6 [value] computing for function f7 <- main. - Called from tests/slicing/select_by_annot.c:147. -tests/slicing/select_by_annot.c:88:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:147. +tests/slicing/select_by_annot.i:88:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; [value] Recording results for f7 [value] Done for function f7 [value] computing for function f8 <- main. - Called from tests/slicing/select_by_annot.c:148. -tests/slicing/select_by_annot.c:97:[value] warning: loop invariant got status unknown. -tests/slicing/select_by_annot.c:99:[value] entering loop for the first time -tests/slicing/select_by_annot.c:100:[value] warning: assertion got status unknown. -tests/slicing/select_by_annot.c:104:[value] warning: signed overflow. assert S.a+1 ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:148. +tests/slicing/select_by_annot.i:97:[value] warning: loop invariant got status unknown. +tests/slicing/select_by_annot.i:99:[value] entering loop for the first time +tests/slicing/select_by_annot.i:100:[value] warning: assertion got status unknown. +tests/slicing/select_by_annot.i:104:[value] warning: signed overflow. assert S.a+1 ≤ 2147483647; [value] Recording results for f8 [value] Done for function f8 [value] computing for function f9 <- main. - Called from tests/slicing/select_by_annot.c:149. + Called from tests/slicing/select_by_annot.i:149. [value] Recording results for f9 [value] Done for function f9 [value] Recording results for main @@ -170,3 +170,5 @@ void main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_1_select_by_annot.i (no preprocessing) diff --git a/tests/slicing/oracle/select_by_annot.10.res.oracle b/tests/slicing/oracle/select_by_annot.10.res.oracle index acdd14dff6c5d31f0a1c12862072d07258356607..5061ff47c06970c562704e761c00e6f340d03550 100644 --- a/tests/slicing/oracle/select_by_annot.10.res.oracle +++ b/tests/slicing/oracle/select_by_annot.10.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/select_by_annot.c (with preprocessing) +[kernel] Parsing tests/slicing/select_by_annot.i (no preprocessing) [value] Analyzing an incomplete application starting at main [value] Computing initial state [value] Initial state computed @@ -10,60 +10,60 @@ Y9 ∈ [--..--] Z9 ∈ [--..--] d ∈ [--..--] -tests/slicing/select_by_annot.c:133:[value] assertion got status valid. -tests/slicing/select_by_annot.c:137:[value] warning: signed overflow. assert (int)((int)(a+b)+c)+d ≤ 2147483647; +tests/slicing/select_by_annot.i:133:[value] assertion got status valid. +tests/slicing/select_by_annot.i:137:[value] warning: signed overflow. assert (int)((int)(a+b)+c)+d ≤ 2147483647; [value] computing for function modifS <- main. - Called from tests/slicing/select_by_annot.c:138. -tests/slicing/select_by_annot.c:122:[value] warning: signed overflow. assert S.a+a ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:138. +tests/slicing/select_by_annot.i:122:[value] warning: signed overflow. assert S.a+a ≤ 2147483647; [value] Recording results for modifS [value] Done for function modifS [value] computing for function new_int <- main. - Called from tests/slicing/select_by_annot.c:140. -tests/slicing/select_by_annot.c:140:[kernel] warning: Neither code nor specification for function new_int, generating default assigns from the prototype + Called from tests/slicing/select_by_annot.i:140. +tests/slicing/select_by_annot.i:140:[kernel] warning: Neither code nor specification for function new_int, generating default assigns from the prototype [value] using specification for function new_int [value] Done for function new_int [value] computing for function f1 <- main. - Called from tests/slicing/select_by_annot.c:141. -tests/slicing/select_by_annot.c:29:[value] warning: assertion got status unknown. + Called from tests/slicing/select_by_annot.i:141. +tests/slicing/select_by_annot.i:29:[value] warning: assertion got status unknown. [value] Recording results for f1 [value] Done for function f1 [value] computing for function f2 <- main. - Called from tests/slicing/select_by_annot.c:142. -tests/slicing/select_by_annot.c:39:[value] warning: assertion got status unknown. + Called from tests/slicing/select_by_annot.i:142. +tests/slicing/select_by_annot.i:39:[value] warning: assertion got status unknown. [value] Recording results for f2 [value] Done for function f2 [value] computing for function f3 <- main. - Called from tests/slicing/select_by_annot.c:143. + Called from tests/slicing/select_by_annot.i:143. [value] Recording results for f3 [value] Done for function f3 [value] computing for function f4 <- main. - Called from tests/slicing/select_by_annot.c:144. + Called from tests/slicing/select_by_annot.i:144. [value] Recording results for f4 [value] Done for function f4 [value] computing for function f5 <- main. - Called from tests/slicing/select_by_annot.c:145. + Called from tests/slicing/select_by_annot.i:145. [value] Recording results for f5 [value] Done for function f5 [value] computing for function f6 <- main. - Called from tests/slicing/select_by_annot.c:146. -tests/slicing/select_by_annot.c:77:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:146. +tests/slicing/select_by_annot.i:77:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; [value] Recording results for f6 [value] Done for function f6 [value] computing for function f7 <- main. - Called from tests/slicing/select_by_annot.c:147. -tests/slicing/select_by_annot.c:88:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:147. +tests/slicing/select_by_annot.i:88:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; [value] Recording results for f7 [value] Done for function f7 [value] computing for function f8 <- main. - Called from tests/slicing/select_by_annot.c:148. -tests/slicing/select_by_annot.c:97:[value] warning: loop invariant got status unknown. -tests/slicing/select_by_annot.c:99:[value] entering loop for the first time -tests/slicing/select_by_annot.c:100:[value] warning: assertion got status unknown. -tests/slicing/select_by_annot.c:104:[value] warning: signed overflow. assert S.a+1 ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:148. +tests/slicing/select_by_annot.i:97:[value] warning: loop invariant got status unknown. +tests/slicing/select_by_annot.i:99:[value] entering loop for the first time +tests/slicing/select_by_annot.i:100:[value] warning: assertion got status unknown. +tests/slicing/select_by_annot.i:104:[value] warning: signed overflow. assert S.a+1 ≤ 2147483647; [value] Recording results for f8 [value] Done for function f8 [value] computing for function f9 <- main. - Called from tests/slicing/select_by_annot.c:149. + Called from tests/slicing/select_by_annot.i:149. [value] Recording results for f9 [value] Done for function f9 [value] Recording results for main @@ -175,3 +175,5 @@ void f7_slice_1(int cond) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_10_select_by_annot.i (no preprocessing) diff --git a/tests/slicing/oracle/select_by_annot.11.res.oracle b/tests/slicing/oracle/select_by_annot.11.res.oracle index 2ce25eb3c81f3d0f9541cde06be079027fa45842..41da6dddab91ef580b9cab7d78f552b9223495d6 100644 --- a/tests/slicing/oracle/select_by_annot.11.res.oracle +++ b/tests/slicing/oracle/select_by_annot.11.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/select_by_annot.c (with preprocessing) +[kernel] Parsing tests/slicing/select_by_annot.i (no preprocessing) [value] Analyzing an incomplete application starting at main [value] Computing initial state [value] Initial state computed @@ -10,60 +10,60 @@ Y9 ∈ [--..--] Z9 ∈ [--..--] d ∈ [--..--] -tests/slicing/select_by_annot.c:133:[value] assertion got status valid. -tests/slicing/select_by_annot.c:137:[value] warning: signed overflow. assert (int)((int)(a+b)+c)+d ≤ 2147483647; +tests/slicing/select_by_annot.i:133:[value] assertion got status valid. +tests/slicing/select_by_annot.i:137:[value] warning: signed overflow. assert (int)((int)(a+b)+c)+d ≤ 2147483647; [value] computing for function modifS <- main. - Called from tests/slicing/select_by_annot.c:138. -tests/slicing/select_by_annot.c:122:[value] warning: signed overflow. assert S.a+a ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:138. +tests/slicing/select_by_annot.i:122:[value] warning: signed overflow. assert S.a+a ≤ 2147483647; [value] Recording results for modifS [value] Done for function modifS [value] computing for function new_int <- main. - Called from tests/slicing/select_by_annot.c:140. -tests/slicing/select_by_annot.c:140:[kernel] warning: Neither code nor specification for function new_int, generating default assigns from the prototype + Called from tests/slicing/select_by_annot.i:140. +tests/slicing/select_by_annot.i:140:[kernel] warning: Neither code nor specification for function new_int, generating default assigns from the prototype [value] using specification for function new_int [value] Done for function new_int [value] computing for function f1 <- main. - Called from tests/slicing/select_by_annot.c:141. -tests/slicing/select_by_annot.c:29:[value] warning: assertion got status unknown. + Called from tests/slicing/select_by_annot.i:141. +tests/slicing/select_by_annot.i:29:[value] warning: assertion got status unknown. [value] Recording results for f1 [value] Done for function f1 [value] computing for function f2 <- main. - Called from tests/slicing/select_by_annot.c:142. -tests/slicing/select_by_annot.c:39:[value] warning: assertion got status unknown. + Called from tests/slicing/select_by_annot.i:142. +tests/slicing/select_by_annot.i:39:[value] warning: assertion got status unknown. [value] Recording results for f2 [value] Done for function f2 [value] computing for function f3 <- main. - Called from tests/slicing/select_by_annot.c:143. + Called from tests/slicing/select_by_annot.i:143. [value] Recording results for f3 [value] Done for function f3 [value] computing for function f4 <- main. - Called from tests/slicing/select_by_annot.c:144. + Called from tests/slicing/select_by_annot.i:144. [value] Recording results for f4 [value] Done for function f4 [value] computing for function f5 <- main. - Called from tests/slicing/select_by_annot.c:145. + Called from tests/slicing/select_by_annot.i:145. [value] Recording results for f5 [value] Done for function f5 [value] computing for function f6 <- main. - Called from tests/slicing/select_by_annot.c:146. -tests/slicing/select_by_annot.c:77:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:146. +tests/slicing/select_by_annot.i:77:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; [value] Recording results for f6 [value] Done for function f6 [value] computing for function f7 <- main. - Called from tests/slicing/select_by_annot.c:147. -tests/slicing/select_by_annot.c:88:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:147. +tests/slicing/select_by_annot.i:88:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; [value] Recording results for f7 [value] Done for function f7 [value] computing for function f8 <- main. - Called from tests/slicing/select_by_annot.c:148. -tests/slicing/select_by_annot.c:97:[value] warning: loop invariant got status unknown. -tests/slicing/select_by_annot.c:99:[value] entering loop for the first time -tests/slicing/select_by_annot.c:100:[value] warning: assertion got status unknown. -tests/slicing/select_by_annot.c:104:[value] warning: signed overflow. assert S.a+1 ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:148. +tests/slicing/select_by_annot.i:97:[value] warning: loop invariant got status unknown. +tests/slicing/select_by_annot.i:99:[value] entering loop for the first time +tests/slicing/select_by_annot.i:100:[value] warning: assertion got status unknown. +tests/slicing/select_by_annot.i:104:[value] warning: signed overflow. assert S.a+1 ≤ 2147483647; [value] Recording results for f8 [value] Done for function f8 [value] computing for function f9 <- main. - Called from tests/slicing/select_by_annot.c:149. + Called from tests/slicing/select_by_annot.i:149. [value] Recording results for f9 [value] Done for function f9 [value] Recording results for main @@ -166,3 +166,5 @@ void f8_slice_1(int cond) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_11_select_by_annot.i (no preprocessing) diff --git a/tests/slicing/oracle/select_by_annot.12.res.oracle b/tests/slicing/oracle/select_by_annot.12.res.oracle index 34d699928eadd3fa3fe933eea7379561f156e9f1..bbf7dfdb0a301d10fb8368832d5ef1107ea572cb 100644 --- a/tests/slicing/oracle/select_by_annot.12.res.oracle +++ b/tests/slicing/oracle/select_by_annot.12.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/select_by_annot.c (with preprocessing) +[kernel] Parsing tests/slicing/select_by_annot.i (no preprocessing) [value] Analyzing an incomplete application starting at main [value] Computing initial state [value] Initial state computed @@ -10,60 +10,60 @@ Y9 ∈ [--..--] Z9 ∈ [--..--] d ∈ [--..--] -tests/slicing/select_by_annot.c:133:[value] assertion got status valid. -tests/slicing/select_by_annot.c:137:[value] warning: signed overflow. assert (int)((int)(a+b)+c)+d ≤ 2147483647; +tests/slicing/select_by_annot.i:133:[value] assertion got status valid. +tests/slicing/select_by_annot.i:137:[value] warning: signed overflow. assert (int)((int)(a+b)+c)+d ≤ 2147483647; [value] computing for function modifS <- main. - Called from tests/slicing/select_by_annot.c:138. -tests/slicing/select_by_annot.c:122:[value] warning: signed overflow. assert S.a+a ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:138. +tests/slicing/select_by_annot.i:122:[value] warning: signed overflow. assert S.a+a ≤ 2147483647; [value] Recording results for modifS [value] Done for function modifS [value] computing for function new_int <- main. - Called from tests/slicing/select_by_annot.c:140. -tests/slicing/select_by_annot.c:140:[kernel] warning: Neither code nor specification for function new_int, generating default assigns from the prototype + Called from tests/slicing/select_by_annot.i:140. +tests/slicing/select_by_annot.i:140:[kernel] warning: Neither code nor specification for function new_int, generating default assigns from the prototype [value] using specification for function new_int [value] Done for function new_int [value] computing for function f1 <- main. - Called from tests/slicing/select_by_annot.c:141. -tests/slicing/select_by_annot.c:29:[value] warning: assertion got status unknown. + Called from tests/slicing/select_by_annot.i:141. +tests/slicing/select_by_annot.i:29:[value] warning: assertion got status unknown. [value] Recording results for f1 [value] Done for function f1 [value] computing for function f2 <- main. - Called from tests/slicing/select_by_annot.c:142. -tests/slicing/select_by_annot.c:39:[value] warning: assertion got status unknown. + Called from tests/slicing/select_by_annot.i:142. +tests/slicing/select_by_annot.i:39:[value] warning: assertion got status unknown. [value] Recording results for f2 [value] Done for function f2 [value] computing for function f3 <- main. - Called from tests/slicing/select_by_annot.c:143. + Called from tests/slicing/select_by_annot.i:143. [value] Recording results for f3 [value] Done for function f3 [value] computing for function f4 <- main. - Called from tests/slicing/select_by_annot.c:144. + Called from tests/slicing/select_by_annot.i:144. [value] Recording results for f4 [value] Done for function f4 [value] computing for function f5 <- main. - Called from tests/slicing/select_by_annot.c:145. + Called from tests/slicing/select_by_annot.i:145. [value] Recording results for f5 [value] Done for function f5 [value] computing for function f6 <- main. - Called from tests/slicing/select_by_annot.c:146. -tests/slicing/select_by_annot.c:77:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:146. +tests/slicing/select_by_annot.i:77:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; [value] Recording results for f6 [value] Done for function f6 [value] computing for function f7 <- main. - Called from tests/slicing/select_by_annot.c:147. -tests/slicing/select_by_annot.c:88:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:147. +tests/slicing/select_by_annot.i:88:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; [value] Recording results for f7 [value] Done for function f7 [value] computing for function f8 <- main. - Called from tests/slicing/select_by_annot.c:148. -tests/slicing/select_by_annot.c:97:[value] warning: loop invariant got status unknown. -tests/slicing/select_by_annot.c:99:[value] entering loop for the first time -tests/slicing/select_by_annot.c:100:[value] warning: assertion got status unknown. -tests/slicing/select_by_annot.c:104:[value] warning: signed overflow. assert S.a+1 ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:148. +tests/slicing/select_by_annot.i:97:[value] warning: loop invariant got status unknown. +tests/slicing/select_by_annot.i:99:[value] entering loop for the first time +tests/slicing/select_by_annot.i:100:[value] warning: assertion got status unknown. +tests/slicing/select_by_annot.i:104:[value] warning: signed overflow. assert S.a+1 ≤ 2147483647; [value] Recording results for f8 [value] Done for function f8 [value] computing for function f9 <- main. - Called from tests/slicing/select_by_annot.c:149. + Called from tests/slicing/select_by_annot.i:149. [value] Recording results for f9 [value] Done for function f9 [value] Recording results for main @@ -173,3 +173,5 @@ void f8_slice_1(int cond) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_12_select_by_annot.i (no preprocessing) diff --git a/tests/slicing/oracle/select_by_annot.13.res.oracle b/tests/slicing/oracle/select_by_annot.13.res.oracle index b53a27d764656971f65c11bb02b426b9dde8485b..7fa3cdfa2eb4078d7e93afd785fe43da037bf280 100644 --- a/tests/slicing/oracle/select_by_annot.13.res.oracle +++ b/tests/slicing/oracle/select_by_annot.13.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/select_by_annot.c (with preprocessing) +[kernel] Parsing tests/slicing/select_by_annot.i (no preprocessing) [value] Analyzing an incomplete application starting at main [value] Computing initial state [value] Initial state computed @@ -10,60 +10,60 @@ Y9 ∈ [--..--] Z9 ∈ [--..--] d ∈ [--..--] -tests/slicing/select_by_annot.c:133:[value] assertion got status valid. -tests/slicing/select_by_annot.c:137:[value] warning: signed overflow. assert (int)((int)(a+b)+c)+d ≤ 2147483647; +tests/slicing/select_by_annot.i:133:[value] assertion got status valid. +tests/slicing/select_by_annot.i:137:[value] warning: signed overflow. assert (int)((int)(a+b)+c)+d ≤ 2147483647; [value] computing for function modifS <- main. - Called from tests/slicing/select_by_annot.c:138. -tests/slicing/select_by_annot.c:122:[value] warning: signed overflow. assert S.a+a ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:138. +tests/slicing/select_by_annot.i:122:[value] warning: signed overflow. assert S.a+a ≤ 2147483647; [value] Recording results for modifS [value] Done for function modifS [value] computing for function new_int <- main. - Called from tests/slicing/select_by_annot.c:140. -tests/slicing/select_by_annot.c:140:[kernel] warning: Neither code nor specification for function new_int, generating default assigns from the prototype + Called from tests/slicing/select_by_annot.i:140. +tests/slicing/select_by_annot.i:140:[kernel] warning: Neither code nor specification for function new_int, generating default assigns from the prototype [value] using specification for function new_int [value] Done for function new_int [value] computing for function f1 <- main. - Called from tests/slicing/select_by_annot.c:141. -tests/slicing/select_by_annot.c:29:[value] warning: assertion got status unknown. + Called from tests/slicing/select_by_annot.i:141. +tests/slicing/select_by_annot.i:29:[value] warning: assertion got status unknown. [value] Recording results for f1 [value] Done for function f1 [value] computing for function f2 <- main. - Called from tests/slicing/select_by_annot.c:142. -tests/slicing/select_by_annot.c:39:[value] warning: assertion got status unknown. + Called from tests/slicing/select_by_annot.i:142. +tests/slicing/select_by_annot.i:39:[value] warning: assertion got status unknown. [value] Recording results for f2 [value] Done for function f2 [value] computing for function f3 <- main. - Called from tests/slicing/select_by_annot.c:143. + Called from tests/slicing/select_by_annot.i:143. [value] Recording results for f3 [value] Done for function f3 [value] computing for function f4 <- main. - Called from tests/slicing/select_by_annot.c:144. + Called from tests/slicing/select_by_annot.i:144. [value] Recording results for f4 [value] Done for function f4 [value] computing for function f5 <- main. - Called from tests/slicing/select_by_annot.c:145. + Called from tests/slicing/select_by_annot.i:145. [value] Recording results for f5 [value] Done for function f5 [value] computing for function f6 <- main. - Called from tests/slicing/select_by_annot.c:146. -tests/slicing/select_by_annot.c:77:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:146. +tests/slicing/select_by_annot.i:77:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; [value] Recording results for f6 [value] Done for function f6 [value] computing for function f7 <- main. - Called from tests/slicing/select_by_annot.c:147. -tests/slicing/select_by_annot.c:88:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:147. +tests/slicing/select_by_annot.i:88:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; [value] Recording results for f7 [value] Done for function f7 [value] computing for function f8 <- main. - Called from tests/slicing/select_by_annot.c:148. -tests/slicing/select_by_annot.c:97:[value] warning: loop invariant got status unknown. -tests/slicing/select_by_annot.c:99:[value] entering loop for the first time -tests/slicing/select_by_annot.c:100:[value] warning: assertion got status unknown. -tests/slicing/select_by_annot.c:104:[value] warning: signed overflow. assert S.a+1 ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:148. +tests/slicing/select_by_annot.i:97:[value] warning: loop invariant got status unknown. +tests/slicing/select_by_annot.i:99:[value] entering loop for the first time +tests/slicing/select_by_annot.i:100:[value] warning: assertion got status unknown. +tests/slicing/select_by_annot.i:104:[value] warning: signed overflow. assert S.a+1 ≤ 2147483647; [value] Recording results for f8 [value] Done for function f8 [value] computing for function f9 <- main. - Called from tests/slicing/select_by_annot.c:149. + Called from tests/slicing/select_by_annot.i:149. [value] Recording results for f9 [value] Done for function f9 [value] Recording results for main @@ -173,3 +173,5 @@ void f8_slice_1(int cond) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_13_select_by_annot.i (no preprocessing) diff --git a/tests/slicing/oracle/select_by_annot.14.res.oracle b/tests/slicing/oracle/select_by_annot.14.res.oracle index 6262e10d16047c58b07af402bd2543755110f2b7..1cb19c1e2a8d3280290c500b6146bd445ac977e8 100644 --- a/tests/slicing/oracle/select_by_annot.14.res.oracle +++ b/tests/slicing/oracle/select_by_annot.14.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/select_by_annot.c (with preprocessing) +[kernel] Parsing tests/slicing/select_by_annot.i (no preprocessing) [value] Analyzing an incomplete application starting at main [value] Computing initial state [value] Initial state computed @@ -10,60 +10,60 @@ Y9 ∈ [--..--] Z9 ∈ [--..--] d ∈ [--..--] -tests/slicing/select_by_annot.c:133:[value] assertion got status valid. -tests/slicing/select_by_annot.c:137:[value] warning: signed overflow. assert (int)((int)(a+b)+c)+d ≤ 2147483647; +tests/slicing/select_by_annot.i:133:[value] assertion got status valid. +tests/slicing/select_by_annot.i:137:[value] warning: signed overflow. assert (int)((int)(a+b)+c)+d ≤ 2147483647; [value] computing for function modifS <- main. - Called from tests/slicing/select_by_annot.c:138. -tests/slicing/select_by_annot.c:122:[value] warning: signed overflow. assert S.a+a ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:138. +tests/slicing/select_by_annot.i:122:[value] warning: signed overflow. assert S.a+a ≤ 2147483647; [value] Recording results for modifS [value] Done for function modifS [value] computing for function new_int <- main. - Called from tests/slicing/select_by_annot.c:140. -tests/slicing/select_by_annot.c:140:[kernel] warning: Neither code nor specification for function new_int, generating default assigns from the prototype + Called from tests/slicing/select_by_annot.i:140. +tests/slicing/select_by_annot.i:140:[kernel] warning: Neither code nor specification for function new_int, generating default assigns from the prototype [value] using specification for function new_int [value] Done for function new_int [value] computing for function f1 <- main. - Called from tests/slicing/select_by_annot.c:141. -tests/slicing/select_by_annot.c:29:[value] warning: assertion got status unknown. + Called from tests/slicing/select_by_annot.i:141. +tests/slicing/select_by_annot.i:29:[value] warning: assertion got status unknown. [value] Recording results for f1 [value] Done for function f1 [value] computing for function f2 <- main. - Called from tests/slicing/select_by_annot.c:142. -tests/slicing/select_by_annot.c:39:[value] warning: assertion got status unknown. + Called from tests/slicing/select_by_annot.i:142. +tests/slicing/select_by_annot.i:39:[value] warning: assertion got status unknown. [value] Recording results for f2 [value] Done for function f2 [value] computing for function f3 <- main. - Called from tests/slicing/select_by_annot.c:143. + Called from tests/slicing/select_by_annot.i:143. [value] Recording results for f3 [value] Done for function f3 [value] computing for function f4 <- main. - Called from tests/slicing/select_by_annot.c:144. + Called from tests/slicing/select_by_annot.i:144. [value] Recording results for f4 [value] Done for function f4 [value] computing for function f5 <- main. - Called from tests/slicing/select_by_annot.c:145. + Called from tests/slicing/select_by_annot.i:145. [value] Recording results for f5 [value] Done for function f5 [value] computing for function f6 <- main. - Called from tests/slicing/select_by_annot.c:146. -tests/slicing/select_by_annot.c:77:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:146. +tests/slicing/select_by_annot.i:77:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; [value] Recording results for f6 [value] Done for function f6 [value] computing for function f7 <- main. - Called from tests/slicing/select_by_annot.c:147. -tests/slicing/select_by_annot.c:88:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:147. +tests/slicing/select_by_annot.i:88:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; [value] Recording results for f7 [value] Done for function f7 [value] computing for function f8 <- main. - Called from tests/slicing/select_by_annot.c:148. -tests/slicing/select_by_annot.c:97:[value] warning: loop invariant got status unknown. -tests/slicing/select_by_annot.c:99:[value] entering loop for the first time -tests/slicing/select_by_annot.c:100:[value] warning: assertion got status unknown. -tests/slicing/select_by_annot.c:104:[value] warning: signed overflow. assert S.a+1 ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:148. +tests/slicing/select_by_annot.i:97:[value] warning: loop invariant got status unknown. +tests/slicing/select_by_annot.i:99:[value] entering loop for the first time +tests/slicing/select_by_annot.i:100:[value] warning: assertion got status unknown. +tests/slicing/select_by_annot.i:104:[value] warning: signed overflow. assert S.a+1 ≤ 2147483647; [value] Recording results for f8 [value] Done for function f8 [value] computing for function f9 <- main. - Called from tests/slicing/select_by_annot.c:149. + Called from tests/slicing/select_by_annot.i:149. [value] Recording results for f9 [value] Done for function f9 [value] Recording results for main @@ -165,3 +165,5 @@ void f9_slice_1(int c1, int c2) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_14_select_by_annot.i (no preprocessing) diff --git a/tests/slicing/oracle/select_by_annot.2.res.oracle b/tests/slicing/oracle/select_by_annot.2.res.oracle index 2c532b4d8ea0af592e15f1b9e0b52b850391a694..db5f116d2c7c2e01a47e7d5a25284ef35b529b6d 100644 --- a/tests/slicing/oracle/select_by_annot.2.res.oracle +++ b/tests/slicing/oracle/select_by_annot.2.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/select_by_annot.c (with preprocessing) +[kernel] Parsing tests/slicing/select_by_annot.i (no preprocessing) [value] Analyzing an incomplete application starting at main [value] Computing initial state [value] Initial state computed @@ -10,60 +10,60 @@ Y9 ∈ [--..--] Z9 ∈ [--..--] d ∈ [--..--] -tests/slicing/select_by_annot.c:133:[value] assertion got status valid. -tests/slicing/select_by_annot.c:137:[value] warning: signed overflow. assert (int)((int)(a+b)+c)+d ≤ 2147483647; +tests/slicing/select_by_annot.i:133:[value] assertion got status valid. +tests/slicing/select_by_annot.i:137:[value] warning: signed overflow. assert (int)((int)(a+b)+c)+d ≤ 2147483647; [value] computing for function modifS <- main. - Called from tests/slicing/select_by_annot.c:138. -tests/slicing/select_by_annot.c:122:[value] warning: signed overflow. assert S.a+a ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:138. +tests/slicing/select_by_annot.i:122:[value] warning: signed overflow. assert S.a+a ≤ 2147483647; [value] Recording results for modifS [value] Done for function modifS [value] computing for function new_int <- main. - Called from tests/slicing/select_by_annot.c:140. -tests/slicing/select_by_annot.c:140:[kernel] warning: Neither code nor specification for function new_int, generating default assigns from the prototype + Called from tests/slicing/select_by_annot.i:140. +tests/slicing/select_by_annot.i:140:[kernel] warning: Neither code nor specification for function new_int, generating default assigns from the prototype [value] using specification for function new_int [value] Done for function new_int [value] computing for function f1 <- main. - Called from tests/slicing/select_by_annot.c:141. -tests/slicing/select_by_annot.c:29:[value] warning: assertion got status unknown. + Called from tests/slicing/select_by_annot.i:141. +tests/slicing/select_by_annot.i:29:[value] warning: assertion got status unknown. [value] Recording results for f1 [value] Done for function f1 [value] computing for function f2 <- main. - Called from tests/slicing/select_by_annot.c:142. -tests/slicing/select_by_annot.c:39:[value] warning: assertion got status unknown. + Called from tests/slicing/select_by_annot.i:142. +tests/slicing/select_by_annot.i:39:[value] warning: assertion got status unknown. [value] Recording results for f2 [value] Done for function f2 [value] computing for function f3 <- main. - Called from tests/slicing/select_by_annot.c:143. + Called from tests/slicing/select_by_annot.i:143. [value] Recording results for f3 [value] Done for function f3 [value] computing for function f4 <- main. - Called from tests/slicing/select_by_annot.c:144. + Called from tests/slicing/select_by_annot.i:144. [value] Recording results for f4 [value] Done for function f4 [value] computing for function f5 <- main. - Called from tests/slicing/select_by_annot.c:145. + Called from tests/slicing/select_by_annot.i:145. [value] Recording results for f5 [value] Done for function f5 [value] computing for function f6 <- main. - Called from tests/slicing/select_by_annot.c:146. -tests/slicing/select_by_annot.c:77:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:146. +tests/slicing/select_by_annot.i:77:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; [value] Recording results for f6 [value] Done for function f6 [value] computing for function f7 <- main. - Called from tests/slicing/select_by_annot.c:147. -tests/slicing/select_by_annot.c:88:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:147. +tests/slicing/select_by_annot.i:88:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; [value] Recording results for f7 [value] Done for function f7 [value] computing for function f8 <- main. - Called from tests/slicing/select_by_annot.c:148. -tests/slicing/select_by_annot.c:97:[value] warning: loop invariant got status unknown. -tests/slicing/select_by_annot.c:99:[value] entering loop for the first time -tests/slicing/select_by_annot.c:100:[value] warning: assertion got status unknown. -tests/slicing/select_by_annot.c:104:[value] warning: signed overflow. assert S.a+1 ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:148. +tests/slicing/select_by_annot.i:97:[value] warning: loop invariant got status unknown. +tests/slicing/select_by_annot.i:99:[value] entering loop for the first time +tests/slicing/select_by_annot.i:100:[value] warning: assertion got status unknown. +tests/slicing/select_by_annot.i:104:[value] warning: signed overflow. assert S.a+1 ≤ 2147483647; [value] Recording results for f8 [value] Done for function f8 [value] computing for function f9 <- main. - Called from tests/slicing/select_by_annot.c:149. + Called from tests/slicing/select_by_annot.i:149. [value] Recording results for f9 [value] Done for function f9 [value] Recording results for main @@ -165,3 +165,5 @@ void main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_2_select_by_annot.i (no preprocessing) diff --git a/tests/slicing/oracle/select_by_annot.3.res.oracle b/tests/slicing/oracle/select_by_annot.3.res.oracle index 9e81e5e4057bbbc9430fee8a048ba4819ab1c982..2752181f8af93cd4d59f40393b5c08b87820fe04 100644 --- a/tests/slicing/oracle/select_by_annot.3.res.oracle +++ b/tests/slicing/oracle/select_by_annot.3.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/select_by_annot.c (with preprocessing) +[kernel] Parsing tests/slicing/select_by_annot.i (no preprocessing) [value] Analyzing an incomplete application starting at main [value] Computing initial state [value] Initial state computed @@ -10,60 +10,60 @@ Y9 ∈ [--..--] Z9 ∈ [--..--] d ∈ [--..--] -tests/slicing/select_by_annot.c:133:[value] assertion got status valid. -tests/slicing/select_by_annot.c:137:[value] warning: signed overflow. assert (int)((int)(a+b)+c)+d ≤ 2147483647; +tests/slicing/select_by_annot.i:133:[value] assertion got status valid. +tests/slicing/select_by_annot.i:137:[value] warning: signed overflow. assert (int)((int)(a+b)+c)+d ≤ 2147483647; [value] computing for function modifS <- main. - Called from tests/slicing/select_by_annot.c:138. -tests/slicing/select_by_annot.c:122:[value] warning: signed overflow. assert S.a+a ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:138. +tests/slicing/select_by_annot.i:122:[value] warning: signed overflow. assert S.a+a ≤ 2147483647; [value] Recording results for modifS [value] Done for function modifS [value] computing for function new_int <- main. - Called from tests/slicing/select_by_annot.c:140. -tests/slicing/select_by_annot.c:140:[kernel] warning: Neither code nor specification for function new_int, generating default assigns from the prototype + Called from tests/slicing/select_by_annot.i:140. +tests/slicing/select_by_annot.i:140:[kernel] warning: Neither code nor specification for function new_int, generating default assigns from the prototype [value] using specification for function new_int [value] Done for function new_int [value] computing for function f1 <- main. - Called from tests/slicing/select_by_annot.c:141. -tests/slicing/select_by_annot.c:29:[value] warning: assertion got status unknown. + Called from tests/slicing/select_by_annot.i:141. +tests/slicing/select_by_annot.i:29:[value] warning: assertion got status unknown. [value] Recording results for f1 [value] Done for function f1 [value] computing for function f2 <- main. - Called from tests/slicing/select_by_annot.c:142. -tests/slicing/select_by_annot.c:39:[value] warning: assertion got status unknown. + Called from tests/slicing/select_by_annot.i:142. +tests/slicing/select_by_annot.i:39:[value] warning: assertion got status unknown. [value] Recording results for f2 [value] Done for function f2 [value] computing for function f3 <- main. - Called from tests/slicing/select_by_annot.c:143. + Called from tests/slicing/select_by_annot.i:143. [value] Recording results for f3 [value] Done for function f3 [value] computing for function f4 <- main. - Called from tests/slicing/select_by_annot.c:144. + Called from tests/slicing/select_by_annot.i:144. [value] Recording results for f4 [value] Done for function f4 [value] computing for function f5 <- main. - Called from tests/slicing/select_by_annot.c:145. + Called from tests/slicing/select_by_annot.i:145. [value] Recording results for f5 [value] Done for function f5 [value] computing for function f6 <- main. - Called from tests/slicing/select_by_annot.c:146. -tests/slicing/select_by_annot.c:77:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:146. +tests/slicing/select_by_annot.i:77:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; [value] Recording results for f6 [value] Done for function f6 [value] computing for function f7 <- main. - Called from tests/slicing/select_by_annot.c:147. -tests/slicing/select_by_annot.c:88:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:147. +tests/slicing/select_by_annot.i:88:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; [value] Recording results for f7 [value] Done for function f7 [value] computing for function f8 <- main. - Called from tests/slicing/select_by_annot.c:148. -tests/slicing/select_by_annot.c:97:[value] warning: loop invariant got status unknown. -tests/slicing/select_by_annot.c:99:[value] entering loop for the first time -tests/slicing/select_by_annot.c:100:[value] warning: assertion got status unknown. -tests/slicing/select_by_annot.c:104:[value] warning: signed overflow. assert S.a+1 ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:148. +tests/slicing/select_by_annot.i:97:[value] warning: loop invariant got status unknown. +tests/slicing/select_by_annot.i:99:[value] entering loop for the first time +tests/slicing/select_by_annot.i:100:[value] warning: assertion got status unknown. +tests/slicing/select_by_annot.i:104:[value] warning: signed overflow. assert S.a+1 ≤ 2147483647; [value] Recording results for f8 [value] Done for function f8 [value] computing for function f9 <- main. - Called from tests/slicing/select_by_annot.c:149. + Called from tests/slicing/select_by_annot.i:149. [value] Recording results for f9 [value] Done for function f9 [value] Recording results for main @@ -167,3 +167,5 @@ void modifS_slice_1(int a) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_3_select_by_annot.i (no preprocessing) diff --git a/tests/slicing/oracle/select_by_annot.4.res.oracle b/tests/slicing/oracle/select_by_annot.4.res.oracle index a76c9d0a1a450b6200852425ce2e817f9714b761..9da79ccea7e19553ba2465b5227e37805641a2cf 100644 --- a/tests/slicing/oracle/select_by_annot.4.res.oracle +++ b/tests/slicing/oracle/select_by_annot.4.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/select_by_annot.c (with preprocessing) +[kernel] Parsing tests/slicing/select_by_annot.i (no preprocessing) [value] Analyzing an incomplete application starting at main [value] Computing initial state [value] Initial state computed @@ -10,60 +10,60 @@ Y9 ∈ [--..--] Z9 ∈ [--..--] d ∈ [--..--] -tests/slicing/select_by_annot.c:133:[value] assertion got status valid. -tests/slicing/select_by_annot.c:137:[value] warning: signed overflow. assert (int)((int)(a+b)+c)+d ≤ 2147483647; +tests/slicing/select_by_annot.i:133:[value] assertion got status valid. +tests/slicing/select_by_annot.i:137:[value] warning: signed overflow. assert (int)((int)(a+b)+c)+d ≤ 2147483647; [value] computing for function modifS <- main. - Called from tests/slicing/select_by_annot.c:138. -tests/slicing/select_by_annot.c:122:[value] warning: signed overflow. assert S.a+a ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:138. +tests/slicing/select_by_annot.i:122:[value] warning: signed overflow. assert S.a+a ≤ 2147483647; [value] Recording results for modifS [value] Done for function modifS [value] computing for function new_int <- main. - Called from tests/slicing/select_by_annot.c:140. -tests/slicing/select_by_annot.c:140:[kernel] warning: Neither code nor specification for function new_int, generating default assigns from the prototype + Called from tests/slicing/select_by_annot.i:140. +tests/slicing/select_by_annot.i:140:[kernel] warning: Neither code nor specification for function new_int, generating default assigns from the prototype [value] using specification for function new_int [value] Done for function new_int [value] computing for function f1 <- main. - Called from tests/slicing/select_by_annot.c:141. -tests/slicing/select_by_annot.c:29:[value] warning: assertion got status unknown. + Called from tests/slicing/select_by_annot.i:141. +tests/slicing/select_by_annot.i:29:[value] warning: assertion got status unknown. [value] Recording results for f1 [value] Done for function f1 [value] computing for function f2 <- main. - Called from tests/slicing/select_by_annot.c:142. -tests/slicing/select_by_annot.c:39:[value] warning: assertion got status unknown. + Called from tests/slicing/select_by_annot.i:142. +tests/slicing/select_by_annot.i:39:[value] warning: assertion got status unknown. [value] Recording results for f2 [value] Done for function f2 [value] computing for function f3 <- main. - Called from tests/slicing/select_by_annot.c:143. + Called from tests/slicing/select_by_annot.i:143. [value] Recording results for f3 [value] Done for function f3 [value] computing for function f4 <- main. - Called from tests/slicing/select_by_annot.c:144. + Called from tests/slicing/select_by_annot.i:144. [value] Recording results for f4 [value] Done for function f4 [value] computing for function f5 <- main. - Called from tests/slicing/select_by_annot.c:145. + Called from tests/slicing/select_by_annot.i:145. [value] Recording results for f5 [value] Done for function f5 [value] computing for function f6 <- main. - Called from tests/slicing/select_by_annot.c:146. -tests/slicing/select_by_annot.c:77:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:146. +tests/slicing/select_by_annot.i:77:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; [value] Recording results for f6 [value] Done for function f6 [value] computing for function f7 <- main. - Called from tests/slicing/select_by_annot.c:147. -tests/slicing/select_by_annot.c:88:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:147. +tests/slicing/select_by_annot.i:88:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; [value] Recording results for f7 [value] Done for function f7 [value] computing for function f8 <- main. - Called from tests/slicing/select_by_annot.c:148. -tests/slicing/select_by_annot.c:97:[value] warning: loop invariant got status unknown. -tests/slicing/select_by_annot.c:99:[value] entering loop for the first time -tests/slicing/select_by_annot.c:100:[value] warning: assertion got status unknown. -tests/slicing/select_by_annot.c:104:[value] warning: signed overflow. assert S.a+1 ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:148. +tests/slicing/select_by_annot.i:97:[value] warning: loop invariant got status unknown. +tests/slicing/select_by_annot.i:99:[value] entering loop for the first time +tests/slicing/select_by_annot.i:100:[value] warning: assertion got status unknown. +tests/slicing/select_by_annot.i:104:[value] warning: signed overflow. assert S.a+1 ≤ 2147483647; [value] Recording results for f8 [value] Done for function f8 [value] computing for function f9 <- main. - Called from tests/slicing/select_by_annot.c:149. + Called from tests/slicing/select_by_annot.i:149. [value] Recording results for f9 [value] Done for function f9 [value] Recording results for main @@ -168,3 +168,5 @@ void f1_slice_1(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_4_select_by_annot.i (no preprocessing) diff --git a/tests/slicing/oracle/select_by_annot.5.res.oracle b/tests/slicing/oracle/select_by_annot.5.res.oracle index 27cdc1eaa607aa6bae7d2118a43256b5e52d55f9..abf3a6c3b8131075143eec5ccd6432d97b440bee 100644 --- a/tests/slicing/oracle/select_by_annot.5.res.oracle +++ b/tests/slicing/oracle/select_by_annot.5.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/select_by_annot.c (with preprocessing) +[kernel] Parsing tests/slicing/select_by_annot.i (no preprocessing) [value] Analyzing an incomplete application starting at main [value] Computing initial state [value] Initial state computed @@ -10,60 +10,60 @@ Y9 ∈ [--..--] Z9 ∈ [--..--] d ∈ [--..--] -tests/slicing/select_by_annot.c:133:[value] assertion got status valid. -tests/slicing/select_by_annot.c:137:[value] warning: signed overflow. assert (int)((int)(a+b)+c)+d ≤ 2147483647; +tests/slicing/select_by_annot.i:133:[value] assertion got status valid. +tests/slicing/select_by_annot.i:137:[value] warning: signed overflow. assert (int)((int)(a+b)+c)+d ≤ 2147483647; [value] computing for function modifS <- main. - Called from tests/slicing/select_by_annot.c:138. -tests/slicing/select_by_annot.c:122:[value] warning: signed overflow. assert S.a+a ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:138. +tests/slicing/select_by_annot.i:122:[value] warning: signed overflow. assert S.a+a ≤ 2147483647; [value] Recording results for modifS [value] Done for function modifS [value] computing for function new_int <- main. - Called from tests/slicing/select_by_annot.c:140. -tests/slicing/select_by_annot.c:140:[kernel] warning: Neither code nor specification for function new_int, generating default assigns from the prototype + Called from tests/slicing/select_by_annot.i:140. +tests/slicing/select_by_annot.i:140:[kernel] warning: Neither code nor specification for function new_int, generating default assigns from the prototype [value] using specification for function new_int [value] Done for function new_int [value] computing for function f1 <- main. - Called from tests/slicing/select_by_annot.c:141. -tests/slicing/select_by_annot.c:29:[value] warning: assertion got status unknown. + Called from tests/slicing/select_by_annot.i:141. +tests/slicing/select_by_annot.i:29:[value] warning: assertion got status unknown. [value] Recording results for f1 [value] Done for function f1 [value] computing for function f2 <- main. - Called from tests/slicing/select_by_annot.c:142. -tests/slicing/select_by_annot.c:39:[value] warning: assertion got status unknown. + Called from tests/slicing/select_by_annot.i:142. +tests/slicing/select_by_annot.i:39:[value] warning: assertion got status unknown. [value] Recording results for f2 [value] Done for function f2 [value] computing for function f3 <- main. - Called from tests/slicing/select_by_annot.c:143. + Called from tests/slicing/select_by_annot.i:143. [value] Recording results for f3 [value] Done for function f3 [value] computing for function f4 <- main. - Called from tests/slicing/select_by_annot.c:144. + Called from tests/slicing/select_by_annot.i:144. [value] Recording results for f4 [value] Done for function f4 [value] computing for function f5 <- main. - Called from tests/slicing/select_by_annot.c:145. + Called from tests/slicing/select_by_annot.i:145. [value] Recording results for f5 [value] Done for function f5 [value] computing for function f6 <- main. - Called from tests/slicing/select_by_annot.c:146. -tests/slicing/select_by_annot.c:77:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:146. +tests/slicing/select_by_annot.i:77:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; [value] Recording results for f6 [value] Done for function f6 [value] computing for function f7 <- main. - Called from tests/slicing/select_by_annot.c:147. -tests/slicing/select_by_annot.c:88:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:147. +tests/slicing/select_by_annot.i:88:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; [value] Recording results for f7 [value] Done for function f7 [value] computing for function f8 <- main. - Called from tests/slicing/select_by_annot.c:148. -tests/slicing/select_by_annot.c:97:[value] warning: loop invariant got status unknown. -tests/slicing/select_by_annot.c:99:[value] entering loop for the first time -tests/slicing/select_by_annot.c:100:[value] warning: assertion got status unknown. -tests/slicing/select_by_annot.c:104:[value] warning: signed overflow. assert S.a+1 ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:148. +tests/slicing/select_by_annot.i:97:[value] warning: loop invariant got status unknown. +tests/slicing/select_by_annot.i:99:[value] entering loop for the first time +tests/slicing/select_by_annot.i:100:[value] warning: assertion got status unknown. +tests/slicing/select_by_annot.i:104:[value] warning: signed overflow. assert S.a+1 ≤ 2147483647; [value] Recording results for f8 [value] Done for function f8 [value] computing for function f9 <- main. - Called from tests/slicing/select_by_annot.c:149. + Called from tests/slicing/select_by_annot.i:149. [value] Recording results for f9 [value] Done for function f9 [value] Recording results for main @@ -166,3 +166,5 @@ void f2_slice_1(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_5_select_by_annot.i (no preprocessing) diff --git a/tests/slicing/oracle/select_by_annot.6.res.oracle b/tests/slicing/oracle/select_by_annot.6.res.oracle index c1d2c4dd1d06545acbb0bfd4569dd89923b67895..817aa154078ecdd40e5075ff664dd39513819a79 100644 --- a/tests/slicing/oracle/select_by_annot.6.res.oracle +++ b/tests/slicing/oracle/select_by_annot.6.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/select_by_annot.c (with preprocessing) +[kernel] Parsing tests/slicing/select_by_annot.i (no preprocessing) [value] Analyzing an incomplete application starting at main [value] Computing initial state [value] Initial state computed @@ -10,60 +10,60 @@ Y9 ∈ [--..--] Z9 ∈ [--..--] d ∈ [--..--] -tests/slicing/select_by_annot.c:133:[value] assertion got status valid. -tests/slicing/select_by_annot.c:137:[value] warning: signed overflow. assert (int)((int)(a+b)+c)+d ≤ 2147483647; +tests/slicing/select_by_annot.i:133:[value] assertion got status valid. +tests/slicing/select_by_annot.i:137:[value] warning: signed overflow. assert (int)((int)(a+b)+c)+d ≤ 2147483647; [value] computing for function modifS <- main. - Called from tests/slicing/select_by_annot.c:138. -tests/slicing/select_by_annot.c:122:[value] warning: signed overflow. assert S.a+a ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:138. +tests/slicing/select_by_annot.i:122:[value] warning: signed overflow. assert S.a+a ≤ 2147483647; [value] Recording results for modifS [value] Done for function modifS [value] computing for function new_int <- main. - Called from tests/slicing/select_by_annot.c:140. -tests/slicing/select_by_annot.c:140:[kernel] warning: Neither code nor specification for function new_int, generating default assigns from the prototype + Called from tests/slicing/select_by_annot.i:140. +tests/slicing/select_by_annot.i:140:[kernel] warning: Neither code nor specification for function new_int, generating default assigns from the prototype [value] using specification for function new_int [value] Done for function new_int [value] computing for function f1 <- main. - Called from tests/slicing/select_by_annot.c:141. -tests/slicing/select_by_annot.c:29:[value] warning: assertion got status unknown. + Called from tests/slicing/select_by_annot.i:141. +tests/slicing/select_by_annot.i:29:[value] warning: assertion got status unknown. [value] Recording results for f1 [value] Done for function f1 [value] computing for function f2 <- main. - Called from tests/slicing/select_by_annot.c:142. -tests/slicing/select_by_annot.c:39:[value] warning: assertion got status unknown. + Called from tests/slicing/select_by_annot.i:142. +tests/slicing/select_by_annot.i:39:[value] warning: assertion got status unknown. [value] Recording results for f2 [value] Done for function f2 [value] computing for function f3 <- main. - Called from tests/slicing/select_by_annot.c:143. + Called from tests/slicing/select_by_annot.i:143. [value] Recording results for f3 [value] Done for function f3 [value] computing for function f4 <- main. - Called from tests/slicing/select_by_annot.c:144. + Called from tests/slicing/select_by_annot.i:144. [value] Recording results for f4 [value] Done for function f4 [value] computing for function f5 <- main. - Called from tests/slicing/select_by_annot.c:145. + Called from tests/slicing/select_by_annot.i:145. [value] Recording results for f5 [value] Done for function f5 [value] computing for function f6 <- main. - Called from tests/slicing/select_by_annot.c:146. -tests/slicing/select_by_annot.c:77:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:146. +tests/slicing/select_by_annot.i:77:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; [value] Recording results for f6 [value] Done for function f6 [value] computing for function f7 <- main. - Called from tests/slicing/select_by_annot.c:147. -tests/slicing/select_by_annot.c:88:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:147. +tests/slicing/select_by_annot.i:88:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; [value] Recording results for f7 [value] Done for function f7 [value] computing for function f8 <- main. - Called from tests/slicing/select_by_annot.c:148. -tests/slicing/select_by_annot.c:97:[value] warning: loop invariant got status unknown. -tests/slicing/select_by_annot.c:99:[value] entering loop for the first time -tests/slicing/select_by_annot.c:100:[value] warning: assertion got status unknown. -tests/slicing/select_by_annot.c:104:[value] warning: signed overflow. assert S.a+1 ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:148. +tests/slicing/select_by_annot.i:97:[value] warning: loop invariant got status unknown. +tests/slicing/select_by_annot.i:99:[value] entering loop for the first time +tests/slicing/select_by_annot.i:100:[value] warning: assertion got status unknown. +tests/slicing/select_by_annot.i:104:[value] warning: signed overflow. assert S.a+1 ≤ 2147483647; [value] Recording results for f8 [value] Done for function f8 [value] computing for function f9 <- main. - Called from tests/slicing/select_by_annot.c:149. + Called from tests/slicing/select_by_annot.i:149. [value] Recording results for f9 [value] Done for function f9 [value] Recording results for main @@ -162,3 +162,5 @@ void f3_slice_1(int cond) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_6_select_by_annot.i (no preprocessing) diff --git a/tests/slicing/oracle/select_by_annot.7.res.oracle b/tests/slicing/oracle/select_by_annot.7.res.oracle index cfc87cc22f352d47d30c94cce7dc4df502a5c7f9..80d0908e63875de918e4d40d48240c27ee5068d8 100644 --- a/tests/slicing/oracle/select_by_annot.7.res.oracle +++ b/tests/slicing/oracle/select_by_annot.7.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/select_by_annot.c (with preprocessing) +[kernel] Parsing tests/slicing/select_by_annot.i (no preprocessing) [value] Analyzing an incomplete application starting at main [value] Computing initial state [value] Initial state computed @@ -10,60 +10,60 @@ Y9 ∈ [--..--] Z9 ∈ [--..--] d ∈ [--..--] -tests/slicing/select_by_annot.c:133:[value] assertion got status valid. -tests/slicing/select_by_annot.c:137:[value] warning: signed overflow. assert (int)((int)(a+b)+c)+d ≤ 2147483647; +tests/slicing/select_by_annot.i:133:[value] assertion got status valid. +tests/slicing/select_by_annot.i:137:[value] warning: signed overflow. assert (int)((int)(a+b)+c)+d ≤ 2147483647; [value] computing for function modifS <- main. - Called from tests/slicing/select_by_annot.c:138. -tests/slicing/select_by_annot.c:122:[value] warning: signed overflow. assert S.a+a ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:138. +tests/slicing/select_by_annot.i:122:[value] warning: signed overflow. assert S.a+a ≤ 2147483647; [value] Recording results for modifS [value] Done for function modifS [value] computing for function new_int <- main. - Called from tests/slicing/select_by_annot.c:140. -tests/slicing/select_by_annot.c:140:[kernel] warning: Neither code nor specification for function new_int, generating default assigns from the prototype + Called from tests/slicing/select_by_annot.i:140. +tests/slicing/select_by_annot.i:140:[kernel] warning: Neither code nor specification for function new_int, generating default assigns from the prototype [value] using specification for function new_int [value] Done for function new_int [value] computing for function f1 <- main. - Called from tests/slicing/select_by_annot.c:141. -tests/slicing/select_by_annot.c:29:[value] warning: assertion got status unknown. + Called from tests/slicing/select_by_annot.i:141. +tests/slicing/select_by_annot.i:29:[value] warning: assertion got status unknown. [value] Recording results for f1 [value] Done for function f1 [value] computing for function f2 <- main. - Called from tests/slicing/select_by_annot.c:142. -tests/slicing/select_by_annot.c:39:[value] warning: assertion got status unknown. + Called from tests/slicing/select_by_annot.i:142. +tests/slicing/select_by_annot.i:39:[value] warning: assertion got status unknown. [value] Recording results for f2 [value] Done for function f2 [value] computing for function f3 <- main. - Called from tests/slicing/select_by_annot.c:143. + Called from tests/slicing/select_by_annot.i:143. [value] Recording results for f3 [value] Done for function f3 [value] computing for function f4 <- main. - Called from tests/slicing/select_by_annot.c:144. + Called from tests/slicing/select_by_annot.i:144. [value] Recording results for f4 [value] Done for function f4 [value] computing for function f5 <- main. - Called from tests/slicing/select_by_annot.c:145. + Called from tests/slicing/select_by_annot.i:145. [value] Recording results for f5 [value] Done for function f5 [value] computing for function f6 <- main. - Called from tests/slicing/select_by_annot.c:146. -tests/slicing/select_by_annot.c:77:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:146. +tests/slicing/select_by_annot.i:77:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; [value] Recording results for f6 [value] Done for function f6 [value] computing for function f7 <- main. - Called from tests/slicing/select_by_annot.c:147. -tests/slicing/select_by_annot.c:88:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:147. +tests/slicing/select_by_annot.i:88:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; [value] Recording results for f7 [value] Done for function f7 [value] computing for function f8 <- main. - Called from tests/slicing/select_by_annot.c:148. -tests/slicing/select_by_annot.c:97:[value] warning: loop invariant got status unknown. -tests/slicing/select_by_annot.c:99:[value] entering loop for the first time -tests/slicing/select_by_annot.c:100:[value] warning: assertion got status unknown. -tests/slicing/select_by_annot.c:104:[value] warning: signed overflow. assert S.a+1 ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:148. +tests/slicing/select_by_annot.i:97:[value] warning: loop invariant got status unknown. +tests/slicing/select_by_annot.i:99:[value] entering loop for the first time +tests/slicing/select_by_annot.i:100:[value] warning: assertion got status unknown. +tests/slicing/select_by_annot.i:104:[value] warning: signed overflow. assert S.a+1 ≤ 2147483647; [value] Recording results for f8 [value] Done for function f8 [value] computing for function f9 <- main. - Called from tests/slicing/select_by_annot.c:149. + Called from tests/slicing/select_by_annot.i:149. [value] Recording results for f9 [value] Done for function f9 [value] Recording results for main @@ -171,3 +171,5 @@ void f4_slice_1(int cond) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_7_select_by_annot.i (no preprocessing) diff --git a/tests/slicing/oracle/select_by_annot.8.res.oracle b/tests/slicing/oracle/select_by_annot.8.res.oracle index 0c2efcb49aed3599a7cf2d11b02a9181d880facf..e1df3be6209f82e81a0375cdacefccdd3a287805 100644 --- a/tests/slicing/oracle/select_by_annot.8.res.oracle +++ b/tests/slicing/oracle/select_by_annot.8.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/select_by_annot.c (with preprocessing) +[kernel] Parsing tests/slicing/select_by_annot.i (no preprocessing) [value] Analyzing an incomplete application starting at main [value] Computing initial state [value] Initial state computed @@ -10,60 +10,60 @@ Y9 ∈ [--..--] Z9 ∈ [--..--] d ∈ [--..--] -tests/slicing/select_by_annot.c:133:[value] assertion got status valid. -tests/slicing/select_by_annot.c:137:[value] warning: signed overflow. assert (int)((int)(a+b)+c)+d ≤ 2147483647; +tests/slicing/select_by_annot.i:133:[value] assertion got status valid. +tests/slicing/select_by_annot.i:137:[value] warning: signed overflow. assert (int)((int)(a+b)+c)+d ≤ 2147483647; [value] computing for function modifS <- main. - Called from tests/slicing/select_by_annot.c:138. -tests/slicing/select_by_annot.c:122:[value] warning: signed overflow. assert S.a+a ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:138. +tests/slicing/select_by_annot.i:122:[value] warning: signed overflow. assert S.a+a ≤ 2147483647; [value] Recording results for modifS [value] Done for function modifS [value] computing for function new_int <- main. - Called from tests/slicing/select_by_annot.c:140. -tests/slicing/select_by_annot.c:140:[kernel] warning: Neither code nor specification for function new_int, generating default assigns from the prototype + Called from tests/slicing/select_by_annot.i:140. +tests/slicing/select_by_annot.i:140:[kernel] warning: Neither code nor specification for function new_int, generating default assigns from the prototype [value] using specification for function new_int [value] Done for function new_int [value] computing for function f1 <- main. - Called from tests/slicing/select_by_annot.c:141. -tests/slicing/select_by_annot.c:29:[value] warning: assertion got status unknown. + Called from tests/slicing/select_by_annot.i:141. +tests/slicing/select_by_annot.i:29:[value] warning: assertion got status unknown. [value] Recording results for f1 [value] Done for function f1 [value] computing for function f2 <- main. - Called from tests/slicing/select_by_annot.c:142. -tests/slicing/select_by_annot.c:39:[value] warning: assertion got status unknown. + Called from tests/slicing/select_by_annot.i:142. +tests/slicing/select_by_annot.i:39:[value] warning: assertion got status unknown. [value] Recording results for f2 [value] Done for function f2 [value] computing for function f3 <- main. - Called from tests/slicing/select_by_annot.c:143. + Called from tests/slicing/select_by_annot.i:143. [value] Recording results for f3 [value] Done for function f3 [value] computing for function f4 <- main. - Called from tests/slicing/select_by_annot.c:144. + Called from tests/slicing/select_by_annot.i:144. [value] Recording results for f4 [value] Done for function f4 [value] computing for function f5 <- main. - Called from tests/slicing/select_by_annot.c:145. + Called from tests/slicing/select_by_annot.i:145. [value] Recording results for f5 [value] Done for function f5 [value] computing for function f6 <- main. - Called from tests/slicing/select_by_annot.c:146. -tests/slicing/select_by_annot.c:77:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:146. +tests/slicing/select_by_annot.i:77:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; [value] Recording results for f6 [value] Done for function f6 [value] computing for function f7 <- main. - Called from tests/slicing/select_by_annot.c:147. -tests/slicing/select_by_annot.c:88:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:147. +tests/slicing/select_by_annot.i:88:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; [value] Recording results for f7 [value] Done for function f7 [value] computing for function f8 <- main. - Called from tests/slicing/select_by_annot.c:148. -tests/slicing/select_by_annot.c:97:[value] warning: loop invariant got status unknown. -tests/slicing/select_by_annot.c:99:[value] entering loop for the first time -tests/slicing/select_by_annot.c:100:[value] warning: assertion got status unknown. -tests/slicing/select_by_annot.c:104:[value] warning: signed overflow. assert S.a+1 ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:148. +tests/slicing/select_by_annot.i:97:[value] warning: loop invariant got status unknown. +tests/slicing/select_by_annot.i:99:[value] entering loop for the first time +tests/slicing/select_by_annot.i:100:[value] warning: assertion got status unknown. +tests/slicing/select_by_annot.i:104:[value] warning: signed overflow. assert S.a+1 ≤ 2147483647; [value] Recording results for f8 [value] Done for function f8 [value] computing for function f9 <- main. - Called from tests/slicing/select_by_annot.c:149. + Called from tests/slicing/select_by_annot.i:149. [value] Recording results for f9 [value] Done for function f9 [value] Recording results for main @@ -162,3 +162,5 @@ void f5_slice_1(int cond) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_8_select_by_annot.i (no preprocessing) diff --git a/tests/slicing/oracle/select_by_annot.9.res.oracle b/tests/slicing/oracle/select_by_annot.9.res.oracle index ca3d91d6524c6434c9e7aff24982cb3822f19d10..0416aa6b8f551d1d3941f1011591cca7ab3acc40 100644 --- a/tests/slicing/oracle/select_by_annot.9.res.oracle +++ b/tests/slicing/oracle/select_by_annot.9.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/select_by_annot.c (with preprocessing) +[kernel] Parsing tests/slicing/select_by_annot.i (no preprocessing) [value] Analyzing an incomplete application starting at main [value] Computing initial state [value] Initial state computed @@ -10,60 +10,60 @@ Y9 ∈ [--..--] Z9 ∈ [--..--] d ∈ [--..--] -tests/slicing/select_by_annot.c:133:[value] assertion got status valid. -tests/slicing/select_by_annot.c:137:[value] warning: signed overflow. assert (int)((int)(a+b)+c)+d ≤ 2147483647; +tests/slicing/select_by_annot.i:133:[value] assertion got status valid. +tests/slicing/select_by_annot.i:137:[value] warning: signed overflow. assert (int)((int)(a+b)+c)+d ≤ 2147483647; [value] computing for function modifS <- main. - Called from tests/slicing/select_by_annot.c:138. -tests/slicing/select_by_annot.c:122:[value] warning: signed overflow. assert S.a+a ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:138. +tests/slicing/select_by_annot.i:122:[value] warning: signed overflow. assert S.a+a ≤ 2147483647; [value] Recording results for modifS [value] Done for function modifS [value] computing for function new_int <- main. - Called from tests/slicing/select_by_annot.c:140. -tests/slicing/select_by_annot.c:140:[kernel] warning: Neither code nor specification for function new_int, generating default assigns from the prototype + Called from tests/slicing/select_by_annot.i:140. +tests/slicing/select_by_annot.i:140:[kernel] warning: Neither code nor specification for function new_int, generating default assigns from the prototype [value] using specification for function new_int [value] Done for function new_int [value] computing for function f1 <- main. - Called from tests/slicing/select_by_annot.c:141. -tests/slicing/select_by_annot.c:29:[value] warning: assertion got status unknown. + Called from tests/slicing/select_by_annot.i:141. +tests/slicing/select_by_annot.i:29:[value] warning: assertion got status unknown. [value] Recording results for f1 [value] Done for function f1 [value] computing for function f2 <- main. - Called from tests/slicing/select_by_annot.c:142. -tests/slicing/select_by_annot.c:39:[value] warning: assertion got status unknown. + Called from tests/slicing/select_by_annot.i:142. +tests/slicing/select_by_annot.i:39:[value] warning: assertion got status unknown. [value] Recording results for f2 [value] Done for function f2 [value] computing for function f3 <- main. - Called from tests/slicing/select_by_annot.c:143. + Called from tests/slicing/select_by_annot.i:143. [value] Recording results for f3 [value] Done for function f3 [value] computing for function f4 <- main. - Called from tests/slicing/select_by_annot.c:144. + Called from tests/slicing/select_by_annot.i:144. [value] Recording results for f4 [value] Done for function f4 [value] computing for function f5 <- main. - Called from tests/slicing/select_by_annot.c:145. + Called from tests/slicing/select_by_annot.i:145. [value] Recording results for f5 [value] Done for function f5 [value] computing for function f6 <- main. - Called from tests/slicing/select_by_annot.c:146. -tests/slicing/select_by_annot.c:77:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:146. +tests/slicing/select_by_annot.i:77:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; [value] Recording results for f6 [value] Done for function f6 [value] computing for function f7 <- main. - Called from tests/slicing/select_by_annot.c:147. -tests/slicing/select_by_annot.c:88:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:147. +tests/slicing/select_by_annot.i:88:[value] warning: signed overflow. assert Sa+1 ≤ 2147483647; [value] Recording results for f7 [value] Done for function f7 [value] computing for function f8 <- main. - Called from tests/slicing/select_by_annot.c:148. -tests/slicing/select_by_annot.c:97:[value] warning: loop invariant got status unknown. -tests/slicing/select_by_annot.c:99:[value] entering loop for the first time -tests/slicing/select_by_annot.c:100:[value] warning: assertion got status unknown. -tests/slicing/select_by_annot.c:104:[value] warning: signed overflow. assert S.a+1 ≤ 2147483647; + Called from tests/slicing/select_by_annot.i:148. +tests/slicing/select_by_annot.i:97:[value] warning: loop invariant got status unknown. +tests/slicing/select_by_annot.i:99:[value] entering loop for the first time +tests/slicing/select_by_annot.i:100:[value] warning: assertion got status unknown. +tests/slicing/select_by_annot.i:104:[value] warning: signed overflow. assert S.a+1 ≤ 2147483647; [value] Recording results for f8 [value] Done for function f8 [value] computing for function f9 <- main. - Called from tests/slicing/select_by_annot.c:149. + Called from tests/slicing/select_by_annot.i:149. [value] Recording results for f9 [value] Done for function f9 [value] Recording results for main @@ -173,3 +173,5 @@ void f6_slice_1(int cond) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_9_select_by_annot.i (no preprocessing) diff --git a/tests/slicing/oracle/select_calls.0.res.oracle b/tests/slicing/oracle/select_calls.0.res.oracle index d4e2b4ecf84b0195bb63b16e79b08d3e502cce0b..63d8ebe64186a72973d614f7dde6e674cced2a4b 100644 --- a/tests/slicing/oracle/select_calls.0.res.oracle +++ b/tests/slicing/oracle/select_calls.0.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/select_calls.c (with preprocessing) +[kernel] Parsing tests/slicing/select_calls.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing an incomplete application starting at f [value] Computing initial state @@ -8,37 +8,37 @@ c ∈ [--..--] d ∈ [--..--] [value] computing for function send <- f. - Called from tests/slicing/select_calls.c:22. -tests/slicing/select_calls.c:22:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype + Called from tests/slicing/select_calls.i:22. +tests/slicing/select_calls.i:22:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype [value] using specification for function send [value] Done for function send [value] computing for function send <- f. - Called from tests/slicing/select_calls.c:23. + Called from tests/slicing/select_calls.i:23. [value] Done for function send [value] computing for function crypt <- f. - Called from tests/slicing/select_calls.c:24. -tests/slicing/select_calls.c:24:[kernel] warning: Neither code nor specification for function crypt, generating default assigns from the prototype + Called from tests/slicing/select_calls.i:24. +tests/slicing/select_calls.i:24:[kernel] warning: Neither code nor specification for function crypt, generating default assigns from the prototype [value] using specification for function crypt [value] Done for function crypt [value] computing for function send <- f. - Called from tests/slicing/select_calls.c:25. + Called from tests/slicing/select_calls.i:25. [value] Done for function send [value] computing for function send <- f. - Called from tests/slicing/select_calls.c:28. + Called from tests/slicing/select_calls.i:28. [value] Done for function send [value] computing for function uncrypt <- f. - Called from tests/slicing/select_calls.c:30. -tests/slicing/select_calls.c:30:[kernel] warning: Neither code nor specification for function uncrypt, generating default assigns from the prototype + Called from tests/slicing/select_calls.i:30. +tests/slicing/select_calls.i:30:[kernel] warning: Neither code nor specification for function uncrypt, generating default assigns from the prototype [value] using specification for function uncrypt [value] Done for function uncrypt [value] computing for function send <- f. - Called from tests/slicing/select_calls.c:31. + Called from tests/slicing/select_calls.i:31. [value] Done for function send [value] computing for function crypt <- f. - Called from tests/slicing/select_calls.c:33. + Called from tests/slicing/select_calls.i:33. [value] Done for function crypt [value] computing for function send <- f. - Called from tests/slicing/select_calls.c:35. + Called from tests/slicing/select_calls.i:35. [value] Done for function send [value] Recording results for f [value] done for function f @@ -94,3 +94,5 @@ void f(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_0_select_calls.i (no preprocessing) diff --git a/tests/slicing/oracle/select_calls.1.res.oracle b/tests/slicing/oracle/select_calls.1.res.oracle index 8fcc7bd0d761a75868b8f22adafd49f58656e51d..037e2f172a825f32216087b8bef06af8e02f196d 100644 --- a/tests/slicing/oracle/select_calls.1.res.oracle +++ b/tests/slicing/oracle/select_calls.1.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/select_calls.c (with preprocessing) +[kernel] Parsing tests/slicing/select_calls.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing an incomplete application starting at g [value] Computing initial state @@ -8,8 +8,8 @@ c ∈ [--..--] d ∈ [--..--] [value] computing for function nothing <- g. - Called from tests/slicing/select_calls.c:42. -tests/slicing/select_calls.c:42:[kernel] warning: Neither code nor specification for function nothing, generating default assigns from the prototype + Called from tests/slicing/select_calls.i:42. +tests/slicing/select_calls.i:42:[kernel] warning: Neither code nor specification for function nothing, generating default assigns from the prototype [value] using specification for function nothing [value] Done for function nothing [value] Recording results for g @@ -41,3 +41,5 @@ void g(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_1_select_calls.i (no preprocessing) diff --git a/tests/slicing/oracle/select_return.0.res.oracle b/tests/slicing/oracle/select_return.0.res.oracle index 86471b381579ca40418e57075d57aacd51a3450e..5653de17fc3d811380da3f15780a622a907fc6e5 100644 --- a/tests/slicing/oracle/select_return.0.res.oracle +++ b/tests/slicing/oracle/select_return.0.res.oracle @@ -1,6 +1,6 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/select_return.c (with preprocessing) -tests/slicing/select_return.c:45:[kernel] warning: Calling undeclared function f. Old style K&R code? +[kernel] Parsing tests/slicing/select_return.i (no preprocessing) +tests/slicing/select_return.i:45:[kernel] warning: Calling undeclared function f. Old style K&R code? [slicing] slicing requests in progress... [value] Analyzing an incomplete application starting at g [value] Computing initial state @@ -10,54 +10,54 @@ tests/slicing/select_return.c:45:[kernel] warning: Calling undeclared function f H ∈ [--..--] I ∈ [--..--] [value] computing for function k <- g. - Called from tests/slicing/select_return.c:44. + Called from tests/slicing/select_return.i:44. [value] computing for function get <- k <- g. - Called from tests/slicing/select_return.c:35. -tests/slicing/select_return.c:35:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype + Called from tests/slicing/select_return.i:35. +tests/slicing/select_return.i:35:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype [value] using specification for function get [value] Done for function get [value] computing for function send_bis <- k <- g. - Called from tests/slicing/select_return.c:39. -tests/slicing/select_return.c:39:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype + Called from tests/slicing/select_return.i:39. +tests/slicing/select_return.i:39:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype [value] using specification for function send_bis [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function f <- g. - Called from tests/slicing/select_return.c:45. + Called from tests/slicing/select_return.i:45. [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:49. + Called from tests/slicing/select_return.i:49. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:50. + Called from tests/slicing/select_return.i:50. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:51. + Called from tests/slicing/select_return.i:51. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function send <- f <- g. - Called from tests/slicing/select_return.c:53. -tests/slicing/select_return.c:53:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype + Called from tests/slicing/select_return.i:53. +tests/slicing/select_return.i:53:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype [value] using specification for function send [value] Done for function send [value] Recording results for f @@ -121,3 +121,5 @@ void f_slice_1(int y) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_0_select_return.i (no preprocessing) diff --git a/tests/slicing/oracle/select_return.1.res.oracle b/tests/slicing/oracle/select_return.1.res.oracle index 6dc664b9a166d7af1f16f78571f595ea556b5e63..de1ffcb6651b79239d3be1cba6a03c0ade54dde2 100644 --- a/tests/slicing/oracle/select_return.1.res.oracle +++ b/tests/slicing/oracle/select_return.1.res.oracle @@ -1,6 +1,6 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/select_return.c (with preprocessing) -tests/slicing/select_return.c:45:[kernel] warning: Calling undeclared function f. Old style K&R code? +[kernel] Parsing tests/slicing/select_return.i (no preprocessing) +tests/slicing/select_return.i:45:[kernel] warning: Calling undeclared function f. Old style K&R code? [slicing] slicing requests in progress... [value] Analyzing an incomplete application starting at g [value] Computing initial state @@ -10,54 +10,54 @@ tests/slicing/select_return.c:45:[kernel] warning: Calling undeclared function f H ∈ [--..--] I ∈ [--..--] [value] computing for function k <- g. - Called from tests/slicing/select_return.c:44. + Called from tests/slicing/select_return.i:44. [value] computing for function get <- k <- g. - Called from tests/slicing/select_return.c:35. -tests/slicing/select_return.c:35:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype + Called from tests/slicing/select_return.i:35. +tests/slicing/select_return.i:35:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype [value] using specification for function get [value] Done for function get [value] computing for function send_bis <- k <- g. - Called from tests/slicing/select_return.c:39. -tests/slicing/select_return.c:39:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype + Called from tests/slicing/select_return.i:39. +tests/slicing/select_return.i:39:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype [value] using specification for function send_bis [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function f <- g. - Called from tests/slicing/select_return.c:45. + Called from tests/slicing/select_return.i:45. [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:49. + Called from tests/slicing/select_return.i:49. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:50. + Called from tests/slicing/select_return.i:50. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:51. + Called from tests/slicing/select_return.i:51. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function send <- f <- g. - Called from tests/slicing/select_return.c:53. -tests/slicing/select_return.c:53:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype + Called from tests/slicing/select_return.i:53. +tests/slicing/select_return.i:53:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype [value] using specification for function send [value] Done for function send [value] Recording results for f @@ -114,3 +114,5 @@ void f_slice_1(int y) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_1_select_return.i (no preprocessing) diff --git a/tests/slicing/oracle/select_return.10.res.oracle b/tests/slicing/oracle/select_return.10.res.oracle index f2ccf100e1e3e035f0d098bbde51cd8b00423eba..714223871ec74cef338b2ed4ea6689fc95bdccc5 100644 --- a/tests/slicing/oracle/select_return.10.res.oracle +++ b/tests/slicing/oracle/select_return.10.res.oracle @@ -1,6 +1,6 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/select_return.c (with preprocessing) -tests/slicing/select_return.c:45:[kernel] warning: Calling undeclared function f. Old style K&R code? +[kernel] Parsing tests/slicing/select_return.i (no preprocessing) +tests/slicing/select_return.i:45:[kernel] warning: Calling undeclared function f. Old style K&R code? [slicing] slicing requests in progress... [value] Analyzing an incomplete application starting at g [value] Computing initial state @@ -10,54 +10,54 @@ tests/slicing/select_return.c:45:[kernel] warning: Calling undeclared function f H ∈ [--..--] I ∈ [--..--] [value] computing for function k <- g. - Called from tests/slicing/select_return.c:44. + Called from tests/slicing/select_return.i:44. [value] computing for function get <- k <- g. - Called from tests/slicing/select_return.c:35. -tests/slicing/select_return.c:35:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype + Called from tests/slicing/select_return.i:35. +tests/slicing/select_return.i:35:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype [value] using specification for function get [value] Done for function get [value] computing for function send_bis <- k <- g. - Called from tests/slicing/select_return.c:39. -tests/slicing/select_return.c:39:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype + Called from tests/slicing/select_return.i:39. +tests/slicing/select_return.i:39:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype [value] using specification for function send_bis [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function f <- g. - Called from tests/slicing/select_return.c:45. + Called from tests/slicing/select_return.i:45. [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:49. + Called from tests/slicing/select_return.i:49. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:50. + Called from tests/slicing/select_return.i:50. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:51. + Called from tests/slicing/select_return.i:51. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function send <- f <- g. - Called from tests/slicing/select_return.c:53. -tests/slicing/select_return.c:53:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype + Called from tests/slicing/select_return.i:53. +tests/slicing/select_return.i:53:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype [value] using specification for function send [value] Done for function send [value] Recording results for f @@ -141,3 +141,5 @@ void f_slice_1(int y) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_10_select_return.i (no preprocessing) diff --git a/tests/slicing/oracle/select_return.11.res.oracle b/tests/slicing/oracle/select_return.11.res.oracle index 329de0803d9d2e521eea4b8dabb5bd709b44145d..a5da076f2477b072d699094523cbcbdae00b865f 100644 --- a/tests/slicing/oracle/select_return.11.res.oracle +++ b/tests/slicing/oracle/select_return.11.res.oracle @@ -1,6 +1,6 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/select_return.c (with preprocessing) -tests/slicing/select_return.c:45:[kernel] warning: Calling undeclared function f. Old style K&R code? +[kernel] Parsing tests/slicing/select_return.i (no preprocessing) +tests/slicing/select_return.i:45:[kernel] warning: Calling undeclared function f. Old style K&R code? [slicing] slicing requests in progress... [value] Analyzing an incomplete application starting at g [value] Computing initial state @@ -10,54 +10,54 @@ tests/slicing/select_return.c:45:[kernel] warning: Calling undeclared function f H ∈ [--..--] I ∈ [--..--] [value] computing for function k <- g. - Called from tests/slicing/select_return.c:44. + Called from tests/slicing/select_return.i:44. [value] computing for function get <- k <- g. - Called from tests/slicing/select_return.c:35. -tests/slicing/select_return.c:35:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype + Called from tests/slicing/select_return.i:35. +tests/slicing/select_return.i:35:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype [value] using specification for function get [value] Done for function get [value] computing for function send_bis <- k <- g. - Called from tests/slicing/select_return.c:39. -tests/slicing/select_return.c:39:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype + Called from tests/slicing/select_return.i:39. +tests/slicing/select_return.i:39:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype [value] using specification for function send_bis [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function f <- g. - Called from tests/slicing/select_return.c:45. + Called from tests/slicing/select_return.i:45. [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:49. + Called from tests/slicing/select_return.i:49. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:50. + Called from tests/slicing/select_return.i:50. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:51. + Called from tests/slicing/select_return.i:51. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function send <- f <- g. - Called from tests/slicing/select_return.c:53. -tests/slicing/select_return.c:53:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype + Called from tests/slicing/select_return.i:53. +tests/slicing/select_return.i:53:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype [value] using specification for function send [value] Done for function send [value] Recording results for f @@ -117,3 +117,5 @@ int f_slice_1(int y) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_11_select_return.i (no preprocessing) diff --git a/tests/slicing/oracle/select_return.12.res.oracle b/tests/slicing/oracle/select_return.12.res.oracle index f165f98c8664fa83e03d5ed660d8f4e0b3580425..2344f777be3a1936a3d8ce968fd2be81bc60d5b7 100644 --- a/tests/slicing/oracle/select_return.12.res.oracle +++ b/tests/slicing/oracle/select_return.12.res.oracle @@ -1,6 +1,6 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/select_return.c (with preprocessing) -tests/slicing/select_return.c:45:[kernel] warning: Calling undeclared function f. Old style K&R code? +[kernel] Parsing tests/slicing/select_return.i (no preprocessing) +tests/slicing/select_return.i:45:[kernel] warning: Calling undeclared function f. Old style K&R code? [slicing] slicing requests in progress... [value] Analyzing an incomplete application starting at g [value] Computing initial state @@ -10,54 +10,54 @@ tests/slicing/select_return.c:45:[kernel] warning: Calling undeclared function f H ∈ [--..--] I ∈ [--..--] [value] computing for function k <- g. - Called from tests/slicing/select_return.c:44. + Called from tests/slicing/select_return.i:44. [value] computing for function get <- k <- g. - Called from tests/slicing/select_return.c:35. -tests/slicing/select_return.c:35:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype + Called from tests/slicing/select_return.i:35. +tests/slicing/select_return.i:35:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype [value] using specification for function get [value] Done for function get [value] computing for function send_bis <- k <- g. - Called from tests/slicing/select_return.c:39. -tests/slicing/select_return.c:39:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype + Called from tests/slicing/select_return.i:39. +tests/slicing/select_return.i:39:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype [value] using specification for function send_bis [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function f <- g. - Called from tests/slicing/select_return.c:45. + Called from tests/slicing/select_return.i:45. [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:49. + Called from tests/slicing/select_return.i:49. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:50. + Called from tests/slicing/select_return.i:50. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:51. + Called from tests/slicing/select_return.i:51. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function send <- f <- g. - Called from tests/slicing/select_return.c:53. -tests/slicing/select_return.c:53:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype + Called from tests/slicing/select_return.i:53. +tests/slicing/select_return.i:53:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype [value] using specification for function send [value] Done for function send [value] Recording results for f @@ -110,3 +110,5 @@ int f_slice_1(int y) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_12_select_return.i (no preprocessing) diff --git a/tests/slicing/oracle/select_return.13.res.oracle b/tests/slicing/oracle/select_return.13.res.oracle index 3049e4f6307a669d9d45ed2fde9ba2758a5d30dd..ab7f7a480450f904acf18514b4ed878bc185a013 100644 --- a/tests/slicing/oracle/select_return.13.res.oracle +++ b/tests/slicing/oracle/select_return.13.res.oracle @@ -1,6 +1,6 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/select_return.c (with preprocessing) -tests/slicing/select_return.c:45:[kernel] warning: Calling undeclared function f. Old style K&R code? +[kernel] Parsing tests/slicing/select_return.i (no preprocessing) +tests/slicing/select_return.i:45:[kernel] warning: Calling undeclared function f. Old style K&R code? [slicing] slicing requests in progress... [value] Analyzing an incomplete application starting at g [value] Computing initial state @@ -10,54 +10,54 @@ tests/slicing/select_return.c:45:[kernel] warning: Calling undeclared function f H ∈ [--..--] I ∈ [--..--] [value] computing for function k <- g. - Called from tests/slicing/select_return.c:44. + Called from tests/slicing/select_return.i:44. [value] computing for function get <- k <- g. - Called from tests/slicing/select_return.c:35. -tests/slicing/select_return.c:35:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype + Called from tests/slicing/select_return.i:35. +tests/slicing/select_return.i:35:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype [value] using specification for function get [value] Done for function get [value] computing for function send_bis <- k <- g. - Called from tests/slicing/select_return.c:39. -tests/slicing/select_return.c:39:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype + Called from tests/slicing/select_return.i:39. +tests/slicing/select_return.i:39:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype [value] using specification for function send_bis [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function f <- g. - Called from tests/slicing/select_return.c:45. + Called from tests/slicing/select_return.i:45. [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:49. + Called from tests/slicing/select_return.i:49. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:50. + Called from tests/slicing/select_return.i:50. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:51. + Called from tests/slicing/select_return.i:51. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function send <- f <- g. - Called from tests/slicing/select_return.c:53. -tests/slicing/select_return.c:53:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype + Called from tests/slicing/select_return.i:53. +tests/slicing/select_return.i:53:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype [value] using specification for function send [value] Done for function send [value] Recording results for f @@ -108,3 +108,5 @@ int f_slice_1(int y) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_13_select_return.i (no preprocessing) diff --git a/tests/slicing/oracle/select_return.14.res.oracle b/tests/slicing/oracle/select_return.14.res.oracle index 303cdb26f9ec3915063ff01a547f956daaaa895a..10059935261f8ffacdbff0d7875698fbc51b1b40 100644 --- a/tests/slicing/oracle/select_return.14.res.oracle +++ b/tests/slicing/oracle/select_return.14.res.oracle @@ -1,6 +1,6 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/select_return.c (with preprocessing) -tests/slicing/select_return.c:45:[kernel] warning: Calling undeclared function f. Old style K&R code? +[kernel] Parsing tests/slicing/select_return.i (no preprocessing) +tests/slicing/select_return.i:45:[kernel] warning: Calling undeclared function f. Old style K&R code? [slicing] slicing requests in progress... [value] Analyzing an incomplete application starting at g [value] Computing initial state @@ -10,54 +10,54 @@ tests/slicing/select_return.c:45:[kernel] warning: Calling undeclared function f H ∈ [--..--] I ∈ [--..--] [value] computing for function k <- g. - Called from tests/slicing/select_return.c:44. + Called from tests/slicing/select_return.i:44. [value] computing for function get <- k <- g. - Called from tests/slicing/select_return.c:35. -tests/slicing/select_return.c:35:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype + Called from tests/slicing/select_return.i:35. +tests/slicing/select_return.i:35:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype [value] using specification for function get [value] Done for function get [value] computing for function send_bis <- k <- g. - Called from tests/slicing/select_return.c:39. -tests/slicing/select_return.c:39:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype + Called from tests/slicing/select_return.i:39. +tests/slicing/select_return.i:39:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype [value] using specification for function send_bis [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function f <- g. - Called from tests/slicing/select_return.c:45. + Called from tests/slicing/select_return.i:45. [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:49. + Called from tests/slicing/select_return.i:49. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:50. + Called from tests/slicing/select_return.i:50. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:51. + Called from tests/slicing/select_return.i:51. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function send <- f <- g. - Called from tests/slicing/select_return.c:53. -tests/slicing/select_return.c:53:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype + Called from tests/slicing/select_return.i:53. +tests/slicing/select_return.i:53:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype [value] using specification for function send [value] Done for function send [value] Recording results for f @@ -113,3 +113,5 @@ int f_slice_1(int y) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_14_select_return.i (no preprocessing) diff --git a/tests/slicing/oracle/select_return.15.res.oracle b/tests/slicing/oracle/select_return.15.res.oracle index a0ee4c3f33afb83d39fe0e3cb9e64035adb2c011..bda9f3194bcc7be2657dd5e85a3f3bbb9e7bfd57 100644 --- a/tests/slicing/oracle/select_return.15.res.oracle +++ b/tests/slicing/oracle/select_return.15.res.oracle @@ -1,6 +1,6 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/select_return.c (with preprocessing) -tests/slicing/select_return.c:45:[kernel] warning: Calling undeclared function f. Old style K&R code? +[kernel] Parsing tests/slicing/select_return.i (no preprocessing) +tests/slicing/select_return.i:45:[kernel] warning: Calling undeclared function f. Old style K&R code? [slicing] slicing requests in progress... [value] Analyzing an incomplete application starting at g [value] Computing initial state @@ -10,54 +10,54 @@ tests/slicing/select_return.c:45:[kernel] warning: Calling undeclared function f H ∈ [--..--] I ∈ [--..--] [value] computing for function k <- g. - Called from tests/slicing/select_return.c:44. + Called from tests/slicing/select_return.i:44. [value] computing for function get <- k <- g. - Called from tests/slicing/select_return.c:35. -tests/slicing/select_return.c:35:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype + Called from tests/slicing/select_return.i:35. +tests/slicing/select_return.i:35:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype [value] using specification for function get [value] Done for function get [value] computing for function send_bis <- k <- g. - Called from tests/slicing/select_return.c:39. -tests/slicing/select_return.c:39:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype + Called from tests/slicing/select_return.i:39. +tests/slicing/select_return.i:39:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype [value] using specification for function send_bis [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function f <- g. - Called from tests/slicing/select_return.c:45. + Called from tests/slicing/select_return.i:45. [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:49. + Called from tests/slicing/select_return.i:49. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:50. + Called from tests/slicing/select_return.i:50. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:51. + Called from tests/slicing/select_return.i:51. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function send <- f <- g. - Called from tests/slicing/select_return.c:53. -tests/slicing/select_return.c:53:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype + Called from tests/slicing/select_return.i:53. +tests/slicing/select_return.i:53:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype [value] using specification for function send [value] Done for function send [value] Recording results for f @@ -117,3 +117,5 @@ void f_slice_1(int y) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_15_select_return.i (no preprocessing) diff --git a/tests/slicing/oracle/select_return.16.res.oracle b/tests/slicing/oracle/select_return.16.res.oracle index 1efdbcbe1d2cce83010efdc020429942d1af0c52..d7a19336d1290e8331abf3ef046e9c938af27a9b 100644 --- a/tests/slicing/oracle/select_return.16.res.oracle +++ b/tests/slicing/oracle/select_return.16.res.oracle @@ -1,6 +1,6 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/select_return.c (with preprocessing) -tests/slicing/select_return.c:45:[kernel] warning: Calling undeclared function f. Old style K&R code? +[kernel] Parsing tests/slicing/select_return.i (no preprocessing) +tests/slicing/select_return.i:45:[kernel] warning: Calling undeclared function f. Old style K&R code? [slicing] slicing requests in progress... [value] Analyzing an incomplete application starting at g [value] Computing initial state @@ -10,54 +10,54 @@ tests/slicing/select_return.c:45:[kernel] warning: Calling undeclared function f H ∈ [--..--] I ∈ [--..--] [value] computing for function k <- g. - Called from tests/slicing/select_return.c:44. + Called from tests/slicing/select_return.i:44. [value] computing for function get <- k <- g. - Called from tests/slicing/select_return.c:35. -tests/slicing/select_return.c:35:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype + Called from tests/slicing/select_return.i:35. +tests/slicing/select_return.i:35:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype [value] using specification for function get [value] Done for function get [value] computing for function send_bis <- k <- g. - Called from tests/slicing/select_return.c:39. -tests/slicing/select_return.c:39:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype + Called from tests/slicing/select_return.i:39. +tests/slicing/select_return.i:39:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype [value] using specification for function send_bis [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function f <- g. - Called from tests/slicing/select_return.c:45. + Called from tests/slicing/select_return.i:45. [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:49. + Called from tests/slicing/select_return.i:49. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:50. + Called from tests/slicing/select_return.i:50. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:51. + Called from tests/slicing/select_return.i:51. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function send <- f <- g. - Called from tests/slicing/select_return.c:53. -tests/slicing/select_return.c:53:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype + Called from tests/slicing/select_return.i:53. +tests/slicing/select_return.i:53:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype [value] using specification for function send [value] Done for function send [value] Recording results for f @@ -110,3 +110,5 @@ void f_slice_1(int y) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_16_select_return.i (no preprocessing) diff --git a/tests/slicing/oracle/select_return.17.res.oracle b/tests/slicing/oracle/select_return.17.res.oracle index 768f76741f19b25334c2d7aad8d46c12d16775a6..0f270bcd4b49f22307ff1d2607702756efd687f0 100644 --- a/tests/slicing/oracle/select_return.17.res.oracle +++ b/tests/slicing/oracle/select_return.17.res.oracle @@ -1,6 +1,6 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/select_return.c (with preprocessing) -tests/slicing/select_return.c:45:[kernel] warning: Calling undeclared function f. Old style K&R code? +[kernel] Parsing tests/slicing/select_return.i (no preprocessing) +tests/slicing/select_return.i:45:[kernel] warning: Calling undeclared function f. Old style K&R code? [slicing] slicing requests in progress... [value] Analyzing an incomplete application starting at g [value] Computing initial state @@ -10,54 +10,54 @@ tests/slicing/select_return.c:45:[kernel] warning: Calling undeclared function f H ∈ [--..--] I ∈ [--..--] [value] computing for function k <- g. - Called from tests/slicing/select_return.c:44. + Called from tests/slicing/select_return.i:44. [value] computing for function get <- k <- g. - Called from tests/slicing/select_return.c:35. -tests/slicing/select_return.c:35:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype + Called from tests/slicing/select_return.i:35. +tests/slicing/select_return.i:35:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype [value] using specification for function get [value] Done for function get [value] computing for function send_bis <- k <- g. - Called from tests/slicing/select_return.c:39. -tests/slicing/select_return.c:39:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype + Called from tests/slicing/select_return.i:39. +tests/slicing/select_return.i:39:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype [value] using specification for function send_bis [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function f <- g. - Called from tests/slicing/select_return.c:45. + Called from tests/slicing/select_return.i:45. [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:49. + Called from tests/slicing/select_return.i:49. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:50. + Called from tests/slicing/select_return.i:50. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:51. + Called from tests/slicing/select_return.i:51. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function send <- f <- g. - Called from tests/slicing/select_return.c:53. -tests/slicing/select_return.c:53:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype + Called from tests/slicing/select_return.i:53. +tests/slicing/select_return.i:53:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype [value] using specification for function send [value] Done for function send [value] Recording results for f @@ -108,3 +108,5 @@ void f_slice_1(int y) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_17_select_return.i (no preprocessing) diff --git a/tests/slicing/oracle/select_return.18.res.oracle b/tests/slicing/oracle/select_return.18.res.oracle index 638711d82d640a00a526f4ce6372f920fd26e3f1..1a9d49bde8e14c1f4a458f317197f054145fbbbf 100644 --- a/tests/slicing/oracle/select_return.18.res.oracle +++ b/tests/slicing/oracle/select_return.18.res.oracle @@ -1,6 +1,6 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/select_return.c (with preprocessing) -tests/slicing/select_return.c:45:[kernel] warning: Calling undeclared function f. Old style K&R code? +[kernel] Parsing tests/slicing/select_return.i (no preprocessing) +tests/slicing/select_return.i:45:[kernel] warning: Calling undeclared function f. Old style K&R code? [slicing] slicing requests in progress... [value] Analyzing an incomplete application starting at g [value] Computing initial state @@ -10,54 +10,54 @@ tests/slicing/select_return.c:45:[kernel] warning: Calling undeclared function f H ∈ [--..--] I ∈ [--..--] [value] computing for function k <- g. - Called from tests/slicing/select_return.c:44. + Called from tests/slicing/select_return.i:44. [value] computing for function get <- k <- g. - Called from tests/slicing/select_return.c:35. -tests/slicing/select_return.c:35:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype + Called from tests/slicing/select_return.i:35. +tests/slicing/select_return.i:35:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype [value] using specification for function get [value] Done for function get [value] computing for function send_bis <- k <- g. - Called from tests/slicing/select_return.c:39. -tests/slicing/select_return.c:39:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype + Called from tests/slicing/select_return.i:39. +tests/slicing/select_return.i:39:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype [value] using specification for function send_bis [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function f <- g. - Called from tests/slicing/select_return.c:45. + Called from tests/slicing/select_return.i:45. [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:49. + Called from tests/slicing/select_return.i:49. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:50. + Called from tests/slicing/select_return.i:50. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:51. + Called from tests/slicing/select_return.i:51. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function send <- f <- g. - Called from tests/slicing/select_return.c:53. -tests/slicing/select_return.c:53:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype + Called from tests/slicing/select_return.i:53. +tests/slicing/select_return.i:53:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype [value] using specification for function send [value] Done for function send [value] Recording results for f @@ -113,3 +113,5 @@ void f_slice_1(int y) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_18_select_return.i (no preprocessing) diff --git a/tests/slicing/oracle/select_return.19.res.oracle b/tests/slicing/oracle/select_return.19.res.oracle index c0ba76c00177cca632d5a35e10e82b56b6a91d87..baa67c1849743de47cdf5fd9130d991f0ed93aa1 100644 --- a/tests/slicing/oracle/select_return.19.res.oracle +++ b/tests/slicing/oracle/select_return.19.res.oracle @@ -1,6 +1,6 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/select_return.c (with preprocessing) -tests/slicing/select_return.c:45:[kernel] warning: Calling undeclared function f. Old style K&R code? +[kernel] Parsing tests/slicing/select_return.i (no preprocessing) +tests/slicing/select_return.i:45:[kernel] warning: Calling undeclared function f. Old style K&R code? [slicing] slicing requests in progress... [value] Analyzing an incomplete application starting at g [value] Computing initial state @@ -10,54 +10,54 @@ tests/slicing/select_return.c:45:[kernel] warning: Calling undeclared function f H ∈ [--..--] I ∈ [--..--] [value] computing for function k <- g. - Called from tests/slicing/select_return.c:44. + Called from tests/slicing/select_return.i:44. [value] computing for function get <- k <- g. - Called from tests/slicing/select_return.c:35. -tests/slicing/select_return.c:35:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype + Called from tests/slicing/select_return.i:35. +tests/slicing/select_return.i:35:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype [value] using specification for function get [value] Done for function get [value] computing for function send_bis <- k <- g. - Called from tests/slicing/select_return.c:39. -tests/slicing/select_return.c:39:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype + Called from tests/slicing/select_return.i:39. +tests/slicing/select_return.i:39:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype [value] using specification for function send_bis [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function f <- g. - Called from tests/slicing/select_return.c:45. + Called from tests/slicing/select_return.i:45. [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:49. + Called from tests/slicing/select_return.i:49. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:50. + Called from tests/slicing/select_return.i:50. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:51. + Called from tests/slicing/select_return.i:51. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function send <- f <- g. - Called from tests/slicing/select_return.c:53. -tests/slicing/select_return.c:53:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype + Called from tests/slicing/select_return.i:53. +tests/slicing/select_return.i:53:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype [value] using specification for function send [value] Done for function send [value] Recording results for f @@ -118,3 +118,5 @@ void f_slice_1(int y) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_19_select_return.i (no preprocessing) diff --git a/tests/slicing/oracle/select_return.2.res.oracle b/tests/slicing/oracle/select_return.2.res.oracle index d4b6f5df2ce4341d572efa27b61eed71a77a4f2a..ae8b467966c8bbd636ed181be0241e69e3d8008d 100644 --- a/tests/slicing/oracle/select_return.2.res.oracle +++ b/tests/slicing/oracle/select_return.2.res.oracle @@ -1,6 +1,6 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/select_return.c (with preprocessing) -tests/slicing/select_return.c:45:[kernel] warning: Calling undeclared function f. Old style K&R code? +[kernel] Parsing tests/slicing/select_return.i (no preprocessing) +tests/slicing/select_return.i:45:[kernel] warning: Calling undeclared function f. Old style K&R code? [slicing] slicing requests in progress... [value] Analyzing an incomplete application starting at g [value] Computing initial state @@ -10,54 +10,54 @@ tests/slicing/select_return.c:45:[kernel] warning: Calling undeclared function f H ∈ [--..--] I ∈ [--..--] [value] computing for function k <- g. - Called from tests/slicing/select_return.c:44. + Called from tests/slicing/select_return.i:44. [value] computing for function get <- k <- g. - Called from tests/slicing/select_return.c:35. -tests/slicing/select_return.c:35:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype + Called from tests/slicing/select_return.i:35. +tests/slicing/select_return.i:35:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype [value] using specification for function get [value] Done for function get [value] computing for function send_bis <- k <- g. - Called from tests/slicing/select_return.c:39. -tests/slicing/select_return.c:39:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype + Called from tests/slicing/select_return.i:39. +tests/slicing/select_return.i:39:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype [value] using specification for function send_bis [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function f <- g. - Called from tests/slicing/select_return.c:45. + Called from tests/slicing/select_return.i:45. [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:49. + Called from tests/slicing/select_return.i:49. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:50. + Called from tests/slicing/select_return.i:50. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:51. + Called from tests/slicing/select_return.i:51. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function send <- f <- g. - Called from tests/slicing/select_return.c:53. -tests/slicing/select_return.c:53:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype + Called from tests/slicing/select_return.i:53. +tests/slicing/select_return.i:53:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype [value] using specification for function send [value] Done for function send [value] Recording results for f @@ -112,3 +112,5 @@ void f_slice_1(int y) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_2_select_return.i (no preprocessing) diff --git a/tests/slicing/oracle/select_return.20.res.oracle b/tests/slicing/oracle/select_return.20.res.oracle index 2bd63bc42315058e01632853b4d294fd0d9dc537..aa81bcd1c33cc90e1444400cd5b2fc3866f6bbc3 100644 --- a/tests/slicing/oracle/select_return.20.res.oracle +++ b/tests/slicing/oracle/select_return.20.res.oracle @@ -1,6 +1,6 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/select_return.c (with preprocessing) -tests/slicing/select_return.c:45:[kernel] warning: Calling undeclared function f. Old style K&R code? +[kernel] Parsing tests/slicing/select_return.i (no preprocessing) +tests/slicing/select_return.i:45:[kernel] warning: Calling undeclared function f. Old style K&R code? [slicing] slicing requests in progress... [value] Analyzing an incomplete application starting at g [value] Computing initial state @@ -10,54 +10,54 @@ tests/slicing/select_return.c:45:[kernel] warning: Calling undeclared function f H ∈ [--..--] I ∈ [--..--] [value] computing for function k <- g. - Called from tests/slicing/select_return.c:44. + Called from tests/slicing/select_return.i:44. [value] computing for function get <- k <- g. - Called from tests/slicing/select_return.c:35. -tests/slicing/select_return.c:35:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype + Called from tests/slicing/select_return.i:35. +tests/slicing/select_return.i:35:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype [value] using specification for function get [value] Done for function get [value] computing for function send_bis <- k <- g. - Called from tests/slicing/select_return.c:39. -tests/slicing/select_return.c:39:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype + Called from tests/slicing/select_return.i:39. +tests/slicing/select_return.i:39:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype [value] using specification for function send_bis [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function f <- g. - Called from tests/slicing/select_return.c:45. + Called from tests/slicing/select_return.i:45. [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:49. + Called from tests/slicing/select_return.i:49. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:50. + Called from tests/slicing/select_return.i:50. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:51. + Called from tests/slicing/select_return.i:51. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function send <- f <- g. - Called from tests/slicing/select_return.c:53. -tests/slicing/select_return.c:53:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype + Called from tests/slicing/select_return.i:53. +tests/slicing/select_return.i:53:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype [value] using specification for function send [value] Done for function send [value] Recording results for f @@ -115,3 +115,5 @@ void f_slice_1(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_20_select_return.i (no preprocessing) diff --git a/tests/slicing/oracle/select_return.21.res.oracle b/tests/slicing/oracle/select_return.21.res.oracle index 2bd63bc42315058e01632853b4d294fd0d9dc537..2829d8768276e7a50a798204fdc9a8cd1532fc93 100644 --- a/tests/slicing/oracle/select_return.21.res.oracle +++ b/tests/slicing/oracle/select_return.21.res.oracle @@ -1,6 +1,6 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/select_return.c (with preprocessing) -tests/slicing/select_return.c:45:[kernel] warning: Calling undeclared function f. Old style K&R code? +[kernel] Parsing tests/slicing/select_return.i (no preprocessing) +tests/slicing/select_return.i:45:[kernel] warning: Calling undeclared function f. Old style K&R code? [slicing] slicing requests in progress... [value] Analyzing an incomplete application starting at g [value] Computing initial state @@ -10,54 +10,54 @@ tests/slicing/select_return.c:45:[kernel] warning: Calling undeclared function f H ∈ [--..--] I ∈ [--..--] [value] computing for function k <- g. - Called from tests/slicing/select_return.c:44. + Called from tests/slicing/select_return.i:44. [value] computing for function get <- k <- g. - Called from tests/slicing/select_return.c:35. -tests/slicing/select_return.c:35:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype + Called from tests/slicing/select_return.i:35. +tests/slicing/select_return.i:35:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype [value] using specification for function get [value] Done for function get [value] computing for function send_bis <- k <- g. - Called from tests/slicing/select_return.c:39. -tests/slicing/select_return.c:39:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype + Called from tests/slicing/select_return.i:39. +tests/slicing/select_return.i:39:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype [value] using specification for function send_bis [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function f <- g. - Called from tests/slicing/select_return.c:45. + Called from tests/slicing/select_return.i:45. [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:49. + Called from tests/slicing/select_return.i:49. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:50. + Called from tests/slicing/select_return.i:50. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:51. + Called from tests/slicing/select_return.i:51. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function send <- f <- g. - Called from tests/slicing/select_return.c:53. -tests/slicing/select_return.c:53:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype + Called from tests/slicing/select_return.i:53. +tests/slicing/select_return.i:53:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype [value] using specification for function send [value] Done for function send [value] Recording results for f @@ -115,3 +115,5 @@ void f_slice_1(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_21_select_return.i (no preprocessing) diff --git a/tests/slicing/oracle/select_return.3.res.oracle b/tests/slicing/oracle/select_return.3.res.oracle index 87a5610990a3ef6aa652363698c20c29d8e30757..d8beae5d26056eeaa5ca6024834778eb85a7a6c7 100644 --- a/tests/slicing/oracle/select_return.3.res.oracle +++ b/tests/slicing/oracle/select_return.3.res.oracle @@ -1,6 +1,6 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/select_return.c (with preprocessing) -tests/slicing/select_return.c:45:[kernel] warning: Calling undeclared function f. Old style K&R code? +[kernel] Parsing tests/slicing/select_return.i (no preprocessing) +tests/slicing/select_return.i:45:[kernel] warning: Calling undeclared function f. Old style K&R code? [slicing] slicing requests in progress... [value] Analyzing an incomplete application starting at g [value] Computing initial state @@ -10,54 +10,54 @@ tests/slicing/select_return.c:45:[kernel] warning: Calling undeclared function f H ∈ [--..--] I ∈ [--..--] [value] computing for function k <- g. - Called from tests/slicing/select_return.c:44. + Called from tests/slicing/select_return.i:44. [value] computing for function get <- k <- g. - Called from tests/slicing/select_return.c:35. -tests/slicing/select_return.c:35:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype + Called from tests/slicing/select_return.i:35. +tests/slicing/select_return.i:35:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype [value] using specification for function get [value] Done for function get [value] computing for function send_bis <- k <- g. - Called from tests/slicing/select_return.c:39. -tests/slicing/select_return.c:39:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype + Called from tests/slicing/select_return.i:39. +tests/slicing/select_return.i:39:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype [value] using specification for function send_bis [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function f <- g. - Called from tests/slicing/select_return.c:45. + Called from tests/slicing/select_return.i:45. [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:49. + Called from tests/slicing/select_return.i:49. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:50. + Called from tests/slicing/select_return.i:50. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:51. + Called from tests/slicing/select_return.i:51. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function send <- f <- g. - Called from tests/slicing/select_return.c:53. -tests/slicing/select_return.c:53:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype + Called from tests/slicing/select_return.i:53. +tests/slicing/select_return.i:53:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype [value] using specification for function send [value] Done for function send [value] Recording results for f @@ -117,3 +117,5 @@ void f_slice_1(int y) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_3_select_return.i (no preprocessing) diff --git a/tests/slicing/oracle/select_return.4.res.oracle b/tests/slicing/oracle/select_return.4.res.oracle index c5a62df5e3be3814f77ca71f39bc43b964c736a4..f074df8e3fea290cbe23e77e9727ec219253306f 100644 --- a/tests/slicing/oracle/select_return.4.res.oracle +++ b/tests/slicing/oracle/select_return.4.res.oracle @@ -1,6 +1,6 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/select_return.c (with preprocessing) -tests/slicing/select_return.c:45:[kernel] warning: Calling undeclared function f. Old style K&R code? +[kernel] Parsing tests/slicing/select_return.i (no preprocessing) +tests/slicing/select_return.i:45:[kernel] warning: Calling undeclared function f. Old style K&R code? [slicing] slicing requests in progress... [value] Analyzing an incomplete application starting at g [value] Computing initial state @@ -10,54 +10,54 @@ tests/slicing/select_return.c:45:[kernel] warning: Calling undeclared function f H ∈ [--..--] I ∈ [--..--] [value] computing for function k <- g. - Called from tests/slicing/select_return.c:44. + Called from tests/slicing/select_return.i:44. [value] computing for function get <- k <- g. - Called from tests/slicing/select_return.c:35. -tests/slicing/select_return.c:35:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype + Called from tests/slicing/select_return.i:35. +tests/slicing/select_return.i:35:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype [value] using specification for function get [value] Done for function get [value] computing for function send_bis <- k <- g. - Called from tests/slicing/select_return.c:39. -tests/slicing/select_return.c:39:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype + Called from tests/slicing/select_return.i:39. +tests/slicing/select_return.i:39:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype [value] using specification for function send_bis [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function f <- g. - Called from tests/slicing/select_return.c:45. + Called from tests/slicing/select_return.i:45. [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:49. + Called from tests/slicing/select_return.i:49. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:50. + Called from tests/slicing/select_return.i:50. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:51. + Called from tests/slicing/select_return.i:51. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function send <- f <- g. - Called from tests/slicing/select_return.c:53. -tests/slicing/select_return.c:53:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype + Called from tests/slicing/select_return.i:53. +tests/slicing/select_return.i:53:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype [value] using specification for function send [value] Done for function send [value] Recording results for f @@ -121,3 +121,5 @@ void f_slice_1(int y) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_4_select_return.i (no preprocessing) diff --git a/tests/slicing/oracle/select_return.5.res.oracle b/tests/slicing/oracle/select_return.5.res.oracle index c5a62df5e3be3814f77ca71f39bc43b964c736a4..efd51e9bd72b79adc8d0dd5c3fc41cef01e6864a 100644 --- a/tests/slicing/oracle/select_return.5.res.oracle +++ b/tests/slicing/oracle/select_return.5.res.oracle @@ -1,6 +1,6 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/select_return.c (with preprocessing) -tests/slicing/select_return.c:45:[kernel] warning: Calling undeclared function f. Old style K&R code? +[kernel] Parsing tests/slicing/select_return.i (no preprocessing) +tests/slicing/select_return.i:45:[kernel] warning: Calling undeclared function f. Old style K&R code? [slicing] slicing requests in progress... [value] Analyzing an incomplete application starting at g [value] Computing initial state @@ -10,54 +10,54 @@ tests/slicing/select_return.c:45:[kernel] warning: Calling undeclared function f H ∈ [--..--] I ∈ [--..--] [value] computing for function k <- g. - Called from tests/slicing/select_return.c:44. + Called from tests/slicing/select_return.i:44. [value] computing for function get <- k <- g. - Called from tests/slicing/select_return.c:35. -tests/slicing/select_return.c:35:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype + Called from tests/slicing/select_return.i:35. +tests/slicing/select_return.i:35:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype [value] using specification for function get [value] Done for function get [value] computing for function send_bis <- k <- g. - Called from tests/slicing/select_return.c:39. -tests/slicing/select_return.c:39:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype + Called from tests/slicing/select_return.i:39. +tests/slicing/select_return.i:39:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype [value] using specification for function send_bis [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function f <- g. - Called from tests/slicing/select_return.c:45. + Called from tests/slicing/select_return.i:45. [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:49. + Called from tests/slicing/select_return.i:49. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:50. + Called from tests/slicing/select_return.i:50. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:51. + Called from tests/slicing/select_return.i:51. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function send <- f <- g. - Called from tests/slicing/select_return.c:53. -tests/slicing/select_return.c:53:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype + Called from tests/slicing/select_return.i:53. +tests/slicing/select_return.i:53:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype [value] using specification for function send [value] Done for function send [value] Recording results for f @@ -121,3 +121,5 @@ void f_slice_1(int y) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_5_select_return.i (no preprocessing) diff --git a/tests/slicing/oracle/select_return.6.res.oracle b/tests/slicing/oracle/select_return.6.res.oracle index c5a62df5e3be3814f77ca71f39bc43b964c736a4..b2c62d212ebec984e22111d20038944e59d84ded 100644 --- a/tests/slicing/oracle/select_return.6.res.oracle +++ b/tests/slicing/oracle/select_return.6.res.oracle @@ -1,6 +1,6 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/select_return.c (with preprocessing) -tests/slicing/select_return.c:45:[kernel] warning: Calling undeclared function f. Old style K&R code? +[kernel] Parsing tests/slicing/select_return.i (no preprocessing) +tests/slicing/select_return.i:45:[kernel] warning: Calling undeclared function f. Old style K&R code? [slicing] slicing requests in progress... [value] Analyzing an incomplete application starting at g [value] Computing initial state @@ -10,54 +10,54 @@ tests/slicing/select_return.c:45:[kernel] warning: Calling undeclared function f H ∈ [--..--] I ∈ [--..--] [value] computing for function k <- g. - Called from tests/slicing/select_return.c:44. + Called from tests/slicing/select_return.i:44. [value] computing for function get <- k <- g. - Called from tests/slicing/select_return.c:35. -tests/slicing/select_return.c:35:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype + Called from tests/slicing/select_return.i:35. +tests/slicing/select_return.i:35:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype [value] using specification for function get [value] Done for function get [value] computing for function send_bis <- k <- g. - Called from tests/slicing/select_return.c:39. -tests/slicing/select_return.c:39:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype + Called from tests/slicing/select_return.i:39. +tests/slicing/select_return.i:39:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype [value] using specification for function send_bis [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function f <- g. - Called from tests/slicing/select_return.c:45. + Called from tests/slicing/select_return.i:45. [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:49. + Called from tests/slicing/select_return.i:49. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:50. + Called from tests/slicing/select_return.i:50. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:51. + Called from tests/slicing/select_return.i:51. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function send <- f <- g. - Called from tests/slicing/select_return.c:53. -tests/slicing/select_return.c:53:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype + Called from tests/slicing/select_return.i:53. +tests/slicing/select_return.i:53:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype [value] using specification for function send [value] Done for function send [value] Recording results for f @@ -121,3 +121,5 @@ void f_slice_1(int y) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_6_select_return.i (no preprocessing) diff --git a/tests/slicing/oracle/select_return.7.res.oracle b/tests/slicing/oracle/select_return.7.res.oracle index d1eebb235d083abaf1cfc6a0869a3d9a8530c08b..62bed94b8b898df37e76a12ff64a17821ac2517f 100644 --- a/tests/slicing/oracle/select_return.7.res.oracle +++ b/tests/slicing/oracle/select_return.7.res.oracle @@ -1,6 +1,6 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/select_return.c (with preprocessing) -tests/slicing/select_return.c:45:[kernel] warning: Calling undeclared function f. Old style K&R code? +[kernel] Parsing tests/slicing/select_return.i (no preprocessing) +tests/slicing/select_return.i:45:[kernel] warning: Calling undeclared function f. Old style K&R code? [slicing] slicing requests in progress... [value] Analyzing an incomplete application starting at g [value] Computing initial state @@ -10,54 +10,54 @@ tests/slicing/select_return.c:45:[kernel] warning: Calling undeclared function f H ∈ [--..--] I ∈ [--..--] [value] computing for function k <- g. - Called from tests/slicing/select_return.c:44. + Called from tests/slicing/select_return.i:44. [value] computing for function get <- k <- g. - Called from tests/slicing/select_return.c:35. -tests/slicing/select_return.c:35:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype + Called from tests/slicing/select_return.i:35. +tests/slicing/select_return.i:35:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype [value] using specification for function get [value] Done for function get [value] computing for function send_bis <- k <- g. - Called from tests/slicing/select_return.c:39. -tests/slicing/select_return.c:39:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype + Called from tests/slicing/select_return.i:39. +tests/slicing/select_return.i:39:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype [value] using specification for function send_bis [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function f <- g. - Called from tests/slicing/select_return.c:45. + Called from tests/slicing/select_return.i:45. [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:49. + Called from tests/slicing/select_return.i:49. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:50. + Called from tests/slicing/select_return.i:50. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:51. + Called from tests/slicing/select_return.i:51. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function send <- f <- g. - Called from tests/slicing/select_return.c:53. -tests/slicing/select_return.c:53:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype + Called from tests/slicing/select_return.i:53. +tests/slicing/select_return.i:53:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype [value] using specification for function send [value] Done for function send [value] Recording results for f @@ -129,3 +129,5 @@ void f_slice_1(int y) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_7_select_return.i (no preprocessing) diff --git a/tests/slicing/oracle/select_return.8.res.oracle b/tests/slicing/oracle/select_return.8.res.oracle index ec8952c80e44d49acabb881e48c931530bca7479..dce3fedcdaa266198ee847eb4480efd46082d940 100644 --- a/tests/slicing/oracle/select_return.8.res.oracle +++ b/tests/slicing/oracle/select_return.8.res.oracle @@ -1,6 +1,6 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/select_return.c (with preprocessing) -tests/slicing/select_return.c:45:[kernel] warning: Calling undeclared function f. Old style K&R code? +[kernel] Parsing tests/slicing/select_return.i (no preprocessing) +tests/slicing/select_return.i:45:[kernel] warning: Calling undeclared function f. Old style K&R code? [slicing] slicing requests in progress... [value] Analyzing an incomplete application starting at g [value] Computing initial state @@ -10,54 +10,54 @@ tests/slicing/select_return.c:45:[kernel] warning: Calling undeclared function f H ∈ [--..--] I ∈ [--..--] [value] computing for function k <- g. - Called from tests/slicing/select_return.c:44. + Called from tests/slicing/select_return.i:44. [value] computing for function get <- k <- g. - Called from tests/slicing/select_return.c:35. -tests/slicing/select_return.c:35:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype + Called from tests/slicing/select_return.i:35. +tests/slicing/select_return.i:35:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype [value] using specification for function get [value] Done for function get [value] computing for function send_bis <- k <- g. - Called from tests/slicing/select_return.c:39. -tests/slicing/select_return.c:39:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype + Called from tests/slicing/select_return.i:39. +tests/slicing/select_return.i:39:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype [value] using specification for function send_bis [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function f <- g. - Called from tests/slicing/select_return.c:45. + Called from tests/slicing/select_return.i:45. [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:49. + Called from tests/slicing/select_return.i:49. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:50. + Called from tests/slicing/select_return.i:50. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:51. + Called from tests/slicing/select_return.i:51. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function send <- f <- g. - Called from tests/slicing/select_return.c:53. -tests/slicing/select_return.c:53:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype + Called from tests/slicing/select_return.i:53. +tests/slicing/select_return.i:53:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype [value] using specification for function send [value] Done for function send [value] Recording results for f @@ -133,3 +133,5 @@ void f_slice_1(int y) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_8_select_return.i (no preprocessing) diff --git a/tests/slicing/oracle/select_return.9.res.oracle b/tests/slicing/oracle/select_return.9.res.oracle index ec8952c80e44d49acabb881e48c931530bca7479..0ac7c38acdf25945b2d3d382808f8469a859ad54 100644 --- a/tests/slicing/oracle/select_return.9.res.oracle +++ b/tests/slicing/oracle/select_return.9.res.oracle @@ -1,6 +1,6 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/select_return.c (with preprocessing) -tests/slicing/select_return.c:45:[kernel] warning: Calling undeclared function f. Old style K&R code? +[kernel] Parsing tests/slicing/select_return.i (no preprocessing) +tests/slicing/select_return.i:45:[kernel] warning: Calling undeclared function f. Old style K&R code? [slicing] slicing requests in progress... [value] Analyzing an incomplete application starting at g [value] Computing initial state @@ -10,54 +10,54 @@ tests/slicing/select_return.c:45:[kernel] warning: Calling undeclared function f H ∈ [--..--] I ∈ [--..--] [value] computing for function k <- g. - Called from tests/slicing/select_return.c:44. + Called from tests/slicing/select_return.i:44. [value] computing for function get <- k <- g. - Called from tests/slicing/select_return.c:35. -tests/slicing/select_return.c:35:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype + Called from tests/slicing/select_return.i:35. +tests/slicing/select_return.i:35:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype [value] using specification for function get [value] Done for function get [value] computing for function send_bis <- k <- g. - Called from tests/slicing/select_return.c:39. -tests/slicing/select_return.c:39:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype + Called from tests/slicing/select_return.i:39. +tests/slicing/select_return.i:39:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype [value] using specification for function send_bis [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function f <- g. - Called from tests/slicing/select_return.c:45. + Called from tests/slicing/select_return.i:45. [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:49. + Called from tests/slicing/select_return.i:49. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:50. + Called from tests/slicing/select_return.i:50. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return.c:51. + Called from tests/slicing/select_return.i:51. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return.c:35. + Called from tests/slicing/select_return.i:35. [value] Done for function get [value] computing for function send_bis <- k <- f <- g. - Called from tests/slicing/select_return.c:39. + Called from tests/slicing/select_return.i:39. [value] Done for function send_bis [value] Recording results for k [value] Done for function k [value] computing for function send <- f <- g. - Called from tests/slicing/select_return.c:53. -tests/slicing/select_return.c:53:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype + Called from tests/slicing/select_return.i:53. +tests/slicing/select_return.i:53:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype [value] using specification for function send [value] Done for function send [value] Recording results for f @@ -133,3 +133,5 @@ void f_slice_1(int y) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_9_select_return.i (no preprocessing) diff --git a/tests/slicing/oracle/select_return_bis.0.res.oracle b/tests/slicing/oracle/select_return_bis.0.res.oracle index 72b50274b6060a8161839712bb0219db516b6792..9fc8fda2e5e3c98a167d8da32d61ae9784e484dc 100644 --- a/tests/slicing/oracle/select_return_bis.0.res.oracle +++ b/tests/slicing/oracle/select_return_bis.0.res.oracle @@ -1,6 +1,6 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/select_return_bis.c (with preprocessing) -tests/slicing/select_return_bis.c:36:[kernel] warning: Calling undeclared function f. Old style K&R code? +[kernel] Parsing tests/slicing/select_return_bis.i (no preprocessing) +tests/slicing/select_return_bis.i:36:[kernel] warning: Calling undeclared function f. Old style K&R code? [slicing] slicing requests in progress... [value] Analyzing an incomplete application starting at g [value] Computing initial state @@ -10,17 +10,17 @@ tests/slicing/select_return_bis.c:36:[kernel] warning: Calling undeclared functi H ∈ [--..--] I ∈ [--..--] [value] computing for function k <- g. - Called from tests/slicing/select_return_bis.c:35. + Called from tests/slicing/select_return_bis.i:35. [value] computing for function get <- k <- g. - Called from tests/slicing/select_return_bis.c:28. -tests/slicing/select_return_bis.c:28:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype + Called from tests/slicing/select_return_bis.i:28. +tests/slicing/select_return_bis.i:28:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype [value] using specification for function get [value] Done for function get [value] computing for function k_bis <- k <- g. - Called from tests/slicing/select_return_bis.c:30. + Called from tests/slicing/select_return_bis.i:30. [value] computing for function send_bis <- k_bis <- k <- g. - Called from tests/slicing/select_return_bis.c:24. -tests/slicing/select_return_bis.c:24:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype + Called from tests/slicing/select_return_bis.i:24. +tests/slicing/select_return_bis.i:24:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype [value] using specification for function send_bis [value] Done for function send_bis [value] Recording results for k_bis @@ -28,52 +28,52 @@ tests/slicing/select_return_bis.c:24:[kernel] warning: Neither code nor specific [value] Recording results for k [value] Done for function k [value] computing for function f <- g. - Called from tests/slicing/select_return_bis.c:36. + Called from tests/slicing/select_return_bis.i:36. [value] computing for function k <- f <- g. - Called from tests/slicing/select_return_bis.c:40. + Called from tests/slicing/select_return_bis.i:40. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:28. + Called from tests/slicing/select_return_bis.i:28. [value] Done for function get [value] computing for function k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:30. + Called from tests/slicing/select_return_bis.i:30. [value] computing for function send_bis <- k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:24. + Called from tests/slicing/select_return_bis.i:24. [value] Done for function send_bis [value] Recording results for k_bis [value] Done for function k_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return_bis.c:41. + Called from tests/slicing/select_return_bis.i:41. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:28. + Called from tests/slicing/select_return_bis.i:28. [value] Done for function get [value] computing for function k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:30. + Called from tests/slicing/select_return_bis.i:30. [value] computing for function send_bis <- k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:24. + Called from tests/slicing/select_return_bis.i:24. [value] Done for function send_bis [value] Recording results for k_bis [value] Done for function k_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return_bis.c:42. + Called from tests/slicing/select_return_bis.i:42. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:28. + Called from tests/slicing/select_return_bis.i:28. [value] Done for function get [value] computing for function k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:30. + Called from tests/slicing/select_return_bis.i:30. [value] computing for function send_bis <- k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:24. + Called from tests/slicing/select_return_bis.i:24. [value] Done for function send_bis [value] Recording results for k_bis [value] Done for function k_bis [value] Recording results for k [value] Done for function k [value] computing for function send <- f <- g. - Called from tests/slicing/select_return_bis.c:44. -tests/slicing/select_return_bis.c:44:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype + Called from tests/slicing/select_return_bis.i:44. +tests/slicing/select_return_bis.i:44:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype [value] using specification for function send [value] Done for function send [value] Recording results for f @@ -145,3 +145,5 @@ void f_slice_1(int y) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_0_select_return_bis.i (no preprocessing) diff --git a/tests/slicing/oracle/select_return_bis.1.res.oracle b/tests/slicing/oracle/select_return_bis.1.res.oracle index dfb76ede113eee3ee88ffd39c1c863bd12bdf6fd..4478fcf8d1751509a5cb5e055ec558dc16fe6bc0 100644 --- a/tests/slicing/oracle/select_return_bis.1.res.oracle +++ b/tests/slicing/oracle/select_return_bis.1.res.oracle @@ -1,6 +1,6 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/select_return_bis.c (with preprocessing) -tests/slicing/select_return_bis.c:36:[kernel] warning: Calling undeclared function f. Old style K&R code? +[kernel] Parsing tests/slicing/select_return_bis.i (no preprocessing) +tests/slicing/select_return_bis.i:36:[kernel] warning: Calling undeclared function f. Old style K&R code? [slicing] slicing requests in progress... [value] Analyzing an incomplete application starting at g [value] Computing initial state @@ -10,17 +10,17 @@ tests/slicing/select_return_bis.c:36:[kernel] warning: Calling undeclared functi H ∈ [--..--] I ∈ [--..--] [value] computing for function k <- g. - Called from tests/slicing/select_return_bis.c:35. + Called from tests/slicing/select_return_bis.i:35. [value] computing for function get <- k <- g. - Called from tests/slicing/select_return_bis.c:28. -tests/slicing/select_return_bis.c:28:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype + Called from tests/slicing/select_return_bis.i:28. +tests/slicing/select_return_bis.i:28:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype [value] using specification for function get [value] Done for function get [value] computing for function k_bis <- k <- g. - Called from tests/slicing/select_return_bis.c:30. + Called from tests/slicing/select_return_bis.i:30. [value] computing for function send_bis <- k_bis <- k <- g. - Called from tests/slicing/select_return_bis.c:24. -tests/slicing/select_return_bis.c:24:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype + Called from tests/slicing/select_return_bis.i:24. +tests/slicing/select_return_bis.i:24:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype [value] using specification for function send_bis [value] Done for function send_bis [value] Recording results for k_bis @@ -28,52 +28,52 @@ tests/slicing/select_return_bis.c:24:[kernel] warning: Neither code nor specific [value] Recording results for k [value] Done for function k [value] computing for function f <- g. - Called from tests/slicing/select_return_bis.c:36. + Called from tests/slicing/select_return_bis.i:36. [value] computing for function k <- f <- g. - Called from tests/slicing/select_return_bis.c:40. + Called from tests/slicing/select_return_bis.i:40. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:28. + Called from tests/slicing/select_return_bis.i:28. [value] Done for function get [value] computing for function k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:30. + Called from tests/slicing/select_return_bis.i:30. [value] computing for function send_bis <- k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:24. + Called from tests/slicing/select_return_bis.i:24. [value] Done for function send_bis [value] Recording results for k_bis [value] Done for function k_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return_bis.c:41. + Called from tests/slicing/select_return_bis.i:41. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:28. + Called from tests/slicing/select_return_bis.i:28. [value] Done for function get [value] computing for function k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:30. + Called from tests/slicing/select_return_bis.i:30. [value] computing for function send_bis <- k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:24. + Called from tests/slicing/select_return_bis.i:24. [value] Done for function send_bis [value] Recording results for k_bis [value] Done for function k_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return_bis.c:42. + Called from tests/slicing/select_return_bis.i:42. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:28. + Called from tests/slicing/select_return_bis.i:28. [value] Done for function get [value] computing for function k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:30. + Called from tests/slicing/select_return_bis.i:30. [value] computing for function send_bis <- k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:24. + Called from tests/slicing/select_return_bis.i:24. [value] Done for function send_bis [value] Recording results for k_bis [value] Done for function k_bis [value] Recording results for k [value] Done for function k [value] computing for function send <- f <- g. - Called from tests/slicing/select_return_bis.c:44. -tests/slicing/select_return_bis.c:44:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype + Called from tests/slicing/select_return_bis.i:44. +tests/slicing/select_return_bis.i:44:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype [value] using specification for function send [value] Done for function send [value] Recording results for f @@ -140,3 +140,5 @@ void f_slice_1(int y) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_1_select_return_bis.i (no preprocessing) diff --git a/tests/slicing/oracle/select_return_bis.10.res.oracle b/tests/slicing/oracle/select_return_bis.10.res.oracle index 0c4f41de2d5930369495ebe6bedf105e36049642..d22d80043b18929793c782f99721dd5a4c6a77be 100644 --- a/tests/slicing/oracle/select_return_bis.10.res.oracle +++ b/tests/slicing/oracle/select_return_bis.10.res.oracle @@ -1,6 +1,6 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/select_return_bis.c (with preprocessing) -tests/slicing/select_return_bis.c:36:[kernel] warning: Calling undeclared function f. Old style K&R code? +[kernel] Parsing tests/slicing/select_return_bis.i (no preprocessing) +tests/slicing/select_return_bis.i:36:[kernel] warning: Calling undeclared function f. Old style K&R code? [slicing] slicing requests in progress... [value] Analyzing an incomplete application starting at g [value] Computing initial state @@ -10,17 +10,17 @@ tests/slicing/select_return_bis.c:36:[kernel] warning: Calling undeclared functi H ∈ [--..--] I ∈ [--..--] [value] computing for function k <- g. - Called from tests/slicing/select_return_bis.c:35. + Called from tests/slicing/select_return_bis.i:35. [value] computing for function get <- k <- g. - Called from tests/slicing/select_return_bis.c:28. -tests/slicing/select_return_bis.c:28:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype + Called from tests/slicing/select_return_bis.i:28. +tests/slicing/select_return_bis.i:28:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype [value] using specification for function get [value] Done for function get [value] computing for function k_bis <- k <- g. - Called from tests/slicing/select_return_bis.c:30. + Called from tests/slicing/select_return_bis.i:30. [value] computing for function send_bis <- k_bis <- k <- g. - Called from tests/slicing/select_return_bis.c:24. -tests/slicing/select_return_bis.c:24:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype + Called from tests/slicing/select_return_bis.i:24. +tests/slicing/select_return_bis.i:24:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype [value] using specification for function send_bis [value] Done for function send_bis [value] Recording results for k_bis @@ -28,52 +28,52 @@ tests/slicing/select_return_bis.c:24:[kernel] warning: Neither code nor specific [value] Recording results for k [value] Done for function k [value] computing for function f <- g. - Called from tests/slicing/select_return_bis.c:36. + Called from tests/slicing/select_return_bis.i:36. [value] computing for function k <- f <- g. - Called from tests/slicing/select_return_bis.c:40. + Called from tests/slicing/select_return_bis.i:40. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:28. + Called from tests/slicing/select_return_bis.i:28. [value] Done for function get [value] computing for function k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:30. + Called from tests/slicing/select_return_bis.i:30. [value] computing for function send_bis <- k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:24. + Called from tests/slicing/select_return_bis.i:24. [value] Done for function send_bis [value] Recording results for k_bis [value] Done for function k_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return_bis.c:41. + Called from tests/slicing/select_return_bis.i:41. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:28. + Called from tests/slicing/select_return_bis.i:28. [value] Done for function get [value] computing for function k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:30. + Called from tests/slicing/select_return_bis.i:30. [value] computing for function send_bis <- k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:24. + Called from tests/slicing/select_return_bis.i:24. [value] Done for function send_bis [value] Recording results for k_bis [value] Done for function k_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return_bis.c:42. + Called from tests/slicing/select_return_bis.i:42. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:28. + Called from tests/slicing/select_return_bis.i:28. [value] Done for function get [value] computing for function k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:30. + Called from tests/slicing/select_return_bis.i:30. [value] computing for function send_bis <- k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:24. + Called from tests/slicing/select_return_bis.i:24. [value] Done for function send_bis [value] Recording results for k_bis [value] Done for function k_bis [value] Recording results for k [value] Done for function k [value] computing for function send <- f <- g. - Called from tests/slicing/select_return_bis.c:44. -tests/slicing/select_return_bis.c:44:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype + Called from tests/slicing/select_return_bis.i:44. +tests/slicing/select_return_bis.i:44:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype [value] using specification for function send [value] Done for function send [value] Recording results for f @@ -167,3 +167,5 @@ void f_slice_1(int y) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_10_select_return_bis.i (no preprocessing) diff --git a/tests/slicing/oracle/select_return_bis.2.res.oracle b/tests/slicing/oracle/select_return_bis.2.res.oracle index ee12875d5b3568aa9642d5fb59a54acecd659fb7..17a8931a4db6c08c3482a9b5007940dc350c0ca1 100644 --- a/tests/slicing/oracle/select_return_bis.2.res.oracle +++ b/tests/slicing/oracle/select_return_bis.2.res.oracle @@ -1,6 +1,6 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/select_return_bis.c (with preprocessing) -tests/slicing/select_return_bis.c:36:[kernel] warning: Calling undeclared function f. Old style K&R code? +[kernel] Parsing tests/slicing/select_return_bis.i (no preprocessing) +tests/slicing/select_return_bis.i:36:[kernel] warning: Calling undeclared function f. Old style K&R code? [slicing] slicing requests in progress... [value] Analyzing an incomplete application starting at g [value] Computing initial state @@ -10,17 +10,17 @@ tests/slicing/select_return_bis.c:36:[kernel] warning: Calling undeclared functi H ∈ [--..--] I ∈ [--..--] [value] computing for function k <- g. - Called from tests/slicing/select_return_bis.c:35. + Called from tests/slicing/select_return_bis.i:35. [value] computing for function get <- k <- g. - Called from tests/slicing/select_return_bis.c:28. -tests/slicing/select_return_bis.c:28:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype + Called from tests/slicing/select_return_bis.i:28. +tests/slicing/select_return_bis.i:28:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype [value] using specification for function get [value] Done for function get [value] computing for function k_bis <- k <- g. - Called from tests/slicing/select_return_bis.c:30. + Called from tests/slicing/select_return_bis.i:30. [value] computing for function send_bis <- k_bis <- k <- g. - Called from tests/slicing/select_return_bis.c:24. -tests/slicing/select_return_bis.c:24:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype + Called from tests/slicing/select_return_bis.i:24. +tests/slicing/select_return_bis.i:24:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype [value] using specification for function send_bis [value] Done for function send_bis [value] Recording results for k_bis @@ -28,52 +28,52 @@ tests/slicing/select_return_bis.c:24:[kernel] warning: Neither code nor specific [value] Recording results for k [value] Done for function k [value] computing for function f <- g. - Called from tests/slicing/select_return_bis.c:36. + Called from tests/slicing/select_return_bis.i:36. [value] computing for function k <- f <- g. - Called from tests/slicing/select_return_bis.c:40. + Called from tests/slicing/select_return_bis.i:40. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:28. + Called from tests/slicing/select_return_bis.i:28. [value] Done for function get [value] computing for function k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:30. + Called from tests/slicing/select_return_bis.i:30. [value] computing for function send_bis <- k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:24. + Called from tests/slicing/select_return_bis.i:24. [value] Done for function send_bis [value] Recording results for k_bis [value] Done for function k_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return_bis.c:41. + Called from tests/slicing/select_return_bis.i:41. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:28. + Called from tests/slicing/select_return_bis.i:28. [value] Done for function get [value] computing for function k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:30. + Called from tests/slicing/select_return_bis.i:30. [value] computing for function send_bis <- k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:24. + Called from tests/slicing/select_return_bis.i:24. [value] Done for function send_bis [value] Recording results for k_bis [value] Done for function k_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return_bis.c:42. + Called from tests/slicing/select_return_bis.i:42. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:28. + Called from tests/slicing/select_return_bis.i:28. [value] Done for function get [value] computing for function k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:30. + Called from tests/slicing/select_return_bis.i:30. [value] computing for function send_bis <- k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:24. + Called from tests/slicing/select_return_bis.i:24. [value] Done for function send_bis [value] Recording results for k_bis [value] Done for function k_bis [value] Recording results for k [value] Done for function k [value] computing for function send <- f <- g. - Called from tests/slicing/select_return_bis.c:44. -tests/slicing/select_return_bis.c:44:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype + Called from tests/slicing/select_return_bis.i:44. +tests/slicing/select_return_bis.i:44:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype [value] using specification for function send [value] Done for function send [value] Recording results for f @@ -130,3 +130,5 @@ void f_slice_1(int y) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_2_select_return_bis.i (no preprocessing) diff --git a/tests/slicing/oracle/select_return_bis.3.res.oracle b/tests/slicing/oracle/select_return_bis.3.res.oracle index 919831cdc9749f33b675bc1196edcbc3f314cd59..e864951a8fc890b781f4b5229f4d808c492ab8ba 100644 --- a/tests/slicing/oracle/select_return_bis.3.res.oracle +++ b/tests/slicing/oracle/select_return_bis.3.res.oracle @@ -1,6 +1,6 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/select_return_bis.c (with preprocessing) -tests/slicing/select_return_bis.c:36:[kernel] warning: Calling undeclared function f. Old style K&R code? +[kernel] Parsing tests/slicing/select_return_bis.i (no preprocessing) +tests/slicing/select_return_bis.i:36:[kernel] warning: Calling undeclared function f. Old style K&R code? [slicing] slicing requests in progress... [value] Analyzing an incomplete application starting at g [value] Computing initial state @@ -10,17 +10,17 @@ tests/slicing/select_return_bis.c:36:[kernel] warning: Calling undeclared functi H ∈ [--..--] I ∈ [--..--] [value] computing for function k <- g. - Called from tests/slicing/select_return_bis.c:35. + Called from tests/slicing/select_return_bis.i:35. [value] computing for function get <- k <- g. - Called from tests/slicing/select_return_bis.c:28. -tests/slicing/select_return_bis.c:28:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype + Called from tests/slicing/select_return_bis.i:28. +tests/slicing/select_return_bis.i:28:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype [value] using specification for function get [value] Done for function get [value] computing for function k_bis <- k <- g. - Called from tests/slicing/select_return_bis.c:30. + Called from tests/slicing/select_return_bis.i:30. [value] computing for function send_bis <- k_bis <- k <- g. - Called from tests/slicing/select_return_bis.c:24. -tests/slicing/select_return_bis.c:24:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype + Called from tests/slicing/select_return_bis.i:24. +tests/slicing/select_return_bis.i:24:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype [value] using specification for function send_bis [value] Done for function send_bis [value] Recording results for k_bis @@ -28,52 +28,52 @@ tests/slicing/select_return_bis.c:24:[kernel] warning: Neither code nor specific [value] Recording results for k [value] Done for function k [value] computing for function f <- g. - Called from tests/slicing/select_return_bis.c:36. + Called from tests/slicing/select_return_bis.i:36. [value] computing for function k <- f <- g. - Called from tests/slicing/select_return_bis.c:40. + Called from tests/slicing/select_return_bis.i:40. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:28. + Called from tests/slicing/select_return_bis.i:28. [value] Done for function get [value] computing for function k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:30. + Called from tests/slicing/select_return_bis.i:30. [value] computing for function send_bis <- k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:24. + Called from tests/slicing/select_return_bis.i:24. [value] Done for function send_bis [value] Recording results for k_bis [value] Done for function k_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return_bis.c:41. + Called from tests/slicing/select_return_bis.i:41. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:28. + Called from tests/slicing/select_return_bis.i:28. [value] Done for function get [value] computing for function k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:30. + Called from tests/slicing/select_return_bis.i:30. [value] computing for function send_bis <- k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:24. + Called from tests/slicing/select_return_bis.i:24. [value] Done for function send_bis [value] Recording results for k_bis [value] Done for function k_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return_bis.c:42. + Called from tests/slicing/select_return_bis.i:42. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:28. + Called from tests/slicing/select_return_bis.i:28. [value] Done for function get [value] computing for function k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:30. + Called from tests/slicing/select_return_bis.i:30. [value] computing for function send_bis <- k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:24. + Called from tests/slicing/select_return_bis.i:24. [value] Done for function send_bis [value] Recording results for k_bis [value] Done for function k_bis [value] Recording results for k [value] Done for function k [value] computing for function send <- f <- g. - Called from tests/slicing/select_return_bis.c:44. -tests/slicing/select_return_bis.c:44:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype + Called from tests/slicing/select_return_bis.i:44. +tests/slicing/select_return_bis.i:44:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype [value] using specification for function send [value] Done for function send [value] Recording results for f @@ -135,3 +135,5 @@ void f_slice_1(int y) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_3_select_return_bis.i (no preprocessing) diff --git a/tests/slicing/oracle/select_return_bis.4.res.oracle b/tests/slicing/oracle/select_return_bis.4.res.oracle index eb0ad092ff1955d0f4a120c987e5e485c891e2d3..395c604033435b0ccb3b9ee428856c655bb03876 100644 --- a/tests/slicing/oracle/select_return_bis.4.res.oracle +++ b/tests/slicing/oracle/select_return_bis.4.res.oracle @@ -1,6 +1,6 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/select_return_bis.c (with preprocessing) -tests/slicing/select_return_bis.c:36:[kernel] warning: Calling undeclared function f. Old style K&R code? +[kernel] Parsing tests/slicing/select_return_bis.i (no preprocessing) +tests/slicing/select_return_bis.i:36:[kernel] warning: Calling undeclared function f. Old style K&R code? [slicing] slicing requests in progress... [value] Analyzing an incomplete application starting at g [value] Computing initial state @@ -10,17 +10,17 @@ tests/slicing/select_return_bis.c:36:[kernel] warning: Calling undeclared functi H ∈ [--..--] I ∈ [--..--] [value] computing for function k <- g. - Called from tests/slicing/select_return_bis.c:35. + Called from tests/slicing/select_return_bis.i:35. [value] computing for function get <- k <- g. - Called from tests/slicing/select_return_bis.c:28. -tests/slicing/select_return_bis.c:28:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype + Called from tests/slicing/select_return_bis.i:28. +tests/slicing/select_return_bis.i:28:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype [value] using specification for function get [value] Done for function get [value] computing for function k_bis <- k <- g. - Called from tests/slicing/select_return_bis.c:30. + Called from tests/slicing/select_return_bis.i:30. [value] computing for function send_bis <- k_bis <- k <- g. - Called from tests/slicing/select_return_bis.c:24. -tests/slicing/select_return_bis.c:24:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype + Called from tests/slicing/select_return_bis.i:24. +tests/slicing/select_return_bis.i:24:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype [value] using specification for function send_bis [value] Done for function send_bis [value] Recording results for k_bis @@ -28,52 +28,52 @@ tests/slicing/select_return_bis.c:24:[kernel] warning: Neither code nor specific [value] Recording results for k [value] Done for function k [value] computing for function f <- g. - Called from tests/slicing/select_return_bis.c:36. + Called from tests/slicing/select_return_bis.i:36. [value] computing for function k <- f <- g. - Called from tests/slicing/select_return_bis.c:40. + Called from tests/slicing/select_return_bis.i:40. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:28. + Called from tests/slicing/select_return_bis.i:28. [value] Done for function get [value] computing for function k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:30. + Called from tests/slicing/select_return_bis.i:30. [value] computing for function send_bis <- k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:24. + Called from tests/slicing/select_return_bis.i:24. [value] Done for function send_bis [value] Recording results for k_bis [value] Done for function k_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return_bis.c:41. + Called from tests/slicing/select_return_bis.i:41. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:28. + Called from tests/slicing/select_return_bis.i:28. [value] Done for function get [value] computing for function k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:30. + Called from tests/slicing/select_return_bis.i:30. [value] computing for function send_bis <- k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:24. + Called from tests/slicing/select_return_bis.i:24. [value] Done for function send_bis [value] Recording results for k_bis [value] Done for function k_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return_bis.c:42. + Called from tests/slicing/select_return_bis.i:42. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:28. + Called from tests/slicing/select_return_bis.i:28. [value] Done for function get [value] computing for function k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:30. + Called from tests/slicing/select_return_bis.i:30. [value] computing for function send_bis <- k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:24. + Called from tests/slicing/select_return_bis.i:24. [value] Done for function send_bis [value] Recording results for k_bis [value] Done for function k_bis [value] Recording results for k [value] Done for function k [value] computing for function send <- f <- g. - Called from tests/slicing/select_return_bis.c:44. -tests/slicing/select_return_bis.c:44:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype + Called from tests/slicing/select_return_bis.i:44. +tests/slicing/select_return_bis.i:44:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype [value] using specification for function send [value] Done for function send [value] Recording results for f @@ -154,3 +154,5 @@ void f_slice_1(int y) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_4_select_return_bis.i (no preprocessing) diff --git a/tests/slicing/oracle/select_return_bis.5.res.oracle b/tests/slicing/oracle/select_return_bis.5.res.oracle index a93ffbeb34365f9a4dc710fa506fac7ec1f9818b..28ab9e8cb01611695b13e1fdd5a2a812f4c7cf89 100644 --- a/tests/slicing/oracle/select_return_bis.5.res.oracle +++ b/tests/slicing/oracle/select_return_bis.5.res.oracle @@ -1,6 +1,6 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/select_return_bis.c (with preprocessing) -tests/slicing/select_return_bis.c:36:[kernel] warning: Calling undeclared function f. Old style K&R code? +[kernel] Parsing tests/slicing/select_return_bis.i (no preprocessing) +tests/slicing/select_return_bis.i:36:[kernel] warning: Calling undeclared function f. Old style K&R code? [slicing] slicing requests in progress... [value] Analyzing an incomplete application starting at g [value] Computing initial state @@ -10,17 +10,17 @@ tests/slicing/select_return_bis.c:36:[kernel] warning: Calling undeclared functi H ∈ [--..--] I ∈ [--..--] [value] computing for function k <- g. - Called from tests/slicing/select_return_bis.c:35. + Called from tests/slicing/select_return_bis.i:35. [value] computing for function get <- k <- g. - Called from tests/slicing/select_return_bis.c:28. -tests/slicing/select_return_bis.c:28:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype + Called from tests/slicing/select_return_bis.i:28. +tests/slicing/select_return_bis.i:28:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype [value] using specification for function get [value] Done for function get [value] computing for function k_bis <- k <- g. - Called from tests/slicing/select_return_bis.c:30. + Called from tests/slicing/select_return_bis.i:30. [value] computing for function send_bis <- k_bis <- k <- g. - Called from tests/slicing/select_return_bis.c:24. -tests/slicing/select_return_bis.c:24:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype + Called from tests/slicing/select_return_bis.i:24. +tests/slicing/select_return_bis.i:24:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype [value] using specification for function send_bis [value] Done for function send_bis [value] Recording results for k_bis @@ -28,52 +28,52 @@ tests/slicing/select_return_bis.c:24:[kernel] warning: Neither code nor specific [value] Recording results for k [value] Done for function k [value] computing for function f <- g. - Called from tests/slicing/select_return_bis.c:36. + Called from tests/slicing/select_return_bis.i:36. [value] computing for function k <- f <- g. - Called from tests/slicing/select_return_bis.c:40. + Called from tests/slicing/select_return_bis.i:40. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:28. + Called from tests/slicing/select_return_bis.i:28. [value] Done for function get [value] computing for function k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:30. + Called from tests/slicing/select_return_bis.i:30. [value] computing for function send_bis <- k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:24. + Called from tests/slicing/select_return_bis.i:24. [value] Done for function send_bis [value] Recording results for k_bis [value] Done for function k_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return_bis.c:41. + Called from tests/slicing/select_return_bis.i:41. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:28. + Called from tests/slicing/select_return_bis.i:28. [value] Done for function get [value] computing for function k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:30. + Called from tests/slicing/select_return_bis.i:30. [value] computing for function send_bis <- k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:24. + Called from tests/slicing/select_return_bis.i:24. [value] Done for function send_bis [value] Recording results for k_bis [value] Done for function k_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return_bis.c:42. + Called from tests/slicing/select_return_bis.i:42. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:28. + Called from tests/slicing/select_return_bis.i:28. [value] Done for function get [value] computing for function k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:30. + Called from tests/slicing/select_return_bis.i:30. [value] computing for function send_bis <- k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:24. + Called from tests/slicing/select_return_bis.i:24. [value] Done for function send_bis [value] Recording results for k_bis [value] Done for function k_bis [value] Recording results for k [value] Done for function k [value] computing for function send <- f <- g. - Called from tests/slicing/select_return_bis.c:44. -tests/slicing/select_return_bis.c:44:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype + Called from tests/slicing/select_return_bis.i:44. +tests/slicing/select_return_bis.i:44:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype [value] using specification for function send [value] Done for function send [value] Recording results for f @@ -149,3 +149,5 @@ void f_slice_1(int y) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_5_select_return_bis.i (no preprocessing) diff --git a/tests/slicing/oracle/select_return_bis.6.res.oracle b/tests/slicing/oracle/select_return_bis.6.res.oracle index 4ff95a2aea0579c310a951507bea9e84beb7dbd2..2fe12305b2c7d0273a0626a966c7fa8c77281138 100644 --- a/tests/slicing/oracle/select_return_bis.6.res.oracle +++ b/tests/slicing/oracle/select_return_bis.6.res.oracle @@ -1,6 +1,6 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/select_return_bis.c (with preprocessing) -tests/slicing/select_return_bis.c:36:[kernel] warning: Calling undeclared function f. Old style K&R code? +[kernel] Parsing tests/slicing/select_return_bis.i (no preprocessing) +tests/slicing/select_return_bis.i:36:[kernel] warning: Calling undeclared function f. Old style K&R code? [slicing] slicing requests in progress... [value] Analyzing an incomplete application starting at g [value] Computing initial state @@ -10,17 +10,17 @@ tests/slicing/select_return_bis.c:36:[kernel] warning: Calling undeclared functi H ∈ [--..--] I ∈ [--..--] [value] computing for function k <- g. - Called from tests/slicing/select_return_bis.c:35. + Called from tests/slicing/select_return_bis.i:35. [value] computing for function get <- k <- g. - Called from tests/slicing/select_return_bis.c:28. -tests/slicing/select_return_bis.c:28:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype + Called from tests/slicing/select_return_bis.i:28. +tests/slicing/select_return_bis.i:28:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype [value] using specification for function get [value] Done for function get [value] computing for function k_bis <- k <- g. - Called from tests/slicing/select_return_bis.c:30. + Called from tests/slicing/select_return_bis.i:30. [value] computing for function send_bis <- k_bis <- k <- g. - Called from tests/slicing/select_return_bis.c:24. -tests/slicing/select_return_bis.c:24:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype + Called from tests/slicing/select_return_bis.i:24. +tests/slicing/select_return_bis.i:24:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype [value] using specification for function send_bis [value] Done for function send_bis [value] Recording results for k_bis @@ -28,52 +28,52 @@ tests/slicing/select_return_bis.c:24:[kernel] warning: Neither code nor specific [value] Recording results for k [value] Done for function k [value] computing for function f <- g. - Called from tests/slicing/select_return_bis.c:36. + Called from tests/slicing/select_return_bis.i:36. [value] computing for function k <- f <- g. - Called from tests/slicing/select_return_bis.c:40. + Called from tests/slicing/select_return_bis.i:40. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:28. + Called from tests/slicing/select_return_bis.i:28. [value] Done for function get [value] computing for function k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:30. + Called from tests/slicing/select_return_bis.i:30. [value] computing for function send_bis <- k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:24. + Called from tests/slicing/select_return_bis.i:24. [value] Done for function send_bis [value] Recording results for k_bis [value] Done for function k_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return_bis.c:41. + Called from tests/slicing/select_return_bis.i:41. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:28. + Called from tests/slicing/select_return_bis.i:28. [value] Done for function get [value] computing for function k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:30. + Called from tests/slicing/select_return_bis.i:30. [value] computing for function send_bis <- k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:24. + Called from tests/slicing/select_return_bis.i:24. [value] Done for function send_bis [value] Recording results for k_bis [value] Done for function k_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return_bis.c:42. + Called from tests/slicing/select_return_bis.i:42. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:28. + Called from tests/slicing/select_return_bis.i:28. [value] Done for function get [value] computing for function k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:30. + Called from tests/slicing/select_return_bis.i:30. [value] computing for function send_bis <- k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:24. + Called from tests/slicing/select_return_bis.i:24. [value] Done for function send_bis [value] Recording results for k_bis [value] Done for function k_bis [value] Recording results for k [value] Done for function k [value] computing for function send <- f <- g. - Called from tests/slicing/select_return_bis.c:44. -tests/slicing/select_return_bis.c:44:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype + Called from tests/slicing/select_return_bis.i:44. +tests/slicing/select_return_bis.i:44:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype [value] using specification for function send [value] Done for function send [value] Recording results for f @@ -142,3 +142,5 @@ void f_slice_1(int y) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_6_select_return_bis.i (no preprocessing) diff --git a/tests/slicing/oracle/select_return_bis.7.res.oracle b/tests/slicing/oracle/select_return_bis.7.res.oracle index a44bb0a97c02eacfdfcf11663a9ca9c33b7669e7..4dc2601885e86b7433712c0578b519ff05341429 100644 --- a/tests/slicing/oracle/select_return_bis.7.res.oracle +++ b/tests/slicing/oracle/select_return_bis.7.res.oracle @@ -1,6 +1,6 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/select_return_bis.c (with preprocessing) -tests/slicing/select_return_bis.c:36:[kernel] warning: Calling undeclared function f. Old style K&R code? +[kernel] Parsing tests/slicing/select_return_bis.i (no preprocessing) +tests/slicing/select_return_bis.i:36:[kernel] warning: Calling undeclared function f. Old style K&R code? [slicing] slicing requests in progress... [value] Analyzing an incomplete application starting at g [value] Computing initial state @@ -10,17 +10,17 @@ tests/slicing/select_return_bis.c:36:[kernel] warning: Calling undeclared functi H ∈ [--..--] I ∈ [--..--] [value] computing for function k <- g. - Called from tests/slicing/select_return_bis.c:35. + Called from tests/slicing/select_return_bis.i:35. [value] computing for function get <- k <- g. - Called from tests/slicing/select_return_bis.c:28. -tests/slicing/select_return_bis.c:28:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype + Called from tests/slicing/select_return_bis.i:28. +tests/slicing/select_return_bis.i:28:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype [value] using specification for function get [value] Done for function get [value] computing for function k_bis <- k <- g. - Called from tests/slicing/select_return_bis.c:30. + Called from tests/slicing/select_return_bis.i:30. [value] computing for function send_bis <- k_bis <- k <- g. - Called from tests/slicing/select_return_bis.c:24. -tests/slicing/select_return_bis.c:24:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype + Called from tests/slicing/select_return_bis.i:24. +tests/slicing/select_return_bis.i:24:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype [value] using specification for function send_bis [value] Done for function send_bis [value] Recording results for k_bis @@ -28,52 +28,52 @@ tests/slicing/select_return_bis.c:24:[kernel] warning: Neither code nor specific [value] Recording results for k [value] Done for function k [value] computing for function f <- g. - Called from tests/slicing/select_return_bis.c:36. + Called from tests/slicing/select_return_bis.i:36. [value] computing for function k <- f <- g. - Called from tests/slicing/select_return_bis.c:40. + Called from tests/slicing/select_return_bis.i:40. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:28. + Called from tests/slicing/select_return_bis.i:28. [value] Done for function get [value] computing for function k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:30. + Called from tests/slicing/select_return_bis.i:30. [value] computing for function send_bis <- k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:24. + Called from tests/slicing/select_return_bis.i:24. [value] Done for function send_bis [value] Recording results for k_bis [value] Done for function k_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return_bis.c:41. + Called from tests/slicing/select_return_bis.i:41. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:28. + Called from tests/slicing/select_return_bis.i:28. [value] Done for function get [value] computing for function k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:30. + Called from tests/slicing/select_return_bis.i:30. [value] computing for function send_bis <- k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:24. + Called from tests/slicing/select_return_bis.i:24. [value] Done for function send_bis [value] Recording results for k_bis [value] Done for function k_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return_bis.c:42. + Called from tests/slicing/select_return_bis.i:42. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:28. + Called from tests/slicing/select_return_bis.i:28. [value] Done for function get [value] computing for function k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:30. + Called from tests/slicing/select_return_bis.i:30. [value] computing for function send_bis <- k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:24. + Called from tests/slicing/select_return_bis.i:24. [value] Done for function send_bis [value] Recording results for k_bis [value] Done for function k_bis [value] Recording results for k [value] Done for function k [value] computing for function send <- f <- g. - Called from tests/slicing/select_return_bis.c:44. -tests/slicing/select_return_bis.c:44:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype + Called from tests/slicing/select_return_bis.i:44. +tests/slicing/select_return_bis.i:44:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype [value] using specification for function send [value] Done for function send [value] Recording results for f @@ -147,3 +147,5 @@ void f_slice_1(int y) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_7_select_return_bis.i (no preprocessing) diff --git a/tests/slicing/oracle/select_return_bis.8.res.oracle b/tests/slicing/oracle/select_return_bis.8.res.oracle index 74e342ea53170a4bfb5fc1fffd0ba918b98e2915..6b4b8fb2da4943e82c0409689773f74de5d7f824 100644 --- a/tests/slicing/oracle/select_return_bis.8.res.oracle +++ b/tests/slicing/oracle/select_return_bis.8.res.oracle @@ -1,6 +1,6 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/select_return_bis.c (with preprocessing) -tests/slicing/select_return_bis.c:36:[kernel] warning: Calling undeclared function f. Old style K&R code? +[kernel] Parsing tests/slicing/select_return_bis.i (no preprocessing) +tests/slicing/select_return_bis.i:36:[kernel] warning: Calling undeclared function f. Old style K&R code? [slicing] slicing requests in progress... [value] Analyzing an incomplete application starting at g [value] Computing initial state @@ -10,17 +10,17 @@ tests/slicing/select_return_bis.c:36:[kernel] warning: Calling undeclared functi H ∈ [--..--] I ∈ [--..--] [value] computing for function k <- g. - Called from tests/slicing/select_return_bis.c:35. + Called from tests/slicing/select_return_bis.i:35. [value] computing for function get <- k <- g. - Called from tests/slicing/select_return_bis.c:28. -tests/slicing/select_return_bis.c:28:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype + Called from tests/slicing/select_return_bis.i:28. +tests/slicing/select_return_bis.i:28:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype [value] using specification for function get [value] Done for function get [value] computing for function k_bis <- k <- g. - Called from tests/slicing/select_return_bis.c:30. + Called from tests/slicing/select_return_bis.i:30. [value] computing for function send_bis <- k_bis <- k <- g. - Called from tests/slicing/select_return_bis.c:24. -tests/slicing/select_return_bis.c:24:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype + Called from tests/slicing/select_return_bis.i:24. +tests/slicing/select_return_bis.i:24:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype [value] using specification for function send_bis [value] Done for function send_bis [value] Recording results for k_bis @@ -28,52 +28,52 @@ tests/slicing/select_return_bis.c:24:[kernel] warning: Neither code nor specific [value] Recording results for k [value] Done for function k [value] computing for function f <- g. - Called from tests/slicing/select_return_bis.c:36. + Called from tests/slicing/select_return_bis.i:36. [value] computing for function k <- f <- g. - Called from tests/slicing/select_return_bis.c:40. + Called from tests/slicing/select_return_bis.i:40. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:28. + Called from tests/slicing/select_return_bis.i:28. [value] Done for function get [value] computing for function k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:30. + Called from tests/slicing/select_return_bis.i:30. [value] computing for function send_bis <- k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:24. + Called from tests/slicing/select_return_bis.i:24. [value] Done for function send_bis [value] Recording results for k_bis [value] Done for function k_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return_bis.c:41. + Called from tests/slicing/select_return_bis.i:41. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:28. + Called from tests/slicing/select_return_bis.i:28. [value] Done for function get [value] computing for function k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:30. + Called from tests/slicing/select_return_bis.i:30. [value] computing for function send_bis <- k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:24. + Called from tests/slicing/select_return_bis.i:24. [value] Done for function send_bis [value] Recording results for k_bis [value] Done for function k_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return_bis.c:42. + Called from tests/slicing/select_return_bis.i:42. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:28. + Called from tests/slicing/select_return_bis.i:28. [value] Done for function get [value] computing for function k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:30. + Called from tests/slicing/select_return_bis.i:30. [value] computing for function send_bis <- k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:24. + Called from tests/slicing/select_return_bis.i:24. [value] Done for function send_bis [value] Recording results for k_bis [value] Done for function k_bis [value] Recording results for k [value] Done for function k [value] computing for function send <- f <- g. - Called from tests/slicing/select_return_bis.c:44. -tests/slicing/select_return_bis.c:44:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype + Called from tests/slicing/select_return_bis.i:44. +tests/slicing/select_return_bis.i:44:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype [value] using specification for function send [value] Done for function send [value] Recording results for f @@ -161,3 +161,5 @@ void f_slice_1(int y) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_8_select_return_bis.i (no preprocessing) diff --git a/tests/slicing/oracle/select_return_bis.9.res.oracle b/tests/slicing/oracle/select_return_bis.9.res.oracle index 1571aad0c77690d8118ce9781f003ccb27839e0d..c2724f6d7e91e3a016762ae34d42b0484ac1f6a9 100644 --- a/tests/slicing/oracle/select_return_bis.9.res.oracle +++ b/tests/slicing/oracle/select_return_bis.9.res.oracle @@ -1,6 +1,6 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/select_return_bis.c (with preprocessing) -tests/slicing/select_return_bis.c:36:[kernel] warning: Calling undeclared function f. Old style K&R code? +[kernel] Parsing tests/slicing/select_return_bis.i (no preprocessing) +tests/slicing/select_return_bis.i:36:[kernel] warning: Calling undeclared function f. Old style K&R code? [slicing] slicing requests in progress... [value] Analyzing an incomplete application starting at g [value] Computing initial state @@ -10,17 +10,17 @@ tests/slicing/select_return_bis.c:36:[kernel] warning: Calling undeclared functi H ∈ [--..--] I ∈ [--..--] [value] computing for function k <- g. - Called from tests/slicing/select_return_bis.c:35. + Called from tests/slicing/select_return_bis.i:35. [value] computing for function get <- k <- g. - Called from tests/slicing/select_return_bis.c:28. -tests/slicing/select_return_bis.c:28:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype + Called from tests/slicing/select_return_bis.i:28. +tests/slicing/select_return_bis.i:28:[kernel] warning: Neither code nor specification for function get, generating default assigns from the prototype [value] using specification for function get [value] Done for function get [value] computing for function k_bis <- k <- g. - Called from tests/slicing/select_return_bis.c:30. + Called from tests/slicing/select_return_bis.i:30. [value] computing for function send_bis <- k_bis <- k <- g. - Called from tests/slicing/select_return_bis.c:24. -tests/slicing/select_return_bis.c:24:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype + Called from tests/slicing/select_return_bis.i:24. +tests/slicing/select_return_bis.i:24:[kernel] warning: Neither code nor specification for function send_bis, generating default assigns from the prototype [value] using specification for function send_bis [value] Done for function send_bis [value] Recording results for k_bis @@ -28,52 +28,52 @@ tests/slicing/select_return_bis.c:24:[kernel] warning: Neither code nor specific [value] Recording results for k [value] Done for function k [value] computing for function f <- g. - Called from tests/slicing/select_return_bis.c:36. + Called from tests/slicing/select_return_bis.i:36. [value] computing for function k <- f <- g. - Called from tests/slicing/select_return_bis.c:40. + Called from tests/slicing/select_return_bis.i:40. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:28. + Called from tests/slicing/select_return_bis.i:28. [value] Done for function get [value] computing for function k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:30. + Called from tests/slicing/select_return_bis.i:30. [value] computing for function send_bis <- k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:24. + Called from tests/slicing/select_return_bis.i:24. [value] Done for function send_bis [value] Recording results for k_bis [value] Done for function k_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return_bis.c:41. + Called from tests/slicing/select_return_bis.i:41. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:28. + Called from tests/slicing/select_return_bis.i:28. [value] Done for function get [value] computing for function k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:30. + Called from tests/slicing/select_return_bis.i:30. [value] computing for function send_bis <- k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:24. + Called from tests/slicing/select_return_bis.i:24. [value] Done for function send_bis [value] Recording results for k_bis [value] Done for function k_bis [value] Recording results for k [value] Done for function k [value] computing for function k <- f <- g. - Called from tests/slicing/select_return_bis.c:42. + Called from tests/slicing/select_return_bis.i:42. [value] computing for function get <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:28. + Called from tests/slicing/select_return_bis.i:28. [value] Done for function get [value] computing for function k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:30. + Called from tests/slicing/select_return_bis.i:30. [value] computing for function send_bis <- k_bis <- k <- f <- g. - Called from tests/slicing/select_return_bis.c:24. + Called from tests/slicing/select_return_bis.i:24. [value] Done for function send_bis [value] Recording results for k_bis [value] Done for function k_bis [value] Recording results for k [value] Done for function k [value] computing for function send <- f <- g. - Called from tests/slicing/select_return_bis.c:44. -tests/slicing/select_return_bis.c:44:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype + Called from tests/slicing/select_return_bis.i:44. +tests/slicing/select_return_bis.i:44:[kernel] warning: Neither code nor specification for function send, generating default assigns from the prototype [value] using specification for function send [value] Done for function send [value] Recording results for f @@ -159,3 +159,5 @@ void f_slice_1(int y) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_9_select_return_bis.i (no preprocessing) diff --git a/tests/slicing/oracle/select_simple.res.oracle b/tests/slicing/oracle/select_simple.res.oracle index e3761d72eab0347e9a2f4aff76964067c1526518..5958a59ac2ecb00fe29aeea83df1af5ba7f8f144 100644 --- a/tests/slicing/oracle/select_simple.res.oracle +++ b/tests/slicing/oracle/select_simple.res.oracle @@ -1,428 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/select_simple.c (with preprocessing) -[value] Analyzing a complete application starting at main -[value] Computing initial state -[value] Initial state computed -[value:initial-state] Values of globals at initialization - Unknown ∈ {0} - G ∈ {0} - S ∈ {0} - S1 ∈ {0} - S2 ∈ {0} -tests/slicing/simple_intra_slice.c:98:[value] entering loop for the first time -tests/slicing/simple_intra_slice.c:99:[value] warning: signed overflow. assert -2147483648 ≤ uninit-1; -tests/slicing/simple_intra_slice.c:99:[value] warning: signed overflow. assert Unknown+1 ≤ 2147483647; -tests/slicing/simple_intra_slice.c:99:[value] warning: signed overflow. assert -2147483648 ≤ Unknown-1; -tests/slicing/simple_intra_slice.c:100:[value] entering loop for the first time -tests/slicing/simple_intra_slice.c:101:[value] warning: signed overflow. assert -2147483648 ≤ uninit2-1; -tests/slicing/simple_intra_slice.c:101:[value] warning: signed overflow. assert S.a+1 ≤ 2147483647; -tests/slicing/simple_intra_slice.c:101:[value] warning: signed overflow. assert -2147483648 ≤ S.a-1; -[value] computing for function f2 <- main. - Called from tests/slicing/simple_intra_slice.c:103. -[value] computing for function f1 <- f2 <- main. - Called from tests/slicing/simple_intra_slice.c:23. -[value] Recording results for f1 -[value] Done for function f1 -[value] Recording results for f2 -[value] Done for function f2 -[value] computing for function f3 <- main. - Called from tests/slicing/simple_intra_slice.c:104. -[value] Recording results for f3 -[value] Done for function f3 -[value] computing for function f4 <- main. - Called from tests/slicing/simple_intra_slice.c:105. -[value] Recording results for f4 -[value] Done for function f4 -[value] computing for function f5 <- main. - Called from tests/slicing/simple_intra_slice.c:106. -[value] Recording results for f5 -[value] Done for function f5 -[value] computing for function f6 <- main. - Called from tests/slicing/simple_intra_slice.c:107. -tests/slicing/simple_intra_slice.c:59:[value] entering loop for the first time -tests/slicing/simple_intra_slice.c:71:[value] warning: signed overflow. assert -2147483648 ≤ 10*n; -tests/slicing/simple_intra_slice.c:71:[value] warning: signed overflow. assert 10*n ≤ 2147483647; -[value] Recording results for f6 -[value] Done for function f6 -tests/slicing/simple_intra_slice.c:107:[value] warning: signed overflow. assert res+tmp_3 ≤ 2147483647; - (tmp_3 from f6(Unknown)) -[value] computing for function f7 <- main. - Called from tests/slicing/simple_intra_slice.c:108. -tests/slicing/simple_intra_slice.c:79:[value] warning: signed overflow. assert S.a+3 ≤ 2147483647; -tests/slicing/simple_intra_slice.c:82:[value] warning: signed overflow. assert s0.a+1 ≤ 2147483647; -[value] Recording results for f7 -[value] Done for function f7 -[value] computing for function f8 <- main. - Called from tests/slicing/simple_intra_slice.c:110. -[value] Recording results for f8 -[value] Done for function f8 -[value] computing for function f8 <- main. - Called from tests/slicing/simple_intra_slice.c:112. -[value] Recording results for f8 -[value] Done for function f8 -[value] Recording results for main -[value] done for function main -[from] Computing for function f1 -[from] Done for function f1 -[from] Computing for function f2 -[from] Done for function f2 -[from] Computing for function f3 -[from] Done for function f3 -[from] Computing for function f4 -[from] Done for function f4 -[from] Computing for function f5 -[from] Done for function f5 -[from] Computing for function f6 -[from] Done for function f6 -[from] Computing for function f7 -[from] Done for function f7 -[from] Computing for function f8 -[from] Done for function f8 -[from] Computing for function main -[from] Done for function main -[from] ====== DEPENDENCIES COMPUTED ====== - These dependencies hold at termination for the executions that terminate: -[from] Function f1: - G FROM x - \result FROM y -[from] Function f2: - G FROM \nothing - \result FROM \nothing -[from] Function f3: - G FROM Unknown; c (and SELF) - \result FROM Unknown; c -[from] Function f4: - G FROM Unknown; c (and SELF) - \result FROM Unknown; c -[from] Function f5: - G FROM Unknown; G; c (and SELF) - \result FROM Unknown; c -[from] Function f6: - \result FROM Unknown; n -[from] Function f7: - S.a FROM S.a; s0 - {.b; .c} FROM S.a; s0 (and SELF) -[from] Function f8: - S1.a FROM S1.a; S2.a; ps (and SELF) - .b FROM S1.b; S2.b; ps (and SELF) - S2.a FROM S1.a; S2.a; ps (and SELF) - .b FROM S1.b; S2.b; ps (and SELF) -[from] Function main: - Unknown FROM Unknown (and SELF) - G FROM Unknown - S.a FROM S - {.b; .c} FROM S (and SELF) - S1.a FROM Unknown; S1.a; S2.a (and SELF) - .b FROM Unknown; S1.b; S2.b (and SELF) - S2.a FROM Unknown; S1.a; S2.a (and SELF) - .b FROM Unknown; S1.b; S2.b (and SELF) - \result FROM Unknown -[from] ====== END OF DEPENDENCIES ====== -[slicing] making slicing project 'slicing_1'... -[pdg] computing for function f1 -[pdg] done for function f1 -Slicing project worklist [default/slicing_1] = -[f1_slice_1 = (n:11(restrict to G) ,<[--d], [---]>)] - -[slicing] exporting project to 'Sliced code'... -[slicing] applying all slicing requests... -[slicing] applying 1 actions... -[slicing] applying actions: 1/1... -[sparecode] remove unused global declarations from project 'Sliced code tmp' -[sparecode] removed unused global declarations in new project 'Sliced code' -/* Generated by Frama-C */ -int G; -void f1_slice_1(int x) -{ - int a; - a = 1; - G = x + a; - return; -} - - -[slicing] making slicing project 'slicing_2'... -Slicing project worklist [default/slicing_2] = -[f1_slice_1 = (n:13(restrict to __retres) ,<[--d], [---]>)] - -[slicing] exporting project to 'Sliced code'... -[slicing] applying all slicing requests... -[slicing] applying 1 actions... -[slicing] applying actions: 1/1... -[sparecode] remove unused global declarations from project 'Sliced code tmp' -[sparecode] removed unused global declarations in new project 'Sliced code' -/* Generated by Frama-C */ -int f1_slice_1(int y) -{ - int __retres; - int b; - b = 2; - __retres = y + b; - return __retres; -} - - -[slicing] making slicing project 'slicing_3'... -[pdg] computing for function f2 -[pdg] done for function f2 -Slicing project worklist [default/slicing_3] = -[f2_slice_1 = (n:28(restrict to tmp) ,<[--d], [---]>)] - -[slicing] exporting project to 'Sliced code'... -[slicing] applying all slicing requests... -[slicing] applying 1 actions... -[slicing] applying actions: 1/1... -[sparecode] remove unused global declarations from project 'Sliced code tmp' -[sparecode] removed unused global declarations in new project 'Sliced code' -/* Generated by Frama-C */ -int f1_slice_1(int y) -{ - int __retres; - int b; - b = 2; - __retres = y + b; - return __retres; -} - -int f2_slice_1(void) -{ - int c; - int tmp; - c = 3; - tmp = f1_slice_1(c); - return tmp; -} - - -[slicing] making slicing project 'slicing_4'... -[pdg] computing for function f6 -[pdg] done for function f6 -Slicing project worklist [default/slicing_4] = -[f6_slice_1 = (n:32(restrict to n) ,<[--d], [---]>)(n:42(restrict to -n) ,<[--d], [---]>)] - -[slicing] exporting project to 'Sliced code'... -[slicing] applying all slicing requests... -[slicing] applying 1 actions... -[slicing] applying actions: 1/1... -[sparecode] remove unused global declarations from project 'Sliced code tmp' -[sparecode] removed unused global declarations in new project 'Sliced code' -/* Generated by Frama-C */ -int Unknown; -void f6_slice_1(int n) -{ - while (n < 10) { - if (Unknown > 3) break; - if (n % 2) continue; - n ++; - } - return; -} - - -[slicing] making slicing project 'slicing_5'... -[pdg] computing for function f7 -[pdg] done for function f7 -[slicing] making slicing project 'slicing_6'... -Impossible to select 'retres' for a void function (f7) -Slicing project worklist [default/slicing_6] = -[f7_slice_1 = (n:61(restrict to S.a) ,<[--d], [---]>)(n:63(restrict to -S.a) ,<[--d], [---]>)] - -[slicing] exporting project to 'Sliced code'... -[slicing] applying all slicing requests... -[slicing] applying 1 actions... -[slicing] applying actions: 1/1... -[sparecode] remove unused global declarations from project 'Sliced code tmp' -[sparecode] removed unused global declarations in new project 'Sliced code' -/* Generated by Frama-C */ -struct __anonstruct_Tstr_1 { - int a ; - int b ; - int c ; -}; -typedef struct __anonstruct_Tstr_1 Tstr; -Tstr S; -void f7_slice_1(Tstr s0) -{ - int x; - x = S.a; - if (x > 0) S.a += 3; - else { - (s0.a) ++; - S = s0; - } - return; -} - - -[slicing] making slicing project 'slicing_7'... -Slicing project worklist [default/slicing_7] = -[f7_slice_1 = (UndefIn S.b:<[--d], [---]>)(n:63(restrict to S.b) ,<[--d], - [---]>)] - -[slicing] exporting project to 'Sliced code'... -[slicing] applying all slicing requests... -[slicing] applying 1 actions... -[slicing] applying actions: 1/1... -[sparecode] remove unused global declarations from project 'Sliced code tmp' -[sparecode] removed unused global declarations in new project 'Sliced code' -/* Generated by Frama-C */ -struct __anonstruct_Tstr_1 { - int a ; - int b ; - int c ; -}; -typedef struct __anonstruct_Tstr_1 Tstr; -Tstr S; -void f7_slice_1(Tstr s0) -{ - int x; - x = S.a; - if (! (x > 0)) { - (s0.a) ++; - S = s0; - } - return; -} - - -[slicing] making slicing project 'slicing_8'... -Slicing project worklist [default/slicing_8] = -[f7_slice_1 = (UndefIn S{.b; .c}:<[--d], [---]>)(n:61(restrict to S.a) , -<[--d], -[---]>)(n:63(restrict to S.a) ,<[--d], [---]>)(n:63(restrict to S{.b; .c}) , -<[--d], -[---]>)] - -[slicing] exporting project to 'Sliced code'... -[slicing] applying all slicing requests... -[slicing] applying 1 actions... -[slicing] applying actions: 1/1... -[sparecode] remove unused global declarations from project 'Sliced code tmp' -[sparecode] removed unused global declarations in new project 'Sliced code' -/* Generated by Frama-C */ -struct __anonstruct_Tstr_1 { - int a ; - int b ; - int c ; -}; -typedef struct __anonstruct_Tstr_1 Tstr; -Tstr S; -void f7_slice_1(Tstr s0) -{ - int x; - x = S.a; - if (x > 0) S.a += 3; - else { - (s0.a) ++; - S = s0; - } - return; -} - - -[slicing] making slicing project 'slicing_9'... -[slicing] making slicing project 'slicing_10'... -[pdg] computing for function f8 -[pdg] done for function f8 -Impossible to select this data : XXX in f7 -Slicing project worklist [default/slicing_10] = -[f8_slice_1 = (n:69(restrict to S1.a) ,<[--d], [---]>)(n:69(restrict to -S2.a) ,<[--d], [---]>)(n:75(restrict to S2.a) ,<[--d], [---]>)(n:74(restrict to -S1.a) ,<[--d], [---]>)] - -[slicing] exporting project to 'Sliced code'... -[slicing] applying all slicing requests... -[slicing] applying 1 actions... -[slicing] applying actions: 1/1... -[sparecode] remove unused global declarations from project 'Sliced code tmp' -[sparecode] removed unused global declarations in new project 'Sliced code' -/* Generated by Frama-C */ -struct __anonstruct_Tstr_1 { - int a ; - int b ; - int c ; -}; -typedef struct __anonstruct_Tstr_1 Tstr; -void f8_slice_1(Tstr *ps) -{ - (ps->a) ++; - return; -} - - -[slicing] making slicing project 'slicing_11'... -Slicing project worklist [default/slicing_11] = -[f8_slice_1 = (n:70(restrict to S1.b) ,<[--d], [---]>)(n:70(restrict to -S2.b) ,<[--d], [---]>)(n:73(restrict to S2.b) ,<[--d], [---]>)(n:72(restrict to -S1.b) ,<[--d], [---]>)] - -[slicing] exporting project to 'Sliced code'... -[slicing] applying all slicing requests... -[slicing] applying 1 actions... -[slicing] applying actions: 1/1... -[sparecode] remove unused global declarations from project 'Sliced code tmp' -[sparecode] removed unused global declarations in new project 'Sliced code' -/* Generated by Frama-C */ -struct __anonstruct_Tstr_1 { - int a ; - int b ; - int c ; -}; -typedef struct __anonstruct_Tstr_1 Tstr; -void f8_slice_1(Tstr *ps) -{ - (ps->b) ++; - return; -} - - -[slicing] making slicing project 'slicing_12'... -Slicing project worklist [default/slicing_12] = -[f8_slice_1 = (UndefIn S1.c; -S2.c:<[--d], [---]>)] - -[slicing] exporting project to 'Sliced code'... -[slicing] applying all slicing requests... -[slicing] applying 1 actions... -[slicing] applying actions: 1/1... -[sparecode] remove unused global declarations from project 'Sliced code tmp' -[sparecode] removed unused global declarations in new project 'Sliced code' -/* Generated by Frama-C */ -void f8_slice_1(void) -{ - return; -} - - -[slicing] making slicing project 'slicing_13'... -Slicing project worklist [default/slicing_13] = -[f8_slice_1 = (UndefIn S1.c; -S2.c:<[--d], [---]>)(n:69(restrict to S1.a) ,<[--d], [---]>)(n:70(restrict to -S1.b) ,<[--d], [---]>)(n:69(restrict to S2.a) ,<[--d], [---]>)(n:70(restrict to -S2.b) ,<[--d], [---]>)(n:73(restrict to S2.b) ,<[--d], [---]>)(n:75(restrict to -S2.a) ,<[--d], [---]>)(n:72(restrict to S1.b) ,<[--d], [---]>)(n:74(restrict to -S1.a) ,<[--d], [---]>)] - -[slicing] exporting project to 'Sliced code'... -[slicing] applying all slicing requests... -[slicing] applying 1 actions... -[slicing] applying actions: 1/1... -[sparecode] remove unused global declarations from project 'Sliced code tmp' -[sparecode] removed unused global declarations in new project 'Sliced code' -/* Generated by Frama-C */ -struct __anonstruct_Tstr_1 { - int a ; - int b ; - int c ; -}; -typedef struct __anonstruct_Tstr_1 Tstr; -void f8_slice_1(Tstr *ps) -{ - (ps->a) ++; - (ps->b) ++; - return; -} - - +[kernel] Parsing tests/slicing/select_simple.i (no preprocessing) +[kernel] user error: cannot find entry point `main'. + Please use option `-main' for specifying a valid entry point. +[kernel] Frama-C aborted: invalid user input. diff --git a/tests/slicing/oracle/simple_intra_slice.res.oracle b/tests/slicing/oracle/simple_intra_slice.res.oracle index 88ba454fba3c96bd4ed3987fde9cbbf1b8b1923f..5bfed5bdd553004ec552f42b908c905343dca1bd 100644 --- a/tests/slicing/oracle/simple_intra_slice.res.oracle +++ b/tests/slicing/oracle/simple_intra_slice.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/simple_intra_slice.c (with preprocessing) +[kernel] Parsing tests/slicing/simple_intra_slice.i (no preprocessing) [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed @@ -9,55 +9,55 @@ S ∈ {0} S1 ∈ {0} S2 ∈ {0} -tests/slicing/simple_intra_slice.c:98:[value] entering loop for the first time -tests/slicing/simple_intra_slice.c:99:[value] warning: signed overflow. assert -2147483648 ≤ uninit-1; -tests/slicing/simple_intra_slice.c:99:[value] warning: signed overflow. assert Unknown+1 ≤ 2147483647; -tests/slicing/simple_intra_slice.c:99:[value] warning: signed overflow. assert -2147483648 ≤ Unknown-1; -tests/slicing/simple_intra_slice.c:100:[value] entering loop for the first time -tests/slicing/simple_intra_slice.c:101:[value] warning: signed overflow. assert -2147483648 ≤ uninit2-1; -tests/slicing/simple_intra_slice.c:101:[value] warning: signed overflow. assert S.a+1 ≤ 2147483647; -tests/slicing/simple_intra_slice.c:101:[value] warning: signed overflow. assert -2147483648 ≤ S.a-1; +tests/slicing/simple_intra_slice.i:98:[value] entering loop for the first time +tests/slicing/simple_intra_slice.i:99:[value] warning: signed overflow. assert -2147483648 ≤ uninit-1; +tests/slicing/simple_intra_slice.i:99:[value] warning: signed overflow. assert Unknown+1 ≤ 2147483647; +tests/slicing/simple_intra_slice.i:99:[value] warning: signed overflow. assert -2147483648 ≤ Unknown-1; +tests/slicing/simple_intra_slice.i:100:[value] entering loop for the first time +tests/slicing/simple_intra_slice.i:101:[value] warning: signed overflow. assert -2147483648 ≤ uninit2-1; +tests/slicing/simple_intra_slice.i:101:[value] warning: signed overflow. assert S.a+1 ≤ 2147483647; +tests/slicing/simple_intra_slice.i:101:[value] warning: signed overflow. assert -2147483648 ≤ S.a-1; [value] computing for function f2 <- main. - Called from tests/slicing/simple_intra_slice.c:103. + Called from tests/slicing/simple_intra_slice.i:103. [value] computing for function f1 <- f2 <- main. - Called from tests/slicing/simple_intra_slice.c:23. + Called from tests/slicing/simple_intra_slice.i:23. [value] Recording results for f1 [value] Done for function f1 [value] Recording results for f2 [value] Done for function f2 [value] computing for function f3 <- main. - Called from tests/slicing/simple_intra_slice.c:104. + Called from tests/slicing/simple_intra_slice.i:104. [value] Recording results for f3 [value] Done for function f3 [value] computing for function f4 <- main. - Called from tests/slicing/simple_intra_slice.c:105. + Called from tests/slicing/simple_intra_slice.i:105. [value] Recording results for f4 [value] Done for function f4 [value] computing for function f5 <- main. - Called from tests/slicing/simple_intra_slice.c:106. + Called from tests/slicing/simple_intra_slice.i:106. [value] Recording results for f5 [value] Done for function f5 [value] computing for function f6 <- main. - Called from tests/slicing/simple_intra_slice.c:107. -tests/slicing/simple_intra_slice.c:59:[value] entering loop for the first time -tests/slicing/simple_intra_slice.c:71:[value] warning: signed overflow. assert -2147483648 ≤ 10*n; -tests/slicing/simple_intra_slice.c:71:[value] warning: signed overflow. assert 10*n ≤ 2147483647; + Called from tests/slicing/simple_intra_slice.i:107. +tests/slicing/simple_intra_slice.i:59:[value] entering loop for the first time +tests/slicing/simple_intra_slice.i:71:[value] warning: signed overflow. assert -2147483648 ≤ 10*n; +tests/slicing/simple_intra_slice.i:71:[value] warning: signed overflow. assert 10*n ≤ 2147483647; [value] Recording results for f6 [value] Done for function f6 -tests/slicing/simple_intra_slice.c:107:[value] warning: signed overflow. assert res+tmp_3 ≤ 2147483647; +tests/slicing/simple_intra_slice.i:107:[value] warning: signed overflow. assert res+tmp_3 ≤ 2147483647; (tmp_3 from f6(Unknown)) [value] computing for function f7 <- main. - Called from tests/slicing/simple_intra_slice.c:108. -tests/slicing/simple_intra_slice.c:79:[value] warning: signed overflow. assert S.a+3 ≤ 2147483647; -tests/slicing/simple_intra_slice.c:82:[value] warning: signed overflow. assert s0.a+1 ≤ 2147483647; + Called from tests/slicing/simple_intra_slice.i:108. +tests/slicing/simple_intra_slice.i:79:[value] warning: signed overflow. assert S.a+3 ≤ 2147483647; +tests/slicing/simple_intra_slice.i:82:[value] warning: signed overflow. assert s0.a+1 ≤ 2147483647; [value] Recording results for f7 [value] Done for function f7 [value] computing for function f8 <- main. - Called from tests/slicing/simple_intra_slice.c:110. + Called from tests/slicing/simple_intra_slice.i:110. [value] Recording results for f8 [value] Done for function f8 [value] computing for function f8 <- main. - Called from tests/slicing/simple_intra_slice.c:112. + Called from tests/slicing/simple_intra_slice.i:112. [value] Recording results for f8 [value] Done for function f8 [value] Recording results for main diff --git a/tests/slicing/oracle/sizeof.0.res.oracle b/tests/slicing/oracle/sizeof.0.res.oracle index 06ae0d6e51e3212a314594c0cfaa6be956f11665..937a59af94f600f50ab21e9e402e588084b2e208 100644 --- a/tests/slicing/oracle/sizeof.0.res.oracle +++ b/tests/slicing/oracle/sizeof.0.res.oracle @@ -1,49 +1,49 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/sizeof.c (with preprocessing) +[kernel] Parsing tests/slicing/sizeof.i (no preprocessing) [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed [value:initial-state] Values of globals at initialization st ∈ {0} -tests/slicing/sizeof.c:93:[value] assertion got status valid. +tests/slicing/sizeof.i:93:[value] assertion got status valid. [value] computing for function SizeOf_1 <- main. - Called from tests/slicing/sizeof.c:94. + Called from tests/slicing/sizeof.i:94. [value] Recording results for SizeOf_1 [value] Done for function SizeOf_1 [value] computing for function SizeOf_2 <- main. - Called from tests/slicing/sizeof.c:95. + Called from tests/slicing/sizeof.i:95. [value] Recording results for SizeOf_2 [value] Done for function SizeOf_2 [value] computing for function SizeOfE_pt1 <- main. - Called from tests/slicing/sizeof.c:96. + Called from tests/slicing/sizeof.i:96. [value] Recording results for SizeOfE_pt1 [value] Done for function SizeOfE_pt1 [value] computing for function SizeOfE_pt2 <- main. - Called from tests/slicing/sizeof.c:97. + Called from tests/slicing/sizeof.i:97. [value] Recording results for SizeOfE_pt2 [value] Done for function SizeOfE_pt2 [value] computing for function SizeOfE_pt3 <- main. - Called from tests/slicing/sizeof.c:98. + Called from tests/slicing/sizeof.i:98. [value] Recording results for SizeOfE_pt3 [value] Done for function SizeOfE_pt3 [value] computing for function SizeOfE_pt_deref_1 <- main. - Called from tests/slicing/sizeof.c:99. + Called from tests/slicing/sizeof.i:99. [value] Recording results for SizeOfE_pt_deref_1 [value] Done for function SizeOfE_pt_deref_1 [value] computing for function SizeOfE_tab_1 <- main. - Called from tests/slicing/sizeof.c:100. + Called from tests/slicing/sizeof.i:100. [value] Recording results for SizeOfE_tab_1 [value] Done for function SizeOfE_tab_1 [value] computing for function SizeOfE_pt_tab_1 <- main. - Called from tests/slicing/sizeof.c:101. + Called from tests/slicing/sizeof.i:101. [value] Recording results for SizeOfE_pt_tab_1 [value] Done for function SizeOfE_pt_tab_1 [value] computing for function SizeOfE_pt_tab_2 <- main. - Called from tests/slicing/sizeof.c:102. + Called from tests/slicing/sizeof.i:102. [value] Recording results for SizeOfE_pt_tab_2 [value] Done for function SizeOfE_pt_tab_2 [value] computing for function SizeOfE_tab_acces_1 <- main. - Called from tests/slicing/sizeof.c:103. + Called from tests/slicing/sizeof.i:103. [value] Recording results for SizeOfE_tab_acces_1 [value] Done for function SizeOfE_tab_acces_1 [value] Recording results for main @@ -280,3 +280,5 @@ int main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_0_sizeof.i (no preprocessing) diff --git a/tests/slicing/oracle/sizeof.1.res.oracle b/tests/slicing/oracle/sizeof.1.res.oracle index 387a7592a4771c1deba958f59d4de8d6e3703989..241a5dbd7a0ee80e0f7b075cb882b7496af7cfa4 100644 --- a/tests/slicing/oracle/sizeof.1.res.oracle +++ b/tests/slicing/oracle/sizeof.1.res.oracle @@ -1,49 +1,49 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/sizeof.c (with preprocessing) +[kernel] Parsing tests/slicing/sizeof.i (no preprocessing) [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed [value:initial-state] Values of globals at initialization st ∈ {0} -tests/slicing/sizeof.c:93:[value] assertion got status valid. +tests/slicing/sizeof.i:93:[value] assertion got status valid. [value] computing for function SizeOf_1 <- main. - Called from tests/slicing/sizeof.c:94. + Called from tests/slicing/sizeof.i:94. [value] Recording results for SizeOf_1 [value] Done for function SizeOf_1 [value] computing for function SizeOf_2 <- main. - Called from tests/slicing/sizeof.c:95. + Called from tests/slicing/sizeof.i:95. [value] Recording results for SizeOf_2 [value] Done for function SizeOf_2 [value] computing for function SizeOfE_pt1 <- main. - Called from tests/slicing/sizeof.c:96. + Called from tests/slicing/sizeof.i:96. [value] Recording results for SizeOfE_pt1 [value] Done for function SizeOfE_pt1 [value] computing for function SizeOfE_pt2 <- main. - Called from tests/slicing/sizeof.c:97. + Called from tests/slicing/sizeof.i:97. [value] Recording results for SizeOfE_pt2 [value] Done for function SizeOfE_pt2 [value] computing for function SizeOfE_pt3 <- main. - Called from tests/slicing/sizeof.c:98. + Called from tests/slicing/sizeof.i:98. [value] Recording results for SizeOfE_pt3 [value] Done for function SizeOfE_pt3 [value] computing for function SizeOfE_pt_deref_1 <- main. - Called from tests/slicing/sizeof.c:99. + Called from tests/slicing/sizeof.i:99. [value] Recording results for SizeOfE_pt_deref_1 [value] Done for function SizeOfE_pt_deref_1 [value] computing for function SizeOfE_tab_1 <- main. - Called from tests/slicing/sizeof.c:100. + Called from tests/slicing/sizeof.i:100. [value] Recording results for SizeOfE_tab_1 [value] Done for function SizeOfE_tab_1 [value] computing for function SizeOfE_pt_tab_1 <- main. - Called from tests/slicing/sizeof.c:101. + Called from tests/slicing/sizeof.i:101. [value] Recording results for SizeOfE_pt_tab_1 [value] Done for function SizeOfE_pt_tab_1 [value] computing for function SizeOfE_pt_tab_2 <- main. - Called from tests/slicing/sizeof.c:102. + Called from tests/slicing/sizeof.i:102. [value] Recording results for SizeOfE_pt_tab_2 [value] Done for function SizeOfE_pt_tab_2 [value] computing for function SizeOfE_tab_acces_1 <- main. - Called from tests/slicing/sizeof.c:103. + Called from tests/slicing/sizeof.i:103. [value] Recording results for SizeOfE_tab_acces_1 [value] Done for function SizeOfE_tab_acces_1 [value] Recording results for main @@ -119,3 +119,5 @@ unsigned int SizeOf_1_slice_1(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_1_sizeof.i (no preprocessing) diff --git a/tests/slicing/oracle/sizeof.10.res.oracle b/tests/slicing/oracle/sizeof.10.res.oracle index 385ed176ea506303002c4ccc37229e2926e81421..42b7db60cebf8b5e4395c6642f55ac83fc789d16 100644 --- a/tests/slicing/oracle/sizeof.10.res.oracle +++ b/tests/slicing/oracle/sizeof.10.res.oracle @@ -1,49 +1,49 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/sizeof.c (with preprocessing) +[kernel] Parsing tests/slicing/sizeof.i (no preprocessing) [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed [value:initial-state] Values of globals at initialization st ∈ {0} -tests/slicing/sizeof.c:93:[value] assertion got status valid. +tests/slicing/sizeof.i:93:[value] assertion got status valid. [value] computing for function SizeOf_1 <- main. - Called from tests/slicing/sizeof.c:94. + Called from tests/slicing/sizeof.i:94. [value] Recording results for SizeOf_1 [value] Done for function SizeOf_1 [value] computing for function SizeOf_2 <- main. - Called from tests/slicing/sizeof.c:95. + Called from tests/slicing/sizeof.i:95. [value] Recording results for SizeOf_2 [value] Done for function SizeOf_2 [value] computing for function SizeOfE_pt1 <- main. - Called from tests/slicing/sizeof.c:96. + Called from tests/slicing/sizeof.i:96. [value] Recording results for SizeOfE_pt1 [value] Done for function SizeOfE_pt1 [value] computing for function SizeOfE_pt2 <- main. - Called from tests/slicing/sizeof.c:97. + Called from tests/slicing/sizeof.i:97. [value] Recording results for SizeOfE_pt2 [value] Done for function SizeOfE_pt2 [value] computing for function SizeOfE_pt3 <- main. - Called from tests/slicing/sizeof.c:98. + Called from tests/slicing/sizeof.i:98. [value] Recording results for SizeOfE_pt3 [value] Done for function SizeOfE_pt3 [value] computing for function SizeOfE_pt_deref_1 <- main. - Called from tests/slicing/sizeof.c:99. + Called from tests/slicing/sizeof.i:99. [value] Recording results for SizeOfE_pt_deref_1 [value] Done for function SizeOfE_pt_deref_1 [value] computing for function SizeOfE_tab_1 <- main. - Called from tests/slicing/sizeof.c:100. + Called from tests/slicing/sizeof.i:100. [value] Recording results for SizeOfE_tab_1 [value] Done for function SizeOfE_tab_1 [value] computing for function SizeOfE_pt_tab_1 <- main. - Called from tests/slicing/sizeof.c:101. + Called from tests/slicing/sizeof.i:101. [value] Recording results for SizeOfE_pt_tab_1 [value] Done for function SizeOfE_pt_tab_1 [value] computing for function SizeOfE_pt_tab_2 <- main. - Called from tests/slicing/sizeof.c:102. + Called from tests/slicing/sizeof.i:102. [value] Recording results for SizeOfE_pt_tab_2 [value] Done for function SizeOfE_pt_tab_2 [value] computing for function SizeOfE_tab_acces_1 <- main. - Called from tests/slicing/sizeof.c:103. + Called from tests/slicing/sizeof.i:103. [value] Recording results for SizeOfE_tab_acces_1 [value] Done for function SizeOfE_tab_acces_1 [value] Recording results for main @@ -121,3 +121,5 @@ unsigned int SizeOfE_tab_acces_1_slice_1(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_10_sizeof.i (no preprocessing) diff --git a/tests/slicing/oracle/sizeof.11.res.oracle b/tests/slicing/oracle/sizeof.11.res.oracle index 6603eb76ac0b65684f72cf6f5161e236b40424a9..1643a8e34c29dd8411eed22e813a95e80cfb6b5e 100644 --- a/tests/slicing/oracle/sizeof.11.res.oracle +++ b/tests/slicing/oracle/sizeof.11.res.oracle @@ -1,49 +1,49 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/sizeof.c (with preprocessing) +[kernel] Parsing tests/slicing/sizeof.i (no preprocessing) [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed [value:initial-state] Values of globals at initialization st ∈ {0} -tests/slicing/sizeof.c:93:[value] assertion got status valid. +tests/slicing/sizeof.i:93:[value] assertion got status valid. [value] computing for function SizeOf_1 <- main. - Called from tests/slicing/sizeof.c:94. + Called from tests/slicing/sizeof.i:94. [value] Recording results for SizeOf_1 [value] Done for function SizeOf_1 [value] computing for function SizeOf_2 <- main. - Called from tests/slicing/sizeof.c:95. + Called from tests/slicing/sizeof.i:95. [value] Recording results for SizeOf_2 [value] Done for function SizeOf_2 [value] computing for function SizeOfE_pt1 <- main. - Called from tests/slicing/sizeof.c:96. + Called from tests/slicing/sizeof.i:96. [value] Recording results for SizeOfE_pt1 [value] Done for function SizeOfE_pt1 [value] computing for function SizeOfE_pt2 <- main. - Called from tests/slicing/sizeof.c:97. + Called from tests/slicing/sizeof.i:97. [value] Recording results for SizeOfE_pt2 [value] Done for function SizeOfE_pt2 [value] computing for function SizeOfE_pt3 <- main. - Called from tests/slicing/sizeof.c:98. + Called from tests/slicing/sizeof.i:98. [value] Recording results for SizeOfE_pt3 [value] Done for function SizeOfE_pt3 [value] computing for function SizeOfE_pt_deref_1 <- main. - Called from tests/slicing/sizeof.c:99. + Called from tests/slicing/sizeof.i:99. [value] Recording results for SizeOfE_pt_deref_1 [value] Done for function SizeOfE_pt_deref_1 [value] computing for function SizeOfE_tab_1 <- main. - Called from tests/slicing/sizeof.c:100. + Called from tests/slicing/sizeof.i:100. [value] Recording results for SizeOfE_tab_1 [value] Done for function SizeOfE_tab_1 [value] computing for function SizeOfE_pt_tab_1 <- main. - Called from tests/slicing/sizeof.c:101. + Called from tests/slicing/sizeof.i:101. [value] Recording results for SizeOfE_pt_tab_1 [value] Done for function SizeOfE_pt_tab_1 [value] computing for function SizeOfE_pt_tab_2 <- main. - Called from tests/slicing/sizeof.c:102. + Called from tests/slicing/sizeof.i:102. [value] Recording results for SizeOfE_pt_tab_2 [value] Done for function SizeOfE_pt_tab_2 [value] computing for function SizeOfE_tab_acces_1 <- main. - Called from tests/slicing/sizeof.c:103. + Called from tests/slicing/sizeof.i:103. [value] Recording results for SizeOfE_tab_acces_1 [value] Done for function SizeOfE_tab_acces_1 [value] Recording results for main @@ -280,3 +280,5 @@ void main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_11_sizeof.i (no preprocessing) diff --git a/tests/slicing/oracle/sizeof.12.res.oracle b/tests/slicing/oracle/sizeof.12.res.oracle index c0f1ab85365aa35f6e0d1aa98ffba3a782af2776..e62a86abdd5cf264b70e9d7723303d3b011c623b 100644 --- a/tests/slicing/oracle/sizeof.12.res.oracle +++ b/tests/slicing/oracle/sizeof.12.res.oracle @@ -1,49 +1,49 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/sizeof.c (with preprocessing) +[kernel] Parsing tests/slicing/sizeof.i (no preprocessing) [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed [value:initial-state] Values of globals at initialization st ∈ {0} -tests/slicing/sizeof.c:93:[value] assertion got status valid. +tests/slicing/sizeof.i:93:[value] assertion got status valid. [value] computing for function SizeOf_1 <- main. - Called from tests/slicing/sizeof.c:94. + Called from tests/slicing/sizeof.i:94. [value] Recording results for SizeOf_1 [value] Done for function SizeOf_1 [value] computing for function SizeOf_2 <- main. - Called from tests/slicing/sizeof.c:95. + Called from tests/slicing/sizeof.i:95. [value] Recording results for SizeOf_2 [value] Done for function SizeOf_2 [value] computing for function SizeOfE_pt1 <- main. - Called from tests/slicing/sizeof.c:96. + Called from tests/slicing/sizeof.i:96. [value] Recording results for SizeOfE_pt1 [value] Done for function SizeOfE_pt1 [value] computing for function SizeOfE_pt2 <- main. - Called from tests/slicing/sizeof.c:97. + Called from tests/slicing/sizeof.i:97. [value] Recording results for SizeOfE_pt2 [value] Done for function SizeOfE_pt2 [value] computing for function SizeOfE_pt3 <- main. - Called from tests/slicing/sizeof.c:98. + Called from tests/slicing/sizeof.i:98. [value] Recording results for SizeOfE_pt3 [value] Done for function SizeOfE_pt3 [value] computing for function SizeOfE_pt_deref_1 <- main. - Called from tests/slicing/sizeof.c:99. + Called from tests/slicing/sizeof.i:99. [value] Recording results for SizeOfE_pt_deref_1 [value] Done for function SizeOfE_pt_deref_1 [value] computing for function SizeOfE_tab_1 <- main. - Called from tests/slicing/sizeof.c:100. + Called from tests/slicing/sizeof.i:100. [value] Recording results for SizeOfE_tab_1 [value] Done for function SizeOfE_tab_1 [value] computing for function SizeOfE_pt_tab_1 <- main. - Called from tests/slicing/sizeof.c:101. + Called from tests/slicing/sizeof.i:101. [value] Recording results for SizeOfE_pt_tab_1 [value] Done for function SizeOfE_pt_tab_1 [value] computing for function SizeOfE_pt_tab_2 <- main. - Called from tests/slicing/sizeof.c:102. + Called from tests/slicing/sizeof.i:102. [value] Recording results for SizeOfE_pt_tab_2 [value] Done for function SizeOfE_pt_tab_2 [value] computing for function SizeOfE_tab_acces_1 <- main. - Called from tests/slicing/sizeof.c:103. + Called from tests/slicing/sizeof.i:103. [value] Recording results for SizeOfE_tab_acces_1 [value] Done for function SizeOfE_tab_acces_1 [value] Recording results for main @@ -126,3 +126,5 @@ void main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_12_sizeof.i (no preprocessing) diff --git a/tests/slicing/oracle/sizeof.2.res.oracle b/tests/slicing/oracle/sizeof.2.res.oracle index cc1e9e9b26f698aca2b87baadb298abfacc9da61..aea63a15715a79912a50258829fedb22504de3d5 100644 --- a/tests/slicing/oracle/sizeof.2.res.oracle +++ b/tests/slicing/oracle/sizeof.2.res.oracle @@ -1,49 +1,49 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/sizeof.c (with preprocessing) +[kernel] Parsing tests/slicing/sizeof.i (no preprocessing) [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed [value:initial-state] Values of globals at initialization st ∈ {0} -tests/slicing/sizeof.c:93:[value] assertion got status valid. +tests/slicing/sizeof.i:93:[value] assertion got status valid. [value] computing for function SizeOf_1 <- main. - Called from tests/slicing/sizeof.c:94. + Called from tests/slicing/sizeof.i:94. [value] Recording results for SizeOf_1 [value] Done for function SizeOf_1 [value] computing for function SizeOf_2 <- main. - Called from tests/slicing/sizeof.c:95. + Called from tests/slicing/sizeof.i:95. [value] Recording results for SizeOf_2 [value] Done for function SizeOf_2 [value] computing for function SizeOfE_pt1 <- main. - Called from tests/slicing/sizeof.c:96. + Called from tests/slicing/sizeof.i:96. [value] Recording results for SizeOfE_pt1 [value] Done for function SizeOfE_pt1 [value] computing for function SizeOfE_pt2 <- main. - Called from tests/slicing/sizeof.c:97. + Called from tests/slicing/sizeof.i:97. [value] Recording results for SizeOfE_pt2 [value] Done for function SizeOfE_pt2 [value] computing for function SizeOfE_pt3 <- main. - Called from tests/slicing/sizeof.c:98. + Called from tests/slicing/sizeof.i:98. [value] Recording results for SizeOfE_pt3 [value] Done for function SizeOfE_pt3 [value] computing for function SizeOfE_pt_deref_1 <- main. - Called from tests/slicing/sizeof.c:99. + Called from tests/slicing/sizeof.i:99. [value] Recording results for SizeOfE_pt_deref_1 [value] Done for function SizeOfE_pt_deref_1 [value] computing for function SizeOfE_tab_1 <- main. - Called from tests/slicing/sizeof.c:100. + Called from tests/slicing/sizeof.i:100. [value] Recording results for SizeOfE_tab_1 [value] Done for function SizeOfE_tab_1 [value] computing for function SizeOfE_pt_tab_1 <- main. - Called from tests/slicing/sizeof.c:101. + Called from tests/slicing/sizeof.i:101. [value] Recording results for SizeOfE_pt_tab_1 [value] Done for function SizeOfE_pt_tab_1 [value] computing for function SizeOfE_pt_tab_2 <- main. - Called from tests/slicing/sizeof.c:102. + Called from tests/slicing/sizeof.i:102. [value] Recording results for SizeOfE_pt_tab_2 [value] Done for function SizeOfE_pt_tab_2 [value] computing for function SizeOfE_tab_acces_1 <- main. - Called from tests/slicing/sizeof.c:103. + Called from tests/slicing/sizeof.i:103. [value] Recording results for SizeOfE_tab_acces_1 [value] Done for function SizeOfE_tab_acces_1 [value] Recording results for main @@ -124,3 +124,5 @@ unsigned int SizeOf_2_slice_1(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_2_sizeof.i (no preprocessing) diff --git a/tests/slicing/oracle/sizeof.3.res.oracle b/tests/slicing/oracle/sizeof.3.res.oracle index 611e4edf60b7f8b2986de0b8fd2a1950f473f9f6..c4784e1ba11df3baf9f9f3d35f85e6e9d6acb004 100644 --- a/tests/slicing/oracle/sizeof.3.res.oracle +++ b/tests/slicing/oracle/sizeof.3.res.oracle @@ -1,49 +1,49 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/sizeof.c (with preprocessing) +[kernel] Parsing tests/slicing/sizeof.i (no preprocessing) [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed [value:initial-state] Values of globals at initialization st ∈ {0} -tests/slicing/sizeof.c:93:[value] assertion got status valid. +tests/slicing/sizeof.i:93:[value] assertion got status valid. [value] computing for function SizeOf_1 <- main. - Called from tests/slicing/sizeof.c:94. + Called from tests/slicing/sizeof.i:94. [value] Recording results for SizeOf_1 [value] Done for function SizeOf_1 [value] computing for function SizeOf_2 <- main. - Called from tests/slicing/sizeof.c:95. + Called from tests/slicing/sizeof.i:95. [value] Recording results for SizeOf_2 [value] Done for function SizeOf_2 [value] computing for function SizeOfE_pt1 <- main. - Called from tests/slicing/sizeof.c:96. + Called from tests/slicing/sizeof.i:96. [value] Recording results for SizeOfE_pt1 [value] Done for function SizeOfE_pt1 [value] computing for function SizeOfE_pt2 <- main. - Called from tests/slicing/sizeof.c:97. + Called from tests/slicing/sizeof.i:97. [value] Recording results for SizeOfE_pt2 [value] Done for function SizeOfE_pt2 [value] computing for function SizeOfE_pt3 <- main. - Called from tests/slicing/sizeof.c:98. + Called from tests/slicing/sizeof.i:98. [value] Recording results for SizeOfE_pt3 [value] Done for function SizeOfE_pt3 [value] computing for function SizeOfE_pt_deref_1 <- main. - Called from tests/slicing/sizeof.c:99. + Called from tests/slicing/sizeof.i:99. [value] Recording results for SizeOfE_pt_deref_1 [value] Done for function SizeOfE_pt_deref_1 [value] computing for function SizeOfE_tab_1 <- main. - Called from tests/slicing/sizeof.c:100. + Called from tests/slicing/sizeof.i:100. [value] Recording results for SizeOfE_tab_1 [value] Done for function SizeOfE_tab_1 [value] computing for function SizeOfE_pt_tab_1 <- main. - Called from tests/slicing/sizeof.c:101. + Called from tests/slicing/sizeof.i:101. [value] Recording results for SizeOfE_pt_tab_1 [value] Done for function SizeOfE_pt_tab_1 [value] computing for function SizeOfE_pt_tab_2 <- main. - Called from tests/slicing/sizeof.c:102. + Called from tests/slicing/sizeof.i:102. [value] Recording results for SizeOfE_pt_tab_2 [value] Done for function SizeOfE_pt_tab_2 [value] computing for function SizeOfE_tab_acces_1 <- main. - Called from tests/slicing/sizeof.c:103. + Called from tests/slicing/sizeof.i:103. [value] Recording results for SizeOfE_tab_acces_1 [value] Done for function SizeOfE_tab_acces_1 [value] Recording results for main @@ -120,3 +120,5 @@ unsigned int SizeOfE_pt1_slice_1(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_3_sizeof.i (no preprocessing) diff --git a/tests/slicing/oracle/sizeof.4.res.oracle b/tests/slicing/oracle/sizeof.4.res.oracle index 9146a181c170b9a6b96b87daeab44ce634adf5ad..1a13dea1e44bdf4f26ae6e0af888fe1c756daca7 100644 --- a/tests/slicing/oracle/sizeof.4.res.oracle +++ b/tests/slicing/oracle/sizeof.4.res.oracle @@ -1,49 +1,49 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/sizeof.c (with preprocessing) +[kernel] Parsing tests/slicing/sizeof.i (no preprocessing) [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed [value:initial-state] Values of globals at initialization st ∈ {0} -tests/slicing/sizeof.c:93:[value] assertion got status valid. +tests/slicing/sizeof.i:93:[value] assertion got status valid. [value] computing for function SizeOf_1 <- main. - Called from tests/slicing/sizeof.c:94. + Called from tests/slicing/sizeof.i:94. [value] Recording results for SizeOf_1 [value] Done for function SizeOf_1 [value] computing for function SizeOf_2 <- main. - Called from tests/slicing/sizeof.c:95. + Called from tests/slicing/sizeof.i:95. [value] Recording results for SizeOf_2 [value] Done for function SizeOf_2 [value] computing for function SizeOfE_pt1 <- main. - Called from tests/slicing/sizeof.c:96. + Called from tests/slicing/sizeof.i:96. [value] Recording results for SizeOfE_pt1 [value] Done for function SizeOfE_pt1 [value] computing for function SizeOfE_pt2 <- main. - Called from tests/slicing/sizeof.c:97. + Called from tests/slicing/sizeof.i:97. [value] Recording results for SizeOfE_pt2 [value] Done for function SizeOfE_pt2 [value] computing for function SizeOfE_pt3 <- main. - Called from tests/slicing/sizeof.c:98. + Called from tests/slicing/sizeof.i:98. [value] Recording results for SizeOfE_pt3 [value] Done for function SizeOfE_pt3 [value] computing for function SizeOfE_pt_deref_1 <- main. - Called from tests/slicing/sizeof.c:99. + Called from tests/slicing/sizeof.i:99. [value] Recording results for SizeOfE_pt_deref_1 [value] Done for function SizeOfE_pt_deref_1 [value] computing for function SizeOfE_tab_1 <- main. - Called from tests/slicing/sizeof.c:100. + Called from tests/slicing/sizeof.i:100. [value] Recording results for SizeOfE_tab_1 [value] Done for function SizeOfE_tab_1 [value] computing for function SizeOfE_pt_tab_1 <- main. - Called from tests/slicing/sizeof.c:101. + Called from tests/slicing/sizeof.i:101. [value] Recording results for SizeOfE_pt_tab_1 [value] Done for function SizeOfE_pt_tab_1 [value] computing for function SizeOfE_pt_tab_2 <- main. - Called from tests/slicing/sizeof.c:102. + Called from tests/slicing/sizeof.i:102. [value] Recording results for SizeOfE_pt_tab_2 [value] Done for function SizeOfE_pt_tab_2 [value] computing for function SizeOfE_tab_acces_1 <- main. - Called from tests/slicing/sizeof.c:103. + Called from tests/slicing/sizeof.i:103. [value] Recording results for SizeOfE_tab_acces_1 [value] Done for function SizeOfE_tab_acces_1 [value] Recording results for main @@ -120,3 +120,5 @@ unsigned int SizeOfE_pt2_slice_1(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_4_sizeof.i (no preprocessing) diff --git a/tests/slicing/oracle/sizeof.5.res.oracle b/tests/slicing/oracle/sizeof.5.res.oracle index e85e02ea5b442294b0451c01707ead6ffed6cf54..efbbfdcf72872860faadbaedc8cecdc19d965032 100644 --- a/tests/slicing/oracle/sizeof.5.res.oracle +++ b/tests/slicing/oracle/sizeof.5.res.oracle @@ -1,49 +1,49 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/sizeof.c (with preprocessing) +[kernel] Parsing tests/slicing/sizeof.i (no preprocessing) [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed [value:initial-state] Values of globals at initialization st ∈ {0} -tests/slicing/sizeof.c:93:[value] assertion got status valid. +tests/slicing/sizeof.i:93:[value] assertion got status valid. [value] computing for function SizeOf_1 <- main. - Called from tests/slicing/sizeof.c:94. + Called from tests/slicing/sizeof.i:94. [value] Recording results for SizeOf_1 [value] Done for function SizeOf_1 [value] computing for function SizeOf_2 <- main. - Called from tests/slicing/sizeof.c:95. + Called from tests/slicing/sizeof.i:95. [value] Recording results for SizeOf_2 [value] Done for function SizeOf_2 [value] computing for function SizeOfE_pt1 <- main. - Called from tests/slicing/sizeof.c:96. + Called from tests/slicing/sizeof.i:96. [value] Recording results for SizeOfE_pt1 [value] Done for function SizeOfE_pt1 [value] computing for function SizeOfE_pt2 <- main. - Called from tests/slicing/sizeof.c:97. + Called from tests/slicing/sizeof.i:97. [value] Recording results for SizeOfE_pt2 [value] Done for function SizeOfE_pt2 [value] computing for function SizeOfE_pt3 <- main. - Called from tests/slicing/sizeof.c:98. + Called from tests/slicing/sizeof.i:98. [value] Recording results for SizeOfE_pt3 [value] Done for function SizeOfE_pt3 [value] computing for function SizeOfE_pt_deref_1 <- main. - Called from tests/slicing/sizeof.c:99. + Called from tests/slicing/sizeof.i:99. [value] Recording results for SizeOfE_pt_deref_1 [value] Done for function SizeOfE_pt_deref_1 [value] computing for function SizeOfE_tab_1 <- main. - Called from tests/slicing/sizeof.c:100. + Called from tests/slicing/sizeof.i:100. [value] Recording results for SizeOfE_tab_1 [value] Done for function SizeOfE_tab_1 [value] computing for function SizeOfE_pt_tab_1 <- main. - Called from tests/slicing/sizeof.c:101. + Called from tests/slicing/sizeof.i:101. [value] Recording results for SizeOfE_pt_tab_1 [value] Done for function SizeOfE_pt_tab_1 [value] computing for function SizeOfE_pt_tab_2 <- main. - Called from tests/slicing/sizeof.c:102. + Called from tests/slicing/sizeof.i:102. [value] Recording results for SizeOfE_pt_tab_2 [value] Done for function SizeOfE_pt_tab_2 [value] computing for function SizeOfE_tab_acces_1 <- main. - Called from tests/slicing/sizeof.c:103. + Called from tests/slicing/sizeof.i:103. [value] Recording results for SizeOfE_tab_acces_1 [value] Done for function SizeOfE_tab_acces_1 [value] Recording results for main @@ -121,3 +121,5 @@ unsigned int SizeOfE_pt3_slice_1(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_5_sizeof.i (no preprocessing) diff --git a/tests/slicing/oracle/sizeof.6.res.oracle b/tests/slicing/oracle/sizeof.6.res.oracle index f8cffdc7aced352277068f1b409a6a78a78f693d..b764c711854d29f614f9b577046029ae665160e8 100644 --- a/tests/slicing/oracle/sizeof.6.res.oracle +++ b/tests/slicing/oracle/sizeof.6.res.oracle @@ -1,49 +1,49 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/sizeof.c (with preprocessing) +[kernel] Parsing tests/slicing/sizeof.i (no preprocessing) [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed [value:initial-state] Values of globals at initialization st ∈ {0} -tests/slicing/sizeof.c:93:[value] assertion got status valid. +tests/slicing/sizeof.i:93:[value] assertion got status valid. [value] computing for function SizeOf_1 <- main. - Called from tests/slicing/sizeof.c:94. + Called from tests/slicing/sizeof.i:94. [value] Recording results for SizeOf_1 [value] Done for function SizeOf_1 [value] computing for function SizeOf_2 <- main. - Called from tests/slicing/sizeof.c:95. + Called from tests/slicing/sizeof.i:95. [value] Recording results for SizeOf_2 [value] Done for function SizeOf_2 [value] computing for function SizeOfE_pt1 <- main. - Called from tests/slicing/sizeof.c:96. + Called from tests/slicing/sizeof.i:96. [value] Recording results for SizeOfE_pt1 [value] Done for function SizeOfE_pt1 [value] computing for function SizeOfE_pt2 <- main. - Called from tests/slicing/sizeof.c:97. + Called from tests/slicing/sizeof.i:97. [value] Recording results for SizeOfE_pt2 [value] Done for function SizeOfE_pt2 [value] computing for function SizeOfE_pt3 <- main. - Called from tests/slicing/sizeof.c:98. + Called from tests/slicing/sizeof.i:98. [value] Recording results for SizeOfE_pt3 [value] Done for function SizeOfE_pt3 [value] computing for function SizeOfE_pt_deref_1 <- main. - Called from tests/slicing/sizeof.c:99. + Called from tests/slicing/sizeof.i:99. [value] Recording results for SizeOfE_pt_deref_1 [value] Done for function SizeOfE_pt_deref_1 [value] computing for function SizeOfE_tab_1 <- main. - Called from tests/slicing/sizeof.c:100. + Called from tests/slicing/sizeof.i:100. [value] Recording results for SizeOfE_tab_1 [value] Done for function SizeOfE_tab_1 [value] computing for function SizeOfE_pt_tab_1 <- main. - Called from tests/slicing/sizeof.c:101. + Called from tests/slicing/sizeof.i:101. [value] Recording results for SizeOfE_pt_tab_1 [value] Done for function SizeOfE_pt_tab_1 [value] computing for function SizeOfE_pt_tab_2 <- main. - Called from tests/slicing/sizeof.c:102. + Called from tests/slicing/sizeof.i:102. [value] Recording results for SizeOfE_pt_tab_2 [value] Done for function SizeOfE_pt_tab_2 [value] computing for function SizeOfE_tab_acces_1 <- main. - Called from tests/slicing/sizeof.c:103. + Called from tests/slicing/sizeof.i:103. [value] Recording results for SizeOfE_tab_acces_1 [value] Done for function SizeOfE_tab_acces_1 [value] Recording results for main @@ -121,3 +121,5 @@ unsigned int SizeOfE_pt_deref_1_slice_1(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_6_sizeof.i (no preprocessing) diff --git a/tests/slicing/oracle/sizeof.7.res.oracle b/tests/slicing/oracle/sizeof.7.res.oracle index d3e193785c6da7f5dd76bfa556fa885373f3a426..5dc8db618aa2eed1a076c0658234165ce16cd8ad 100644 --- a/tests/slicing/oracle/sizeof.7.res.oracle +++ b/tests/slicing/oracle/sizeof.7.res.oracle @@ -1,49 +1,49 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/sizeof.c (with preprocessing) +[kernel] Parsing tests/slicing/sizeof.i (no preprocessing) [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed [value:initial-state] Values of globals at initialization st ∈ {0} -tests/slicing/sizeof.c:93:[value] assertion got status valid. +tests/slicing/sizeof.i:93:[value] assertion got status valid. [value] computing for function SizeOf_1 <- main. - Called from tests/slicing/sizeof.c:94. + Called from tests/slicing/sizeof.i:94. [value] Recording results for SizeOf_1 [value] Done for function SizeOf_1 [value] computing for function SizeOf_2 <- main. - Called from tests/slicing/sizeof.c:95. + Called from tests/slicing/sizeof.i:95. [value] Recording results for SizeOf_2 [value] Done for function SizeOf_2 [value] computing for function SizeOfE_pt1 <- main. - Called from tests/slicing/sizeof.c:96. + Called from tests/slicing/sizeof.i:96. [value] Recording results for SizeOfE_pt1 [value] Done for function SizeOfE_pt1 [value] computing for function SizeOfE_pt2 <- main. - Called from tests/slicing/sizeof.c:97. + Called from tests/slicing/sizeof.i:97. [value] Recording results for SizeOfE_pt2 [value] Done for function SizeOfE_pt2 [value] computing for function SizeOfE_pt3 <- main. - Called from tests/slicing/sizeof.c:98. + Called from tests/slicing/sizeof.i:98. [value] Recording results for SizeOfE_pt3 [value] Done for function SizeOfE_pt3 [value] computing for function SizeOfE_pt_deref_1 <- main. - Called from tests/slicing/sizeof.c:99. + Called from tests/slicing/sizeof.i:99. [value] Recording results for SizeOfE_pt_deref_1 [value] Done for function SizeOfE_pt_deref_1 [value] computing for function SizeOfE_tab_1 <- main. - Called from tests/slicing/sizeof.c:100. + Called from tests/slicing/sizeof.i:100. [value] Recording results for SizeOfE_tab_1 [value] Done for function SizeOfE_tab_1 [value] computing for function SizeOfE_pt_tab_1 <- main. - Called from tests/slicing/sizeof.c:101. + Called from tests/slicing/sizeof.i:101. [value] Recording results for SizeOfE_pt_tab_1 [value] Done for function SizeOfE_pt_tab_1 [value] computing for function SizeOfE_pt_tab_2 <- main. - Called from tests/slicing/sizeof.c:102. + Called from tests/slicing/sizeof.i:102. [value] Recording results for SizeOfE_pt_tab_2 [value] Done for function SizeOfE_pt_tab_2 [value] computing for function SizeOfE_tab_acces_1 <- main. - Called from tests/slicing/sizeof.c:103. + Called from tests/slicing/sizeof.i:103. [value] Recording results for SizeOfE_tab_acces_1 [value] Done for function SizeOfE_tab_acces_1 [value] Recording results for main @@ -120,3 +120,5 @@ unsigned int SizeOfE_tab_1_slice_1(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_7_sizeof.i (no preprocessing) diff --git a/tests/slicing/oracle/sizeof.8.res.oracle b/tests/slicing/oracle/sizeof.8.res.oracle index 3a4cae6ab296734810537f85493397cf7d30e826..dbcbd31a64925140a44ce408df06b1c1a8ceb962 100644 --- a/tests/slicing/oracle/sizeof.8.res.oracle +++ b/tests/slicing/oracle/sizeof.8.res.oracle @@ -1,49 +1,49 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/sizeof.c (with preprocessing) +[kernel] Parsing tests/slicing/sizeof.i (no preprocessing) [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed [value:initial-state] Values of globals at initialization st ∈ {0} -tests/slicing/sizeof.c:93:[value] assertion got status valid. +tests/slicing/sizeof.i:93:[value] assertion got status valid. [value] computing for function SizeOf_1 <- main. - Called from tests/slicing/sizeof.c:94. + Called from tests/slicing/sizeof.i:94. [value] Recording results for SizeOf_1 [value] Done for function SizeOf_1 [value] computing for function SizeOf_2 <- main. - Called from tests/slicing/sizeof.c:95. + Called from tests/slicing/sizeof.i:95. [value] Recording results for SizeOf_2 [value] Done for function SizeOf_2 [value] computing for function SizeOfE_pt1 <- main. - Called from tests/slicing/sizeof.c:96. + Called from tests/slicing/sizeof.i:96. [value] Recording results for SizeOfE_pt1 [value] Done for function SizeOfE_pt1 [value] computing for function SizeOfE_pt2 <- main. - Called from tests/slicing/sizeof.c:97. + Called from tests/slicing/sizeof.i:97. [value] Recording results for SizeOfE_pt2 [value] Done for function SizeOfE_pt2 [value] computing for function SizeOfE_pt3 <- main. - Called from tests/slicing/sizeof.c:98. + Called from tests/slicing/sizeof.i:98. [value] Recording results for SizeOfE_pt3 [value] Done for function SizeOfE_pt3 [value] computing for function SizeOfE_pt_deref_1 <- main. - Called from tests/slicing/sizeof.c:99. + Called from tests/slicing/sizeof.i:99. [value] Recording results for SizeOfE_pt_deref_1 [value] Done for function SizeOfE_pt_deref_1 [value] computing for function SizeOfE_tab_1 <- main. - Called from tests/slicing/sizeof.c:100. + Called from tests/slicing/sizeof.i:100. [value] Recording results for SizeOfE_tab_1 [value] Done for function SizeOfE_tab_1 [value] computing for function SizeOfE_pt_tab_1 <- main. - Called from tests/slicing/sizeof.c:101. + Called from tests/slicing/sizeof.i:101. [value] Recording results for SizeOfE_pt_tab_1 [value] Done for function SizeOfE_pt_tab_1 [value] computing for function SizeOfE_pt_tab_2 <- main. - Called from tests/slicing/sizeof.c:102. + Called from tests/slicing/sizeof.i:102. [value] Recording results for SizeOfE_pt_tab_2 [value] Done for function SizeOfE_pt_tab_2 [value] computing for function SizeOfE_tab_acces_1 <- main. - Called from tests/slicing/sizeof.c:103. + Called from tests/slicing/sizeof.i:103. [value] Recording results for SizeOfE_tab_acces_1 [value] Done for function SizeOfE_tab_acces_1 [value] Recording results for main @@ -121,3 +121,5 @@ unsigned int SizeOfE_pt_tab_1_slice_1(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_8_sizeof.i (no preprocessing) diff --git a/tests/slicing/oracle/sizeof.9.res.oracle b/tests/slicing/oracle/sizeof.9.res.oracle index 450cba18175b84f08bc48f35e5be4452d213b8fd..f6cb91b232f3e820f0a73f9008555e6072c67a8b 100644 --- a/tests/slicing/oracle/sizeof.9.res.oracle +++ b/tests/slicing/oracle/sizeof.9.res.oracle @@ -1,49 +1,49 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/sizeof.c (with preprocessing) +[kernel] Parsing tests/slicing/sizeof.i (no preprocessing) [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed [value:initial-state] Values of globals at initialization st ∈ {0} -tests/slicing/sizeof.c:93:[value] assertion got status valid. +tests/slicing/sizeof.i:93:[value] assertion got status valid. [value] computing for function SizeOf_1 <- main. - Called from tests/slicing/sizeof.c:94. + Called from tests/slicing/sizeof.i:94. [value] Recording results for SizeOf_1 [value] Done for function SizeOf_1 [value] computing for function SizeOf_2 <- main. - Called from tests/slicing/sizeof.c:95. + Called from tests/slicing/sizeof.i:95. [value] Recording results for SizeOf_2 [value] Done for function SizeOf_2 [value] computing for function SizeOfE_pt1 <- main. - Called from tests/slicing/sizeof.c:96. + Called from tests/slicing/sizeof.i:96. [value] Recording results for SizeOfE_pt1 [value] Done for function SizeOfE_pt1 [value] computing for function SizeOfE_pt2 <- main. - Called from tests/slicing/sizeof.c:97. + Called from tests/slicing/sizeof.i:97. [value] Recording results for SizeOfE_pt2 [value] Done for function SizeOfE_pt2 [value] computing for function SizeOfE_pt3 <- main. - Called from tests/slicing/sizeof.c:98. + Called from tests/slicing/sizeof.i:98. [value] Recording results for SizeOfE_pt3 [value] Done for function SizeOfE_pt3 [value] computing for function SizeOfE_pt_deref_1 <- main. - Called from tests/slicing/sizeof.c:99. + Called from tests/slicing/sizeof.i:99. [value] Recording results for SizeOfE_pt_deref_1 [value] Done for function SizeOfE_pt_deref_1 [value] computing for function SizeOfE_tab_1 <- main. - Called from tests/slicing/sizeof.c:100. + Called from tests/slicing/sizeof.i:100. [value] Recording results for SizeOfE_tab_1 [value] Done for function SizeOfE_tab_1 [value] computing for function SizeOfE_pt_tab_1 <- main. - Called from tests/slicing/sizeof.c:101. + Called from tests/slicing/sizeof.i:101. [value] Recording results for SizeOfE_pt_tab_1 [value] Done for function SizeOfE_pt_tab_1 [value] computing for function SizeOfE_pt_tab_2 <- main. - Called from tests/slicing/sizeof.c:102. + Called from tests/slicing/sizeof.i:102. [value] Recording results for SizeOfE_pt_tab_2 [value] Done for function SizeOfE_pt_tab_2 [value] computing for function SizeOfE_tab_acces_1 <- main. - Called from tests/slicing/sizeof.c:103. + Called from tests/slicing/sizeof.i:103. [value] Recording results for SizeOfE_tab_acces_1 [value] Done for function SizeOfE_tab_acces_1 [value] Recording results for main @@ -121,3 +121,5 @@ unsigned int SizeOfE_pt_tab_2_slice_1(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_9_sizeof.i (no preprocessing) diff --git a/tests/slicing/oracle/slice_behavior.res.oracle b/tests/slicing/oracle/slice_behavior.res.oracle index 7b8b72c32bc01b71886500a967c65a0fe3b139c5..79fe3ed29ea9dd51ca316e804d04bfd141783224 100644 --- a/tests/slicing/oracle/slice_behavior.res.oracle +++ b/tests/slicing/oracle/slice_behavior.res.oracle @@ -1,14 +1,14 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/slice_behavior.c (with preprocessing) +[kernel] Parsing tests/slicing/slice_behavior.i (no preprocessing) [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed [value:initial-state] Values of globals at initialization [value] computing for function f <- main. - Called from tests/slicing/slice_behavior.c:12. -tests/slicing/slice_behavior.c:4:[value] function f: precondition got status valid. -tests/slicing/slice_behavior.c:7:[value] assertion got status valid. + Called from tests/slicing/slice_behavior.i:12. +tests/slicing/slice_behavior.i:4:[value] function f: precondition got status valid. +tests/slicing/slice_behavior.i:7:[value] assertion got status valid. [value] Recording results for f [value] Done for function f [value] Recording results for main @@ -55,3 +55,5 @@ void main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_0_slice_behavior.i (no preprocessing) diff --git a/tests/slicing/oracle/slice_no_body.res.oracle b/tests/slicing/oracle/slice_no_body.res.oracle index d147350b9ef374f2ae42d5c50e4f8df394812817..7cb5ac34809db5b997b4d88a0f0d1b829503993d 100644 --- a/tests/slicing/oracle/slice_no_body.res.oracle +++ b/tests/slicing/oracle/slice_no_body.res.oracle @@ -1,31 +1,31 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/slice_no_body.c (with preprocessing) +[kernel] Parsing tests/slicing/slice_no_body.i (no preprocessing) [value] Analyzing an incomplete application starting at h [value] Computing initial state [value] Initial state computed [value:initial-state] Values of globals at initialization G ∈ [--..--] [value] computing for function f <- h. - Called from tests/slicing/slice_no_body.c:21. -tests/slicing/slice_no_body.c:21:[kernel] warning: Neither code nor specification for function f, generating default assigns from the prototype + Called from tests/slicing/slice_no_body.i:21. +tests/slicing/slice_no_body.i:21:[kernel] warning: Neither code nor specification for function f, generating default assigns from the prototype [value] using specification for function f [value] Done for function f [value] computing for function f <- h. - Called from tests/slicing/slice_no_body.c:22. + Called from tests/slicing/slice_no_body.i:22. [value] Done for function f [value] computing for function f <- h. - Called from tests/slicing/slice_no_body.c:23. + Called from tests/slicing/slice_no_body.i:23. [value] Done for function f [value] computing for function f <- h. - Called from tests/slicing/slice_no_body.c:24. + Called from tests/slicing/slice_no_body.i:24. [value] Done for function f [value] computing for function g <- h. - Called from tests/slicing/slice_no_body.c:26. -tests/slicing/slice_no_body.c:12:[value] warning: signed overflow. assert c+1 ≤ 2147483647; -tests/slicing/slice_no_body.c:13:[value] warning: signed overflow. assert -2147483648 ≤ c*2; -tests/slicing/slice_no_body.c:13:[value] warning: signed overflow. assert c*2 ≤ 2147483647; + Called from tests/slicing/slice_no_body.i:26. +tests/slicing/slice_no_body.i:12:[value] warning: signed overflow. assert c+1 ≤ 2147483647; +tests/slicing/slice_no_body.i:13:[value] warning: signed overflow. assert -2147483648 ≤ c*2; +tests/slicing/slice_no_body.i:13:[value] warning: signed overflow. assert c*2 ≤ 2147483647; [value] computing for function f <- g <- h. - Called from tests/slicing/slice_no_body.c:15. + Called from tests/slicing/slice_no_body.i:15. [value] Done for function f [value] Recording results for g [value] Done for function g diff --git a/tests/slicing/oracle/slice_pragma_stmt.0.res.oracle b/tests/slicing/oracle/slice_pragma_stmt.0.res.oracle index abb591d1246e165b228625b6ebedb792f33968bb..3a47cf198d10e528544b2dede31fc7db1a0a7f32 100644 --- a/tests/slicing/oracle/slice_pragma_stmt.0.res.oracle +++ b/tests/slicing/oracle/slice_pragma_stmt.0.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/slice_pragma_stmt.c (with preprocessing) +[kernel] Parsing tests/slicing/slice_pragma_stmt.i (no preprocessing) /* Generated by Frama-C */ int x; int y; diff --git a/tests/slicing/oracle/slice_pragma_stmt.1.res.oracle b/tests/slicing/oracle/slice_pragma_stmt.1.res.oracle index f482107a8bcf0cdda70dfb57c61de4a542dc0103..a78fc026bf216c3ae05044fff2f14edae5fc78d4 100644 --- a/tests/slicing/oracle/slice_pragma_stmt.1.res.oracle +++ b/tests/slicing/oracle/slice_pragma_stmt.1.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/slice_pragma_stmt.c (with preprocessing) +[kernel] Parsing tests/slicing/slice_pragma_stmt.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at nop1 [value] Computing initial state @@ -31,3 +31,5 @@ void nop1(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_1_slice_pragma_stmt.i (no preprocessing) diff --git a/tests/slicing/oracle/slice_pragma_stmt.10.res.oracle b/tests/slicing/oracle/slice_pragma_stmt.10.res.oracle index ec109b9fb03ec6758b65d8d765c8a7b592835e66..1972ef11c18d1ead1ddfadb6cd82777c847c6466 100644 --- a/tests/slicing/oracle/slice_pragma_stmt.10.res.oracle +++ b/tests/slicing/oracle/slice_pragma_stmt.10.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/slice_pragma_stmt.c (with preprocessing) +[kernel] Parsing tests/slicing/slice_pragma_stmt.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at double_effect2 [value] Computing initial state @@ -41,3 +41,5 @@ void double_effect2(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_10_slice_pragma_stmt.i (no preprocessing) diff --git a/tests/slicing/oracle/slice_pragma_stmt.11.res.oracle b/tests/slicing/oracle/slice_pragma_stmt.11.res.oracle index f9aedce04fc58b7990fada4308976bc03e690aa3..c2db751af06a5b222769f452c8b6f1d7fc9b3d5d 100644 --- a/tests/slicing/oracle/slice_pragma_stmt.11.res.oracle +++ b/tests/slicing/oracle/slice_pragma_stmt.11.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/slice_pragma_stmt.c (with preprocessing) +[kernel] Parsing tests/slicing/slice_pragma_stmt.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at double_effect3 [value] Computing initial state @@ -39,3 +39,5 @@ void double_effect3(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_11_slice_pragma_stmt.i (no preprocessing) diff --git a/tests/slicing/oracle/slice_pragma_stmt.12.res.oracle b/tests/slicing/oracle/slice_pragma_stmt.12.res.oracle index cef975a3a89af03989ed6fadbbc4bf0ba7a9aa52..eaa354108806980fd89317c55e536cddbb390932 100644 --- a/tests/slicing/oracle/slice_pragma_stmt.12.res.oracle +++ b/tests/slicing/oracle/slice_pragma_stmt.12.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/slice_pragma_stmt.c (with preprocessing) +[kernel] Parsing tests/slicing/slice_pragma_stmt.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at double_effect4 [value] Computing initial state @@ -41,3 +41,5 @@ void double_effect4(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_12_slice_pragma_stmt.i (no preprocessing) diff --git a/tests/slicing/oracle/slice_pragma_stmt.13.res.oracle b/tests/slicing/oracle/slice_pragma_stmt.13.res.oracle index 31f1865fa69958ced0e670a87907969ced9e3e4a..8f2f46d4ecd77ef26c462bbbfb338f9f4adc3f16 100644 --- a/tests/slicing/oracle/slice_pragma_stmt.13.res.oracle +++ b/tests/slicing/oracle/slice_pragma_stmt.13.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/slice_pragma_stmt.c (with preprocessing) +[kernel] Parsing tests/slicing/slice_pragma_stmt.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at double_effect5 [value] Computing initial state @@ -43,3 +43,5 @@ void double_effect5(int c2) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_13_slice_pragma_stmt.i (no preprocessing) diff --git a/tests/slicing/oracle/slice_pragma_stmt.14.res.oracle b/tests/slicing/oracle/slice_pragma_stmt.14.res.oracle index 7e196e80af2041d4d71ab0b42003d1728e2c9e57..02b76ba4dea14dcfb7b6bb27ad74e4613ada66c9 100644 --- a/tests/slicing/oracle/slice_pragma_stmt.14.res.oracle +++ b/tests/slicing/oracle/slice_pragma_stmt.14.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/slice_pragma_stmt.c (with preprocessing) +[kernel] Parsing tests/slicing/slice_pragma_stmt.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at test1 [value] Computing initial state @@ -34,3 +34,5 @@ void test1(int c1, int c2) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_14_slice_pragma_stmt.i (no preprocessing) diff --git a/tests/slicing/oracle/slice_pragma_stmt.15.res.oracle b/tests/slicing/oracle/slice_pragma_stmt.15.res.oracle index e2a8472106d3baecf8eea3deaf0fbbe40829af7a..c90d622ea3e25ec90e2708a2322f08e7ecb42936 100644 --- a/tests/slicing/oracle/slice_pragma_stmt.15.res.oracle +++ b/tests/slicing/oracle/slice_pragma_stmt.15.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/slice_pragma_stmt.c (with preprocessing) +[kernel] Parsing tests/slicing/slice_pragma_stmt.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at test2 [value] Computing initial state @@ -34,3 +34,5 @@ void test2(int c1, int c2) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_15_slice_pragma_stmt.i (no preprocessing) diff --git a/tests/slicing/oracle/slice_pragma_stmt.16.res.oracle b/tests/slicing/oracle/slice_pragma_stmt.16.res.oracle index e564516031d549b61b3402fb8df6e49bd1fa7f0d..b2ea4c5a85e2b53d7187e1ae50d1fa09a8300179 100644 --- a/tests/slicing/oracle/slice_pragma_stmt.16.res.oracle +++ b/tests/slicing/oracle/slice_pragma_stmt.16.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/slice_pragma_stmt.c (with preprocessing) +[kernel] Parsing tests/slicing/slice_pragma_stmt.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at test3 [value] Computing initial state @@ -34,3 +34,5 @@ void test3(int c1, int c2) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_16_slice_pragma_stmt.i (no preprocessing) diff --git a/tests/slicing/oracle/slice_pragma_stmt.17.res.oracle b/tests/slicing/oracle/slice_pragma_stmt.17.res.oracle index 474b2452a0bdfc8994c0751bdfffbaa21a0bf884..d6f6f0335e4a8f7b884853ad5743ecb26cf38c07 100644 --- a/tests/slicing/oracle/slice_pragma_stmt.17.res.oracle +++ b/tests/slicing/oracle/slice_pragma_stmt.17.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/slice_pragma_stmt.c (with preprocessing) +[kernel] Parsing tests/slicing/slice_pragma_stmt.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at test4 [value] Computing initial state @@ -7,7 +7,7 @@ [value:initial-state] Values of globals at initialization x ∈ {0} y ∈ {0} -tests/slicing/slice_pragma_stmt.c:120:[value] warning: signed overflow. assert c2+1 ≤ 2147483647; +tests/slicing/slice_pragma_stmt.i:120:[value] warning: signed overflow. assert c2+1 ≤ 2147483647; [value] Recording results for test4 [value] done for function test4 [slicing] making slicing project 'Slicing'... @@ -38,3 +38,5 @@ void test4(int c1, int c2) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_17_slice_pragma_stmt.i (no preprocessing) diff --git a/tests/slicing/oracle/slice_pragma_stmt.18.res.oracle b/tests/slicing/oracle/slice_pragma_stmt.18.res.oracle index 18eb3682727a2becd493cfcb9bf9ce34f8172c9c..48f09d128f66cf1f2b7ae112957c839dd9d0ed0e 100644 --- a/tests/slicing/oracle/slice_pragma_stmt.18.res.oracle +++ b/tests/slicing/oracle/slice_pragma_stmt.18.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/slice_pragma_stmt.c (with preprocessing) +[kernel] Parsing tests/slicing/slice_pragma_stmt.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at test5 [value] Computing initial state @@ -35,3 +35,5 @@ void test5(int c1, int c2) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_18_slice_pragma_stmt.i (no preprocessing) diff --git a/tests/slicing/oracle/slice_pragma_stmt.19.res.oracle b/tests/slicing/oracle/slice_pragma_stmt.19.res.oracle index 0ef31972bd50bf7efcb64106f07f364544f37dd7..a250210c5f4cee5f591786b6c215f2f1fca4375b 100644 --- a/tests/slicing/oracle/slice_pragma_stmt.19.res.oracle +++ b/tests/slicing/oracle/slice_pragma_stmt.19.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/slice_pragma_stmt.c (with preprocessing) +[kernel] Parsing tests/slicing/slice_pragma_stmt.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at test6 [value] Computing initial state @@ -7,7 +7,7 @@ [value:initial-state] Values of globals at initialization x ∈ {0} y ∈ {0} -tests/slicing/slice_pragma_stmt.c:136:[value] warning: signed overflow. assert c1+1 ≤ 2147483647; +tests/slicing/slice_pragma_stmt.i:136:[value] warning: signed overflow. assert c1+1 ≤ 2147483647; [value] Recording results for test6 [value] done for function test6 [slicing] making slicing project 'Slicing'... @@ -41,3 +41,5 @@ void test6(int c1, int c2) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_19_slice_pragma_stmt.i (no preprocessing) diff --git a/tests/slicing/oracle/slice_pragma_stmt.2.res.oracle b/tests/slicing/oracle/slice_pragma_stmt.2.res.oracle index 1721c0b774020dcffa66040f23d3a03c74447835..073c9cdf5de935496ce957932db6903449dc97ea 100644 --- a/tests/slicing/oracle/slice_pragma_stmt.2.res.oracle +++ b/tests/slicing/oracle/slice_pragma_stmt.2.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/slice_pragma_stmt.c (with preprocessing) +[kernel] Parsing tests/slicing/slice_pragma_stmt.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at nop2 [value] Computing initial state @@ -31,3 +31,5 @@ void nop2(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_2_slice_pragma_stmt.i (no preprocessing) diff --git a/tests/slicing/oracle/slice_pragma_stmt.20.res.oracle b/tests/slicing/oracle/slice_pragma_stmt.20.res.oracle index f4b0e88d158b82ef9b430a0b4a105f2de45d1d2d..52d572b2686e882c50815de7e0b0b1438720be44 100644 --- a/tests/slicing/oracle/slice_pragma_stmt.20.res.oracle +++ b/tests/slicing/oracle/slice_pragma_stmt.20.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/slice_pragma_stmt.c (with preprocessing) +[kernel] Parsing tests/slicing/slice_pragma_stmt.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at test7 [value] Computing initial state @@ -7,8 +7,8 @@ [value:initial-state] Values of globals at initialization x ∈ {0} y ∈ {0} -tests/slicing/slice_pragma_stmt.c:144:[value] warning: signed overflow. assert c1+1 ≤ 2147483647; -tests/slicing/slice_pragma_stmt.c:144:[value] warning: signed overflow. assert c2+1 ≤ 2147483647; +tests/slicing/slice_pragma_stmt.i:144:[value] warning: signed overflow. assert c1+1 ≤ 2147483647; +tests/slicing/slice_pragma_stmt.i:144:[value] warning: signed overflow. assert c2+1 ≤ 2147483647; [value] Recording results for test7 [value] done for function test7 [slicing] making slicing project 'Slicing'... @@ -46,3 +46,5 @@ void test7(int c1, int c2) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_20_slice_pragma_stmt.i (no preprocessing) diff --git a/tests/slicing/oracle/slice_pragma_stmt.21.res.oracle b/tests/slicing/oracle/slice_pragma_stmt.21.res.oracle index e7a5078894e7842bce467920cc3fd0a643f09956..29e0573e04df7197ff01d568cb15e32bfa0a13a2 100644 --- a/tests/slicing/oracle/slice_pragma_stmt.21.res.oracle +++ b/tests/slicing/oracle/slice_pragma_stmt.21.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/slice_pragma_stmt.c (with preprocessing) +[kernel] Parsing tests/slicing/slice_pragma_stmt.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at test8 [value] Computing initial state @@ -7,8 +7,8 @@ [value:initial-state] Values of globals at initialization x ∈ {0} y ∈ {0} -tests/slicing/slice_pragma_stmt.c:152:[value] warning: signed overflow. assert c1+1 ≤ 2147483647; -tests/slicing/slice_pragma_stmt.c:152:[value] warning: signed overflow. assert c2+1 ≤ 2147483647; +tests/slicing/slice_pragma_stmt.i:152:[value] warning: signed overflow. assert c1+1 ≤ 2147483647; +tests/slicing/slice_pragma_stmt.i:152:[value] warning: signed overflow. assert c2+1 ≤ 2147483647; [value] Recording results for test8 [value] done for function test8 [slicing] making slicing project 'Slicing'... @@ -45,3 +45,5 @@ void test8(int c1, int c2) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_21_slice_pragma_stmt.i (no preprocessing) diff --git a/tests/slicing/oracle/slice_pragma_stmt.22.res.oracle b/tests/slicing/oracle/slice_pragma_stmt.22.res.oracle index eb46e71817d6581beae3e3e6cc594e93b20bbd24..8b1ccb77f1a231c60f98be29f9ee7f207903ecc5 100644 --- a/tests/slicing/oracle/slice_pragma_stmt.22.res.oracle +++ b/tests/slicing/oracle/slice_pragma_stmt.22.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/slice_pragma_stmt.c (with preprocessing) +[kernel] Parsing tests/slicing/slice_pragma_stmt.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at test9 [value] Computing initial state @@ -7,7 +7,7 @@ [value:initial-state] Values of globals at initialization x ∈ {0} y ∈ {0} -tests/slicing/slice_pragma_stmt.c:160:[value] warning: signed overflow. assert c2+1 ≤ 2147483647; +tests/slicing/slice_pragma_stmt.i:160:[value] warning: signed overflow. assert c2+1 ≤ 2147483647; [value] Recording results for test9 [value] done for function test9 [slicing] making slicing project 'Slicing'... @@ -39,3 +39,5 @@ void test9(int c1, int c2) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_22_slice_pragma_stmt.i (no preprocessing) diff --git a/tests/slicing/oracle/slice_pragma_stmt.3.res.oracle b/tests/slicing/oracle/slice_pragma_stmt.3.res.oracle index a9b08d57522c30ee3c6b1a087133d9ef2b05aec6..a8404ec1c70ec81105cab8c98e46f87281493fec 100644 --- a/tests/slicing/oracle/slice_pragma_stmt.3.res.oracle +++ b/tests/slicing/oracle/slice_pragma_stmt.3.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/slice_pragma_stmt.c (with preprocessing) +[kernel] Parsing tests/slicing/slice_pragma_stmt.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at nop3 [value] Computing initial state @@ -31,3 +31,5 @@ void nop3(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_3_slice_pragma_stmt.i (no preprocessing) diff --git a/tests/slicing/oracle/slice_pragma_stmt.4.res.oracle b/tests/slicing/oracle/slice_pragma_stmt.4.res.oracle index 64d4adb1bcdc99d3c4490ea670e106fe02d19032..53ebd5a8e098a4101bf62850858c157ad9e7394d 100644 --- a/tests/slicing/oracle/slice_pragma_stmt.4.res.oracle +++ b/tests/slicing/oracle/slice_pragma_stmt.4.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/slice_pragma_stmt.c (with preprocessing) +[kernel] Parsing tests/slicing/slice_pragma_stmt.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at nop4 [value] Computing initial state @@ -31,3 +31,5 @@ void nop4(int c1) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_4_slice_pragma_stmt.i (no preprocessing) diff --git a/tests/slicing/oracle/slice_pragma_stmt.5.res.oracle b/tests/slicing/oracle/slice_pragma_stmt.5.res.oracle index 7b75a570c3061fe0692d900ff7de47a31bc0d807..f342001a875be27dbc46ebbc54bfa22fe4f7067a 100644 --- a/tests/slicing/oracle/slice_pragma_stmt.5.res.oracle +++ b/tests/slicing/oracle/slice_pragma_stmt.5.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/slice_pragma_stmt.c (with preprocessing) +[kernel] Parsing tests/slicing/slice_pragma_stmt.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at nop5 [value] Computing initial state @@ -31,3 +31,5 @@ void nop5(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_5_slice_pragma_stmt.i (no preprocessing) diff --git a/tests/slicing/oracle/slice_pragma_stmt.6.res.oracle b/tests/slicing/oracle/slice_pragma_stmt.6.res.oracle index 551c97119e81b4ad4617a79b804bc1f84e33275d..bfbe3425eb67bb549dd05a8f6131246d926a9134 100644 --- a/tests/slicing/oracle/slice_pragma_stmt.6.res.oracle +++ b/tests/slicing/oracle/slice_pragma_stmt.6.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/slice_pragma_stmt.c (with preprocessing) +[kernel] Parsing tests/slicing/slice_pragma_stmt.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at nop6 [value] Computing initial state @@ -31,3 +31,5 @@ void nop6(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_6_slice_pragma_stmt.i (no preprocessing) diff --git a/tests/slicing/oracle/slice_pragma_stmt.7.res.oracle b/tests/slicing/oracle/slice_pragma_stmt.7.res.oracle index 50c00ff20bc0c47a055e116e2933c516c9cdf9d2..20132ce209dedb1c21e4091c9093153ab7e614ff 100644 --- a/tests/slicing/oracle/slice_pragma_stmt.7.res.oracle +++ b/tests/slicing/oracle/slice_pragma_stmt.7.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/slice_pragma_stmt.c (with preprocessing) +[kernel] Parsing tests/slicing/slice_pragma_stmt.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at nop7 [value] Computing initial state @@ -31,3 +31,5 @@ void nop7(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_7_slice_pragma_stmt.i (no preprocessing) diff --git a/tests/slicing/oracle/slice_pragma_stmt.8.res.oracle b/tests/slicing/oracle/slice_pragma_stmt.8.res.oracle index 10df1c3c9469fbc4fb50ab467f8b134f3ae13d4b..561638c4f35edaab8d4ee143eef5c1edc4775584 100644 --- a/tests/slicing/oracle/slice_pragma_stmt.8.res.oracle +++ b/tests/slicing/oracle/slice_pragma_stmt.8.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/slice_pragma_stmt.c (with preprocessing) +[kernel] Parsing tests/slicing/slice_pragma_stmt.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at nop8 [value] Computing initial state @@ -31,3 +31,5 @@ void nop8(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_8_slice_pragma_stmt.i (no preprocessing) diff --git a/tests/slicing/oracle/slice_pragma_stmt.9.res.oracle b/tests/slicing/oracle/slice_pragma_stmt.9.res.oracle index 6c11e34f433b2a8b58f474dfd1962691be110ca9..95b6a6e2bcf38bb2cfde2901309d95343bed2149 100644 --- a/tests/slicing/oracle/slice_pragma_stmt.9.res.oracle +++ b/tests/slicing/oracle/slice_pragma_stmt.9.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/slice_pragma_stmt.c (with preprocessing) +[kernel] Parsing tests/slicing/slice_pragma_stmt.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at double_effect1 [value] Computing initial state @@ -39,3 +39,5 @@ void double_effect1(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_9_slice_pragma_stmt.i (no preprocessing) diff --git a/tests/slicing/oracle/switch.res.oracle b/tests/slicing/oracle/switch.res.oracle index c13cc5b815fedc8e03a1c95ef654e0ae41fe4d92..d8057e7834d9247a89790cb6ae7258c7984b3838 100644 --- a/tests/slicing/oracle/switch.res.oracle +++ b/tests/slicing/oracle/switch.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/switch.c (with preprocessing) +[kernel] Parsing tests/slicing/switch.i (no preprocessing) [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed diff --git a/tests/slicing/oracle/top.0.res.oracle b/tests/slicing/oracle/top.0.res.oracle index 92adf0211e50d931a1711800d8ccb1da4eec4529..c5fff81ead2a068facd5b026f741430bce18bce0 100644 --- a/tests/slicing/oracle/top.0.res.oracle +++ b/tests/slicing/oracle/top.0.res.oracle @@ -1,17 +1,17 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/top.c (with preprocessing) +[kernel] Parsing tests/slicing/top.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed [value:initial-state] Values of globals at initialization -tests/slicing/top.c:27:[value] warning: out of bounds read. assert \valid_read(p_str+i); +tests/slicing/top.i:27:[value] warning: out of bounds read. assert \valid_read(p_str+i); [value] computing for function strlen <- main. - Called from tests/slicing/top.c:27. -tests/slicing/top.c:21:[value] entering loop for the first time -tests/slicing/top.c:21:[value] warning: out of bounds read. assert \valid_read(q); -tests/slicing/top.c:21:[value] warning: signed overflow. assert k+1 ≤ 2147483647; + Called from tests/slicing/top.i:27. +tests/slicing/top.i:21:[value] entering loop for the first time +tests/slicing/top.i:21:[value] warning: out of bounds read. assert \valid_read(q); +tests/slicing/top.i:21:[value] warning: signed overflow. assert k+1 ≤ 2147483647; [value] Recording results for strlen [value] Done for function strlen [value] Recording results for main @@ -34,3 +34,5 @@ tests/slicing/top.c:21:[value] warning: signed overflow. assert k+1 ≤ 21474836 [sparecode] removed unused global declarations in new project 'Slicing export' /* Generated by Frama-C */ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_0_top.i (no preprocessing) diff --git a/tests/slicing/oracle/top.1.res.oracle b/tests/slicing/oracle/top.1.res.oracle index 6ed925f78a559d49e2ef0c41f1e8ee61cc971050..d0ddc6d6f3d7276872b65bd2e54206f5b583ff44 100644 --- a/tests/slicing/oracle/top.1.res.oracle +++ b/tests/slicing/oracle/top.1.res.oracle @@ -1,17 +1,17 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/top.c (with preprocessing) +[kernel] Parsing tests/slicing/top.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed [value:initial-state] Values of globals at initialization -tests/slicing/top.c:27:[value] warning: out of bounds read. assert \valid_read(p_str+i); +tests/slicing/top.i:27:[value] warning: out of bounds read. assert \valid_read(p_str+i); [value] computing for function strlen <- main. - Called from tests/slicing/top.c:27. -tests/slicing/top.c:21:[value] entering loop for the first time -tests/slicing/top.c:21:[value] warning: out of bounds read. assert \valid_read(q); -tests/slicing/top.c:21:[value] warning: signed overflow. assert k+1 ≤ 2147483647; + Called from tests/slicing/top.i:27. +tests/slicing/top.i:21:[value] entering loop for the first time +tests/slicing/top.i:21:[value] warning: out of bounds read. assert \valid_read(q); +tests/slicing/top.i:21:[value] warning: signed overflow. assert k+1 ≤ 2147483647; [value] Recording results for strlen [value] Done for function strlen [value] Recording results for main @@ -56,3 +56,5 @@ int main(char **p_str, int i) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_1_top.i (no preprocessing) diff --git a/tests/slicing/oracle/top.2.res.oracle b/tests/slicing/oracle/top.2.res.oracle index 362a58be8ac27f956120d8c4094dbf3fd8683b1b..22ce18369f7feacc8ab7ec69f5beb1e15f4f1d13 100644 --- a/tests/slicing/oracle/top.2.res.oracle +++ b/tests/slicing/oracle/top.2.res.oracle @@ -1,17 +1,17 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/top.c (with preprocessing) +[kernel] Parsing tests/slicing/top.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed [value:initial-state] Values of globals at initialization -tests/slicing/top.c:27:[value] warning: out of bounds read. assert \valid_read(p_str+i); +tests/slicing/top.i:27:[value] warning: out of bounds read. assert \valid_read(p_str+i); [value] computing for function strlen <- main. - Called from tests/slicing/top.c:27. -tests/slicing/top.c:21:[value] entering loop for the first time -tests/slicing/top.c:21:[value] warning: out of bounds read. assert \valid_read(q); -tests/slicing/top.c:21:[value] warning: signed overflow. assert k+1 ≤ 2147483647; + Called from tests/slicing/top.i:27. +tests/slicing/top.i:21:[value] entering loop for the first time +tests/slicing/top.i:21:[value] warning: out of bounds read. assert \valid_read(q); +tests/slicing/top.i:21:[value] warning: signed overflow. assert k+1 ≤ 2147483647; [value] Recording results for strlen [value] Done for function strlen [value] Recording results for main @@ -55,3 +55,5 @@ void main(char **p_str, int i) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_2_top.i (no preprocessing) diff --git a/tests/slicing/oracle/top2.0.res.oracle b/tests/slicing/oracle/top2.0.res.oracle index 702048a187f93e207d43138a0b68b12e824fe8fa..fabd3a1ff33b9591f9bdce38019f19dbf6a36d11 100644 --- a/tests/slicing/oracle/top2.0.res.oracle +++ b/tests/slicing/oracle/top2.0.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/top2.c (with preprocessing) +[kernel] Parsing tests/slicing/top2.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at main [value] Computing initial state @@ -11,9 +11,9 @@ X ∈ {0} S ∈ {0} [value] computing for function f <- main. - Called from tests/slicing/top2.c:24. -tests/slicing/top2.c:16:[value] warning: accessing out of bounds index. assert 0 ≤ i; -tests/slicing/top2.c:16:[value] warning: accessing out of bounds index. assert i < 2; + Called from tests/slicing/top2.i:24. +tests/slicing/top2.i:16:[value] warning: accessing out of bounds index. assert 0 ≤ i; +tests/slicing/top2.i:16:[value] warning: accessing out of bounds index. assert i < 2; [value] Recording results for f [value] Done for function f [value] Recording results for main @@ -54,3 +54,5 @@ void main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_0_top2.i (no preprocessing) diff --git a/tests/slicing/oracle/top2.1.res.oracle b/tests/slicing/oracle/top2.1.res.oracle index 64f81e1d0cfb07ec516a0d644ab1e67641c1901a..cc1a004b910a63f510dff31fb48f0655dd52a341 100644 --- a/tests/slicing/oracle/top2.1.res.oracle +++ b/tests/slicing/oracle/top2.1.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/top2.c (with preprocessing) +[kernel] Parsing tests/slicing/top2.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at main [value] Computing initial state @@ -11,9 +11,9 @@ X ∈ {0} S ∈ {0} [value] computing for function f <- main. - Called from tests/slicing/top2.c:24. -tests/slicing/top2.c:16:[value] warning: accessing out of bounds index. assert 0 ≤ i; -tests/slicing/top2.c:16:[value] warning: accessing out of bounds index. assert i < 2; + Called from tests/slicing/top2.i:24. +tests/slicing/top2.i:16:[value] warning: accessing out of bounds index. assert 0 ≤ i; +tests/slicing/top2.i:16:[value] warning: accessing out of bounds index. assert i < 2; [value] Recording results for f [value] Done for function f [value] Recording results for main @@ -55,3 +55,5 @@ int main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_1_top2.i (no preprocessing) diff --git a/tests/slicing/oracle/undef-fun.res.oracle b/tests/slicing/oracle/undef-fun.res.oracle index 0579df29ad862eacc1d5a4c96d6d65d92e4160fe..509230caf0bbceda0812fce712a3f88718c76942 100644 --- a/tests/slicing/oracle/undef-fun.res.oracle +++ b/tests/slicing/oracle/undef-fun.res.oracle @@ -1,15 +1,15 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/undef-fun.c (with preprocessing) +[kernel] Parsing tests/slicing/undef-fun.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed [value:initial-state] Values of globals at initialization G ∈ {0} -tests/slicing/undef-fun.c:16:[value] warning: signed overflow. assert x+1 ≤ 2147483647; -tests/slicing/undef-fun.c:17:[value] warning: signed overflow. assert y+2 ≤ 2147483647; +tests/slicing/undef-fun.i:16:[value] warning: signed overflow. assert x+1 ≤ 2147483647; +tests/slicing/undef-fun.i:17:[value] warning: signed overflow. assert y+2 ≤ 2147483647; [value] computing for function f <- main. - Called from tests/slicing/undef-fun.c:18. + Called from tests/slicing/undef-fun.i:18. [value] using specification for function f [value] Done for function f [value] Recording results for main @@ -43,3 +43,5 @@ void main(int x) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_0_undef-fun.i (no preprocessing) diff --git a/tests/slicing/oracle/unitialized.0.res.oracle b/tests/slicing/oracle/unitialized.0.res.oracle index 13152feb9385e80ef448ec4bea74ab9336d7fcee..1c4261d0bdf055e4540dca15b46fcfc9869406c1 100644 --- a/tests/slicing/oracle/unitialized.0.res.oracle +++ b/tests/slicing/oracle/unitialized.0.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/unitialized.c (with preprocessing) +[kernel] Parsing tests/slicing/unitialized.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at main [value] Computing initial state @@ -8,28 +8,28 @@ X1 ∈ {0} X2 ∈ {0} [value] computing for function f1 <- main. - Called from tests/slicing/unitialized.c:35. + Called from tests/slicing/unitialized.i:35. [value] Recording results for f1 [value] Done for function f1 [value] computing for function f2 <- main. - Called from tests/slicing/unitialized.c:36. + Called from tests/slicing/unitialized.i:36. [value] Recording results for f2 [value] Done for function f2 [value] computing for function g <- main. - Called from tests/slicing/unitialized.c:37. -tests/slicing/unitialized.c:27:[value] warning: accessing uninitialized left-value. assert \initialized(&y); + Called from tests/slicing/unitialized.i:37. +tests/slicing/unitialized.i:27:[value] warning: accessing uninitialized left-value. assert \initialized(&y); [value] Recording results for g [value] Done for function g [value] Recording results for main [value] done for function main -tests/slicing/unitialized.c:27:[value] assertion 'Value,initialisation' got final status invalid. +tests/slicing/unitialized.i:27:[value] assertion 'Value,initialisation' got final status invalid. [slicing] making slicing project 'Slicing'... [slicing] interpreting slicing requests from the command line... [slicing] Nothing to select for an unreachable stmt of g [pdg] computing for function g [from] Computing for function printf [from] Done for function printf -tests/slicing/unitialized.c:30:[pdg] warning: no final state. Probably unreachable... +tests/slicing/unitialized.i:30:[pdg] warning: no final state. Probably unreachable... [pdg] done for function g [slicing] applying all slicing requests... [slicing] applying 0 actions... @@ -42,10 +42,10 @@ tests/slicing/unitialized.c:30:[pdg] warning: no final state. Probably unreachab [from] Computing for function f2 [from] Done for function f2 [from] Computing for function g -tests/slicing/unitialized.c:27:[from] warning: variadic call detected. Using only 1 argument(s). +tests/slicing/unitialized.i:27:[from] warning: variadic call detected. Using only 1 argument(s). [from] Non-terminating function g (no dependencies) [from] Done for function g -tests/slicing/unitialized.c:40:[pdg] warning: no final state. Probably unreachable... +tests/slicing/unitialized.i:40:[pdg] warning: no final state. Probably unreachable... [pdg] done for function main [slicing] exporting project to 'Slicing export'... [slicing] applying all slicing requests... @@ -66,3 +66,5 @@ void main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_0_unitialized.i (no preprocessing) diff --git a/tests/slicing/oracle/unitialized.1.res.oracle b/tests/slicing/oracle/unitialized.1.res.oracle index e8c13a405e882895673c8bd148158b8e65c3dbbe..e4439f4ae0944829f0387069d96af6ab00092b29 100644 --- a/tests/slicing/oracle/unitialized.1.res.oracle +++ b/tests/slicing/oracle/unitialized.1.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/unitialized.c (with preprocessing) +[kernel] Parsing tests/slicing/unitialized.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at main [value] Computing initial state @@ -8,27 +8,27 @@ X1 ∈ {0} X2 ∈ {0} [value] computing for function f1 <- main. - Called from tests/slicing/unitialized.c:35. + Called from tests/slicing/unitialized.i:35. [value] Recording results for f1 [value] Done for function f1 [value] computing for function f2 <- main. - Called from tests/slicing/unitialized.c:36. + Called from tests/slicing/unitialized.i:36. [value] Recording results for f2 [value] Done for function f2 [value] computing for function g <- main. - Called from tests/slicing/unitialized.c:37. -tests/slicing/unitialized.c:27:[value] warning: accessing uninitialized left-value. assert \initialized(&y); + Called from tests/slicing/unitialized.i:37. +tests/slicing/unitialized.i:27:[value] warning: accessing uninitialized left-value. assert \initialized(&y); [value] Recording results for g [value] Done for function g [value] Recording results for main [value] done for function main -tests/slicing/unitialized.c:27:[value] assertion 'Value,initialisation' got final status invalid. +tests/slicing/unitialized.i:27:[value] assertion 'Value,initialisation' got final status invalid. [slicing] making slicing project 'Slicing'... [slicing] interpreting slicing requests from the command line... [pdg] computing for function g [from] Computing for function printf [from] Done for function printf -tests/slicing/unitialized.c:30:[pdg] warning: no final state. Probably unreachable... +tests/slicing/unitialized.i:30:[pdg] warning: no final state. Probably unreachable... [pdg] done for function g [slicing] applying all slicing requests... [slicing] applying 0 actions... @@ -41,10 +41,10 @@ tests/slicing/unitialized.c:30:[pdg] warning: no final state. Probably unreachab [from] Computing for function f2 [from] Done for function f2 [from] Computing for function g -tests/slicing/unitialized.c:27:[from] warning: variadic call detected. Using only 1 argument(s). +tests/slicing/unitialized.i:27:[from] warning: variadic call detected. Using only 1 argument(s). [from] Non-terminating function g (no dependencies) [from] Done for function g -tests/slicing/unitialized.c:40:[pdg] warning: no final state. Probably unreachable... +tests/slicing/unitialized.i:40:[pdg] warning: no final state. Probably unreachable... [pdg] done for function main [slicing] exporting project to 'Slicing export'... [slicing] applying all slicing requests... @@ -65,3 +65,5 @@ void main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_1_unitialized.i (no preprocessing) diff --git a/tests/slicing/oracle/unitialized.2.res.oracle b/tests/slicing/oracle/unitialized.2.res.oracle index 8670c7dc550d2f99446cb4b83768c9c706a7a2ee..f64c5ac3e1ae78e73b57ea6691813a086d29ed50 100644 --- a/tests/slicing/oracle/unitialized.2.res.oracle +++ b/tests/slicing/oracle/unitialized.2.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/unitialized.c (with preprocessing) +[kernel] Parsing tests/slicing/unitialized.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at main [value] Computing initial state @@ -8,21 +8,21 @@ X1 ∈ {0} X2 ∈ {0} [value] computing for function f1 <- main. - Called from tests/slicing/unitialized.c:35. + Called from tests/slicing/unitialized.i:35. [value] Recording results for f1 [value] Done for function f1 [value] computing for function f2 <- main. - Called from tests/slicing/unitialized.c:36. + Called from tests/slicing/unitialized.i:36. [value] Recording results for f2 [value] Done for function f2 [value] computing for function g <- main. - Called from tests/slicing/unitialized.c:37. -tests/slicing/unitialized.c:27:[value] warning: accessing uninitialized left-value. assert \initialized(&y); + Called from tests/slicing/unitialized.i:37. +tests/slicing/unitialized.i:27:[value] warning: accessing uninitialized left-value. assert \initialized(&y); [value] Recording results for g [value] Done for function g [value] Recording results for main [value] done for function main -tests/slicing/unitialized.c:27:[value] assertion 'Value,initialisation' got final status invalid. +tests/slicing/unitialized.i:27:[value] assertion 'Value,initialisation' got final status invalid. [slicing] making slicing project 'Slicing'... [slicing] interpreting slicing requests from the command line... [pdg] computing for function main @@ -33,10 +33,10 @@ tests/slicing/unitialized.c:27:[value] assertion 'Value,initialisation' got fina [from] Computing for function g [from] Computing for function printf <-g [from] Done for function printf -tests/slicing/unitialized.c:27:[from] warning: variadic call detected. Using only 1 argument(s). +tests/slicing/unitialized.i:27:[from] warning: variadic call detected. Using only 1 argument(s). [from] Non-terminating function g (no dependencies) [from] Done for function g -tests/slicing/unitialized.c:40:[pdg] warning: no final state. Probably unreachable... +tests/slicing/unitialized.i:40:[pdg] warning: no final state. Probably unreachable... [pdg] done for function main [slicing] applying all slicing requests... [slicing] applying 0 actions... @@ -56,3 +56,5 @@ void main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_2_unitialized.i (no preprocessing) diff --git a/tests/slicing/oracle/unitialized.3.res.oracle b/tests/slicing/oracle/unitialized.3.res.oracle index e8fe64f1b0556b9074716553f7f251177e1da801..98227a2b96427f40497cc7af69a4b9f14a790258 100644 --- a/tests/slicing/oracle/unitialized.3.res.oracle +++ b/tests/slicing/oracle/unitialized.3.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/unitialized.c (with preprocessing) +[kernel] Parsing tests/slicing/unitialized.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at main [value] Computing initial state @@ -8,21 +8,21 @@ X1 ∈ {0} X2 ∈ {0} [value] computing for function f1 <- main. - Called from tests/slicing/unitialized.c:35. + Called from tests/slicing/unitialized.i:35. [value] Recording results for f1 [value] Done for function f1 [value] computing for function f2 <- main. - Called from tests/slicing/unitialized.c:36. + Called from tests/slicing/unitialized.i:36. [value] Recording results for f2 [value] Done for function f2 [value] computing for function g <- main. - Called from tests/slicing/unitialized.c:37. -tests/slicing/unitialized.c:27:[value] warning: accessing uninitialized left-value. assert \initialized(&y); + Called from tests/slicing/unitialized.i:37. +tests/slicing/unitialized.i:27:[value] warning: accessing uninitialized left-value. assert \initialized(&y); [value] Recording results for g [value] Done for function g [value] Recording results for main [value] done for function main -tests/slicing/unitialized.c:27:[value] assertion 'Value,initialisation' got final status invalid. +tests/slicing/unitialized.i:27:[value] assertion 'Value,initialisation' got final status invalid. [slicing] making slicing project 'Slicing'... [slicing] interpreting slicing requests from the command line... [slicing] Nothing to select for an unreachable stmt of g @@ -34,7 +34,7 @@ tests/slicing/unitialized.c:27:[value] assertion 'Value,initialisation' got fina [pdg] computing for function g [from] Computing for function printf [from] Done for function printf -tests/slicing/unitialized.c:30:[pdg] warning: no final state. Probably unreachable... +tests/slicing/unitialized.i:30:[pdg] warning: no final state. Probably unreachable... [pdg] done for function g [pdg] computing for function main [from] Computing for function f1 @@ -42,10 +42,10 @@ tests/slicing/unitialized.c:30:[pdg] warning: no final state. Probably unreachab [from] Computing for function f2 [from] Done for function f2 [from] Computing for function g -tests/slicing/unitialized.c:27:[from] warning: variadic call detected. Using only 1 argument(s). +tests/slicing/unitialized.i:27:[from] warning: variadic call detected. Using only 1 argument(s). [from] Non-terminating function g (no dependencies) [from] Done for function g -tests/slicing/unitialized.c:40:[pdg] warning: no final state. Probably unreachable... +tests/slicing/unitialized.i:40:[pdg] warning: no final state. Probably unreachable... [pdg] done for function main [slicing] exporting project to 'Slicing export'... [slicing] applying all slicing requests... @@ -65,3 +65,5 @@ void main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_3_unitialized.i (no preprocessing) diff --git a/tests/slicing/oracle/unravel-flavors.0.res.oracle b/tests/slicing/oracle/unravel-flavors.0.res.oracle index 770924b1564325a49dff09ecf70e7936aea86646..1f055a394f0614ac8a92fccff1fee1e7e8621ed7 100644 --- a/tests/slicing/oracle/unravel-flavors.0.res.oracle +++ b/tests/slicing/oracle/unravel-flavors.0.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/unravel-flavors.c (with preprocessing) +[kernel] Parsing tests/slicing/unravel-flavors.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at main [value] Computing initial state @@ -7,77 +7,77 @@ [value:initial-state] Values of globals at initialization nb_fetch ∈ {0} [value] computing for function fetch <- main. - Called from tests/slicing/unravel-flavors.c:46. + Called from tests/slicing/unravel-flavors.i:46. [value] computing for function scanf <- fetch <- main. - Called from tests/slicing/unravel-flavors.c:37. + Called from tests/slicing/unravel-flavors.i:37. [value] using specification for function scanf [value] Done for function scanf [value] Recording results for fetch [value] Done for function fetch [value] computing for function fetch <- main. - Called from tests/slicing/unravel-flavors.c:47. + Called from tests/slicing/unravel-flavors.i:47. [value] computing for function scanf <- fetch <- main. - Called from tests/slicing/unravel-flavors.c:37. + Called from tests/slicing/unravel-flavors.i:37. [value] Done for function scanf [value] Recording results for fetch [value] Done for function fetch [value] computing for function fetch <- main. - Called from tests/slicing/unravel-flavors.c:48. + Called from tests/slicing/unravel-flavors.i:48. [value] computing for function scanf <- fetch <- main. - Called from tests/slicing/unravel-flavors.c:37. + Called from tests/slicing/unravel-flavors.i:37. [value] Done for function scanf [value] Recording results for fetch [value] Done for function fetch [value] computing for function fetch <- main. - Called from tests/slicing/unravel-flavors.c:49. + Called from tests/slicing/unravel-flavors.i:49. [value] computing for function scanf <- fetch <- main. - Called from tests/slicing/unravel-flavors.c:37. + Called from tests/slicing/unravel-flavors.i:37. [value] Done for function scanf [value] Recording results for fetch [value] Done for function fetch -tests/slicing/unravel-flavors.c:51:[value] warning: accessing uninitialized left-value. assert \initialized(&red); -tests/slicing/unravel-flavors.c:51:[value] warning: signed overflow. assert -2147483648 ≤ 2*red; -tests/slicing/unravel-flavors.c:51:[value] warning: signed overflow. assert 2*red ≤ 2147483647; -tests/slicing/unravel-flavors.c:52:[value] warning: accessing uninitialized left-value. assert \initialized(&green); -tests/slicing/unravel-flavors.c:52:[value] warning: signed overflow. assert -2147483648 ≤ red*green; -tests/slicing/unravel-flavors.c:52:[value] warning: signed overflow. assert red*green ≤ 2147483647; -tests/slicing/unravel-flavors.c:54:[value] entering loop for the first time -tests/slicing/unravel-flavors.c:55:[value] warning: signed overflow. assert -2147483648 ≤ sour+green; -tests/slicing/unravel-flavors.c:55:[value] warning: signed overflow. assert sour+green ≤ 2147483647; -tests/slicing/unravel-flavors.c:56:[value] warning: accessing uninitialized left-value. assert \initialized(&blue); -tests/slicing/unravel-flavors.c:56:[value] warning: accessing uninitialized left-value. assert \initialized(&yellow); -tests/slicing/unravel-flavors.c:56:[value] warning: signed overflow. assert -2147483648 ≤ blue+yellow; -tests/slicing/unravel-flavors.c:56:[value] warning: signed overflow. assert blue+yellow ≤ 2147483647; -tests/slicing/unravel-flavors.c:57:[value] warning: signed overflow. assert green+1 ≤ 2147483647; -tests/slicing/unravel-flavors.c:58:[value] warning: signed overflow. assert -2147483648 ≤ yellow+green; -tests/slicing/unravel-flavors.c:58:[value] warning: signed overflow. assert yellow+green ≤ 2147483647; +tests/slicing/unravel-flavors.i:51:[value] warning: accessing uninitialized left-value. assert \initialized(&red); +tests/slicing/unravel-flavors.i:51:[value] warning: signed overflow. assert -2147483648 ≤ 2*red; +tests/slicing/unravel-flavors.i:51:[value] warning: signed overflow. assert 2*red ≤ 2147483647; +tests/slicing/unravel-flavors.i:52:[value] warning: accessing uninitialized left-value. assert \initialized(&green); +tests/slicing/unravel-flavors.i:52:[value] warning: signed overflow. assert -2147483648 ≤ red*green; +tests/slicing/unravel-flavors.i:52:[value] warning: signed overflow. assert red*green ≤ 2147483647; +tests/slicing/unravel-flavors.i:54:[value] entering loop for the first time +tests/slicing/unravel-flavors.i:55:[value] warning: signed overflow. assert -2147483648 ≤ sour+green; +tests/slicing/unravel-flavors.i:55:[value] warning: signed overflow. assert sour+green ≤ 2147483647; +tests/slicing/unravel-flavors.i:56:[value] warning: accessing uninitialized left-value. assert \initialized(&blue); +tests/slicing/unravel-flavors.i:56:[value] warning: accessing uninitialized left-value. assert \initialized(&yellow); +tests/slicing/unravel-flavors.i:56:[value] warning: signed overflow. assert -2147483648 ≤ blue+yellow; +tests/slicing/unravel-flavors.i:56:[value] warning: signed overflow. assert blue+yellow ≤ 2147483647; +tests/slicing/unravel-flavors.i:57:[value] warning: signed overflow. assert green+1 ≤ 2147483647; +tests/slicing/unravel-flavors.i:58:[value] warning: signed overflow. assert -2147483648 ≤ yellow+green; +tests/slicing/unravel-flavors.i:58:[value] warning: signed overflow. assert yellow+green ≤ 2147483647; [value] computing for function send1 <- main. - Called from tests/slicing/unravel-flavors.c:60. + Called from tests/slicing/unravel-flavors.i:60. [value] computing for function printf <- send1 <- main. - Called from tests/slicing/unravel-flavors.c:19. -tests/slicing/unravel-flavors.c:19:[kernel] warning: Neither code nor specification for function printf, generating default assigns from the prototype + Called from tests/slicing/unravel-flavors.i:19. +tests/slicing/unravel-flavors.i:19:[kernel] warning: Neither code nor specification for function printf, generating default assigns from the prototype [value] using specification for function printf [value] Done for function printf [value] Recording results for send1 [value] Done for function send1 [value] computing for function send2 <- main. - Called from tests/slicing/unravel-flavors.c:61. + Called from tests/slicing/unravel-flavors.i:61. [value] computing for function printf <- send2 <- main. - Called from tests/slicing/unravel-flavors.c:23. + Called from tests/slicing/unravel-flavors.i:23. [value] Done for function printf [value] Recording results for send2 [value] Done for function send2 [value] computing for function send3 <- main. - Called from tests/slicing/unravel-flavors.c:62. + Called from tests/slicing/unravel-flavors.i:62. [value] computing for function printf <- send3 <- main. - Called from tests/slicing/unravel-flavors.c:27. + Called from tests/slicing/unravel-flavors.i:27. [value] Done for function printf [value] Recording results for send3 [value] Done for function send3 [value] computing for function send4 <- main. - Called from tests/slicing/unravel-flavors.c:63. + Called from tests/slicing/unravel-flavors.i:63. [value] computing for function printf <- send4 <- main. - Called from tests/slicing/unravel-flavors.c:31. + Called from tests/slicing/unravel-flavors.i:31. [value] Done for function printf [value] Recording results for send4 [value] Done for function send4 @@ -146,3 +146,5 @@ void main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_0_unravel-flavors.i (no preprocessing) diff --git a/tests/slicing/oracle/unravel-flavors.1.res.oracle b/tests/slicing/oracle/unravel-flavors.1.res.oracle index ac65cde6a4d8bbfa860cff56b702d0a207ae0132..5c4095e5a34b04f3adfae5c1d429f0de24074015 100644 --- a/tests/slicing/oracle/unravel-flavors.1.res.oracle +++ b/tests/slicing/oracle/unravel-flavors.1.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/unravel-flavors.c (with preprocessing) +[kernel] Parsing tests/slicing/unravel-flavors.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at main [value] Computing initial state @@ -7,77 +7,77 @@ [value:initial-state] Values of globals at initialization nb_fetch ∈ {0} [value] computing for function fetch <- main. - Called from tests/slicing/unravel-flavors.c:46. + Called from tests/slicing/unravel-flavors.i:46. [value] computing for function scanf <- fetch <- main. - Called from tests/slicing/unravel-flavors.c:37. + Called from tests/slicing/unravel-flavors.i:37. [value] using specification for function scanf [value] Done for function scanf [value] Recording results for fetch [value] Done for function fetch [value] computing for function fetch <- main. - Called from tests/slicing/unravel-flavors.c:47. + Called from tests/slicing/unravel-flavors.i:47. [value] computing for function scanf <- fetch <- main. - Called from tests/slicing/unravel-flavors.c:37. + Called from tests/slicing/unravel-flavors.i:37. [value] Done for function scanf [value] Recording results for fetch [value] Done for function fetch [value] computing for function fetch <- main. - Called from tests/slicing/unravel-flavors.c:48. + Called from tests/slicing/unravel-flavors.i:48. [value] computing for function scanf <- fetch <- main. - Called from tests/slicing/unravel-flavors.c:37. + Called from tests/slicing/unravel-flavors.i:37. [value] Done for function scanf [value] Recording results for fetch [value] Done for function fetch [value] computing for function fetch <- main. - Called from tests/slicing/unravel-flavors.c:49. + Called from tests/slicing/unravel-flavors.i:49. [value] computing for function scanf <- fetch <- main. - Called from tests/slicing/unravel-flavors.c:37. + Called from tests/slicing/unravel-flavors.i:37. [value] Done for function scanf [value] Recording results for fetch [value] Done for function fetch -tests/slicing/unravel-flavors.c:51:[value] warning: accessing uninitialized left-value. assert \initialized(&red); -tests/slicing/unravel-flavors.c:51:[value] warning: signed overflow. assert -2147483648 ≤ 2*red; -tests/slicing/unravel-flavors.c:51:[value] warning: signed overflow. assert 2*red ≤ 2147483647; -tests/slicing/unravel-flavors.c:52:[value] warning: accessing uninitialized left-value. assert \initialized(&green); -tests/slicing/unravel-flavors.c:52:[value] warning: signed overflow. assert -2147483648 ≤ red*green; -tests/slicing/unravel-flavors.c:52:[value] warning: signed overflow. assert red*green ≤ 2147483647; -tests/slicing/unravel-flavors.c:54:[value] entering loop for the first time -tests/slicing/unravel-flavors.c:55:[value] warning: signed overflow. assert -2147483648 ≤ sour+green; -tests/slicing/unravel-flavors.c:55:[value] warning: signed overflow. assert sour+green ≤ 2147483647; -tests/slicing/unravel-flavors.c:56:[value] warning: accessing uninitialized left-value. assert \initialized(&blue); -tests/slicing/unravel-flavors.c:56:[value] warning: accessing uninitialized left-value. assert \initialized(&yellow); -tests/slicing/unravel-flavors.c:56:[value] warning: signed overflow. assert -2147483648 ≤ blue+yellow; -tests/slicing/unravel-flavors.c:56:[value] warning: signed overflow. assert blue+yellow ≤ 2147483647; -tests/slicing/unravel-flavors.c:57:[value] warning: signed overflow. assert green+1 ≤ 2147483647; -tests/slicing/unravel-flavors.c:58:[value] warning: signed overflow. assert -2147483648 ≤ yellow+green; -tests/slicing/unravel-flavors.c:58:[value] warning: signed overflow. assert yellow+green ≤ 2147483647; +tests/slicing/unravel-flavors.i:51:[value] warning: accessing uninitialized left-value. assert \initialized(&red); +tests/slicing/unravel-flavors.i:51:[value] warning: signed overflow. assert -2147483648 ≤ 2*red; +tests/slicing/unravel-flavors.i:51:[value] warning: signed overflow. assert 2*red ≤ 2147483647; +tests/slicing/unravel-flavors.i:52:[value] warning: accessing uninitialized left-value. assert \initialized(&green); +tests/slicing/unravel-flavors.i:52:[value] warning: signed overflow. assert -2147483648 ≤ red*green; +tests/slicing/unravel-flavors.i:52:[value] warning: signed overflow. assert red*green ≤ 2147483647; +tests/slicing/unravel-flavors.i:54:[value] entering loop for the first time +tests/slicing/unravel-flavors.i:55:[value] warning: signed overflow. assert -2147483648 ≤ sour+green; +tests/slicing/unravel-flavors.i:55:[value] warning: signed overflow. assert sour+green ≤ 2147483647; +tests/slicing/unravel-flavors.i:56:[value] warning: accessing uninitialized left-value. assert \initialized(&blue); +tests/slicing/unravel-flavors.i:56:[value] warning: accessing uninitialized left-value. assert \initialized(&yellow); +tests/slicing/unravel-flavors.i:56:[value] warning: signed overflow. assert -2147483648 ≤ blue+yellow; +tests/slicing/unravel-flavors.i:56:[value] warning: signed overflow. assert blue+yellow ≤ 2147483647; +tests/slicing/unravel-flavors.i:57:[value] warning: signed overflow. assert green+1 ≤ 2147483647; +tests/slicing/unravel-flavors.i:58:[value] warning: signed overflow. assert -2147483648 ≤ yellow+green; +tests/slicing/unravel-flavors.i:58:[value] warning: signed overflow. assert yellow+green ≤ 2147483647; [value] computing for function send1 <- main. - Called from tests/slicing/unravel-flavors.c:60. + Called from tests/slicing/unravel-flavors.i:60. [value] computing for function printf <- send1 <- main. - Called from tests/slicing/unravel-flavors.c:19. -tests/slicing/unravel-flavors.c:19:[kernel] warning: Neither code nor specification for function printf, generating default assigns from the prototype + Called from tests/slicing/unravel-flavors.i:19. +tests/slicing/unravel-flavors.i:19:[kernel] warning: Neither code nor specification for function printf, generating default assigns from the prototype [value] using specification for function printf [value] Done for function printf [value] Recording results for send1 [value] Done for function send1 [value] computing for function send2 <- main. - Called from tests/slicing/unravel-flavors.c:61. + Called from tests/slicing/unravel-flavors.i:61. [value] computing for function printf <- send2 <- main. - Called from tests/slicing/unravel-flavors.c:23. + Called from tests/slicing/unravel-flavors.i:23. [value] Done for function printf [value] Recording results for send2 [value] Done for function send2 [value] computing for function send3 <- main. - Called from tests/slicing/unravel-flavors.c:62. + Called from tests/slicing/unravel-flavors.i:62. [value] computing for function printf <- send3 <- main. - Called from tests/slicing/unravel-flavors.c:27. + Called from tests/slicing/unravel-flavors.i:27. [value] Done for function printf [value] Recording results for send3 [value] Done for function send3 [value] computing for function send4 <- main. - Called from tests/slicing/unravel-flavors.c:63. + Called from tests/slicing/unravel-flavors.i:63. [value] computing for function printf <- send4 <- main. - Called from tests/slicing/unravel-flavors.c:31. + Called from tests/slicing/unravel-flavors.i:31. [value] Done for function printf [value] Recording results for send4 [value] Done for function send4 @@ -152,3 +152,5 @@ void main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_1_unravel-flavors.i (no preprocessing) diff --git a/tests/slicing/oracle/unravel-flavors.2.res.oracle b/tests/slicing/oracle/unravel-flavors.2.res.oracle index 0f635564fe036e3084c7c856c47d2a03dc6b23b7..ab9126cf7f561379e58a4d0b83317e16ebc98a70 100644 --- a/tests/slicing/oracle/unravel-flavors.2.res.oracle +++ b/tests/slicing/oracle/unravel-flavors.2.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/unravel-flavors.c (with preprocessing) +[kernel] Parsing tests/slicing/unravel-flavors.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at main [value] Computing initial state @@ -7,77 +7,77 @@ [value:initial-state] Values of globals at initialization nb_fetch ∈ {0} [value] computing for function fetch <- main. - Called from tests/slicing/unravel-flavors.c:46. + Called from tests/slicing/unravel-flavors.i:46. [value] computing for function scanf <- fetch <- main. - Called from tests/slicing/unravel-flavors.c:37. + Called from tests/slicing/unravel-flavors.i:37. [value] using specification for function scanf [value] Done for function scanf [value] Recording results for fetch [value] Done for function fetch [value] computing for function fetch <- main. - Called from tests/slicing/unravel-flavors.c:47. + Called from tests/slicing/unravel-flavors.i:47. [value] computing for function scanf <- fetch <- main. - Called from tests/slicing/unravel-flavors.c:37. + Called from tests/slicing/unravel-flavors.i:37. [value] Done for function scanf [value] Recording results for fetch [value] Done for function fetch [value] computing for function fetch <- main. - Called from tests/slicing/unravel-flavors.c:48. + Called from tests/slicing/unravel-flavors.i:48. [value] computing for function scanf <- fetch <- main. - Called from tests/slicing/unravel-flavors.c:37. + Called from tests/slicing/unravel-flavors.i:37. [value] Done for function scanf [value] Recording results for fetch [value] Done for function fetch [value] computing for function fetch <- main. - Called from tests/slicing/unravel-flavors.c:49. + Called from tests/slicing/unravel-flavors.i:49. [value] computing for function scanf <- fetch <- main. - Called from tests/slicing/unravel-flavors.c:37. + Called from tests/slicing/unravel-flavors.i:37. [value] Done for function scanf [value] Recording results for fetch [value] Done for function fetch -tests/slicing/unravel-flavors.c:51:[value] warning: accessing uninitialized left-value. assert \initialized(&red); -tests/slicing/unravel-flavors.c:51:[value] warning: signed overflow. assert -2147483648 ≤ 2*red; -tests/slicing/unravel-flavors.c:51:[value] warning: signed overflow. assert 2*red ≤ 2147483647; -tests/slicing/unravel-flavors.c:52:[value] warning: accessing uninitialized left-value. assert \initialized(&green); -tests/slicing/unravel-flavors.c:52:[value] warning: signed overflow. assert -2147483648 ≤ red*green; -tests/slicing/unravel-flavors.c:52:[value] warning: signed overflow. assert red*green ≤ 2147483647; -tests/slicing/unravel-flavors.c:54:[value] entering loop for the first time -tests/slicing/unravel-flavors.c:55:[value] warning: signed overflow. assert -2147483648 ≤ sour+green; -tests/slicing/unravel-flavors.c:55:[value] warning: signed overflow. assert sour+green ≤ 2147483647; -tests/slicing/unravel-flavors.c:56:[value] warning: accessing uninitialized left-value. assert \initialized(&blue); -tests/slicing/unravel-flavors.c:56:[value] warning: accessing uninitialized left-value. assert \initialized(&yellow); -tests/slicing/unravel-flavors.c:56:[value] warning: signed overflow. assert -2147483648 ≤ blue+yellow; -tests/slicing/unravel-flavors.c:56:[value] warning: signed overflow. assert blue+yellow ≤ 2147483647; -tests/slicing/unravel-flavors.c:57:[value] warning: signed overflow. assert green+1 ≤ 2147483647; -tests/slicing/unravel-flavors.c:58:[value] warning: signed overflow. assert -2147483648 ≤ yellow+green; -tests/slicing/unravel-flavors.c:58:[value] warning: signed overflow. assert yellow+green ≤ 2147483647; +tests/slicing/unravel-flavors.i:51:[value] warning: accessing uninitialized left-value. assert \initialized(&red); +tests/slicing/unravel-flavors.i:51:[value] warning: signed overflow. assert -2147483648 ≤ 2*red; +tests/slicing/unravel-flavors.i:51:[value] warning: signed overflow. assert 2*red ≤ 2147483647; +tests/slicing/unravel-flavors.i:52:[value] warning: accessing uninitialized left-value. assert \initialized(&green); +tests/slicing/unravel-flavors.i:52:[value] warning: signed overflow. assert -2147483648 ≤ red*green; +tests/slicing/unravel-flavors.i:52:[value] warning: signed overflow. assert red*green ≤ 2147483647; +tests/slicing/unravel-flavors.i:54:[value] entering loop for the first time +tests/slicing/unravel-flavors.i:55:[value] warning: signed overflow. assert -2147483648 ≤ sour+green; +tests/slicing/unravel-flavors.i:55:[value] warning: signed overflow. assert sour+green ≤ 2147483647; +tests/slicing/unravel-flavors.i:56:[value] warning: accessing uninitialized left-value. assert \initialized(&blue); +tests/slicing/unravel-flavors.i:56:[value] warning: accessing uninitialized left-value. assert \initialized(&yellow); +tests/slicing/unravel-flavors.i:56:[value] warning: signed overflow. assert -2147483648 ≤ blue+yellow; +tests/slicing/unravel-flavors.i:56:[value] warning: signed overflow. assert blue+yellow ≤ 2147483647; +tests/slicing/unravel-flavors.i:57:[value] warning: signed overflow. assert green+1 ≤ 2147483647; +tests/slicing/unravel-flavors.i:58:[value] warning: signed overflow. assert -2147483648 ≤ yellow+green; +tests/slicing/unravel-flavors.i:58:[value] warning: signed overflow. assert yellow+green ≤ 2147483647; [value] computing for function send1 <- main. - Called from tests/slicing/unravel-flavors.c:60. + Called from tests/slicing/unravel-flavors.i:60. [value] computing for function printf <- send1 <- main. - Called from tests/slicing/unravel-flavors.c:19. -tests/slicing/unravel-flavors.c:19:[kernel] warning: Neither code nor specification for function printf, generating default assigns from the prototype + Called from tests/slicing/unravel-flavors.i:19. +tests/slicing/unravel-flavors.i:19:[kernel] warning: Neither code nor specification for function printf, generating default assigns from the prototype [value] using specification for function printf [value] Done for function printf [value] Recording results for send1 [value] Done for function send1 [value] computing for function send2 <- main. - Called from tests/slicing/unravel-flavors.c:61. + Called from tests/slicing/unravel-flavors.i:61. [value] computing for function printf <- send2 <- main. - Called from tests/slicing/unravel-flavors.c:23. + Called from tests/slicing/unravel-flavors.i:23. [value] Done for function printf [value] Recording results for send2 [value] Done for function send2 [value] computing for function send3 <- main. - Called from tests/slicing/unravel-flavors.c:62. + Called from tests/slicing/unravel-flavors.i:62. [value] computing for function printf <- send3 <- main. - Called from tests/slicing/unravel-flavors.c:27. + Called from tests/slicing/unravel-flavors.i:27. [value] Done for function printf [value] Recording results for send3 [value] Done for function send3 [value] computing for function send4 <- main. - Called from tests/slicing/unravel-flavors.c:63. + Called from tests/slicing/unravel-flavors.i:63. [value] computing for function printf <- send4 <- main. - Called from tests/slicing/unravel-flavors.c:31. + Called from tests/slicing/unravel-flavors.i:31. [value] Done for function printf [value] Recording results for send4 [value] Done for function send4 @@ -145,3 +145,5 @@ void main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_2_unravel-flavors.i (no preprocessing) diff --git a/tests/slicing/oracle/unravel-flavors.3.res.oracle b/tests/slicing/oracle/unravel-flavors.3.res.oracle index 882b93bc682b5f388e432fc7ab5b3c9afc3cf60d..f7693f866347fe232063e2a09ece9dbafe8b14a3 100644 --- a/tests/slicing/oracle/unravel-flavors.3.res.oracle +++ b/tests/slicing/oracle/unravel-flavors.3.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/unravel-flavors.c (with preprocessing) +[kernel] Parsing tests/slicing/unravel-flavors.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at main [value] Computing initial state @@ -7,77 +7,77 @@ [value:initial-state] Values of globals at initialization nb_fetch ∈ {0} [value] computing for function fetch <- main. - Called from tests/slicing/unravel-flavors.c:46. + Called from tests/slicing/unravel-flavors.i:46. [value] computing for function scanf <- fetch <- main. - Called from tests/slicing/unravel-flavors.c:37. + Called from tests/slicing/unravel-flavors.i:37. [value] using specification for function scanf [value] Done for function scanf [value] Recording results for fetch [value] Done for function fetch [value] computing for function fetch <- main. - Called from tests/slicing/unravel-flavors.c:47. + Called from tests/slicing/unravel-flavors.i:47. [value] computing for function scanf <- fetch <- main. - Called from tests/slicing/unravel-flavors.c:37. + Called from tests/slicing/unravel-flavors.i:37. [value] Done for function scanf [value] Recording results for fetch [value] Done for function fetch [value] computing for function fetch <- main. - Called from tests/slicing/unravel-flavors.c:48. + Called from tests/slicing/unravel-flavors.i:48. [value] computing for function scanf <- fetch <- main. - Called from tests/slicing/unravel-flavors.c:37. + Called from tests/slicing/unravel-flavors.i:37. [value] Done for function scanf [value] Recording results for fetch [value] Done for function fetch [value] computing for function fetch <- main. - Called from tests/slicing/unravel-flavors.c:49. + Called from tests/slicing/unravel-flavors.i:49. [value] computing for function scanf <- fetch <- main. - Called from tests/slicing/unravel-flavors.c:37. + Called from tests/slicing/unravel-flavors.i:37. [value] Done for function scanf [value] Recording results for fetch [value] Done for function fetch -tests/slicing/unravel-flavors.c:51:[value] warning: accessing uninitialized left-value. assert \initialized(&red); -tests/slicing/unravel-flavors.c:51:[value] warning: signed overflow. assert -2147483648 ≤ 2*red; -tests/slicing/unravel-flavors.c:51:[value] warning: signed overflow. assert 2*red ≤ 2147483647; -tests/slicing/unravel-flavors.c:52:[value] warning: accessing uninitialized left-value. assert \initialized(&green); -tests/slicing/unravel-flavors.c:52:[value] warning: signed overflow. assert -2147483648 ≤ red*green; -tests/slicing/unravel-flavors.c:52:[value] warning: signed overflow. assert red*green ≤ 2147483647; -tests/slicing/unravel-flavors.c:54:[value] entering loop for the first time -tests/slicing/unravel-flavors.c:55:[value] warning: signed overflow. assert -2147483648 ≤ sour+green; -tests/slicing/unravel-flavors.c:55:[value] warning: signed overflow. assert sour+green ≤ 2147483647; -tests/slicing/unravel-flavors.c:56:[value] warning: accessing uninitialized left-value. assert \initialized(&blue); -tests/slicing/unravel-flavors.c:56:[value] warning: accessing uninitialized left-value. assert \initialized(&yellow); -tests/slicing/unravel-flavors.c:56:[value] warning: signed overflow. assert -2147483648 ≤ blue+yellow; -tests/slicing/unravel-flavors.c:56:[value] warning: signed overflow. assert blue+yellow ≤ 2147483647; -tests/slicing/unravel-flavors.c:57:[value] warning: signed overflow. assert green+1 ≤ 2147483647; -tests/slicing/unravel-flavors.c:58:[value] warning: signed overflow. assert -2147483648 ≤ yellow+green; -tests/slicing/unravel-flavors.c:58:[value] warning: signed overflow. assert yellow+green ≤ 2147483647; +tests/slicing/unravel-flavors.i:51:[value] warning: accessing uninitialized left-value. assert \initialized(&red); +tests/slicing/unravel-flavors.i:51:[value] warning: signed overflow. assert -2147483648 ≤ 2*red; +tests/slicing/unravel-flavors.i:51:[value] warning: signed overflow. assert 2*red ≤ 2147483647; +tests/slicing/unravel-flavors.i:52:[value] warning: accessing uninitialized left-value. assert \initialized(&green); +tests/slicing/unravel-flavors.i:52:[value] warning: signed overflow. assert -2147483648 ≤ red*green; +tests/slicing/unravel-flavors.i:52:[value] warning: signed overflow. assert red*green ≤ 2147483647; +tests/slicing/unravel-flavors.i:54:[value] entering loop for the first time +tests/slicing/unravel-flavors.i:55:[value] warning: signed overflow. assert -2147483648 ≤ sour+green; +tests/slicing/unravel-flavors.i:55:[value] warning: signed overflow. assert sour+green ≤ 2147483647; +tests/slicing/unravel-flavors.i:56:[value] warning: accessing uninitialized left-value. assert \initialized(&blue); +tests/slicing/unravel-flavors.i:56:[value] warning: accessing uninitialized left-value. assert \initialized(&yellow); +tests/slicing/unravel-flavors.i:56:[value] warning: signed overflow. assert -2147483648 ≤ blue+yellow; +tests/slicing/unravel-flavors.i:56:[value] warning: signed overflow. assert blue+yellow ≤ 2147483647; +tests/slicing/unravel-flavors.i:57:[value] warning: signed overflow. assert green+1 ≤ 2147483647; +tests/slicing/unravel-flavors.i:58:[value] warning: signed overflow. assert -2147483648 ≤ yellow+green; +tests/slicing/unravel-flavors.i:58:[value] warning: signed overflow. assert yellow+green ≤ 2147483647; [value] computing for function send1 <- main. - Called from tests/slicing/unravel-flavors.c:60. + Called from tests/slicing/unravel-flavors.i:60. [value] computing for function printf <- send1 <- main. - Called from tests/slicing/unravel-flavors.c:19. -tests/slicing/unravel-flavors.c:19:[kernel] warning: Neither code nor specification for function printf, generating default assigns from the prototype + Called from tests/slicing/unravel-flavors.i:19. +tests/slicing/unravel-flavors.i:19:[kernel] warning: Neither code nor specification for function printf, generating default assigns from the prototype [value] using specification for function printf [value] Done for function printf [value] Recording results for send1 [value] Done for function send1 [value] computing for function send2 <- main. - Called from tests/slicing/unravel-flavors.c:61. + Called from tests/slicing/unravel-flavors.i:61. [value] computing for function printf <- send2 <- main. - Called from tests/slicing/unravel-flavors.c:23. + Called from tests/slicing/unravel-flavors.i:23. [value] Done for function printf [value] Recording results for send2 [value] Done for function send2 [value] computing for function send3 <- main. - Called from tests/slicing/unravel-flavors.c:62. + Called from tests/slicing/unravel-flavors.i:62. [value] computing for function printf <- send3 <- main. - Called from tests/slicing/unravel-flavors.c:27. + Called from tests/slicing/unravel-flavors.i:27. [value] Done for function printf [value] Recording results for send3 [value] Done for function send3 [value] computing for function send4 <- main. - Called from tests/slicing/unravel-flavors.c:63. + Called from tests/slicing/unravel-flavors.i:63. [value] computing for function printf <- send4 <- main. - Called from tests/slicing/unravel-flavors.c:31. + Called from tests/slicing/unravel-flavors.i:31. [value] Done for function printf [value] Recording results for send4 [value] Done for function send4 @@ -146,3 +146,5 @@ void main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_3_unravel-flavors.i (no preprocessing) diff --git a/tests/slicing/oracle/unravel-point.0.res.oracle b/tests/slicing/oracle/unravel-point.0.res.oracle index e93c7a47f94a5701b7ada619e96167b8a5e456f6..9242659fdc78e74d1e249709b4f16c5f4991269c 100644 --- a/tests/slicing/oracle/unravel-point.0.res.oracle +++ b/tests/slicing/oracle/unravel-point.0.res.oracle @@ -1,38 +1,38 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/unravel-point.c (with preprocessing) +[kernel] Parsing tests/slicing/unravel-point.i (no preprocessing) [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed [value:initial-state] Values of globals at initialization [value] computing for function scanf <- main. - Called from tests/slicing/unravel-point.c:59. + Called from tests/slicing/unravel-point.i:59. [value] using specification for function scanf [value] Done for function scanf [value] computing for function scanf <- main. - Called from tests/slicing/unravel-point.c:61. + Called from tests/slicing/unravel-point.i:61. [value] Done for function scanf [value] computing for function scanf <- main. - Called from tests/slicing/unravel-point.c:63. + Called from tests/slicing/unravel-point.i:63. [value] Done for function scanf [value] computing for function scanf <- main. - Called from tests/slicing/unravel-point.c:65. + Called from tests/slicing/unravel-point.i:65. [value] Done for function scanf [value] computing for function scanf <- main. - Called from tests/slicing/unravel-point.c:66. + Called from tests/slicing/unravel-point.i:66. [value] Done for function scanf -tests/slicing/unravel-point.c:68:[value] warning: accessing uninitialized left-value. assert \initialized(&cond1); -tests/slicing/unravel-point.c:71:[value] warning: accessing uninitialized left-value. assert \initialized(z); -tests/slicing/unravel-point.c:71:[value] warning: signed overflow. assert *z+1 ≤ 2147483647; -tests/slicing/unravel-point.c:72:[value] warning: accessing uninitialized left-value. assert \initialized(y); -tests/slicing/unravel-point.c:72:[value] warning: accessing uninitialized left-value. assert \initialized(x); -tests/slicing/unravel-point.c:72:[value] warning: signed overflow. assert -2147483648 ≤ *y+*x; -tests/slicing/unravel-point.c:72:[value] warning: signed overflow. assert *y+*x ≤ 2147483647; +tests/slicing/unravel-point.i:68:[value] warning: accessing uninitialized left-value. assert \initialized(&cond1); +tests/slicing/unravel-point.i:71:[value] warning: accessing uninitialized left-value. assert \initialized(z); +tests/slicing/unravel-point.i:71:[value] warning: signed overflow. assert *z+1 ≤ 2147483647; +tests/slicing/unravel-point.i:72:[value] warning: accessing uninitialized left-value. assert \initialized(y); +tests/slicing/unravel-point.i:72:[value] warning: accessing uninitialized left-value. assert \initialized(x); +tests/slicing/unravel-point.i:72:[value] warning: signed overflow. assert -2147483648 ≤ *y+*x; +tests/slicing/unravel-point.i:72:[value] warning: signed overflow. assert *y+*x ≤ 2147483647; [value] computing for function send1 <- main. - Called from tests/slicing/unravel-point.c:75. + Called from tests/slicing/unravel-point.i:75. [value] computing for function printf <- send1 <- main. - Called from tests/slicing/unravel-point.c:36. -tests/slicing/unravel-point.c:36:[kernel] warning: Neither code nor specification for function printf, generating default assigns from the prototype + Called from tests/slicing/unravel-point.i:36. +tests/slicing/unravel-point.i:36:[kernel] warning: Neither code nor specification for function printf, generating default assigns from the prototype [value] using specification for function printf [value] Done for function printf [value] Recording results for send1 @@ -40,29 +40,29 @@ tests/slicing/unravel-point.c:36:[kernel] warning: Neither code nor specificatio [from] Done for function send1 [value] Done for function send1 [value] computing for function send2 <- main. - Called from tests/slicing/unravel-point.c:76. + Called from tests/slicing/unravel-point.i:76. [value] computing for function printf <- send2 <- main. - Called from tests/slicing/unravel-point.c:40. + Called from tests/slicing/unravel-point.i:40. [value] Done for function printf [value] Recording results for send2 [from] Computing for function send2 [from] Done for function send2 [value] Done for function send2 [value] computing for function send3 <- main. - Called from tests/slicing/unravel-point.c:77. -tests/slicing/unravel-point.c:44:[value] warning: accessing uninitialized left-value. assert \initialized(&x); + Called from tests/slicing/unravel-point.i:77. +tests/slicing/unravel-point.i:44:[value] warning: accessing uninitialized left-value. assert \initialized(&x); [value] computing for function printf <- send3 <- main. - Called from tests/slicing/unravel-point.c:44. + Called from tests/slicing/unravel-point.i:44. [value] Done for function printf [value] Recording results for send3 [from] Computing for function send3 [from] Done for function send3 [value] Done for function send3 [value] computing for function send4 <- main. - Called from tests/slicing/unravel-point.c:78. -tests/slicing/unravel-point.c:48:[value] warning: accessing uninitialized left-value. assert \initialized(&x); + Called from tests/slicing/unravel-point.i:78. +tests/slicing/unravel-point.i:48:[value] warning: accessing uninitialized left-value. assert \initialized(&x); [value] computing for function printf <- send4 <- main. - Called from tests/slicing/unravel-point.c:48. + Called from tests/slicing/unravel-point.i:48. [value] Done for function printf [value] Recording results for send4 [from] Computing for function send4 @@ -73,36 +73,36 @@ tests/slicing/unravel-point.c:48:[value] warning: accessing uninitialized left-v [from] Done for function main [value] done for function main [from] ====== DISPLAYING CALLWISE DEPENDENCIES ====== -[from] call to printf at tests/slicing/unravel-point.c:36 (by send1): +[from] call to printf at tests/slicing/unravel-point.i:36 (by send1): \result FROM \nothing -[from] call to printf at tests/slicing/unravel-point.c:40 (by send2): +[from] call to printf at tests/slicing/unravel-point.i:40 (by send2): \result FROM \nothing -[from] call to printf at tests/slicing/unravel-point.c:44 (by send3): +[from] call to printf at tests/slicing/unravel-point.i:44 (by send3): \result FROM \nothing -[from] call to printf at tests/slicing/unravel-point.c:48 (by send4): +[from] call to printf at tests/slicing/unravel-point.i:48 (by send4): \result FROM \nothing -[from] call to scanf at tests/slicing/unravel-point.c:59 (by main): +[from] call to scanf at tests/slicing/unravel-point.i:59 (by main): input1 FROM \nothing \result FROM ANYTHING(origin:Unknown) -[from] call to scanf at tests/slicing/unravel-point.c:61 (by main): +[from] call to scanf at tests/slicing/unravel-point.i:61 (by main): input2 FROM \nothing \result FROM ANYTHING(origin:Unknown) -[from] call to scanf at tests/slicing/unravel-point.c:63 (by main): +[from] call to scanf at tests/slicing/unravel-point.i:63 (by main): input3 FROM \nothing \result FROM ANYTHING(origin:Unknown) -[from] call to scanf at tests/slicing/unravel-point.c:65 (by main): +[from] call to scanf at tests/slicing/unravel-point.i:65 (by main): cond1 FROM \nothing \result FROM ANYTHING(origin:Unknown) -[from] call to scanf at tests/slicing/unravel-point.c:66 (by main): +[from] call to scanf at tests/slicing/unravel-point.i:66 (by main): cond2 FROM \nothing \result FROM ANYTHING(origin:Unknown) -[from] call to send1 at tests/slicing/unravel-point.c:75 (by main): +[from] call to send1 at tests/slicing/unravel-point.i:75 (by main): \result FROM x -[from] call to send2 at tests/slicing/unravel-point.c:76 (by main): +[from] call to send2 at tests/slicing/unravel-point.i:76 (by main): \result FROM x -[from] call to send3 at tests/slicing/unravel-point.c:77 (by main): +[from] call to send3 at tests/slicing/unravel-point.i:77 (by main): \result FROM x -[from] call to send4 at tests/slicing/unravel-point.c:78 (by main): +[from] call to send4 at tests/slicing/unravel-point.i:78 (by main): \result FROM x [from] entry point: \result FROM \nothing @@ -163,3 +163,5 @@ void main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_0_unravel-point.i (no preprocessing) diff --git a/tests/slicing/oracle/unravel-point.1.res.oracle b/tests/slicing/oracle/unravel-point.1.res.oracle index d02ba47a90b78510b0ba71a1bc800cd232a5aa11..64f6038f2b89fe135a3e760405f33f92bce0b0dd 100644 --- a/tests/slicing/oracle/unravel-point.1.res.oracle +++ b/tests/slicing/oracle/unravel-point.1.res.oracle @@ -1,38 +1,38 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/unravel-point.c (with preprocessing) +[kernel] Parsing tests/slicing/unravel-point.i (no preprocessing) [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed [value:initial-state] Values of globals at initialization [value] computing for function scanf <- main. - Called from tests/slicing/unravel-point.c:59. + Called from tests/slicing/unravel-point.i:59. [value] using specification for function scanf [value] Done for function scanf [value] computing for function scanf <- main. - Called from tests/slicing/unravel-point.c:61. + Called from tests/slicing/unravel-point.i:61. [value] Done for function scanf [value] computing for function scanf <- main. - Called from tests/slicing/unravel-point.c:63. + Called from tests/slicing/unravel-point.i:63. [value] Done for function scanf [value] computing for function scanf <- main. - Called from tests/slicing/unravel-point.c:65. + Called from tests/slicing/unravel-point.i:65. [value] Done for function scanf [value] computing for function scanf <- main. - Called from tests/slicing/unravel-point.c:66. + Called from tests/slicing/unravel-point.i:66. [value] Done for function scanf -tests/slicing/unravel-point.c:68:[value] warning: accessing uninitialized left-value. assert \initialized(&cond1); -tests/slicing/unravel-point.c:71:[value] warning: accessing uninitialized left-value. assert \initialized(z); -tests/slicing/unravel-point.c:71:[value] warning: signed overflow. assert *z+1 ≤ 2147483647; -tests/slicing/unravel-point.c:72:[value] warning: accessing uninitialized left-value. assert \initialized(y); -tests/slicing/unravel-point.c:72:[value] warning: accessing uninitialized left-value. assert \initialized(x); -tests/slicing/unravel-point.c:72:[value] warning: signed overflow. assert -2147483648 ≤ *y+*x; -tests/slicing/unravel-point.c:72:[value] warning: signed overflow. assert *y+*x ≤ 2147483647; +tests/slicing/unravel-point.i:68:[value] warning: accessing uninitialized left-value. assert \initialized(&cond1); +tests/slicing/unravel-point.i:71:[value] warning: accessing uninitialized left-value. assert \initialized(z); +tests/slicing/unravel-point.i:71:[value] warning: signed overflow. assert *z+1 ≤ 2147483647; +tests/slicing/unravel-point.i:72:[value] warning: accessing uninitialized left-value. assert \initialized(y); +tests/slicing/unravel-point.i:72:[value] warning: accessing uninitialized left-value. assert \initialized(x); +tests/slicing/unravel-point.i:72:[value] warning: signed overflow. assert -2147483648 ≤ *y+*x; +tests/slicing/unravel-point.i:72:[value] warning: signed overflow. assert *y+*x ≤ 2147483647; [value] computing for function send1 <- main. - Called from tests/slicing/unravel-point.c:75. + Called from tests/slicing/unravel-point.i:75. [value] computing for function printf <- send1 <- main. - Called from tests/slicing/unravel-point.c:36. -tests/slicing/unravel-point.c:36:[kernel] warning: Neither code nor specification for function printf, generating default assigns from the prototype + Called from tests/slicing/unravel-point.i:36. +tests/slicing/unravel-point.i:36:[kernel] warning: Neither code nor specification for function printf, generating default assigns from the prototype [value] using specification for function printf [value] Done for function printf [value] Recording results for send1 @@ -40,29 +40,29 @@ tests/slicing/unravel-point.c:36:[kernel] warning: Neither code nor specificatio [from] Done for function send1 [value] Done for function send1 [value] computing for function send2 <- main. - Called from tests/slicing/unravel-point.c:76. + Called from tests/slicing/unravel-point.i:76. [value] computing for function printf <- send2 <- main. - Called from tests/slicing/unravel-point.c:40. + Called from tests/slicing/unravel-point.i:40. [value] Done for function printf [value] Recording results for send2 [from] Computing for function send2 [from] Done for function send2 [value] Done for function send2 [value] computing for function send3 <- main. - Called from tests/slicing/unravel-point.c:77. -tests/slicing/unravel-point.c:44:[value] warning: accessing uninitialized left-value. assert \initialized(&x); + Called from tests/slicing/unravel-point.i:77. +tests/slicing/unravel-point.i:44:[value] warning: accessing uninitialized left-value. assert \initialized(&x); [value] computing for function printf <- send3 <- main. - Called from tests/slicing/unravel-point.c:44. + Called from tests/slicing/unravel-point.i:44. [value] Done for function printf [value] Recording results for send3 [from] Computing for function send3 [from] Done for function send3 [value] Done for function send3 [value] computing for function send4 <- main. - Called from tests/slicing/unravel-point.c:78. -tests/slicing/unravel-point.c:48:[value] warning: accessing uninitialized left-value. assert \initialized(&x); + Called from tests/slicing/unravel-point.i:78. +tests/slicing/unravel-point.i:48:[value] warning: accessing uninitialized left-value. assert \initialized(&x); [value] computing for function printf <- send4 <- main. - Called from tests/slicing/unravel-point.c:48. + Called from tests/slicing/unravel-point.i:48. [value] Done for function printf [value] Recording results for send4 [from] Computing for function send4 @@ -73,36 +73,36 @@ tests/slicing/unravel-point.c:48:[value] warning: accessing uninitialized left-v [from] Done for function main [value] done for function main [from] ====== DISPLAYING CALLWISE DEPENDENCIES ====== -[from] call to printf at tests/slicing/unravel-point.c:36 (by send1): +[from] call to printf at tests/slicing/unravel-point.i:36 (by send1): \result FROM \nothing -[from] call to printf at tests/slicing/unravel-point.c:40 (by send2): +[from] call to printf at tests/slicing/unravel-point.i:40 (by send2): \result FROM \nothing -[from] call to printf at tests/slicing/unravel-point.c:44 (by send3): +[from] call to printf at tests/slicing/unravel-point.i:44 (by send3): \result FROM \nothing -[from] call to printf at tests/slicing/unravel-point.c:48 (by send4): +[from] call to printf at tests/slicing/unravel-point.i:48 (by send4): \result FROM \nothing -[from] call to scanf at tests/slicing/unravel-point.c:59 (by main): +[from] call to scanf at tests/slicing/unravel-point.i:59 (by main): input1 FROM \nothing \result FROM ANYTHING(origin:Unknown) -[from] call to scanf at tests/slicing/unravel-point.c:61 (by main): +[from] call to scanf at tests/slicing/unravel-point.i:61 (by main): input2 FROM \nothing \result FROM ANYTHING(origin:Unknown) -[from] call to scanf at tests/slicing/unravel-point.c:63 (by main): +[from] call to scanf at tests/slicing/unravel-point.i:63 (by main): input3 FROM \nothing \result FROM ANYTHING(origin:Unknown) -[from] call to scanf at tests/slicing/unravel-point.c:65 (by main): +[from] call to scanf at tests/slicing/unravel-point.i:65 (by main): cond1 FROM \nothing \result FROM ANYTHING(origin:Unknown) -[from] call to scanf at tests/slicing/unravel-point.c:66 (by main): +[from] call to scanf at tests/slicing/unravel-point.i:66 (by main): cond2 FROM \nothing \result FROM ANYTHING(origin:Unknown) -[from] call to send1 at tests/slicing/unravel-point.c:75 (by main): +[from] call to send1 at tests/slicing/unravel-point.i:75 (by main): \result FROM x -[from] call to send2 at tests/slicing/unravel-point.c:76 (by main): +[from] call to send2 at tests/slicing/unravel-point.i:76 (by main): \result FROM x -[from] call to send3 at tests/slicing/unravel-point.c:77 (by main): +[from] call to send3 at tests/slicing/unravel-point.i:77 (by main): \result FROM x -[from] call to send4 at tests/slicing/unravel-point.c:78 (by main): +[from] call to send4 at tests/slicing/unravel-point.i:78 (by main): \result FROM x [from] entry point: \result FROM \nothing @@ -147,3 +147,5 @@ void main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_1_unravel-point.i (no preprocessing) diff --git a/tests/slicing/oracle/unravel-point.2.res.oracle b/tests/slicing/oracle/unravel-point.2.res.oracle index 45cf01800f4ff6c631d584269401529dfde8f2e9..d07f77af900493a51a2fec75a32f2306f2690d25 100644 --- a/tests/slicing/oracle/unravel-point.2.res.oracle +++ b/tests/slicing/oracle/unravel-point.2.res.oracle @@ -1,38 +1,38 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/unravel-point.c (with preprocessing) +[kernel] Parsing tests/slicing/unravel-point.i (no preprocessing) [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed [value:initial-state] Values of globals at initialization [value] computing for function scanf <- main. - Called from tests/slicing/unravel-point.c:59. + Called from tests/slicing/unravel-point.i:59. [value] using specification for function scanf [value] Done for function scanf [value] computing for function scanf <- main. - Called from tests/slicing/unravel-point.c:61. + Called from tests/slicing/unravel-point.i:61. [value] Done for function scanf [value] computing for function scanf <- main. - Called from tests/slicing/unravel-point.c:63. + Called from tests/slicing/unravel-point.i:63. [value] Done for function scanf [value] computing for function scanf <- main. - Called from tests/slicing/unravel-point.c:65. + Called from tests/slicing/unravel-point.i:65. [value] Done for function scanf [value] computing for function scanf <- main. - Called from tests/slicing/unravel-point.c:66. + Called from tests/slicing/unravel-point.i:66. [value] Done for function scanf -tests/slicing/unravel-point.c:68:[value] warning: accessing uninitialized left-value. assert \initialized(&cond1); -tests/slicing/unravel-point.c:71:[value] warning: accessing uninitialized left-value. assert \initialized(z); -tests/slicing/unravel-point.c:71:[value] warning: signed overflow. assert *z+1 ≤ 2147483647; -tests/slicing/unravel-point.c:72:[value] warning: accessing uninitialized left-value. assert \initialized(y); -tests/slicing/unravel-point.c:72:[value] warning: accessing uninitialized left-value. assert \initialized(x); -tests/slicing/unravel-point.c:72:[value] warning: signed overflow. assert -2147483648 ≤ *y+*x; -tests/slicing/unravel-point.c:72:[value] warning: signed overflow. assert *y+*x ≤ 2147483647; +tests/slicing/unravel-point.i:68:[value] warning: accessing uninitialized left-value. assert \initialized(&cond1); +tests/slicing/unravel-point.i:71:[value] warning: accessing uninitialized left-value. assert \initialized(z); +tests/slicing/unravel-point.i:71:[value] warning: signed overflow. assert *z+1 ≤ 2147483647; +tests/slicing/unravel-point.i:72:[value] warning: accessing uninitialized left-value. assert \initialized(y); +tests/slicing/unravel-point.i:72:[value] warning: accessing uninitialized left-value. assert \initialized(x); +tests/slicing/unravel-point.i:72:[value] warning: signed overflow. assert -2147483648 ≤ *y+*x; +tests/slicing/unravel-point.i:72:[value] warning: signed overflow. assert *y+*x ≤ 2147483647; [value] computing for function send1 <- main. - Called from tests/slicing/unravel-point.c:75. + Called from tests/slicing/unravel-point.i:75. [value] computing for function printf <- send1 <- main. - Called from tests/slicing/unravel-point.c:36. -tests/slicing/unravel-point.c:36:[kernel] warning: Neither code nor specification for function printf, generating default assigns from the prototype + Called from tests/slicing/unravel-point.i:36. +tests/slicing/unravel-point.i:36:[kernel] warning: Neither code nor specification for function printf, generating default assigns from the prototype [value] using specification for function printf [value] Done for function printf [value] Recording results for send1 @@ -40,29 +40,29 @@ tests/slicing/unravel-point.c:36:[kernel] warning: Neither code nor specificatio [from] Done for function send1 [value] Done for function send1 [value] computing for function send2 <- main. - Called from tests/slicing/unravel-point.c:76. + Called from tests/slicing/unravel-point.i:76. [value] computing for function printf <- send2 <- main. - Called from tests/slicing/unravel-point.c:40. + Called from tests/slicing/unravel-point.i:40. [value] Done for function printf [value] Recording results for send2 [from] Computing for function send2 [from] Done for function send2 [value] Done for function send2 [value] computing for function send3 <- main. - Called from tests/slicing/unravel-point.c:77. -tests/slicing/unravel-point.c:44:[value] warning: accessing uninitialized left-value. assert \initialized(&x); + Called from tests/slicing/unravel-point.i:77. +tests/slicing/unravel-point.i:44:[value] warning: accessing uninitialized left-value. assert \initialized(&x); [value] computing for function printf <- send3 <- main. - Called from tests/slicing/unravel-point.c:44. + Called from tests/slicing/unravel-point.i:44. [value] Done for function printf [value] Recording results for send3 [from] Computing for function send3 [from] Done for function send3 [value] Done for function send3 [value] computing for function send4 <- main. - Called from tests/slicing/unravel-point.c:78. -tests/slicing/unravel-point.c:48:[value] warning: accessing uninitialized left-value. assert \initialized(&x); + Called from tests/slicing/unravel-point.i:78. +tests/slicing/unravel-point.i:48:[value] warning: accessing uninitialized left-value. assert \initialized(&x); [value] computing for function printf <- send4 <- main. - Called from tests/slicing/unravel-point.c:48. + Called from tests/slicing/unravel-point.i:48. [value] Done for function printf [value] Recording results for send4 [from] Computing for function send4 @@ -73,36 +73,36 @@ tests/slicing/unravel-point.c:48:[value] warning: accessing uninitialized left-v [from] Done for function main [value] done for function main [from] ====== DISPLAYING CALLWISE DEPENDENCIES ====== -[from] call to printf at tests/slicing/unravel-point.c:36 (by send1): +[from] call to printf at tests/slicing/unravel-point.i:36 (by send1): \result FROM \nothing -[from] call to printf at tests/slicing/unravel-point.c:40 (by send2): +[from] call to printf at tests/slicing/unravel-point.i:40 (by send2): \result FROM \nothing -[from] call to printf at tests/slicing/unravel-point.c:44 (by send3): +[from] call to printf at tests/slicing/unravel-point.i:44 (by send3): \result FROM \nothing -[from] call to printf at tests/slicing/unravel-point.c:48 (by send4): +[from] call to printf at tests/slicing/unravel-point.i:48 (by send4): \result FROM \nothing -[from] call to scanf at tests/slicing/unravel-point.c:59 (by main): +[from] call to scanf at tests/slicing/unravel-point.i:59 (by main): input1 FROM \nothing \result FROM ANYTHING(origin:Unknown) -[from] call to scanf at tests/slicing/unravel-point.c:61 (by main): +[from] call to scanf at tests/slicing/unravel-point.i:61 (by main): input2 FROM \nothing \result FROM ANYTHING(origin:Unknown) -[from] call to scanf at tests/slicing/unravel-point.c:63 (by main): +[from] call to scanf at tests/slicing/unravel-point.i:63 (by main): input3 FROM \nothing \result FROM ANYTHING(origin:Unknown) -[from] call to scanf at tests/slicing/unravel-point.c:65 (by main): +[from] call to scanf at tests/slicing/unravel-point.i:65 (by main): cond1 FROM \nothing \result FROM ANYTHING(origin:Unknown) -[from] call to scanf at tests/slicing/unravel-point.c:66 (by main): +[from] call to scanf at tests/slicing/unravel-point.i:66 (by main): cond2 FROM \nothing \result FROM ANYTHING(origin:Unknown) -[from] call to send1 at tests/slicing/unravel-point.c:75 (by main): +[from] call to send1 at tests/slicing/unravel-point.i:75 (by main): \result FROM x -[from] call to send2 at tests/slicing/unravel-point.c:76 (by main): +[from] call to send2 at tests/slicing/unravel-point.i:76 (by main): \result FROM x -[from] call to send3 at tests/slicing/unravel-point.c:77 (by main): +[from] call to send3 at tests/slicing/unravel-point.i:77 (by main): \result FROM x -[from] call to send4 at tests/slicing/unravel-point.c:78 (by main): +[from] call to send4 at tests/slicing/unravel-point.i:78 (by main): \result FROM x [from] entry point: \result FROM \nothing @@ -163,3 +163,5 @@ void main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_2_unravel-point.i (no preprocessing) diff --git a/tests/slicing/oracle/unravel-point.3.res.oracle b/tests/slicing/oracle/unravel-point.3.res.oracle index 8ab590176c9abfe97eaf5954482751f6851c5417..520d93f5aca587683d312612ad01c94d3500ba69 100644 --- a/tests/slicing/oracle/unravel-point.3.res.oracle +++ b/tests/slicing/oracle/unravel-point.3.res.oracle @@ -1,38 +1,38 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/unravel-point.c (with preprocessing) +[kernel] Parsing tests/slicing/unravel-point.i (no preprocessing) [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed [value:initial-state] Values of globals at initialization [value] computing for function scanf <- main. - Called from tests/slicing/unravel-point.c:59. + Called from tests/slicing/unravel-point.i:59. [value] using specification for function scanf [value] Done for function scanf [value] computing for function scanf <- main. - Called from tests/slicing/unravel-point.c:61. + Called from tests/slicing/unravel-point.i:61. [value] Done for function scanf [value] computing for function scanf <- main. - Called from tests/slicing/unravel-point.c:63. + Called from tests/slicing/unravel-point.i:63. [value] Done for function scanf [value] computing for function scanf <- main. - Called from tests/slicing/unravel-point.c:65. + Called from tests/slicing/unravel-point.i:65. [value] Done for function scanf [value] computing for function scanf <- main. - Called from tests/slicing/unravel-point.c:66. + Called from tests/slicing/unravel-point.i:66. [value] Done for function scanf -tests/slicing/unravel-point.c:68:[value] warning: accessing uninitialized left-value. assert \initialized(&cond1); -tests/slicing/unravel-point.c:71:[value] warning: accessing uninitialized left-value. assert \initialized(z); -tests/slicing/unravel-point.c:71:[value] warning: signed overflow. assert *z+1 ≤ 2147483647; -tests/slicing/unravel-point.c:72:[value] warning: accessing uninitialized left-value. assert \initialized(y); -tests/slicing/unravel-point.c:72:[value] warning: accessing uninitialized left-value. assert \initialized(x); -tests/slicing/unravel-point.c:72:[value] warning: signed overflow. assert -2147483648 ≤ *y+*x; -tests/slicing/unravel-point.c:72:[value] warning: signed overflow. assert *y+*x ≤ 2147483647; +tests/slicing/unravel-point.i:68:[value] warning: accessing uninitialized left-value. assert \initialized(&cond1); +tests/slicing/unravel-point.i:71:[value] warning: accessing uninitialized left-value. assert \initialized(z); +tests/slicing/unravel-point.i:71:[value] warning: signed overflow. assert *z+1 ≤ 2147483647; +tests/slicing/unravel-point.i:72:[value] warning: accessing uninitialized left-value. assert \initialized(y); +tests/slicing/unravel-point.i:72:[value] warning: accessing uninitialized left-value. assert \initialized(x); +tests/slicing/unravel-point.i:72:[value] warning: signed overflow. assert -2147483648 ≤ *y+*x; +tests/slicing/unravel-point.i:72:[value] warning: signed overflow. assert *y+*x ≤ 2147483647; [value] computing for function send1 <- main. - Called from tests/slicing/unravel-point.c:75. + Called from tests/slicing/unravel-point.i:75. [value] computing for function printf <- send1 <- main. - Called from tests/slicing/unravel-point.c:36. -tests/slicing/unravel-point.c:36:[kernel] warning: Neither code nor specification for function printf, generating default assigns from the prototype + Called from tests/slicing/unravel-point.i:36. +tests/slicing/unravel-point.i:36:[kernel] warning: Neither code nor specification for function printf, generating default assigns from the prototype [value] using specification for function printf [value] Done for function printf [value] Recording results for send1 @@ -40,29 +40,29 @@ tests/slicing/unravel-point.c:36:[kernel] warning: Neither code nor specificatio [from] Done for function send1 [value] Done for function send1 [value] computing for function send2 <- main. - Called from tests/slicing/unravel-point.c:76. + Called from tests/slicing/unravel-point.i:76. [value] computing for function printf <- send2 <- main. - Called from tests/slicing/unravel-point.c:40. + Called from tests/slicing/unravel-point.i:40. [value] Done for function printf [value] Recording results for send2 [from] Computing for function send2 [from] Done for function send2 [value] Done for function send2 [value] computing for function send3 <- main. - Called from tests/slicing/unravel-point.c:77. -tests/slicing/unravel-point.c:44:[value] warning: accessing uninitialized left-value. assert \initialized(&x); + Called from tests/slicing/unravel-point.i:77. +tests/slicing/unravel-point.i:44:[value] warning: accessing uninitialized left-value. assert \initialized(&x); [value] computing for function printf <- send3 <- main. - Called from tests/slicing/unravel-point.c:44. + Called from tests/slicing/unravel-point.i:44. [value] Done for function printf [value] Recording results for send3 [from] Computing for function send3 [from] Done for function send3 [value] Done for function send3 [value] computing for function send4 <- main. - Called from tests/slicing/unravel-point.c:78. -tests/slicing/unravel-point.c:48:[value] warning: accessing uninitialized left-value. assert \initialized(&x); + Called from tests/slicing/unravel-point.i:78. +tests/slicing/unravel-point.i:48:[value] warning: accessing uninitialized left-value. assert \initialized(&x); [value] computing for function printf <- send4 <- main. - Called from tests/slicing/unravel-point.c:48. + Called from tests/slicing/unravel-point.i:48. [value] Done for function printf [value] Recording results for send4 [from] Computing for function send4 @@ -73,36 +73,36 @@ tests/slicing/unravel-point.c:48:[value] warning: accessing uninitialized left-v [from] Done for function main [value] done for function main [from] ====== DISPLAYING CALLWISE DEPENDENCIES ====== -[from] call to printf at tests/slicing/unravel-point.c:36 (by send1): +[from] call to printf at tests/slicing/unravel-point.i:36 (by send1): \result FROM \nothing -[from] call to printf at tests/slicing/unravel-point.c:40 (by send2): +[from] call to printf at tests/slicing/unravel-point.i:40 (by send2): \result FROM \nothing -[from] call to printf at tests/slicing/unravel-point.c:44 (by send3): +[from] call to printf at tests/slicing/unravel-point.i:44 (by send3): \result FROM \nothing -[from] call to printf at tests/slicing/unravel-point.c:48 (by send4): +[from] call to printf at tests/slicing/unravel-point.i:48 (by send4): \result FROM \nothing -[from] call to scanf at tests/slicing/unravel-point.c:59 (by main): +[from] call to scanf at tests/slicing/unravel-point.i:59 (by main): input1 FROM \nothing \result FROM ANYTHING(origin:Unknown) -[from] call to scanf at tests/slicing/unravel-point.c:61 (by main): +[from] call to scanf at tests/slicing/unravel-point.i:61 (by main): input2 FROM \nothing \result FROM ANYTHING(origin:Unknown) -[from] call to scanf at tests/slicing/unravel-point.c:63 (by main): +[from] call to scanf at tests/slicing/unravel-point.i:63 (by main): input3 FROM \nothing \result FROM ANYTHING(origin:Unknown) -[from] call to scanf at tests/slicing/unravel-point.c:65 (by main): +[from] call to scanf at tests/slicing/unravel-point.i:65 (by main): cond1 FROM \nothing \result FROM ANYTHING(origin:Unknown) -[from] call to scanf at tests/slicing/unravel-point.c:66 (by main): +[from] call to scanf at tests/slicing/unravel-point.i:66 (by main): cond2 FROM \nothing \result FROM ANYTHING(origin:Unknown) -[from] call to send1 at tests/slicing/unravel-point.c:75 (by main): +[from] call to send1 at tests/slicing/unravel-point.i:75 (by main): \result FROM x -[from] call to send2 at tests/slicing/unravel-point.c:76 (by main): +[from] call to send2 at tests/slicing/unravel-point.i:76 (by main): \result FROM x -[from] call to send3 at tests/slicing/unravel-point.c:77 (by main): +[from] call to send3 at tests/slicing/unravel-point.i:77 (by main): \result FROM x -[from] call to send4 at tests/slicing/unravel-point.c:78 (by main): +[from] call to send4 at tests/slicing/unravel-point.i:78 (by main): \result FROM x [from] entry point: \result FROM \nothing @@ -141,3 +141,5 @@ void main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_3_unravel-point.i (no preprocessing) diff --git a/tests/slicing/oracle/unravel-point.4.res.oracle b/tests/slicing/oracle/unravel-point.4.res.oracle index 32a321f95210797c2d7e4851e9846f8aa31f4355..2540b75fd32ff79730bd1bdb6f2601793b375bbd 100644 --- a/tests/slicing/oracle/unravel-point.4.res.oracle +++ b/tests/slicing/oracle/unravel-point.4.res.oracle @@ -1,38 +1,38 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/unravel-point.c (with preprocessing) +[kernel] Parsing tests/slicing/unravel-point.i (no preprocessing) [value] Analyzing a complete application starting at main [value] Computing initial state [value] Initial state computed [value:initial-state] Values of globals at initialization [value] computing for function scanf <- main. - Called from tests/slicing/unravel-point.c:59. + Called from tests/slicing/unravel-point.i:59. [value] using specification for function scanf [value] Done for function scanf [value] computing for function scanf <- main. - Called from tests/slicing/unravel-point.c:61. + Called from tests/slicing/unravel-point.i:61. [value] Done for function scanf [value] computing for function scanf <- main. - Called from tests/slicing/unravel-point.c:63. + Called from tests/slicing/unravel-point.i:63. [value] Done for function scanf [value] computing for function scanf <- main. - Called from tests/slicing/unravel-point.c:65. + Called from tests/slicing/unravel-point.i:65. [value] Done for function scanf [value] computing for function scanf <- main. - Called from tests/slicing/unravel-point.c:66. + Called from tests/slicing/unravel-point.i:66. [value] Done for function scanf -tests/slicing/unravel-point.c:68:[value] warning: accessing uninitialized left-value. assert \initialized(&cond1); -tests/slicing/unravel-point.c:71:[value] warning: accessing uninitialized left-value. assert \initialized(z); -tests/slicing/unravel-point.c:71:[value] warning: signed overflow. assert *z+1 ≤ 2147483647; -tests/slicing/unravel-point.c:72:[value] warning: accessing uninitialized left-value. assert \initialized(y); -tests/slicing/unravel-point.c:72:[value] warning: accessing uninitialized left-value. assert \initialized(x); -tests/slicing/unravel-point.c:72:[value] warning: signed overflow. assert -2147483648 ≤ *y+*x; -tests/slicing/unravel-point.c:72:[value] warning: signed overflow. assert *y+*x ≤ 2147483647; +tests/slicing/unravel-point.i:68:[value] warning: accessing uninitialized left-value. assert \initialized(&cond1); +tests/slicing/unravel-point.i:71:[value] warning: accessing uninitialized left-value. assert \initialized(z); +tests/slicing/unravel-point.i:71:[value] warning: signed overflow. assert *z+1 ≤ 2147483647; +tests/slicing/unravel-point.i:72:[value] warning: accessing uninitialized left-value. assert \initialized(y); +tests/slicing/unravel-point.i:72:[value] warning: accessing uninitialized left-value. assert \initialized(x); +tests/slicing/unravel-point.i:72:[value] warning: signed overflow. assert -2147483648 ≤ *y+*x; +tests/slicing/unravel-point.i:72:[value] warning: signed overflow. assert *y+*x ≤ 2147483647; [value] computing for function send1 <- main. - Called from tests/slicing/unravel-point.c:75. + Called from tests/slicing/unravel-point.i:75. [value] computing for function printf <- send1 <- main. - Called from tests/slicing/unravel-point.c:36. -tests/slicing/unravel-point.c:36:[kernel] warning: Neither code nor specification for function printf, generating default assigns from the prototype + Called from tests/slicing/unravel-point.i:36. +tests/slicing/unravel-point.i:36:[kernel] warning: Neither code nor specification for function printf, generating default assigns from the prototype [value] using specification for function printf [value] Done for function printf [value] Recording results for send1 @@ -40,29 +40,29 @@ tests/slicing/unravel-point.c:36:[kernel] warning: Neither code nor specificatio [from] Done for function send1 [value] Done for function send1 [value] computing for function send2 <- main. - Called from tests/slicing/unravel-point.c:76. + Called from tests/slicing/unravel-point.i:76. [value] computing for function printf <- send2 <- main. - Called from tests/slicing/unravel-point.c:40. + Called from tests/slicing/unravel-point.i:40. [value] Done for function printf [value] Recording results for send2 [from] Computing for function send2 [from] Done for function send2 [value] Done for function send2 [value] computing for function send3 <- main. - Called from tests/slicing/unravel-point.c:77. -tests/slicing/unravel-point.c:44:[value] warning: accessing uninitialized left-value. assert \initialized(&x); + Called from tests/slicing/unravel-point.i:77. +tests/slicing/unravel-point.i:44:[value] warning: accessing uninitialized left-value. assert \initialized(&x); [value] computing for function printf <- send3 <- main. - Called from tests/slicing/unravel-point.c:44. + Called from tests/slicing/unravel-point.i:44. [value] Done for function printf [value] Recording results for send3 [from] Computing for function send3 [from] Done for function send3 [value] Done for function send3 [value] computing for function send4 <- main. - Called from tests/slicing/unravel-point.c:78. -tests/slicing/unravel-point.c:48:[value] warning: accessing uninitialized left-value. assert \initialized(&x); + Called from tests/slicing/unravel-point.i:78. +tests/slicing/unravel-point.i:48:[value] warning: accessing uninitialized left-value. assert \initialized(&x); [value] computing for function printf <- send4 <- main. - Called from tests/slicing/unravel-point.c:48. + Called from tests/slicing/unravel-point.i:48. [value] Done for function printf [value] Recording results for send4 [from] Computing for function send4 @@ -73,36 +73,36 @@ tests/slicing/unravel-point.c:48:[value] warning: accessing uninitialized left-v [from] Done for function main [value] done for function main [from] ====== DISPLAYING CALLWISE DEPENDENCIES ====== -[from] call to printf at tests/slicing/unravel-point.c:36 (by send1): +[from] call to printf at tests/slicing/unravel-point.i:36 (by send1): \result FROM \nothing -[from] call to printf at tests/slicing/unravel-point.c:40 (by send2): +[from] call to printf at tests/slicing/unravel-point.i:40 (by send2): \result FROM \nothing -[from] call to printf at tests/slicing/unravel-point.c:44 (by send3): +[from] call to printf at tests/slicing/unravel-point.i:44 (by send3): \result FROM \nothing -[from] call to printf at tests/slicing/unravel-point.c:48 (by send4): +[from] call to printf at tests/slicing/unravel-point.i:48 (by send4): \result FROM \nothing -[from] call to scanf at tests/slicing/unravel-point.c:59 (by main): +[from] call to scanf at tests/slicing/unravel-point.i:59 (by main): input1 FROM \nothing \result FROM ANYTHING(origin:Unknown) -[from] call to scanf at tests/slicing/unravel-point.c:61 (by main): +[from] call to scanf at tests/slicing/unravel-point.i:61 (by main): input2 FROM \nothing \result FROM ANYTHING(origin:Unknown) -[from] call to scanf at tests/slicing/unravel-point.c:63 (by main): +[from] call to scanf at tests/slicing/unravel-point.i:63 (by main): input3 FROM \nothing \result FROM ANYTHING(origin:Unknown) -[from] call to scanf at tests/slicing/unravel-point.c:65 (by main): +[from] call to scanf at tests/slicing/unravel-point.i:65 (by main): cond1 FROM \nothing \result FROM ANYTHING(origin:Unknown) -[from] call to scanf at tests/slicing/unravel-point.c:66 (by main): +[from] call to scanf at tests/slicing/unravel-point.i:66 (by main): cond2 FROM \nothing \result FROM ANYTHING(origin:Unknown) -[from] call to send1 at tests/slicing/unravel-point.c:75 (by main): +[from] call to send1 at tests/slicing/unravel-point.i:75 (by main): \result FROM x -[from] call to send2 at tests/slicing/unravel-point.c:76 (by main): +[from] call to send2 at tests/slicing/unravel-point.i:76 (by main): \result FROM x -[from] call to send3 at tests/slicing/unravel-point.c:77 (by main): +[from] call to send3 at tests/slicing/unravel-point.i:77 (by main): \result FROM x -[from] call to send4 at tests/slicing/unravel-point.c:78 (by main): +[from] call to send4 at tests/slicing/unravel-point.i:78 (by main): \result FROM x [from] entry point: \result FROM \nothing @@ -133,35 +133,35 @@ tests/slicing/unravel-point.c:48:[value] warning: accessing uninitialized left-v [value:initial-state] Values of globals at initialization [value] computing for function scanf <- main. - Called from tests/slicing/unravel-point.c:59. -tests/slicing/unravel-point.c:59:[kernel] warning: Neither code nor specification for function scanf, generating default assigns from the prototype + Called from tests/slicing/unravel-point.i:59. +tests/slicing/unravel-point.i:59:[kernel] warning: Neither code nor specification for function scanf, generating default assigns from the prototype [value] using specification for function scanf [value] Done for function scanf [value] computing for function scanf <- main. - Called from tests/slicing/unravel-point.c:61. + Called from tests/slicing/unravel-point.i:61. [value] Done for function scanf [value] computing for function scanf <- main. - Called from tests/slicing/unravel-point.c:63. + Called from tests/slicing/unravel-point.i:63. [value] Done for function scanf [value] computing for function scanf <- main. - Called from tests/slicing/unravel-point.c:65. + Called from tests/slicing/unravel-point.i:65. [value] Done for function scanf [value] computing for function scanf <- main. - Called from tests/slicing/unravel-point.c:66. + Called from tests/slicing/unravel-point.i:66. [value] Done for function scanf -tests/slicing/unravel-point.c:68:[value] warning: accessing uninitialized left-value. assert \initialized(&cond1); -tests/slicing/unravel-point.c:72:[value] warning: accessing uninitialized left-value. assert \initialized(y); -tests/slicing/unravel-point.c:72:[value] warning: accessing uninitialized left-value. assert \initialized(x); -tests/slicing/unravel-point.c:72:[value] warning: signed overflow. assert -2147483648 ≤ *y+*x; -tests/slicing/unravel-point.c:72:[value] warning: signed overflow. assert *y+*x ≤ 2147483647; +tests/slicing/unravel-point.i:68:[value] warning: accessing uninitialized left-value. assert \initialized(&cond1); +tests/slicing/unravel-point.i:72:[value] warning: accessing uninitialized left-value. assert \initialized(y); +tests/slicing/unravel-point.i:72:[value] warning: accessing uninitialized left-value. assert \initialized(x); +tests/slicing/unravel-point.i:72:[value] warning: signed overflow. assert -2147483648 ≤ *y+*x; +tests/slicing/unravel-point.i:72:[value] warning: signed overflow. assert *y+*x ≤ 2147483647; [value] computing for function send1_slice_1 <- main. - Called from tests/slicing/unravel-point.c:75. + Called from tests/slicing/unravel-point.i:75. [value] Recording results for send1_slice_1 [from] Computing for function send1_slice_1 [from] Done for function send1_slice_1 [value] Done for function send1_slice_1 [value] computing for function send4_slice_1 <- main. - Called from tests/slicing/unravel-point.c:78. + Called from tests/slicing/unravel-point.i:78. [value] Recording results for send4_slice_1 [from] Computing for function send4_slice_1 [from] Done for function send4_slice_1 @@ -171,24 +171,24 @@ tests/slicing/unravel-point.c:72:[value] warning: signed overflow. assert *y+*x [from] Done for function main [value] done for function main [from] ====== DISPLAYING CALLWISE DEPENDENCIES ====== -[from] call to scanf at tests/slicing/unravel-point.c:59 (by main): +[from] call to scanf at tests/slicing/unravel-point.i:59 (by main): input1 FROM input1 (and SELF) \result FROM input1 -[from] call to scanf at tests/slicing/unravel-point.c:61 (by main): +[from] call to scanf at tests/slicing/unravel-point.i:61 (by main): input2 FROM input2 (and SELF) \result FROM input2 -[from] call to scanf at tests/slicing/unravel-point.c:63 (by main): +[from] call to scanf at tests/slicing/unravel-point.i:63 (by main): input3 FROM input3 (and SELF) \result FROM input3 -[from] call to scanf at tests/slicing/unravel-point.c:65 (by main): +[from] call to scanf at tests/slicing/unravel-point.i:65 (by main): cond1 FROM cond1 (and SELF) \result FROM cond1 -[from] call to scanf at tests/slicing/unravel-point.c:66 (by main): +[from] call to scanf at tests/slicing/unravel-point.i:66 (by main): cond2 FROM cond2 (and SELF) \result FROM cond2 -[from] call to send1_slice_1 at tests/slicing/unravel-point.c:75 (by main): +[from] call to send1_slice_1 at tests/slicing/unravel-point.i:75 (by main): \result FROM x -[from] call to send4_slice_1 at tests/slicing/unravel-point.c:78 (by main): +[from] call to send4_slice_1 at tests/slicing/unravel-point.i:78 (by main): \result FROM x [from] entry point: NO EFFECTS @@ -304,3 +304,5 @@ void main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_4_unravel-point.i (no preprocessing) diff --git a/tests/slicing/oracle/unravel-variance.0.res.oracle b/tests/slicing/oracle/unravel-variance.0.res.oracle index 2f6c72e6853b9c3e577adb2e7f9a6a34017fb5bc..83825349e8eb6cfa55afffa59d427830f18acf18 100644 --- a/tests/slicing/oracle/unravel-variance.0.res.oracle +++ b/tests/slicing/oracle/unravel-variance.0.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/unravel-variance.c (with preprocessing) +[kernel] Parsing tests/slicing/unravel-variance.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at main [value] Computing initial state @@ -7,114 +7,114 @@ [value:initial-state] Values of globals at initialization [value] computing for function scanf <- main. - Called from tests/slicing/unravel-variance.c:32. -tests/slicing/unravel-variance.c:32:[kernel] warning: Neither code nor specification for function scanf, generating default assigns from the prototype + Called from tests/slicing/unravel-variance.i:31. +tests/slicing/unravel-variance.i:31:[kernel] warning: Neither code nor specification for function scanf, generating default assigns from the prototype [value] using specification for function scanf [value] Done for function scanf -tests/slicing/unravel-variance.c:33:[value] entering loop for the first time -tests/slicing/unravel-variance.c:33:[value] warning: accessing uninitialized left-value. assert \initialized(&n); +tests/slicing/unravel-variance.i:32:[value] entering loop for the first time +tests/slicing/unravel-variance.i:32:[value] warning: accessing uninitialized left-value. assert \initialized(&n); [value] computing for function scanf <- main. - Called from tests/slicing/unravel-variance.c:35. + Called from tests/slicing/unravel-variance.i:34. [value] Done for function scanf -tests/slicing/unravel-variance.c:36:[value] warning: accessing uninitialized left-value. assert \initialized(&x[i]); -tests/slicing/unravel-variance.c:36:[value] warning: non-finite float value. assert \is_finite(x[i]); -tests/slicing/unravel-variance.c:37:[value] warning: non-finite float value. assert \is_finite((float)(x[i]*x[i])); +tests/slicing/unravel-variance.i:35:[value] warning: accessing uninitialized left-value. assert \initialized(&x[i]); +tests/slicing/unravel-variance.i:35:[value] warning: non-finite float value. assert \is_finite(x[i]); +tests/slicing/unravel-variance.i:36:[value] warning: non-finite float value. assert \is_finite((float)(x[i]*x[i])); [value] computing for function scanf <- main. - Called from tests/slicing/unravel-variance.c:35. + Called from tests/slicing/unravel-variance.i:34. [value] Done for function scanf -tests/slicing/unravel-variance.c:36:[value] warning: non-finite float value. assert \is_finite((float)(t1+x[i])); -tests/slicing/unravel-variance.c:37:[value] warning: accessing uninitialized left-value. assert \initialized(&x[i]); -tests/slicing/unravel-variance.c:37:[value] warning: non-finite float value. assert \is_finite(x[i]); -tests/slicing/unravel-variance.c:37:[value] warning: non-finite float value. assert \is_finite((float)(ssq+(float)(x[i]*x[i]))); +tests/slicing/unravel-variance.i:35:[value] warning: non-finite float value. assert \is_finite((float)(t1+x[i])); +tests/slicing/unravel-variance.i:36:[value] warning: accessing uninitialized left-value. assert \initialized(&x[i]); +tests/slicing/unravel-variance.i:36:[value] warning: non-finite float value. assert \is_finite(x[i]); +tests/slicing/unravel-variance.i:36:[value] warning: non-finite float value. assert \is_finite((float)(ssq+(float)(x[i]*x[i]))); [value] computing for function scanf <- main. - Called from tests/slicing/unravel-variance.c:35. + Called from tests/slicing/unravel-variance.i:34. [value] Done for function scanf [value] computing for function scanf <- main. - Called from tests/slicing/unravel-variance.c:35. + Called from tests/slicing/unravel-variance.i:34. [value] Done for function scanf [value] computing for function scanf <- main. - Called from tests/slicing/unravel-variance.c:35. + Called from tests/slicing/unravel-variance.i:34. [value] Done for function scanf -tests/slicing/unravel-variance.c:36:[value] warning: accessing out of bounds index. assert i < 1024; -tests/slicing/unravel-variance.c:39:[value] warning: non-finite float value. assert \is_finite((float)(t1/(float)n)); -tests/slicing/unravel-variance.c:40:[value] warning: signed overflow. assert -2147483648 ≤ n-1; -tests/slicing/unravel-variance.c:40:[value] warning: non-finite float value. assert \is_finite((float)((float)n*avg)); -tests/slicing/unravel-variance.c:40:[value] warning: non-finite float value. +tests/slicing/unravel-variance.i:35:[value] warning: accessing out of bounds index. assert i < 1024; +tests/slicing/unravel-variance.i:38:[value] warning: non-finite float value. assert \is_finite((float)(t1/(float)n)); +tests/slicing/unravel-variance.i:39:[value] warning: signed overflow. assert -2147483648 ≤ n-1; +tests/slicing/unravel-variance.i:39:[value] warning: non-finite float value. assert \is_finite((float)((float)n*avg)); +tests/slicing/unravel-variance.i:39:[value] warning: non-finite float value. assert \is_finite((float)((float)((float)n*avg)*avg)); -tests/slicing/unravel-variance.c:40:[value] warning: non-finite float value. +tests/slicing/unravel-variance.i:39:[value] warning: non-finite float value. assert \is_finite((float)(ssq-(float)((float)((float)n*avg)*avg))); -tests/slicing/unravel-variance.c:40:[value] warning: non-finite float value. +tests/slicing/unravel-variance.i:39:[value] warning: non-finite float value. assert \is_finite((float)((float)(ssq-(float)((float)((float)n*avg)*avg))/(float) ((int)(n-1)))); -tests/slicing/unravel-variance.c:41:[value] warning: non-finite float value. assert \is_finite((float)(t1*avg)); -tests/slicing/unravel-variance.c:41:[value] warning: non-finite float value. assert \is_finite((float)(ssq-(float)(t1*avg))); -tests/slicing/unravel-variance.c:41:[value] warning: non-finite float value. +tests/slicing/unravel-variance.i:40:[value] warning: non-finite float value. assert \is_finite((float)(t1*avg)); +tests/slicing/unravel-variance.i:40:[value] warning: non-finite float value. assert \is_finite((float)(ssq-(float)(t1*avg))); +tests/slicing/unravel-variance.i:40:[value] warning: non-finite float value. assert \is_finite((float)((float)(ssq-(float)(t1*avg))/(float)((int)(n-1)))); -tests/slicing/unravel-variance.c:42:[value] warning: non-finite float value. assert \is_finite((float)(t1*t1)); -tests/slicing/unravel-variance.c:42:[value] warning: non-finite float value. assert \is_finite((float)((float)(t1*t1)/(float)n)); -tests/slicing/unravel-variance.c:43:[value] warning: non-finite float value. assert \is_finite((float)(ssq-t1)); -tests/slicing/unravel-variance.c:43:[value] warning: non-finite float value. +tests/slicing/unravel-variance.i:41:[value] warning: non-finite float value. assert \is_finite((float)(t1*t1)); +tests/slicing/unravel-variance.i:41:[value] warning: non-finite float value. assert \is_finite((float)((float)(t1*t1)/(float)n)); +tests/slicing/unravel-variance.i:42:[value] warning: non-finite float value. assert \is_finite((float)(ssq-t1)); +tests/slicing/unravel-variance.i:42:[value] warning: non-finite float value. assert \is_finite((float)((float)(ssq-t1)/(float)((int)(n-1)))); -tests/slicing/unravel-variance.c:45:[value] entering loop for the first time -tests/slicing/unravel-variance.c:47:[value] warning: accessing uninitialized left-value. assert \initialized(&x[i]); -tests/slicing/unravel-variance.c:47:[value] warning: non-finite float value. assert \is_finite(x[i]); -tests/slicing/unravel-variance.c:47:[value] warning: non-finite float value. assert \is_finite((float)(x[i]-avg)); -tests/slicing/unravel-variance.c:49:[value] warning: non-finite float value. assert \is_finite((float)(dev*dev)); -tests/slicing/unravel-variance.c:48:[value] warning: non-finite float value. assert \is_finite((float)(t2+dev)); -tests/slicing/unravel-variance.c:49:[value] warning: non-finite float value. assert \is_finite((float)(t1+(float)(dev*dev))); -tests/slicing/unravel-variance.c:51:[value] warning: non-finite float value. assert \is_finite((float)(t2*t2)); -tests/slicing/unravel-variance.c:51:[value] warning: non-finite float value. assert \is_finite((float)((float)(t2*t2)/(float)n)); -tests/slicing/unravel-variance.c:51:[value] warning: non-finite float value. +tests/slicing/unravel-variance.i:44:[value] entering loop for the first time +tests/slicing/unravel-variance.i:46:[value] warning: accessing uninitialized left-value. assert \initialized(&x[i]); +tests/slicing/unravel-variance.i:46:[value] warning: non-finite float value. assert \is_finite(x[i]); +tests/slicing/unravel-variance.i:46:[value] warning: non-finite float value. assert \is_finite((float)(x[i]-avg)); +tests/slicing/unravel-variance.i:48:[value] warning: non-finite float value. assert \is_finite((float)(dev*dev)); +tests/slicing/unravel-variance.i:47:[value] warning: non-finite float value. assert \is_finite((float)(t2+dev)); +tests/slicing/unravel-variance.i:48:[value] warning: non-finite float value. assert \is_finite((float)(t1+(float)(dev*dev))); +tests/slicing/unravel-variance.i:50:[value] warning: non-finite float value. assert \is_finite((float)(t2*t2)); +tests/slicing/unravel-variance.i:50:[value] warning: non-finite float value. assert \is_finite((float)((float)(t2*t2)/(float)n)); +tests/slicing/unravel-variance.i:50:[value] warning: non-finite float value. assert \is_finite((float)(t1-(float)((float)(t2*t2)/(float)n))); -tests/slicing/unravel-variance.c:51:[value] warning: non-finite float value. +tests/slicing/unravel-variance.i:50:[value] warning: non-finite float value. assert \is_finite((float)((float)(t1-(float)((float)(t2*t2)/(float)n))/(float) ((int)(n-1)))); -tests/slicing/unravel-variance.c:52:[value] warning: non-finite float value. assert \is_finite((float)(t1/(float)((int)(n-1)))); -tests/slicing/unravel-variance.c:53:[value] warning: overflow in conversion from floating-point to integer. +tests/slicing/unravel-variance.i:51:[value] warning: non-finite float value. assert \is_finite((float)(t1/(float)((int)(n-1)))); +tests/slicing/unravel-variance.i:52:[value] warning: overflow in conversion from floating-point to integer. assert -2147483649 < var2; -tests/slicing/unravel-variance.c:53:[value] warning: overflow in conversion from floating-point to integer. +tests/slicing/unravel-variance.i:52:[value] warning: overflow in conversion from floating-point to integer. assert var2 < 2147483648; [value] computing for function printf1 <- main. - Called from tests/slicing/unravel-variance.c:53. -tests/slicing/unravel-variance.c:53:[kernel] warning: Neither code nor specification for function printf1, generating default assigns from the prototype + Called from tests/slicing/unravel-variance.i:52. +tests/slicing/unravel-variance.i:52:[kernel] warning: Neither code nor specification for function printf1, generating default assigns from the prototype [value] using specification for function printf1 [value] Done for function printf1 -tests/slicing/unravel-variance.c:54:[value] warning: overflow in conversion from floating-point to integer. +tests/slicing/unravel-variance.i:53:[value] warning: overflow in conversion from floating-point to integer. assert -2147483649 < var3; -tests/slicing/unravel-variance.c:54:[value] warning: overflow in conversion from floating-point to integer. +tests/slicing/unravel-variance.i:53:[value] warning: overflow in conversion from floating-point to integer. assert var3 < 2147483648; [value] computing for function printf2 <- main. - Called from tests/slicing/unravel-variance.c:54. -tests/slicing/unravel-variance.c:54:[kernel] warning: Neither code nor specification for function printf2, generating default assigns from the prototype + Called from tests/slicing/unravel-variance.i:53. +tests/slicing/unravel-variance.i:53:[kernel] warning: Neither code nor specification for function printf2, generating default assigns from the prototype [value] using specification for function printf2 [value] Done for function printf2 -tests/slicing/unravel-variance.c:55:[value] warning: overflow in conversion from floating-point to integer. +tests/slicing/unravel-variance.i:54:[value] warning: overflow in conversion from floating-point to integer. assert -2147483649 < var4; -tests/slicing/unravel-variance.c:55:[value] warning: overflow in conversion from floating-point to integer. +tests/slicing/unravel-variance.i:54:[value] warning: overflow in conversion from floating-point to integer. assert var4 < 2147483648; [value] computing for function printf3 <- main. - Called from tests/slicing/unravel-variance.c:55. -tests/slicing/unravel-variance.c:55:[kernel] warning: Neither code nor specification for function printf3, generating default assigns from the prototype + Called from tests/slicing/unravel-variance.i:54. +tests/slicing/unravel-variance.i:54:[kernel] warning: Neither code nor specification for function printf3, generating default assigns from the prototype [value] using specification for function printf3 [value] Done for function printf3 -tests/slicing/unravel-variance.c:56:[value] warning: overflow in conversion from floating-point to integer. +tests/slicing/unravel-variance.i:55:[value] warning: overflow in conversion from floating-point to integer. assert -2147483649 < var5; -tests/slicing/unravel-variance.c:56:[value] warning: overflow in conversion from floating-point to integer. +tests/slicing/unravel-variance.i:55:[value] warning: overflow in conversion from floating-point to integer. assert var5 < 2147483648; [value] computing for function printf4 <- main. - Called from tests/slicing/unravel-variance.c:56. -tests/slicing/unravel-variance.c:56:[kernel] warning: Neither code nor specification for function printf4, generating default assigns from the prototype + Called from tests/slicing/unravel-variance.i:55. +tests/slicing/unravel-variance.i:55:[kernel] warning: Neither code nor specification for function printf4, generating default assigns from the prototype [value] using specification for function printf4 [value] Done for function printf4 -tests/slicing/unravel-variance.c:57:[value] warning: overflow in conversion from floating-point to integer. +tests/slicing/unravel-variance.i:56:[value] warning: overflow in conversion from floating-point to integer. assert -2147483649 < var1; -tests/slicing/unravel-variance.c:57:[value] warning: overflow in conversion from floating-point to integer. +tests/slicing/unravel-variance.i:56:[value] warning: overflow in conversion from floating-point to integer. assert var1 < 2147483648; [value] computing for function printf5 <- main. - Called from tests/slicing/unravel-variance.c:57. -tests/slicing/unravel-variance.c:57:[kernel] warning: Neither code nor specification for function printf5, generating default assigns from the prototype + Called from tests/slicing/unravel-variance.i:56. +tests/slicing/unravel-variance.i:56:[kernel] warning: Neither code nor specification for function printf5, generating default assigns from the prototype [value] using specification for function printf5 [value] Done for function printf5 [value] Recording results for main @@ -176,3 +176,5 @@ void main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_0_unravel-variance.i (no preprocessing) diff --git a/tests/slicing/oracle/unravel-variance.1.res.oracle b/tests/slicing/oracle/unravel-variance.1.res.oracle index 9c9021f12a85badaa0f8e348d09b645e040e2e4c..ca502634944ffbccce10177be01621b439b5d246 100644 --- a/tests/slicing/oracle/unravel-variance.1.res.oracle +++ b/tests/slicing/oracle/unravel-variance.1.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/unravel-variance.c (with preprocessing) +[kernel] Parsing tests/slicing/unravel-variance.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at main [value] Computing initial state @@ -7,114 +7,114 @@ [value:initial-state] Values of globals at initialization [value] computing for function scanf <- main. - Called from tests/slicing/unravel-variance.c:32. -tests/slicing/unravel-variance.c:32:[kernel] warning: Neither code nor specification for function scanf, generating default assigns from the prototype + Called from tests/slicing/unravel-variance.i:31. +tests/slicing/unravel-variance.i:31:[kernel] warning: Neither code nor specification for function scanf, generating default assigns from the prototype [value] using specification for function scanf [value] Done for function scanf -tests/slicing/unravel-variance.c:33:[value] entering loop for the first time -tests/slicing/unravel-variance.c:33:[value] warning: accessing uninitialized left-value. assert \initialized(&n); +tests/slicing/unravel-variance.i:32:[value] entering loop for the first time +tests/slicing/unravel-variance.i:32:[value] warning: accessing uninitialized left-value. assert \initialized(&n); [value] computing for function scanf <- main. - Called from tests/slicing/unravel-variance.c:35. + Called from tests/slicing/unravel-variance.i:34. [value] Done for function scanf -tests/slicing/unravel-variance.c:36:[value] warning: accessing uninitialized left-value. assert \initialized(&x[i]); -tests/slicing/unravel-variance.c:36:[value] warning: non-finite float value. assert \is_finite(x[i]); -tests/slicing/unravel-variance.c:37:[value] warning: non-finite float value. assert \is_finite((float)(x[i]*x[i])); +tests/slicing/unravel-variance.i:35:[value] warning: accessing uninitialized left-value. assert \initialized(&x[i]); +tests/slicing/unravel-variance.i:35:[value] warning: non-finite float value. assert \is_finite(x[i]); +tests/slicing/unravel-variance.i:36:[value] warning: non-finite float value. assert \is_finite((float)(x[i]*x[i])); [value] computing for function scanf <- main. - Called from tests/slicing/unravel-variance.c:35. + Called from tests/slicing/unravel-variance.i:34. [value] Done for function scanf -tests/slicing/unravel-variance.c:36:[value] warning: non-finite float value. assert \is_finite((float)(t1+x[i])); -tests/slicing/unravel-variance.c:37:[value] warning: accessing uninitialized left-value. assert \initialized(&x[i]); -tests/slicing/unravel-variance.c:37:[value] warning: non-finite float value. assert \is_finite(x[i]); -tests/slicing/unravel-variance.c:37:[value] warning: non-finite float value. assert \is_finite((float)(ssq+(float)(x[i]*x[i]))); +tests/slicing/unravel-variance.i:35:[value] warning: non-finite float value. assert \is_finite((float)(t1+x[i])); +tests/slicing/unravel-variance.i:36:[value] warning: accessing uninitialized left-value. assert \initialized(&x[i]); +tests/slicing/unravel-variance.i:36:[value] warning: non-finite float value. assert \is_finite(x[i]); +tests/slicing/unravel-variance.i:36:[value] warning: non-finite float value. assert \is_finite((float)(ssq+(float)(x[i]*x[i]))); [value] computing for function scanf <- main. - Called from tests/slicing/unravel-variance.c:35. + Called from tests/slicing/unravel-variance.i:34. [value] Done for function scanf [value] computing for function scanf <- main. - Called from tests/slicing/unravel-variance.c:35. + Called from tests/slicing/unravel-variance.i:34. [value] Done for function scanf [value] computing for function scanf <- main. - Called from tests/slicing/unravel-variance.c:35. + Called from tests/slicing/unravel-variance.i:34. [value] Done for function scanf -tests/slicing/unravel-variance.c:36:[value] warning: accessing out of bounds index. assert i < 1024; -tests/slicing/unravel-variance.c:39:[value] warning: non-finite float value. assert \is_finite((float)(t1/(float)n)); -tests/slicing/unravel-variance.c:40:[value] warning: signed overflow. assert -2147483648 ≤ n-1; -tests/slicing/unravel-variance.c:40:[value] warning: non-finite float value. assert \is_finite((float)((float)n*avg)); -tests/slicing/unravel-variance.c:40:[value] warning: non-finite float value. +tests/slicing/unravel-variance.i:35:[value] warning: accessing out of bounds index. assert i < 1024; +tests/slicing/unravel-variance.i:38:[value] warning: non-finite float value. assert \is_finite((float)(t1/(float)n)); +tests/slicing/unravel-variance.i:39:[value] warning: signed overflow. assert -2147483648 ≤ n-1; +tests/slicing/unravel-variance.i:39:[value] warning: non-finite float value. assert \is_finite((float)((float)n*avg)); +tests/slicing/unravel-variance.i:39:[value] warning: non-finite float value. assert \is_finite((float)((float)((float)n*avg)*avg)); -tests/slicing/unravel-variance.c:40:[value] warning: non-finite float value. +tests/slicing/unravel-variance.i:39:[value] warning: non-finite float value. assert \is_finite((float)(ssq-(float)((float)((float)n*avg)*avg))); -tests/slicing/unravel-variance.c:40:[value] warning: non-finite float value. +tests/slicing/unravel-variance.i:39:[value] warning: non-finite float value. assert \is_finite((float)((float)(ssq-(float)((float)((float)n*avg)*avg))/(float) ((int)(n-1)))); -tests/slicing/unravel-variance.c:41:[value] warning: non-finite float value. assert \is_finite((float)(t1*avg)); -tests/slicing/unravel-variance.c:41:[value] warning: non-finite float value. assert \is_finite((float)(ssq-(float)(t1*avg))); -tests/slicing/unravel-variance.c:41:[value] warning: non-finite float value. +tests/slicing/unravel-variance.i:40:[value] warning: non-finite float value. assert \is_finite((float)(t1*avg)); +tests/slicing/unravel-variance.i:40:[value] warning: non-finite float value. assert \is_finite((float)(ssq-(float)(t1*avg))); +tests/slicing/unravel-variance.i:40:[value] warning: non-finite float value. assert \is_finite((float)((float)(ssq-(float)(t1*avg))/(float)((int)(n-1)))); -tests/slicing/unravel-variance.c:42:[value] warning: non-finite float value. assert \is_finite((float)(t1*t1)); -tests/slicing/unravel-variance.c:42:[value] warning: non-finite float value. assert \is_finite((float)((float)(t1*t1)/(float)n)); -tests/slicing/unravel-variance.c:43:[value] warning: non-finite float value. assert \is_finite((float)(ssq-t1)); -tests/slicing/unravel-variance.c:43:[value] warning: non-finite float value. +tests/slicing/unravel-variance.i:41:[value] warning: non-finite float value. assert \is_finite((float)(t1*t1)); +tests/slicing/unravel-variance.i:41:[value] warning: non-finite float value. assert \is_finite((float)((float)(t1*t1)/(float)n)); +tests/slicing/unravel-variance.i:42:[value] warning: non-finite float value. assert \is_finite((float)(ssq-t1)); +tests/slicing/unravel-variance.i:42:[value] warning: non-finite float value. assert \is_finite((float)((float)(ssq-t1)/(float)((int)(n-1)))); -tests/slicing/unravel-variance.c:45:[value] entering loop for the first time -tests/slicing/unravel-variance.c:47:[value] warning: accessing uninitialized left-value. assert \initialized(&x[i]); -tests/slicing/unravel-variance.c:47:[value] warning: non-finite float value. assert \is_finite(x[i]); -tests/slicing/unravel-variance.c:47:[value] warning: non-finite float value. assert \is_finite((float)(x[i]-avg)); -tests/slicing/unravel-variance.c:49:[value] warning: non-finite float value. assert \is_finite((float)(dev*dev)); -tests/slicing/unravel-variance.c:48:[value] warning: non-finite float value. assert \is_finite((float)(t2+dev)); -tests/slicing/unravel-variance.c:49:[value] warning: non-finite float value. assert \is_finite((float)(t1+(float)(dev*dev))); -tests/slicing/unravel-variance.c:51:[value] warning: non-finite float value. assert \is_finite((float)(t2*t2)); -tests/slicing/unravel-variance.c:51:[value] warning: non-finite float value. assert \is_finite((float)((float)(t2*t2)/(float)n)); -tests/slicing/unravel-variance.c:51:[value] warning: non-finite float value. +tests/slicing/unravel-variance.i:44:[value] entering loop for the first time +tests/slicing/unravel-variance.i:46:[value] warning: accessing uninitialized left-value. assert \initialized(&x[i]); +tests/slicing/unravel-variance.i:46:[value] warning: non-finite float value. assert \is_finite(x[i]); +tests/slicing/unravel-variance.i:46:[value] warning: non-finite float value. assert \is_finite((float)(x[i]-avg)); +tests/slicing/unravel-variance.i:48:[value] warning: non-finite float value. assert \is_finite((float)(dev*dev)); +tests/slicing/unravel-variance.i:47:[value] warning: non-finite float value. assert \is_finite((float)(t2+dev)); +tests/slicing/unravel-variance.i:48:[value] warning: non-finite float value. assert \is_finite((float)(t1+(float)(dev*dev))); +tests/slicing/unravel-variance.i:50:[value] warning: non-finite float value. assert \is_finite((float)(t2*t2)); +tests/slicing/unravel-variance.i:50:[value] warning: non-finite float value. assert \is_finite((float)((float)(t2*t2)/(float)n)); +tests/slicing/unravel-variance.i:50:[value] warning: non-finite float value. assert \is_finite((float)(t1-(float)((float)(t2*t2)/(float)n))); -tests/slicing/unravel-variance.c:51:[value] warning: non-finite float value. +tests/slicing/unravel-variance.i:50:[value] warning: non-finite float value. assert \is_finite((float)((float)(t1-(float)((float)(t2*t2)/(float)n))/(float) ((int)(n-1)))); -tests/slicing/unravel-variance.c:52:[value] warning: non-finite float value. assert \is_finite((float)(t1/(float)((int)(n-1)))); -tests/slicing/unravel-variance.c:53:[value] warning: overflow in conversion from floating-point to integer. +tests/slicing/unravel-variance.i:51:[value] warning: non-finite float value. assert \is_finite((float)(t1/(float)((int)(n-1)))); +tests/slicing/unravel-variance.i:52:[value] warning: overflow in conversion from floating-point to integer. assert -2147483649 < var2; -tests/slicing/unravel-variance.c:53:[value] warning: overflow in conversion from floating-point to integer. +tests/slicing/unravel-variance.i:52:[value] warning: overflow in conversion from floating-point to integer. assert var2 < 2147483648; [value] computing for function printf1 <- main. - Called from tests/slicing/unravel-variance.c:53. -tests/slicing/unravel-variance.c:53:[kernel] warning: Neither code nor specification for function printf1, generating default assigns from the prototype + Called from tests/slicing/unravel-variance.i:52. +tests/slicing/unravel-variance.i:52:[kernel] warning: Neither code nor specification for function printf1, generating default assigns from the prototype [value] using specification for function printf1 [value] Done for function printf1 -tests/slicing/unravel-variance.c:54:[value] warning: overflow in conversion from floating-point to integer. +tests/slicing/unravel-variance.i:53:[value] warning: overflow in conversion from floating-point to integer. assert -2147483649 < var3; -tests/slicing/unravel-variance.c:54:[value] warning: overflow in conversion from floating-point to integer. +tests/slicing/unravel-variance.i:53:[value] warning: overflow in conversion from floating-point to integer. assert var3 < 2147483648; [value] computing for function printf2 <- main. - Called from tests/slicing/unravel-variance.c:54. -tests/slicing/unravel-variance.c:54:[kernel] warning: Neither code nor specification for function printf2, generating default assigns from the prototype + Called from tests/slicing/unravel-variance.i:53. +tests/slicing/unravel-variance.i:53:[kernel] warning: Neither code nor specification for function printf2, generating default assigns from the prototype [value] using specification for function printf2 [value] Done for function printf2 -tests/slicing/unravel-variance.c:55:[value] warning: overflow in conversion from floating-point to integer. +tests/slicing/unravel-variance.i:54:[value] warning: overflow in conversion from floating-point to integer. assert -2147483649 < var4; -tests/slicing/unravel-variance.c:55:[value] warning: overflow in conversion from floating-point to integer. +tests/slicing/unravel-variance.i:54:[value] warning: overflow in conversion from floating-point to integer. assert var4 < 2147483648; [value] computing for function printf3 <- main. - Called from tests/slicing/unravel-variance.c:55. -tests/slicing/unravel-variance.c:55:[kernel] warning: Neither code nor specification for function printf3, generating default assigns from the prototype + Called from tests/slicing/unravel-variance.i:54. +tests/slicing/unravel-variance.i:54:[kernel] warning: Neither code nor specification for function printf3, generating default assigns from the prototype [value] using specification for function printf3 [value] Done for function printf3 -tests/slicing/unravel-variance.c:56:[value] warning: overflow in conversion from floating-point to integer. +tests/slicing/unravel-variance.i:55:[value] warning: overflow in conversion from floating-point to integer. assert -2147483649 < var5; -tests/slicing/unravel-variance.c:56:[value] warning: overflow in conversion from floating-point to integer. +tests/slicing/unravel-variance.i:55:[value] warning: overflow in conversion from floating-point to integer. assert var5 < 2147483648; [value] computing for function printf4 <- main. - Called from tests/slicing/unravel-variance.c:56. -tests/slicing/unravel-variance.c:56:[kernel] warning: Neither code nor specification for function printf4, generating default assigns from the prototype + Called from tests/slicing/unravel-variance.i:55. +tests/slicing/unravel-variance.i:55:[kernel] warning: Neither code nor specification for function printf4, generating default assigns from the prototype [value] using specification for function printf4 [value] Done for function printf4 -tests/slicing/unravel-variance.c:57:[value] warning: overflow in conversion from floating-point to integer. +tests/slicing/unravel-variance.i:56:[value] warning: overflow in conversion from floating-point to integer. assert -2147483649 < var1; -tests/slicing/unravel-variance.c:57:[value] warning: overflow in conversion from floating-point to integer. +tests/slicing/unravel-variance.i:56:[value] warning: overflow in conversion from floating-point to integer. assert var1 < 2147483648; [value] computing for function printf5 <- main. - Called from tests/slicing/unravel-variance.c:57. -tests/slicing/unravel-variance.c:57:[kernel] warning: Neither code nor specification for function printf5, generating default assigns from the prototype + Called from tests/slicing/unravel-variance.i:56. +tests/slicing/unravel-variance.i:56:[kernel] warning: Neither code nor specification for function printf5, generating default assigns from the prototype [value] using specification for function printf5 [value] Done for function printf5 [value] Recording results for main @@ -177,3 +177,5 @@ void main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_1_unravel-variance.i (no preprocessing) diff --git a/tests/slicing/oracle/unravel-variance.2.res.oracle b/tests/slicing/oracle/unravel-variance.2.res.oracle index e652c6a5923d42fd52b87ec744e426a905c15360..5c082073005633a77416ede359902b204dace790 100644 --- a/tests/slicing/oracle/unravel-variance.2.res.oracle +++ b/tests/slicing/oracle/unravel-variance.2.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/unravel-variance.c (with preprocessing) +[kernel] Parsing tests/slicing/unravel-variance.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at main [value] Computing initial state @@ -7,114 +7,114 @@ [value:initial-state] Values of globals at initialization [value] computing for function scanf <- main. - Called from tests/slicing/unravel-variance.c:32. -tests/slicing/unravel-variance.c:32:[kernel] warning: Neither code nor specification for function scanf, generating default assigns from the prototype + Called from tests/slicing/unravel-variance.i:31. +tests/slicing/unravel-variance.i:31:[kernel] warning: Neither code nor specification for function scanf, generating default assigns from the prototype [value] using specification for function scanf [value] Done for function scanf -tests/slicing/unravel-variance.c:33:[value] entering loop for the first time -tests/slicing/unravel-variance.c:33:[value] warning: accessing uninitialized left-value. assert \initialized(&n); +tests/slicing/unravel-variance.i:32:[value] entering loop for the first time +tests/slicing/unravel-variance.i:32:[value] warning: accessing uninitialized left-value. assert \initialized(&n); [value] computing for function scanf <- main. - Called from tests/slicing/unravel-variance.c:35. + Called from tests/slicing/unravel-variance.i:34. [value] Done for function scanf -tests/slicing/unravel-variance.c:36:[value] warning: accessing uninitialized left-value. assert \initialized(&x[i]); -tests/slicing/unravel-variance.c:36:[value] warning: non-finite float value. assert \is_finite(x[i]); -tests/slicing/unravel-variance.c:37:[value] warning: non-finite float value. assert \is_finite((float)(x[i]*x[i])); +tests/slicing/unravel-variance.i:35:[value] warning: accessing uninitialized left-value. assert \initialized(&x[i]); +tests/slicing/unravel-variance.i:35:[value] warning: non-finite float value. assert \is_finite(x[i]); +tests/slicing/unravel-variance.i:36:[value] warning: non-finite float value. assert \is_finite((float)(x[i]*x[i])); [value] computing for function scanf <- main. - Called from tests/slicing/unravel-variance.c:35. + Called from tests/slicing/unravel-variance.i:34. [value] Done for function scanf -tests/slicing/unravel-variance.c:36:[value] warning: non-finite float value. assert \is_finite((float)(t1+x[i])); -tests/slicing/unravel-variance.c:37:[value] warning: accessing uninitialized left-value. assert \initialized(&x[i]); -tests/slicing/unravel-variance.c:37:[value] warning: non-finite float value. assert \is_finite(x[i]); -tests/slicing/unravel-variance.c:37:[value] warning: non-finite float value. assert \is_finite((float)(ssq+(float)(x[i]*x[i]))); +tests/slicing/unravel-variance.i:35:[value] warning: non-finite float value. assert \is_finite((float)(t1+x[i])); +tests/slicing/unravel-variance.i:36:[value] warning: accessing uninitialized left-value. assert \initialized(&x[i]); +tests/slicing/unravel-variance.i:36:[value] warning: non-finite float value. assert \is_finite(x[i]); +tests/slicing/unravel-variance.i:36:[value] warning: non-finite float value. assert \is_finite((float)(ssq+(float)(x[i]*x[i]))); [value] computing for function scanf <- main. - Called from tests/slicing/unravel-variance.c:35. + Called from tests/slicing/unravel-variance.i:34. [value] Done for function scanf [value] computing for function scanf <- main. - Called from tests/slicing/unravel-variance.c:35. + Called from tests/slicing/unravel-variance.i:34. [value] Done for function scanf [value] computing for function scanf <- main. - Called from tests/slicing/unravel-variance.c:35. + Called from tests/slicing/unravel-variance.i:34. [value] Done for function scanf -tests/slicing/unravel-variance.c:36:[value] warning: accessing out of bounds index. assert i < 1024; -tests/slicing/unravel-variance.c:39:[value] warning: non-finite float value. assert \is_finite((float)(t1/(float)n)); -tests/slicing/unravel-variance.c:40:[value] warning: signed overflow. assert -2147483648 ≤ n-1; -tests/slicing/unravel-variance.c:40:[value] warning: non-finite float value. assert \is_finite((float)((float)n*avg)); -tests/slicing/unravel-variance.c:40:[value] warning: non-finite float value. +tests/slicing/unravel-variance.i:35:[value] warning: accessing out of bounds index. assert i < 1024; +tests/slicing/unravel-variance.i:38:[value] warning: non-finite float value. assert \is_finite((float)(t1/(float)n)); +tests/slicing/unravel-variance.i:39:[value] warning: signed overflow. assert -2147483648 ≤ n-1; +tests/slicing/unravel-variance.i:39:[value] warning: non-finite float value. assert \is_finite((float)((float)n*avg)); +tests/slicing/unravel-variance.i:39:[value] warning: non-finite float value. assert \is_finite((float)((float)((float)n*avg)*avg)); -tests/slicing/unravel-variance.c:40:[value] warning: non-finite float value. +tests/slicing/unravel-variance.i:39:[value] warning: non-finite float value. assert \is_finite((float)(ssq-(float)((float)((float)n*avg)*avg))); -tests/slicing/unravel-variance.c:40:[value] warning: non-finite float value. +tests/slicing/unravel-variance.i:39:[value] warning: non-finite float value. assert \is_finite((float)((float)(ssq-(float)((float)((float)n*avg)*avg))/(float) ((int)(n-1)))); -tests/slicing/unravel-variance.c:41:[value] warning: non-finite float value. assert \is_finite((float)(t1*avg)); -tests/slicing/unravel-variance.c:41:[value] warning: non-finite float value. assert \is_finite((float)(ssq-(float)(t1*avg))); -tests/slicing/unravel-variance.c:41:[value] warning: non-finite float value. +tests/slicing/unravel-variance.i:40:[value] warning: non-finite float value. assert \is_finite((float)(t1*avg)); +tests/slicing/unravel-variance.i:40:[value] warning: non-finite float value. assert \is_finite((float)(ssq-(float)(t1*avg))); +tests/slicing/unravel-variance.i:40:[value] warning: non-finite float value. assert \is_finite((float)((float)(ssq-(float)(t1*avg))/(float)((int)(n-1)))); -tests/slicing/unravel-variance.c:42:[value] warning: non-finite float value. assert \is_finite((float)(t1*t1)); -tests/slicing/unravel-variance.c:42:[value] warning: non-finite float value. assert \is_finite((float)((float)(t1*t1)/(float)n)); -tests/slicing/unravel-variance.c:43:[value] warning: non-finite float value. assert \is_finite((float)(ssq-t1)); -tests/slicing/unravel-variance.c:43:[value] warning: non-finite float value. +tests/slicing/unravel-variance.i:41:[value] warning: non-finite float value. assert \is_finite((float)(t1*t1)); +tests/slicing/unravel-variance.i:41:[value] warning: non-finite float value. assert \is_finite((float)((float)(t1*t1)/(float)n)); +tests/slicing/unravel-variance.i:42:[value] warning: non-finite float value. assert \is_finite((float)(ssq-t1)); +tests/slicing/unravel-variance.i:42:[value] warning: non-finite float value. assert \is_finite((float)((float)(ssq-t1)/(float)((int)(n-1)))); -tests/slicing/unravel-variance.c:45:[value] entering loop for the first time -tests/slicing/unravel-variance.c:47:[value] warning: accessing uninitialized left-value. assert \initialized(&x[i]); -tests/slicing/unravel-variance.c:47:[value] warning: non-finite float value. assert \is_finite(x[i]); -tests/slicing/unravel-variance.c:47:[value] warning: non-finite float value. assert \is_finite((float)(x[i]-avg)); -tests/slicing/unravel-variance.c:49:[value] warning: non-finite float value. assert \is_finite((float)(dev*dev)); -tests/slicing/unravel-variance.c:48:[value] warning: non-finite float value. assert \is_finite((float)(t2+dev)); -tests/slicing/unravel-variance.c:49:[value] warning: non-finite float value. assert \is_finite((float)(t1+(float)(dev*dev))); -tests/slicing/unravel-variance.c:51:[value] warning: non-finite float value. assert \is_finite((float)(t2*t2)); -tests/slicing/unravel-variance.c:51:[value] warning: non-finite float value. assert \is_finite((float)((float)(t2*t2)/(float)n)); -tests/slicing/unravel-variance.c:51:[value] warning: non-finite float value. +tests/slicing/unravel-variance.i:44:[value] entering loop for the first time +tests/slicing/unravel-variance.i:46:[value] warning: accessing uninitialized left-value. assert \initialized(&x[i]); +tests/slicing/unravel-variance.i:46:[value] warning: non-finite float value. assert \is_finite(x[i]); +tests/slicing/unravel-variance.i:46:[value] warning: non-finite float value. assert \is_finite((float)(x[i]-avg)); +tests/slicing/unravel-variance.i:48:[value] warning: non-finite float value. assert \is_finite((float)(dev*dev)); +tests/slicing/unravel-variance.i:47:[value] warning: non-finite float value. assert \is_finite((float)(t2+dev)); +tests/slicing/unravel-variance.i:48:[value] warning: non-finite float value. assert \is_finite((float)(t1+(float)(dev*dev))); +tests/slicing/unravel-variance.i:50:[value] warning: non-finite float value. assert \is_finite((float)(t2*t2)); +tests/slicing/unravel-variance.i:50:[value] warning: non-finite float value. assert \is_finite((float)((float)(t2*t2)/(float)n)); +tests/slicing/unravel-variance.i:50:[value] warning: non-finite float value. assert \is_finite((float)(t1-(float)((float)(t2*t2)/(float)n))); -tests/slicing/unravel-variance.c:51:[value] warning: non-finite float value. +tests/slicing/unravel-variance.i:50:[value] warning: non-finite float value. assert \is_finite((float)((float)(t1-(float)((float)(t2*t2)/(float)n))/(float) ((int)(n-1)))); -tests/slicing/unravel-variance.c:52:[value] warning: non-finite float value. assert \is_finite((float)(t1/(float)((int)(n-1)))); -tests/slicing/unravel-variance.c:53:[value] warning: overflow in conversion from floating-point to integer. +tests/slicing/unravel-variance.i:51:[value] warning: non-finite float value. assert \is_finite((float)(t1/(float)((int)(n-1)))); +tests/slicing/unravel-variance.i:52:[value] warning: overflow in conversion from floating-point to integer. assert -2147483649 < var2; -tests/slicing/unravel-variance.c:53:[value] warning: overflow in conversion from floating-point to integer. +tests/slicing/unravel-variance.i:52:[value] warning: overflow in conversion from floating-point to integer. assert var2 < 2147483648; [value] computing for function printf1 <- main. - Called from tests/slicing/unravel-variance.c:53. -tests/slicing/unravel-variance.c:53:[kernel] warning: Neither code nor specification for function printf1, generating default assigns from the prototype + Called from tests/slicing/unravel-variance.i:52. +tests/slicing/unravel-variance.i:52:[kernel] warning: Neither code nor specification for function printf1, generating default assigns from the prototype [value] using specification for function printf1 [value] Done for function printf1 -tests/slicing/unravel-variance.c:54:[value] warning: overflow in conversion from floating-point to integer. +tests/slicing/unravel-variance.i:53:[value] warning: overflow in conversion from floating-point to integer. assert -2147483649 < var3; -tests/slicing/unravel-variance.c:54:[value] warning: overflow in conversion from floating-point to integer. +tests/slicing/unravel-variance.i:53:[value] warning: overflow in conversion from floating-point to integer. assert var3 < 2147483648; [value] computing for function printf2 <- main. - Called from tests/slicing/unravel-variance.c:54. -tests/slicing/unravel-variance.c:54:[kernel] warning: Neither code nor specification for function printf2, generating default assigns from the prototype + Called from tests/slicing/unravel-variance.i:53. +tests/slicing/unravel-variance.i:53:[kernel] warning: Neither code nor specification for function printf2, generating default assigns from the prototype [value] using specification for function printf2 [value] Done for function printf2 -tests/slicing/unravel-variance.c:55:[value] warning: overflow in conversion from floating-point to integer. +tests/slicing/unravel-variance.i:54:[value] warning: overflow in conversion from floating-point to integer. assert -2147483649 < var4; -tests/slicing/unravel-variance.c:55:[value] warning: overflow in conversion from floating-point to integer. +tests/slicing/unravel-variance.i:54:[value] warning: overflow in conversion from floating-point to integer. assert var4 < 2147483648; [value] computing for function printf3 <- main. - Called from tests/slicing/unravel-variance.c:55. -tests/slicing/unravel-variance.c:55:[kernel] warning: Neither code nor specification for function printf3, generating default assigns from the prototype + Called from tests/slicing/unravel-variance.i:54. +tests/slicing/unravel-variance.i:54:[kernel] warning: Neither code nor specification for function printf3, generating default assigns from the prototype [value] using specification for function printf3 [value] Done for function printf3 -tests/slicing/unravel-variance.c:56:[value] warning: overflow in conversion from floating-point to integer. +tests/slicing/unravel-variance.i:55:[value] warning: overflow in conversion from floating-point to integer. assert -2147483649 < var5; -tests/slicing/unravel-variance.c:56:[value] warning: overflow in conversion from floating-point to integer. +tests/slicing/unravel-variance.i:55:[value] warning: overflow in conversion from floating-point to integer. assert var5 < 2147483648; [value] computing for function printf4 <- main. - Called from tests/slicing/unravel-variance.c:56. -tests/slicing/unravel-variance.c:56:[kernel] warning: Neither code nor specification for function printf4, generating default assigns from the prototype + Called from tests/slicing/unravel-variance.i:55. +tests/slicing/unravel-variance.i:55:[kernel] warning: Neither code nor specification for function printf4, generating default assigns from the prototype [value] using specification for function printf4 [value] Done for function printf4 -tests/slicing/unravel-variance.c:57:[value] warning: overflow in conversion from floating-point to integer. +tests/slicing/unravel-variance.i:56:[value] warning: overflow in conversion from floating-point to integer. assert -2147483649 < var1; -tests/slicing/unravel-variance.c:57:[value] warning: overflow in conversion from floating-point to integer. +tests/slicing/unravel-variance.i:56:[value] warning: overflow in conversion from floating-point to integer. assert var1 < 2147483648; [value] computing for function printf5 <- main. - Called from tests/slicing/unravel-variance.c:57. -tests/slicing/unravel-variance.c:57:[kernel] warning: Neither code nor specification for function printf5, generating default assigns from the prototype + Called from tests/slicing/unravel-variance.i:56. +tests/slicing/unravel-variance.i:56:[kernel] warning: Neither code nor specification for function printf5, generating default assigns from the prototype [value] using specification for function printf5 [value] Done for function printf5 [value] Recording results for main @@ -177,3 +177,5 @@ void main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_2_unravel-variance.i (no preprocessing) diff --git a/tests/slicing/oracle/unravel-variance.3.res.oracle b/tests/slicing/oracle/unravel-variance.3.res.oracle index fe1f53e5f376b4a839b1ca0afc87a814782e1478..b12dc8eb767a9c7767f9874ee80adf3e669a5b24 100644 --- a/tests/slicing/oracle/unravel-variance.3.res.oracle +++ b/tests/slicing/oracle/unravel-variance.3.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/unravel-variance.c (with preprocessing) +[kernel] Parsing tests/slicing/unravel-variance.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at main [value] Computing initial state @@ -7,114 +7,114 @@ [value:initial-state] Values of globals at initialization [value] computing for function scanf <- main. - Called from tests/slicing/unravel-variance.c:32. -tests/slicing/unravel-variance.c:32:[kernel] warning: Neither code nor specification for function scanf, generating default assigns from the prototype + Called from tests/slicing/unravel-variance.i:31. +tests/slicing/unravel-variance.i:31:[kernel] warning: Neither code nor specification for function scanf, generating default assigns from the prototype [value] using specification for function scanf [value] Done for function scanf -tests/slicing/unravel-variance.c:33:[value] entering loop for the first time -tests/slicing/unravel-variance.c:33:[value] warning: accessing uninitialized left-value. assert \initialized(&n); +tests/slicing/unravel-variance.i:32:[value] entering loop for the first time +tests/slicing/unravel-variance.i:32:[value] warning: accessing uninitialized left-value. assert \initialized(&n); [value] computing for function scanf <- main. - Called from tests/slicing/unravel-variance.c:35. + Called from tests/slicing/unravel-variance.i:34. [value] Done for function scanf -tests/slicing/unravel-variance.c:36:[value] warning: accessing uninitialized left-value. assert \initialized(&x[i]); -tests/slicing/unravel-variance.c:36:[value] warning: non-finite float value. assert \is_finite(x[i]); -tests/slicing/unravel-variance.c:37:[value] warning: non-finite float value. assert \is_finite((float)(x[i]*x[i])); +tests/slicing/unravel-variance.i:35:[value] warning: accessing uninitialized left-value. assert \initialized(&x[i]); +tests/slicing/unravel-variance.i:35:[value] warning: non-finite float value. assert \is_finite(x[i]); +tests/slicing/unravel-variance.i:36:[value] warning: non-finite float value. assert \is_finite((float)(x[i]*x[i])); [value] computing for function scanf <- main. - Called from tests/slicing/unravel-variance.c:35. + Called from tests/slicing/unravel-variance.i:34. [value] Done for function scanf -tests/slicing/unravel-variance.c:36:[value] warning: non-finite float value. assert \is_finite((float)(t1+x[i])); -tests/slicing/unravel-variance.c:37:[value] warning: accessing uninitialized left-value. assert \initialized(&x[i]); -tests/slicing/unravel-variance.c:37:[value] warning: non-finite float value. assert \is_finite(x[i]); -tests/slicing/unravel-variance.c:37:[value] warning: non-finite float value. assert \is_finite((float)(ssq+(float)(x[i]*x[i]))); +tests/slicing/unravel-variance.i:35:[value] warning: non-finite float value. assert \is_finite((float)(t1+x[i])); +tests/slicing/unravel-variance.i:36:[value] warning: accessing uninitialized left-value. assert \initialized(&x[i]); +tests/slicing/unravel-variance.i:36:[value] warning: non-finite float value. assert \is_finite(x[i]); +tests/slicing/unravel-variance.i:36:[value] warning: non-finite float value. assert \is_finite((float)(ssq+(float)(x[i]*x[i]))); [value] computing for function scanf <- main. - Called from tests/slicing/unravel-variance.c:35. + Called from tests/slicing/unravel-variance.i:34. [value] Done for function scanf [value] computing for function scanf <- main. - Called from tests/slicing/unravel-variance.c:35. + Called from tests/slicing/unravel-variance.i:34. [value] Done for function scanf [value] computing for function scanf <- main. - Called from tests/slicing/unravel-variance.c:35. + Called from tests/slicing/unravel-variance.i:34. [value] Done for function scanf -tests/slicing/unravel-variance.c:36:[value] warning: accessing out of bounds index. assert i < 1024; -tests/slicing/unravel-variance.c:39:[value] warning: non-finite float value. assert \is_finite((float)(t1/(float)n)); -tests/slicing/unravel-variance.c:40:[value] warning: signed overflow. assert -2147483648 ≤ n-1; -tests/slicing/unravel-variance.c:40:[value] warning: non-finite float value. assert \is_finite((float)((float)n*avg)); -tests/slicing/unravel-variance.c:40:[value] warning: non-finite float value. +tests/slicing/unravel-variance.i:35:[value] warning: accessing out of bounds index. assert i < 1024; +tests/slicing/unravel-variance.i:38:[value] warning: non-finite float value. assert \is_finite((float)(t1/(float)n)); +tests/slicing/unravel-variance.i:39:[value] warning: signed overflow. assert -2147483648 ≤ n-1; +tests/slicing/unravel-variance.i:39:[value] warning: non-finite float value. assert \is_finite((float)((float)n*avg)); +tests/slicing/unravel-variance.i:39:[value] warning: non-finite float value. assert \is_finite((float)((float)((float)n*avg)*avg)); -tests/slicing/unravel-variance.c:40:[value] warning: non-finite float value. +tests/slicing/unravel-variance.i:39:[value] warning: non-finite float value. assert \is_finite((float)(ssq-(float)((float)((float)n*avg)*avg))); -tests/slicing/unravel-variance.c:40:[value] warning: non-finite float value. +tests/slicing/unravel-variance.i:39:[value] warning: non-finite float value. assert \is_finite((float)((float)(ssq-(float)((float)((float)n*avg)*avg))/(float) ((int)(n-1)))); -tests/slicing/unravel-variance.c:41:[value] warning: non-finite float value. assert \is_finite((float)(t1*avg)); -tests/slicing/unravel-variance.c:41:[value] warning: non-finite float value. assert \is_finite((float)(ssq-(float)(t1*avg))); -tests/slicing/unravel-variance.c:41:[value] warning: non-finite float value. +tests/slicing/unravel-variance.i:40:[value] warning: non-finite float value. assert \is_finite((float)(t1*avg)); +tests/slicing/unravel-variance.i:40:[value] warning: non-finite float value. assert \is_finite((float)(ssq-(float)(t1*avg))); +tests/slicing/unravel-variance.i:40:[value] warning: non-finite float value. assert \is_finite((float)((float)(ssq-(float)(t1*avg))/(float)((int)(n-1)))); -tests/slicing/unravel-variance.c:42:[value] warning: non-finite float value. assert \is_finite((float)(t1*t1)); -tests/slicing/unravel-variance.c:42:[value] warning: non-finite float value. assert \is_finite((float)((float)(t1*t1)/(float)n)); -tests/slicing/unravel-variance.c:43:[value] warning: non-finite float value. assert \is_finite((float)(ssq-t1)); -tests/slicing/unravel-variance.c:43:[value] warning: non-finite float value. +tests/slicing/unravel-variance.i:41:[value] warning: non-finite float value. assert \is_finite((float)(t1*t1)); +tests/slicing/unravel-variance.i:41:[value] warning: non-finite float value. assert \is_finite((float)((float)(t1*t1)/(float)n)); +tests/slicing/unravel-variance.i:42:[value] warning: non-finite float value. assert \is_finite((float)(ssq-t1)); +tests/slicing/unravel-variance.i:42:[value] warning: non-finite float value. assert \is_finite((float)((float)(ssq-t1)/(float)((int)(n-1)))); -tests/slicing/unravel-variance.c:45:[value] entering loop for the first time -tests/slicing/unravel-variance.c:47:[value] warning: accessing uninitialized left-value. assert \initialized(&x[i]); -tests/slicing/unravel-variance.c:47:[value] warning: non-finite float value. assert \is_finite(x[i]); -tests/slicing/unravel-variance.c:47:[value] warning: non-finite float value. assert \is_finite((float)(x[i]-avg)); -tests/slicing/unravel-variance.c:49:[value] warning: non-finite float value. assert \is_finite((float)(dev*dev)); -tests/slicing/unravel-variance.c:48:[value] warning: non-finite float value. assert \is_finite((float)(t2+dev)); -tests/slicing/unravel-variance.c:49:[value] warning: non-finite float value. assert \is_finite((float)(t1+(float)(dev*dev))); -tests/slicing/unravel-variance.c:51:[value] warning: non-finite float value. assert \is_finite((float)(t2*t2)); -tests/slicing/unravel-variance.c:51:[value] warning: non-finite float value. assert \is_finite((float)((float)(t2*t2)/(float)n)); -tests/slicing/unravel-variance.c:51:[value] warning: non-finite float value. +tests/slicing/unravel-variance.i:44:[value] entering loop for the first time +tests/slicing/unravel-variance.i:46:[value] warning: accessing uninitialized left-value. assert \initialized(&x[i]); +tests/slicing/unravel-variance.i:46:[value] warning: non-finite float value. assert \is_finite(x[i]); +tests/slicing/unravel-variance.i:46:[value] warning: non-finite float value. assert \is_finite((float)(x[i]-avg)); +tests/slicing/unravel-variance.i:48:[value] warning: non-finite float value. assert \is_finite((float)(dev*dev)); +tests/slicing/unravel-variance.i:47:[value] warning: non-finite float value. assert \is_finite((float)(t2+dev)); +tests/slicing/unravel-variance.i:48:[value] warning: non-finite float value. assert \is_finite((float)(t1+(float)(dev*dev))); +tests/slicing/unravel-variance.i:50:[value] warning: non-finite float value. assert \is_finite((float)(t2*t2)); +tests/slicing/unravel-variance.i:50:[value] warning: non-finite float value. assert \is_finite((float)((float)(t2*t2)/(float)n)); +tests/slicing/unravel-variance.i:50:[value] warning: non-finite float value. assert \is_finite((float)(t1-(float)((float)(t2*t2)/(float)n))); -tests/slicing/unravel-variance.c:51:[value] warning: non-finite float value. +tests/slicing/unravel-variance.i:50:[value] warning: non-finite float value. assert \is_finite((float)((float)(t1-(float)((float)(t2*t2)/(float)n))/(float) ((int)(n-1)))); -tests/slicing/unravel-variance.c:52:[value] warning: non-finite float value. assert \is_finite((float)(t1/(float)((int)(n-1)))); -tests/slicing/unravel-variance.c:53:[value] warning: overflow in conversion from floating-point to integer. +tests/slicing/unravel-variance.i:51:[value] warning: non-finite float value. assert \is_finite((float)(t1/(float)((int)(n-1)))); +tests/slicing/unravel-variance.i:52:[value] warning: overflow in conversion from floating-point to integer. assert -2147483649 < var2; -tests/slicing/unravel-variance.c:53:[value] warning: overflow in conversion from floating-point to integer. +tests/slicing/unravel-variance.i:52:[value] warning: overflow in conversion from floating-point to integer. assert var2 < 2147483648; [value] computing for function printf1 <- main. - Called from tests/slicing/unravel-variance.c:53. -tests/slicing/unravel-variance.c:53:[kernel] warning: Neither code nor specification for function printf1, generating default assigns from the prototype + Called from tests/slicing/unravel-variance.i:52. +tests/slicing/unravel-variance.i:52:[kernel] warning: Neither code nor specification for function printf1, generating default assigns from the prototype [value] using specification for function printf1 [value] Done for function printf1 -tests/slicing/unravel-variance.c:54:[value] warning: overflow in conversion from floating-point to integer. +tests/slicing/unravel-variance.i:53:[value] warning: overflow in conversion from floating-point to integer. assert -2147483649 < var3; -tests/slicing/unravel-variance.c:54:[value] warning: overflow in conversion from floating-point to integer. +tests/slicing/unravel-variance.i:53:[value] warning: overflow in conversion from floating-point to integer. assert var3 < 2147483648; [value] computing for function printf2 <- main. - Called from tests/slicing/unravel-variance.c:54. -tests/slicing/unravel-variance.c:54:[kernel] warning: Neither code nor specification for function printf2, generating default assigns from the prototype + Called from tests/slicing/unravel-variance.i:53. +tests/slicing/unravel-variance.i:53:[kernel] warning: Neither code nor specification for function printf2, generating default assigns from the prototype [value] using specification for function printf2 [value] Done for function printf2 -tests/slicing/unravel-variance.c:55:[value] warning: overflow in conversion from floating-point to integer. +tests/slicing/unravel-variance.i:54:[value] warning: overflow in conversion from floating-point to integer. assert -2147483649 < var4; -tests/slicing/unravel-variance.c:55:[value] warning: overflow in conversion from floating-point to integer. +tests/slicing/unravel-variance.i:54:[value] warning: overflow in conversion from floating-point to integer. assert var4 < 2147483648; [value] computing for function printf3 <- main. - Called from tests/slicing/unravel-variance.c:55. -tests/slicing/unravel-variance.c:55:[kernel] warning: Neither code nor specification for function printf3, generating default assigns from the prototype + Called from tests/slicing/unravel-variance.i:54. +tests/slicing/unravel-variance.i:54:[kernel] warning: Neither code nor specification for function printf3, generating default assigns from the prototype [value] using specification for function printf3 [value] Done for function printf3 -tests/slicing/unravel-variance.c:56:[value] warning: overflow in conversion from floating-point to integer. +tests/slicing/unravel-variance.i:55:[value] warning: overflow in conversion from floating-point to integer. assert -2147483649 < var5; -tests/slicing/unravel-variance.c:56:[value] warning: overflow in conversion from floating-point to integer. +tests/slicing/unravel-variance.i:55:[value] warning: overflow in conversion from floating-point to integer. assert var5 < 2147483648; [value] computing for function printf4 <- main. - Called from tests/slicing/unravel-variance.c:56. -tests/slicing/unravel-variance.c:56:[kernel] warning: Neither code nor specification for function printf4, generating default assigns from the prototype + Called from tests/slicing/unravel-variance.i:55. +tests/slicing/unravel-variance.i:55:[kernel] warning: Neither code nor specification for function printf4, generating default assigns from the prototype [value] using specification for function printf4 [value] Done for function printf4 -tests/slicing/unravel-variance.c:57:[value] warning: overflow in conversion from floating-point to integer. +tests/slicing/unravel-variance.i:56:[value] warning: overflow in conversion from floating-point to integer. assert -2147483649 < var1; -tests/slicing/unravel-variance.c:57:[value] warning: overflow in conversion from floating-point to integer. +tests/slicing/unravel-variance.i:56:[value] warning: overflow in conversion from floating-point to integer. assert var1 < 2147483648; [value] computing for function printf5 <- main. - Called from tests/slicing/unravel-variance.c:57. -tests/slicing/unravel-variance.c:57:[kernel] warning: Neither code nor specification for function printf5, generating default assigns from the prototype + Called from tests/slicing/unravel-variance.i:56. +tests/slicing/unravel-variance.i:56:[kernel] warning: Neither code nor specification for function printf5, generating default assigns from the prototype [value] using specification for function printf5 [value] Done for function printf5 [value] Recording results for main @@ -185,3 +185,5 @@ void main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_3_unravel-variance.i (no preprocessing) diff --git a/tests/slicing/oracle/unravel-variance.4.res.oracle b/tests/slicing/oracle/unravel-variance.4.res.oracle index a017420dbc2e4caac9cdcc4adb92d95f84574fe6..ed72821a5066a669b5a3b6fac5a930b9377781e1 100644 --- a/tests/slicing/oracle/unravel-variance.4.res.oracle +++ b/tests/slicing/oracle/unravel-variance.4.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/slicing/unravel-variance.c (with preprocessing) +[kernel] Parsing tests/slicing/unravel-variance.i (no preprocessing) [slicing] slicing requests in progress... [value] Analyzing a complete application starting at main [value] Computing initial state @@ -7,114 +7,114 @@ [value:initial-state] Values of globals at initialization [value] computing for function scanf <- main. - Called from tests/slicing/unravel-variance.c:32. -tests/slicing/unravel-variance.c:32:[kernel] warning: Neither code nor specification for function scanf, generating default assigns from the prototype + Called from tests/slicing/unravel-variance.i:31. +tests/slicing/unravel-variance.i:31:[kernel] warning: Neither code nor specification for function scanf, generating default assigns from the prototype [value] using specification for function scanf [value] Done for function scanf -tests/slicing/unravel-variance.c:33:[value] entering loop for the first time -tests/slicing/unravel-variance.c:33:[value] warning: accessing uninitialized left-value. assert \initialized(&n); +tests/slicing/unravel-variance.i:32:[value] entering loop for the first time +tests/slicing/unravel-variance.i:32:[value] warning: accessing uninitialized left-value. assert \initialized(&n); [value] computing for function scanf <- main. - Called from tests/slicing/unravel-variance.c:35. + Called from tests/slicing/unravel-variance.i:34. [value] Done for function scanf -tests/slicing/unravel-variance.c:36:[value] warning: accessing uninitialized left-value. assert \initialized(&x[i]); -tests/slicing/unravel-variance.c:36:[value] warning: non-finite float value. assert \is_finite(x[i]); -tests/slicing/unravel-variance.c:37:[value] warning: non-finite float value. assert \is_finite((float)(x[i]*x[i])); +tests/slicing/unravel-variance.i:35:[value] warning: accessing uninitialized left-value. assert \initialized(&x[i]); +tests/slicing/unravel-variance.i:35:[value] warning: non-finite float value. assert \is_finite(x[i]); +tests/slicing/unravel-variance.i:36:[value] warning: non-finite float value. assert \is_finite((float)(x[i]*x[i])); [value] computing for function scanf <- main. - Called from tests/slicing/unravel-variance.c:35. + Called from tests/slicing/unravel-variance.i:34. [value] Done for function scanf -tests/slicing/unravel-variance.c:36:[value] warning: non-finite float value. assert \is_finite((float)(t1+x[i])); -tests/slicing/unravel-variance.c:37:[value] warning: accessing uninitialized left-value. assert \initialized(&x[i]); -tests/slicing/unravel-variance.c:37:[value] warning: non-finite float value. assert \is_finite(x[i]); -tests/slicing/unravel-variance.c:37:[value] warning: non-finite float value. assert \is_finite((float)(ssq+(float)(x[i]*x[i]))); +tests/slicing/unravel-variance.i:35:[value] warning: non-finite float value. assert \is_finite((float)(t1+x[i])); +tests/slicing/unravel-variance.i:36:[value] warning: accessing uninitialized left-value. assert \initialized(&x[i]); +tests/slicing/unravel-variance.i:36:[value] warning: non-finite float value. assert \is_finite(x[i]); +tests/slicing/unravel-variance.i:36:[value] warning: non-finite float value. assert \is_finite((float)(ssq+(float)(x[i]*x[i]))); [value] computing for function scanf <- main. - Called from tests/slicing/unravel-variance.c:35. + Called from tests/slicing/unravel-variance.i:34. [value] Done for function scanf [value] computing for function scanf <- main. - Called from tests/slicing/unravel-variance.c:35. + Called from tests/slicing/unravel-variance.i:34. [value] Done for function scanf [value] computing for function scanf <- main. - Called from tests/slicing/unravel-variance.c:35. + Called from tests/slicing/unravel-variance.i:34. [value] Done for function scanf -tests/slicing/unravel-variance.c:36:[value] warning: accessing out of bounds index. assert i < 1024; -tests/slicing/unravel-variance.c:39:[value] warning: non-finite float value. assert \is_finite((float)(t1/(float)n)); -tests/slicing/unravel-variance.c:40:[value] warning: signed overflow. assert -2147483648 ≤ n-1; -tests/slicing/unravel-variance.c:40:[value] warning: non-finite float value. assert \is_finite((float)((float)n*avg)); -tests/slicing/unravel-variance.c:40:[value] warning: non-finite float value. +tests/slicing/unravel-variance.i:35:[value] warning: accessing out of bounds index. assert i < 1024; +tests/slicing/unravel-variance.i:38:[value] warning: non-finite float value. assert \is_finite((float)(t1/(float)n)); +tests/slicing/unravel-variance.i:39:[value] warning: signed overflow. assert -2147483648 ≤ n-1; +tests/slicing/unravel-variance.i:39:[value] warning: non-finite float value. assert \is_finite((float)((float)n*avg)); +tests/slicing/unravel-variance.i:39:[value] warning: non-finite float value. assert \is_finite((float)((float)((float)n*avg)*avg)); -tests/slicing/unravel-variance.c:40:[value] warning: non-finite float value. +tests/slicing/unravel-variance.i:39:[value] warning: non-finite float value. assert \is_finite((float)(ssq-(float)((float)((float)n*avg)*avg))); -tests/slicing/unravel-variance.c:40:[value] warning: non-finite float value. +tests/slicing/unravel-variance.i:39:[value] warning: non-finite float value. assert \is_finite((float)((float)(ssq-(float)((float)((float)n*avg)*avg))/(float) ((int)(n-1)))); -tests/slicing/unravel-variance.c:41:[value] warning: non-finite float value. assert \is_finite((float)(t1*avg)); -tests/slicing/unravel-variance.c:41:[value] warning: non-finite float value. assert \is_finite((float)(ssq-(float)(t1*avg))); -tests/slicing/unravel-variance.c:41:[value] warning: non-finite float value. +tests/slicing/unravel-variance.i:40:[value] warning: non-finite float value. assert \is_finite((float)(t1*avg)); +tests/slicing/unravel-variance.i:40:[value] warning: non-finite float value. assert \is_finite((float)(ssq-(float)(t1*avg))); +tests/slicing/unravel-variance.i:40:[value] warning: non-finite float value. assert \is_finite((float)((float)(ssq-(float)(t1*avg))/(float)((int)(n-1)))); -tests/slicing/unravel-variance.c:42:[value] warning: non-finite float value. assert \is_finite((float)(t1*t1)); -tests/slicing/unravel-variance.c:42:[value] warning: non-finite float value. assert \is_finite((float)((float)(t1*t1)/(float)n)); -tests/slicing/unravel-variance.c:43:[value] warning: non-finite float value. assert \is_finite((float)(ssq-t1)); -tests/slicing/unravel-variance.c:43:[value] warning: non-finite float value. +tests/slicing/unravel-variance.i:41:[value] warning: non-finite float value. assert \is_finite((float)(t1*t1)); +tests/slicing/unravel-variance.i:41:[value] warning: non-finite float value. assert \is_finite((float)((float)(t1*t1)/(float)n)); +tests/slicing/unravel-variance.i:42:[value] warning: non-finite float value. assert \is_finite((float)(ssq-t1)); +tests/slicing/unravel-variance.i:42:[value] warning: non-finite float value. assert \is_finite((float)((float)(ssq-t1)/(float)((int)(n-1)))); -tests/slicing/unravel-variance.c:45:[value] entering loop for the first time -tests/slicing/unravel-variance.c:47:[value] warning: accessing uninitialized left-value. assert \initialized(&x[i]); -tests/slicing/unravel-variance.c:47:[value] warning: non-finite float value. assert \is_finite(x[i]); -tests/slicing/unravel-variance.c:47:[value] warning: non-finite float value. assert \is_finite((float)(x[i]-avg)); -tests/slicing/unravel-variance.c:49:[value] warning: non-finite float value. assert \is_finite((float)(dev*dev)); -tests/slicing/unravel-variance.c:48:[value] warning: non-finite float value. assert \is_finite((float)(t2+dev)); -tests/slicing/unravel-variance.c:49:[value] warning: non-finite float value. assert \is_finite((float)(t1+(float)(dev*dev))); -tests/slicing/unravel-variance.c:51:[value] warning: non-finite float value. assert \is_finite((float)(t2*t2)); -tests/slicing/unravel-variance.c:51:[value] warning: non-finite float value. assert \is_finite((float)((float)(t2*t2)/(float)n)); -tests/slicing/unravel-variance.c:51:[value] warning: non-finite float value. +tests/slicing/unravel-variance.i:44:[value] entering loop for the first time +tests/slicing/unravel-variance.i:46:[value] warning: accessing uninitialized left-value. assert \initialized(&x[i]); +tests/slicing/unravel-variance.i:46:[value] warning: non-finite float value. assert \is_finite(x[i]); +tests/slicing/unravel-variance.i:46:[value] warning: non-finite float value. assert \is_finite((float)(x[i]-avg)); +tests/slicing/unravel-variance.i:48:[value] warning: non-finite float value. assert \is_finite((float)(dev*dev)); +tests/slicing/unravel-variance.i:47:[value] warning: non-finite float value. assert \is_finite((float)(t2+dev)); +tests/slicing/unravel-variance.i:48:[value] warning: non-finite float value. assert \is_finite((float)(t1+(float)(dev*dev))); +tests/slicing/unravel-variance.i:50:[value] warning: non-finite float value. assert \is_finite((float)(t2*t2)); +tests/slicing/unravel-variance.i:50:[value] warning: non-finite float value. assert \is_finite((float)((float)(t2*t2)/(float)n)); +tests/slicing/unravel-variance.i:50:[value] warning: non-finite float value. assert \is_finite((float)(t1-(float)((float)(t2*t2)/(float)n))); -tests/slicing/unravel-variance.c:51:[value] warning: non-finite float value. +tests/slicing/unravel-variance.i:50:[value] warning: non-finite float value. assert \is_finite((float)((float)(t1-(float)((float)(t2*t2)/(float)n))/(float) ((int)(n-1)))); -tests/slicing/unravel-variance.c:52:[value] warning: non-finite float value. assert \is_finite((float)(t1/(float)((int)(n-1)))); -tests/slicing/unravel-variance.c:53:[value] warning: overflow in conversion from floating-point to integer. +tests/slicing/unravel-variance.i:51:[value] warning: non-finite float value. assert \is_finite((float)(t1/(float)((int)(n-1)))); +tests/slicing/unravel-variance.i:52:[value] warning: overflow in conversion from floating-point to integer. assert -2147483649 < var2; -tests/slicing/unravel-variance.c:53:[value] warning: overflow in conversion from floating-point to integer. +tests/slicing/unravel-variance.i:52:[value] warning: overflow in conversion from floating-point to integer. assert var2 < 2147483648; [value] computing for function printf1 <- main. - Called from tests/slicing/unravel-variance.c:53. -tests/slicing/unravel-variance.c:53:[kernel] warning: Neither code nor specification for function printf1, generating default assigns from the prototype + Called from tests/slicing/unravel-variance.i:52. +tests/slicing/unravel-variance.i:52:[kernel] warning: Neither code nor specification for function printf1, generating default assigns from the prototype [value] using specification for function printf1 [value] Done for function printf1 -tests/slicing/unravel-variance.c:54:[value] warning: overflow in conversion from floating-point to integer. +tests/slicing/unravel-variance.i:53:[value] warning: overflow in conversion from floating-point to integer. assert -2147483649 < var3; -tests/slicing/unravel-variance.c:54:[value] warning: overflow in conversion from floating-point to integer. +tests/slicing/unravel-variance.i:53:[value] warning: overflow in conversion from floating-point to integer. assert var3 < 2147483648; [value] computing for function printf2 <- main. - Called from tests/slicing/unravel-variance.c:54. -tests/slicing/unravel-variance.c:54:[kernel] warning: Neither code nor specification for function printf2, generating default assigns from the prototype + Called from tests/slicing/unravel-variance.i:53. +tests/slicing/unravel-variance.i:53:[kernel] warning: Neither code nor specification for function printf2, generating default assigns from the prototype [value] using specification for function printf2 [value] Done for function printf2 -tests/slicing/unravel-variance.c:55:[value] warning: overflow in conversion from floating-point to integer. +tests/slicing/unravel-variance.i:54:[value] warning: overflow in conversion from floating-point to integer. assert -2147483649 < var4; -tests/slicing/unravel-variance.c:55:[value] warning: overflow in conversion from floating-point to integer. +tests/slicing/unravel-variance.i:54:[value] warning: overflow in conversion from floating-point to integer. assert var4 < 2147483648; [value] computing for function printf3 <- main. - Called from tests/slicing/unravel-variance.c:55. -tests/slicing/unravel-variance.c:55:[kernel] warning: Neither code nor specification for function printf3, generating default assigns from the prototype + Called from tests/slicing/unravel-variance.i:54. +tests/slicing/unravel-variance.i:54:[kernel] warning: Neither code nor specification for function printf3, generating default assigns from the prototype [value] using specification for function printf3 [value] Done for function printf3 -tests/slicing/unravel-variance.c:56:[value] warning: overflow in conversion from floating-point to integer. +tests/slicing/unravel-variance.i:55:[value] warning: overflow in conversion from floating-point to integer. assert -2147483649 < var5; -tests/slicing/unravel-variance.c:56:[value] warning: overflow in conversion from floating-point to integer. +tests/slicing/unravel-variance.i:55:[value] warning: overflow in conversion from floating-point to integer. assert var5 < 2147483648; [value] computing for function printf4 <- main. - Called from tests/slicing/unravel-variance.c:56. -tests/slicing/unravel-variance.c:56:[kernel] warning: Neither code nor specification for function printf4, generating default assigns from the prototype + Called from tests/slicing/unravel-variance.i:55. +tests/slicing/unravel-variance.i:55:[kernel] warning: Neither code nor specification for function printf4, generating default assigns from the prototype [value] using specification for function printf4 [value] Done for function printf4 -tests/slicing/unravel-variance.c:57:[value] warning: overflow in conversion from floating-point to integer. +tests/slicing/unravel-variance.i:56:[value] warning: overflow in conversion from floating-point to integer. assert -2147483649 < var1; -tests/slicing/unravel-variance.c:57:[value] warning: overflow in conversion from floating-point to integer. +tests/slicing/unravel-variance.i:56:[value] warning: overflow in conversion from floating-point to integer. assert var1 < 2147483648; [value] computing for function printf5 <- main. - Called from tests/slicing/unravel-variance.c:57. -tests/slicing/unravel-variance.c:57:[kernel] warning: Neither code nor specification for function printf5, generating default assigns from the prototype + Called from tests/slicing/unravel-variance.i:56. +tests/slicing/unravel-variance.i:56:[kernel] warning: Neither code nor specification for function printf5, generating default assigns from the prototype [value] using specification for function printf5 [value] Done for function printf5 [value] Recording results for main @@ -182,3 +182,5 @@ void main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_4_unravel-variance.i (no preprocessing) diff --git a/tests/slicing/oracle/unsupported.0.res.oracle b/tests/slicing/oracle/unsupported.0.res.oracle index fba2c6539bfb97145844566c221b2356300a6d81..12289a4ad7a7faea93a79ab1e2e947a3fc349f65 100644 --- a/tests/slicing/oracle/unsupported.0.res.oracle +++ b/tests/slicing/oracle/unsupported.0.res.oracle @@ -44,3 +44,6 @@ int main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_0_unsupported.i (no preprocessing) +share/libc/__fc_builtin_for_normalization.i:30:[kernel] warning: found two contracts. Merging them diff --git a/tests/slicing/oracle/use_spec.0.res.oracle b/tests/slicing/oracle/use_spec.0.res.oracle index 9139bf1e5f1aaa16c583dd0580eefab6a5b62390..23901fbd52e2507e5b54b9e22f86fbb7ba5ac4af 100644 --- a/tests/slicing/oracle/use_spec.0.res.oracle +++ b/tests/slicing/oracle/use_spec.0.res.oracle @@ -45,3 +45,5 @@ int main(void) } +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/slicing/result/ocode_0_use_spec.i (no preprocessing) diff --git a/tests/slicing/ptr_fct.c b/tests/slicing/ptr_fct.i similarity index 52% rename from tests/slicing/ptr_fct.c rename to tests/slicing/ptr_fct.i index 4bb59417ef39e9b235b072705cf11a9edcbfb841..e72be186e63271bdba5703773b26937ca4e524fa 100644 --- a/tests/slicing/ptr_fct.c +++ b/tests/slicing/ptr_fct.i @@ -1,5 +1,5 @@ /* run.config - OPT: -check -main h -slice-return h -slicing-level 1 -journal-disable -then-on 'Slicing export' -print + OPT: -main h -slice-return h -slicing-level 1 -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i */ int X ; diff --git a/tests/slicing/same_sliced_name_bts1422.i b/tests/slicing/same_sliced_name_bts1422.i index 0ce921323e86535a8fa1985584ffbfd0f7be1e47..1933350efc046c4ffbb42f557be2e1068cd0d397 100644 --- a/tests/slicing/same_sliced_name_bts1422.i +++ b/tests/slicing/same_sliced_name_bts1422.i @@ -1,5 +1,5 @@ /* run.config -OPT: -main foo -slice-value y -then-on 'Slicing export' -print +OPT: -main foo -slice-value y -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check */ int y; diff --git a/tests/slicing/select_by_annot.c b/tests/slicing/select_by_annot.c deleted file mode 100644 index d4e28e07148259da1716576531c516e8d700c0f6..0000000000000000000000000000000000000000 --- a/tests/slicing/select_by_annot.c +++ /dev/null @@ -1,151 +0,0 @@ -/* run.config - EXECNOW: make -s tests/slicing/select_by_annot.cmxs - CMD: @frama-c@ -load-module tests/slicing/libSelect.cmxs -load-module tests/slicing/select_by_annot.cmxs - OPT: -deps -lib-entry -main main -journal-disable - CMD: bin/toplevel.opt - OPT: -check -deps -lib-entry -main main -slice-pragma main -journal-disable -then-on 'Slicing export' -print - OPT: -check -deps -lib-entry -main main -slice-assert main -journal-disable -then-on 'Slicing export' -print - OPT: -check -deps -lib-entry -main main -slice-pragma modifS -no-slice-callers -journal-disable -then-on 'Slicing export' -print - OPT: -check -deps -lib-entry -main main -slice-pragma f1 -no-slice-callers -journal-disable -then-on 'Slicing export' -print - OPT: -check -deps -lib-entry -main main -slice-pragma f2 -no-slice-callers -journal-disable -then-on 'Slicing export' -print - OPT: -check -deps -lib-entry -main main -slice-pragma f3 -no-slice-callers -journal-disable -then-on 'Slicing export' -print - OPT: -check -deps -lib-entry -main main -slice-pragma f4 -no-slice-callers -journal-disable -then-on 'Slicing export' -print - OPT: -check -deps -lib-entry -main main -slice-pragma f5 -no-slice-callers -journal-disable -then-on 'Slicing export' -print - OPT: -check -deps -lib-entry -main main -slice-pragma f6 -no-slice-callers -journal-disable -then-on 'Slicing export' -print - OPT: -check -deps -lib-entry -main main -slice-pragma f7 -no-slice-callers -journal-disable -then-on 'Slicing export' -print - OPT: -check -deps -lib-entry -main main -slice-loop-inv f8 -no-slice-callers -journal-disable -then-on 'Slicing export' -print - OPT: -check -deps -lib-entry -main main -slice-pragma f8 -no-slice-callers -journal-disable -then-on 'Slicing export' -print - OPT: -check -deps -lib-entry -main main -slice-assert f8 -no-slice-callers -journal-disable -then-on 'Slicing export' -print - OPT: -check -deps -lib-entry -main main -slice-pragma f9 -no-slice-callers -journal-disable -then-on 'Slicing export' -print - - -*/ -struct Tstr { int a; int b; } S; -int Sa ; - -int f1(int cond) { - int * p = &S.a ; - if (cond) { - //@ assert (cond != 0); - Sa = *p ; - } - //@slice pragma expr *p; - return Sa ; -} - -int f2(int cond) { - int * p = &S.a ; - if (cond) - //@ assert (cond != 0); - Sa = *p ; - //@slice pragma expr S.a; - return Sa ; -} - -int f3(int cond) { - int * p = &S.a ; - if (cond) { - //@ slice pragma ctrl; - Sa = *p ; - } - return Sa ; -} - -int f4(int cond) { - int * p = &S.a ; - if (cond) { - //@ slice pragma stmt; - Sa = *p ; - } - return Sa ; -} - -int f5(int cond) { - int * p = &S.a ; - if (cond) { - //@ slice pragma expr 1; - Sa = *p ; - } - return Sa ; -} - -int f6(int cond) { - int * p = &S.a ; - //@ slice pragma stmt; - if (cond) { - Sa = *p ; - Sa ++ ; - } - return Sa ; -} - -int f7(int cond) { - int * p = &S.a ; - if (cond) - //@ slice pragma stmt; - { - Sa = *p ; - Sa ++ ; - } - return Sa ; -} - - -int f8(int cond) { - int * p = &S.a ; - // - /*@ loop invariant cond >= 0 ; - loop variant cond ; */ - while (cond) - { //@ assert cond <= \at(cond,Pre) ; - // assert S.a + cond == \at(S.a + cond,Pre) ; - Sa = *p ; - //@ slice pragma stmt; - S.a ++ ; - cond--; - } - return Sa ; -} - -int X9, Y9, Z9 ; -void f9(int c1, int c2) { - if (c1 > c2) - goto L; - c1 = c2 ; - //@ slice pragma stmt; - {L: X9 = c1 ;} - Y9 = Z9 ; - Z9 = c2 ; -} - -void modifS (int a, int b) { - S.a += a; - S.b -= b; - //@slice pragma expr S.a; -} -int new_int (void); - int d; -int main (void) { - int a = 0; - int b = 0; - int c = 0; - if (d > 0) { - //@ assert (b == 0); - a = 1; - } - //@ slice pragma expr a+b; - int x = a+b+c+d; - modifS (a, b); - // assert (d>0 => a == 1) && (!(d>0) => a==0); - d = new_int (); - f1(d) ; - f2(d) ; - f3(d) ; - f4(d) ; - f5(d) ; - f6(d) ; - f7(d) ; - f8(d) ; - f9(d,a) ; - return x; -} diff --git a/tests/slicing/select_by_annot.i b/tests/slicing/select_by_annot.i new file mode 100644 index 0000000000000000000000000000000000000000..029345a34d7cd4f83d123fb51ec9c6bd2a66ee9e --- /dev/null +++ b/tests/slicing/select_by_annot.i @@ -0,0 +1,151 @@ +/* run.config + EXECNOW: make -s tests/slicing/select_by_annot.cmxs + CMD: @frama-c@ -load-module tests/slicing/libSelect.cmxs -load-module tests/slicing/select_by_annot.cmxs + OPT: -deps -lib-entry -main main -journal-disable + CMD: bin/toplevel.opt + OPT: -check -deps -lib-entry -main main -slice-pragma main -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check -no-deps + OPT: -check -deps -lib-entry -main main -slice-assert main -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check -no-deps + OPT: -check -deps -lib-entry -main main -slice-pragma modifS -no-slice-callers -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check -no-deps + OPT: -check -deps -lib-entry -main main -slice-pragma f1 -no-slice-callers -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check -no-deps + OPT: -check -deps -lib-entry -main main -slice-pragma f2 -no-slice-callers -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check -no-deps + OPT: -check -deps -lib-entry -main main -slice-pragma f3 -no-slice-callers -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check -no-deps + OPT: -check -deps -lib-entry -main main -slice-pragma f4 -no-slice-callers -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check -no-deps + OPT: -check -deps -lib-entry -main main -slice-pragma f5 -no-slice-callers -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check -no-deps + OPT: -check -deps -lib-entry -main main -slice-pragma f6 -no-slice-callers -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check -no-deps + OPT: -check -deps -lib-entry -main main -slice-pragma f7 -no-slice-callers -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check -no-deps + OPT: -check -deps -lib-entry -main main -slice-loop-inv f8 -no-slice-callers -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check -no-deps + OPT: -check -deps -lib-entry -main main -slice-pragma f8 -no-slice-callers -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check -no-deps + OPT: -check -deps -lib-entry -main main -slice-assert f8 -no-slice-callers -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check -no-deps + OPT: -check -deps -lib-entry -main main -slice-pragma f9 -no-slice-callers -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check -no-deps + + +*/ +struct Tstr { int a; int b; } S; +int Sa ; + +int f1(int cond) { + int * p = &S.a ; + if (cond) { + //@ assert (cond != 0); + Sa = *p ; + } + //@slice pragma expr *p; + return Sa ; +} + +int f2(int cond) { + int * p = &S.a ; + if (cond) + //@ assert (cond != 0); + Sa = *p ; + //@slice pragma expr S.a; + return Sa ; +} + +int f3(int cond) { + int * p = &S.a ; + if (cond) { + //@ slice pragma ctrl; + Sa = *p ; + } + return Sa ; +} + +int f4(int cond) { + int * p = &S.a ; + if (cond) { + //@ slice pragma stmt; + Sa = *p ; + } + return Sa ; +} + +int f5(int cond) { + int * p = &S.a ; + if (cond) { + //@ slice pragma expr 1; + Sa = *p ; + } + return Sa ; +} + +int f6(int cond) { + int * p = &S.a ; + //@ slice pragma stmt; + if (cond) { + Sa = *p ; + Sa ++ ; + } + return Sa ; +} + +int f7(int cond) { + int * p = &S.a ; + if (cond) + //@ slice pragma stmt; + { + Sa = *p ; + Sa ++ ; + } + return Sa ; +} + + +int f8(int cond) { + int * p = &S.a ; + // + /*@ loop invariant cond >= 0 ; + loop variant cond ; */ + while (cond) + { //@ assert cond <= \at(cond,Pre) ; + // assert S.a + cond == \at(S.a + cond,Pre) ; + Sa = *p ; + //@ slice pragma stmt; + S.a ++ ; + cond--; + } + return Sa ; +} + +int X9, Y9, Z9 ; +void f9(int c1, int c2) { + if (c1 > c2) + goto L; + c1 = c2 ; + //@ slice pragma stmt; + {L: X9 = c1 ;} + Y9 = Z9 ; + Z9 = c2 ; +} + +void modifS (int a, int b) { + S.a += a; + S.b -= b; + //@slice pragma expr S.a; +} +int new_int (void); + int d; +int main (void) { + int a = 0; + int b = 0; + int c = 0; + if (d > 0) { + //@ assert (b == 0); + a = 1; + } + //@ slice pragma expr a+b; + int x = a+b+c+d; + modifS (a, b); + // assert (d>0 => a == 1) && (!(d>0) => a==0); + d = new_int (); + f1(d) ; + f2(d) ; + f3(d) ; + f4(d) ; + f5(d) ; + f6(d) ; + f7(d) ; + f8(d) ; + f9(d,a) ; + return x; +} diff --git a/tests/slicing/select_calls.c b/tests/slicing/select_calls.c deleted file mode 100644 index 62faa646ba4bb65d9a21c1b93cc6489497eea7d1..0000000000000000000000000000000000000000 --- a/tests/slicing/select_calls.c +++ /dev/null @@ -1,44 +0,0 @@ -/* run.config - OPT: -check -lib-entry -main f -slice-calls send -journal-disable -then-on 'Slicing export' -print - OPT: -check -lib-entry -main g -slice-calls nothing -journal-disable -then-on 'Slicing export' -print - */ - -void nothing (void); - -void send(int x); - -void crypt(int* x); - -void uncrypt(int* x); - -int c; -int d; - -int f() { - int x = 0; - int y = 1; - int z = x; - - send(y); /* faille averee */ - send(z); - crypt(&y); /* y devient public */ - send(y); - - if (x) uncrypt(&y); /* code mort */ - if (y) send(y); - - if (d) uncrypt(&y); - send(y); /* faille potentielle */ - - crypt(&y); /* y devient public */ - if (c) y = z; - send(y); /* faille potentielle si dep. de contrôle */ - - return 0; -} - -void g (void) { - c = 1; - nothing (); - d = 3; -} diff --git a/tests/slicing/select_calls.i b/tests/slicing/select_calls.i new file mode 100644 index 0000000000000000000000000000000000000000..71116046043f52b49ea6e62d158d3d54744170b9 --- /dev/null +++ b/tests/slicing/select_calls.i @@ -0,0 +1,44 @@ +/* run.config + OPT: -lib-entry -main f -slice-calls send -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i + OPT: -lib-entry -main g -slice-calls nothing -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i + */ + +void nothing (void); + +void send(int x); + +void crypt(int* x); + +void uncrypt(int* x); + +int c; +int d; + +int f() { + int x = 0; + int y = 1; + int z = x; + + send(y); /* faille averee */ + send(z); + crypt(&y); /* y devient public */ + send(y); + + if (x) uncrypt(&y); /* code mort */ + if (y) send(y); + + if (d) uncrypt(&y); + send(y); /* faille potentielle */ + + crypt(&y); /* y devient public */ + if (c) y = z; + send(y); /* faille potentielle si dep. de contrôle */ + + return 0; +} + +void g (void) { + c = 1; + nothing (); + d = 3; +} diff --git a/tests/slicing/select_return.c b/tests/slicing/select_return.c deleted file mode 100644 index 1221db751f529ca54e2b7fe5c70189e7f8125a1c..0000000000000000000000000000000000000000 --- a/tests/slicing/select_return.c +++ /dev/null @@ -1,55 +0,0 @@ -/* run.config - OPT: -check -slice-calls send -lib-entry -main g -slicing-level 0 -no-slice-callers -journal-disable -then-on 'Slicing export' -print - OPT: -check -slice-calls send -lib-entry -main g -slicing-level 1 -no-slice-callers -journal-disable -then-on 'Slicing export' -print - OPT: -check -slice-calls send -lib-entry -main g -slicing-level 2 -no-slice-callers -journal-disable -then-on 'Slicing export' -print - OPT: -check -slice-calls send -lib-entry -main g -slicing-level 3 -no-slice-callers -journal-disable -then-on 'Slicing export' -print - OPT: -check -slice-calls send,send_bis -lib-entry -main g -slicing-level 0 -no-slice-callers -journal-disable -then-on 'Slicing export' -print - OPT: -check -slice-calls send,send_bis -lib-entry -main g -slicing-level 1 -no-slice-callers -journal-disable -then-on 'Slicing export' -print - OPT: -check -slice-calls send,send_bis -lib-entry -main g -slicing-level 2 -no-slice-callers -journal-disable -then-on 'Slicing export' -print - OPT: -check -slice-calls send,send_bis -lib-entry -main g -slicing-level 3 -no-slice-callers -journal-disable -then-on 'Slicing export' -print - OPT: -check -slice-calls "send, send_bis" -lib-entry -main g -slicing-level 1 -journal-disable -then-on 'Slicing export' -print - OPT: -check -slice-calls "send, send_bis" -lib-entry -main g -slicing-level 2 -journal-disable -then-on 'Slicing export' -print - OPT: -check -slice-calls "send,send_bis" -lib-entry -main g -slicing-level 3 -journal-disable -then-on 'Slicing export' -print - OPT: -check -slice-return f -lib-entry -main g -slicing-level 0 -no-slice-callers -journal-disable -then-on 'Slicing export' -print - OPT: -check -slice-return f -lib-entry -main g -slicing-level 1 -no-slice-callers -journal-disable -then-on 'Slicing export' -print - OPT: -check -slice-return f -lib-entry -main g -slicing-level 2 -no-slice-callers -journal-disable -then-on 'Slicing export' -print - OPT: -check -slice-return f -lib-entry -main g -slicing-level 3 -no-slice-callers -journal-disable -then-on 'Slicing export' -print - OPT: -check -slice-pragma f -lib-entry -main g -slicing-level 0 -no-slice-callers -journal-disable -then-on 'Slicing export' -print - OPT: -check -slice-pragma f -lib-entry -main g -slicing-level 1 -no-slice-callers -journal-disable -then-on 'Slicing export' -print - OPT: -check -slice-pragma f -lib-entry -main g -slicing-level 2 -no-slice-callers -journal-disable -then-on 'Slicing export' -print - OPT: -check -slice-pragma f -lib-entry -main g -slicing-level 3 -no-slice-callers -journal-disable -then-on 'Slicing export' -print - OPT: -check -slice-value H -lib-entry -main g -slicing-level 1 -no-slice-callers -journal-disable -then-on 'Slicing export' -print - OPT: -check -slice-value H -lib-entry -main g -slicing-level 2 -no-slice-callers -journal-disable -then-on 'Slicing export' -print - OPT: -check -slice-value H -lib-entry -main g -slicing-level 3 -no-slice-callers -journal-disable -then-on 'Slicing export' -print -*/ - -int G,H,I; - -int get (int y) ; - -void send(int x); - -void send_bis(int x); - -int k(int a, int b, int c, int d) { - int cond = get (d) ; - G = b; - H = c; - if (cond) - send_bis (d); - return a; -} - -void g(int b, int c) { - int r = k(0,0,c,0); - f(b); -} - -int f(int y) { - k(0,0,0,0); - int r = k(0,y,0,0); - int z = k(G,0,0,0); - //@ slice pragma expr z; - send (z); - return z; -} diff --git a/tests/slicing/select_return.i b/tests/slicing/select_return.i new file mode 100644 index 0000000000000000000000000000000000000000..2e3fff008df7a6728a3107313b3c871d29f62836 --- /dev/null +++ b/tests/slicing/select_return.i @@ -0,0 +1,55 @@ +/* run.config + OPT: -check -slice-calls send -lib-entry -main g -slicing-level 0 -no-slice-callers -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check + OPT: -check -slice-calls send -lib-entry -main g -slicing-level 1 -no-slice-callers -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check + OPT: -check -slice-calls send -lib-entry -main g -slicing-level 2 -no-slice-callers -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check + OPT: -check -slice-calls send -lib-entry -main g -slicing-level 3 -no-slice-callers -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check + OPT: -check -slice-calls send,send_bis -lib-entry -main g -slicing-level 0 -no-slice-callers -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check + OPT: -check -slice-calls send,send_bis -lib-entry -main g -slicing-level 1 -no-slice-callers -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check + OPT: -check -slice-calls send,send_bis -lib-entry -main g -slicing-level 2 -no-slice-callers -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check + OPT: -check -slice-calls send,send_bis -lib-entry -main g -slicing-level 3 -no-slice-callers -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check + OPT: -check -slice-calls "send, send_bis" -lib-entry -main g -slicing-level 1 -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check + OPT: -check -slice-calls "send, send_bis" -lib-entry -main g -slicing-level 2 -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check + OPT: -check -slice-calls "send,send_bis" -lib-entry -main g -slicing-level 3 -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check + OPT: -check -slice-return f -lib-entry -main g -slicing-level 0 -no-slice-callers -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check + OPT: -check -slice-return f -lib-entry -main g -slicing-level 1 -no-slice-callers -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check + OPT: -check -slice-return f -lib-entry -main g -slicing-level 2 -no-slice-callers -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check + OPT: -check -slice-return f -lib-entry -main g -slicing-level 3 -no-slice-callers -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check + OPT: -check -slice-pragma f -lib-entry -main g -slicing-level 0 -no-slice-callers -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check + OPT: -check -slice-pragma f -lib-entry -main g -slicing-level 1 -no-slice-callers -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check + OPT: -check -slice-pragma f -lib-entry -main g -slicing-level 2 -no-slice-callers -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check + OPT: -check -slice-pragma f -lib-entry -main g -slicing-level 3 -no-slice-callers -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check + OPT: -check -slice-value H -lib-entry -main g -slicing-level 1 -no-slice-callers -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check + OPT: -check -slice-value H -lib-entry -main g -slicing-level 2 -no-slice-callers -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check + OPT: -check -slice-value H -lib-entry -main g -slicing-level 3 -no-slice-callers -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check +*/ + +int G,H,I; + +int get (int y) ; + +void send(int x); + +void send_bis(int x); + +int k(int a, int b, int c, int d) { + int cond = get (d) ; + G = b; + H = c; + if (cond) + send_bis (d); + return a; +} + +void g(int b, int c) { + int r = k(0,0,c,0); + f(b); +} + +int f(int y) { + k(0,0,0,0); + int r = k(0,y,0,0); + int z = k(G,0,0,0); + //@ slice pragma expr z; + send (z); + return z; +} diff --git a/tests/slicing/select_return_bis.c b/tests/slicing/select_return_bis.c deleted file mode 100644 index aad67a4fbca5ade23e95709dfbda9e98f0493711..0000000000000000000000000000000000000000 --- a/tests/slicing/select_return_bis.c +++ /dev/null @@ -1,46 +0,0 @@ -/* run.config - OPT: -check -slice-calls send -lib-entry -main g -slicing-level 0 -no-slice-callers -journal-disable -then-on 'Slicing export' -print - OPT: -check -slice-calls send -lib-entry -main g -slicing-level 1 -no-slice-callers -journal-disable -then-on 'Slicing export' -print - OPT: -check -slice-calls send -lib-entry -main g -slicing-level 2 -no-slice-callers -journal-disable -then-on 'Slicing export' -print - OPT: -check -slice-calls send -lib-entry -main g -slicing-level 3 -no-slice-callers -journal-disable -then-on 'Slicing export' -print - OPT: -check -slice-calls send,send_bis -lib-entry -main g -slicing-level 0 -no-slice-callers -journal-disable -then-on 'Slicing export' -print - OPT: -check -slice-calls send,send_bis -lib-entry -main g -slicing-level 1 -no-slice-callers -journal-disable -then-on 'Slicing export' -print - OPT: -check -slice-calls send,send_bis -lib-entry -main g -slicing-level 2 -no-slice-callers -journal-disable -then-on 'Slicing export' -print - OPT: -check -slice-calls send,send_bis -lib-entry -main g -slicing-level 3 -no-slice-callers -journal-disable -then-on 'Slicing export' -print - OPT: -check -slice-calls send,send_bis -lib-entry -main g -slicing-level 1 -journal-disable -then-on 'Slicing export' -print - OPT: -check -slice-calls send,send_bis -lib-entry -main g -slicing-level 2 -journal-disable -then-on 'Slicing export' -print - OPT: -check -slice-calls send,send_bis -lib-entry -main g -slicing-level 3 -journal-disable -then-on 'Slicing export' -print -*/ -int G,H,I; - -int get (int y) ; - -void send(int x); -void send_bis(int x); - -void k_bis(int ab, int c, int d) { - H = c; - if (ab) - send_bis (d); -} - -int k(int a, int b, int c, int d) { - int cond = get (d) ; - G = b; - k_bis (cond, c, d); - return a; -} - -void g(int b, int c) { - int r = k(0,0,c,0); - f(b); -} - -int f(int y) { - k(0,0,0,0); - int r = k(0,y,0,0); - int z = k(G,0,0,0); - //@ slice pragma expr z; - send (z); - return z; -} diff --git a/tests/slicing/select_return_bis.i b/tests/slicing/select_return_bis.i new file mode 100644 index 0000000000000000000000000000000000000000..419466e67be73fe35b13de89de73eb465b1fcc80 --- /dev/null +++ b/tests/slicing/select_return_bis.i @@ -0,0 +1,46 @@ +/* run.config + OPT: -check -slice-calls send -lib-entry -main g -slicing-level 0 -no-slice-callers -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check + OPT: -check -slice-calls send -lib-entry -main g -slicing-level 1 -no-slice-callers -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check + OPT: -check -slice-calls send -lib-entry -main g -slicing-level 2 -no-slice-callers -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check + OPT: -check -slice-calls send -lib-entry -main g -slicing-level 3 -no-slice-callers -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check + OPT: -check -slice-calls send,send_bis -lib-entry -main g -slicing-level 0 -no-slice-callers -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check + OPT: -check -slice-calls send,send_bis -lib-entry -main g -slicing-level 1 -no-slice-callers -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check + OPT: -check -slice-calls send,send_bis -lib-entry -main g -slicing-level 2 -no-slice-callers -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check + OPT: -check -slice-calls send,send_bis -lib-entry -main g -slicing-level 3 -no-slice-callers -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check + OPT: -check -slice-calls send,send_bis -lib-entry -main g -slicing-level 1 -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check + OPT: -check -slice-calls send,send_bis -lib-entry -main g -slicing-level 2 -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check + OPT: -check -slice-calls send,send_bis -lib-entry -main g -slicing-level 3 -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check +*/ +int G,H,I; + +int get (int y) ; + +void send(int x); +void send_bis(int x); + +void k_bis(int ab, int c, int d) { + H = c; + if (ab) + send_bis (d); +} + +int k(int a, int b, int c, int d) { + int cond = get (d) ; + G = b; + k_bis (cond, c, d); + return a; +} + +void g(int b, int c) { + int r = k(0,0,c,0); + f(b); +} + +int f(int y) { + k(0,0,0,0); + int r = k(0,y,0,0); + int z = k(G,0,0,0); + //@ slice pragma expr z; + send (z); + return z; +} diff --git a/tests/slicing/select_simple.c b/tests/slicing/select_simple.i similarity index 88% rename from tests/slicing/select_simple.c rename to tests/slicing/select_simple.i index 76f1111b13b50c51fb935aeb4539cce092496642..7721c59731039d4201faad79fe39e4aaa18f29a4 100644 --- a/tests/slicing/select_simple.c +++ b/tests/slicing/select_simple.i @@ -1,7 +1,7 @@ /* run.config EXECNOW: make -s tests/slicing/select_simple.cmxs CMD: @frama-c@ -load-module tests/slicing/libSelect.cmxs -load-module tests/slicing/select_simple.cmxs - OPT: -check -deps -journal-disable + OPT: -deps -journal-disable */ /* dummy source file in order to test select_simple.ml */ diff --git a/tests/slicing/simple_intra_slice.c b/tests/slicing/simple_intra_slice.i similarity index 84% rename from tests/slicing/simple_intra_slice.c rename to tests/slicing/simple_intra_slice.i index 6752a03d7cb505e568eb82b6ea6a19938de4ba01..3bd64a0ae6e517e21ad7f40ef18e1c1a8018075a 100644 --- a/tests/slicing/simple_intra_slice.c +++ b/tests/slicing/simple_intra_slice.i @@ -1,21 +1,21 @@ /* run.config EXECNOW: make -s tests/slicing/simple_intra_slice.cmxs CMD: @frama-c@ -load-module tests/slicing/libSelect.cmxs -load-module tests/slicing/simple_intra_slice.cmxs - OPT: -check -deps -slicing-level 2 -no-slice-callers -journal-disable + OPT: -deps -no-slice-callers -journal-disable */ int Unknown; int G; -/* on sélectionne le return. +/* on sélectionne le return. on doit garder juste a (pas G et b) */ int f1 (int x, int y) { int a = 1, b = 2; G = x + a; return y + b; } -/* on sélectionne le return. - pas de réduction intreproc -> b doit être marqué Spare +/* on sélectionne le return. + pas de réduction intreproc -> b doit être marqué Spare et recursivement a aussi. */ int f2 (void) { @@ -23,7 +23,7 @@ int f2 (void) { return f1 (b, c); } -/* avec un IF : sélection de la branche then */ +/* avec un IF : sélection de la branche then */ int f3 (int c) { int a = 1, b = 2; int x = 0; @@ -33,7 +33,7 @@ int f3 (int c) { G = a; return x; } -/* avec un IF : sélection de la branche else */ +/* avec un IF : sélection de la branche else */ int f4 (int c) { int a = 1, b = 2; int x = 0; diff --git a/tests/slicing/sizeof.c b/tests/slicing/sizeof.c deleted file mode 100644 index 81c0fb5baa790b3fec7f5bc066b6981246efd5bc..0000000000000000000000000000000000000000 --- a/tests/slicing/sizeof.c +++ /dev/null @@ -1,106 +0,0 @@ -/* run.config - OPT: -check -deps -slice-return main -journal-disable -then-on 'Slicing export' -print - OPT: -check -deps -slice-return SizeOf_1 -no-slice-callers -journal-disable -then-on 'Slicing export' -print - OPT: -check -deps -slice-return SizeOf_2 -no-slice-callers -journal-disable -then-on 'Slicing export' -print - OPT: -check -deps -slice-return SizeOfE_pt1 -no-slice-callers -journal-disable -then-on 'Slicing export' -print - OPT: -check -deps -slice-return SizeOfE_pt2 -no-slice-callers -journal-disable -then-on 'Slicing export' -print - OPT: -check -deps -slice-return SizeOfE_pt3 -no-slice-callers -journal-disable -then-on 'Slicing export' -print - OPT: -check -deps -slice-return SizeOfE_pt_deref_1 -no-slice-callers -journal-disable -then-on 'Slicing export' -print - OPT: -check -deps -slice-return SizeOfE_tab_1 -no-slice-callers -journal-disable -then-on 'Slicing export' -print - OPT: -check -deps -slice-return SizeOfE_pt_tab_1 -no-slice-callers -journal-disable -then-on 'Slicing export' -print - OPT: -check -deps -slice-return SizeOfE_pt_tab_2 -no-slice-callers -journal-disable -then-on 'Slicing export' -print - OPT: -check -deps -slice-return SizeOfE_tab_acces_1 -no-slice-callers -journal-disable -then-on 'Slicing export' -print - OPT: -check -deps -slice-pragma main -journal-disable -then-on 'Slicing export' -print - OPT: -check -deps -slice-assert main -journal-disable -then-on 'Slicing export' -print -*/ -struct St { int i, *p, tab[5] ; } st ; - -unsigned int SizeOf_1 (void) { - int x = 1; - int i = 2; - int *p = &x; - int tab[5] = {0,1,2,3,4}; - return sizeof(int *) ; -} -unsigned int SizeOf_2 (void) { - int x = 1; - int i = 2; - int *p = &x; - int tab[5] = {0,1,2,3,4}; - return sizeof(struct St) ; -} -unsigned int SizeOfE_pt1 (void) { - int x = 1; - int i = 2; - int *p = &x; - int tab[5] = {0,1,2,3,4}; - return sizeof(&x) ; -} -unsigned int SizeOfE_pt2 (void) { - int x = 1; - int i = 2; - int *p = &x; - int tab[5] = {0,1,2,3,4}; - return sizeof(p) ; -} -unsigned int SizeOfE_pt3 (void) { - int x = 1; - int i = 2; - int *p = &x; - int tab[5] = {0,1,2,3,4}; - return sizeof(p+i) ; -} -unsigned int SizeOfE_pt_deref_1 (void) { - int x = 1; - int i = 2; - int *p = &x; - int tab[5] = {0,1,2,3,4}; - return sizeof(*(p+i)) ; -} -unsigned int SizeOfE_tab_1 (void) { - int x = 1; - int i = 2; - int *p = &x; - int tab[5] = {0,1,2,3,4}; - return sizeof(tab) ; -} -unsigned int SizeOfE_pt_tab_1 (void) { - int x = 1; - int i = 2; - int *p = &x; - int tab[5] = {0,1,2,3,4}; - return sizeof(tab+i) ; -} -unsigned int SizeOfE_pt_tab_2 (void) { - int x = 1; - int i = 2; - int *p = &x; - int tab[5] = {0,1,2,3,4}; - return sizeof(&(tab[i])) ; -} -unsigned int SizeOfE_tab_acces_1 (void) { - int x = 1; - int i = 2; - int *p = &x; - int tab[5] = {0,1,2,3,4}; - return sizeof(tab[i]) ; -} - -int main (void) { - int r = 0 ; - r += sizeof (struct St); - // How to write something like this: assert r == sizeof (st) - //@ assert r != 0; - r += SizeOf_1 (); - r += SizeOf_2 (); - r += SizeOfE_pt1 (); - r += SizeOfE_pt2 (); - r += SizeOfE_pt3 (); - r += SizeOfE_pt_deref_1 (); - r += SizeOfE_tab_1 (); - r += SizeOfE_pt_tab_1 (); - r += SizeOfE_pt_tab_2 (); - r += SizeOfE_tab_acces_1 (); - //@ slice pragma expr r; - return r; -} diff --git a/tests/slicing/sizeof.i b/tests/slicing/sizeof.i new file mode 100644 index 0000000000000000000000000000000000000000..6bdbf2bee49ec13c67d0c9f277107407aaef9cb9 --- /dev/null +++ b/tests/slicing/sizeof.i @@ -0,0 +1,106 @@ +/* run.config + OPT: -check -deps -slice-return main -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check -no-deps + OPT: -check -deps -slice-return SizeOf_1 -no-slice-callers -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check -no-deps + OPT: -check -deps -slice-return SizeOf_2 -no-slice-callers -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check -no-deps + OPT: -check -deps -slice-return SizeOfE_pt1 -no-slice-callers -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check -no-deps + OPT: -check -deps -slice-return SizeOfE_pt2 -no-slice-callers -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check -no-deps + OPT: -check -deps -slice-return SizeOfE_pt3 -no-slice-callers -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check -no-deps + OPT: -check -deps -slice-return SizeOfE_pt_deref_1 -no-slice-callers -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check -no-deps + OPT: -check -deps -slice-return SizeOfE_tab_1 -no-slice-callers -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check -no-deps + OPT: -check -deps -slice-return SizeOfE_pt_tab_1 -no-slice-callers -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check -no-deps + OPT: -check -deps -slice-return SizeOfE_pt_tab_2 -no-slice-callers -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check -no-deps + OPT: -check -deps -slice-return SizeOfE_tab_acces_1 -no-slice-callers -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check -no-deps + OPT: -check -deps -slice-pragma main -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check -no-deps + OPT: -check -deps -slice-assert main -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check -no-deps +*/ +struct St { int i, *p, tab[5] ; } st ; + +unsigned int SizeOf_1 (void) { + int x = 1; + int i = 2; + int *p = &x; + int tab[5] = {0,1,2,3,4}; + return sizeof(int *) ; +} +unsigned int SizeOf_2 (void) { + int x = 1; + int i = 2; + int *p = &x; + int tab[5] = {0,1,2,3,4}; + return sizeof(struct St) ; +} +unsigned int SizeOfE_pt1 (void) { + int x = 1; + int i = 2; + int *p = &x; + int tab[5] = {0,1,2,3,4}; + return sizeof(&x) ; +} +unsigned int SizeOfE_pt2 (void) { + int x = 1; + int i = 2; + int *p = &x; + int tab[5] = {0,1,2,3,4}; + return sizeof(p) ; +} +unsigned int SizeOfE_pt3 (void) { + int x = 1; + int i = 2; + int *p = &x; + int tab[5] = {0,1,2,3,4}; + return sizeof(p+i) ; +} +unsigned int SizeOfE_pt_deref_1 (void) { + int x = 1; + int i = 2; + int *p = &x; + int tab[5] = {0,1,2,3,4}; + return sizeof(*(p+i)) ; +} +unsigned int SizeOfE_tab_1 (void) { + int x = 1; + int i = 2; + int *p = &x; + int tab[5] = {0,1,2,3,4}; + return sizeof(tab) ; +} +unsigned int SizeOfE_pt_tab_1 (void) { + int x = 1; + int i = 2; + int *p = &x; + int tab[5] = {0,1,2,3,4}; + return sizeof(tab+i) ; +} +unsigned int SizeOfE_pt_tab_2 (void) { + int x = 1; + int i = 2; + int *p = &x; + int tab[5] = {0,1,2,3,4}; + return sizeof(&(tab[i])) ; +} +unsigned int SizeOfE_tab_acces_1 (void) { + int x = 1; + int i = 2; + int *p = &x; + int tab[5] = {0,1,2,3,4}; + return sizeof(tab[i]) ; +} + +int main (void) { + int r = 0 ; + r += sizeof (struct St); + // How to write something like this: assert r == sizeof (st) + //@ assert r != 0; + r += SizeOf_1 (); + r += SizeOf_2 (); + r += SizeOfE_pt1 (); + r += SizeOfE_pt2 (); + r += SizeOfE_pt3 (); + r += SizeOfE_pt_deref_1 (); + r += SizeOfE_tab_1 (); + r += SizeOfE_pt_tab_1 (); + r += SizeOfE_pt_tab_2 (); + r += SizeOfE_tab_acces_1 (); + //@ slice pragma expr r; + return r; +} diff --git a/tests/slicing/slice_behavior.c b/tests/slicing/slice_behavior.c deleted file mode 100644 index 3aa754e3c9a118483b8584c9a7dd1e035a04162a..0000000000000000000000000000000000000000 --- a/tests/slicing/slice_behavior.c +++ /dev/null @@ -1,14 +0,0 @@ -/* run.config - OPT: -check -val -slice-assert f -slicing-level 0 -journal-disable -then-on 'Slicing export' -print -*/ -/*@ requires a > 0; */ -int f(int a) { - int b = 2 * a; - /*@ assert a < b; */ - return 42; -} - -int main () { - f(10); - return 0; -} diff --git a/tests/slicing/slice_behavior.i b/tests/slicing/slice_behavior.i new file mode 100644 index 0000000000000000000000000000000000000000..c72934b8b2febdb9a477e52301a196df0942c8e2 --- /dev/null +++ b/tests/slicing/slice_behavior.i @@ -0,0 +1,14 @@ +/* run.config + OPT: -check -val -slice-assert f -slicing-level 0 -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check -no-val +*/ +/*@ requires a > 0; */ +int f(int a) { + int b = 2 * a; + /*@ assert a < b; */ + return 42; +} + +int main () { + f(10); + return 0; +} diff --git a/tests/slicing/slice_no_body.c b/tests/slicing/slice_no_body.i similarity index 88% rename from tests/slicing/slice_no_body.c rename to tests/slicing/slice_no_body.i index 44331cfde9f9a1851d14aa2d8dbffd26a3216c74..36196b6f5ef0bc4c7a81441eb5566d6d8575df4f 100644 --- a/tests/slicing/slice_no_body.c +++ b/tests/slicing/slice_no_body.i @@ -1,7 +1,7 @@ /* run.config EXECNOW: make -s tests/slicing/slice_no_body.cmxs CMD: @frama-c@ -load-module tests/slicing/libSelect.cmxs -load-module tests/slicing/slice_no_body.cmxs - OPT: -check -deps -lib-entry -main h -journal-disable + OPT: -deps -lib-entry -main h -journal-disable */ int G; diff --git a/tests/slicing/slice_pragma_stmt.c b/tests/slicing/slice_pragma_stmt.c deleted file mode 100644 index bb18fd1f9cff2a538cb0681d9ee50150a3825af4..0000000000000000000000000000000000000000 --- a/tests/slicing/slice_pragma_stmt.c +++ /dev/null @@ -1,162 +0,0 @@ -/* run.config - OPT: -check -print -journal-disable - OPT: -check -main nop1 -slice-pragma nop1 -journal-disable -then-on 'Slicing export' -print - OPT: -check -main nop2 -slice-pragma nop2 -journal-disable -then-on 'Slicing export' -print - OPT: -check -main nop3 -slice-pragma nop3 -journal-disable -then-on 'Slicing export' -print - OPT: -check -main nop4 -slice-pragma nop4 -journal-disable -then-on 'Slicing export' -print - OPT: -check -main nop5 -slice-pragma nop5 -journal-disable -then-on 'Slicing export' -print - OPT: -check -main nop6 -slice-pragma nop6 -journal-disable -then-on 'Slicing export' -print - OPT: -check -main nop7 -slice-pragma nop7 -journal-disable -then-on 'Slicing export' -print - OPT: -check -main nop8 -slice-pragma nop8 -journal-disable -then-on 'Slicing export' -print - OPT: -check -main double_effect1 -slice-pragma double_effect1 -journal-disable -then-on 'Slicing export' -print - OPT: -check -main double_effect2 -slice-pragma double_effect2 -journal-disable -then-on 'Slicing export' -print - OPT: -check -main double_effect3 -slice-pragma double_effect3 -journal-disable -then-on 'Slicing export' -print - OPT: -check -main double_effect4 -slice-pragma double_effect4 -journal-disable -then-on 'Slicing export' -print - OPT: -check -main double_effect5 -slice-pragma double_effect5 -journal-disable -then-on 'Slicing export' -print - OPT: -check -main test1 -slice-pragma test1 -journal-disable -then-on 'Slicing export' -print - OPT: -check -main test2 -slice-pragma test2 -journal-disable -then-on 'Slicing export' -print - OPT: -check -main test3 -slice-pragma test3 -journal-disable -then-on 'Slicing export' -print - OPT: -check -main test4 -slice-pragma test4 -journal-disable -then-on 'Slicing export' -print - OPT: -check -main test5 -slice-pragma test5 -journal-disable -then-on 'Slicing export' -print - OPT: -check -main test6 -slice-pragma test6 -journal-disable -then-on 'Slicing export' -print - OPT: -check -main test7 -slice-pragma test7 -journal-disable -then-on 'Slicing export' -print - OPT: -check -main test8 -slice-pragma test8 -journal-disable -then-on 'Slicing export' -print - OPT: -check -main test9 -slice-pragma test9 -journal-disable -then-on 'Slicing export' -print -*/ -typedef int stmt, expr, slice; -int x, y ; -//------------------- -void nop1(int c1, int c2) { - //@ slice pragma stmt; // <----- slicing isn't correct since the effect... - ; // <----- ...is missing with -print option - x = 1 ; - } -void nop2(int c1, int c2) { - //@ slice pragma stmt; // <----- slicing isn't correct since the effect... - {;} // <----- ...is missing with -print option - x = 1 ; - } - -void nop3(int c1, int c2) { - //@ slice pragma stmt; // <----- slicing isn't correct since the effect... - {;{;;};} // <----- ...is missing with -print option - x = 1 ; - } -void nop4(int c1, int c2) { - //@ slice pragma stmt; - if (c1) {;{;;};} - x = 1 ; - } -void nop5(int c1, int c2) { - if (c2) goto L ; - //@ slice pragma stmt; // <----- slicing is correct, but not the output - L:; - x = 1 ; - } -void nop6(int c1, int c2) { - //@ slice pragma stmt; // <----- slicing is correct, but not the output - L:; - x = 1 ; - } -void nop7(int c1, int c2) { - //@ slice pragma stmt; // <----- slicing is correct, but not the output - L:{;} - x = 1 ; - } -void nop8(int c1, int c2) { - //@ slice pragma stmt; // <----- slicing is correct, but not the output - {L:{;}} - x = 1 ; - } -//------------------- -void double_effect1(int c1, int c2) { - //@ slice pragma stmt; // <----- slicing isn't correct since the... - x += y++ ; // <----- ...effect is lost with -print option - } -void double_effect2(int c1, int c2) { - //@ slice pragma stmt; // <----- slicing isn't correct since the... - { x += y++ ; } // <----- ...effect is lost with -print option - } -void double_effect3(int c1, int c2) { - if (c2) goto L ; - //@ slice pragma stmt; // <----- slicing isn't correct since the... - L: x += y++ ; // <----- ...effect is lost with -print option - } -void double_effect4(int c1, int c2) { - if (c2) goto L ; - //@ slice pragma stmt; // <----- slicing isn't correct since the... - L: {x += y++ ; } // <----- ...effect is lost with -print option - } -void double_effect5(int c1, int c2) { - if (c2) - //@ slice pragma stmt; - {x += y++ ; } - } -//------------------- -void test1(int c1, int c2) { - if (c1 < c2) - c1 = c2 ; - //@ slice pragma stmt; - x = c1 ; -} -void test2(int c1, int c2) { - if (c1 < c2) - c1 = c2 ; - //@ slice pragma stmt; - x = c1 ; - y = c2 ; -} -void test3(int c1, int c2) { - if (c1 < c2) - c1 = c2 ; - //@ slice pragma stmt; - {x = c1 ;} - y = c2 ; -} -void test4(int c1, int c2) { - if (c1 < c2) - c1 = c2 ; - //@ slice pragma stmt; // <----- slicing isn't correct since the... - {x = c1 ; c2 ++ ;} // <----- ...effect is lost with -print option - y = c2 ; -} -void test5(int c1, int c2) { - if (c1 < c2) - goto L; - c1 = c2 ; - //@ slice pragma stmt; // <----- slicing isn't correct since the... - L: x = c1 ; // <----- ...effect is lost with -print option - y = c2 ; -} -void test6(int c1, int c2) { - if (c1 < c2) - goto L; - c1 = c2 ; - //@ slice pragma stmt; // <----- slicing isn't correct since the... - L: x = c1++ ; // <----- ...effect is lost with -print option - y = c2 ; -} -void test7(int c1, int c2) { - if (c1 < c2) - goto L; - c1 = c2 ; - //@ slice pragma stmt; // <----- slicing isn't correct since the... - L: {x = c1++ ; c2 ++ ;} // <----- ...effect is lost with -print option - y = c2 ; -} -void test8(int c1, int c2) { - if (c1 < c2) - goto L; - c1 = c2 ; - //@ slice pragma stmt; // <----- slicing isn't correct since the... - { L: x = c1++ ; c2 ++ ;} // <----- ...effect is lost with -print option - y = c2 ; -} -void test9(int c1, int c2) { - if (c1 < c2) - goto L; - c1 = c2 ; - //@ slice pragma stmt; // <----- slicing isn't correct since the... - { x = c1 ; L: c2 = c2 + 1 ;} // <----- ...effect is lost with -print option - y = c2 ; -} diff --git a/tests/slicing/slice_pragma_stmt.i b/tests/slicing/slice_pragma_stmt.i new file mode 100644 index 0000000000000000000000000000000000000000..ece767430a14144b8aaa8868ddf7013e0d47614a --- /dev/null +++ b/tests/slicing/slice_pragma_stmt.i @@ -0,0 +1,162 @@ +/* run.config + OPT: -print -journal-disable + OPT: -main nop1 -slice-pragma nop1 -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i + OPT: -main nop2 -slice-pragma nop2 -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i + OPT: -main nop3 -slice-pragma nop3 -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i + OPT: -main nop4 -slice-pragma nop4 -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i + OPT: -main nop5 -slice-pragma nop5 -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i + OPT: -main nop6 -slice-pragma nop6 -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i + OPT: -main nop7 -slice-pragma nop7 -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i + OPT: -main nop8 -slice-pragma nop8 -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i + OPT: -main double_effect1 -slice-pragma double_effect1 -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i + OPT: -main double_effect2 -slice-pragma double_effect2 -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i + OPT: -main double_effect3 -slice-pragma double_effect3 -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i + OPT: -main double_effect4 -slice-pragma double_effect4 -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i + OPT: -main double_effect5 -slice-pragma double_effect5 -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i + OPT: -main test1 -slice-pragma test1 -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i + OPT: -main test2 -slice-pragma test2 -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i + OPT: -main test3 -slice-pragma test3 -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i + OPT: -main test4 -slice-pragma test4 -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i + OPT: -main test5 -slice-pragma test5 -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i + OPT: -main test6 -slice-pragma test6 -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i + OPT: -main test7 -slice-pragma test7 -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i + OPT: -main test8 -slice-pragma test8 -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i + OPT: -main test9 -slice-pragma test9 -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i +*/ +typedef int stmt, expr, slice; +int x, y ; +//------------------- +void nop1(int c1, int c2) { + //@ slice pragma stmt; // <----- slicing isn't correct since the effect... + ; // <----- ...is missing with -print option + x = 1 ; + } +void nop2(int c1, int c2) { + //@ slice pragma stmt; // <----- slicing isn't correct since the effect... + {;} // <----- ...is missing with -print option + x = 1 ; + } + +void nop3(int c1, int c2) { + //@ slice pragma stmt; // <----- slicing isn't correct since the effect... + {;{;;};} // <----- ...is missing with -print option + x = 1 ; + } +void nop4(int c1, int c2) { + //@ slice pragma stmt; + if (c1) {;{;;};} + x = 1 ; + } +void nop5(int c1, int c2) { + if (c2) goto L ; + //@ slice pragma stmt; // <----- slicing is correct, but not the output + L:; + x = 1 ; + } +void nop6(int c1, int c2) { + //@ slice pragma stmt; // <----- slicing is correct, but not the output + L:; + x = 1 ; + } +void nop7(int c1, int c2) { + //@ slice pragma stmt; // <----- slicing is correct, but not the output + L:{;} + x = 1 ; + } +void nop8(int c1, int c2) { + //@ slice pragma stmt; // <----- slicing is correct, but not the output + {L:{;}} + x = 1 ; + } +//------------------- +void double_effect1(int c1, int c2) { + //@ slice pragma stmt; // <----- slicing isn't correct since the... + x += y++ ; // <----- ...effect is lost with -print option + } +void double_effect2(int c1, int c2) { + //@ slice pragma stmt; // <----- slicing isn't correct since the... + { x += y++ ; } // <----- ...effect is lost with -print option + } +void double_effect3(int c1, int c2) { + if (c2) goto L ; + //@ slice pragma stmt; // <----- slicing isn't correct since the... + L: x += y++ ; // <----- ...effect is lost with -print option + } +void double_effect4(int c1, int c2) { + if (c2) goto L ; + //@ slice pragma stmt; // <----- slicing isn't correct since the... + L: {x += y++ ; } // <----- ...effect is lost with -print option + } +void double_effect5(int c1, int c2) { + if (c2) + //@ slice pragma stmt; + {x += y++ ; } + } +//------------------- +void test1(int c1, int c2) { + if (c1 < c2) + c1 = c2 ; + //@ slice pragma stmt; + x = c1 ; +} +void test2(int c1, int c2) { + if (c1 < c2) + c1 = c2 ; + //@ slice pragma stmt; + x = c1 ; + y = c2 ; +} +void test3(int c1, int c2) { + if (c1 < c2) + c1 = c2 ; + //@ slice pragma stmt; + {x = c1 ;} + y = c2 ; +} +void test4(int c1, int c2) { + if (c1 < c2) + c1 = c2 ; + //@ slice pragma stmt; // <----- slicing isn't correct since the... + {x = c1 ; c2 ++ ;} // <----- ...effect is lost with -print option + y = c2 ; +} +void test5(int c1, int c2) { + if (c1 < c2) + goto L; + c1 = c2 ; + //@ slice pragma stmt; // <----- slicing isn't correct since the... + L: x = c1 ; // <----- ...effect is lost with -print option + y = c2 ; +} +void test6(int c1, int c2) { + if (c1 < c2) + goto L; + c1 = c2 ; + //@ slice pragma stmt; // <----- slicing isn't correct since the... + L: x = c1++ ; // <----- ...effect is lost with -print option + y = c2 ; +} +void test7(int c1, int c2) { + if (c1 < c2) + goto L; + c1 = c2 ; + //@ slice pragma stmt; // <----- slicing isn't correct since the... + L: {x = c1++ ; c2 ++ ;} // <----- ...effect is lost with -print option + y = c2 ; +} +void test8(int c1, int c2) { + if (c1 < c2) + goto L; + c1 = c2 ; + //@ slice pragma stmt; // <----- slicing isn't correct since the... + { L: x = c1++ ; c2 ++ ;} // <----- ...effect is lost with -print option + y = c2 ; +} +void test9(int c1, int c2) { + if (c1 < c2) + goto L; + c1 = c2 ; + //@ slice pragma stmt; // <----- slicing isn't correct since the... + { x = c1 ; L: c2 = c2 + 1 ;} // <----- ...effect is lost with -print option + y = c2 ; +} diff --git a/tests/slicing/switch.c b/tests/slicing/switch.i similarity index 90% rename from tests/slicing/switch.c rename to tests/slicing/switch.i index cb55266f80578759c01f762f495d78b5252392d9..60921b44ae953576566d358db3242ff869790ba0 100644 --- a/tests/slicing/switch.c +++ b/tests/slicing/switch.i @@ -1,7 +1,7 @@ /* run.config EXECNOW: make -s tests/slicing/switch.cmxs CMD: @frama-c@ -load-module tests/slicing/libSelect.cmxs -load-module tests/slicing/switch.cmxs - OPT: -check -deps -journal-disable + OPT: -deps -journal-disable */ int main (char choix) { int x = 0, y = 0, z = 0; diff --git a/tests/slicing/top.c b/tests/slicing/top.c deleted file mode 100644 index eb20534c69a4d9c53e480e4571848c0c66cd24a4..0000000000000000000000000000000000000000 --- a/tests/slicing/top.c +++ /dev/null @@ -1,28 +0,0 @@ -/* run.config -* OPT: -check -slicing-level 0 -slice-return uncalled -no-slice-callers -journal-disable -then-on 'Slicing export' -print -* OPT: -check -slicing-level 2 -slice-return main -journal-disable -then-on 'Slicing export' -print -* OPT: -check -slicing-level 2 -slice-return strlen -journal-disable -then-on 'Slicing export' -print -* -* -* -* -* -* -*/ - -int uncalled (int x) { - return x+1; -} - -int strlen(char* p ) { - char* q ; - int k = 0; - - for (q = p; *q ; q++) k++ ; - - return k; -} - -int main (char *p_str[], int i ) { - return strlen (p_str[i]); -} diff --git a/tests/slicing/top.i b/tests/slicing/top.i new file mode 100644 index 0000000000000000000000000000000000000000..9898ed09f5b2961d0ca8ca536f8fd5f7a064e0b6 --- /dev/null +++ b/tests/slicing/top.i @@ -0,0 +1,28 @@ +/* run.config +* OPT: -check -slicing-level 0 -slice-return uncalled -no-slice-callers -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check +* OPT: -check -slicing-level 2 -slice-return main -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check +* OPT: -check -slicing-level 2 -slice-return strlen -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check +* +* +* +* +* +* +*/ + +int uncalled (int x) { + return x+1; +} + +int strlen(char* p ) { + char* q ; + int k = 0; + + for (q = p; *q ; q++) k++ ; + + return k; +} + +int main (char *p_str[], int i ) { + return strlen (p_str[i]); +} diff --git a/tests/slicing/top2.c b/tests/slicing/top2.c deleted file mode 100644 index a5afa825395e4c0b1d36e598434da18d77449bef..0000000000000000000000000000000000000000 --- a/tests/slicing/top2.c +++ /dev/null @@ -1,28 +0,0 @@ -/* run.config -* OPT: -check -slicing-level 2 -slice-pragma main -journal-disable -then-on 'Slicing export' -print -* OPT: -check -slicing-level 2 -slice-return main -journal-disable -then-on 'Slicing export' -print -*/ - - -int tab[2]={0, 7 }; -int G, X ; -typedef struct {int a; int b; } Ts; -Ts S; - -int f(void) { - volatile int i=0; - int v; - - v = tab[i]; - - G = X; - - return v; -} - -int main(void) { - int x = f(); - G += 1 ; - //@ slice pragma expr G ; - return x; -} diff --git a/tests/slicing/top2.i b/tests/slicing/top2.i new file mode 100644 index 0000000000000000000000000000000000000000..4f7510db36d7b55cd827a21a04112ea8e66acace --- /dev/null +++ b/tests/slicing/top2.i @@ -0,0 +1,28 @@ +/* run.config +* OPT: -check -slicing-level 2 -slice-pragma main -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check +* OPT: -check -slicing-level 2 -slice-return main -journal-disable -then-on 'Slicing export' -set-project-as-default -print -check -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -check +*/ + + +int tab[2]={0, 7 }; +int G, X ; +typedef struct {int a; int b; } Ts; +Ts S; + +int f(void) { + volatile int i=0; + int v; + + v = tab[i]; + + G = X; + + return v; +} + +int main(void) { + int x = f(); + G += 1 ; + //@ slice pragma expr G ; + return x; +} diff --git a/tests/slicing/undef-fun.c b/tests/slicing/undef-fun.c deleted file mode 100644 index fb99a3341b0e89ddcdf5e660592a95aaf3dd3bd1..0000000000000000000000000000000000000000 --- a/tests/slicing/undef-fun.c +++ /dev/null @@ -1,20 +0,0 @@ -/* run.config - OPT: -check -slice-undef-functions -slice-return f -journal-disable -then-on 'Slicing export' -print - - - - */ - -int G; - -/*@ assigns \result \from a; - assigns G \from b; -*/ -int f (int a, int b); - -int main (int x, int y) { - x += 1; - y += 2; - x = f (x, y); - return x; -} diff --git a/tests/slicing/undef-fun.i b/tests/slicing/undef-fun.i new file mode 100644 index 0000000000000000000000000000000000000000..91cb38679b8b6930dc58426a11aba91e7e368a8c --- /dev/null +++ b/tests/slicing/undef-fun.i @@ -0,0 +1,20 @@ +/* run.config + OPT: -slice-undef-functions -slice-return f -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i + + + + */ + +int G; + +/*@ assigns \result \from a; + assigns G \from b; +*/ +int f (int a, int b); + +int main (int x, int y) { + x += 1; + y += 2; + x = f (x, y); + return x; +} diff --git a/tests/slicing/unitialized.c b/tests/slicing/unitialized.c deleted file mode 100644 index dd696b5fbe14a8883b2cd04ef026a8213307249f..0000000000000000000000000000000000000000 --- a/tests/slicing/unitialized.c +++ /dev/null @@ -1,40 +0,0 @@ -/* run.config - OPT: -check -slice-pragma g -journal-disable -then-on 'Slicing export' -print - OPT: -check -slice-assert g -journal-disable -then-on 'Slicing export' -print - OPT: -check -slice-assert main -journal-disable -then-on 'Slicing export' -print - OPT: -check -slice-return g -journal-disable -then-on 'Slicing export' -print - */ -//@ assigns \result \from \nothing; -int printf(const char*, ...); - -int X1, X2 ; -void f1() { - int x1; - x1 = 123; - X1 = x1 ; -} - -void f2() { - int x2; - x2 = 12345; - X2 = x2 ; -} - -int g() { - int y ; - /* Note: y is not initialised by g. */ - /* Note: GCC without optimization gives X1 == y. */ - printf ("%d\n", y); - //@slice pragma expr y ; - //@assert X1 == y ; - return y; -} - -main() { - int r; - f1(); - f2(); - r = g(); - /* Note: GCC without optimization gives X2 != y. */ - //@assert X2 != r ; -} diff --git a/tests/slicing/unitialized.i b/tests/slicing/unitialized.i new file mode 100644 index 0000000000000000000000000000000000000000..a307d685b352669679757c9e23056497c4502c8d --- /dev/null +++ b/tests/slicing/unitialized.i @@ -0,0 +1,40 @@ +/* run.config + OPT: -slice-pragma g -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i + OPT: -slice-assert g -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i + OPT: -slice-assert main -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i + OPT: -slice-return g -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i + */ +//@ assigns \result \from \nothing; +int printf(const char*, ...); + +int X1, X2 ; +void f1() { + int x1; + x1 = 123; + X1 = x1 ; +} + +void f2() { + int x2; + x2 = 12345; + X2 = x2 ; +} + +int g() { + int y ; + /* Note: y is not initialised by g. */ + /* Note: GCC without optimization gives X1 == y. */ + printf ("%d\n", y); + //@slice pragma expr y ; + //@assert X1 == y ; + return y; +} + +main() { + int r; + f1(); + f2(); + r = g(); + /* Note: GCC without optimization gives X2 != y. */ + //@assert X2 != r ; +} diff --git a/tests/slicing/unravel-flavors.c b/tests/slicing/unravel-flavors.i similarity index 52% rename from tests/slicing/unravel-flavors.c rename to tests/slicing/unravel-flavors.i index bd41f06779f1ff9721e4b57bb8d9adcc7d981a92..0a536a11cbc33130412495956e40dab88eefb1ea 100644 --- a/tests/slicing/unravel-flavors.c +++ b/tests/slicing/unravel-flavors.i @@ -1,8 +1,8 @@ /* run.config - OPT: -check -slice-undef-functions -slice-return send1 -journal-disable -then-on 'Slicing export' -print - OPT: -check -slice-undef-functions -slice-return send2 -journal-disable -then-on 'Slicing export' -print - OPT: -check -slice-undef-functions -slice-return send3 -journal-disable -then-on 'Slicing export' -print - OPT: -check -slice-undef-functions -slice-return send4 -journal-disable -then-on 'Slicing export' -print + OPT: -slice-undef-functions -slice-return send1 -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i + OPT: -slice-undef-functions -slice-return send2 -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i + OPT: -slice-undef-functions -slice-return send3 -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i + OPT: -slice-undef-functions -slice-return send4 -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i */ /* Small example derived from examples given for UNRAVEL tool : */ diff --git a/tests/slicing/unravel-point.c b/tests/slicing/unravel-point.c deleted file mode 100644 index e4225e501653c3efe87817d3360eed376ade55d5..0000000000000000000000000000000000000000 --- a/tests/slicing/unravel-point.c +++ /dev/null @@ -1,79 +0,0 @@ -/* run.config - OPT: -check -calldeps -slice-return send1 -journal-disable -then-on 'Slicing export' -print - OPT: -check -calldeps -slice-return send2 -journal-disable -then-on 'Slicing export' -print - OPT: -check -calldeps -slice-return send3 -journal-disable -then-on 'Slicing export' -print - OPT: -check -calldeps -slice-return send4 -journal-disable -then-on 'Slicing export' -print - OPT: -check -calldeps -slice-return send1 -slice-return send4 -journal-disable -then-on 'Slicing export' -check -calldeps -slice-return send1_slice_1 -print -then-on 'Slicing export 2' -print - - - - - - - - */ - -/* Small example devired from examples given for UNRAVEL tool : */ - - - -/*@ assigns *p \from \empty; - assigns \result ; */ -int scanf (char const *, int * p); - - - -int printf (char const *, int); - - - - - - - - -int send1 (int x) { - printf ("%d\n", x) ; - return x; -} -int send2 (int x) { - printf ("%d\n", x) ; - return x; -} -int send3 (int x) { - printf ("%d\n", x) ; - return x; -} -int send4 (int x) { - printf ("%d\n", x) ; - return x; -} - -main() -{ - int input1,input2,input3,cond1,cond2; - int a,b,c; - int *x,*y,*z; - int output1,output2,output3; - - scanf("%d",&input1); - a = input1; - scanf("%d",&input2); - b = input2; - scanf("%d",&input3); - c = input3; - scanf("%d",&cond1); - scanf("%d",&cond2); - x = &a; - if (cond1) x = &b; - y = &c; - z = &b; - output2 = *z + 1; - *z = *y + *x; - output1 = *z; - output3 = *x; - send1 (output1); - send2 (output2); - send3 (output3); - send4 (cond2); -} diff --git a/tests/slicing/unravel-point.i b/tests/slicing/unravel-point.i new file mode 100644 index 0000000000000000000000000000000000000000..56f45aea391ea128a7a0f262fe9f2bdd5daaca4e --- /dev/null +++ b/tests/slicing/unravel-point.i @@ -0,0 +1,79 @@ +/* run.config + OPT: -calldeps -slice-return send1 -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-calldeps + OPT: -calldeps -slice-return send2 -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-calldeps + OPT: -calldeps -slice-return send3 -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-calldeps + OPT: -calldeps -slice-return send4 -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-calldeps + OPT: -calldeps -slice-return send1 -slice-return send4 -journal-disable -then-on 'Slicing export' -calldeps -slice-return send1_slice_1 -print -then-on 'Slicing export 2' -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -no-calldeps + + + + + + + + */ + +/* Small example devired from examples given for UNRAVEL tool : */ + + + +/*@ assigns *p \from \empty; + assigns \result ; */ +int scanf (char const *, int * p); + + + +int printf (char const *, int); + + + + + + + + +int send1 (int x) { + printf ("%d\n", x) ; + return x; +} +int send2 (int x) { + printf ("%d\n", x) ; + return x; +} +int send3 (int x) { + printf ("%d\n", x) ; + return x; +} +int send4 (int x) { + printf ("%d\n", x) ; + return x; +} + +main() +{ + int input1,input2,input3,cond1,cond2; + int a,b,c; + int *x,*y,*z; + int output1,output2,output3; + + scanf("%d",&input1); + a = input1; + scanf("%d",&input2); + b = input2; + scanf("%d",&input3); + c = input3; + scanf("%d",&cond1); + scanf("%d",&cond2); + x = &a; + if (cond1) x = &b; + y = &c; + z = &b; + output2 = *z + 1; + *z = *y + *x; + output1 = *z; + output3 = *x; + send1 (output1); + send2 (output2); + send3 (output3); + send4 (cond2); +} diff --git a/tests/slicing/unravel-variance.c b/tests/slicing/unravel-variance.i similarity index 50% rename from tests/slicing/unravel-variance.c rename to tests/slicing/unravel-variance.i index ab477c6f89e6276a38417c06b77910334102f535..d679d82fae42e981b9f06fec15736f7e55f50832 100644 --- a/tests/slicing/unravel-variance.c +++ b/tests/slicing/unravel-variance.i @@ -1,9 +1,9 @@ /* run.config - OPT: -check -slice-calls printf1 -journal-disable -float-normal -remove-redundant-alarms -then-on 'Slicing export' -print - OPT: -check -slice-calls printf2 -journal-disable -float-normal -remove-redundant-alarms -then-on 'Slicing export' -print - OPT: -check -slice-calls printf3 -journal-disable -float-normal -remove-redundant-alarms -then-on 'Slicing export' -print - OPT: -check -slice-calls printf4 -journal-disable -float-normal -remove-redundant-alarms -then-on 'Slicing export' -print - OPT: -check -slice-calls printf5 -journal-disable -float-normal -remove-redundant-alarms -then-on 'Slicing export' -print + OPT: -slice-calls printf1 -journal-disable -float-normal -remove-redundant-alarms -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i + OPT: -slice-calls printf2 -journal-disable -float-normal -remove-redundant-alarms -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i + OPT: -slice-calls printf3 -journal-disable -float-normal -remove-redundant-alarms -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i + OPT: -slice-calls printf4 -journal-disable -float-normal -remove-redundant-alarms -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i + OPT: -slice-calls printf5 -journal-disable -float-normal -remove-redundant-alarms -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i */ /* Small example devired from examples given for UNRAVEL tool : */ @@ -14,10 +14,9 @@ int printf3 (char const *, int); int printf4 (char const *, int); int printf5 (char const *, int); -#define MAX 1024 main() { - float x[MAX]; + float x[1024]; float var2, var3, var4 ; float var5, var1; float t1, t2; diff --git a/tests/slicing/unsupported.i b/tests/slicing/unsupported.i index cbcc68205ee9370b69bf4364044c66ca79a69fed..fa38f91317cda4cdada240ffabb8494db69aabce 100644 --- a/tests/slicing/unsupported.i +++ b/tests/slicing/unsupported.i @@ -1,5 +1,5 @@ /* run.config - OPT: -check -slice-return main -journal-disable -then-on 'Slicing export' -print -check + OPT: -slice-return main -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i OPT: -sparecode */ int main() { diff --git a/tests/slicing/use_spec.i b/tests/slicing/use_spec.i index 3d75078c91e8eb1577f6feeb4fa74d58b392dded..51cf113ffbc153213fc215dafecb2b053d9989d2 100644 --- a/tests/slicing/use_spec.i +++ b/tests/slicing/use_spec.i @@ -1,6 +1,6 @@ /* run.config - OPT: -val-use-spec f -slice-return main -journal-disable -then-on 'Slicing export' -print -check - OPT: -main main2 -slicing-level 3 -slice-undef-functions -val-use-spec h -slice-return main2 -journal-disable -slicing-keep-annotations -then-on 'Slicing export' -print -check -val -val-use-spec='-@all' + OPT: -val-use-spec f -slice-return main -journal-disable -then-on 'Slicing export' -set-project-as-default -print -then -print -ocode @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i -then @PTEST_DIR@/result/ocode_@PTEST_NUMBER@_@PTEST_NAME@.i + OPT: -main main2 -slicing-level 3 -slice-undef-functions -val-use-spec h -slice-return main2 -journal-disable -slicing-keep-annotations -then-on 'Slicing export' -set-project-as-default -print -val -val-use-spec='-@all' diff --git a/tests/slicing/variadic.c b/tests/slicing/variadic.c index f3ace8b1adc8cdab8f3c6c46219d14d2727a4e12..441003769bb2b94d3bb25df5d9ea5e221edf664e 100644 --- a/tests/slicing/variadic.c +++ b/tests/slicing/variadic.c @@ -1,8 +1,8 @@ /* run.config - OPT: -check -slice-return f3 -no-slice-callers -journal-disable -then-on 'Slicing export' -print - OPT: -check -slice-return f3 -journal-disable -then-on 'Slicing export' -print - OPT: -check -slice-return main -journal-disable -then-on 'Slicing export' -print - OPT: -check -slice-return main -slicing-level 3 -journal-disable -then-on 'Slicing export' -print + OPT: -slice-return f3 -no-slice-callers -journal-disable -then-on 'Slicing export' -print + OPT: -slice-return f3 -journal-disable -then-on 'Slicing export' -print + OPT: -slice-return main -journal-disable -then-on 'Slicing export' -print + OPT: -slice-return main -slicing-level 3 -journal-disable -then-on 'Slicing export' -print */ #include "../pdg/variadic.c" diff --git a/tests/slicing2/adpcm.c b/tests/slicing2/adpcm.c deleted file mode 100644 index c015bba62452eb6af7adef0bff8fc3b83c2c2676..0000000000000000000000000000000000000000 --- a/tests/slicing2/adpcm.c +++ /dev/null @@ -1,6 +0,0 @@ -/* run.config - EXECNOW: make -s tests/slicing2/adpcm.cmxs - OPT: -load-module ./tests/slicing/libSelect.cmxs -load-module ./tests/slicing2/adpcm.cmxs -check -ulevel -1 -deps -slicing-level 2 -journal-disable -*/ - -#include "tests/test/adpcm.c" diff --git a/tests/sparecode/oracle/intra.2.res.oracle b/tests/sparecode/oracle/intra.2.res.oracle index a116b47deeb319056d41a0b96f6c67f45e51c95b..fcbdb062368f2fc96144530a4ea5bfe093ca14c3 100644 --- a/tests/sparecode/oracle/intra.2.res.oracle +++ b/tests/sparecode/oracle/intra.2.res.oracle @@ -49,7 +49,7 @@ tests/sparecode/intra.i:109:[value] assertion got status valid. [pdg] Bottom for function spare_called_fct [pdg] computing for function stop [from] Computing for function stop -tests/sparecode/intra.i:35:[kernel] warning: Neither code nor specification for function stop, generating default assigns from the prototype +tests/sparecode/intra.i:110:[kernel] warning: Neither code nor specification for function stop, generating default assigns from the prototype [from] Done for function stop [pdg] done for function stop [pdg] computing for function tmp diff --git a/tests/spec/Extend.i b/tests/spec/Extend.i index 4e08d994a2b957218084ec81d6c060c81775a835..ea0abf3e0133a8c929853f2cef470123f90548dc 100644 --- a/tests/spec/Extend.i +++ b/tests/spec/Extend.i @@ -1,6 +1,6 @@ /* run.config EXECNOW: make @PTEST_DIR@/@PTEST_NAME@.cmxs -OPT: -load-module @PTEST_DIR@/@PTEST_NAME@ -print -copy -check +OPT: -load-module @PTEST_DIR@/@PTEST_NAME@ -print -copy */ /*@ foo x == 0; diff --git a/tests/spec/add_global.i b/tests/spec/add_global.i new file mode 100644 index 0000000000000000000000000000000000000000..0eeae27f26ff17543f3219293e44182bc5e22337 --- /dev/null +++ b/tests/spec/add_global.i @@ -0,0 +1,6 @@ +/* run.config +EXECNOW: make -s @PTEST_DIR@/@PTEST_NAME@.cmxs +OPT: -load-module @PTEST_DIR@/@PTEST_NAME@.cmxs -print +*/ + +int main () { return 0; } diff --git a/tests/spec/add_global.ml b/tests/spec/add_global.ml new file mode 100644 index 0000000000000000000000000000000000000000..beb0404b0123cefde36949d0bec1a88df8e09e5d --- /dev/null +++ b/tests/spec/add_global.ml @@ -0,0 +1,35 @@ +open Cil_types + +let emitter = + Emitter.create "Fancy" [ Emitter.Global_annot ] ~correctness:[] ~tuning:[] + +class vis prj = +object(self) + inherit Visitor.frama_c_copy prj + + method! vglob_aux g = + match g with + | GFun ({ svar = { vname = "main" }},_) -> + let ax = + Daxiomatic + ("MyAxiomatic", + [ Dlemma( + "myaxiom", true, [], [], + Logic_const.ptrue, Cil_datatype.Location.unknown)], + Cil_datatype.Location.unknown) + in + Queue.add (fun () -> Annotations.add_global emitter ax) + self#get_filling_actions; + Cil.ChangeDoChildrenPost + ([ GAnnot(ax, Cil_datatype.Location.unknown); g ], fun x -> x) + | _ -> Cil.DoChildren + +end + +let transform () = + Ast.compute (); + let prj = File.create_project_from_visitor "prj" (fun prj -> new vis prj) in + Project.on prj Filecheck.check_ast "prj"; + File.pretty_ast ~prj () + +let () = Db.Main.extend transform diff --git a/tests/spec/assignable_location.i b/tests/spec/assignable_location.i index b8d6052efe34dc8361ca6cdb715b7a507a67c414..bffd9c46a9071d4c2a1142c7ff3db0eaf8a261c3 100644 --- a/tests/spec/assignable_location.i +++ b/tests/spec/assignable_location.i @@ -1,5 +1,5 @@ /* run.config -OPT: -continue-annot-error -check +OPT: -continue-annot-error */ typedef double typetab[2]; diff --git a/tests/spec/bts1068.i b/tests/spec/bts1068.i index 642023ce453e010da32805ec587b7d9990101d46..78f7d7ba1b0fe98e2e79d006bad02aaf51e9d456 100644 --- a/tests/spec/bts1068.i +++ b/tests/spec/bts1068.i @@ -136,3 +136,8 @@ case cons{L}: \forall list* l1,List<int>ll1; \valid{L}(l1) ==> model_10(l1->next,ll1) ==> model_10(l1,Cons(l1->element,ll1)); } */ + +/* Checks that the given name 'px' into the profile definition of the inductive + predicate 'Pind' does not impact the definition given for 'case P0'. */ +void* px; +//@ inductive Pind(void* root, integer px) { case p0: Pind(px,0); } diff --git a/tests/spec/bts2187-no-empty-contract.i b/tests/spec/bts2187-no-empty-contract.i new file mode 100644 index 0000000000000000000000000000000000000000..9f477fdbb5f775d449fc29ed65836e26e2002370 --- /dev/null +++ b/tests/spec/bts2187-no-empty-contract.i @@ -0,0 +1,5 @@ +/*@ behavior x: assumes c; */ +void no_empty_stmt_contract(int c) { + //@ for x: + ; +} diff --git a/tests/spec/expr_to_term.i b/tests/spec/expr_to_term.i index 7c56f1c2a254e512856f8e6fe667ed9d1db12c10..74bd6f5aa8b625b8e0099467e25d85794a6b5922 100644 --- a/tests/spec/expr_to_term.i +++ b/tests/spec/expr_to_term.i @@ -1,6 +1,6 @@ /* run.config EXECNOW: make @PTEST_DIR@/@PTEST_NAME@.cmxs -OPT: -load-module @PTEST_DIR@/@PTEST_NAME@.cmxs -check -print +OPT: -load-module @PTEST_DIR@/@PTEST_NAME@.cmxs -print */ int x[10]; diff --git a/tests/spec/heterogeneous_set_bts1146.i b/tests/spec/heterogeneous_set_bts1146.i index 3390b35058adc3592b06da3f6a242250507ac363..98c508eb2fd3422ae25f8f98047f6ca9989216e9 100644 --- a/tests/spec/heterogeneous_set_bts1146.i +++ b/tests/spec/heterogeneous_set_bts1146.i @@ -1,7 +1,7 @@ /* run.config DONTRUN: bugfix in progress EXECNOW: make -s tests/spec/Type_of_term.cmxs - OPT: -load-module ./tests/spec/Type_of_term.cmxs -check -print + OPT: -load-module ./tests/spec/Type_of_term.cmxs -print */ /*@ lemma foo: \union(1) == \union(1.0); */ diff --git a/tests/spec/oracle/acsl_basic_allocator.res.oracle b/tests/spec/oracle/acsl_basic_allocator.res.oracle index 096995796a38ba4b9c3d12fdee1b87db8dd5a916..cff99b8322d5e382584a842437f72e2ac7eb0c4d 100644 --- a/tests/spec/oracle/acsl_basic_allocator.res.oracle +++ b/tests/spec/oracle/acsl_basic_allocator.res.oracle @@ -70,8 +70,32 @@ extern float strtof(char const *nptr, char **endptr); extern long double strtold(char const *nptr, char **endptr); /*@ assigns \result, *endptr; - assigns \result \from *(nptr+(0 ..)), base; - assigns *endptr \from nptr, *(nptr+(0 ..)), base; + assigns \result + \from (indirect: nptr), (indirect: *(nptr+(0 ..))), (indirect: base); + assigns *endptr + \from nptr, (indirect: *(nptr+(0 ..))), (indirect: endptr), + (indirect: base); + + behavior null_endptr: + assumes endptr ≡ \null; + assigns \result; + assigns \result + \from (indirect: nptr), (indirect: *(nptr+(0 ..))), (indirect: base); + + behavior nonnull_endptr: + assumes endptr ≢ \null; + requires \valid(endptr); + ensures \initialized(\old(endptr)); + ensures \subset(*\old(endptr), \old(nptr)+(0 ..)); + assigns \result, *endptr; + assigns \result + \from (indirect: nptr), (indirect: *(nptr+(0 ..))), (indirect: base); + assigns *endptr + \from nptr, (indirect: *(nptr+(0 ..))), (indirect: endptr), + (indirect: base); + + complete behaviors nonnull_endptr, null_endptr; + disjoint behaviors nonnull_endptr, null_endptr; */ extern long strtol(char const *nptr, char **endptr, int base); diff --git a/tests/spec/oracle/add_global.err.oracle b/tests/spec/oracle/add_global.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/spec/oracle/add_global.res.oracle b/tests/spec/oracle/add_global.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..797d14b6d735a8e52db4cce216398a4e4edcb6ee --- /dev/null +++ b/tests/spec/oracle/add_global.res.oracle @@ -0,0 +1,25 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/spec/add_global.i (no preprocessing) +/* Generated by Frama-C */ +/*@ axiomatic MyAxiomatic { + axiom myaxiom: \true; + + } + */ +int main(void) +{ + int __retres; + __retres = 0; + return __retres; +} + + +/* Generated by Frama-C */ +int main(void) +{ + int __retres; + __retres = 0; + return __retres; +} + + diff --git a/tests/spec/oracle/bts1068.res.oracle b/tests/spec/oracle/bts1068.res.oracle index 52a6ba8c4c560fb25afc7bc0c40d7005ff6a7c6d..176f2e4ef0ed6ef92a4cd55adcaed2e00f92751e 100644 --- a/tests/spec/oracle/bts1068.res.oracle +++ b/tests/spec/oracle/bts1068.res.oracle @@ -156,7 +156,7 @@ inductive model_5{L}(list *root, List<int> logic_list) { */ /*@ inductive model_6{L}(list *root, List<int> logic_list) { - case nil{L1}: model_6{L}(\null, Nil); + case nil{L1}: model_6(\null, Nil); case cons{L}: \at(∀ list *l1, List<int> ll1; \valid(l1) ⇒ model_6(l1->next, ll1) ⇒ @@ -189,4 +189,8 @@ inductive model_9{L1, L2}(list *root, List<int> logic_list) { case nil{L}: \at(\valid(P),L); } */ +void *px; +/*@ inductive Pind{L}(void *root, ℤ px) { case p0{L}: \at(Pind(px, 0),L); + } + */ diff --git a/tests/spec/oracle/bts2187-no-empty-contract.err.oracle b/tests/spec/oracle/bts2187-no-empty-contract.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/spec/oracle/bts2187-no-empty-contract.res.oracle b/tests/spec/oracle/bts2187-no-empty-contract.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..b6e6ad504546293fec1cb765e4c1c50215a626a0 --- /dev/null +++ b/tests/spec/oracle/bts2187-no-empty-contract.res.oracle @@ -0,0 +1,12 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/spec/bts2187-no-empty-contract.i (no preprocessing) +tests/spec/bts2187-no-empty-contract.i:3:[kernel] warning: Empty annotation is not allowed +/* Generated by Frama-C */ +/*@ behavior x: + assumes c ≢ 0; */ +void no_empty_stmt_contract(int c) +{ + return; +} + + diff --git a/tests/spec/oracle/clash_double_file_bts1598.res.oracle b/tests/spec/oracle/clash_double_file_bts1598.res.oracle index 346d17f034f70002362f879a48e02e3ee738ade5..c56da2d731d826afaf6135a3d25b8202bd206f5f 100644 --- a/tests/spec/oracle/clash_double_file_bts1598.res.oracle +++ b/tests/spec/oracle/clash_double_file_bts1598.res.oracle @@ -1475,8 +1475,32 @@ extern float strtof(char const *nptr, char **endptr); extern long double strtold(char const *nptr, char **endptr); /*@ assigns \result, *endptr; - assigns \result \from *(nptr+(0 ..)), base; - assigns *endptr \from nptr, *(nptr+(0 ..)), base; + assigns \result + \from (indirect: nptr), (indirect: *(nptr+(0 ..))), (indirect: base); + assigns *endptr + \from nptr, (indirect: *(nptr+(0 ..))), (indirect: endptr), + (indirect: base); + + behavior null_endptr: + assumes endptr ≡ \null; + assigns \result; + assigns \result + \from (indirect: nptr), (indirect: *(nptr+(0 ..))), (indirect: base); + + behavior nonnull_endptr: + assumes endptr ≢ \null; + requires \valid(endptr); + ensures \initialized(\old(endptr)); + ensures \subset(*\old(endptr), \old(nptr)+(0 ..)); + assigns \result, *endptr; + assigns \result + \from (indirect: nptr), (indirect: *(nptr+(0 ..))), (indirect: base); + assigns *endptr + \from nptr, (indirect: *(nptr+(0 ..))), (indirect: endptr), + (indirect: base); + + complete behaviors nonnull_endptr, null_endptr; + disjoint behaviors nonnull_endptr, null_endptr; */ extern long strtol(char const *nptr, char **endptr, int base); @@ -2067,6 +2091,153 @@ extern struct tm *gmtime(time_t const *timer); */ extern struct tm *localtime(time_t const *timer); +/*@ ensures \result ≡ \null ∨ \subset(\result, \old(s)+(0 .. \old(n)-1)); + assigns \result; + assigns \result + \from s, (indirect: *(s+(0 .. n-1))), (indirect: c), (indirect: n); + */ +extern wchar_t *wmemchr(wchar_t const *s, wchar_t c, size_t n); + +/*@ assigns \result; + assigns \result + \from (indirect: *(s1+(0 .. n-1))), (indirect: *(s2+(0 .. n-1))), + (indirect: n); + */ +extern int wmemcmp(wchar_t const *s1, wchar_t const *s2, size_t n); + +/*@ requires \separated(dest+(0 .. n-1), src+(0 .. n-1)); + ensures \result ≡ \old(dest); + assigns *(dest+(0 .. n-1)), \result; + assigns *(dest+(0 .. n-1)) + \from *(src+(0 .. n-1)), (indirect: src), (indirect: n); + assigns \result \from dest; + */ +extern wchar_t *wmemcpy(wchar_t *dest, wchar_t const *src, size_t n); + +/*@ ensures \result ≡ \old(dest); + assigns *(dest+(0 .. n-1)), \result; + assigns *(dest+(0 .. n-1)) + \from *(src+(0 .. n-1)), (indirect: src), (indirect: n); + assigns \result \from dest; + */ +extern wchar_t *wmemmove(wchar_t *dest, wchar_t const *src, size_t n); + +/*@ ensures \result ≡ \old(wcs); + assigns *(wcs+(0 .. n-1)), \result; + assigns *(wcs+(0 .. n-1)) \from wc, (indirect: n); + assigns \result \from wcs; + */ +extern wchar_t *wmemset(wchar_t *wcs, wchar_t wc, size_t n); + +/*@ ensures \result ≡ \old(dest); + assigns *(dest+(0 ..)), \result; + assigns *(dest+(0 ..)) + \from *(dest+(0 ..)), (indirect: dest), *(src+(0 ..)), (indirect: src); + assigns \result \from dest; + */ +extern wchar_t *wcscat(wchar_t *dest, wchar_t const *src); + +/*@ ensures \result ≡ \null ∨ \subset(\result, \old(wcs)+(0 ..)); + assigns \result; + assigns \result \from wcs, (indirect: wc); + */ +extern wchar_t *wcschr(wchar_t const *wcs, wchar_t wc); + +/*@ assigns \result; + assigns \result \from (indirect: *(s1+(0 ..))), (indirect: *(s2+(0 ..))); + */ +extern int wcscmp(wchar_t const *s1, wchar_t const *s2); + +/*@ ensures \result ≡ \old(dest); + assigns *(dest+(0 ..)), \result; + assigns *(dest+(0 ..)) + \from *(src+(0 ..)), (indirect: src), *(dest+(0 ..)), (indirect: dest); + assigns \result \from dest; + */ +extern wchar_t *wcscpy(wchar_t *dest, wchar_t const *src); + +/*@ assigns \result; + assigns \result + \from (indirect: *(wcs+(0 ..))), (indirect: *(accept+(0 ..))); + */ +extern size_t wcscspn(wchar_t const *wcs, wchar_t const *accept); + +/*@ assigns *(dest+(0 ..)), \result; + assigns *(dest+(0 ..)) + \from *(dest+(0 ..)), (indirect: dest), *(src+(0 .. n-1)), + (indirect: src), (indirect: n); + assigns \result + \from (indirect: *(dest+(0 ..))), (indirect: *(src+(0 .. n-1))), + (indirect: n); + */ +extern size_t wcslcat(wchar_t *dest, wchar_t const *src, size_t n); + +/*@ requires \separated(dest+(0 .. n-1), src+(0 .. n-1)); + assigns *(dest+(0 .. n-1)), \result; + assigns *(dest+(0 .. n-1)) + \from *(src+(0 .. n-1)), (indirect: src), (indirect: n); + assigns \result + \from (indirect: *(dest+(0 .. n-1))), (indirect: dest), + (indirect: *(src+(0 .. n-1))), (indirect: src), (indirect: n); + */ +extern size_t wcslcpy(wchar_t *dest, wchar_t const *src, size_t n); + +/*@ assigns \result; + assigns \result \from (indirect: *(s+(0 ..))); */ +extern size_t wcslen(wchar_t const *s); + +/*@ ensures \result ≡ \old(dest); + assigns *(dest+(0 ..)), \result; + assigns *(dest+(0 ..)) + \from *(dest+(0 ..)), (indirect: dest), *(src+(0 .. n-1)), + (indirect: src), (indirect: n); + assigns \result \from dest; + */ +extern wchar_t *wcsncat(wchar_t *dest, wchar_t const *src, size_t n); + +/*@ assigns \result; + assigns \result + \from (indirect: *(s1+(0 .. n-1))), (indirect: *(s2+(0 .. n-1))), + (indirect: n); + */ +extern int wcsncmp(wchar_t const *s1, wchar_t const *s2, size_t n); + +/*@ requires \separated(dest+(0 .. n-1), src+(0 .. n-1)); + ensures \result ≡ \old(dest); + assigns *(dest+(0 .. n-1)), \result; + assigns *(dest+(0 .. n-1)) + \from *(src+(0 .. n-1)), (indirect: src), (indirect: n); + assigns \result \from dest; + */ +extern wchar_t *wcsncpy(wchar_t *dest, wchar_t const *src, size_t n); + +/*@ ensures \result ≡ \null ∨ \subset(\result, \old(wcs)+(0 ..)); + assigns \result; + assigns \result + \from wcs, (indirect: *(wcs+(0 ..))), (indirect: *(accept+(0 ..))); + */ +extern wchar_t *wcspbrk(wchar_t const *wcs, wchar_t const *accept); + +/*@ ensures \result ≡ \null ∨ \subset(\result, \old(wcs)+(0 ..)); + assigns \result; + assigns \result \from wcs, (indirect: *(wcs+(0 ..))), (indirect: wc); + */ +extern wchar_t *wcsrchr(wchar_t const *wcs, wchar_t wc); + +/*@ assigns \result; + assigns \result + \from (indirect: *(wcs+(0 ..))), (indirect: *(accept+(0 ..))); + */ +extern size_t wcsspn(wchar_t const *wcs, wchar_t const *accept); + +/*@ ensures \result ≡ \null ∨ \subset(\result, \old(haystack)+(0 ..)); + assigns \result; + assigns \result + \from haystack, (indirect: *(haystack+(0 ..))), + (indirect: *(needle+(0 ..))); + */ +extern wchar_t *wcsstr(wchar_t const *haystack, wchar_t const *needle); + [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) [kernel] Parsing tests/spec/clash_double_file_bts1598.c (with preprocessing) @@ -3546,8 +3717,32 @@ extern float strtof(char const *nptr, char **endptr); extern long double strtold(char const *nptr, char **endptr); /*@ assigns \result, *endptr; - assigns \result \from *(nptr+(0 ..)), base; - assigns *endptr \from nptr, *(nptr+(0 ..)), base; + assigns \result + \from (indirect: nptr), (indirect: *(nptr+(0 ..))), (indirect: base); + assigns *endptr + \from nptr, (indirect: *(nptr+(0 ..))), (indirect: endptr), + (indirect: base); + + behavior null_endptr: + assumes endptr ≡ \null; + assigns \result; + assigns \result + \from (indirect: nptr), (indirect: *(nptr+(0 ..))), (indirect: base); + + behavior nonnull_endptr: + assumes endptr ≢ \null; + requires \valid(endptr); + ensures \initialized(\old(endptr)); + ensures \subset(*\old(endptr), \old(nptr)+(0 ..)); + assigns \result, *endptr; + assigns \result + \from (indirect: nptr), (indirect: *(nptr+(0 ..))), (indirect: base); + assigns *endptr + \from nptr, (indirect: *(nptr+(0 ..))), (indirect: endptr), + (indirect: base); + + complete behaviors nonnull_endptr, null_endptr; + disjoint behaviors nonnull_endptr, null_endptr; */ extern long strtol(char const *nptr, char **endptr, int base); @@ -4138,4 +4333,151 @@ extern struct tm *gmtime(time_t const *timer); */ extern struct tm *localtime(time_t const *timer); +/*@ ensures \result ≡ \null ∨ \subset(\result, \old(s)+(0 .. \old(n)-1)); + assigns \result; + assigns \result + \from s, (indirect: *(s+(0 .. n-1))), (indirect: c), (indirect: n); + */ +extern wchar_t *wmemchr(wchar_t const *s, wchar_t c, size_t n); + +/*@ assigns \result; + assigns \result + \from (indirect: *(s1+(0 .. n-1))), (indirect: *(s2+(0 .. n-1))), + (indirect: n); + */ +extern int wmemcmp(wchar_t const *s1, wchar_t const *s2, size_t n); + +/*@ requires \separated(dest+(0 .. n-1), src+(0 .. n-1)); + ensures \result ≡ \old(dest); + assigns *(dest+(0 .. n-1)), \result; + assigns *(dest+(0 .. n-1)) + \from *(src+(0 .. n-1)), (indirect: src), (indirect: n); + assigns \result \from dest; + */ +extern wchar_t *wmemcpy(wchar_t *dest, wchar_t const *src, size_t n); + +/*@ ensures \result ≡ \old(dest); + assigns *(dest+(0 .. n-1)), \result; + assigns *(dest+(0 .. n-1)) + \from *(src+(0 .. n-1)), (indirect: src), (indirect: n); + assigns \result \from dest; + */ +extern wchar_t *wmemmove(wchar_t *dest, wchar_t const *src, size_t n); + +/*@ ensures \result ≡ \old(wcs); + assigns *(wcs+(0 .. n-1)), \result; + assigns *(wcs+(0 .. n-1)) \from wc, (indirect: n); + assigns \result \from wcs; + */ +extern wchar_t *wmemset(wchar_t *wcs, wchar_t wc, size_t n); + +/*@ ensures \result ≡ \old(dest); + assigns *(dest+(0 ..)), \result; + assigns *(dest+(0 ..)) + \from *(dest+(0 ..)), (indirect: dest), *(src+(0 ..)), (indirect: src); + assigns \result \from dest; + */ +extern wchar_t *wcscat(wchar_t *dest, wchar_t const *src); + +/*@ ensures \result ≡ \null ∨ \subset(\result, \old(wcs)+(0 ..)); + assigns \result; + assigns \result \from wcs, (indirect: wc); + */ +extern wchar_t *wcschr(wchar_t const *wcs, wchar_t wc); + +/*@ assigns \result; + assigns \result \from (indirect: *(s1+(0 ..))), (indirect: *(s2+(0 ..))); + */ +extern int wcscmp(wchar_t const *s1, wchar_t const *s2); + +/*@ ensures \result ≡ \old(dest); + assigns *(dest+(0 ..)), \result; + assigns *(dest+(0 ..)) + \from *(src+(0 ..)), (indirect: src), *(dest+(0 ..)), (indirect: dest); + assigns \result \from dest; + */ +extern wchar_t *wcscpy(wchar_t *dest, wchar_t const *src); + +/*@ assigns \result; + assigns \result + \from (indirect: *(wcs+(0 ..))), (indirect: *(accept+(0 ..))); + */ +extern size_t wcscspn(wchar_t const *wcs, wchar_t const *accept); + +/*@ assigns *(dest+(0 ..)), \result; + assigns *(dest+(0 ..)) + \from *(dest+(0 ..)), (indirect: dest), *(src+(0 .. n-1)), + (indirect: src), (indirect: n); + assigns \result + \from (indirect: *(dest+(0 ..))), (indirect: *(src+(0 .. n-1))), + (indirect: n); + */ +extern size_t wcslcat(wchar_t *dest, wchar_t const *src, size_t n); + +/*@ requires \separated(dest+(0 .. n-1), src+(0 .. n-1)); + assigns *(dest+(0 .. n-1)), \result; + assigns *(dest+(0 .. n-1)) + \from *(src+(0 .. n-1)), (indirect: src), (indirect: n); + assigns \result + \from (indirect: *(dest+(0 .. n-1))), (indirect: dest), + (indirect: *(src+(0 .. n-1))), (indirect: src), (indirect: n); + */ +extern size_t wcslcpy(wchar_t *dest, wchar_t const *src, size_t n); + +/*@ assigns \result; + assigns \result \from (indirect: *(s+(0 ..))); */ +extern size_t wcslen(wchar_t const *s); + +/*@ ensures \result ≡ \old(dest); + assigns *(dest+(0 ..)), \result; + assigns *(dest+(0 ..)) + \from *(dest+(0 ..)), (indirect: dest), *(src+(0 .. n-1)), + (indirect: src), (indirect: n); + assigns \result \from dest; + */ +extern wchar_t *wcsncat(wchar_t *dest, wchar_t const *src, size_t n); + +/*@ assigns \result; + assigns \result + \from (indirect: *(s1+(0 .. n-1))), (indirect: *(s2+(0 .. n-1))), + (indirect: n); + */ +extern int wcsncmp(wchar_t const *s1, wchar_t const *s2, size_t n); + +/*@ requires \separated(dest+(0 .. n-1), src+(0 .. n-1)); + ensures \result ≡ \old(dest); + assigns *(dest+(0 .. n-1)), \result; + assigns *(dest+(0 .. n-1)) + \from *(src+(0 .. n-1)), (indirect: src), (indirect: n); + assigns \result \from dest; + */ +extern wchar_t *wcsncpy(wchar_t *dest, wchar_t const *src, size_t n); + +/*@ ensures \result ≡ \null ∨ \subset(\result, \old(wcs)+(0 ..)); + assigns \result; + assigns \result + \from wcs, (indirect: *(wcs+(0 ..))), (indirect: *(accept+(0 ..))); + */ +extern wchar_t *wcspbrk(wchar_t const *wcs, wchar_t const *accept); + +/*@ ensures \result ≡ \null ∨ \subset(\result, \old(wcs)+(0 ..)); + assigns \result; + assigns \result \from wcs, (indirect: *(wcs+(0 ..))), (indirect: wc); + */ +extern wchar_t *wcsrchr(wchar_t const *wcs, wchar_t wc); + +/*@ assigns \result; + assigns \result + \from (indirect: *(wcs+(0 ..))), (indirect: *(accept+(0 ..))); + */ +extern size_t wcsspn(wchar_t const *wcs, wchar_t const *accept); + +/*@ ensures \result ≡ \null ∨ \subset(\result, \old(haystack)+(0 ..)); + assigns \result; + assigns \result + \from haystack, (indirect: *(haystack+(0 ..))), + (indirect: *(needle+(0 ..))); + */ +extern wchar_t *wcsstr(wchar_t const *haystack, wchar_t const *needle); + diff --git a/tests/spec/oracle/model.res.oracle b/tests/spec/oracle/model.res.oracle index 68791123bace582b5e2540616af9846635f9df12..e3c8460fa50c5ed132b95d24463760906741b269 100644 --- a/tests/spec/oracle/model.res.oracle +++ b/tests/spec/oracle/model.res.oracle @@ -47,8 +47,8 @@ void main(void) } else { _LAND: { - int tmp_0; - tmp_0 = s.x == 1; + int tmp_2; + tmp_2 = s.x == 1; } } /*@ assert s.z ≢ 0; */ ; diff --git a/tests/spec/oracle/purse.res.oracle b/tests/spec/oracle/purse.res.oracle index 91d977e52ceac96f77f9c675a90ef28ef47b8e6a..506393f99da324a3001172f948aab66cb671a84e 100644 --- a/tests/spec/oracle/purse.res.oracle +++ b/tests/spec/oracle/purse.res.oracle @@ -57,8 +57,32 @@ extern float strtof(char const *nptr, char **endptr); extern long double strtold(char const *nptr, char **endptr); /*@ assigns \result, *endptr; - assigns \result \from *(nptr+(0 ..)), base; - assigns *endptr \from nptr, *(nptr+(0 ..)), base; + assigns \result + \from (indirect: nptr), (indirect: *(nptr+(0 ..))), (indirect: base); + assigns *endptr + \from nptr, (indirect: *(nptr+(0 ..))), (indirect: endptr), + (indirect: base); + + behavior null_endptr: + assumes endptr ≡ \null; + assigns \result; + assigns \result + \from (indirect: nptr), (indirect: *(nptr+(0 ..))), (indirect: base); + + behavior nonnull_endptr: + assumes endptr ≢ \null; + requires \valid(endptr); + ensures \initialized(\old(endptr)); + ensures \subset(*\old(endptr), \old(nptr)+(0 ..)); + assigns \result, *endptr; + assigns \result + \from (indirect: nptr), (indirect: *(nptr+(0 ..))), (indirect: base); + assigns *endptr + \from nptr, (indirect: *(nptr+(0 ..))), (indirect: endptr), + (indirect: base); + + complete behaviors nonnull_endptr, null_endptr; + disjoint behaviors nonnull_endptr, null_endptr; */ extern long strtol(char const *nptr, char **endptr, int base); diff --git a/tests/spec/oracle/va.res.oracle b/tests/spec/oracle/va.res.oracle index 17d5f4bce16915b01f15f5679b3a165bbf089355..97966a1a8986415ef3fecbd2bc749b5ffa120440 100644 --- a/tests/spec/oracle/va.res.oracle +++ b/tests/spec/oracle/va.res.oracle @@ -2,6 +2,7 @@ [kernel] Parsing tests/spec/va.c (with preprocessing) tests/spec/va.c:6:[kernel] warning: The second argument in call to __builtin_va_start should be the last formal argument /* Generated by Frama-C */ +typedef int wchar_t; typedef __builtin_va_list va_list; typedef unsigned int size_t; typedef unsigned int ino_t; @@ -46,6 +47,257 @@ struct __fc_FILE { typedef struct __fc_FILE FILE; /* compiler builtin: void __builtin_va_start(__builtin_va_list); */ +/*@ +axiomatic MemCmp { + logic ℤ memcmp{L1, L2}(char *s1, char *s2, ℤ n) + reads \at(*(s1+(0 .. n-1)),L1), \at(*(s2+(0 .. n-1)),L2); + + axiom memcmp_zero{L1, L2}: + ∀ char *s1, char *s2; + ∀ ℤ n; + memcmp{L1, L2}(s1, s2, n) ≡ 0 ⇔ + (∀ ℤ i; 0 ≤ i < n ⇒ \at(*(s1+i),L1) ≡ \at(*(s2+i),L2)); + + } + */ +/*@ +axiomatic MemChr { + logic 𔹠memchr{L}(char *s, ℤ c, ℤ n) + reads *(s+(0 .. n-1)); + + axiom memchr_def{L}: + ∀ char *s; + ∀ ℤ c; + ∀ ℤ n; + memchr(s, c, n) ≡ \true ⇔ (∃ int i; 0 ≤ i < n ∧ *(s+i) ≡ c); + + } + */ +/*@ +axiomatic MemSet { + logic 𔹠memset{L}(char *s, ℤ c, ℤ n) + reads *(s+(0 .. n-1)); + + axiom memset_def{L}: + ∀ char *s; + ∀ ℤ c; + ∀ ℤ n; + memset(s, c, n) ≡ \true ⇔ (∀ ℤ i; 0 ≤ i < n ⇒ *(s+i) ≡ c); + + } + */ +/*@ +axiomatic StrLen { + logic ℤ strlen{L}(char *s) + reads *(s+(0 ..)); + + axiom strlen_pos_or_null{L}: + ∀ char *s; + ∀ ℤ i; + 0 ≤ i ∧ (∀ ℤ j; 0 ≤ j < i ⇒ *(s+j) ≢ '\000') ∧ + *(s+i) ≡ '\000' ⇒ strlen(s) ≡ i; + + axiom strlen_neg{L}: + ∀ char *s; (∀ ℤ i; 0 ≤ i ⇒ *(s+i) ≢ '\000') ⇒ strlen(s) < 0; + + axiom strlen_before_null{L}: + ∀ char *s; + ∀ ℤ i; 0 ≤ i < strlen(s) ⇒ *(s+i) ≢ '\000'; + + axiom strlen_at_null{L}: + ∀ char *s; 0 ≤ strlen(s) ⇒ *(s+strlen(s)) ≡ '\000'; + + axiom strlen_not_zero{L}: + ∀ char *s; + ∀ ℤ i; 0 ≤ i ≤ strlen(s) ∧ *(s+i) ≢ '\000' ⇒ i < strlen(s); + + axiom strlen_zero{L}: + ∀ char *s; + ∀ ℤ i; + 0 ≤ i ≤ strlen(s) ∧ *(s+i) ≡ '\000' ⇒ i ≡ strlen(s); + + axiom strlen_sup{L}: + ∀ char *s; + ∀ ℤ i; 0 ≤ i ∧ *(s+i) ≡ '\000' ⇒ 0 ≤ strlen(s) ≤ i; + + axiom strlen_shift{L}: + ∀ char *s; + ∀ ℤ i; 0 ≤ i ≤ strlen(s) ⇒ strlen(s+i) ≡ strlen(s)-i; + + axiom strlen_create{L}: + ∀ char *s; + ∀ ℤ i; 0 ≤ i ∧ *(s+i) ≡ '\000' ⇒ 0 ≤ strlen(s) ≤ i; + + axiom strlen_create_shift{L}: + ∀ char *s; + ∀ ℤ i; + ∀ ℤ k; + 0 ≤ k ≤ i ∧ *(s+i) ≡ '\000' ⇒ 0 ≤ strlen(s+k) ≤ i-k; + + axiom memcmp_strlen_left{L}: + ∀ char *s1, char *s2; + ∀ ℤ n; + memcmp{L, L}(s1, s2, n) ≡ 0 ∧ strlen(s1) < n ⇒ + strlen(s1) ≡ strlen(s2); + + axiom memcmp_strlen_right{L}: + ∀ char *s1, char *s2; + ∀ ℤ n; + memcmp{L, L}(s1, s2, n) ≡ 0 ∧ strlen(s2) < n ⇒ + strlen(s1) ≡ strlen(s2); + + axiom memcmp_strlen_shift_left{L}: + ∀ char *s1, char *s2; + ∀ ℤ k, ℤ n; + memcmp{L, L}(s1, s2+k, n) ≡ 0 ≤ k ∧ strlen(s1) < n ⇒ + 0 ≤ strlen(s2) ≤ k+strlen(s1); + + axiom memcmp_strlen_shift_right{L}: + ∀ char *s1, char *s2; + ∀ ℤ k, ℤ n; + memcmp{L, L}(s1+k, s2, n) ≡ 0 ≤ k ∧ strlen(s2) < n ⇒ + 0 ≤ strlen(s1) ≤ k+strlen(s2); + + } + */ +/*@ +axiomatic StrCmp { + logic ℤ strcmp{L}(char *s1, char *s2) + reads *(s1+(0 .. strlen(s1))), *(s2+(0 .. strlen(s2))); + + axiom strcmp_zero{L}: + ∀ char *s1, char *s2; + strcmp(s1, s2) ≡ 0 ⇔ + strlen(s1) ≡ strlen(s2) ∧ + (∀ ℤ i; 0 ≤ i ≤ strlen(s1) ⇒ *(s1+i) ≡ *(s2+i)); + + } + */ +/*@ +axiomatic StrNCmp { + logic ℤ strncmp{L}(char *s1, char *s2, ℤ n) + reads *(s1+(0 .. n-1)), *(s2+(0 .. n-1)); + + axiom strncmp_zero{L}: + ∀ char *s1, char *s2; + ∀ ℤ n; + strncmp(s1, s2, n) ≡ 0 ⇔ + (strlen(s1) < n ∧ strcmp(s1, s2) ≡ 0) ∨ + (∀ ℤ i; 0 ≤ i < n ⇒ *(s1+i) ≡ *(s2+i)); + + } + */ +/*@ +axiomatic StrChr { + logic 𔹠strchr{L}(char *s, ℤ c) + reads *(s+(0 .. strlen(s))); + + axiom strchr_def{L}: + ∀ char *s; + ∀ ℤ c; + strchr(s, c) ≡ \true ⇔ + (∃ ℤ i; 0 ≤ i ≤ strlen(s) ∧ *(s+i) ≡ c); + + } + */ +/*@ +axiomatic WcsLen { + logic ℤ wcslen{L}(wchar_t *s) + reads *(s+(0 ..)); + + axiom wcslen_pos_or_null{L}: + ∀ wchar_t *s; + ∀ ℤ i; + 0 ≤ i ∧ (∀ ℤ j; 0 ≤ j < i ⇒ *(s+j) ≢ 0) ∧ *(s+i) ≡ 0 ⇒ + wcslen(s) ≡ i; + + axiom wcslen_neg{L}: + ∀ wchar_t *s; (∀ ℤ i; 0 ≤ i ⇒ *(s+i) ≢ 0) ⇒ wcslen(s) < 0; + + axiom wcslen_before_null{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i < wcslen(s) ⇒ *(s+i) ≢ 0; + + axiom wcslen_at_null{L}: + ∀ wchar_t *s; 0 ≤ wcslen(s) ⇒ *(s+wcslen(s)) ≡ 0; + + axiom wcslen_not_zero{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i ≤ wcslen(s) ∧ *(s+i) ≢ 0 ⇒ i < wcslen(s); + + axiom wcslen_zero{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i ≤ wcslen(s) ∧ *(s+i) ≡ 0 ⇒ i ≡ wcslen(s); + + axiom wcslen_sup{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i ∧ *(s+i) ≡ 0 ⇒ 0 ≤ wcslen(s) ≤ i; + + axiom wcslen_shift{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i ≤ wcslen(s) ⇒ wcslen(s+i) ≡ wcslen(s)-i; + + axiom wcslen_create{L}: + ∀ wchar_t *s; + ∀ int i; 0 ≤ i ∧ *(s+i) ≡ 0 ⇒ 0 ≤ wcslen(s) ≤ i; + + axiom wcslen_create_shift{L}: + ∀ wchar_t *s; + ∀ int i; + ∀ int k; 0 ≤ k ≤ i ∧ *(s+i) ≡ 0 ⇒ 0 ≤ wcslen(s+k) ≤ i-k; + + } + */ +/*@ +axiomatic WcsCmp { + logic ℤ wcscmp{L}(wchar_t *s1, wchar_t *s2) + reads *(s1+(0 .. wcslen(s1))), *(s2+(0 .. wcslen(s2))); + + axiom wcscmp_zero{L}: + ∀ wchar_t *s1, wchar_t *s2; + wcscmp(s1, s2) ≡ 0 ⇔ + wcslen(s1) ≡ wcslen(s2) ∧ + (∀ ℤ i; 0 ≤ i ≤ wcslen(s1) ⇒ *(s1+i) ≡ *(s2+i)); + + } + */ +/*@ +axiomatic WcsNCmp { + logic ℤ wcsncmp{L}(wchar_t *s1, wchar_t *s2, ℤ n) + reads *(s1+(0 .. n-1)), *(s2+(0 .. n-1)); + + axiom wcsncmp_zero{L}: + ∀ wchar_t *s1, wchar_t *s2; + ∀ ℤ n; + wcsncmp(s1, s2, n) ≡ 0 ⇔ + (wcslen(s1) < n ∧ wcscmp(s1, s2) ≡ 0) ∨ + (∀ ℤ i; 0 ≤ i < n ⇒ *(s1+i) ≡ *(s2+i)); + + } + */ +/*@ logic ℤ minimum(ℤ i, ℤ j) = i<j? i: j; + */ +/*@ logic ℤ maximum(ℤ i, ℤ j) = i<j? j: i; + */ +/*@ +predicate valid_string{L}(char *s) = + 0 ≤ strlen(s) ∧ \valid(s+(0 .. strlen(s))); + */ +/*@ +predicate valid_read_string{L}(char *s) = + 0 ≤ strlen(s) ∧ \valid_read(s+(0 .. strlen(s))); + */ +/*@ +predicate valid_string_or_null{L}(char *s) = s ≡ \null ∨ valid_string(s); + */ +/*@ +predicate valid_wstring{L}(wchar_t *s) = + 0 ≤ wcslen(s) ∧ \valid(s+(0 .. wcslen(s))); + */ +/*@ +predicate valid_wstring_or_null{L}(wchar_t *s) = + s ≡ \null ∨ valid_wstring(s); + */ extern int __FC_errno; extern FILE *__fc_stdin; diff --git a/tests/spec/property_test.ml b/tests/spec/property_test.ml index 105989384a779eeec703969554830f7bd893270a..45f9d4d156b66e6155e670b5933660398d62a2c5 100644 --- a/tests/spec/property_test.ml +++ b/tests/spec/property_test.ml @@ -19,9 +19,18 @@ class visit prj = [ Logic_const.new_identified_term (Logic_const.tvar x), From [ Logic_const.new_identified_term (Logic_const.tvar x); Logic_const.new_identified_term (Logic_const.tvar c)] - ] - end; - ChangeTo b + ]; + let nkf = Cil.get_kernel_function self#behavior kf in + let keep_empty = true in + let post b = + Queue.add + (fun () -> + Annotations.add_assigns ~keep_empty emitter nkf b.b_assigns) + self#get_filling_actions; + b + in + ChangeDoChildrenPost(b, post) + end else DoChildren end let show_properties () = diff --git a/tests/spec/volatile.c b/tests/spec/volatile.c index 47ad8eacab97d2b8d91bfd30947a1d8c7030d490..24aa8a8e4b0724c5e57078373f0a741ce5046410 100644 --- a/tests/spec/volatile.c +++ b/tests/spec/volatile.c @@ -1,5 +1,5 @@ /* run.config - OPT: tests/spec/volatile_aux.c -print -check -copy + OPT: tests/spec/volatile_aux.c -print -copy */ #include "tests/spec/volatile.h" diff --git a/tests/syntax/Refresh_visitor.i b/tests/syntax/Refresh_visitor.i index 688249ed155486fbe953bbeb1e59ef9657923d8f..6c8b263b4ca07cc77006b1deba4e303060bb4f14 100644 --- a/tests/syntax/Refresh_visitor.i +++ b/tests/syntax/Refresh_visitor.i @@ -1,6 +1,6 @@ /* run.config EXECNOW: make -s @PTEST_DIR@/@PTEST_NAME@.cmxs -OPT: -check -load-module @PTEST_DIR@/@PTEST_NAME@ +OPT: -load-module @PTEST_DIR@/@PTEST_NAME@ */ struct S { int i; }; diff --git a/tests/syntax/array_static_arg.i b/tests/syntax/array_static_arg.i index c360b7283e52e68631f4c40a2289f12ab2c28a08..ebeb2e321872bbc02e0f82253c38cac94cb534b7 100644 --- a/tests/syntax/array_static_arg.i +++ b/tests/syntax/array_static_arg.i @@ -1,6 +1,6 @@ /* run.config DONTRUN: does not work yet. -OPT: -check -print +OPT: -print */ //@ requires i > 0 && \valid(a+(i-1)); diff --git a/tests/syntax/decl-function.i b/tests/syntax/decl-function.i index 3e53b82d25d0fc60af1c1e9106bf0eac5f214aa5..9b89719014d7ba20521df05963ef01cc3a33a724 100644 --- a/tests/syntax/decl-function.i +++ b/tests/syntax/decl-function.i @@ -1,6 +1,6 @@ /* run.config COMMENT: test the use of (==) in Ast.is_def_or_last_decl -OPT: -check -then -print -no-unicode +OPT: -then -print -no-unicode */ int x; diff --git a/tests/syntax/enum_repr.i b/tests/syntax/enum_repr.i index 73e5014783585d6d384f19d904b8dc17de374bdf..455e1c4aad4a1d5b923538016a82773032a30a24 100644 --- a/tests/syntax/enum_repr.i +++ b/tests/syntax/enum_repr.i @@ -1,8 +1,8 @@ /* run.config EXECNOW: make -s tests/syntax/Enum_repr.cmxs -OPT: -load-module tests/syntax/Enum_repr.cmxs -enums int -print -check -OPT: -load-module tests/syntax/Enum_repr.cmxs -enums gcc-short-enums -print -check -OPT: -load-module tests/syntax/Enum_repr.cmxs -enums gcc-enums -print -check +OPT: -load-module tests/syntax/Enum_repr.cmxs -enums int -print +OPT: -load-module tests/syntax/Enum_repr.cmxs -enums gcc-short-enums -print +OPT: -load-module tests/syntax/Enum_repr.cmxs -enums gcc-enums -print */ // is represented by | int | gcc-enums | gcc-short-enums diff --git a/tests/syntax/formals_decl_leak.i b/tests/syntax/formals_decl_leak.i index cd1996524cb8477f86b5aa86ee3ca1e6bfd825dc..6a521af4ade9356c5ed4431debc0970ff9d87596 100644 --- a/tests/syntax/formals_decl_leak.i +++ b/tests/syntax/formals_decl_leak.i @@ -1,5 +1,5 @@ /* run.config -OPT: -check -print -load-script tests/syntax/formals_decl_leak.ml tests/syntax/formals_decl_leak_1.i +OPT: -print -load-script tests/syntax/formals_decl_leak.ml tests/syntax/formals_decl_leak_1.i */ void f(int x); diff --git a/tests/syntax/gnu-asm-aesni.c b/tests/syntax/gnu-asm-aesni.c index 4826248f2c3f4b108da240d917c0f955445a3427..92166ef1fb563be84d0db21db651ca13fa439462 100644 --- a/tests/syntax/gnu-asm-aesni.c +++ b/tests/syntax/gnu-asm-aesni.c @@ -7,7 +7,7 @@ COMMENT: TEST_TITLE: Chiffrement via AES-NI COMMENT: TEST_MAIN: encrypt_aesni COMMENT: TEST_DESCRIPTION: Un message de 64 octets est initialisé à une valeur précise. Le nombre de tours est fixé à 12 et la clé de chiffrement étendue est initialisée à une valeur abstraite. L'appel à la fonction do_aesni_enc effectue le chiffrement et place le résultat à l'adresse mémoire pointée par le paramètre b. On vérifie ensuite que les cases du tableau b ont bien été initialisées et que le tableau a n'a pas été modifié. - OPT: -cpp-extra-args='-DUSE_AESNI' -check -print + OPT: -cpp-extra-args='-DUSE_AESNI' -print ------------------------- */ #include <__fc_builtin.h> diff --git a/tests/syntax/merge_inline_1.c b/tests/syntax/merge_inline_1.c index c96b3925c5e213d0379b9aa35c964190a892903a..f15868aef682d60f301f1340ff685ce08b45a0b1 100644 --- a/tests/syntax/merge_inline_1.c +++ b/tests/syntax/merge_inline_1.c @@ -1,5 +1,5 @@ /* run.config -OPT: @PTEST_DIR@/merge_inline_2.c -aggressive-merging -check -print +OPT: @PTEST_DIR@/merge_inline_2.c -aggressive-merging -print */ /* Test that we rename properly inlines even if they have prototypes and diff --git a/tests/syntax/multiple_decls_contracts.c b/tests/syntax/multiple_decls_contracts.c index 5f66680e497ea00167374dec058d8fd4ce976e86..3ac56b12d72e1800376ceb32e99c82755cca9076 100644 --- a/tests/syntax/multiple_decls_contracts.c +++ b/tests/syntax/multiple_decls_contracts.c @@ -1,7 +1,7 @@ /* run.config -OPT: share/libc/string.h @PTEST_FILE@ @PTEST_FILE@ -cpp-extra-args="-Ishare/libc" -check -print -OPT: @PTEST_FILE@ share/libc/string.h @PTEST_FILE@ -cpp-extra-args="-Ishare/libc" -check -print -OPT: @PTEST_FILE@ @PTEST_FILE@ share/libc/string.h -cpp-extra-args="-Ishare/libc" -check -print +OPT: share/libc/string.h @PTEST_FILE@ @PTEST_FILE@ -cpp-extra-args="-Ishare/libc" -print +OPT: @PTEST_FILE@ share/libc/string.h @PTEST_FILE@ -cpp-extra-args="-Ishare/libc" -print +OPT: @PTEST_FILE@ @PTEST_FILE@ share/libc/string.h -cpp-extra-args="-Ishare/libc" -print */ #include "string.h" diff --git a/tests/syntax/oracle/access_volatile_bts1589.res.oracle b/tests/syntax/oracle/access_volatile_bts1589.res.oracle index 60650ab4b35787a495a7e2213626939407124e13..aa7204240dd57c606e3a1c723570b41ea1516337 100644 --- a/tests/syntax/oracle/access_volatile_bts1589.res.oracle +++ b/tests/syntax/oracle/access_volatile_bts1589.res.oracle @@ -15,13 +15,13 @@ int main(void) { int __retres; int tmp; - int tmp_0; - int tmp_1; - int tmp_2; + int tmp_3; + int tmp_5; + int tmp_7; tmp = x; - tmp_0 = y; - tmp_1 = vs.a; - tmp_2 = vs.b; + tmp_3 = y; + tmp_5 = vs.a; + tmp_7 = vs.b; __retres = 0; return __retres; } diff --git a/tests/syntax/oracle/dangerous_expressions.res.oracle b/tests/syntax/oracle/dangerous_expressions.res.oracle index 95b4bb161a5cfeae5b120f7fbf19ae6d5ed8bd87..616e5ffcfec69ec01cb4c6271547c2704fa2fae1 100644 --- a/tests/syntax/oracle/dangerous_expressions.res.oracle +++ b/tests/syntax/oracle/dangerous_expressions.res.oracle @@ -5,9 +5,9 @@ int f(int * /*[10]*/ t, int n, int *ptr) { int __retres; int tmp; - int tmp_0; + int tmp_3; tmp = *(t + n); - tmp_0 = *ptr; + tmp_3 = *ptr; __retres = 65; return __retres; } diff --git a/tests/syntax/oracle/decay.res.oracle b/tests/syntax/oracle/decay.res.oracle index face8535079f40dca3896a12b4d890c7d8ec6b9d..3ba47de511a89e9ec679f0d8812751daf2eb77b0 100644 --- a/tests/syntax/oracle/decay.res.oracle +++ b/tests/syntax/oracle/decay.res.oracle @@ -29,10 +29,10 @@ void multi_dim_array_decay(void) struct P *pp; struct P p; int *tmp; - int *tmp_0; + int *tmp_3; pp = & p; tmp = pp->val[0]; - tmp_0 = p.val[0]; + tmp_3 = p.val[0]; return; } diff --git a/tests/syntax/oracle/exit.res.oracle b/tests/syntax/oracle/exit.res.oracle index e0c4d498619ee2efc124fbe65465ba09a7646741..70bedf67ffc90ec7b5459b7ddc64ffc12843b138 100644 --- a/tests/syntax/oracle/exit.res.oracle +++ b/tests/syntax/oracle/exit.res.oracle @@ -54,8 +54,32 @@ extern float strtof(char const *nptr, char **endptr); extern long double strtold(char const *nptr, char **endptr); /*@ assigns \result, *endptr; - assigns \result \from *(nptr+(0 ..)), base; - assigns *endptr \from nptr, *(nptr+(0 ..)), base; + assigns \result + \from (indirect: nptr), (indirect: *(nptr+(0 ..))), (indirect: base); + assigns *endptr + \from nptr, (indirect: *(nptr+(0 ..))), (indirect: endptr), + (indirect: base); + + behavior null_endptr: + assumes endptr ≡ \null; + assigns \result; + assigns \result + \from (indirect: nptr), (indirect: *(nptr+(0 ..))), (indirect: base); + + behavior nonnull_endptr: + assumes endptr ≢ \null; + requires \valid(endptr); + ensures \initialized(\old(endptr)); + ensures \subset(*\old(endptr), \old(nptr)+(0 ..)); + assigns \result, *endptr; + assigns \result + \from (indirect: nptr), (indirect: *(nptr+(0 ..))), (indirect: base); + assigns *endptr + \from nptr, (indirect: *(nptr+(0 ..))), (indirect: endptr), + (indirect: base); + + complete behaviors nonnull_endptr, null_endptr; + disjoint behaviors nonnull_endptr, null_endptr; */ extern long strtol(char const *nptr, char **endptr, int base); diff --git a/tests/syntax/oracle/local_uninitialized_bts_1081.res.oracle b/tests/syntax/oracle/local_uninitialized_bts_1081.res.oracle index 55797f8a660c2629b3c682fd686384e381864996..ad804cf65f73e3622a22d9d2d86ed0b784024e7c 100644 --- a/tests/syntax/oracle/local_uninitialized_bts_1081.res.oracle +++ b/tests/syntax/oracle/local_uninitialized_bts_1081.res.oracle @@ -10,21 +10,21 @@ int main(void) int foo; int x; int y; - int tmp_2; + int tmp_7; if (foo) { int tmp; tmp = x; } else { - int tmp_0; - tmp_0 = y; + int tmp_3; + tmp_3 = y; } if (! foo) { - int tmp_1; - tmp_1 = y; + int tmp_5; + tmp_5 = y; } { /* sequence */ - tmp_2 = foo; + tmp_7 = foo; ; } __retres = 0; diff --git a/tests/syntax/oracle/multiple_decls_contracts.0.res.oracle b/tests/syntax/oracle/multiple_decls_contracts.0.res.oracle index f9b77d3c99243ff64b0af23429dbe0d34f5c6007..c56518bbe499677d1aabda1f1c03a84f23d0a3c9 100644 --- a/tests/syntax/oracle/multiple_decls_contracts.0.res.oracle +++ b/tests/syntax/oracle/multiple_decls_contracts.0.res.oracle @@ -604,8 +604,32 @@ extern float strtof(char const *nptr, char **endptr); extern long double strtold(char const *nptr, char **endptr); /*@ assigns \result, *endptr; - assigns \result \from *(nptr+(0 ..)), base; - assigns *endptr \from nptr, *(nptr+(0 ..)), base; + assigns \result + \from (indirect: nptr), (indirect: *(nptr+(0 ..))), (indirect: base); + assigns *endptr + \from nptr, (indirect: *(nptr+(0 ..))), (indirect: endptr), + (indirect: base); + + behavior null_endptr: + assumes endptr ≡ \null; + assigns \result; + assigns \result + \from (indirect: nptr), (indirect: *(nptr+(0 ..))), (indirect: base); + + behavior nonnull_endptr: + assumes endptr ≢ \null; + requires \valid(endptr); + ensures \initialized(\old(endptr)); + ensures \subset(*\old(endptr), \old(nptr)+(0 ..)); + assigns \result, *endptr; + assigns \result + \from (indirect: nptr), (indirect: *(nptr+(0 ..))), (indirect: base); + assigns *endptr + \from nptr, (indirect: *(nptr+(0 ..))), (indirect: endptr), + (indirect: base); + + complete behaviors nonnull_endptr, null_endptr; + disjoint behaviors nonnull_endptr, null_endptr; */ extern long strtol(char const *nptr, char **endptr, int base); diff --git a/tests/syntax/oracle/multiple_decls_contracts.1.res.oracle b/tests/syntax/oracle/multiple_decls_contracts.1.res.oracle index a8e088f2c503153e2805d64074d07bca19d129b8..4a4fdb2849becfcf8c3c5c10a0e86fbd90406264 100644 --- a/tests/syntax/oracle/multiple_decls_contracts.1.res.oracle +++ b/tests/syntax/oracle/multiple_decls_contracts.1.res.oracle @@ -604,8 +604,32 @@ extern float strtof(char const *nptr, char **endptr); extern long double strtold(char const *nptr, char **endptr); /*@ assigns \result, *endptr; - assigns \result \from *(nptr+(0 ..)), base; - assigns *endptr \from nptr, *(nptr+(0 ..)), base; + assigns \result + \from (indirect: nptr), (indirect: *(nptr+(0 ..))), (indirect: base); + assigns *endptr + \from nptr, (indirect: *(nptr+(0 ..))), (indirect: endptr), + (indirect: base); + + behavior null_endptr: + assumes endptr ≡ \null; + assigns \result; + assigns \result + \from (indirect: nptr), (indirect: *(nptr+(0 ..))), (indirect: base); + + behavior nonnull_endptr: + assumes endptr ≢ \null; + requires \valid(endptr); + ensures \initialized(\old(endptr)); + ensures \subset(*\old(endptr), \old(nptr)+(0 ..)); + assigns \result, *endptr; + assigns \result + \from (indirect: nptr), (indirect: *(nptr+(0 ..))), (indirect: base); + assigns *endptr + \from nptr, (indirect: *(nptr+(0 ..))), (indirect: endptr), + (indirect: base); + + complete behaviors nonnull_endptr, null_endptr; + disjoint behaviors nonnull_endptr, null_endptr; */ extern long strtol(char const *nptr, char **endptr, int base); diff --git a/tests/syntax/oracle/multiple_decls_contracts.2.res.oracle b/tests/syntax/oracle/multiple_decls_contracts.2.res.oracle index 9608610ed5d9878d119c38df716096f2d7bab806..b8bccbc6b13e832dd0d7976804c70d91d401fd08 100644 --- a/tests/syntax/oracle/multiple_decls_contracts.2.res.oracle +++ b/tests/syntax/oracle/multiple_decls_contracts.2.res.oracle @@ -604,8 +604,32 @@ extern float strtof(char const *nptr, char **endptr); extern long double strtold(char const *nptr, char **endptr); /*@ assigns \result, *endptr; - assigns \result \from *(nptr+(0 ..)), base; - assigns *endptr \from nptr, *(nptr+(0 ..)), base; + assigns \result + \from (indirect: nptr), (indirect: *(nptr+(0 ..))), (indirect: base); + assigns *endptr + \from nptr, (indirect: *(nptr+(0 ..))), (indirect: endptr), + (indirect: base); + + behavior null_endptr: + assumes endptr ≡ \null; + assigns \result; + assigns \result + \from (indirect: nptr), (indirect: *(nptr+(0 ..))), (indirect: base); + + behavior nonnull_endptr: + assumes endptr ≢ \null; + requires \valid(endptr); + ensures \initialized(\old(endptr)); + ensures \subset(*\old(endptr), \old(nptr)+(0 ..)); + assigns \result, *endptr; + assigns \result + \from (indirect: nptr), (indirect: *(nptr+(0 ..))), (indirect: base); + assigns *endptr + \from nptr, (indirect: *(nptr+(0 ..))), (indirect: endptr), + (indirect: base); + + complete behaviors nonnull_endptr, null_endptr; + disjoint behaviors nonnull_endptr, null_endptr; */ extern long strtol(char const *nptr, char **endptr, int base); diff --git a/tests/syntax/oracle/reorder.res.oracle b/tests/syntax/oracle/reorder.res.oracle index e9be233803661220d7b8505ece37d86381bfa791..be1bdd889ac30f923afbd0a6e6741f513fc254af 100644 --- a/tests/syntax/oracle/reorder.res.oracle +++ b/tests/syntax/oracle/reorder.res.oracle @@ -1,6 +1,8 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) [kernel] Parsing tests/syntax/reorder.i (no preprocessing) /* Generated by Frama-C */ +/*@ logic ℤ l= 1; + */ int x; /*@ ensures i ≡ i; */ void f(void) @@ -21,20 +23,18 @@ extern void g(void); */ /*@ logic ℤ j= l; */ -/*@ logic ℤ l= 1; - */ /*@ logic ℤ k= l; */ /* Generated by Frama-C */ -int x; /*@ logic ℤ l= 1; */ -/*@ logic ℤ k= l; - */ +int x; /*@ logic ℤ j= l; */ +/*@ logic ℤ k= l; + */ /*@ logic ℤ i= j+k; */ /*@ ensures i ≡ i; */ diff --git a/tests/syntax/oracle/syntactic_hook.res.oracle b/tests/syntax/oracle/syntactic_hook.res.oracle index 4fcfd624672621bed24b75fd6a821f7270ef2fbd..c8945ba59b03ac9d87ec5e9614500b4c87dc3ace 100644 --- a/tests/syntax/oracle/syntactic_hook.res.oracle +++ b/tests/syntax/oracle/syntactic_hook.res.oracle @@ -1,11 +1,31 @@ [kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +share/libc/__fc_builtin_for_normalization.i:34:[kernel] New global node introducing identifier Frama_C_bzero(24) +[kernel] First occurrence of Frama_C_bzero +share/libc/__fc_builtin_for_normalization.i:43:[kernel] New global node introducing identifier Frama_C_copy_block(40) +[kernel] First occurrence of Frama_C_copy_block [kernel] Parsing tests/syntax/syntactic_hook.i (no preprocessing) +tests/syntax/syntactic_hook.i:5:[kernel] New global node introducing identifier f(69) +[kernel] First occurrence of f +tests/syntax/syntactic_hook.i:7:[kernel] New global node introducing identifier h(72) +[kernel] First occurrence of h tests/syntax/syntactic_hook.i:9:[kernel] warning: [SH]: definition of h does not use exactly the same prototype as declared on line 7 +tests/syntax/syntactic_hook.i:9:[kernel] New global node introducing identifier h(72) +[kernel] New occurrence of existing identifier h +tests/syntax/syntactic_hook.i:11:[kernel] New global node introducing identifier k(79) +[kernel] First occurrence of k +tests/syntax/syntactic_hook.i:13:[kernel] New global node introducing identifier k(79) +[kernel] New occurrence of existing identifier k +tests/syntax/syntactic_hook.i:15:[kernel] New global node introducing identifier main(85) +[kernel] First occurrence of main +tests/syntax/syntactic_hook.i:17:[kernel] New global node introducing identifier t(89) +[kernel] First occurrence of t tests/syntax/syntactic_hook.i:17:[kernel] warning: [SH]: definition of local function t +:0:[kernel] New global node introducing identifier g(91) +[kernel] First occurrence of g tests/syntax/syntactic_hook.i:21:[kernel] warning: Calling undeclared function g. Old style K&R code? tests/syntax/syntactic_hook.i:21:[kernel] warning: [SH]: implicit declaration for prototype g tests/syntax/syntactic_hook.i:22:[kernel] Dropping side-effect in sizeof. Nothing to worry, this is by the book. -tests/syntax/syntactic_hook.i:22:[kernel] warning: [SH]: dropping side effect in sizeof: x++ is converted to tmp_0 +tests/syntax/syntactic_hook.i:22:[kernel] warning: [SH]: dropping side effect in sizeof: x++ is converted to tmp tests/syntax/syntactic_hook.i:24:[kernel] warning: [SH]: side effect of expression x++ occurs in conditional part of expression x && x++. It is not always executed diff --git a/tests/syntax/reorder.ml b/tests/syntax/reorder.ml index 394f9855c1cbadaa0d90cda8e11a30d1e6ecb1cf..882ecb4e7d483ed4cfec1e95f8900fc648b28f42 100644 --- a/tests/syntax/reorder.ml +++ b/tests/syntax/reorder.ml @@ -45,11 +45,6 @@ let run () = Annotations.add_global Emitter.end_user dlj; Annotations.add_global Emitter.end_user dlk; Annotations.add_global Emitter.end_user dll; - file.globals <- file.globals @ - [ GAnnot (dli,loc); - GAnnot (dlj,loc); - GAnnot (dll, loc); - GAnnot (dlk,loc) ]; Logic_utils.add_logic_function li; Logic_utils.add_logic_function lj; Logic_utils.add_logic_function lk; diff --git a/tests/syntax/struct_copy.i b/tests/syntax/struct_copy.i index f926dc8cbdd6c962d0c3ea5efa7cc104086c57f7..4d5c7e4f0ed32864748d961156f5cb4bcf74a995 100644 --- a/tests/syntax/struct_copy.i +++ b/tests/syntax/struct_copy.i @@ -1,5 +1,5 @@ /* run.config -OPT: -copy -check -print +OPT: -copy -print */ struct inner { int a, b; diff --git a/tests/syntax/syntactic_hook.ml b/tests/syntax/syntactic_hook.ml index 2ac5fef6d091037116d6c83bb4d19c7b66f6b073..c3d9f7b81e203105ce33a13701bdbc3ac7556dd5 100644 --- a/tests/syntax/syntactic_hook.ml +++ b/tests/syntax/syntactic_hook.ml @@ -89,3 +89,32 @@ let warn_cond_effect orig e = ;; Cabs2cil.register_conditional_side_effect_hook warn_cond_effect + +let process_new_global = + let seen_vi = Cil_datatype.Varinfo.Hashtbl.create 10 in + fun vi exists -> + let source = fst vi.vdecl in + Kernel.feedback ~source + "New global node introducing identifier %s(%d)" vi.vname vi.vid; + if exists then begin + Kernel.feedback "New occurrence of existing identifier %s" vi.vname; + if not (Cil_datatype.Varinfo.Hashtbl.mem seen_vi vi) then + Kernel.fatal + "identifier %s is supposed to have been already seen, but it has \ + not been processed through this hook." vi.vname; + let vi' = Cil_datatype.Varinfo.Hashtbl.find seen_vi vi in + if vi != vi' then + Kernel.fatal + "identifier %s(%d) is not shared with its previous occurrence %s(%d)" + vi.vname vi.vid vi'.vname vi'.vid + end else begin + Kernel.feedback "First occurrence of %s" vi.vname; + if Cil_datatype.Varinfo.Hashtbl.mem seen_vi vi then + Kernel.fatal + "This is supposed to be the first occurrence of %s, \ + but it is already present in the table." vi.vname; + Cil_datatype.Varinfo.Hashtbl.add seen_vi vi vi + end +;; + +Cabs2cil.register_new_global_hook process_new_global diff --git a/tests/test_config_symblocs b/tests/test_config_symblocs new file mode 100644 index 0000000000000000000000000000000000000000..026b5eac986a850e03922b18a83f566239e9eaa1 --- /dev/null +++ b/tests/test_config_symblocs @@ -0,0 +1,2 @@ +MACRO: VALUECONFIG -eva-symbolic-locations-domain +OPT: -val @VALUECONFIG@ -journal-disable -out -input -deps diff --git a/tests/value/bug0196.c b/tests/value/bug0196.c index 8db7c20bfaaad08980ce06c60b72a24d48409bbd..acd42f7a0b61b3cb3a491a1d0db6132e97bdfb15 100644 --- a/tests/value/bug0196.c +++ b/tests/value/bug0196.c @@ -1,5 +1,5 @@ /*run.config* - STDOPT: #"-simplify-cfg" #"-check" +"-print" + STDOPT: #"-simplify-cfg" +"-print" */ int fact(int n) { diff --git a/tests/value/empty_struct2.c b/tests/value/empty_struct2.c index ca0590f71a8f641454c1591106d64f2cb1375c50..3b02ff971da9cd218697a8b795e05454ae1c768b 100644 --- a/tests/value/empty_struct2.c +++ b/tests/value/empty_struct2.c @@ -41,12 +41,12 @@ int main() { e1 = global_empty; Frama_C_show_each_global_empty(global_empty); Frama_C_show_each_e1(e1); - memcpy(&e2, &e1, sizeof(e1)); + memcpy(&e2, &e1, sizeof(e1)); // imprecise, no builtin comp c1, c2; c1.a = 42; c1.b = 77; c1.e = e1; - memcpy(&c2, &c1, sizeof(c1)); + memcpy(&c2, &c1, sizeof(c1)); // imprecise, no builtin Frama_C_show_each_c2(c2); Frama_C_show_each_c2_e(c2.e); comp res = f(c2, &c1); diff --git a/tests/value/empty_union.c b/tests/value/empty_union.c index d59cc571347e3a9c25df6ef0437562a5c3b23092..9bb8d9ddeea7d7ba4fde8b1ee4fafd18b782dcc5 100644 --- a/tests/value/empty_union.c +++ b/tests/value/empty_union.c @@ -77,12 +77,12 @@ int main() { e1 = global_empty; Frama_C_show_each_global_empty(global_empty); Frama_C_show_each_e1(e1); - memcpy(&e2, &e1, sizeof(e1)); + memcpy(&e2, &e1, sizeof(e1)); // imprecise, no builtin comp c1, c2; c1.a = 42; c1.b = 77; c1.e = e1; - memcpy(&c2, &c1, sizeof(c1)); + memcpy(&c2, &c1, sizeof(c1)); // imprecise, no builtin Frama_C_show_each_c2(c2); Frama_C_show_each_c2_e(c2.e); comp res = f(c1, &c1); diff --git a/tests/value/enum2.c b/tests/value/enum2.c index 9b31f8f6020d29c9b252ea63d57c2b8b6d6b3f2d..ad0b5d7e436838f4c7d3f988cf9d1cfde6e9bd9e 100644 --- a/tests/value/enum2.c +++ b/tests/value/enum2.c @@ -1,6 +1,6 @@ /* run.config* GCC: - OPT: -check -cpp-gnu-like -cpp-command "gcc -C -E -I. %1 -o %2" -val @VALUECONFIG@ -deps -out -input -journal-disable + OPT: -cpp-gnu-like -cpp-command "gcc -C -E -I. %1 -o %2" -val @VALUECONFIG@ -deps -out -input -journal-disable */ /* This test of enums doubles with a test of the % syntax in -cpp-command */ diff --git a/tests/value/fun_ptr.i b/tests/value/fun_ptr.i index cff498ff8ebfb53847ba5095513e45fd652026ad..1a7475e8680f880685f819f263eb5b234cab1cf6 100644 --- a/tests/value/fun_ptr.i +++ b/tests/value/fun_ptr.i @@ -1,3 +1,7 @@ +/* run.config* + STDOPT: + STDOPT: +"-machdep msvc_x86_64" +*/ int f(int x) @@ -14,7 +18,7 @@ typedef int (*fptr1)(int); typedef int (*fptr2)(int, int); typedef double (*fptr3)(int); -long t[2] = { (long)&f, (long)&g }; +long long t[2] = { (long long)&f, (long long)&g }; int R1, R2; double R3; diff --git a/tests/value/local.i b/tests/value/local.i index 7685bd44951de85d3f7be29501ea1193d4c9a4de..e8b6ab0fa2576e52c19b4e703087198f0a102cd6 100644 --- a/tests/value/local.i +++ b/tests/value/local.i @@ -20,6 +20,13 @@ int *h(int *x) return x+1; } +void i(int *x) +{ + int local; + x = &local; + return; // must NOT emit warning about escaping address of 'local' +} + void main(void) { int e; @@ -27,4 +34,5 @@ void main(void) Z = g(); Frama_C_dump_each(); V = h(&e); + i(&e); } diff --git a/tests/value/oracle/abstract_struct_1.res.oracle b/tests/value/oracle/abstract_struct_1.res.oracle index 8f29a3b92ceeb30430f81cdfa738790d43f00b40..da98bb1e90e8be7e5cbdd5c868b851e355ea0f42 100644 --- a/tests/value/oracle/abstract_struct_1.res.oracle +++ b/tests/value/oracle/abstract_struct_1.res.oracle @@ -22,7 +22,7 @@ tests/value/abstract_struct_1.c:10:[value] warning: during initialization of var Called from tests/value/abstract_struct_1.c:13. tests/value/abstract_struct_1.c:13:[kernel] warning: No code nor implicit assigns clause for function calloc, generating default assigns from the prototype [value] using specification for function calloc -share/libc/stdlib.h:146:[value] function calloc: precondition got status valid. +share/libc/stdlib.h:159:[value] function calloc: precondition got status valid. [value] Done for function calloc [value] Recording results for main [value] done for function main diff --git a/tests/value/oracle/empty_struct2.res.oracle b/tests/value/oracle/empty_struct2.res.oracle index e78a67ac6c367f6087764a48c0065a6e45a34b60..94d86df34e886618549af642f26df72b13d9e765 100644 --- a/tests/value/oracle/empty_struct2.res.oracle +++ b/tests/value/oracle/empty_struct2.res.oracle @@ -6,8 +6,8 @@ [value:initial-state] Values of globals at initialization nondet ∈ [--..--] tests/value/empty_struct2.c:40:[value] assertion got status valid. -[value] Called Frama_C_show_each_global_empty({{ }}) -[value] Called Frama_C_show_each_e1({{ }}) +[value] Called Frama_C_show_each_global_empty(∅) +[value] Called Frama_C_show_each_e1(∅) [value] computing for function memcpy <- main. Called from tests/value/empty_struct2.c:44. [value] using specification for function memcpy @@ -21,7 +21,7 @@ tests/value/empty_struct2.c:44:[value] cannot evaluate ACSL term, unsupported AC tests/value/empty_struct2.c:49:[value] cannot evaluate ACSL term, unsupported ACSL construct: logic functions or predicates [value] Done for function memcpy [value] Called Frama_C_show_each_c2([--..--]) -[value] Called Frama_C_show_each_c2_e({{ }}) +[value] Called Frama_C_show_each_c2_e(∅) [value] computing for function f <- main. Called from tests/value/empty_struct2.c:52. tests/value/empty_struct2.c:27:[value] warning: accessing uninitialized left-value. assert \initialized(&s.b); diff --git a/tests/value/oracle/empty_union.res.oracle b/tests/value/oracle/empty_union.res.oracle index 1a6bbfe07f3fc493390229b39aabbb0d1d72b078..051dc2721080fffd9ddbfb8c397e48089c2c64e1 100644 --- a/tests/value/oracle/empty_union.res.oracle +++ b/tests/value/oracle/empty_union.res.oracle @@ -14,8 +14,8 @@ tests/value/empty_union.c:59:[kernel] imprecise size for variable f1 (Size of ar .data[1..2] ∈ {0} tests/value/empty_union.c:75:[value] assertion got status valid. tests/value/empty_union.c:76:[value] assertion got status valid. -[value] Called Frama_C_show_each_global_empty({{ }}) -[value] Called Frama_C_show_each_e1({{ }}) +[value] Called Frama_C_show_each_global_empty(∅) +[value] Called Frama_C_show_each_e1(∅) [value] computing for function memcpy <- main. Called from tests/value/empty_union.c:80. [value] using specification for function memcpy @@ -29,7 +29,7 @@ tests/value/empty_union.c:80:[value] cannot evaluate ACSL term, unsupported ACSL tests/value/empty_union.c:85:[value] cannot evaluate ACSL term, unsupported ACSL construct: logic functions or predicates [value] Done for function memcpy [value] Called Frama_C_show_each_c2([--..--]) -[value] Called Frama_C_show_each_c2_e({{ }}) +[value] Called Frama_C_show_each_c2_e(∅) [value] computing for function f <- main. Called from tests/value/empty_union.c:88. [value] Recording results for f diff --git a/tests/value/oracle/fun_ptr.0.err.oracle b/tests/value/oracle/fun_ptr.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle/fun_ptr.0.res.oracle b/tests/value/oracle/fun_ptr.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..a64d4f525b9c22108ab612421154c362b049a830 --- /dev/null +++ b/tests/value/oracle/fun_ptr.0.res.oracle @@ -0,0 +1,198 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/fun_ptr.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + t[0] ∈ {{ (long long)&f }} + [1] ∈ {{ (long long)&g }} + R1 ∈ {0} + R2 ∈ {0} + R3 ∈ {0} + v ∈ [--..--] +[value] computing for function test1 <- main. + Called from tests/value/fun_ptr.i:78. +tests/value/fun_ptr.i:28:[value] warning: pointer to function with incompatible type. + assert \valid_function((int (*)(int ))t[nd]); +[value] computing for function f <- test1 <- main. + Called from tests/value/fun_ptr.i:28. +[value] Recording results for f +[value] Done for function f +[value] Recording results for test1 +[value] Done for function test1 +[value] computing for function test2 <- main. + Called from tests/value/fun_ptr.i:79. +tests/value/fun_ptr.i:33:[value] warning: pointer to function with incompatible type. + assert \valid_function((int (*)(int , int ))t[nd]); +[value] computing for function g <- test2 <- main. + Called from tests/value/fun_ptr.i:33. +[value] Recording results for g +[value] Done for function g +[value] computing for function f <- test2 <- main. + Called from tests/value/fun_ptr.i:33. +[value] Recording results for f +[value] Done for function f +[value] Recording results for test2 +[value] Done for function test2 +[value] computing for function test3 <- main. + Called from tests/value/fun_ptr.i:80. +tests/value/fun_ptr.i:38:[value] warning: pointer to function with incompatible type. + assert \valid_function((double (*)(int ))t[nd]); +[value] Recording results for test3 +[value] Done for function test3 +tests/value/fun_ptr.i:83:[value] warning: Function type must match type at call site: assert(function type matches) +tests/value/fun_ptr.i:85:[value] warning: Function type must match type at call site: assert(function type matches) +[value] computing for function h <- main. + Called from tests/value/fun_ptr.i:87. +[value] Recording results for h +[value] Done for function h +[value] computing for function test_benign <- main. + Called from tests/value/fun_ptr.i:89. +tests/value/fun_ptr.i:56:[value] warning: pointer to function with incompatible type. assert \valid_function(p); +[value] computing for function benign <- test_benign <- main. + Called from tests/value/fun_ptr.i:56. +[value] Recording results for benign +[value] Done for function benign +[value] Recording results for test_benign +[value] Done for function test_benign +[value] computing for function test_too_much_benign <- main. + Called from tests/value/fun_ptr.i:90. +tests/value/fun_ptr.i:70:[value] warning: pointer to function with incompatible type. assert \valid_function(p); +[value] computing for function too_much <- test_too_much_benign <- main. + Called from tests/value/fun_ptr.i:70. +[value] Recording results for too_much +[value] Done for function too_much +tests/value/fun_ptr.i:73:[value] warning: pointer to function with incompatible type. assert \valid_function(p); +[value] Recording results for test_too_much_benign +[value] Done for function test_too_much_benign +[value] Recording results for main +[value] done for function main +tests/value/fun_ptr.i:38:[value] assertion 'Value,function_pointer' got final status invalid. +tests/value/fun_ptr.i:73:[value] assertion 'Value,function_pointer' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function benign: + q ∈ {{ &x }} + k ∈ {-2147483648} + x ∈ {-2147483648} +[value:final-states] Values at end of function f: + __retres ∈ {4} +[value:final-states] Values at end of function g: + __retres ∈ {7} +[value:final-states] Values at end of function h: + __retres ∈ {3.} +[value:final-states] Values at end of function test1: + R1 ∈ {4} +[value:final-states] Values at end of function test2: + R2 ∈ {4; 7} +[value:final-states] Values at end of function test3: + NON TERMINATING FUNCTION +[value:final-states] Values at end of function test_benign: + x ∈ {-2147483648} + p ∈ {{ (void (*)(long , short *))&benign }} +[value:final-states] Values at end of function too_much: + j ∈ {1} +[value:final-states] Values at end of function test_too_much_benign: + p ∈ {{ (void (*)(int , int ))&too_much }} +[value:final-states] Values at end of function main: + R1 ∈ {4} + R2 ∈ {4; 7} + R3 ∈ {0} + ph ∈ {{ &h }} + __retres ∈ {0} +[from] Computing for function benign +[from] Done for function benign +[from] Computing for function f +[from] Done for function f +[from] Computing for function g +[from] Done for function g +[from] Computing for function h +[from] Done for function h +[from] Computing for function test1 +[from] Done for function test1 +[from] Computing for function test2 +tests/value/fun_ptr.i:33:[from] warning: variadic call detected. Using only 1 argument(s). +[from] Done for function test2 +[from] Computing for function test3 +[from] Non-terminating function test3 (no dependencies) +[from] Done for function test3 +[from] Computing for function test_benign +[from] Done for function test_benign +[from] Computing for function too_much +[from] Done for function too_much +[from] Computing for function test_too_much_benign +tests/value/fun_ptr.i:70:[from] warning: variadic call detected. Using only 1 argument(s). +[from] Done for function test_too_much_benign +[from] Computing for function main +tests/value/fun_ptr.i:85:[from] warning: variadic call detected. Using only 0 argument(s). +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function benign: + x FROM j; p +[from] Function f: + \result FROM x +[from] Function g: + \result FROM x; y +[from] Function h: + \result FROM a; b +[from] Function test1: + R1 FROM t[0..1]; nd +[from] Function test2: + R2 FROM t[0..1]; nd +[from] Function test3: + NON TERMINATING - NO EFFECTS +[from] Function test_benign: + NO EFFECTS +[from] Function too_much: + NO EFFECTS +[from] Function test_too_much_benign: + NO EFFECTS +[from] Function main: + R1 FROM t[0..1]; v + R2 FROM t[0..1]; v + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function benign: + q; k; x +[inout] Inputs for function benign: + \nothing +[inout] Out (internal) for function f: + __retres +[inout] Inputs for function f: + \nothing +[inout] Out (internal) for function g: + __retres +[inout] Inputs for function g: + \nothing +[inout] Out (internal) for function h: + __retres +[inout] Inputs for function h: + \nothing +[inout] Out (internal) for function test1: + R1 +[inout] Inputs for function test1: + t[0..1] +[inout] Out (internal) for function test2: + R2 +[inout] Inputs for function test2: + t[0..1] +[inout] Out (internal) for function test3: + R3 +[inout] Inputs for function test3: + t[0..1] +[inout] Out (internal) for function test_benign: + x; p +[inout] Inputs for function test_benign: + \nothing +[inout] Out (internal) for function too_much: + j +[inout] Inputs for function too_much: + \nothing +[inout] Out (internal) for function test_too_much_benign: + p +[inout] Inputs for function test_too_much_benign: + v +[inout] Out (internal) for function main: + R1; R2; R3; ph; __retres +[inout] Inputs for function main: + t[0..1]; v diff --git a/tests/value/oracle/fun_ptr.1.err.oracle b/tests/value/oracle/fun_ptr.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle/fun_ptr.res.oracle b/tests/value/oracle/fun_ptr.1.res.oracle similarity index 81% rename from tests/value/oracle/fun_ptr.res.oracle rename to tests/value/oracle/fun_ptr.1.res.oracle index 974a74650421c83102ed00d6f4879ce7531e9854..b818469156c0c5a5b43543e234c1b6b9a40d3375 100644 --- a/tests/value/oracle/fun_ptr.res.oracle +++ b/tests/value/oracle/fun_ptr.1.res.oracle @@ -4,71 +4,71 @@ [value] Computing initial state [value] Initial state computed [value:initial-state] Values of globals at initialization - t[0] ∈ {{ (long)&f }} - [1] ∈ {{ (long)&g }} + t[0] ∈ {{ (__int64)&f }} + [1] ∈ {{ (__int64)&g }} R1 ∈ {0} R2 ∈ {0} R3 ∈ {0} v ∈ [--..--] [value] computing for function test1 <- main. - Called from tests/value/fun_ptr.i:74. -tests/value/fun_ptr.i:24:[value] warning: pointer to function with incompatible type. + Called from tests/value/fun_ptr.i:78. +tests/value/fun_ptr.i:28:[value] warning: pointer to function with incompatible type. assert \valid_function((int (*)(int ))t[nd]); [value] computing for function f <- test1 <- main. - Called from tests/value/fun_ptr.i:24. + Called from tests/value/fun_ptr.i:28. [value] Recording results for f [value] Done for function f [value] Recording results for test1 [value] Done for function test1 [value] computing for function test2 <- main. - Called from tests/value/fun_ptr.i:75. -tests/value/fun_ptr.i:29:[value] warning: pointer to function with incompatible type. + Called from tests/value/fun_ptr.i:79. +tests/value/fun_ptr.i:33:[value] warning: pointer to function with incompatible type. assert \valid_function((int (*)(int , int ))t[nd]); [value] computing for function g <- test2 <- main. - Called from tests/value/fun_ptr.i:29. + Called from tests/value/fun_ptr.i:33. [value] Recording results for g [value] Done for function g [value] computing for function f <- test2 <- main. - Called from tests/value/fun_ptr.i:29. + Called from tests/value/fun_ptr.i:33. [value] Recording results for f [value] Done for function f [value] Recording results for test2 [value] Done for function test2 [value] computing for function test3 <- main. - Called from tests/value/fun_ptr.i:76. -tests/value/fun_ptr.i:34:[value] warning: pointer to function with incompatible type. + Called from tests/value/fun_ptr.i:80. +tests/value/fun_ptr.i:38:[value] warning: pointer to function with incompatible type. assert \valid_function((double (*)(int ))t[nd]); [value] Recording results for test3 [value] Done for function test3 -tests/value/fun_ptr.i:79:[value] warning: Function type must match type at call site: assert(function type matches) -tests/value/fun_ptr.i:81:[value] warning: Function type must match type at call site: assert(function type matches) +tests/value/fun_ptr.i:83:[value] warning: Function type must match type at call site: assert(function type matches) +tests/value/fun_ptr.i:85:[value] warning: Function type must match type at call site: assert(function type matches) [value] computing for function h <- main. - Called from tests/value/fun_ptr.i:83. + Called from tests/value/fun_ptr.i:87. [value] Recording results for h [value] Done for function h [value] computing for function test_benign <- main. - Called from tests/value/fun_ptr.i:85. -tests/value/fun_ptr.i:52:[value] warning: pointer to function with incompatible type. assert \valid_function(p); + Called from tests/value/fun_ptr.i:89. +tests/value/fun_ptr.i:56:[value] warning: pointer to function with incompatible type. assert \valid_function(p); [value] computing for function benign <- test_benign <- main. - Called from tests/value/fun_ptr.i:52. + Called from tests/value/fun_ptr.i:56. [value] Recording results for benign [value] Done for function benign [value] Recording results for test_benign [value] Done for function test_benign [value] computing for function test_too_much_benign <- main. - Called from tests/value/fun_ptr.i:86. -tests/value/fun_ptr.i:66:[value] warning: pointer to function with incompatible type. assert \valid_function(p); + Called from tests/value/fun_ptr.i:90. +tests/value/fun_ptr.i:70:[value] warning: pointer to function with incompatible type. assert \valid_function(p); [value] computing for function too_much <- test_too_much_benign <- main. - Called from tests/value/fun_ptr.i:66. + Called from tests/value/fun_ptr.i:70. [value] Recording results for too_much [value] Done for function too_much -tests/value/fun_ptr.i:69:[value] warning: pointer to function with incompatible type. assert \valid_function(p); +tests/value/fun_ptr.i:73:[value] warning: pointer to function with incompatible type. assert \valid_function(p); [value] Recording results for test_too_much_benign [value] Done for function test_too_much_benign [value] Recording results for main [value] done for function main -tests/value/fun_ptr.i:34:[value] assertion 'Value,function_pointer' got final status invalid. -tests/value/fun_ptr.i:69:[value] assertion 'Value,function_pointer' got final status invalid. +tests/value/fun_ptr.i:38:[value] assertion 'Value,function_pointer' got final status invalid. +tests/value/fun_ptr.i:73:[value] assertion 'Value,function_pointer' got final status invalid. [value] ====== VALUES COMPUTED ====== [value:final-states] Values at end of function benign: q ∈ {{ &x }} @@ -110,7 +110,7 @@ tests/value/fun_ptr.i:69:[value] assertion 'Value,function_pointer' got final st [from] Computing for function test1 [from] Done for function test1 [from] Computing for function test2 -tests/value/fun_ptr.i:29:[from] warning: variadic call detected. Using only 1 argument(s). +tests/value/fun_ptr.i:33:[from] warning: variadic call detected. Using only 1 argument(s). [from] Done for function test2 [from] Computing for function test3 [from] Non-terminating function test3 (no dependencies) @@ -120,10 +120,10 @@ tests/value/fun_ptr.i:29:[from] warning: variadic call detected. Using only 1 ar [from] Computing for function too_much [from] Done for function too_much [from] Computing for function test_too_much_benign -tests/value/fun_ptr.i:66:[from] warning: variadic call detected. Using only 1 argument(s). +tests/value/fun_ptr.i:70:[from] warning: variadic call detected. Using only 1 argument(s). [from] Done for function test_too_much_benign [from] Computing for function main -tests/value/fun_ptr.i:81:[from] warning: variadic call detected. Using only 0 argument(s). +tests/value/fun_ptr.i:85:[from] warning: variadic call detected. Using only 0 argument(s). [from] Done for function main [from] ====== DEPENDENCIES COMPUTED ====== These dependencies hold at termination for the executions that terminate: diff --git a/tests/value/oracle/local.res.oracle b/tests/value/oracle/local.res.oracle index f66f9d39d6baa99cc4ca01b42d84d58cb0496695..a9c42496641556a5671c8484c82748b1e0d2e765 100644 --- a/tests/value/oracle/local.res.oracle +++ b/tests/value/oracle/local.res.oracle @@ -11,13 +11,13 @@ U ∈ {0} V ∈ {0} [value] computing for function f <- main. - Called from tests/value/local.i:26. + Called from tests/value/local.i:33. tests/value/local.i:7:[value] warning: locals {b} escaping the scope of f through \result tests/value/local.i:7:[value] warning: locals {a} escaping the scope of f through X [value] Recording results for f [value] Done for function f [value] computing for function g <- main. - Called from tests/value/local.i:27. + Called from tests/value/local.i:34. [value] computing for function f <- g <- main. Called from tests/value/local.i:13. [value] Recording results for f @@ -26,7 +26,7 @@ tests/value/local.i:15:[value] warning: locals {d} escaping the scope of g throu tests/value/local.i:15:[value] warning: locals {d} escaping the scope of g through U [value] Recording results for g [value] Done for function g -[value] DUMPING STATE of file tests/value/local.i line 28 +[value] DUMPING STATE of file tests/value/local.i line 35 X ∈ ESCAPINGADDR Y ∈ ESCAPINGADDR Z ∈ ESCAPINGADDR @@ -36,9 +36,13 @@ tests/value/local.i:15:[value] warning: locals {d} escaping the scope of g throu e ∈ UNINITIALIZED =END OF DUMP== [value] computing for function h <- main. - Called from tests/value/local.i:29. + Called from tests/value/local.i:36. [value] Recording results for h [value] Done for function h +[value] computing for function i <- main. + Called from tests/value/local.i:37. +[value] Recording results for i +[value] Done for function i [value] Recording results for main [value] done for function main [value] ====== VALUES COMPUTED ====== @@ -52,6 +56,8 @@ tests/value/local.i:15:[value] warning: locals {d} escaping the scope of g throu d ∈ [--..--] [value:final-states] Values at end of function h: __retres ∈ {{ &e + {4} }} +[value:final-states] Values at end of function i: + x ∈ {{ &local }} [value:final-states] Values at end of function main: X ∈ ESCAPINGADDR Y ∈ ESCAPINGADDR @@ -65,6 +71,8 @@ tests/value/local.i:15:[value] warning: locals {d} escaping the scope of g throu [from] Done for function g [from] Computing for function h [from] Done for function h +[from] Computing for function i +[from] Done for function i [from] Computing for function main [from] Computing for function Frama_C_dump_each <-main [from] Done for function Frama_C_dump_each @@ -81,6 +89,8 @@ tests/value/local.i:15:[value] warning: locals {d} escaping the scope of g throu \result FROM \nothing [from] Function h: \result FROM x +[from] Function i: + NO EFFECTS [from] Function main: X FROM \nothing Y FROM \nothing @@ -101,6 +111,10 @@ tests/value/local.i:15:[value] warning: locals {d} escaping the scope of g throu __retres [inout] Inputs for function h: \nothing +[inout] Out (internal) for function i: + x +[inout] Inputs for function i: + \nothing [inout] Out (internal) for function main: X; Y; Z; T; U; V [inout] Inputs for function main: diff --git a/tests/value/oracle/paths.res.oracle b/tests/value/oracle/paths.res.oracle deleted file mode 100644 index bfa3c9ab0d353b52510ae97328ddfedf935275fd..0000000000000000000000000000000000000000 --- a/tests/value/oracle/paths.res.oracle +++ /dev/null @@ -1,106 +0,0 @@ -[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/value/paths.i (no preprocessing) -[value] Analyzing a complete application starting at main -[value] Computing initial state -[value] Initial state computed -[value:initial-state] Values of globals at initialization - a ∈ {0} - b ∈ {0} - c ∈ {0} - d ∈ {0} - e ∈ {0} - i ∈ {0} - d1 ∈ {0} - d2 ∈ {0} - d3 ∈ {0} - d4 ∈ {0} - X1 ∈ {0} - X2 ∈ {0} - X3 ∈ {0} - X4 ∈ {0} - X5 ∈ {0} - X ∈ {0} - t[0] ∈ {{ &f1 }} - [1] ∈ {{ &f2 }} - [2] ∈ {{ &f3 }} -[value] computing for function unknownfun <- main. - Called from tests/value/paths.i:38. -[value] using specification for function unknownfun -[value] Done for function unknownfun -tests/value/paths.i:41:[value] warning: signed overflow. assert r+1 ≤ 2147483647; -tests/value/paths.i:44:[value] warning: accessing out of bounds index. assert 0 ≤ w; -tests/value/paths.i:44:[value] warning: accessing out of bounds index. assert w < 3; -[value] computing for function f3 <- main. - Called from tests/value/paths.i:44. -[value] Recording results for f3 -[value] Done for function f3 -[value] computing for function f2 <- main. - Called from tests/value/paths.i:44. -[value] Recording results for f2 -[value] Done for function f2 -[value] computing for function f1 <- main. - Called from tests/value/paths.i:44. -[value] Recording results for f1 -[value] Done for function f1 -[value] computing for function f <- main. - Called from tests/value/paths.i:48. -[value] Recording results for f -[value] Done for function f -[value] Recording results for main -[value] done for function main -[from] Computing for function f -[from] Now calling From callbacks -Computing path dependencies for function f -Path dependencies of f: fy -[from] Done for function f -[from] Computing for function f1 -[from] Now calling From callbacks -Computing path dependencies for function f1 -Path dependencies of f1: d1 -[from] Done for function f1 -[from] Computing for function f2 -[from] Now calling From callbacks -Computing path dependencies for function f2 -Path dependencies of f2: \nothing -[from] Done for function f2 -[from] Computing for function f3 -[from] Now calling From callbacks -Computing path dependencies for function f3 -Path dependencies of f3: \nothing -[from] Done for function f3 -[from] Computing for function main -[from] Computing for function unknownfun <-main -[from] Done for function unknownfun -[from] Now calling From callbacks -Computing path dependencies for function main -Assuming library function unknownfun has no path dependencies -Path dependencies of main: b; X1; X2; X3; X4; t[0..2]; s; u; v; w; x; -y; z; -ww -[from] Done for function main -[from] ====== DEPENDENCIES COMPUTED ====== - These dependencies hold at termination for the executions that terminate: -[from] Function f: - i FROM i; fy (and SELF) - d2 FROM fx - \result FROM d3 -[from] Function f1: - X FROM d1; X1; X4 -[from] Function f2: - X FROM X2 -[from] Function f3: - X FROM X3 -[from] Function unknownfun: - \result FROM x -[from] Function main: - a FROM b; v (and SELF) - c FROM a; b; u - d FROM b; v - i FROM i; s; y; z; ww (and SELF) - d1 FROM x - d2 FROM y - d3 FROM z - d4 FROM ww - X FROM X1; X2; X3; X4; t[0..2]; w; x - \result FROM \nothing -[from] ====== END OF DEPENDENCIES ====== diff --git a/tests/value/oracle/struct3.res.oracle b/tests/value/oracle/struct3.res.oracle index 2fc6b4def4fb7fa45f79555bd0fc00cf30c77738..67c893770a50dfadfd6a2381bfb5a82458cc744d 100644 --- a/tests/value/oracle/struct3.res.oracle +++ b/tests/value/oracle/struct3.res.oracle @@ -13,17 +13,18 @@ tab_s4[0..1] ∈ {0} s1 ∈ {0} s2 ∈ {0} - s4 ∈ {0} - s5 ∈ {0} - s6 ∈ {0} s8 ∈ {0} s7 ∈ {0} v ∈ [--..--] -tests/value/struct3.i:38:[value] warning: accessing out of bounds index. assert 10 < 10; -tests/value/struct3.i:38:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +tests/value/struct3.i:42:[value] warning: accessing out of bounds index. assert 10 < 10; +tests/value/struct3.i:42:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +tests/value/struct3.i:46:[value] Assigning imprecise value to s2.a. + The imprecision originates from Arithmetic {tests/value/struct3.i:46} [value] Recording results for main [value] done for function main -tests/value/struct3.i:38:[value] assertion 'Value,index_bound' got final status invalid. +[value] warning: Garbled mix generated during analysis: + {{ garbled mix of &{s1} (origin: Arithmetic {tests/value/struct3.i:46}) }} +tests/value/struct3.i:42:[value] assertion 'Value,index_bound' got final status invalid. [value] ====== VALUES COMPUTED ====== [value:final-states] Values at end of function main: s1.a ∈ {2} @@ -34,14 +35,25 @@ tests/value/struct3.i:38:[value] assertion 'Value,index_bound' got final status .b.a ∈ {3} {.b.b; .e[0..9]} ∈ {0} .c ∈ {{ &s1 }} + s2.a ∈ + {{ garbled mix of &{s1} + (origin: Arithmetic {tests/value/struct3.i:46}) }} + .d[0] ∈ {1} + .d[1..2] ∈ {2} + .d[3..7] ∈ {0} + .d[8..9] ∈ {2} + .b.a ∈ {3} + {.b.b; .e[0..9]} ∈ {0} + .c ∈ {{ &s1 }} [from] Computing for function main [from] Done for function main [from] ====== DEPENDENCIES COMPUTED ====== These dependencies hold at termination for the executions that terminate: [from] Function main: s1{{.a; .d[0..2]}; {.d[8..9]; .b.a}; .c} FROM \nothing + s2 FROM s1{.d[3..7]; {.b.b; .e[0..9]}} [from] ====== END OF DEPENDENCIES ====== [inout] Out (internal) for function main: - s1{{.a; .d[0..2]}; {.d[8..9]; .b.a}; .c} + s1{{.a; .d[0..2]}; {.d[8..9]; .b.a}; .c}; s2 [inout] Inputs for function main: - v + s1; s2.c; v diff --git a/tests/value/oracle/symbolic_locs.err.oracle b/tests/value/oracle/symbolic_locs.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle/symbolic_locs.res.oracle b/tests/value/oracle/symbolic_locs.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..3cc3e4520978ba0731d19692cbeacf90244f8be3 --- /dev/null +++ b/tests/value/oracle/symbolic_locs.res.oracle @@ -0,0 +1,178 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/symbolic_locs.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + v ∈ [--..--] + t[0..9] ∈ {0} + u[0..9] ∈ [--..--] +[value] computing for function main2_kill_direct <- main. + Called from tests/value/symbolic_locs.i:72. +tests/value/symbolic_locs.i:29:[value] warning: assertion got status unknown. +[value] DUMPING STATE of file tests/value/symbolic_locs.i line 32 + v ∈ [--..--] + t[0..8] ∈ {0; 4} + [9] ∈ {0} + u[0..9] ∈ [--..--] + i ∈ [0..8] + =END OF DUMP== +[value] DUMPING STATE of file tests/value/symbolic_locs.i line 34 + v ∈ [--..--] + t[0..1] ∈ {0; 4} + [2] ∈ {1} + [3..8] ∈ {0; 4} + [9] ∈ {0} + u[0..9] ∈ [--..--] + i ∈ [0..8] + =END OF DUMP== +[value] Recording results for main2_kill_direct +[value] Done for function main2_kill_direct +[value] computing for function main3_kill_indirect <- main. + Called from tests/value/symbolic_locs.i:73. +tests/value/symbolic_locs.i:41:[value] warning: assertion got status unknown. +[value] DUMPING STATE of file tests/value/symbolic_locs.i line 44 + v ∈ [--..--] + t[0..1] ∈ {0; 4} + [2] ∈ {0; 1; 4} + [3..8] ∈ {0; 4} + [9] ∈ {0} + u[0..9] ∈ [--..--] + i ∈ [0..8] + =END OF DUMP== +[value] DUMPING STATE of file tests/value/symbolic_locs.i line 46 + v ∈ [--..--] + t[0..1] ∈ {0; 4} + [2] ∈ {0; 1; 4} + [3..8] ∈ {0; 4} + [9] ∈ {0} + u[0..9] ∈ [--..--] + i ∈ {8} + =END OF DUMP== +[value] Recording results for main3_kill_indirect +[value] Done for function main3_kill_indirect +[value] computing for function main4_scope_right <- main. + Called from tests/value/symbolic_locs.i:74. +tests/value/symbolic_locs.i:51:[value] warning: assertion got status unknown. +[value] DUMPING STATE of file tests/value/symbolic_locs.i line 55 + v ∈ [--..--] + t[0..1] ∈ {{ NULL + {0; 4} ; (int)&x }} + [2] ∈ {{ NULL + {0; 1; 4} ; (int)&x }} + [3..8] ∈ {{ NULL + {0; 4} ; (int)&x }} + [9] ∈ {0} + u[0..9] ∈ [--..--] + i ∈ [0..8] + x ∈ UNINITIALIZED + =END OF DUMP== +tests/value/symbolic_locs.i:55:[value] warning: locals {x} escaping the scope of a block of main4_scope_right through t +[value] DUMPING STATE of file tests/value/symbolic_locs.i line 57 + v ∈ [--..--] + t[0..1] ∈ {0; 4} or ESCAPINGADDR + [2] ∈ {0; 1; 4} or ESCAPINGADDR + [3..8] ∈ {0; 4} or ESCAPINGADDR + [9] ∈ {0} + u[0..9] ∈ [--..--] + i ∈ [0..8] + =END OF DUMP== +[value] Recording results for main4_scope_right +[value] Done for function main4_scope_right +[value] computing for function main5_scope_lv <- main. + Called from tests/value/symbolic_locs.i:75. +tests/value/symbolic_locs.i:63:[value] warning: assertion got status unknown. +[value] DUMPING STATE of file tests/value/symbolic_locs.i line 65 + v ∈ [--..--] + t[0..8] ∈ {0; 1; 4} or ESCAPINGADDR + [9] ∈ {0} + u[0..9] ∈ [--..--] + z ∈ {1} + i ∈ [0..8] + =END OF DUMP== +[value] DUMPING STATE of file tests/value/symbolic_locs.i line 67 + v ∈ [--..--] + t[0..8] ∈ {0; 1; 4} or ESCAPINGADDR + [9] ∈ {0} + u[0..9] ∈ [--..--] + z ∈ {1} + =END OF DUMP== +[value] Recording results for main5_scope_lv +[value] Done for function main5_scope_lv +[value] DUMPING STATE of file tests/value/symbolic_locs.i line 76 + v ∈ [--..--] + t[0..8] ∈ {0; 1; 4} or ESCAPINGADDR + [9] ∈ {0} + u[0..9] ∈ [--..--] + =END OF DUMP== +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main2_kill_direct: + t[0..1] ∈ {0; 4} + [2] ∈ {1} + [3..8] ∈ {0; 4} + [9] ∈ {0} + i ∈ [0..8] +[value:final-states] Values at end of function main3_kill_indirect: + t[0..1] ∈ {0; 4} + [2] ∈ {0; 1; 4} + [3..8] ∈ {0; 4} + [9] ∈ {0} + i ∈ {8} +[value:final-states] Values at end of function main4_scope_right: + t[0..1] ∈ {0; 4} or ESCAPINGADDR + [2] ∈ {0; 1; 4} or ESCAPINGADDR + [3..8] ∈ {0; 4} or ESCAPINGADDR + [9] ∈ {0} + i ∈ [0..8] +[value:final-states] Values at end of function main5_scope_lv: + t[0..8] ∈ {0; 1; 4} or ESCAPINGADDR + [9] ∈ {0} + z ∈ {1} +[value:final-states] Values at end of function main: + t[0..8] ∈ {0; 1; 4} or ESCAPINGADDR + [9] ∈ {0} +[from] Computing for function main2_kill_direct +[from] Computing for function Frama_C_dump_each <-main2_kill_direct +[from] Done for function Frama_C_dump_each +[from] Done for function main2_kill_direct +[from] Computing for function main3_kill_indirect +[from] Done for function main3_kill_indirect +[from] Computing for function main4_scope_right +[from] Done for function main4_scope_right +[from] Computing for function main5_scope_lv +[from] Done for function main5_scope_lv +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main2_kill_direct: + t{[0..1]; [3..8]} FROM v (and SELF) + [2] FROM \nothing +[from] Function main3_kill_indirect: + t[0..8] FROM v (and SELF) +[from] Function main4_scope_right: + t[0..8] FROM v (and SELF) +[from] Function main5_scope_lv: + t[0..8] FROM v (and SELF) +[from] Function main: + t[0..8] FROM v (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main2_kill_direct: + t[0..8]; i +[inout] Inputs for function main2_kill_direct: + v +[inout] Out (internal) for function main3_kill_indirect: + t[0..8]; i +[inout] Inputs for function main3_kill_indirect: + v +[inout] Out (internal) for function main4_scope_right: + t[0..8]; i +[inout] Inputs for function main4_scope_right: + v +[inout] Out (internal) for function main5_scope_lv: + t[0..8]; z; i +[inout] Inputs for function main5_scope_lv: + v +[inout] Out (internal) for function main: + t[0..8] +[inout] Inputs for function main: + v diff --git a/tests/value/oracle_apron/abstract_struct_1.res.oracle b/tests/value/oracle_apron/abstract_struct_1.res.oracle index 8f29a3b92ceeb30430f81cdfa738790d43f00b40..da98bb1e90e8be7e5cbdd5c868b851e355ea0f42 100644 --- a/tests/value/oracle_apron/abstract_struct_1.res.oracle +++ b/tests/value/oracle_apron/abstract_struct_1.res.oracle @@ -22,7 +22,7 @@ tests/value/abstract_struct_1.c:10:[value] warning: during initialization of var Called from tests/value/abstract_struct_1.c:13. tests/value/abstract_struct_1.c:13:[kernel] warning: No code nor implicit assigns clause for function calloc, generating default assigns from the prototype [value] using specification for function calloc -share/libc/stdlib.h:146:[value] function calloc: precondition got status valid. +share/libc/stdlib.h:159:[value] function calloc: precondition got status valid. [value] Done for function calloc [value] Recording results for main [value] done for function main diff --git a/tests/value/oracle_apron/empty_struct2.res.oracle b/tests/value/oracle_apron/empty_struct2.res.oracle index e78a67ac6c367f6087764a48c0065a6e45a34b60..94d86df34e886618549af642f26df72b13d9e765 100644 --- a/tests/value/oracle_apron/empty_struct2.res.oracle +++ b/tests/value/oracle_apron/empty_struct2.res.oracle @@ -6,8 +6,8 @@ [value:initial-state] Values of globals at initialization nondet ∈ [--..--] tests/value/empty_struct2.c:40:[value] assertion got status valid. -[value] Called Frama_C_show_each_global_empty({{ }}) -[value] Called Frama_C_show_each_e1({{ }}) +[value] Called Frama_C_show_each_global_empty(∅) +[value] Called Frama_C_show_each_e1(∅) [value] computing for function memcpy <- main. Called from tests/value/empty_struct2.c:44. [value] using specification for function memcpy @@ -21,7 +21,7 @@ tests/value/empty_struct2.c:44:[value] cannot evaluate ACSL term, unsupported AC tests/value/empty_struct2.c:49:[value] cannot evaluate ACSL term, unsupported ACSL construct: logic functions or predicates [value] Done for function memcpy [value] Called Frama_C_show_each_c2([--..--]) -[value] Called Frama_C_show_each_c2_e({{ }}) +[value] Called Frama_C_show_each_c2_e(∅) [value] computing for function f <- main. Called from tests/value/empty_struct2.c:52. tests/value/empty_struct2.c:27:[value] warning: accessing uninitialized left-value. assert \initialized(&s.b); diff --git a/tests/value/oracle_apron/empty_union.res.oracle b/tests/value/oracle_apron/empty_union.res.oracle index 1a6bbfe07f3fc493390229b39aabbb0d1d72b078..051dc2721080fffd9ddbfb8c397e48089c2c64e1 100644 --- a/tests/value/oracle_apron/empty_union.res.oracle +++ b/tests/value/oracle_apron/empty_union.res.oracle @@ -14,8 +14,8 @@ tests/value/empty_union.c:59:[kernel] imprecise size for variable f1 (Size of ar .data[1..2] ∈ {0} tests/value/empty_union.c:75:[value] assertion got status valid. tests/value/empty_union.c:76:[value] assertion got status valid. -[value] Called Frama_C_show_each_global_empty({{ }}) -[value] Called Frama_C_show_each_e1({{ }}) +[value] Called Frama_C_show_each_global_empty(∅) +[value] Called Frama_C_show_each_e1(∅) [value] computing for function memcpy <- main. Called from tests/value/empty_union.c:80. [value] using specification for function memcpy @@ -29,7 +29,7 @@ tests/value/empty_union.c:80:[value] cannot evaluate ACSL term, unsupported ACSL tests/value/empty_union.c:85:[value] cannot evaluate ACSL term, unsupported ACSL construct: logic functions or predicates [value] Done for function memcpy [value] Called Frama_C_show_each_c2([--..--]) -[value] Called Frama_C_show_each_c2_e({{ }}) +[value] Called Frama_C_show_each_c2_e(∅) [value] computing for function f <- main. Called from tests/value/empty_union.c:88. [value] Recording results for f diff --git a/tests/value/oracle_apron/fun_ptr.0.err.oracle b/tests/value/oracle_apron/fun_ptr.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_apron/fun_ptr.0.res.oracle b/tests/value/oracle_apron/fun_ptr.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..a64d4f525b9c22108ab612421154c362b049a830 --- /dev/null +++ b/tests/value/oracle_apron/fun_ptr.0.res.oracle @@ -0,0 +1,198 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/fun_ptr.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + t[0] ∈ {{ (long long)&f }} + [1] ∈ {{ (long long)&g }} + R1 ∈ {0} + R2 ∈ {0} + R3 ∈ {0} + v ∈ [--..--] +[value] computing for function test1 <- main. + Called from tests/value/fun_ptr.i:78. +tests/value/fun_ptr.i:28:[value] warning: pointer to function with incompatible type. + assert \valid_function((int (*)(int ))t[nd]); +[value] computing for function f <- test1 <- main. + Called from tests/value/fun_ptr.i:28. +[value] Recording results for f +[value] Done for function f +[value] Recording results for test1 +[value] Done for function test1 +[value] computing for function test2 <- main. + Called from tests/value/fun_ptr.i:79. +tests/value/fun_ptr.i:33:[value] warning: pointer to function with incompatible type. + assert \valid_function((int (*)(int , int ))t[nd]); +[value] computing for function g <- test2 <- main. + Called from tests/value/fun_ptr.i:33. +[value] Recording results for g +[value] Done for function g +[value] computing for function f <- test2 <- main. + Called from tests/value/fun_ptr.i:33. +[value] Recording results for f +[value] Done for function f +[value] Recording results for test2 +[value] Done for function test2 +[value] computing for function test3 <- main. + Called from tests/value/fun_ptr.i:80. +tests/value/fun_ptr.i:38:[value] warning: pointer to function with incompatible type. + assert \valid_function((double (*)(int ))t[nd]); +[value] Recording results for test3 +[value] Done for function test3 +tests/value/fun_ptr.i:83:[value] warning: Function type must match type at call site: assert(function type matches) +tests/value/fun_ptr.i:85:[value] warning: Function type must match type at call site: assert(function type matches) +[value] computing for function h <- main. + Called from tests/value/fun_ptr.i:87. +[value] Recording results for h +[value] Done for function h +[value] computing for function test_benign <- main. + Called from tests/value/fun_ptr.i:89. +tests/value/fun_ptr.i:56:[value] warning: pointer to function with incompatible type. assert \valid_function(p); +[value] computing for function benign <- test_benign <- main. + Called from tests/value/fun_ptr.i:56. +[value] Recording results for benign +[value] Done for function benign +[value] Recording results for test_benign +[value] Done for function test_benign +[value] computing for function test_too_much_benign <- main. + Called from tests/value/fun_ptr.i:90. +tests/value/fun_ptr.i:70:[value] warning: pointer to function with incompatible type. assert \valid_function(p); +[value] computing for function too_much <- test_too_much_benign <- main. + Called from tests/value/fun_ptr.i:70. +[value] Recording results for too_much +[value] Done for function too_much +tests/value/fun_ptr.i:73:[value] warning: pointer to function with incompatible type. assert \valid_function(p); +[value] Recording results for test_too_much_benign +[value] Done for function test_too_much_benign +[value] Recording results for main +[value] done for function main +tests/value/fun_ptr.i:38:[value] assertion 'Value,function_pointer' got final status invalid. +tests/value/fun_ptr.i:73:[value] assertion 'Value,function_pointer' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function benign: + q ∈ {{ &x }} + k ∈ {-2147483648} + x ∈ {-2147483648} +[value:final-states] Values at end of function f: + __retres ∈ {4} +[value:final-states] Values at end of function g: + __retres ∈ {7} +[value:final-states] Values at end of function h: + __retres ∈ {3.} +[value:final-states] Values at end of function test1: + R1 ∈ {4} +[value:final-states] Values at end of function test2: + R2 ∈ {4; 7} +[value:final-states] Values at end of function test3: + NON TERMINATING FUNCTION +[value:final-states] Values at end of function test_benign: + x ∈ {-2147483648} + p ∈ {{ (void (*)(long , short *))&benign }} +[value:final-states] Values at end of function too_much: + j ∈ {1} +[value:final-states] Values at end of function test_too_much_benign: + p ∈ {{ (void (*)(int , int ))&too_much }} +[value:final-states] Values at end of function main: + R1 ∈ {4} + R2 ∈ {4; 7} + R3 ∈ {0} + ph ∈ {{ &h }} + __retres ∈ {0} +[from] Computing for function benign +[from] Done for function benign +[from] Computing for function f +[from] Done for function f +[from] Computing for function g +[from] Done for function g +[from] Computing for function h +[from] Done for function h +[from] Computing for function test1 +[from] Done for function test1 +[from] Computing for function test2 +tests/value/fun_ptr.i:33:[from] warning: variadic call detected. Using only 1 argument(s). +[from] Done for function test2 +[from] Computing for function test3 +[from] Non-terminating function test3 (no dependencies) +[from] Done for function test3 +[from] Computing for function test_benign +[from] Done for function test_benign +[from] Computing for function too_much +[from] Done for function too_much +[from] Computing for function test_too_much_benign +tests/value/fun_ptr.i:70:[from] warning: variadic call detected. Using only 1 argument(s). +[from] Done for function test_too_much_benign +[from] Computing for function main +tests/value/fun_ptr.i:85:[from] warning: variadic call detected. Using only 0 argument(s). +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function benign: + x FROM j; p +[from] Function f: + \result FROM x +[from] Function g: + \result FROM x; y +[from] Function h: + \result FROM a; b +[from] Function test1: + R1 FROM t[0..1]; nd +[from] Function test2: + R2 FROM t[0..1]; nd +[from] Function test3: + NON TERMINATING - NO EFFECTS +[from] Function test_benign: + NO EFFECTS +[from] Function too_much: + NO EFFECTS +[from] Function test_too_much_benign: + NO EFFECTS +[from] Function main: + R1 FROM t[0..1]; v + R2 FROM t[0..1]; v + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function benign: + q; k; x +[inout] Inputs for function benign: + \nothing +[inout] Out (internal) for function f: + __retres +[inout] Inputs for function f: + \nothing +[inout] Out (internal) for function g: + __retres +[inout] Inputs for function g: + \nothing +[inout] Out (internal) for function h: + __retres +[inout] Inputs for function h: + \nothing +[inout] Out (internal) for function test1: + R1 +[inout] Inputs for function test1: + t[0..1] +[inout] Out (internal) for function test2: + R2 +[inout] Inputs for function test2: + t[0..1] +[inout] Out (internal) for function test3: + R3 +[inout] Inputs for function test3: + t[0..1] +[inout] Out (internal) for function test_benign: + x; p +[inout] Inputs for function test_benign: + \nothing +[inout] Out (internal) for function too_much: + j +[inout] Inputs for function too_much: + \nothing +[inout] Out (internal) for function test_too_much_benign: + p +[inout] Inputs for function test_too_much_benign: + v +[inout] Out (internal) for function main: + R1; R2; R3; ph; __retres +[inout] Inputs for function main: + t[0..1]; v diff --git a/tests/value/oracle_apron/fun_ptr.1.err.oracle b/tests/value/oracle_apron/fun_ptr.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_apron/fun_ptr.res.oracle b/tests/value/oracle_apron/fun_ptr.1.res.oracle similarity index 81% rename from tests/value/oracle_apron/fun_ptr.res.oracle rename to tests/value/oracle_apron/fun_ptr.1.res.oracle index 974a74650421c83102ed00d6f4879ce7531e9854..b818469156c0c5a5b43543e234c1b6b9a40d3375 100644 --- a/tests/value/oracle_apron/fun_ptr.res.oracle +++ b/tests/value/oracle_apron/fun_ptr.1.res.oracle @@ -4,71 +4,71 @@ [value] Computing initial state [value] Initial state computed [value:initial-state] Values of globals at initialization - t[0] ∈ {{ (long)&f }} - [1] ∈ {{ (long)&g }} + t[0] ∈ {{ (__int64)&f }} + [1] ∈ {{ (__int64)&g }} R1 ∈ {0} R2 ∈ {0} R3 ∈ {0} v ∈ [--..--] [value] computing for function test1 <- main. - Called from tests/value/fun_ptr.i:74. -tests/value/fun_ptr.i:24:[value] warning: pointer to function with incompatible type. + Called from tests/value/fun_ptr.i:78. +tests/value/fun_ptr.i:28:[value] warning: pointer to function with incompatible type. assert \valid_function((int (*)(int ))t[nd]); [value] computing for function f <- test1 <- main. - Called from tests/value/fun_ptr.i:24. + Called from tests/value/fun_ptr.i:28. [value] Recording results for f [value] Done for function f [value] Recording results for test1 [value] Done for function test1 [value] computing for function test2 <- main. - Called from tests/value/fun_ptr.i:75. -tests/value/fun_ptr.i:29:[value] warning: pointer to function with incompatible type. + Called from tests/value/fun_ptr.i:79. +tests/value/fun_ptr.i:33:[value] warning: pointer to function with incompatible type. assert \valid_function((int (*)(int , int ))t[nd]); [value] computing for function g <- test2 <- main. - Called from tests/value/fun_ptr.i:29. + Called from tests/value/fun_ptr.i:33. [value] Recording results for g [value] Done for function g [value] computing for function f <- test2 <- main. - Called from tests/value/fun_ptr.i:29. + Called from tests/value/fun_ptr.i:33. [value] Recording results for f [value] Done for function f [value] Recording results for test2 [value] Done for function test2 [value] computing for function test3 <- main. - Called from tests/value/fun_ptr.i:76. -tests/value/fun_ptr.i:34:[value] warning: pointer to function with incompatible type. + Called from tests/value/fun_ptr.i:80. +tests/value/fun_ptr.i:38:[value] warning: pointer to function with incompatible type. assert \valid_function((double (*)(int ))t[nd]); [value] Recording results for test3 [value] Done for function test3 -tests/value/fun_ptr.i:79:[value] warning: Function type must match type at call site: assert(function type matches) -tests/value/fun_ptr.i:81:[value] warning: Function type must match type at call site: assert(function type matches) +tests/value/fun_ptr.i:83:[value] warning: Function type must match type at call site: assert(function type matches) +tests/value/fun_ptr.i:85:[value] warning: Function type must match type at call site: assert(function type matches) [value] computing for function h <- main. - Called from tests/value/fun_ptr.i:83. + Called from tests/value/fun_ptr.i:87. [value] Recording results for h [value] Done for function h [value] computing for function test_benign <- main. - Called from tests/value/fun_ptr.i:85. -tests/value/fun_ptr.i:52:[value] warning: pointer to function with incompatible type. assert \valid_function(p); + Called from tests/value/fun_ptr.i:89. +tests/value/fun_ptr.i:56:[value] warning: pointer to function with incompatible type. assert \valid_function(p); [value] computing for function benign <- test_benign <- main. - Called from tests/value/fun_ptr.i:52. + Called from tests/value/fun_ptr.i:56. [value] Recording results for benign [value] Done for function benign [value] Recording results for test_benign [value] Done for function test_benign [value] computing for function test_too_much_benign <- main. - Called from tests/value/fun_ptr.i:86. -tests/value/fun_ptr.i:66:[value] warning: pointer to function with incompatible type. assert \valid_function(p); + Called from tests/value/fun_ptr.i:90. +tests/value/fun_ptr.i:70:[value] warning: pointer to function with incompatible type. assert \valid_function(p); [value] computing for function too_much <- test_too_much_benign <- main. - Called from tests/value/fun_ptr.i:66. + Called from tests/value/fun_ptr.i:70. [value] Recording results for too_much [value] Done for function too_much -tests/value/fun_ptr.i:69:[value] warning: pointer to function with incompatible type. assert \valid_function(p); +tests/value/fun_ptr.i:73:[value] warning: pointer to function with incompatible type. assert \valid_function(p); [value] Recording results for test_too_much_benign [value] Done for function test_too_much_benign [value] Recording results for main [value] done for function main -tests/value/fun_ptr.i:34:[value] assertion 'Value,function_pointer' got final status invalid. -tests/value/fun_ptr.i:69:[value] assertion 'Value,function_pointer' got final status invalid. +tests/value/fun_ptr.i:38:[value] assertion 'Value,function_pointer' got final status invalid. +tests/value/fun_ptr.i:73:[value] assertion 'Value,function_pointer' got final status invalid. [value] ====== VALUES COMPUTED ====== [value:final-states] Values at end of function benign: q ∈ {{ &x }} @@ -110,7 +110,7 @@ tests/value/fun_ptr.i:69:[value] assertion 'Value,function_pointer' got final st [from] Computing for function test1 [from] Done for function test1 [from] Computing for function test2 -tests/value/fun_ptr.i:29:[from] warning: variadic call detected. Using only 1 argument(s). +tests/value/fun_ptr.i:33:[from] warning: variadic call detected. Using only 1 argument(s). [from] Done for function test2 [from] Computing for function test3 [from] Non-terminating function test3 (no dependencies) @@ -120,10 +120,10 @@ tests/value/fun_ptr.i:29:[from] warning: variadic call detected. Using only 1 ar [from] Computing for function too_much [from] Done for function too_much [from] Computing for function test_too_much_benign -tests/value/fun_ptr.i:66:[from] warning: variadic call detected. Using only 1 argument(s). +tests/value/fun_ptr.i:70:[from] warning: variadic call detected. Using only 1 argument(s). [from] Done for function test_too_much_benign [from] Computing for function main -tests/value/fun_ptr.i:81:[from] warning: variadic call detected. Using only 0 argument(s). +tests/value/fun_ptr.i:85:[from] warning: variadic call detected. Using only 0 argument(s). [from] Done for function main [from] ====== DEPENDENCIES COMPUTED ====== These dependencies hold at termination for the executions that terminate: diff --git a/tests/value/oracle_apron/local.res.oracle b/tests/value/oracle_apron/local.res.oracle index f66f9d39d6baa99cc4ca01b42d84d58cb0496695..a9c42496641556a5671c8484c82748b1e0d2e765 100644 --- a/tests/value/oracle_apron/local.res.oracle +++ b/tests/value/oracle_apron/local.res.oracle @@ -11,13 +11,13 @@ U ∈ {0} V ∈ {0} [value] computing for function f <- main. - Called from tests/value/local.i:26. + Called from tests/value/local.i:33. tests/value/local.i:7:[value] warning: locals {b} escaping the scope of f through \result tests/value/local.i:7:[value] warning: locals {a} escaping the scope of f through X [value] Recording results for f [value] Done for function f [value] computing for function g <- main. - Called from tests/value/local.i:27. + Called from tests/value/local.i:34. [value] computing for function f <- g <- main. Called from tests/value/local.i:13. [value] Recording results for f @@ -26,7 +26,7 @@ tests/value/local.i:15:[value] warning: locals {d} escaping the scope of g throu tests/value/local.i:15:[value] warning: locals {d} escaping the scope of g through U [value] Recording results for g [value] Done for function g -[value] DUMPING STATE of file tests/value/local.i line 28 +[value] DUMPING STATE of file tests/value/local.i line 35 X ∈ ESCAPINGADDR Y ∈ ESCAPINGADDR Z ∈ ESCAPINGADDR @@ -36,9 +36,13 @@ tests/value/local.i:15:[value] warning: locals {d} escaping the scope of g throu e ∈ UNINITIALIZED =END OF DUMP== [value] computing for function h <- main. - Called from tests/value/local.i:29. + Called from tests/value/local.i:36. [value] Recording results for h [value] Done for function h +[value] computing for function i <- main. + Called from tests/value/local.i:37. +[value] Recording results for i +[value] Done for function i [value] Recording results for main [value] done for function main [value] ====== VALUES COMPUTED ====== @@ -52,6 +56,8 @@ tests/value/local.i:15:[value] warning: locals {d} escaping the scope of g throu d ∈ [--..--] [value:final-states] Values at end of function h: __retres ∈ {{ &e + {4} }} +[value:final-states] Values at end of function i: + x ∈ {{ &local }} [value:final-states] Values at end of function main: X ∈ ESCAPINGADDR Y ∈ ESCAPINGADDR @@ -65,6 +71,8 @@ tests/value/local.i:15:[value] warning: locals {d} escaping the scope of g throu [from] Done for function g [from] Computing for function h [from] Done for function h +[from] Computing for function i +[from] Done for function i [from] Computing for function main [from] Computing for function Frama_C_dump_each <-main [from] Done for function Frama_C_dump_each @@ -81,6 +89,8 @@ tests/value/local.i:15:[value] warning: locals {d} escaping the scope of g throu \result FROM \nothing [from] Function h: \result FROM x +[from] Function i: + NO EFFECTS [from] Function main: X FROM \nothing Y FROM \nothing @@ -101,6 +111,10 @@ tests/value/local.i:15:[value] warning: locals {d} escaping the scope of g throu __retres [inout] Inputs for function h: \nothing +[inout] Out (internal) for function i: + x +[inout] Inputs for function i: + \nothing [inout] Out (internal) for function main: X; Y; Z; T; U; V [inout] Inputs for function main: diff --git a/tests/value/oracle_apron/paths.res.oracle b/tests/value/oracle_apron/paths.res.oracle deleted file mode 100644 index bfa3c9ab0d353b52510ae97328ddfedf935275fd..0000000000000000000000000000000000000000 --- a/tests/value/oracle_apron/paths.res.oracle +++ /dev/null @@ -1,106 +0,0 @@ -[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/value/paths.i (no preprocessing) -[value] Analyzing a complete application starting at main -[value] Computing initial state -[value] Initial state computed -[value:initial-state] Values of globals at initialization - a ∈ {0} - b ∈ {0} - c ∈ {0} - d ∈ {0} - e ∈ {0} - i ∈ {0} - d1 ∈ {0} - d2 ∈ {0} - d3 ∈ {0} - d4 ∈ {0} - X1 ∈ {0} - X2 ∈ {0} - X3 ∈ {0} - X4 ∈ {0} - X5 ∈ {0} - X ∈ {0} - t[0] ∈ {{ &f1 }} - [1] ∈ {{ &f2 }} - [2] ∈ {{ &f3 }} -[value] computing for function unknownfun <- main. - Called from tests/value/paths.i:38. -[value] using specification for function unknownfun -[value] Done for function unknownfun -tests/value/paths.i:41:[value] warning: signed overflow. assert r+1 ≤ 2147483647; -tests/value/paths.i:44:[value] warning: accessing out of bounds index. assert 0 ≤ w; -tests/value/paths.i:44:[value] warning: accessing out of bounds index. assert w < 3; -[value] computing for function f3 <- main. - Called from tests/value/paths.i:44. -[value] Recording results for f3 -[value] Done for function f3 -[value] computing for function f2 <- main. - Called from tests/value/paths.i:44. -[value] Recording results for f2 -[value] Done for function f2 -[value] computing for function f1 <- main. - Called from tests/value/paths.i:44. -[value] Recording results for f1 -[value] Done for function f1 -[value] computing for function f <- main. - Called from tests/value/paths.i:48. -[value] Recording results for f -[value] Done for function f -[value] Recording results for main -[value] done for function main -[from] Computing for function f -[from] Now calling From callbacks -Computing path dependencies for function f -Path dependencies of f: fy -[from] Done for function f -[from] Computing for function f1 -[from] Now calling From callbacks -Computing path dependencies for function f1 -Path dependencies of f1: d1 -[from] Done for function f1 -[from] Computing for function f2 -[from] Now calling From callbacks -Computing path dependencies for function f2 -Path dependencies of f2: \nothing -[from] Done for function f2 -[from] Computing for function f3 -[from] Now calling From callbacks -Computing path dependencies for function f3 -Path dependencies of f3: \nothing -[from] Done for function f3 -[from] Computing for function main -[from] Computing for function unknownfun <-main -[from] Done for function unknownfun -[from] Now calling From callbacks -Computing path dependencies for function main -Assuming library function unknownfun has no path dependencies -Path dependencies of main: b; X1; X2; X3; X4; t[0..2]; s; u; v; w; x; -y; z; -ww -[from] Done for function main -[from] ====== DEPENDENCIES COMPUTED ====== - These dependencies hold at termination for the executions that terminate: -[from] Function f: - i FROM i; fy (and SELF) - d2 FROM fx - \result FROM d3 -[from] Function f1: - X FROM d1; X1; X4 -[from] Function f2: - X FROM X2 -[from] Function f3: - X FROM X3 -[from] Function unknownfun: - \result FROM x -[from] Function main: - a FROM b; v (and SELF) - c FROM a; b; u - d FROM b; v - i FROM i; s; y; z; ww (and SELF) - d1 FROM x - d2 FROM y - d3 FROM z - d4 FROM ww - X FROM X1; X2; X3; X4; t[0..2]; w; x - \result FROM \nothing -[from] ====== END OF DEPENDENCIES ====== diff --git a/tests/value/oracle_apron/struct3.res.oracle b/tests/value/oracle_apron/struct3.res.oracle index 2fc6b4def4fb7fa45f79555bd0fc00cf30c77738..67c893770a50dfadfd6a2381bfb5a82458cc744d 100644 --- a/tests/value/oracle_apron/struct3.res.oracle +++ b/tests/value/oracle_apron/struct3.res.oracle @@ -13,17 +13,18 @@ tab_s4[0..1] ∈ {0} s1 ∈ {0} s2 ∈ {0} - s4 ∈ {0} - s5 ∈ {0} - s6 ∈ {0} s8 ∈ {0} s7 ∈ {0} v ∈ [--..--] -tests/value/struct3.i:38:[value] warning: accessing out of bounds index. assert 10 < 10; -tests/value/struct3.i:38:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +tests/value/struct3.i:42:[value] warning: accessing out of bounds index. assert 10 < 10; +tests/value/struct3.i:42:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +tests/value/struct3.i:46:[value] Assigning imprecise value to s2.a. + The imprecision originates from Arithmetic {tests/value/struct3.i:46} [value] Recording results for main [value] done for function main -tests/value/struct3.i:38:[value] assertion 'Value,index_bound' got final status invalid. +[value] warning: Garbled mix generated during analysis: + {{ garbled mix of &{s1} (origin: Arithmetic {tests/value/struct3.i:46}) }} +tests/value/struct3.i:42:[value] assertion 'Value,index_bound' got final status invalid. [value] ====== VALUES COMPUTED ====== [value:final-states] Values at end of function main: s1.a ∈ {2} @@ -34,14 +35,25 @@ tests/value/struct3.i:38:[value] assertion 'Value,index_bound' got final status .b.a ∈ {3} {.b.b; .e[0..9]} ∈ {0} .c ∈ {{ &s1 }} + s2.a ∈ + {{ garbled mix of &{s1} + (origin: Arithmetic {tests/value/struct3.i:46}) }} + .d[0] ∈ {1} + .d[1..2] ∈ {2} + .d[3..7] ∈ {0} + .d[8..9] ∈ {2} + .b.a ∈ {3} + {.b.b; .e[0..9]} ∈ {0} + .c ∈ {{ &s1 }} [from] Computing for function main [from] Done for function main [from] ====== DEPENDENCIES COMPUTED ====== These dependencies hold at termination for the executions that terminate: [from] Function main: s1{{.a; .d[0..2]}; {.d[8..9]; .b.a}; .c} FROM \nothing + s2 FROM s1{.d[3..7]; {.b.b; .e[0..9]}} [from] ====== END OF DEPENDENCIES ====== [inout] Out (internal) for function main: - s1{{.a; .d[0..2]}; {.d[8..9]; .b.a}; .c} + s1{{.a; .d[0..2]}; {.d[8..9]; .b.a}; .c}; s2 [inout] Inputs for function main: - v + s1; s2.c; v diff --git a/tests/value/oracle_apron/symbolic_locs.err.oracle b/tests/value/oracle_apron/symbolic_locs.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_apron/symbolic_locs.res.oracle b/tests/value/oracle_apron/symbolic_locs.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..3cc3e4520978ba0731d19692cbeacf90244f8be3 --- /dev/null +++ b/tests/value/oracle_apron/symbolic_locs.res.oracle @@ -0,0 +1,178 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/symbolic_locs.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + v ∈ [--..--] + t[0..9] ∈ {0} + u[0..9] ∈ [--..--] +[value] computing for function main2_kill_direct <- main. + Called from tests/value/symbolic_locs.i:72. +tests/value/symbolic_locs.i:29:[value] warning: assertion got status unknown. +[value] DUMPING STATE of file tests/value/symbolic_locs.i line 32 + v ∈ [--..--] + t[0..8] ∈ {0; 4} + [9] ∈ {0} + u[0..9] ∈ [--..--] + i ∈ [0..8] + =END OF DUMP== +[value] DUMPING STATE of file tests/value/symbolic_locs.i line 34 + v ∈ [--..--] + t[0..1] ∈ {0; 4} + [2] ∈ {1} + [3..8] ∈ {0; 4} + [9] ∈ {0} + u[0..9] ∈ [--..--] + i ∈ [0..8] + =END OF DUMP== +[value] Recording results for main2_kill_direct +[value] Done for function main2_kill_direct +[value] computing for function main3_kill_indirect <- main. + Called from tests/value/symbolic_locs.i:73. +tests/value/symbolic_locs.i:41:[value] warning: assertion got status unknown. +[value] DUMPING STATE of file tests/value/symbolic_locs.i line 44 + v ∈ [--..--] + t[0..1] ∈ {0; 4} + [2] ∈ {0; 1; 4} + [3..8] ∈ {0; 4} + [9] ∈ {0} + u[0..9] ∈ [--..--] + i ∈ [0..8] + =END OF DUMP== +[value] DUMPING STATE of file tests/value/symbolic_locs.i line 46 + v ∈ [--..--] + t[0..1] ∈ {0; 4} + [2] ∈ {0; 1; 4} + [3..8] ∈ {0; 4} + [9] ∈ {0} + u[0..9] ∈ [--..--] + i ∈ {8} + =END OF DUMP== +[value] Recording results for main3_kill_indirect +[value] Done for function main3_kill_indirect +[value] computing for function main4_scope_right <- main. + Called from tests/value/symbolic_locs.i:74. +tests/value/symbolic_locs.i:51:[value] warning: assertion got status unknown. +[value] DUMPING STATE of file tests/value/symbolic_locs.i line 55 + v ∈ [--..--] + t[0..1] ∈ {{ NULL + {0; 4} ; (int)&x }} + [2] ∈ {{ NULL + {0; 1; 4} ; (int)&x }} + [3..8] ∈ {{ NULL + {0; 4} ; (int)&x }} + [9] ∈ {0} + u[0..9] ∈ [--..--] + i ∈ [0..8] + x ∈ UNINITIALIZED + =END OF DUMP== +tests/value/symbolic_locs.i:55:[value] warning: locals {x} escaping the scope of a block of main4_scope_right through t +[value] DUMPING STATE of file tests/value/symbolic_locs.i line 57 + v ∈ [--..--] + t[0..1] ∈ {0; 4} or ESCAPINGADDR + [2] ∈ {0; 1; 4} or ESCAPINGADDR + [3..8] ∈ {0; 4} or ESCAPINGADDR + [9] ∈ {0} + u[0..9] ∈ [--..--] + i ∈ [0..8] + =END OF DUMP== +[value] Recording results for main4_scope_right +[value] Done for function main4_scope_right +[value] computing for function main5_scope_lv <- main. + Called from tests/value/symbolic_locs.i:75. +tests/value/symbolic_locs.i:63:[value] warning: assertion got status unknown. +[value] DUMPING STATE of file tests/value/symbolic_locs.i line 65 + v ∈ [--..--] + t[0..8] ∈ {0; 1; 4} or ESCAPINGADDR + [9] ∈ {0} + u[0..9] ∈ [--..--] + z ∈ {1} + i ∈ [0..8] + =END OF DUMP== +[value] DUMPING STATE of file tests/value/symbolic_locs.i line 67 + v ∈ [--..--] + t[0..8] ∈ {0; 1; 4} or ESCAPINGADDR + [9] ∈ {0} + u[0..9] ∈ [--..--] + z ∈ {1} + =END OF DUMP== +[value] Recording results for main5_scope_lv +[value] Done for function main5_scope_lv +[value] DUMPING STATE of file tests/value/symbolic_locs.i line 76 + v ∈ [--..--] + t[0..8] ∈ {0; 1; 4} or ESCAPINGADDR + [9] ∈ {0} + u[0..9] ∈ [--..--] + =END OF DUMP== +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main2_kill_direct: + t[0..1] ∈ {0; 4} + [2] ∈ {1} + [3..8] ∈ {0; 4} + [9] ∈ {0} + i ∈ [0..8] +[value:final-states] Values at end of function main3_kill_indirect: + t[0..1] ∈ {0; 4} + [2] ∈ {0; 1; 4} + [3..8] ∈ {0; 4} + [9] ∈ {0} + i ∈ {8} +[value:final-states] Values at end of function main4_scope_right: + t[0..1] ∈ {0; 4} or ESCAPINGADDR + [2] ∈ {0; 1; 4} or ESCAPINGADDR + [3..8] ∈ {0; 4} or ESCAPINGADDR + [9] ∈ {0} + i ∈ [0..8] +[value:final-states] Values at end of function main5_scope_lv: + t[0..8] ∈ {0; 1; 4} or ESCAPINGADDR + [9] ∈ {0} + z ∈ {1} +[value:final-states] Values at end of function main: + t[0..8] ∈ {0; 1; 4} or ESCAPINGADDR + [9] ∈ {0} +[from] Computing for function main2_kill_direct +[from] Computing for function Frama_C_dump_each <-main2_kill_direct +[from] Done for function Frama_C_dump_each +[from] Done for function main2_kill_direct +[from] Computing for function main3_kill_indirect +[from] Done for function main3_kill_indirect +[from] Computing for function main4_scope_right +[from] Done for function main4_scope_right +[from] Computing for function main5_scope_lv +[from] Done for function main5_scope_lv +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main2_kill_direct: + t{[0..1]; [3..8]} FROM v (and SELF) + [2] FROM \nothing +[from] Function main3_kill_indirect: + t[0..8] FROM v (and SELF) +[from] Function main4_scope_right: + t[0..8] FROM v (and SELF) +[from] Function main5_scope_lv: + t[0..8] FROM v (and SELF) +[from] Function main: + t[0..8] FROM v (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main2_kill_direct: + t[0..8]; i +[inout] Inputs for function main2_kill_direct: + v +[inout] Out (internal) for function main3_kill_indirect: + t[0..8]; i +[inout] Inputs for function main3_kill_indirect: + v +[inout] Out (internal) for function main4_scope_right: + t[0..8]; i +[inout] Inputs for function main4_scope_right: + v +[inout] Out (internal) for function main5_scope_lv: + t[0..8]; z; i +[inout] Inputs for function main5_scope_lv: + v +[inout] Out (internal) for function main: + t[0..8] +[inout] Inputs for function main: + v diff --git a/tests/value/oracle_bitwise/abstract_struct_1.res.oracle b/tests/value/oracle_bitwise/abstract_struct_1.res.oracle index 8f29a3b92ceeb30430f81cdfa738790d43f00b40..da98bb1e90e8be7e5cbdd5c868b851e355ea0f42 100644 --- a/tests/value/oracle_bitwise/abstract_struct_1.res.oracle +++ b/tests/value/oracle_bitwise/abstract_struct_1.res.oracle @@ -22,7 +22,7 @@ tests/value/abstract_struct_1.c:10:[value] warning: during initialization of var Called from tests/value/abstract_struct_1.c:13. tests/value/abstract_struct_1.c:13:[kernel] warning: No code nor implicit assigns clause for function calloc, generating default assigns from the prototype [value] using specification for function calloc -share/libc/stdlib.h:146:[value] function calloc: precondition got status valid. +share/libc/stdlib.h:159:[value] function calloc: precondition got status valid. [value] Done for function calloc [value] Recording results for main [value] done for function main diff --git a/tests/value/oracle_bitwise/empty_struct2.res.oracle b/tests/value/oracle_bitwise/empty_struct2.res.oracle index e78a67ac6c367f6087764a48c0065a6e45a34b60..94d86df34e886618549af642f26df72b13d9e765 100644 --- a/tests/value/oracle_bitwise/empty_struct2.res.oracle +++ b/tests/value/oracle_bitwise/empty_struct2.res.oracle @@ -6,8 +6,8 @@ [value:initial-state] Values of globals at initialization nondet ∈ [--..--] tests/value/empty_struct2.c:40:[value] assertion got status valid. -[value] Called Frama_C_show_each_global_empty({{ }}) -[value] Called Frama_C_show_each_e1({{ }}) +[value] Called Frama_C_show_each_global_empty(∅) +[value] Called Frama_C_show_each_e1(∅) [value] computing for function memcpy <- main. Called from tests/value/empty_struct2.c:44. [value] using specification for function memcpy @@ -21,7 +21,7 @@ tests/value/empty_struct2.c:44:[value] cannot evaluate ACSL term, unsupported AC tests/value/empty_struct2.c:49:[value] cannot evaluate ACSL term, unsupported ACSL construct: logic functions or predicates [value] Done for function memcpy [value] Called Frama_C_show_each_c2([--..--]) -[value] Called Frama_C_show_each_c2_e({{ }}) +[value] Called Frama_C_show_each_c2_e(∅) [value] computing for function f <- main. Called from tests/value/empty_struct2.c:52. tests/value/empty_struct2.c:27:[value] warning: accessing uninitialized left-value. assert \initialized(&s.b); diff --git a/tests/value/oracle_bitwise/empty_union.res.oracle b/tests/value/oracle_bitwise/empty_union.res.oracle index 1a6bbfe07f3fc493390229b39aabbb0d1d72b078..051dc2721080fffd9ddbfb8c397e48089c2c64e1 100644 --- a/tests/value/oracle_bitwise/empty_union.res.oracle +++ b/tests/value/oracle_bitwise/empty_union.res.oracle @@ -14,8 +14,8 @@ tests/value/empty_union.c:59:[kernel] imprecise size for variable f1 (Size of ar .data[1..2] ∈ {0} tests/value/empty_union.c:75:[value] assertion got status valid. tests/value/empty_union.c:76:[value] assertion got status valid. -[value] Called Frama_C_show_each_global_empty({{ }}) -[value] Called Frama_C_show_each_e1({{ }}) +[value] Called Frama_C_show_each_global_empty(∅) +[value] Called Frama_C_show_each_e1(∅) [value] computing for function memcpy <- main. Called from tests/value/empty_union.c:80. [value] using specification for function memcpy @@ -29,7 +29,7 @@ tests/value/empty_union.c:80:[value] cannot evaluate ACSL term, unsupported ACSL tests/value/empty_union.c:85:[value] cannot evaluate ACSL term, unsupported ACSL construct: logic functions or predicates [value] Done for function memcpy [value] Called Frama_C_show_each_c2([--..--]) -[value] Called Frama_C_show_each_c2_e({{ }}) +[value] Called Frama_C_show_each_c2_e(∅) [value] computing for function f <- main. Called from tests/value/empty_union.c:88. [value] Recording results for f diff --git a/tests/value/oracle_bitwise/fun_ptr.0.err.oracle b/tests/value/oracle_bitwise/fun_ptr.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_bitwise/fun_ptr.0.res.oracle b/tests/value/oracle_bitwise/fun_ptr.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..a64d4f525b9c22108ab612421154c362b049a830 --- /dev/null +++ b/tests/value/oracle_bitwise/fun_ptr.0.res.oracle @@ -0,0 +1,198 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/fun_ptr.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + t[0] ∈ {{ (long long)&f }} + [1] ∈ {{ (long long)&g }} + R1 ∈ {0} + R2 ∈ {0} + R3 ∈ {0} + v ∈ [--..--] +[value] computing for function test1 <- main. + Called from tests/value/fun_ptr.i:78. +tests/value/fun_ptr.i:28:[value] warning: pointer to function with incompatible type. + assert \valid_function((int (*)(int ))t[nd]); +[value] computing for function f <- test1 <- main. + Called from tests/value/fun_ptr.i:28. +[value] Recording results for f +[value] Done for function f +[value] Recording results for test1 +[value] Done for function test1 +[value] computing for function test2 <- main. + Called from tests/value/fun_ptr.i:79. +tests/value/fun_ptr.i:33:[value] warning: pointer to function with incompatible type. + assert \valid_function((int (*)(int , int ))t[nd]); +[value] computing for function g <- test2 <- main. + Called from tests/value/fun_ptr.i:33. +[value] Recording results for g +[value] Done for function g +[value] computing for function f <- test2 <- main. + Called from tests/value/fun_ptr.i:33. +[value] Recording results for f +[value] Done for function f +[value] Recording results for test2 +[value] Done for function test2 +[value] computing for function test3 <- main. + Called from tests/value/fun_ptr.i:80. +tests/value/fun_ptr.i:38:[value] warning: pointer to function with incompatible type. + assert \valid_function((double (*)(int ))t[nd]); +[value] Recording results for test3 +[value] Done for function test3 +tests/value/fun_ptr.i:83:[value] warning: Function type must match type at call site: assert(function type matches) +tests/value/fun_ptr.i:85:[value] warning: Function type must match type at call site: assert(function type matches) +[value] computing for function h <- main. + Called from tests/value/fun_ptr.i:87. +[value] Recording results for h +[value] Done for function h +[value] computing for function test_benign <- main. + Called from tests/value/fun_ptr.i:89. +tests/value/fun_ptr.i:56:[value] warning: pointer to function with incompatible type. assert \valid_function(p); +[value] computing for function benign <- test_benign <- main. + Called from tests/value/fun_ptr.i:56. +[value] Recording results for benign +[value] Done for function benign +[value] Recording results for test_benign +[value] Done for function test_benign +[value] computing for function test_too_much_benign <- main. + Called from tests/value/fun_ptr.i:90. +tests/value/fun_ptr.i:70:[value] warning: pointer to function with incompatible type. assert \valid_function(p); +[value] computing for function too_much <- test_too_much_benign <- main. + Called from tests/value/fun_ptr.i:70. +[value] Recording results for too_much +[value] Done for function too_much +tests/value/fun_ptr.i:73:[value] warning: pointer to function with incompatible type. assert \valid_function(p); +[value] Recording results for test_too_much_benign +[value] Done for function test_too_much_benign +[value] Recording results for main +[value] done for function main +tests/value/fun_ptr.i:38:[value] assertion 'Value,function_pointer' got final status invalid. +tests/value/fun_ptr.i:73:[value] assertion 'Value,function_pointer' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function benign: + q ∈ {{ &x }} + k ∈ {-2147483648} + x ∈ {-2147483648} +[value:final-states] Values at end of function f: + __retres ∈ {4} +[value:final-states] Values at end of function g: + __retres ∈ {7} +[value:final-states] Values at end of function h: + __retres ∈ {3.} +[value:final-states] Values at end of function test1: + R1 ∈ {4} +[value:final-states] Values at end of function test2: + R2 ∈ {4; 7} +[value:final-states] Values at end of function test3: + NON TERMINATING FUNCTION +[value:final-states] Values at end of function test_benign: + x ∈ {-2147483648} + p ∈ {{ (void (*)(long , short *))&benign }} +[value:final-states] Values at end of function too_much: + j ∈ {1} +[value:final-states] Values at end of function test_too_much_benign: + p ∈ {{ (void (*)(int , int ))&too_much }} +[value:final-states] Values at end of function main: + R1 ∈ {4} + R2 ∈ {4; 7} + R3 ∈ {0} + ph ∈ {{ &h }} + __retres ∈ {0} +[from] Computing for function benign +[from] Done for function benign +[from] Computing for function f +[from] Done for function f +[from] Computing for function g +[from] Done for function g +[from] Computing for function h +[from] Done for function h +[from] Computing for function test1 +[from] Done for function test1 +[from] Computing for function test2 +tests/value/fun_ptr.i:33:[from] warning: variadic call detected. Using only 1 argument(s). +[from] Done for function test2 +[from] Computing for function test3 +[from] Non-terminating function test3 (no dependencies) +[from] Done for function test3 +[from] Computing for function test_benign +[from] Done for function test_benign +[from] Computing for function too_much +[from] Done for function too_much +[from] Computing for function test_too_much_benign +tests/value/fun_ptr.i:70:[from] warning: variadic call detected. Using only 1 argument(s). +[from] Done for function test_too_much_benign +[from] Computing for function main +tests/value/fun_ptr.i:85:[from] warning: variadic call detected. Using only 0 argument(s). +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function benign: + x FROM j; p +[from] Function f: + \result FROM x +[from] Function g: + \result FROM x; y +[from] Function h: + \result FROM a; b +[from] Function test1: + R1 FROM t[0..1]; nd +[from] Function test2: + R2 FROM t[0..1]; nd +[from] Function test3: + NON TERMINATING - NO EFFECTS +[from] Function test_benign: + NO EFFECTS +[from] Function too_much: + NO EFFECTS +[from] Function test_too_much_benign: + NO EFFECTS +[from] Function main: + R1 FROM t[0..1]; v + R2 FROM t[0..1]; v + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function benign: + q; k; x +[inout] Inputs for function benign: + \nothing +[inout] Out (internal) for function f: + __retres +[inout] Inputs for function f: + \nothing +[inout] Out (internal) for function g: + __retres +[inout] Inputs for function g: + \nothing +[inout] Out (internal) for function h: + __retres +[inout] Inputs for function h: + \nothing +[inout] Out (internal) for function test1: + R1 +[inout] Inputs for function test1: + t[0..1] +[inout] Out (internal) for function test2: + R2 +[inout] Inputs for function test2: + t[0..1] +[inout] Out (internal) for function test3: + R3 +[inout] Inputs for function test3: + t[0..1] +[inout] Out (internal) for function test_benign: + x; p +[inout] Inputs for function test_benign: + \nothing +[inout] Out (internal) for function too_much: + j +[inout] Inputs for function too_much: + \nothing +[inout] Out (internal) for function test_too_much_benign: + p +[inout] Inputs for function test_too_much_benign: + v +[inout] Out (internal) for function main: + R1; R2; R3; ph; __retres +[inout] Inputs for function main: + t[0..1]; v diff --git a/tests/value/oracle_bitwise/fun_ptr.1.err.oracle b/tests/value/oracle_bitwise/fun_ptr.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_bitwise/fun_ptr.res.oracle b/tests/value/oracle_bitwise/fun_ptr.1.res.oracle similarity index 81% rename from tests/value/oracle_bitwise/fun_ptr.res.oracle rename to tests/value/oracle_bitwise/fun_ptr.1.res.oracle index 974a74650421c83102ed00d6f4879ce7531e9854..b818469156c0c5a5b43543e234c1b6b9a40d3375 100644 --- a/tests/value/oracle_bitwise/fun_ptr.res.oracle +++ b/tests/value/oracle_bitwise/fun_ptr.1.res.oracle @@ -4,71 +4,71 @@ [value] Computing initial state [value] Initial state computed [value:initial-state] Values of globals at initialization - t[0] ∈ {{ (long)&f }} - [1] ∈ {{ (long)&g }} + t[0] ∈ {{ (__int64)&f }} + [1] ∈ {{ (__int64)&g }} R1 ∈ {0} R2 ∈ {0} R3 ∈ {0} v ∈ [--..--] [value] computing for function test1 <- main. - Called from tests/value/fun_ptr.i:74. -tests/value/fun_ptr.i:24:[value] warning: pointer to function with incompatible type. + Called from tests/value/fun_ptr.i:78. +tests/value/fun_ptr.i:28:[value] warning: pointer to function with incompatible type. assert \valid_function((int (*)(int ))t[nd]); [value] computing for function f <- test1 <- main. - Called from tests/value/fun_ptr.i:24. + Called from tests/value/fun_ptr.i:28. [value] Recording results for f [value] Done for function f [value] Recording results for test1 [value] Done for function test1 [value] computing for function test2 <- main. - Called from tests/value/fun_ptr.i:75. -tests/value/fun_ptr.i:29:[value] warning: pointer to function with incompatible type. + Called from tests/value/fun_ptr.i:79. +tests/value/fun_ptr.i:33:[value] warning: pointer to function with incompatible type. assert \valid_function((int (*)(int , int ))t[nd]); [value] computing for function g <- test2 <- main. - Called from tests/value/fun_ptr.i:29. + Called from tests/value/fun_ptr.i:33. [value] Recording results for g [value] Done for function g [value] computing for function f <- test2 <- main. - Called from tests/value/fun_ptr.i:29. + Called from tests/value/fun_ptr.i:33. [value] Recording results for f [value] Done for function f [value] Recording results for test2 [value] Done for function test2 [value] computing for function test3 <- main. - Called from tests/value/fun_ptr.i:76. -tests/value/fun_ptr.i:34:[value] warning: pointer to function with incompatible type. + Called from tests/value/fun_ptr.i:80. +tests/value/fun_ptr.i:38:[value] warning: pointer to function with incompatible type. assert \valid_function((double (*)(int ))t[nd]); [value] Recording results for test3 [value] Done for function test3 -tests/value/fun_ptr.i:79:[value] warning: Function type must match type at call site: assert(function type matches) -tests/value/fun_ptr.i:81:[value] warning: Function type must match type at call site: assert(function type matches) +tests/value/fun_ptr.i:83:[value] warning: Function type must match type at call site: assert(function type matches) +tests/value/fun_ptr.i:85:[value] warning: Function type must match type at call site: assert(function type matches) [value] computing for function h <- main. - Called from tests/value/fun_ptr.i:83. + Called from tests/value/fun_ptr.i:87. [value] Recording results for h [value] Done for function h [value] computing for function test_benign <- main. - Called from tests/value/fun_ptr.i:85. -tests/value/fun_ptr.i:52:[value] warning: pointer to function with incompatible type. assert \valid_function(p); + Called from tests/value/fun_ptr.i:89. +tests/value/fun_ptr.i:56:[value] warning: pointer to function with incompatible type. assert \valid_function(p); [value] computing for function benign <- test_benign <- main. - Called from tests/value/fun_ptr.i:52. + Called from tests/value/fun_ptr.i:56. [value] Recording results for benign [value] Done for function benign [value] Recording results for test_benign [value] Done for function test_benign [value] computing for function test_too_much_benign <- main. - Called from tests/value/fun_ptr.i:86. -tests/value/fun_ptr.i:66:[value] warning: pointer to function with incompatible type. assert \valid_function(p); + Called from tests/value/fun_ptr.i:90. +tests/value/fun_ptr.i:70:[value] warning: pointer to function with incompatible type. assert \valid_function(p); [value] computing for function too_much <- test_too_much_benign <- main. - Called from tests/value/fun_ptr.i:66. + Called from tests/value/fun_ptr.i:70. [value] Recording results for too_much [value] Done for function too_much -tests/value/fun_ptr.i:69:[value] warning: pointer to function with incompatible type. assert \valid_function(p); +tests/value/fun_ptr.i:73:[value] warning: pointer to function with incompatible type. assert \valid_function(p); [value] Recording results for test_too_much_benign [value] Done for function test_too_much_benign [value] Recording results for main [value] done for function main -tests/value/fun_ptr.i:34:[value] assertion 'Value,function_pointer' got final status invalid. -tests/value/fun_ptr.i:69:[value] assertion 'Value,function_pointer' got final status invalid. +tests/value/fun_ptr.i:38:[value] assertion 'Value,function_pointer' got final status invalid. +tests/value/fun_ptr.i:73:[value] assertion 'Value,function_pointer' got final status invalid. [value] ====== VALUES COMPUTED ====== [value:final-states] Values at end of function benign: q ∈ {{ &x }} @@ -110,7 +110,7 @@ tests/value/fun_ptr.i:69:[value] assertion 'Value,function_pointer' got final st [from] Computing for function test1 [from] Done for function test1 [from] Computing for function test2 -tests/value/fun_ptr.i:29:[from] warning: variadic call detected. Using only 1 argument(s). +tests/value/fun_ptr.i:33:[from] warning: variadic call detected. Using only 1 argument(s). [from] Done for function test2 [from] Computing for function test3 [from] Non-terminating function test3 (no dependencies) @@ -120,10 +120,10 @@ tests/value/fun_ptr.i:29:[from] warning: variadic call detected. Using only 1 ar [from] Computing for function too_much [from] Done for function too_much [from] Computing for function test_too_much_benign -tests/value/fun_ptr.i:66:[from] warning: variadic call detected. Using only 1 argument(s). +tests/value/fun_ptr.i:70:[from] warning: variadic call detected. Using only 1 argument(s). [from] Done for function test_too_much_benign [from] Computing for function main -tests/value/fun_ptr.i:81:[from] warning: variadic call detected. Using only 0 argument(s). +tests/value/fun_ptr.i:85:[from] warning: variadic call detected. Using only 0 argument(s). [from] Done for function main [from] ====== DEPENDENCIES COMPUTED ====== These dependencies hold at termination for the executions that terminate: diff --git a/tests/value/oracle_bitwise/local.res.oracle b/tests/value/oracle_bitwise/local.res.oracle index f66f9d39d6baa99cc4ca01b42d84d58cb0496695..a9c42496641556a5671c8484c82748b1e0d2e765 100644 --- a/tests/value/oracle_bitwise/local.res.oracle +++ b/tests/value/oracle_bitwise/local.res.oracle @@ -11,13 +11,13 @@ U ∈ {0} V ∈ {0} [value] computing for function f <- main. - Called from tests/value/local.i:26. + Called from tests/value/local.i:33. tests/value/local.i:7:[value] warning: locals {b} escaping the scope of f through \result tests/value/local.i:7:[value] warning: locals {a} escaping the scope of f through X [value] Recording results for f [value] Done for function f [value] computing for function g <- main. - Called from tests/value/local.i:27. + Called from tests/value/local.i:34. [value] computing for function f <- g <- main. Called from tests/value/local.i:13. [value] Recording results for f @@ -26,7 +26,7 @@ tests/value/local.i:15:[value] warning: locals {d} escaping the scope of g throu tests/value/local.i:15:[value] warning: locals {d} escaping the scope of g through U [value] Recording results for g [value] Done for function g -[value] DUMPING STATE of file tests/value/local.i line 28 +[value] DUMPING STATE of file tests/value/local.i line 35 X ∈ ESCAPINGADDR Y ∈ ESCAPINGADDR Z ∈ ESCAPINGADDR @@ -36,9 +36,13 @@ tests/value/local.i:15:[value] warning: locals {d} escaping the scope of g throu e ∈ UNINITIALIZED =END OF DUMP== [value] computing for function h <- main. - Called from tests/value/local.i:29. + Called from tests/value/local.i:36. [value] Recording results for h [value] Done for function h +[value] computing for function i <- main. + Called from tests/value/local.i:37. +[value] Recording results for i +[value] Done for function i [value] Recording results for main [value] done for function main [value] ====== VALUES COMPUTED ====== @@ -52,6 +56,8 @@ tests/value/local.i:15:[value] warning: locals {d} escaping the scope of g throu d ∈ [--..--] [value:final-states] Values at end of function h: __retres ∈ {{ &e + {4} }} +[value:final-states] Values at end of function i: + x ∈ {{ &local }} [value:final-states] Values at end of function main: X ∈ ESCAPINGADDR Y ∈ ESCAPINGADDR @@ -65,6 +71,8 @@ tests/value/local.i:15:[value] warning: locals {d} escaping the scope of g throu [from] Done for function g [from] Computing for function h [from] Done for function h +[from] Computing for function i +[from] Done for function i [from] Computing for function main [from] Computing for function Frama_C_dump_each <-main [from] Done for function Frama_C_dump_each @@ -81,6 +89,8 @@ tests/value/local.i:15:[value] warning: locals {d} escaping the scope of g throu \result FROM \nothing [from] Function h: \result FROM x +[from] Function i: + NO EFFECTS [from] Function main: X FROM \nothing Y FROM \nothing @@ -101,6 +111,10 @@ tests/value/local.i:15:[value] warning: locals {d} escaping the scope of g throu __retres [inout] Inputs for function h: \nothing +[inout] Out (internal) for function i: + x +[inout] Inputs for function i: + \nothing [inout] Out (internal) for function main: X; Y; Z; T; U; V [inout] Inputs for function main: diff --git a/tests/value/oracle_bitwise/paths.res.oracle b/tests/value/oracle_bitwise/paths.res.oracle deleted file mode 100644 index bfa3c9ab0d353b52510ae97328ddfedf935275fd..0000000000000000000000000000000000000000 --- a/tests/value/oracle_bitwise/paths.res.oracle +++ /dev/null @@ -1,106 +0,0 @@ -[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/value/paths.i (no preprocessing) -[value] Analyzing a complete application starting at main -[value] Computing initial state -[value] Initial state computed -[value:initial-state] Values of globals at initialization - a ∈ {0} - b ∈ {0} - c ∈ {0} - d ∈ {0} - e ∈ {0} - i ∈ {0} - d1 ∈ {0} - d2 ∈ {0} - d3 ∈ {0} - d4 ∈ {0} - X1 ∈ {0} - X2 ∈ {0} - X3 ∈ {0} - X4 ∈ {0} - X5 ∈ {0} - X ∈ {0} - t[0] ∈ {{ &f1 }} - [1] ∈ {{ &f2 }} - [2] ∈ {{ &f3 }} -[value] computing for function unknownfun <- main. - Called from tests/value/paths.i:38. -[value] using specification for function unknownfun -[value] Done for function unknownfun -tests/value/paths.i:41:[value] warning: signed overflow. assert r+1 ≤ 2147483647; -tests/value/paths.i:44:[value] warning: accessing out of bounds index. assert 0 ≤ w; -tests/value/paths.i:44:[value] warning: accessing out of bounds index. assert w < 3; -[value] computing for function f3 <- main. - Called from tests/value/paths.i:44. -[value] Recording results for f3 -[value] Done for function f3 -[value] computing for function f2 <- main. - Called from tests/value/paths.i:44. -[value] Recording results for f2 -[value] Done for function f2 -[value] computing for function f1 <- main. - Called from tests/value/paths.i:44. -[value] Recording results for f1 -[value] Done for function f1 -[value] computing for function f <- main. - Called from tests/value/paths.i:48. -[value] Recording results for f -[value] Done for function f -[value] Recording results for main -[value] done for function main -[from] Computing for function f -[from] Now calling From callbacks -Computing path dependencies for function f -Path dependencies of f: fy -[from] Done for function f -[from] Computing for function f1 -[from] Now calling From callbacks -Computing path dependencies for function f1 -Path dependencies of f1: d1 -[from] Done for function f1 -[from] Computing for function f2 -[from] Now calling From callbacks -Computing path dependencies for function f2 -Path dependencies of f2: \nothing -[from] Done for function f2 -[from] Computing for function f3 -[from] Now calling From callbacks -Computing path dependencies for function f3 -Path dependencies of f3: \nothing -[from] Done for function f3 -[from] Computing for function main -[from] Computing for function unknownfun <-main -[from] Done for function unknownfun -[from] Now calling From callbacks -Computing path dependencies for function main -Assuming library function unknownfun has no path dependencies -Path dependencies of main: b; X1; X2; X3; X4; t[0..2]; s; u; v; w; x; -y; z; -ww -[from] Done for function main -[from] ====== DEPENDENCIES COMPUTED ====== - These dependencies hold at termination for the executions that terminate: -[from] Function f: - i FROM i; fy (and SELF) - d2 FROM fx - \result FROM d3 -[from] Function f1: - X FROM d1; X1; X4 -[from] Function f2: - X FROM X2 -[from] Function f3: - X FROM X3 -[from] Function unknownfun: - \result FROM x -[from] Function main: - a FROM b; v (and SELF) - c FROM a; b; u - d FROM b; v - i FROM i; s; y; z; ww (and SELF) - d1 FROM x - d2 FROM y - d3 FROM z - d4 FROM ww - X FROM X1; X2; X3; X4; t[0..2]; w; x - \result FROM \nothing -[from] ====== END OF DEPENDENCIES ====== diff --git a/tests/value/oracle_bitwise/struct3.res.oracle b/tests/value/oracle_bitwise/struct3.res.oracle index 2fc6b4def4fb7fa45f79555bd0fc00cf30c77738..67c893770a50dfadfd6a2381bfb5a82458cc744d 100644 --- a/tests/value/oracle_bitwise/struct3.res.oracle +++ b/tests/value/oracle_bitwise/struct3.res.oracle @@ -13,17 +13,18 @@ tab_s4[0..1] ∈ {0} s1 ∈ {0} s2 ∈ {0} - s4 ∈ {0} - s5 ∈ {0} - s6 ∈ {0} s8 ∈ {0} s7 ∈ {0} v ∈ [--..--] -tests/value/struct3.i:38:[value] warning: accessing out of bounds index. assert 10 < 10; -tests/value/struct3.i:38:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +tests/value/struct3.i:42:[value] warning: accessing out of bounds index. assert 10 < 10; +tests/value/struct3.i:42:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +tests/value/struct3.i:46:[value] Assigning imprecise value to s2.a. + The imprecision originates from Arithmetic {tests/value/struct3.i:46} [value] Recording results for main [value] done for function main -tests/value/struct3.i:38:[value] assertion 'Value,index_bound' got final status invalid. +[value] warning: Garbled mix generated during analysis: + {{ garbled mix of &{s1} (origin: Arithmetic {tests/value/struct3.i:46}) }} +tests/value/struct3.i:42:[value] assertion 'Value,index_bound' got final status invalid. [value] ====== VALUES COMPUTED ====== [value:final-states] Values at end of function main: s1.a ∈ {2} @@ -34,14 +35,25 @@ tests/value/struct3.i:38:[value] assertion 'Value,index_bound' got final status .b.a ∈ {3} {.b.b; .e[0..9]} ∈ {0} .c ∈ {{ &s1 }} + s2.a ∈ + {{ garbled mix of &{s1} + (origin: Arithmetic {tests/value/struct3.i:46}) }} + .d[0] ∈ {1} + .d[1..2] ∈ {2} + .d[3..7] ∈ {0} + .d[8..9] ∈ {2} + .b.a ∈ {3} + {.b.b; .e[0..9]} ∈ {0} + .c ∈ {{ &s1 }} [from] Computing for function main [from] Done for function main [from] ====== DEPENDENCIES COMPUTED ====== These dependencies hold at termination for the executions that terminate: [from] Function main: s1{{.a; .d[0..2]}; {.d[8..9]; .b.a}; .c} FROM \nothing + s2 FROM s1{.d[3..7]; {.b.b; .e[0..9]}} [from] ====== END OF DEPENDENCIES ====== [inout] Out (internal) for function main: - s1{{.a; .d[0..2]}; {.d[8..9]; .b.a}; .c} + s1{{.a; .d[0..2]}; {.d[8..9]; .b.a}; .c}; s2 [inout] Inputs for function main: - v + s1; s2.c; v diff --git a/tests/value/oracle_bitwise/symbolic_locs.err.oracle b/tests/value/oracle_bitwise/symbolic_locs.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_bitwise/symbolic_locs.res.oracle b/tests/value/oracle_bitwise/symbolic_locs.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..3cc3e4520978ba0731d19692cbeacf90244f8be3 --- /dev/null +++ b/tests/value/oracle_bitwise/symbolic_locs.res.oracle @@ -0,0 +1,178 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/symbolic_locs.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + v ∈ [--..--] + t[0..9] ∈ {0} + u[0..9] ∈ [--..--] +[value] computing for function main2_kill_direct <- main. + Called from tests/value/symbolic_locs.i:72. +tests/value/symbolic_locs.i:29:[value] warning: assertion got status unknown. +[value] DUMPING STATE of file tests/value/symbolic_locs.i line 32 + v ∈ [--..--] + t[0..8] ∈ {0; 4} + [9] ∈ {0} + u[0..9] ∈ [--..--] + i ∈ [0..8] + =END OF DUMP== +[value] DUMPING STATE of file tests/value/symbolic_locs.i line 34 + v ∈ [--..--] + t[0..1] ∈ {0; 4} + [2] ∈ {1} + [3..8] ∈ {0; 4} + [9] ∈ {0} + u[0..9] ∈ [--..--] + i ∈ [0..8] + =END OF DUMP== +[value] Recording results for main2_kill_direct +[value] Done for function main2_kill_direct +[value] computing for function main3_kill_indirect <- main. + Called from tests/value/symbolic_locs.i:73. +tests/value/symbolic_locs.i:41:[value] warning: assertion got status unknown. +[value] DUMPING STATE of file tests/value/symbolic_locs.i line 44 + v ∈ [--..--] + t[0..1] ∈ {0; 4} + [2] ∈ {0; 1; 4} + [3..8] ∈ {0; 4} + [9] ∈ {0} + u[0..9] ∈ [--..--] + i ∈ [0..8] + =END OF DUMP== +[value] DUMPING STATE of file tests/value/symbolic_locs.i line 46 + v ∈ [--..--] + t[0..1] ∈ {0; 4} + [2] ∈ {0; 1; 4} + [3..8] ∈ {0; 4} + [9] ∈ {0} + u[0..9] ∈ [--..--] + i ∈ {8} + =END OF DUMP== +[value] Recording results for main3_kill_indirect +[value] Done for function main3_kill_indirect +[value] computing for function main4_scope_right <- main. + Called from tests/value/symbolic_locs.i:74. +tests/value/symbolic_locs.i:51:[value] warning: assertion got status unknown. +[value] DUMPING STATE of file tests/value/symbolic_locs.i line 55 + v ∈ [--..--] + t[0..1] ∈ {{ NULL + {0; 4} ; (int)&x }} + [2] ∈ {{ NULL + {0; 1; 4} ; (int)&x }} + [3..8] ∈ {{ NULL + {0; 4} ; (int)&x }} + [9] ∈ {0} + u[0..9] ∈ [--..--] + i ∈ [0..8] + x ∈ UNINITIALIZED + =END OF DUMP== +tests/value/symbolic_locs.i:55:[value] warning: locals {x} escaping the scope of a block of main4_scope_right through t +[value] DUMPING STATE of file tests/value/symbolic_locs.i line 57 + v ∈ [--..--] + t[0..1] ∈ {0; 4} or ESCAPINGADDR + [2] ∈ {0; 1; 4} or ESCAPINGADDR + [3..8] ∈ {0; 4} or ESCAPINGADDR + [9] ∈ {0} + u[0..9] ∈ [--..--] + i ∈ [0..8] + =END OF DUMP== +[value] Recording results for main4_scope_right +[value] Done for function main4_scope_right +[value] computing for function main5_scope_lv <- main. + Called from tests/value/symbolic_locs.i:75. +tests/value/symbolic_locs.i:63:[value] warning: assertion got status unknown. +[value] DUMPING STATE of file tests/value/symbolic_locs.i line 65 + v ∈ [--..--] + t[0..8] ∈ {0; 1; 4} or ESCAPINGADDR + [9] ∈ {0} + u[0..9] ∈ [--..--] + z ∈ {1} + i ∈ [0..8] + =END OF DUMP== +[value] DUMPING STATE of file tests/value/symbolic_locs.i line 67 + v ∈ [--..--] + t[0..8] ∈ {0; 1; 4} or ESCAPINGADDR + [9] ∈ {0} + u[0..9] ∈ [--..--] + z ∈ {1} + =END OF DUMP== +[value] Recording results for main5_scope_lv +[value] Done for function main5_scope_lv +[value] DUMPING STATE of file tests/value/symbolic_locs.i line 76 + v ∈ [--..--] + t[0..8] ∈ {0; 1; 4} or ESCAPINGADDR + [9] ∈ {0} + u[0..9] ∈ [--..--] + =END OF DUMP== +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main2_kill_direct: + t[0..1] ∈ {0; 4} + [2] ∈ {1} + [3..8] ∈ {0; 4} + [9] ∈ {0} + i ∈ [0..8] +[value:final-states] Values at end of function main3_kill_indirect: + t[0..1] ∈ {0; 4} + [2] ∈ {0; 1; 4} + [3..8] ∈ {0; 4} + [9] ∈ {0} + i ∈ {8} +[value:final-states] Values at end of function main4_scope_right: + t[0..1] ∈ {0; 4} or ESCAPINGADDR + [2] ∈ {0; 1; 4} or ESCAPINGADDR + [3..8] ∈ {0; 4} or ESCAPINGADDR + [9] ∈ {0} + i ∈ [0..8] +[value:final-states] Values at end of function main5_scope_lv: + t[0..8] ∈ {0; 1; 4} or ESCAPINGADDR + [9] ∈ {0} + z ∈ {1} +[value:final-states] Values at end of function main: + t[0..8] ∈ {0; 1; 4} or ESCAPINGADDR + [9] ∈ {0} +[from] Computing for function main2_kill_direct +[from] Computing for function Frama_C_dump_each <-main2_kill_direct +[from] Done for function Frama_C_dump_each +[from] Done for function main2_kill_direct +[from] Computing for function main3_kill_indirect +[from] Done for function main3_kill_indirect +[from] Computing for function main4_scope_right +[from] Done for function main4_scope_right +[from] Computing for function main5_scope_lv +[from] Done for function main5_scope_lv +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main2_kill_direct: + t{[0..1]; [3..8]} FROM v (and SELF) + [2] FROM \nothing +[from] Function main3_kill_indirect: + t[0..8] FROM v (and SELF) +[from] Function main4_scope_right: + t[0..8] FROM v (and SELF) +[from] Function main5_scope_lv: + t[0..8] FROM v (and SELF) +[from] Function main: + t[0..8] FROM v (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main2_kill_direct: + t[0..8]; i +[inout] Inputs for function main2_kill_direct: + v +[inout] Out (internal) for function main3_kill_indirect: + t[0..8]; i +[inout] Inputs for function main3_kill_indirect: + v +[inout] Out (internal) for function main4_scope_right: + t[0..8]; i +[inout] Inputs for function main4_scope_right: + v +[inout] Out (internal) for function main5_scope_lv: + t[0..8]; z; i +[inout] Inputs for function main5_scope_lv: + v +[inout] Out (internal) for function main: + t[0..8] +[inout] Inputs for function main: + v diff --git a/tests/value/oracle_equalities/abstract_struct_1.res.oracle b/tests/value/oracle_equalities/abstract_struct_1.res.oracle index 8f29a3b92ceeb30430f81cdfa738790d43f00b40..da98bb1e90e8be7e5cbdd5c868b851e355ea0f42 100644 --- a/tests/value/oracle_equalities/abstract_struct_1.res.oracle +++ b/tests/value/oracle_equalities/abstract_struct_1.res.oracle @@ -22,7 +22,7 @@ tests/value/abstract_struct_1.c:10:[value] warning: during initialization of var Called from tests/value/abstract_struct_1.c:13. tests/value/abstract_struct_1.c:13:[kernel] warning: No code nor implicit assigns clause for function calloc, generating default assigns from the prototype [value] using specification for function calloc -share/libc/stdlib.h:146:[value] function calloc: precondition got status valid. +share/libc/stdlib.h:159:[value] function calloc: precondition got status valid. [value] Done for function calloc [value] Recording results for main [value] done for function main diff --git a/tests/value/oracle_equalities/empty_struct2.res.oracle b/tests/value/oracle_equalities/empty_struct2.res.oracle index e78a67ac6c367f6087764a48c0065a6e45a34b60..94d86df34e886618549af642f26df72b13d9e765 100644 --- a/tests/value/oracle_equalities/empty_struct2.res.oracle +++ b/tests/value/oracle_equalities/empty_struct2.res.oracle @@ -6,8 +6,8 @@ [value:initial-state] Values of globals at initialization nondet ∈ [--..--] tests/value/empty_struct2.c:40:[value] assertion got status valid. -[value] Called Frama_C_show_each_global_empty({{ }}) -[value] Called Frama_C_show_each_e1({{ }}) +[value] Called Frama_C_show_each_global_empty(∅) +[value] Called Frama_C_show_each_e1(∅) [value] computing for function memcpy <- main. Called from tests/value/empty_struct2.c:44. [value] using specification for function memcpy @@ -21,7 +21,7 @@ tests/value/empty_struct2.c:44:[value] cannot evaluate ACSL term, unsupported AC tests/value/empty_struct2.c:49:[value] cannot evaluate ACSL term, unsupported ACSL construct: logic functions or predicates [value] Done for function memcpy [value] Called Frama_C_show_each_c2([--..--]) -[value] Called Frama_C_show_each_c2_e({{ }}) +[value] Called Frama_C_show_each_c2_e(∅) [value] computing for function f <- main. Called from tests/value/empty_struct2.c:52. tests/value/empty_struct2.c:27:[value] warning: accessing uninitialized left-value. assert \initialized(&s.b); diff --git a/tests/value/oracle_equalities/empty_union.res.oracle b/tests/value/oracle_equalities/empty_union.res.oracle index 1a6bbfe07f3fc493390229b39aabbb0d1d72b078..051dc2721080fffd9ddbfb8c397e48089c2c64e1 100644 --- a/tests/value/oracle_equalities/empty_union.res.oracle +++ b/tests/value/oracle_equalities/empty_union.res.oracle @@ -14,8 +14,8 @@ tests/value/empty_union.c:59:[kernel] imprecise size for variable f1 (Size of ar .data[1..2] ∈ {0} tests/value/empty_union.c:75:[value] assertion got status valid. tests/value/empty_union.c:76:[value] assertion got status valid. -[value] Called Frama_C_show_each_global_empty({{ }}) -[value] Called Frama_C_show_each_e1({{ }}) +[value] Called Frama_C_show_each_global_empty(∅) +[value] Called Frama_C_show_each_e1(∅) [value] computing for function memcpy <- main. Called from tests/value/empty_union.c:80. [value] using specification for function memcpy @@ -29,7 +29,7 @@ tests/value/empty_union.c:80:[value] cannot evaluate ACSL term, unsupported ACSL tests/value/empty_union.c:85:[value] cannot evaluate ACSL term, unsupported ACSL construct: logic functions or predicates [value] Done for function memcpy [value] Called Frama_C_show_each_c2([--..--]) -[value] Called Frama_C_show_each_c2_e({{ }}) +[value] Called Frama_C_show_each_c2_e(∅) [value] computing for function f <- main. Called from tests/value/empty_union.c:88. [value] Recording results for f diff --git a/tests/value/oracle_equalities/fun_ptr.0.err.oracle b/tests/value/oracle_equalities/fun_ptr.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_equalities/fun_ptr.0.res.oracle b/tests/value/oracle_equalities/fun_ptr.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..a64d4f525b9c22108ab612421154c362b049a830 --- /dev/null +++ b/tests/value/oracle_equalities/fun_ptr.0.res.oracle @@ -0,0 +1,198 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/fun_ptr.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + t[0] ∈ {{ (long long)&f }} + [1] ∈ {{ (long long)&g }} + R1 ∈ {0} + R2 ∈ {0} + R3 ∈ {0} + v ∈ [--..--] +[value] computing for function test1 <- main. + Called from tests/value/fun_ptr.i:78. +tests/value/fun_ptr.i:28:[value] warning: pointer to function with incompatible type. + assert \valid_function((int (*)(int ))t[nd]); +[value] computing for function f <- test1 <- main. + Called from tests/value/fun_ptr.i:28. +[value] Recording results for f +[value] Done for function f +[value] Recording results for test1 +[value] Done for function test1 +[value] computing for function test2 <- main. + Called from tests/value/fun_ptr.i:79. +tests/value/fun_ptr.i:33:[value] warning: pointer to function with incompatible type. + assert \valid_function((int (*)(int , int ))t[nd]); +[value] computing for function g <- test2 <- main. + Called from tests/value/fun_ptr.i:33. +[value] Recording results for g +[value] Done for function g +[value] computing for function f <- test2 <- main. + Called from tests/value/fun_ptr.i:33. +[value] Recording results for f +[value] Done for function f +[value] Recording results for test2 +[value] Done for function test2 +[value] computing for function test3 <- main. + Called from tests/value/fun_ptr.i:80. +tests/value/fun_ptr.i:38:[value] warning: pointer to function with incompatible type. + assert \valid_function((double (*)(int ))t[nd]); +[value] Recording results for test3 +[value] Done for function test3 +tests/value/fun_ptr.i:83:[value] warning: Function type must match type at call site: assert(function type matches) +tests/value/fun_ptr.i:85:[value] warning: Function type must match type at call site: assert(function type matches) +[value] computing for function h <- main. + Called from tests/value/fun_ptr.i:87. +[value] Recording results for h +[value] Done for function h +[value] computing for function test_benign <- main. + Called from tests/value/fun_ptr.i:89. +tests/value/fun_ptr.i:56:[value] warning: pointer to function with incompatible type. assert \valid_function(p); +[value] computing for function benign <- test_benign <- main. + Called from tests/value/fun_ptr.i:56. +[value] Recording results for benign +[value] Done for function benign +[value] Recording results for test_benign +[value] Done for function test_benign +[value] computing for function test_too_much_benign <- main. + Called from tests/value/fun_ptr.i:90. +tests/value/fun_ptr.i:70:[value] warning: pointer to function with incompatible type. assert \valid_function(p); +[value] computing for function too_much <- test_too_much_benign <- main. + Called from tests/value/fun_ptr.i:70. +[value] Recording results for too_much +[value] Done for function too_much +tests/value/fun_ptr.i:73:[value] warning: pointer to function with incompatible type. assert \valid_function(p); +[value] Recording results for test_too_much_benign +[value] Done for function test_too_much_benign +[value] Recording results for main +[value] done for function main +tests/value/fun_ptr.i:38:[value] assertion 'Value,function_pointer' got final status invalid. +tests/value/fun_ptr.i:73:[value] assertion 'Value,function_pointer' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function benign: + q ∈ {{ &x }} + k ∈ {-2147483648} + x ∈ {-2147483648} +[value:final-states] Values at end of function f: + __retres ∈ {4} +[value:final-states] Values at end of function g: + __retres ∈ {7} +[value:final-states] Values at end of function h: + __retres ∈ {3.} +[value:final-states] Values at end of function test1: + R1 ∈ {4} +[value:final-states] Values at end of function test2: + R2 ∈ {4; 7} +[value:final-states] Values at end of function test3: + NON TERMINATING FUNCTION +[value:final-states] Values at end of function test_benign: + x ∈ {-2147483648} + p ∈ {{ (void (*)(long , short *))&benign }} +[value:final-states] Values at end of function too_much: + j ∈ {1} +[value:final-states] Values at end of function test_too_much_benign: + p ∈ {{ (void (*)(int , int ))&too_much }} +[value:final-states] Values at end of function main: + R1 ∈ {4} + R2 ∈ {4; 7} + R3 ∈ {0} + ph ∈ {{ &h }} + __retres ∈ {0} +[from] Computing for function benign +[from] Done for function benign +[from] Computing for function f +[from] Done for function f +[from] Computing for function g +[from] Done for function g +[from] Computing for function h +[from] Done for function h +[from] Computing for function test1 +[from] Done for function test1 +[from] Computing for function test2 +tests/value/fun_ptr.i:33:[from] warning: variadic call detected. Using only 1 argument(s). +[from] Done for function test2 +[from] Computing for function test3 +[from] Non-terminating function test3 (no dependencies) +[from] Done for function test3 +[from] Computing for function test_benign +[from] Done for function test_benign +[from] Computing for function too_much +[from] Done for function too_much +[from] Computing for function test_too_much_benign +tests/value/fun_ptr.i:70:[from] warning: variadic call detected. Using only 1 argument(s). +[from] Done for function test_too_much_benign +[from] Computing for function main +tests/value/fun_ptr.i:85:[from] warning: variadic call detected. Using only 0 argument(s). +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function benign: + x FROM j; p +[from] Function f: + \result FROM x +[from] Function g: + \result FROM x; y +[from] Function h: + \result FROM a; b +[from] Function test1: + R1 FROM t[0..1]; nd +[from] Function test2: + R2 FROM t[0..1]; nd +[from] Function test3: + NON TERMINATING - NO EFFECTS +[from] Function test_benign: + NO EFFECTS +[from] Function too_much: + NO EFFECTS +[from] Function test_too_much_benign: + NO EFFECTS +[from] Function main: + R1 FROM t[0..1]; v + R2 FROM t[0..1]; v + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function benign: + q; k; x +[inout] Inputs for function benign: + \nothing +[inout] Out (internal) for function f: + __retres +[inout] Inputs for function f: + \nothing +[inout] Out (internal) for function g: + __retres +[inout] Inputs for function g: + \nothing +[inout] Out (internal) for function h: + __retres +[inout] Inputs for function h: + \nothing +[inout] Out (internal) for function test1: + R1 +[inout] Inputs for function test1: + t[0..1] +[inout] Out (internal) for function test2: + R2 +[inout] Inputs for function test2: + t[0..1] +[inout] Out (internal) for function test3: + R3 +[inout] Inputs for function test3: + t[0..1] +[inout] Out (internal) for function test_benign: + x; p +[inout] Inputs for function test_benign: + \nothing +[inout] Out (internal) for function too_much: + j +[inout] Inputs for function too_much: + \nothing +[inout] Out (internal) for function test_too_much_benign: + p +[inout] Inputs for function test_too_much_benign: + v +[inout] Out (internal) for function main: + R1; R2; R3; ph; __retres +[inout] Inputs for function main: + t[0..1]; v diff --git a/tests/value/oracle_equalities/fun_ptr.1.err.oracle b/tests/value/oracle_equalities/fun_ptr.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_equalities/fun_ptr.1.res.oracle b/tests/value/oracle_equalities/fun_ptr.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..b818469156c0c5a5b43543e234c1b6b9a40d3375 --- /dev/null +++ b/tests/value/oracle_equalities/fun_ptr.1.res.oracle @@ -0,0 +1,198 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/fun_ptr.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + t[0] ∈ {{ (__int64)&f }} + [1] ∈ {{ (__int64)&g }} + R1 ∈ {0} + R2 ∈ {0} + R3 ∈ {0} + v ∈ [--..--] +[value] computing for function test1 <- main. + Called from tests/value/fun_ptr.i:78. +tests/value/fun_ptr.i:28:[value] warning: pointer to function with incompatible type. + assert \valid_function((int (*)(int ))t[nd]); +[value] computing for function f <- test1 <- main. + Called from tests/value/fun_ptr.i:28. +[value] Recording results for f +[value] Done for function f +[value] Recording results for test1 +[value] Done for function test1 +[value] computing for function test2 <- main. + Called from tests/value/fun_ptr.i:79. +tests/value/fun_ptr.i:33:[value] warning: pointer to function with incompatible type. + assert \valid_function((int (*)(int , int ))t[nd]); +[value] computing for function g <- test2 <- main. + Called from tests/value/fun_ptr.i:33. +[value] Recording results for g +[value] Done for function g +[value] computing for function f <- test2 <- main. + Called from tests/value/fun_ptr.i:33. +[value] Recording results for f +[value] Done for function f +[value] Recording results for test2 +[value] Done for function test2 +[value] computing for function test3 <- main. + Called from tests/value/fun_ptr.i:80. +tests/value/fun_ptr.i:38:[value] warning: pointer to function with incompatible type. + assert \valid_function((double (*)(int ))t[nd]); +[value] Recording results for test3 +[value] Done for function test3 +tests/value/fun_ptr.i:83:[value] warning: Function type must match type at call site: assert(function type matches) +tests/value/fun_ptr.i:85:[value] warning: Function type must match type at call site: assert(function type matches) +[value] computing for function h <- main. + Called from tests/value/fun_ptr.i:87. +[value] Recording results for h +[value] Done for function h +[value] computing for function test_benign <- main. + Called from tests/value/fun_ptr.i:89. +tests/value/fun_ptr.i:56:[value] warning: pointer to function with incompatible type. assert \valid_function(p); +[value] computing for function benign <- test_benign <- main. + Called from tests/value/fun_ptr.i:56. +[value] Recording results for benign +[value] Done for function benign +[value] Recording results for test_benign +[value] Done for function test_benign +[value] computing for function test_too_much_benign <- main. + Called from tests/value/fun_ptr.i:90. +tests/value/fun_ptr.i:70:[value] warning: pointer to function with incompatible type. assert \valid_function(p); +[value] computing for function too_much <- test_too_much_benign <- main. + Called from tests/value/fun_ptr.i:70. +[value] Recording results for too_much +[value] Done for function too_much +tests/value/fun_ptr.i:73:[value] warning: pointer to function with incompatible type. assert \valid_function(p); +[value] Recording results for test_too_much_benign +[value] Done for function test_too_much_benign +[value] Recording results for main +[value] done for function main +tests/value/fun_ptr.i:38:[value] assertion 'Value,function_pointer' got final status invalid. +tests/value/fun_ptr.i:73:[value] assertion 'Value,function_pointer' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function benign: + q ∈ {{ &x }} + k ∈ {-2147483648} + x ∈ {-2147483648} +[value:final-states] Values at end of function f: + __retres ∈ {4} +[value:final-states] Values at end of function g: + __retres ∈ {7} +[value:final-states] Values at end of function h: + __retres ∈ {3.} +[value:final-states] Values at end of function test1: + R1 ∈ {4} +[value:final-states] Values at end of function test2: + R2 ∈ {4; 7} +[value:final-states] Values at end of function test3: + NON TERMINATING FUNCTION +[value:final-states] Values at end of function test_benign: + x ∈ {-2147483648} + p ∈ {{ (void (*)(long , short *))&benign }} +[value:final-states] Values at end of function too_much: + j ∈ {1} +[value:final-states] Values at end of function test_too_much_benign: + p ∈ {{ (void (*)(int , int ))&too_much }} +[value:final-states] Values at end of function main: + R1 ∈ {4} + R2 ∈ {4; 7} + R3 ∈ {0} + ph ∈ {{ &h }} + __retres ∈ {0} +[from] Computing for function benign +[from] Done for function benign +[from] Computing for function f +[from] Done for function f +[from] Computing for function g +[from] Done for function g +[from] Computing for function h +[from] Done for function h +[from] Computing for function test1 +[from] Done for function test1 +[from] Computing for function test2 +tests/value/fun_ptr.i:33:[from] warning: variadic call detected. Using only 1 argument(s). +[from] Done for function test2 +[from] Computing for function test3 +[from] Non-terminating function test3 (no dependencies) +[from] Done for function test3 +[from] Computing for function test_benign +[from] Done for function test_benign +[from] Computing for function too_much +[from] Done for function too_much +[from] Computing for function test_too_much_benign +tests/value/fun_ptr.i:70:[from] warning: variadic call detected. Using only 1 argument(s). +[from] Done for function test_too_much_benign +[from] Computing for function main +tests/value/fun_ptr.i:85:[from] warning: variadic call detected. Using only 0 argument(s). +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function benign: + x FROM j; p +[from] Function f: + \result FROM x +[from] Function g: + \result FROM x; y +[from] Function h: + \result FROM a; b +[from] Function test1: + R1 FROM t[0..1]; nd +[from] Function test2: + R2 FROM t[0..1]; nd +[from] Function test3: + NON TERMINATING - NO EFFECTS +[from] Function test_benign: + NO EFFECTS +[from] Function too_much: + NO EFFECTS +[from] Function test_too_much_benign: + NO EFFECTS +[from] Function main: + R1 FROM t[0..1]; v + R2 FROM t[0..1]; v + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function benign: + q; k; x +[inout] Inputs for function benign: + \nothing +[inout] Out (internal) for function f: + __retres +[inout] Inputs for function f: + \nothing +[inout] Out (internal) for function g: + __retres +[inout] Inputs for function g: + \nothing +[inout] Out (internal) for function h: + __retres +[inout] Inputs for function h: + \nothing +[inout] Out (internal) for function test1: + R1 +[inout] Inputs for function test1: + t[0..1] +[inout] Out (internal) for function test2: + R2 +[inout] Inputs for function test2: + t[0..1] +[inout] Out (internal) for function test3: + R3 +[inout] Inputs for function test3: + t[0..1] +[inout] Out (internal) for function test_benign: + x; p +[inout] Inputs for function test_benign: + \nothing +[inout] Out (internal) for function too_much: + j +[inout] Inputs for function too_much: + \nothing +[inout] Out (internal) for function test_too_much_benign: + p +[inout] Inputs for function test_too_much_benign: + v +[inout] Out (internal) for function main: + R1; R2; R3; ph; __retres +[inout] Inputs for function main: + t[0..1]; v diff --git a/tests/value/oracle_equalities/local.res.oracle b/tests/value/oracle_equalities/local.res.oracle index f66f9d39d6baa99cc4ca01b42d84d58cb0496695..a9c42496641556a5671c8484c82748b1e0d2e765 100644 --- a/tests/value/oracle_equalities/local.res.oracle +++ b/tests/value/oracle_equalities/local.res.oracle @@ -11,13 +11,13 @@ U ∈ {0} V ∈ {0} [value] computing for function f <- main. - Called from tests/value/local.i:26. + Called from tests/value/local.i:33. tests/value/local.i:7:[value] warning: locals {b} escaping the scope of f through \result tests/value/local.i:7:[value] warning: locals {a} escaping the scope of f through X [value] Recording results for f [value] Done for function f [value] computing for function g <- main. - Called from tests/value/local.i:27. + Called from tests/value/local.i:34. [value] computing for function f <- g <- main. Called from tests/value/local.i:13. [value] Recording results for f @@ -26,7 +26,7 @@ tests/value/local.i:15:[value] warning: locals {d} escaping the scope of g throu tests/value/local.i:15:[value] warning: locals {d} escaping the scope of g through U [value] Recording results for g [value] Done for function g -[value] DUMPING STATE of file tests/value/local.i line 28 +[value] DUMPING STATE of file tests/value/local.i line 35 X ∈ ESCAPINGADDR Y ∈ ESCAPINGADDR Z ∈ ESCAPINGADDR @@ -36,9 +36,13 @@ tests/value/local.i:15:[value] warning: locals {d} escaping the scope of g throu e ∈ UNINITIALIZED =END OF DUMP== [value] computing for function h <- main. - Called from tests/value/local.i:29. + Called from tests/value/local.i:36. [value] Recording results for h [value] Done for function h +[value] computing for function i <- main. + Called from tests/value/local.i:37. +[value] Recording results for i +[value] Done for function i [value] Recording results for main [value] done for function main [value] ====== VALUES COMPUTED ====== @@ -52,6 +56,8 @@ tests/value/local.i:15:[value] warning: locals {d} escaping the scope of g throu d ∈ [--..--] [value:final-states] Values at end of function h: __retres ∈ {{ &e + {4} }} +[value:final-states] Values at end of function i: + x ∈ {{ &local }} [value:final-states] Values at end of function main: X ∈ ESCAPINGADDR Y ∈ ESCAPINGADDR @@ -65,6 +71,8 @@ tests/value/local.i:15:[value] warning: locals {d} escaping the scope of g throu [from] Done for function g [from] Computing for function h [from] Done for function h +[from] Computing for function i +[from] Done for function i [from] Computing for function main [from] Computing for function Frama_C_dump_each <-main [from] Done for function Frama_C_dump_each @@ -81,6 +89,8 @@ tests/value/local.i:15:[value] warning: locals {d} escaping the scope of g throu \result FROM \nothing [from] Function h: \result FROM x +[from] Function i: + NO EFFECTS [from] Function main: X FROM \nothing Y FROM \nothing @@ -101,6 +111,10 @@ tests/value/local.i:15:[value] warning: locals {d} escaping the scope of g throu __retres [inout] Inputs for function h: \nothing +[inout] Out (internal) for function i: + x +[inout] Inputs for function i: + \nothing [inout] Out (internal) for function main: X; Y; Z; T; U; V [inout] Inputs for function main: diff --git a/tests/value/oracle_equalities/paths.res.oracle b/tests/value/oracle_equalities/paths.res.oracle deleted file mode 100644 index bfa3c9ab0d353b52510ae97328ddfedf935275fd..0000000000000000000000000000000000000000 --- a/tests/value/oracle_equalities/paths.res.oracle +++ /dev/null @@ -1,106 +0,0 @@ -[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/value/paths.i (no preprocessing) -[value] Analyzing a complete application starting at main -[value] Computing initial state -[value] Initial state computed -[value:initial-state] Values of globals at initialization - a ∈ {0} - b ∈ {0} - c ∈ {0} - d ∈ {0} - e ∈ {0} - i ∈ {0} - d1 ∈ {0} - d2 ∈ {0} - d3 ∈ {0} - d4 ∈ {0} - X1 ∈ {0} - X2 ∈ {0} - X3 ∈ {0} - X4 ∈ {0} - X5 ∈ {0} - X ∈ {0} - t[0] ∈ {{ &f1 }} - [1] ∈ {{ &f2 }} - [2] ∈ {{ &f3 }} -[value] computing for function unknownfun <- main. - Called from tests/value/paths.i:38. -[value] using specification for function unknownfun -[value] Done for function unknownfun -tests/value/paths.i:41:[value] warning: signed overflow. assert r+1 ≤ 2147483647; -tests/value/paths.i:44:[value] warning: accessing out of bounds index. assert 0 ≤ w; -tests/value/paths.i:44:[value] warning: accessing out of bounds index. assert w < 3; -[value] computing for function f3 <- main. - Called from tests/value/paths.i:44. -[value] Recording results for f3 -[value] Done for function f3 -[value] computing for function f2 <- main. - Called from tests/value/paths.i:44. -[value] Recording results for f2 -[value] Done for function f2 -[value] computing for function f1 <- main. - Called from tests/value/paths.i:44. -[value] Recording results for f1 -[value] Done for function f1 -[value] computing for function f <- main. - Called from tests/value/paths.i:48. -[value] Recording results for f -[value] Done for function f -[value] Recording results for main -[value] done for function main -[from] Computing for function f -[from] Now calling From callbacks -Computing path dependencies for function f -Path dependencies of f: fy -[from] Done for function f -[from] Computing for function f1 -[from] Now calling From callbacks -Computing path dependencies for function f1 -Path dependencies of f1: d1 -[from] Done for function f1 -[from] Computing for function f2 -[from] Now calling From callbacks -Computing path dependencies for function f2 -Path dependencies of f2: \nothing -[from] Done for function f2 -[from] Computing for function f3 -[from] Now calling From callbacks -Computing path dependencies for function f3 -Path dependencies of f3: \nothing -[from] Done for function f3 -[from] Computing for function main -[from] Computing for function unknownfun <-main -[from] Done for function unknownfun -[from] Now calling From callbacks -Computing path dependencies for function main -Assuming library function unknownfun has no path dependencies -Path dependencies of main: b; X1; X2; X3; X4; t[0..2]; s; u; v; w; x; -y; z; -ww -[from] Done for function main -[from] ====== DEPENDENCIES COMPUTED ====== - These dependencies hold at termination for the executions that terminate: -[from] Function f: - i FROM i; fy (and SELF) - d2 FROM fx - \result FROM d3 -[from] Function f1: - X FROM d1; X1; X4 -[from] Function f2: - X FROM X2 -[from] Function f3: - X FROM X3 -[from] Function unknownfun: - \result FROM x -[from] Function main: - a FROM b; v (and SELF) - c FROM a; b; u - d FROM b; v - i FROM i; s; y; z; ww (and SELF) - d1 FROM x - d2 FROM y - d3 FROM z - d4 FROM ww - X FROM X1; X2; X3; X4; t[0..2]; w; x - \result FROM \nothing -[from] ====== END OF DEPENDENCIES ====== diff --git a/tests/value/oracle_equalities/struct3.res.oracle b/tests/value/oracle_equalities/struct3.res.oracle index 2fc6b4def4fb7fa45f79555bd0fc00cf30c77738..67c893770a50dfadfd6a2381bfb5a82458cc744d 100644 --- a/tests/value/oracle_equalities/struct3.res.oracle +++ b/tests/value/oracle_equalities/struct3.res.oracle @@ -13,17 +13,18 @@ tab_s4[0..1] ∈ {0} s1 ∈ {0} s2 ∈ {0} - s4 ∈ {0} - s5 ∈ {0} - s6 ∈ {0} s8 ∈ {0} s7 ∈ {0} v ∈ [--..--] -tests/value/struct3.i:38:[value] warning: accessing out of bounds index. assert 10 < 10; -tests/value/struct3.i:38:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +tests/value/struct3.i:42:[value] warning: accessing out of bounds index. assert 10 < 10; +tests/value/struct3.i:42:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +tests/value/struct3.i:46:[value] Assigning imprecise value to s2.a. + The imprecision originates from Arithmetic {tests/value/struct3.i:46} [value] Recording results for main [value] done for function main -tests/value/struct3.i:38:[value] assertion 'Value,index_bound' got final status invalid. +[value] warning: Garbled mix generated during analysis: + {{ garbled mix of &{s1} (origin: Arithmetic {tests/value/struct3.i:46}) }} +tests/value/struct3.i:42:[value] assertion 'Value,index_bound' got final status invalid. [value] ====== VALUES COMPUTED ====== [value:final-states] Values at end of function main: s1.a ∈ {2} @@ -34,14 +35,25 @@ tests/value/struct3.i:38:[value] assertion 'Value,index_bound' got final status .b.a ∈ {3} {.b.b; .e[0..9]} ∈ {0} .c ∈ {{ &s1 }} + s2.a ∈ + {{ garbled mix of &{s1} + (origin: Arithmetic {tests/value/struct3.i:46}) }} + .d[0] ∈ {1} + .d[1..2] ∈ {2} + .d[3..7] ∈ {0} + .d[8..9] ∈ {2} + .b.a ∈ {3} + {.b.b; .e[0..9]} ∈ {0} + .c ∈ {{ &s1 }} [from] Computing for function main [from] Done for function main [from] ====== DEPENDENCIES COMPUTED ====== These dependencies hold at termination for the executions that terminate: [from] Function main: s1{{.a; .d[0..2]}; {.d[8..9]; .b.a}; .c} FROM \nothing + s2 FROM s1{.d[3..7]; {.b.b; .e[0..9]}} [from] ====== END OF DEPENDENCIES ====== [inout] Out (internal) for function main: - s1{{.a; .d[0..2]}; {.d[8..9]; .b.a}; .c} + s1{{.a; .d[0..2]}; {.d[8..9]; .b.a}; .c}; s2 [inout] Inputs for function main: - v + s1; s2.c; v diff --git a/tests/value/oracle_equalities/symbolic_locs.err.oracle b/tests/value/oracle_equalities/symbolic_locs.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_equalities/symbolic_locs.res.oracle b/tests/value/oracle_equalities/symbolic_locs.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..3cc3e4520978ba0731d19692cbeacf90244f8be3 --- /dev/null +++ b/tests/value/oracle_equalities/symbolic_locs.res.oracle @@ -0,0 +1,178 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/symbolic_locs.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + v ∈ [--..--] + t[0..9] ∈ {0} + u[0..9] ∈ [--..--] +[value] computing for function main2_kill_direct <- main. + Called from tests/value/symbolic_locs.i:72. +tests/value/symbolic_locs.i:29:[value] warning: assertion got status unknown. +[value] DUMPING STATE of file tests/value/symbolic_locs.i line 32 + v ∈ [--..--] + t[0..8] ∈ {0; 4} + [9] ∈ {0} + u[0..9] ∈ [--..--] + i ∈ [0..8] + =END OF DUMP== +[value] DUMPING STATE of file tests/value/symbolic_locs.i line 34 + v ∈ [--..--] + t[0..1] ∈ {0; 4} + [2] ∈ {1} + [3..8] ∈ {0; 4} + [9] ∈ {0} + u[0..9] ∈ [--..--] + i ∈ [0..8] + =END OF DUMP== +[value] Recording results for main2_kill_direct +[value] Done for function main2_kill_direct +[value] computing for function main3_kill_indirect <- main. + Called from tests/value/symbolic_locs.i:73. +tests/value/symbolic_locs.i:41:[value] warning: assertion got status unknown. +[value] DUMPING STATE of file tests/value/symbolic_locs.i line 44 + v ∈ [--..--] + t[0..1] ∈ {0; 4} + [2] ∈ {0; 1; 4} + [3..8] ∈ {0; 4} + [9] ∈ {0} + u[0..9] ∈ [--..--] + i ∈ [0..8] + =END OF DUMP== +[value] DUMPING STATE of file tests/value/symbolic_locs.i line 46 + v ∈ [--..--] + t[0..1] ∈ {0; 4} + [2] ∈ {0; 1; 4} + [3..8] ∈ {0; 4} + [9] ∈ {0} + u[0..9] ∈ [--..--] + i ∈ {8} + =END OF DUMP== +[value] Recording results for main3_kill_indirect +[value] Done for function main3_kill_indirect +[value] computing for function main4_scope_right <- main. + Called from tests/value/symbolic_locs.i:74. +tests/value/symbolic_locs.i:51:[value] warning: assertion got status unknown. +[value] DUMPING STATE of file tests/value/symbolic_locs.i line 55 + v ∈ [--..--] + t[0..1] ∈ {{ NULL + {0; 4} ; (int)&x }} + [2] ∈ {{ NULL + {0; 1; 4} ; (int)&x }} + [3..8] ∈ {{ NULL + {0; 4} ; (int)&x }} + [9] ∈ {0} + u[0..9] ∈ [--..--] + i ∈ [0..8] + x ∈ UNINITIALIZED + =END OF DUMP== +tests/value/symbolic_locs.i:55:[value] warning: locals {x} escaping the scope of a block of main4_scope_right through t +[value] DUMPING STATE of file tests/value/symbolic_locs.i line 57 + v ∈ [--..--] + t[0..1] ∈ {0; 4} or ESCAPINGADDR + [2] ∈ {0; 1; 4} or ESCAPINGADDR + [3..8] ∈ {0; 4} or ESCAPINGADDR + [9] ∈ {0} + u[0..9] ∈ [--..--] + i ∈ [0..8] + =END OF DUMP== +[value] Recording results for main4_scope_right +[value] Done for function main4_scope_right +[value] computing for function main5_scope_lv <- main. + Called from tests/value/symbolic_locs.i:75. +tests/value/symbolic_locs.i:63:[value] warning: assertion got status unknown. +[value] DUMPING STATE of file tests/value/symbolic_locs.i line 65 + v ∈ [--..--] + t[0..8] ∈ {0; 1; 4} or ESCAPINGADDR + [9] ∈ {0} + u[0..9] ∈ [--..--] + z ∈ {1} + i ∈ [0..8] + =END OF DUMP== +[value] DUMPING STATE of file tests/value/symbolic_locs.i line 67 + v ∈ [--..--] + t[0..8] ∈ {0; 1; 4} or ESCAPINGADDR + [9] ∈ {0} + u[0..9] ∈ [--..--] + z ∈ {1} + =END OF DUMP== +[value] Recording results for main5_scope_lv +[value] Done for function main5_scope_lv +[value] DUMPING STATE of file tests/value/symbolic_locs.i line 76 + v ∈ [--..--] + t[0..8] ∈ {0; 1; 4} or ESCAPINGADDR + [9] ∈ {0} + u[0..9] ∈ [--..--] + =END OF DUMP== +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main2_kill_direct: + t[0..1] ∈ {0; 4} + [2] ∈ {1} + [3..8] ∈ {0; 4} + [9] ∈ {0} + i ∈ [0..8] +[value:final-states] Values at end of function main3_kill_indirect: + t[0..1] ∈ {0; 4} + [2] ∈ {0; 1; 4} + [3..8] ∈ {0; 4} + [9] ∈ {0} + i ∈ {8} +[value:final-states] Values at end of function main4_scope_right: + t[0..1] ∈ {0; 4} or ESCAPINGADDR + [2] ∈ {0; 1; 4} or ESCAPINGADDR + [3..8] ∈ {0; 4} or ESCAPINGADDR + [9] ∈ {0} + i ∈ [0..8] +[value:final-states] Values at end of function main5_scope_lv: + t[0..8] ∈ {0; 1; 4} or ESCAPINGADDR + [9] ∈ {0} + z ∈ {1} +[value:final-states] Values at end of function main: + t[0..8] ∈ {0; 1; 4} or ESCAPINGADDR + [9] ∈ {0} +[from] Computing for function main2_kill_direct +[from] Computing for function Frama_C_dump_each <-main2_kill_direct +[from] Done for function Frama_C_dump_each +[from] Done for function main2_kill_direct +[from] Computing for function main3_kill_indirect +[from] Done for function main3_kill_indirect +[from] Computing for function main4_scope_right +[from] Done for function main4_scope_right +[from] Computing for function main5_scope_lv +[from] Done for function main5_scope_lv +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main2_kill_direct: + t{[0..1]; [3..8]} FROM v (and SELF) + [2] FROM \nothing +[from] Function main3_kill_indirect: + t[0..8] FROM v (and SELF) +[from] Function main4_scope_right: + t[0..8] FROM v (and SELF) +[from] Function main5_scope_lv: + t[0..8] FROM v (and SELF) +[from] Function main: + t[0..8] FROM v (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main2_kill_direct: + t[0..8]; i +[inout] Inputs for function main2_kill_direct: + v +[inout] Out (internal) for function main3_kill_indirect: + t[0..8]; i +[inout] Inputs for function main3_kill_indirect: + v +[inout] Out (internal) for function main4_scope_right: + t[0..8]; i +[inout] Inputs for function main4_scope_right: + v +[inout] Out (internal) for function main5_scope_lv: + t[0..8]; z; i +[inout] Inputs for function main5_scope_lv: + v +[inout] Out (internal) for function main: + t[0..8] +[inout] Inputs for function main: + v diff --git a/tests/value/oracle_legacy/abstract_struct_1.res.oracle b/tests/value/oracle_legacy/abstract_struct_1.res.oracle index 8f29a3b92ceeb30430f81cdfa738790d43f00b40..da98bb1e90e8be7e5cbdd5c868b851e355ea0f42 100644 --- a/tests/value/oracle_legacy/abstract_struct_1.res.oracle +++ b/tests/value/oracle_legacy/abstract_struct_1.res.oracle @@ -22,7 +22,7 @@ tests/value/abstract_struct_1.c:10:[value] warning: during initialization of var Called from tests/value/abstract_struct_1.c:13. tests/value/abstract_struct_1.c:13:[kernel] warning: No code nor implicit assigns clause for function calloc, generating default assigns from the prototype [value] using specification for function calloc -share/libc/stdlib.h:146:[value] function calloc: precondition got status valid. +share/libc/stdlib.h:159:[value] function calloc: precondition got status valid. [value] Done for function calloc [value] Recording results for main [value] done for function main diff --git a/tests/value/oracle_legacy/empty_struct2.res.oracle b/tests/value/oracle_legacy/empty_struct2.res.oracle index e78a67ac6c367f6087764a48c0065a6e45a34b60..94d86df34e886618549af642f26df72b13d9e765 100644 --- a/tests/value/oracle_legacy/empty_struct2.res.oracle +++ b/tests/value/oracle_legacy/empty_struct2.res.oracle @@ -6,8 +6,8 @@ [value:initial-state] Values of globals at initialization nondet ∈ [--..--] tests/value/empty_struct2.c:40:[value] assertion got status valid. -[value] Called Frama_C_show_each_global_empty({{ }}) -[value] Called Frama_C_show_each_e1({{ }}) +[value] Called Frama_C_show_each_global_empty(∅) +[value] Called Frama_C_show_each_e1(∅) [value] computing for function memcpy <- main. Called from tests/value/empty_struct2.c:44. [value] using specification for function memcpy @@ -21,7 +21,7 @@ tests/value/empty_struct2.c:44:[value] cannot evaluate ACSL term, unsupported AC tests/value/empty_struct2.c:49:[value] cannot evaluate ACSL term, unsupported ACSL construct: logic functions or predicates [value] Done for function memcpy [value] Called Frama_C_show_each_c2([--..--]) -[value] Called Frama_C_show_each_c2_e({{ }}) +[value] Called Frama_C_show_each_c2_e(∅) [value] computing for function f <- main. Called from tests/value/empty_struct2.c:52. tests/value/empty_struct2.c:27:[value] warning: accessing uninitialized left-value. assert \initialized(&s.b); diff --git a/tests/value/oracle_legacy/empty_union.res.oracle b/tests/value/oracle_legacy/empty_union.res.oracle index 1a6bbfe07f3fc493390229b39aabbb0d1d72b078..051dc2721080fffd9ddbfb8c397e48089c2c64e1 100644 --- a/tests/value/oracle_legacy/empty_union.res.oracle +++ b/tests/value/oracle_legacy/empty_union.res.oracle @@ -14,8 +14,8 @@ tests/value/empty_union.c:59:[kernel] imprecise size for variable f1 (Size of ar .data[1..2] ∈ {0} tests/value/empty_union.c:75:[value] assertion got status valid. tests/value/empty_union.c:76:[value] assertion got status valid. -[value] Called Frama_C_show_each_global_empty({{ }}) -[value] Called Frama_C_show_each_e1({{ }}) +[value] Called Frama_C_show_each_global_empty(∅) +[value] Called Frama_C_show_each_e1(∅) [value] computing for function memcpy <- main. Called from tests/value/empty_union.c:80. [value] using specification for function memcpy @@ -29,7 +29,7 @@ tests/value/empty_union.c:80:[value] cannot evaluate ACSL term, unsupported ACSL tests/value/empty_union.c:85:[value] cannot evaluate ACSL term, unsupported ACSL construct: logic functions or predicates [value] Done for function memcpy [value] Called Frama_C_show_each_c2([--..--]) -[value] Called Frama_C_show_each_c2_e({{ }}) +[value] Called Frama_C_show_each_c2_e(∅) [value] computing for function f <- main. Called from tests/value/empty_union.c:88. [value] Recording results for f diff --git a/tests/value/oracle_legacy/fun_ptr.0.err.oracle b/tests/value/oracle_legacy/fun_ptr.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_legacy/fun_ptr.0.res.oracle b/tests/value/oracle_legacy/fun_ptr.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..6fcb32dd419dbe7c6b828f3412fb83eeec6fc9e5 --- /dev/null +++ b/tests/value/oracle_legacy/fun_ptr.0.res.oracle @@ -0,0 +1,201 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/fun_ptr.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + t[0] ∈ {{ (long long)&f }} + [1] ∈ {{ (long long)&g }} + R1 ∈ {0} + R2 ∈ {0} + R3 ∈ {0} + v ∈ [--..--] +[value] computing for function test1 <- main. + Called from tests/value/fun_ptr.i:78. +tests/value/fun_ptr.i:28:[value] warning: Function pointer and pointed function have incompatible types. + assert \valid_function((int (*)(int ))t[nd]); +[value] computing for function f <- test1 <- main. + Called from tests/value/fun_ptr.i:28. +[value] Recording results for f +[value] Done for function f +[value] Recording results for test1 +[value] Done for function test1 +[value] computing for function test2 <- main. + Called from tests/value/fun_ptr.i:79. +tests/value/fun_ptr.i:33:[value] warning: Function pointer and pointed function have incompatible types. + assert \valid_function((int (*)(int , int ))t[nd]); +[value] computing for function f <- test2 <- main. + Called from tests/value/fun_ptr.i:33. +[value] Recording results for f +[value] Done for function f +[value] computing for function g <- test2 <- main. + Called from tests/value/fun_ptr.i:33. +[value] Recording results for g +[value] Done for function g +[value] Recording results for test2 +[value] Done for function test2 +[value] computing for function test3 <- main. + Called from tests/value/fun_ptr.i:80. +tests/value/fun_ptr.i:38:[value] warning: Function pointer and pointed function have completely incompatible types. + assert \valid_function((double (*)(int ))t[nd]); +[value] Recording results for test3 +[value] Done for function test3 +tests/value/fun_ptr.i:83:[value] warning: Function type must match type at call site: assert(function type matches) +tests/value/fun_ptr.i:85:[value] warning: Function type must match type at call site: assert(function type matches) +[value] computing for function h <- main. + Called from tests/value/fun_ptr.i:87. +[value] Recording results for h +[value] Done for function h +[value] computing for function test_benign <- main. + Called from tests/value/fun_ptr.i:89. +tests/value/fun_ptr.i:56:[value] warning: Function pointer and pointed function have incompatible types. + assert \valid_function(p); +[value] computing for function benign <- test_benign <- main. + Called from tests/value/fun_ptr.i:56. +[value] Recording results for benign +[value] Done for function benign +[value] Recording results for test_benign +[value] Done for function test_benign +[value] computing for function test_too_much_benign <- main. + Called from tests/value/fun_ptr.i:90. +tests/value/fun_ptr.i:70:[value] warning: Function pointer and pointed function have incompatible types. + assert \valid_function(p); +[value] computing for function too_much <- test_too_much_benign <- main. + Called from tests/value/fun_ptr.i:70. +[value] Recording results for too_much +[value] Done for function too_much +tests/value/fun_ptr.i:73:[value] warning: Function pointer and pointed function have completely incompatible types. + assert \valid_function(p); +[value] Recording results for test_too_much_benign +[value] Done for function test_too_much_benign +[value] Recording results for main +[value] done for function main +tests/value/fun_ptr.i:38:[value] assertion 'Value,function_pointer' got final status invalid. +tests/value/fun_ptr.i:73:[value] assertion 'Value,function_pointer' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function benign: + q ∈ {{ &x }} + k ∈ {-2147483648} + x ∈ {-2147483648} +[value:final-states] Values at end of function f: + __retres ∈ {4} +[value:final-states] Values at end of function g: + __retres ∈ {7} +[value:final-states] Values at end of function h: + __retres ∈ {3.} +[value:final-states] Values at end of function test1: + R1 ∈ {4} +[value:final-states] Values at end of function test2: + R2 ∈ {4; 7} +[value:final-states] Values at end of function test3: + NON TERMINATING FUNCTION +[value:final-states] Values at end of function test_benign: + x ∈ {-2147483648} + p ∈ {{ (void (*)(long , short *))&benign }} +[value:final-states] Values at end of function too_much: + j ∈ {1} +[value:final-states] Values at end of function test_too_much_benign: + p ∈ {{ (void (*)(int , int ))&too_much }} +[value:final-states] Values at end of function main: + R1 ∈ {4} + R2 ∈ {4; 7} + R3 ∈ {0} + ph ∈ {{ &h }} + __retres ∈ {0} +[from] Computing for function benign +[from] Done for function benign +[from] Computing for function f +[from] Done for function f +[from] Computing for function g +[from] Done for function g +[from] Computing for function h +[from] Done for function h +[from] Computing for function test1 +[from] Done for function test1 +[from] Computing for function test2 +tests/value/fun_ptr.i:33:[from] warning: variadic call detected. Using only 1 argument(s). +[from] Done for function test2 +[from] Computing for function test3 +[from] Non-terminating function test3 (no dependencies) +[from] Done for function test3 +[from] Computing for function test_benign +[from] Done for function test_benign +[from] Computing for function too_much +[from] Done for function too_much +[from] Computing for function test_too_much_benign +tests/value/fun_ptr.i:70:[from] warning: variadic call detected. Using only 1 argument(s). +[from] Done for function test_too_much_benign +[from] Computing for function main +tests/value/fun_ptr.i:85:[from] warning: variadic call detected. Using only 0 argument(s). +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function benign: + x FROM j; p +[from] Function f: + \result FROM x +[from] Function g: + \result FROM x; y +[from] Function h: + \result FROM a; b +[from] Function test1: + R1 FROM t[0..1]; nd +[from] Function test2: + R2 FROM t[0..1]; nd +[from] Function test3: + NON TERMINATING - NO EFFECTS +[from] Function test_benign: + NO EFFECTS +[from] Function too_much: + NO EFFECTS +[from] Function test_too_much_benign: + NO EFFECTS +[from] Function main: + R1 FROM t[0..1]; v + R2 FROM t[0..1]; v + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function benign: + q; k; x +[inout] Inputs for function benign: + \nothing +[inout] Out (internal) for function f: + __retres +[inout] Inputs for function f: + \nothing +[inout] Out (internal) for function g: + __retres +[inout] Inputs for function g: + \nothing +[inout] Out (internal) for function h: + __retres +[inout] Inputs for function h: + \nothing +[inout] Out (internal) for function test1: + R1 +[inout] Inputs for function test1: + t[0..1] +[inout] Out (internal) for function test2: + R2 +[inout] Inputs for function test2: + t[0..1] +[inout] Out (internal) for function test3: + R3 +[inout] Inputs for function test3: + t[0..1] +[inout] Out (internal) for function test_benign: + x; p +[inout] Inputs for function test_benign: + \nothing +[inout] Out (internal) for function too_much: + j +[inout] Inputs for function too_much: + \nothing +[inout] Out (internal) for function test_too_much_benign: + p +[inout] Inputs for function test_too_much_benign: + v +[inout] Out (internal) for function main: + R1; R2; R3; ph; __retres +[inout] Inputs for function main: + t[0..1]; v diff --git a/tests/value/oracle_legacy/fun_ptr.1.err.oracle b/tests/value/oracle_legacy/fun_ptr.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_legacy/fun_ptr.res.oracle b/tests/value/oracle_legacy/fun_ptr.1.res.oracle similarity index 82% rename from tests/value/oracle_legacy/fun_ptr.res.oracle rename to tests/value/oracle_legacy/fun_ptr.1.res.oracle index a79671bbb5699edf53fd72db211c94e75256198b..71ad73950ca3c95491c56d0e37c9d0dda63c6566 100644 --- a/tests/value/oracle_legacy/fun_ptr.res.oracle +++ b/tests/value/oracle_legacy/fun_ptr.1.res.oracle @@ -4,74 +4,74 @@ [value] Computing initial state [value] Initial state computed [value:initial-state] Values of globals at initialization - t[0] ∈ {{ (long)&f }} - [1] ∈ {{ (long)&g }} + t[0] ∈ {{ (__int64)&f }} + [1] ∈ {{ (__int64)&g }} R1 ∈ {0} R2 ∈ {0} R3 ∈ {0} v ∈ [--..--] [value] computing for function test1 <- main. - Called from tests/value/fun_ptr.i:74. -tests/value/fun_ptr.i:24:[value] warning: Function pointer and pointed function have incompatible types. + Called from tests/value/fun_ptr.i:78. +tests/value/fun_ptr.i:28:[value] warning: Function pointer and pointed function have incompatible types. assert \valid_function((int (*)(int ))t[nd]); [value] computing for function f <- test1 <- main. - Called from tests/value/fun_ptr.i:24. + Called from tests/value/fun_ptr.i:28. [value] Recording results for f [value] Done for function f [value] Recording results for test1 [value] Done for function test1 [value] computing for function test2 <- main. - Called from tests/value/fun_ptr.i:75. -tests/value/fun_ptr.i:29:[value] warning: Function pointer and pointed function have incompatible types. + Called from tests/value/fun_ptr.i:79. +tests/value/fun_ptr.i:33:[value] warning: Function pointer and pointed function have incompatible types. assert \valid_function((int (*)(int , int ))t[nd]); [value] computing for function f <- test2 <- main. - Called from tests/value/fun_ptr.i:29. + Called from tests/value/fun_ptr.i:33. [value] Recording results for f [value] Done for function f [value] computing for function g <- test2 <- main. - Called from tests/value/fun_ptr.i:29. + Called from tests/value/fun_ptr.i:33. [value] Recording results for g [value] Done for function g [value] Recording results for test2 [value] Done for function test2 [value] computing for function test3 <- main. - Called from tests/value/fun_ptr.i:76. -tests/value/fun_ptr.i:34:[value] warning: Function pointer and pointed function have completely incompatible types. + Called from tests/value/fun_ptr.i:80. +tests/value/fun_ptr.i:38:[value] warning: Function pointer and pointed function have completely incompatible types. assert \valid_function((double (*)(int ))t[nd]); [value] Recording results for test3 [value] Done for function test3 -tests/value/fun_ptr.i:79:[value] warning: Function type must match type at call site: assert(function type matches) -tests/value/fun_ptr.i:81:[value] warning: Function type must match type at call site: assert(function type matches) +tests/value/fun_ptr.i:83:[value] warning: Function type must match type at call site: assert(function type matches) +tests/value/fun_ptr.i:85:[value] warning: Function type must match type at call site: assert(function type matches) [value] computing for function h <- main. - Called from tests/value/fun_ptr.i:83. + Called from tests/value/fun_ptr.i:87. [value] Recording results for h [value] Done for function h [value] computing for function test_benign <- main. - Called from tests/value/fun_ptr.i:85. -tests/value/fun_ptr.i:52:[value] warning: Function pointer and pointed function have incompatible types. + Called from tests/value/fun_ptr.i:89. +tests/value/fun_ptr.i:56:[value] warning: Function pointer and pointed function have incompatible types. assert \valid_function(p); [value] computing for function benign <- test_benign <- main. - Called from tests/value/fun_ptr.i:52. + Called from tests/value/fun_ptr.i:56. [value] Recording results for benign [value] Done for function benign [value] Recording results for test_benign [value] Done for function test_benign [value] computing for function test_too_much_benign <- main. - Called from tests/value/fun_ptr.i:86. -tests/value/fun_ptr.i:66:[value] warning: Function pointer and pointed function have incompatible types. + Called from tests/value/fun_ptr.i:90. +tests/value/fun_ptr.i:70:[value] warning: Function pointer and pointed function have incompatible types. assert \valid_function(p); [value] computing for function too_much <- test_too_much_benign <- main. - Called from tests/value/fun_ptr.i:66. + Called from tests/value/fun_ptr.i:70. [value] Recording results for too_much [value] Done for function too_much -tests/value/fun_ptr.i:69:[value] warning: Function pointer and pointed function have completely incompatible types. +tests/value/fun_ptr.i:73:[value] warning: Function pointer and pointed function have completely incompatible types. assert \valid_function(p); [value] Recording results for test_too_much_benign [value] Done for function test_too_much_benign [value] Recording results for main [value] done for function main -tests/value/fun_ptr.i:34:[value] assertion 'Value,function_pointer' got final status invalid. -tests/value/fun_ptr.i:69:[value] assertion 'Value,function_pointer' got final status invalid. +tests/value/fun_ptr.i:38:[value] assertion 'Value,function_pointer' got final status invalid. +tests/value/fun_ptr.i:73:[value] assertion 'Value,function_pointer' got final status invalid. [value] ====== VALUES COMPUTED ====== [value:final-states] Values at end of function benign: q ∈ {{ &x }} @@ -113,7 +113,7 @@ tests/value/fun_ptr.i:69:[value] assertion 'Value,function_pointer' got final st [from] Computing for function test1 [from] Done for function test1 [from] Computing for function test2 -tests/value/fun_ptr.i:29:[from] warning: variadic call detected. Using only 1 argument(s). +tests/value/fun_ptr.i:33:[from] warning: variadic call detected. Using only 1 argument(s). [from] Done for function test2 [from] Computing for function test3 [from] Non-terminating function test3 (no dependencies) @@ -123,10 +123,10 @@ tests/value/fun_ptr.i:29:[from] warning: variadic call detected. Using only 1 ar [from] Computing for function too_much [from] Done for function too_much [from] Computing for function test_too_much_benign -tests/value/fun_ptr.i:66:[from] warning: variadic call detected. Using only 1 argument(s). +tests/value/fun_ptr.i:70:[from] warning: variadic call detected. Using only 1 argument(s). [from] Done for function test_too_much_benign [from] Computing for function main -tests/value/fun_ptr.i:81:[from] warning: variadic call detected. Using only 0 argument(s). +tests/value/fun_ptr.i:85:[from] warning: variadic call detected. Using only 0 argument(s). [from] Done for function main [from] ====== DEPENDENCIES COMPUTED ====== These dependencies hold at termination for the executions that terminate: diff --git a/tests/value/oracle_legacy/local.res.oracle b/tests/value/oracle_legacy/local.res.oracle index f66f9d39d6baa99cc4ca01b42d84d58cb0496695..a9c42496641556a5671c8484c82748b1e0d2e765 100644 --- a/tests/value/oracle_legacy/local.res.oracle +++ b/tests/value/oracle_legacy/local.res.oracle @@ -11,13 +11,13 @@ U ∈ {0} V ∈ {0} [value] computing for function f <- main. - Called from tests/value/local.i:26. + Called from tests/value/local.i:33. tests/value/local.i:7:[value] warning: locals {b} escaping the scope of f through \result tests/value/local.i:7:[value] warning: locals {a} escaping the scope of f through X [value] Recording results for f [value] Done for function f [value] computing for function g <- main. - Called from tests/value/local.i:27. + Called from tests/value/local.i:34. [value] computing for function f <- g <- main. Called from tests/value/local.i:13. [value] Recording results for f @@ -26,7 +26,7 @@ tests/value/local.i:15:[value] warning: locals {d} escaping the scope of g throu tests/value/local.i:15:[value] warning: locals {d} escaping the scope of g through U [value] Recording results for g [value] Done for function g -[value] DUMPING STATE of file tests/value/local.i line 28 +[value] DUMPING STATE of file tests/value/local.i line 35 X ∈ ESCAPINGADDR Y ∈ ESCAPINGADDR Z ∈ ESCAPINGADDR @@ -36,9 +36,13 @@ tests/value/local.i:15:[value] warning: locals {d} escaping the scope of g throu e ∈ UNINITIALIZED =END OF DUMP== [value] computing for function h <- main. - Called from tests/value/local.i:29. + Called from tests/value/local.i:36. [value] Recording results for h [value] Done for function h +[value] computing for function i <- main. + Called from tests/value/local.i:37. +[value] Recording results for i +[value] Done for function i [value] Recording results for main [value] done for function main [value] ====== VALUES COMPUTED ====== @@ -52,6 +56,8 @@ tests/value/local.i:15:[value] warning: locals {d} escaping the scope of g throu d ∈ [--..--] [value:final-states] Values at end of function h: __retres ∈ {{ &e + {4} }} +[value:final-states] Values at end of function i: + x ∈ {{ &local }} [value:final-states] Values at end of function main: X ∈ ESCAPINGADDR Y ∈ ESCAPINGADDR @@ -65,6 +71,8 @@ tests/value/local.i:15:[value] warning: locals {d} escaping the scope of g throu [from] Done for function g [from] Computing for function h [from] Done for function h +[from] Computing for function i +[from] Done for function i [from] Computing for function main [from] Computing for function Frama_C_dump_each <-main [from] Done for function Frama_C_dump_each @@ -81,6 +89,8 @@ tests/value/local.i:15:[value] warning: locals {d} escaping the scope of g throu \result FROM \nothing [from] Function h: \result FROM x +[from] Function i: + NO EFFECTS [from] Function main: X FROM \nothing Y FROM \nothing @@ -101,6 +111,10 @@ tests/value/local.i:15:[value] warning: locals {d} escaping the scope of g throu __retres [inout] Inputs for function h: \nothing +[inout] Out (internal) for function i: + x +[inout] Inputs for function i: + \nothing [inout] Out (internal) for function main: X; Y; Z; T; U; V [inout] Inputs for function main: diff --git a/tests/value/oracle_legacy/paths.res.oracle b/tests/value/oracle_legacy/paths.res.oracle deleted file mode 100644 index 4dde11fc17d1b28d1e96ed19f8f105e9ee23fc34..0000000000000000000000000000000000000000 --- a/tests/value/oracle_legacy/paths.res.oracle +++ /dev/null @@ -1,106 +0,0 @@ -[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) -[kernel] Parsing tests/value/paths.i (no preprocessing) -[value] Analyzing a complete application starting at main -[value] Computing initial state -[value] Initial state computed -[value:initial-state] Values of globals at initialization - a ∈ {0} - b ∈ {0} - c ∈ {0} - d ∈ {0} - e ∈ {0} - i ∈ {0} - d1 ∈ {0} - d2 ∈ {0} - d3 ∈ {0} - d4 ∈ {0} - X1 ∈ {0} - X2 ∈ {0} - X3 ∈ {0} - X4 ∈ {0} - X5 ∈ {0} - X ∈ {0} - t[0] ∈ {{ &f1 }} - [1] ∈ {{ &f2 }} - [2] ∈ {{ &f3 }} -[value] computing for function unknownfun <- main. - Called from tests/value/paths.i:38. -[value] using specification for function unknownfun -[value] Done for function unknownfun -tests/value/paths.i:41:[value] warning: signed overflow. assert r+1 ≤ 2147483647; -tests/value/paths.i:44:[value] warning: accessing out of bounds index. assert 0 ≤ w; -tests/value/paths.i:44:[value] warning: accessing out of bounds index. assert w < 3; -[value] computing for function f1 <- main. - Called from tests/value/paths.i:44. -[value] Recording results for f1 -[value] Done for function f1 -[value] computing for function f2 <- main. - Called from tests/value/paths.i:44. -[value] Recording results for f2 -[value] Done for function f2 -[value] computing for function f3 <- main. - Called from tests/value/paths.i:44. -[value] Recording results for f3 -[value] Done for function f3 -[value] computing for function f <- main. - Called from tests/value/paths.i:48. -[value] Recording results for f -[value] Done for function f -[value] Recording results for main -[value] done for function main -[from] Computing for function f -[from] Now calling From callbacks -Computing path dependencies for function f -Path dependencies of f: fy -[from] Done for function f -[from] Computing for function f1 -[from] Now calling From callbacks -Computing path dependencies for function f1 -Path dependencies of f1: d1 -[from] Done for function f1 -[from] Computing for function f2 -[from] Now calling From callbacks -Computing path dependencies for function f2 -Path dependencies of f2: \nothing -[from] Done for function f2 -[from] Computing for function f3 -[from] Now calling From callbacks -Computing path dependencies for function f3 -Path dependencies of f3: \nothing -[from] Done for function f3 -[from] Computing for function main -[from] Computing for function unknownfun <-main -[from] Done for function unknownfun -[from] Now calling From callbacks -Computing path dependencies for function main -Assuming library function unknownfun has no path dependencies -Path dependencies of main: b; X1; X2; X3; X4; t[0..2]; s; u; v; w; x; -y; z; -ww -[from] Done for function main -[from] ====== DEPENDENCIES COMPUTED ====== - These dependencies hold at termination for the executions that terminate: -[from] Function f: - i FROM i; fy (and SELF) - d2 FROM fx - \result FROM d3 -[from] Function f1: - X FROM d1; X1; X4 -[from] Function f2: - X FROM X2 -[from] Function f3: - X FROM X3 -[from] Function unknownfun: - \result FROM x -[from] Function main: - a FROM b; v (and SELF) - c FROM a; b; u - d FROM b; v - i FROM i; s; y; z; ww (and SELF) - d1 FROM x - d2 FROM y - d3 FROM z - d4 FROM ww - X FROM X1; X2; X3; X4; t[0..2]; w; x - \result FROM \nothing -[from] ====== END OF DEPENDENCIES ====== diff --git a/tests/value/oracle_legacy/struct3.res.oracle b/tests/value/oracle_legacy/struct3.res.oracle index 2fc6b4def4fb7fa45f79555bd0fc00cf30c77738..67c893770a50dfadfd6a2381bfb5a82458cc744d 100644 --- a/tests/value/oracle_legacy/struct3.res.oracle +++ b/tests/value/oracle_legacy/struct3.res.oracle @@ -13,17 +13,18 @@ tab_s4[0..1] ∈ {0} s1 ∈ {0} s2 ∈ {0} - s4 ∈ {0} - s5 ∈ {0} - s6 ∈ {0} s8 ∈ {0} s7 ∈ {0} v ∈ [--..--] -tests/value/struct3.i:38:[value] warning: accessing out of bounds index. assert 10 < 10; -tests/value/struct3.i:38:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +tests/value/struct3.i:42:[value] warning: accessing out of bounds index. assert 10 < 10; +tests/value/struct3.i:42:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +tests/value/struct3.i:46:[value] Assigning imprecise value to s2.a. + The imprecision originates from Arithmetic {tests/value/struct3.i:46} [value] Recording results for main [value] done for function main -tests/value/struct3.i:38:[value] assertion 'Value,index_bound' got final status invalid. +[value] warning: Garbled mix generated during analysis: + {{ garbled mix of &{s1} (origin: Arithmetic {tests/value/struct3.i:46}) }} +tests/value/struct3.i:42:[value] assertion 'Value,index_bound' got final status invalid. [value] ====== VALUES COMPUTED ====== [value:final-states] Values at end of function main: s1.a ∈ {2} @@ -34,14 +35,25 @@ tests/value/struct3.i:38:[value] assertion 'Value,index_bound' got final status .b.a ∈ {3} {.b.b; .e[0..9]} ∈ {0} .c ∈ {{ &s1 }} + s2.a ∈ + {{ garbled mix of &{s1} + (origin: Arithmetic {tests/value/struct3.i:46}) }} + .d[0] ∈ {1} + .d[1..2] ∈ {2} + .d[3..7] ∈ {0} + .d[8..9] ∈ {2} + .b.a ∈ {3} + {.b.b; .e[0..9]} ∈ {0} + .c ∈ {{ &s1 }} [from] Computing for function main [from] Done for function main [from] ====== DEPENDENCIES COMPUTED ====== These dependencies hold at termination for the executions that terminate: [from] Function main: s1{{.a; .d[0..2]}; {.d[8..9]; .b.a}; .c} FROM \nothing + s2 FROM s1{.d[3..7]; {.b.b; .e[0..9]}} [from] ====== END OF DEPENDENCIES ====== [inout] Out (internal) for function main: - s1{{.a; .d[0..2]}; {.d[8..9]; .b.a}; .c} + s1{{.a; .d[0..2]}; {.d[8..9]; .b.a}; .c}; s2 [inout] Inputs for function main: - v + s1; s2.c; v diff --git a/tests/value/oracle_legacy/symbolic_locs.err.oracle b/tests/value/oracle_legacy/symbolic_locs.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_legacy/symbolic_locs.res.oracle b/tests/value/oracle_legacy/symbolic_locs.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..3cc3e4520978ba0731d19692cbeacf90244f8be3 --- /dev/null +++ b/tests/value/oracle_legacy/symbolic_locs.res.oracle @@ -0,0 +1,178 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/symbolic_locs.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + v ∈ [--..--] + t[0..9] ∈ {0} + u[0..9] ∈ [--..--] +[value] computing for function main2_kill_direct <- main. + Called from tests/value/symbolic_locs.i:72. +tests/value/symbolic_locs.i:29:[value] warning: assertion got status unknown. +[value] DUMPING STATE of file tests/value/symbolic_locs.i line 32 + v ∈ [--..--] + t[0..8] ∈ {0; 4} + [9] ∈ {0} + u[0..9] ∈ [--..--] + i ∈ [0..8] + =END OF DUMP== +[value] DUMPING STATE of file tests/value/symbolic_locs.i line 34 + v ∈ [--..--] + t[0..1] ∈ {0; 4} + [2] ∈ {1} + [3..8] ∈ {0; 4} + [9] ∈ {0} + u[0..9] ∈ [--..--] + i ∈ [0..8] + =END OF DUMP== +[value] Recording results for main2_kill_direct +[value] Done for function main2_kill_direct +[value] computing for function main3_kill_indirect <- main. + Called from tests/value/symbolic_locs.i:73. +tests/value/symbolic_locs.i:41:[value] warning: assertion got status unknown. +[value] DUMPING STATE of file tests/value/symbolic_locs.i line 44 + v ∈ [--..--] + t[0..1] ∈ {0; 4} + [2] ∈ {0; 1; 4} + [3..8] ∈ {0; 4} + [9] ∈ {0} + u[0..9] ∈ [--..--] + i ∈ [0..8] + =END OF DUMP== +[value] DUMPING STATE of file tests/value/symbolic_locs.i line 46 + v ∈ [--..--] + t[0..1] ∈ {0; 4} + [2] ∈ {0; 1; 4} + [3..8] ∈ {0; 4} + [9] ∈ {0} + u[0..9] ∈ [--..--] + i ∈ {8} + =END OF DUMP== +[value] Recording results for main3_kill_indirect +[value] Done for function main3_kill_indirect +[value] computing for function main4_scope_right <- main. + Called from tests/value/symbolic_locs.i:74. +tests/value/symbolic_locs.i:51:[value] warning: assertion got status unknown. +[value] DUMPING STATE of file tests/value/symbolic_locs.i line 55 + v ∈ [--..--] + t[0..1] ∈ {{ NULL + {0; 4} ; (int)&x }} + [2] ∈ {{ NULL + {0; 1; 4} ; (int)&x }} + [3..8] ∈ {{ NULL + {0; 4} ; (int)&x }} + [9] ∈ {0} + u[0..9] ∈ [--..--] + i ∈ [0..8] + x ∈ UNINITIALIZED + =END OF DUMP== +tests/value/symbolic_locs.i:55:[value] warning: locals {x} escaping the scope of a block of main4_scope_right through t +[value] DUMPING STATE of file tests/value/symbolic_locs.i line 57 + v ∈ [--..--] + t[0..1] ∈ {0; 4} or ESCAPINGADDR + [2] ∈ {0; 1; 4} or ESCAPINGADDR + [3..8] ∈ {0; 4} or ESCAPINGADDR + [9] ∈ {0} + u[0..9] ∈ [--..--] + i ∈ [0..8] + =END OF DUMP== +[value] Recording results for main4_scope_right +[value] Done for function main4_scope_right +[value] computing for function main5_scope_lv <- main. + Called from tests/value/symbolic_locs.i:75. +tests/value/symbolic_locs.i:63:[value] warning: assertion got status unknown. +[value] DUMPING STATE of file tests/value/symbolic_locs.i line 65 + v ∈ [--..--] + t[0..8] ∈ {0; 1; 4} or ESCAPINGADDR + [9] ∈ {0} + u[0..9] ∈ [--..--] + z ∈ {1} + i ∈ [0..8] + =END OF DUMP== +[value] DUMPING STATE of file tests/value/symbolic_locs.i line 67 + v ∈ [--..--] + t[0..8] ∈ {0; 1; 4} or ESCAPINGADDR + [9] ∈ {0} + u[0..9] ∈ [--..--] + z ∈ {1} + =END OF DUMP== +[value] Recording results for main5_scope_lv +[value] Done for function main5_scope_lv +[value] DUMPING STATE of file tests/value/symbolic_locs.i line 76 + v ∈ [--..--] + t[0..8] ∈ {0; 1; 4} or ESCAPINGADDR + [9] ∈ {0} + u[0..9] ∈ [--..--] + =END OF DUMP== +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main2_kill_direct: + t[0..1] ∈ {0; 4} + [2] ∈ {1} + [3..8] ∈ {0; 4} + [9] ∈ {0} + i ∈ [0..8] +[value:final-states] Values at end of function main3_kill_indirect: + t[0..1] ∈ {0; 4} + [2] ∈ {0; 1; 4} + [3..8] ∈ {0; 4} + [9] ∈ {0} + i ∈ {8} +[value:final-states] Values at end of function main4_scope_right: + t[0..1] ∈ {0; 4} or ESCAPINGADDR + [2] ∈ {0; 1; 4} or ESCAPINGADDR + [3..8] ∈ {0; 4} or ESCAPINGADDR + [9] ∈ {0} + i ∈ [0..8] +[value:final-states] Values at end of function main5_scope_lv: + t[0..8] ∈ {0; 1; 4} or ESCAPINGADDR + [9] ∈ {0} + z ∈ {1} +[value:final-states] Values at end of function main: + t[0..8] ∈ {0; 1; 4} or ESCAPINGADDR + [9] ∈ {0} +[from] Computing for function main2_kill_direct +[from] Computing for function Frama_C_dump_each <-main2_kill_direct +[from] Done for function Frama_C_dump_each +[from] Done for function main2_kill_direct +[from] Computing for function main3_kill_indirect +[from] Done for function main3_kill_indirect +[from] Computing for function main4_scope_right +[from] Done for function main4_scope_right +[from] Computing for function main5_scope_lv +[from] Done for function main5_scope_lv +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main2_kill_direct: + t{[0..1]; [3..8]} FROM v (and SELF) + [2] FROM \nothing +[from] Function main3_kill_indirect: + t[0..8] FROM v (and SELF) +[from] Function main4_scope_right: + t[0..8] FROM v (and SELF) +[from] Function main5_scope_lv: + t[0..8] FROM v (and SELF) +[from] Function main: + t[0..8] FROM v (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main2_kill_direct: + t[0..8]; i +[inout] Inputs for function main2_kill_direct: + v +[inout] Out (internal) for function main3_kill_indirect: + t[0..8]; i +[inout] Inputs for function main3_kill_indirect: + v +[inout] Out (internal) for function main4_scope_right: + t[0..8]; i +[inout] Inputs for function main4_scope_right: + v +[inout] Out (internal) for function main5_scope_lv: + t[0..8]; z; i +[inout] Inputs for function main5_scope_lv: + v +[inout] Out (internal) for function main: + t[0..8] +[inout] Inputs for function main: + v diff --git a/tests/value/oracle_symblocs/CruiseControl.0.err.oracle b/tests/value/oracle_symblocs/CruiseControl.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/CruiseControl.0.res.oracle b/tests/value/oracle_symblocs/CruiseControl.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..9080de883ed08dc611de09d2aea119662494f728 --- /dev/null +++ b/tests/value/oracle_symblocs/CruiseControl.0.res.oracle @@ -0,0 +1,3351 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/CruiseControl.c (with preprocessing) +tests/value/CruiseControl.c:577:[kernel] warning: Floating-point constant 8.113 is not represented exactly. Will use 0x1.039db22d0e560p3. See documentation for option -warn-decimal-float +[kernel] Parsing tests/value/CruiseControl_const.c (with preprocessing) +[value] Analyzing an incomplete application starting at CruiseControl +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + ZeroSpeed ∈ {0} + SpeedInc ∈ {2.0000000000000000} + SpeedMax ∈ {150.0000000000000000} + SpeedMin ∈ {30.0000000000000000} + ZeroPercent ∈ {0} + Kp ∈ {8.1129999160766601} + Ki ∈ {1.0000000000000000*2^-1} + RegThrottleMax ∈ {45.0000000000000000} +[value] computing for function DetectPedalsPressed <- CruiseControl. + Called from tests/value/CruiseControl.c:462. +[value] Recording results for DetectPedalsPressed +[value] Done for function DetectPedalsPressed +[value] computing for function DetectSpeedLimits <- CruiseControl. + Called from tests/value/CruiseControl.c:473. +[value] Recording results for DetectSpeedLimits +[value] Done for function DetectSpeedLimits +[value] computing for function CruiseStateMgt <- CruiseControl. + Called from tests/value/CruiseControl.c:486. +[value] Recording results for CruiseStateMgt +[value] Done for function CruiseStateMgt +[value] computing for function CruiseSpeedMgt <- CruiseControl. + Called from tests/value/CruiseControl.c:508. +[value] Recording results for CruiseSpeedMgt +[value] Done for function CruiseSpeedMgt +[value] computing for function ThrottleCmd <- CruiseControl. + Called from tests/value/CruiseControl.c:525. +[value] computing for function ThrottleRegulation <- ThrottleCmd <- CruiseControl. + Called from tests/value/CruiseControl.c:242. +tests/value/CruiseControl.c:172:[value] warning: non-finite float value. + assert \is_finite((float)(_C_->_L1_CruiseControl-_C_->_L2_CruiseControl)); +tests/value/CruiseControl.c:175:[value] warning: non-finite float value. + assert \is_finite((float)(_C_->_L3_CruiseControl*_C_->_L6_CruiseControl)); +tests/value/CruiseControl.c:194:[value] warning: non-finite float value. + assert \is_finite((float)(_C_->_L16_CruiseControl+_C_->_L18_CruiseControl)); +tests/value/CruiseControl.c:199:[value] warning: non-finite float value. + assert \is_finite((float)(_C_->ProportionnalAction+_C_->IntegralAction)); +[value] computing for function SaturateThrottle <- ThrottleRegulation <- + ThrottleCmd <- CruiseControl. + Called from tests/value/CruiseControl.c:202. +tests/value/CruiseControl.c:162:[value] warning: assertion got status unknown. +[value] Recording results for SaturateThrottle +[value] Done for function SaturateThrottle +[value] Recording results for ThrottleRegulation +[value] Done for function ThrottleRegulation +[value] Recording results for ThrottleCmd +[value] Done for function ThrottleCmd +[value] Recording results for CruiseControl +[value] done for function CruiseControl +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function CruiseSpeedMgt: + __retres ∈ {1} + S__C_[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel} ∈ + [--..--] + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed; ._O0_Cruise_speed; ._O1_Throttle_cmd} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]{._O2_Regul_ON; ._O3_Regul_OFF; ._O4_Regul_STDBY; ._L73_CruiseControl} ∈ + [--..--] + [0]{._L59_CruiseControl; ._L62_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]{.BrakePressed; .AcceleratorPressed} ∈ {0; 1} + [0]{._L61_CruiseControl; ._L60_CruiseControl; ._L58_CruiseControl} ∈ + [--..--] + [0]._L95_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]{.SpeedOutOffLimits; ._L82_CruiseControl} ∈ {0; 1} + [0]{._L83_CruiseControl; ._L84_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [0]._L96_CruiseControl ∈ {0} + [0]{._L38_CruiseControl; ._L39_CruiseControl; ._L40_CruiseControl} ∈ + [--..--] + [0]{._L23_CruiseControl; .CruiseSpeed; ._L26_CruiseControl; ._L22_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]{._M_init_CruiseControl; ._C0_CruiseSpeedMgt{._I0_On; ._I1_Set; ._I2_QuickAccel; ._I3_QuickDecel}} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._I4_Speed; ._O0_CruiseSpeed; ._L1_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C0_CruiseSpeedMgt{._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt._L21_CruiseControl ∈ {0} + [0]._C0_CruiseSpeedMgt._L10_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C0_CruiseSpeedMgt._L12_CruiseControl ∈ {2.0000000000000000} + [0]._C0_CruiseSpeedMgt._L13_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C0_CruiseSpeedMgt._L15_CruiseControl ∈ {150.0000000000000000} + [0]._C0_CruiseSpeedMgt._L16_CruiseControl ∈ {0; 1} + [0]._C0_CruiseSpeedMgt._L4_CruiseControl ∈ [--..--] + [0]._C0_CruiseSpeedMgt._L17_CruiseControl ∈ {0; 1} + [0]._C0_CruiseSpeedMgt._L11_CruiseControl ∈ {2.0000000000000000} + [0]._C0_CruiseSpeedMgt._L14_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C0_CruiseSpeedMgt._L19_CruiseControl ∈ {30.0000000000000000} + [0]._C0_CruiseSpeedMgt._L18_CruiseControl ∈ {0; 1} + [0]._C0_CruiseSpeedMgt._L5_CruiseControl ∈ [--..--] + [0]._C0_CruiseSpeedMgt._L20_CruiseControl ∈ {0; 1} + [0]._C0_CruiseSpeedMgt{._L9_CruiseControl; ._L8_CruiseControl; ._L7_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C0_CruiseSpeedMgt._M_init_0_CruiseControl ∈ {0} + [0]._C1_DetectPedalsPressed{._I0_Brake; ._I1_Accelerator} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C1_DetectPedalsPressed{._O0_BrakePressed; ._O1_AcceleratorPressed} ∈ + {0; 1} + [0]._C1_DetectPedalsPressed._L2_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C1_DetectPedalsPressed._L8_CruiseControl ∈ {0} + [0]._C1_DetectPedalsPressed._L4_CruiseControl ∈ {0; 1} + [0]._C1_DetectPedalsPressed._L1_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C1_DetectPedalsPressed._L7_CruiseControl ∈ {0} + [0]._C1_DetectPedalsPressed._L3_CruiseControl ∈ {0; 1} + [0]._C2_DetectSpeedLimits._I0_speed ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C2_DetectSpeedLimits._O0_SpeedOutOffLimits ∈ {0; 1} + [0]._C2_DetectSpeedLimits._L7_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C2_DetectSpeedLimits._L13_CruiseControl ∈ {30.0000000000000000} + [0]._C2_DetectSpeedLimits._L8_CruiseControl ∈ {0; 1} + [0]._C2_DetectSpeedLimits._L14_CruiseControl ∈ + {150.0000000000000000} + [0]{._C2_DetectSpeedLimits{._L9_CruiseControl; ._L17_CruiseControl}; ._C3_CruiseStateMgt{._I0_BrakePressed; ._I1_AcceleratorPressed}} ∈ + {0; 1} + [0]._C3_CruiseStateMgt{._I2_Resume; ._I3_On; ._I4_Off} ∈ [--..--] + [0]._C3_CruiseStateMgt{._I5_SpeedOutOffLimits; ._O0_Regul_ON} ∈ + {0; 1} + [0]._C3_CruiseStateMgt{._O1_Regul_OFF; ._O2_Regul_STDBY; ._LE24_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt._LE0_CruiseControl ∈ {0; 1} + [0]._C3_CruiseStateMgt{._LE4_CruiseControl; ._LE40_CruiseControl; ._LE26_CruiseControl; ._LE28_CruiseControl; ._LE9_CruiseControl; ._LE10_CruiseControl; ._LE11_CruiseControl; ._LE33_CruiseControl; ._LE35_CruiseControl; ._LE38_CruiseControl; ._LE12_CruiseControl; ._LE13_CruiseControl; ._LE14_CruiseControl; ._LE17_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt._LE18_CruiseControl ∈ {0; 1} + [0]._C3_CruiseStateMgt{._LE3_CruiseControl; ._LE16_CruiseControl; ._LE41_CruiseControl; ._LE19_CruiseControl; ._LE20_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt{._LE21_CruiseControl; ._LE1_CruiseControl; ._LE5_CruiseControl; ._LE22_CruiseControl; ._LE23_CruiseControl; ._LE25_CruiseControl} ∈ + {0; 1} + [0]._C3_CruiseStateMgt{._LE29_CruiseControl; ._LE2_CruiseControl; ._LE30_CruiseControl; ._LE31_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl; ._LE42_CruiseControl; ._LE6_CruiseControl} ∈ + {0; 1} + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl; ._LE43_CruiseControl; ._LE7_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt._LE27_CruiseControl ∈ {0; 1} + [0]._C3_CruiseStateMgt._LE36_CruiseControl ∈ [--..--] + [0]._C3_CruiseStateMgt._LE37_CruiseControl ∈ {0; 1} + [0]._C3_CruiseStateMgt{._LE44_CruiseControl; ._LE8_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl ∈ {0} + [0]{._M_condact_0_CruiseControl; ._C4_ThrottleCmd._I0_Regul_ON} ∈ + [--..--] + [0]._C4_ThrottleCmd{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._I3_Accelerator; ._O0_Throttle} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd{._L21_CruiseControl; ._L20_CruiseControl; ._L22_CruiseControl; .ONRisingEdge} ∈ + [--..--] + [0]._C4_ThrottleCmd{._L26_CruiseControl; ._L1_CruiseControl; ._L2_CruiseControl; ._L19_CruiseControl; ._L25_CruiseControl; ._L24_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd{._M_init_0_CruiseControl; ._C0_ThrottleRegulation._I0_Reset} ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._O0_Throttle; ._L1_CruiseControl; ._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl; .ProportionnalAction; ._L22_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation.HoldIntegralAction ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L16_CruiseControl; ._L23_CruiseControl; ._L18_CruiseControl; ._L10_CruiseControl; ._L8_CruiseControl; .IntegralAction; ._L4_CruiseControl; ._L13_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L14_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L21_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._M_init_0_CruiseControl ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._I0_ThrottleIn; ._O0_ThrottleOut} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._O1_Saturate ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L18_CruiseControl; ._L12_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L7_CruiseControl ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L17_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L9_CruiseControl ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L6_CruiseControl; ._L8_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + {[0]._C4_ThrottleCmd{._C0_ThrottleRegulation._C0_SaturateThrottle._L13_CruiseControl; ._M_condact_2_CruiseControl}; [1]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel}} ∈ + [--..--] + [1]{._I6_Accel; ._I7_Brake; ._I8_Speed; ._O0_Cruise_speed; ._O1_Throttle_cmd} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]{._O2_Regul_ON; ._O3_Regul_OFF; ._O4_Regul_STDBY; ._L73_CruiseControl} ∈ + [--..--] + [1]{._L59_CruiseControl; ._L62_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]{.BrakePressed; .AcceleratorPressed; ._L61_CruiseControl; ._L60_CruiseControl; ._L58_CruiseControl} ∈ + [--..--] + [1]._L95_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]{.SpeedOutOffLimits; ._L82_CruiseControl; ._L83_CruiseControl; ._L84_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [1]._L96_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]{._L38_CruiseControl; ._L39_CruiseControl; ._L40_CruiseControl} ∈ + [--..--] + [1]{._L23_CruiseControl; .CruiseSpeed; ._L26_CruiseControl; ._L22_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]{._M_init_CruiseControl; ._C0_CruiseSpeedMgt{._I0_On; ._I1_Set; ._I2_QuickAccel; ._I3_QuickDecel}} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._I4_Speed; ._O0_CruiseSpeed; ._L1_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C0_CruiseSpeedMgt{._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._L21_CruiseControl; ._L10_CruiseControl; ._L12_CruiseControl; ._L13_CruiseControl; ._L15_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C0_CruiseSpeedMgt{._L16_CruiseControl; ._L4_CruiseControl; ._L17_CruiseControl} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._L11_CruiseControl; ._L14_CruiseControl; ._L19_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C0_CruiseSpeedMgt{._L18_CruiseControl; ._L5_CruiseControl; ._L20_CruiseControl} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._L9_CruiseControl; ._L8_CruiseControl; ._L7_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C0_CruiseSpeedMgt._M_init_0_CruiseControl ∈ [--..--] + [1]._C1_DetectPedalsPressed{._I0_Brake; ._I1_Accelerator} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C1_DetectPedalsPressed{._O0_BrakePressed; ._O1_AcceleratorPressed} ∈ + [--..--] + [1]._C1_DetectPedalsPressed{._L2_CruiseControl; ._L8_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C1_DetectPedalsPressed._L4_CruiseControl ∈ [--..--] + [1]._C1_DetectPedalsPressed{._L1_CruiseControl; ._L7_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C1_DetectPedalsPressed._L3_CruiseControl ∈ [--..--] + [1]._C2_DetectSpeedLimits._I0_speed ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C2_DetectSpeedLimits._O0_SpeedOutOffLimits ∈ [--..--] + [1]._C2_DetectSpeedLimits{._L7_CruiseControl; ._L13_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C2_DetectSpeedLimits._L8_CruiseControl ∈ [--..--] + [1]._C2_DetectSpeedLimits._L14_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]{._C2_DetectSpeedLimits{._L9_CruiseControl; ._L17_CruiseControl}; ._C3_CruiseStateMgt; ._M_condact_0_CruiseControl; ._C4_ThrottleCmd._I0_Regul_ON} ∈ + [--..--] + [1]._C4_ThrottleCmd{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._I3_Accelerator; ._O0_Throttle} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd{._L21_CruiseControl; ._L20_CruiseControl; ._L22_CruiseControl; .ONRisingEdge} ∈ + [--..--] + [1]._C4_ThrottleCmd{._L26_CruiseControl; ._L1_CruiseControl; ._L2_CruiseControl; ._L19_CruiseControl; ._L25_CruiseControl; ._L24_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd{._M_init_0_CruiseControl; ._C0_ThrottleRegulation._I0_Reset} ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._O0_Throttle; ._L1_CruiseControl; ._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl; .ProportionnalAction; ._L22_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation.HoldIntegralAction ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation{._L16_CruiseControl; ._L23_CruiseControl; ._L18_CruiseControl; ._L10_CruiseControl; ._L8_CruiseControl; .IntegralAction; ._L4_CruiseControl; ._L13_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation{._L14_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._L21_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._M_init_0_CruiseControl ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._I0_ThrottleIn; ._O0_ThrottleOut} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._O1_Saturate ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L18_CruiseControl; ._L12_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L7_CruiseControl ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L17_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L9_CruiseControl ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L6_CruiseControl; ._L8_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd{._C0_ThrottleRegulation._C0_SaturateThrottle._L13_CruiseControl; ._M_condact_2_CruiseControl} ∈ + [--..--] +[value:final-states] Values at end of function CruiseStateMgt: + __retres ∈ {1} + S__C_[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel} ∈ + [--..--] + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed; ._O0_Cruise_speed; ._O1_Throttle_cmd} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]{._O2_Regul_ON; ._O3_Regul_OFF; ._O4_Regul_STDBY; ._L73_CruiseControl} ∈ + [--..--] + [0]{._L59_CruiseControl; ._L62_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]{.BrakePressed; .AcceleratorPressed} ∈ {0; 1} + [0]{._L61_CruiseControl; ._L60_CruiseControl; ._L58_CruiseControl} ∈ + [--..--] + [0]._L95_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0].SpeedOutOffLimits ∈ {0; 1} + [0]{._L82_CruiseControl; ._L83_CruiseControl; ._L84_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [0]._L96_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]{._L38_CruiseControl; ._L39_CruiseControl; ._L40_CruiseControl} ∈ + [--..--] + [0]{._L23_CruiseControl; .CruiseSpeed; ._L26_CruiseControl; ._L22_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]{._M_init_CruiseControl; ._C0_CruiseSpeedMgt{._I0_On; ._I1_Set; ._I2_QuickAccel; ._I3_QuickDecel}} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._I4_Speed; ._O0_CruiseSpeed; ._L1_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C0_CruiseSpeedMgt{._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._L21_CruiseControl; ._L10_CruiseControl; ._L12_CruiseControl; ._L13_CruiseControl; ._L15_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C0_CruiseSpeedMgt{._L16_CruiseControl; ._L4_CruiseControl; ._L17_CruiseControl} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._L11_CruiseControl; ._L14_CruiseControl; ._L19_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C0_CruiseSpeedMgt{._L18_CruiseControl; ._L5_CruiseControl; ._L20_CruiseControl} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._L9_CruiseControl; ._L8_CruiseControl; ._L7_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C0_CruiseSpeedMgt._M_init_0_CruiseControl ∈ [--..--] + [0]._C1_DetectPedalsPressed{._I0_Brake; ._I1_Accelerator} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C1_DetectPedalsPressed{._O0_BrakePressed; ._O1_AcceleratorPressed} ∈ + {0; 1} + [0]._C1_DetectPedalsPressed._L2_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C1_DetectPedalsPressed._L8_CruiseControl ∈ {0} + [0]._C1_DetectPedalsPressed._L4_CruiseControl ∈ {0; 1} + [0]._C1_DetectPedalsPressed._L1_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C1_DetectPedalsPressed._L7_CruiseControl ∈ {0} + [0]._C1_DetectPedalsPressed._L3_CruiseControl ∈ {0; 1} + [0]._C2_DetectSpeedLimits._I0_speed ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C2_DetectSpeedLimits._O0_SpeedOutOffLimits ∈ {0; 1} + [0]._C2_DetectSpeedLimits._L7_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C2_DetectSpeedLimits._L13_CruiseControl ∈ {30.0000000000000000} + [0]._C2_DetectSpeedLimits._L8_CruiseControl ∈ {0; 1} + [0]._C2_DetectSpeedLimits._L14_CruiseControl ∈ + {150.0000000000000000} + [0]{._C2_DetectSpeedLimits{._L9_CruiseControl; ._L17_CruiseControl}; ._C3_CruiseStateMgt{._I0_BrakePressed; ._I1_AcceleratorPressed}} ∈ + {0; 1} + [0]._C3_CruiseStateMgt{._I2_Resume; ._I3_On; ._I4_Off} ∈ [--..--] + [0]._C3_CruiseStateMgt{._I5_SpeedOutOffLimits; ._O0_Regul_ON} ∈ + {0; 1} + [0]._C3_CruiseStateMgt{._O1_Regul_OFF; ._O2_Regul_STDBY; ._LE24_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt._LE0_CruiseControl ∈ {0; 1} + [0]._C3_CruiseStateMgt{._LE4_CruiseControl; ._LE40_CruiseControl; ._LE26_CruiseControl; ._LE28_CruiseControl; ._LE9_CruiseControl; ._LE10_CruiseControl; ._LE11_CruiseControl; ._LE33_CruiseControl; ._LE35_CruiseControl; ._LE38_CruiseControl; ._LE12_CruiseControl; ._LE13_CruiseControl; ._LE14_CruiseControl; ._LE17_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt._LE18_CruiseControl ∈ {0; 1} + [0]._C3_CruiseStateMgt{._LE3_CruiseControl; ._LE16_CruiseControl; ._LE41_CruiseControl; ._LE19_CruiseControl; ._LE20_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt{._LE21_CruiseControl; ._LE1_CruiseControl; ._LE5_CruiseControl; ._LE22_CruiseControl; ._LE23_CruiseControl; ._LE25_CruiseControl} ∈ + {0; 1} + [0]._C3_CruiseStateMgt{._LE29_CruiseControl; ._LE2_CruiseControl; ._LE30_CruiseControl; ._LE31_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl; ._LE42_CruiseControl; ._LE6_CruiseControl} ∈ + {0; 1} + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl; ._LE43_CruiseControl; ._LE7_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt._LE27_CruiseControl ∈ {0; 1} + [0]._C3_CruiseStateMgt._LE36_CruiseControl ∈ [--..--] + [0]._C3_CruiseStateMgt._LE37_CruiseControl ∈ {0; 1} + [0]._C3_CruiseStateMgt{._LE44_CruiseControl; ._LE8_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl ∈ {0} + [0]{._M_condact_0_CruiseControl; ._C4_ThrottleCmd._I0_Regul_ON} ∈ + [--..--] + [0]._C4_ThrottleCmd{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._I3_Accelerator; ._O0_Throttle} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd{._L21_CruiseControl; ._L20_CruiseControl; ._L22_CruiseControl; .ONRisingEdge} ∈ + [--..--] + [0]._C4_ThrottleCmd{._L26_CruiseControl; ._L1_CruiseControl; ._L2_CruiseControl; ._L19_CruiseControl; ._L25_CruiseControl; ._L24_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd{._M_init_0_CruiseControl; ._C0_ThrottleRegulation._I0_Reset} ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._O0_Throttle; ._L1_CruiseControl; ._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl; .ProportionnalAction; ._L22_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation.HoldIntegralAction ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L16_CruiseControl; ._L23_CruiseControl; ._L18_CruiseControl; ._L10_CruiseControl; ._L8_CruiseControl; .IntegralAction; ._L4_CruiseControl; ._L13_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L14_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L21_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._M_init_0_CruiseControl ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._I0_ThrottleIn; ._O0_ThrottleOut} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._O1_Saturate ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L18_CruiseControl; ._L12_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L7_CruiseControl ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L17_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L9_CruiseControl ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L6_CruiseControl; ._L8_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + {[0]._C4_ThrottleCmd{._C0_ThrottleRegulation._C0_SaturateThrottle._L13_CruiseControl; ._M_condact_2_CruiseControl}; [1]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel}} ∈ + [--..--] + [1]{._I6_Accel; ._I7_Brake; ._I8_Speed; ._O0_Cruise_speed; ._O1_Throttle_cmd} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]{._O2_Regul_ON; ._O3_Regul_OFF; ._O4_Regul_STDBY; ._L73_CruiseControl} ∈ + [--..--] + [1]{._L59_CruiseControl; ._L62_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]{.BrakePressed; .AcceleratorPressed; ._L61_CruiseControl; ._L60_CruiseControl; ._L58_CruiseControl} ∈ + [--..--] + [1]._L95_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]{.SpeedOutOffLimits; ._L82_CruiseControl; ._L83_CruiseControl; ._L84_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [1]._L96_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]{._L38_CruiseControl; ._L39_CruiseControl; ._L40_CruiseControl} ∈ + [--..--] + [1]{._L23_CruiseControl; .CruiseSpeed; ._L26_CruiseControl; ._L22_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]{._M_init_CruiseControl; ._C0_CruiseSpeedMgt{._I0_On; ._I1_Set; ._I2_QuickAccel; ._I3_QuickDecel}} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._I4_Speed; ._O0_CruiseSpeed; ._L1_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C0_CruiseSpeedMgt{._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._L21_CruiseControl; ._L10_CruiseControl; ._L12_CruiseControl; ._L13_CruiseControl; ._L15_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C0_CruiseSpeedMgt{._L16_CruiseControl; ._L4_CruiseControl; ._L17_CruiseControl} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._L11_CruiseControl; ._L14_CruiseControl; ._L19_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C0_CruiseSpeedMgt{._L18_CruiseControl; ._L5_CruiseControl; ._L20_CruiseControl} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._L9_CruiseControl; ._L8_CruiseControl; ._L7_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C0_CruiseSpeedMgt._M_init_0_CruiseControl ∈ [--..--] + [1]._C1_DetectPedalsPressed{._I0_Brake; ._I1_Accelerator} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C1_DetectPedalsPressed{._O0_BrakePressed; ._O1_AcceleratorPressed} ∈ + [--..--] + [1]._C1_DetectPedalsPressed{._L2_CruiseControl; ._L8_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C1_DetectPedalsPressed._L4_CruiseControl ∈ [--..--] + [1]._C1_DetectPedalsPressed{._L1_CruiseControl; ._L7_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C1_DetectPedalsPressed._L3_CruiseControl ∈ [--..--] + [1]._C2_DetectSpeedLimits._I0_speed ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C2_DetectSpeedLimits._O0_SpeedOutOffLimits ∈ [--..--] + [1]._C2_DetectSpeedLimits{._L7_CruiseControl; ._L13_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C2_DetectSpeedLimits._L8_CruiseControl ∈ [--..--] + [1]._C2_DetectSpeedLimits._L14_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]{._C2_DetectSpeedLimits{._L9_CruiseControl; ._L17_CruiseControl}; ._C3_CruiseStateMgt; ._M_condact_0_CruiseControl; ._C4_ThrottleCmd._I0_Regul_ON} ∈ + [--..--] + [1]._C4_ThrottleCmd{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._I3_Accelerator; ._O0_Throttle} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd{._L21_CruiseControl; ._L20_CruiseControl; ._L22_CruiseControl; .ONRisingEdge} ∈ + [--..--] + [1]._C4_ThrottleCmd{._L26_CruiseControl; ._L1_CruiseControl; ._L2_CruiseControl; ._L19_CruiseControl; ._L25_CruiseControl; ._L24_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd{._M_init_0_CruiseControl; ._C0_ThrottleRegulation._I0_Reset} ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._O0_Throttle; ._L1_CruiseControl; ._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl; .ProportionnalAction; ._L22_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation.HoldIntegralAction ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation{._L16_CruiseControl; ._L23_CruiseControl; ._L18_CruiseControl; ._L10_CruiseControl; ._L8_CruiseControl; .IntegralAction; ._L4_CruiseControl; ._L13_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation{._L14_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._L21_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._M_init_0_CruiseControl ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._I0_ThrottleIn; ._O0_ThrottleOut} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._O1_Saturate ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L18_CruiseControl; ._L12_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L7_CruiseControl ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L17_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L9_CruiseControl ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L6_CruiseControl; ._L8_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd{._C0_ThrottleRegulation._C0_SaturateThrottle._L13_CruiseControl; ._M_condact_2_CruiseControl} ∈ + [--..--] +[value:final-states] Values at end of function DetectPedalsPressed: + __retres ∈ {1} + S__C_[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel} ∈ + [--..--] + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed; ._O0_Cruise_speed; ._O1_Throttle_cmd} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]{._O2_Regul_ON; ._O3_Regul_OFF; ._O4_Regul_STDBY; ._L73_CruiseControl} ∈ + [--..--] + [0]{._L59_CruiseControl; ._L62_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]{.BrakePressed; .AcceleratorPressed; ._L61_CruiseControl; ._L60_CruiseControl; ._L58_CruiseControl} ∈ + [--..--] + [0]._L95_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]{.SpeedOutOffLimits; ._L82_CruiseControl; ._L83_CruiseControl; ._L84_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [0]._L96_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]{._L38_CruiseControl; ._L39_CruiseControl; ._L40_CruiseControl} ∈ + [--..--] + [0]{._L23_CruiseControl; .CruiseSpeed; ._L26_CruiseControl; ._L22_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]{._M_init_CruiseControl; ._C0_CruiseSpeedMgt{._I0_On; ._I1_Set; ._I2_QuickAccel; ._I3_QuickDecel}} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._I4_Speed; ._O0_CruiseSpeed; ._L1_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C0_CruiseSpeedMgt{._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._L21_CruiseControl; ._L10_CruiseControl; ._L12_CruiseControl; ._L13_CruiseControl; ._L15_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C0_CruiseSpeedMgt{._L16_CruiseControl; ._L4_CruiseControl; ._L17_CruiseControl} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._L11_CruiseControl; ._L14_CruiseControl; ._L19_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C0_CruiseSpeedMgt{._L18_CruiseControl; ._L5_CruiseControl; ._L20_CruiseControl} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._L9_CruiseControl; ._L8_CruiseControl; ._L7_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C0_CruiseSpeedMgt._M_init_0_CruiseControl ∈ [--..--] + [0]._C1_DetectPedalsPressed{._I0_Brake; ._I1_Accelerator} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C1_DetectPedalsPressed{._O0_BrakePressed; ._O1_AcceleratorPressed} ∈ + {0; 1} + [0]._C1_DetectPedalsPressed._L2_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C1_DetectPedalsPressed._L8_CruiseControl ∈ {0} + [0]._C1_DetectPedalsPressed._L4_CruiseControl ∈ {0; 1} + [0]._C1_DetectPedalsPressed._L1_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C1_DetectPedalsPressed._L7_CruiseControl ∈ {0} + [0]._C1_DetectPedalsPressed._L3_CruiseControl ∈ {0; 1} + [0]._C2_DetectSpeedLimits._I0_speed ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C2_DetectSpeedLimits._O0_SpeedOutOffLimits ∈ [--..--] + [0]._C2_DetectSpeedLimits{._L7_CruiseControl; ._L13_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C2_DetectSpeedLimits._L8_CruiseControl ∈ [--..--] + [0]._C2_DetectSpeedLimits._L14_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]{._C2_DetectSpeedLimits{._L9_CruiseControl; ._L17_CruiseControl}; ._C3_CruiseStateMgt; ._M_condact_0_CruiseControl; ._C4_ThrottleCmd._I0_Regul_ON} ∈ + [--..--] + [0]._C4_ThrottleCmd{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._I3_Accelerator; ._O0_Throttle} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd{._L21_CruiseControl; ._L20_CruiseControl; ._L22_CruiseControl; .ONRisingEdge} ∈ + [--..--] + [0]._C4_ThrottleCmd{._L26_CruiseControl; ._L1_CruiseControl; ._L2_CruiseControl; ._L19_CruiseControl; ._L25_CruiseControl; ._L24_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd{._M_init_0_CruiseControl; ._C0_ThrottleRegulation._I0_Reset} ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._O0_Throttle; ._L1_CruiseControl; ._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl; .ProportionnalAction; ._L22_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation.HoldIntegralAction ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L16_CruiseControl; ._L23_CruiseControl; ._L18_CruiseControl; ._L10_CruiseControl; ._L8_CruiseControl; .IntegralAction; ._L4_CruiseControl; ._L13_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L14_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L21_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._M_init_0_CruiseControl ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._I0_ThrottleIn; ._O0_ThrottleOut} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._O1_Saturate ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L18_CruiseControl; ._L12_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L7_CruiseControl ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L17_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L9_CruiseControl ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L6_CruiseControl; ._L8_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + {[0]._C4_ThrottleCmd{._C0_ThrottleRegulation._C0_SaturateThrottle._L13_CruiseControl; ._M_condact_2_CruiseControl}; [1]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel}} ∈ + [--..--] + [1]{._I6_Accel; ._I7_Brake; ._I8_Speed; ._O0_Cruise_speed; ._O1_Throttle_cmd} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]{._O2_Regul_ON; ._O3_Regul_OFF; ._O4_Regul_STDBY; ._L73_CruiseControl} ∈ + [--..--] + [1]{._L59_CruiseControl; ._L62_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]{.BrakePressed; .AcceleratorPressed; ._L61_CruiseControl; ._L60_CruiseControl; ._L58_CruiseControl} ∈ + [--..--] + [1]._L95_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]{.SpeedOutOffLimits; ._L82_CruiseControl; ._L83_CruiseControl; ._L84_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [1]._L96_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]{._L38_CruiseControl; ._L39_CruiseControl; ._L40_CruiseControl} ∈ + [--..--] + [1]{._L23_CruiseControl; .CruiseSpeed; ._L26_CruiseControl; ._L22_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]{._M_init_CruiseControl; ._C0_CruiseSpeedMgt{._I0_On; ._I1_Set; ._I2_QuickAccel; ._I3_QuickDecel}} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._I4_Speed; ._O0_CruiseSpeed; ._L1_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C0_CruiseSpeedMgt{._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._L21_CruiseControl; ._L10_CruiseControl; ._L12_CruiseControl; ._L13_CruiseControl; ._L15_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C0_CruiseSpeedMgt{._L16_CruiseControl; ._L4_CruiseControl; ._L17_CruiseControl} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._L11_CruiseControl; ._L14_CruiseControl; ._L19_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C0_CruiseSpeedMgt{._L18_CruiseControl; ._L5_CruiseControl; ._L20_CruiseControl} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._L9_CruiseControl; ._L8_CruiseControl; ._L7_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C0_CruiseSpeedMgt._M_init_0_CruiseControl ∈ [--..--] + [1]._C1_DetectPedalsPressed{._I0_Brake; ._I1_Accelerator} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C1_DetectPedalsPressed{._O0_BrakePressed; ._O1_AcceleratorPressed} ∈ + [--..--] + [1]._C1_DetectPedalsPressed{._L2_CruiseControl; ._L8_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C1_DetectPedalsPressed._L4_CruiseControl ∈ [--..--] + [1]._C1_DetectPedalsPressed{._L1_CruiseControl; ._L7_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C1_DetectPedalsPressed._L3_CruiseControl ∈ [--..--] + [1]._C2_DetectSpeedLimits._I0_speed ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C2_DetectSpeedLimits._O0_SpeedOutOffLimits ∈ [--..--] + [1]._C2_DetectSpeedLimits{._L7_CruiseControl; ._L13_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C2_DetectSpeedLimits._L8_CruiseControl ∈ [--..--] + [1]._C2_DetectSpeedLimits._L14_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]{._C2_DetectSpeedLimits{._L9_CruiseControl; ._L17_CruiseControl}; ._C3_CruiseStateMgt; ._M_condact_0_CruiseControl; ._C4_ThrottleCmd._I0_Regul_ON} ∈ + [--..--] + [1]._C4_ThrottleCmd{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._I3_Accelerator; ._O0_Throttle} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd{._L21_CruiseControl; ._L20_CruiseControl; ._L22_CruiseControl; .ONRisingEdge} ∈ + [--..--] + [1]._C4_ThrottleCmd{._L26_CruiseControl; ._L1_CruiseControl; ._L2_CruiseControl; ._L19_CruiseControl; ._L25_CruiseControl; ._L24_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd{._M_init_0_CruiseControl; ._C0_ThrottleRegulation._I0_Reset} ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._O0_Throttle; ._L1_CruiseControl; ._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl; .ProportionnalAction; ._L22_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation.HoldIntegralAction ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation{._L16_CruiseControl; ._L23_CruiseControl; ._L18_CruiseControl; ._L10_CruiseControl; ._L8_CruiseControl; .IntegralAction; ._L4_CruiseControl; ._L13_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation{._L14_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._L21_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._M_init_0_CruiseControl ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._I0_ThrottleIn; ._O0_ThrottleOut} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._O1_Saturate ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L18_CruiseControl; ._L12_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L7_CruiseControl ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L17_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L9_CruiseControl ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L6_CruiseControl; ._L8_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd{._C0_ThrottleRegulation._C0_SaturateThrottle._L13_CruiseControl; ._M_condact_2_CruiseControl} ∈ + [--..--] +[value:final-states] Values at end of function DetectSpeedLimits: + __retres ∈ {1} + S__C_[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel} ∈ + [--..--] + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed; ._O0_Cruise_speed; ._O1_Throttle_cmd} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]{._O2_Regul_ON; ._O3_Regul_OFF; ._O4_Regul_STDBY; ._L73_CruiseControl} ∈ + [--..--] + [0]{._L59_CruiseControl; ._L62_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]{.BrakePressed; .AcceleratorPressed} ∈ {0; 1} + [0]{._L61_CruiseControl; ._L60_CruiseControl; ._L58_CruiseControl} ∈ + [--..--] + [0]._L95_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]{.SpeedOutOffLimits; ._L82_CruiseControl; ._L83_CruiseControl; ._L84_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [0]._L96_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]{._L38_CruiseControl; ._L39_CruiseControl; ._L40_CruiseControl} ∈ + [--..--] + [0]{._L23_CruiseControl; .CruiseSpeed; ._L26_CruiseControl; ._L22_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]{._M_init_CruiseControl; ._C0_CruiseSpeedMgt{._I0_On; ._I1_Set; ._I2_QuickAccel; ._I3_QuickDecel}} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._I4_Speed; ._O0_CruiseSpeed; ._L1_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C0_CruiseSpeedMgt{._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._L21_CruiseControl; ._L10_CruiseControl; ._L12_CruiseControl; ._L13_CruiseControl; ._L15_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C0_CruiseSpeedMgt{._L16_CruiseControl; ._L4_CruiseControl; ._L17_CruiseControl} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._L11_CruiseControl; ._L14_CruiseControl; ._L19_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C0_CruiseSpeedMgt{._L18_CruiseControl; ._L5_CruiseControl; ._L20_CruiseControl} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._L9_CruiseControl; ._L8_CruiseControl; ._L7_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C0_CruiseSpeedMgt._M_init_0_CruiseControl ∈ [--..--] + [0]._C1_DetectPedalsPressed{._I0_Brake; ._I1_Accelerator} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C1_DetectPedalsPressed{._O0_BrakePressed; ._O1_AcceleratorPressed} ∈ + {0; 1} + [0]._C1_DetectPedalsPressed._L2_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C1_DetectPedalsPressed._L8_CruiseControl ∈ {0} + [0]._C1_DetectPedalsPressed._L4_CruiseControl ∈ {0; 1} + [0]._C1_DetectPedalsPressed._L1_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C1_DetectPedalsPressed._L7_CruiseControl ∈ {0} + [0]._C1_DetectPedalsPressed._L3_CruiseControl ∈ {0; 1} + [0]._C2_DetectSpeedLimits._I0_speed ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C2_DetectSpeedLimits._O0_SpeedOutOffLimits ∈ {0; 1} + [0]._C2_DetectSpeedLimits._L7_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C2_DetectSpeedLimits._L13_CruiseControl ∈ {30.0000000000000000} + [0]._C2_DetectSpeedLimits._L8_CruiseControl ∈ {0; 1} + [0]._C2_DetectSpeedLimits._L14_CruiseControl ∈ + {150.0000000000000000} + [0]._C2_DetectSpeedLimits{._L9_CruiseControl; ._L17_CruiseControl} ∈ + {0; 1} + [0]{._C3_CruiseStateMgt; ._M_condact_0_CruiseControl; ._C4_ThrottleCmd._I0_Regul_ON} ∈ + [--..--] + [0]._C4_ThrottleCmd{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._I3_Accelerator; ._O0_Throttle} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd{._L21_CruiseControl; ._L20_CruiseControl; ._L22_CruiseControl; .ONRisingEdge} ∈ + [--..--] + [0]._C4_ThrottleCmd{._L26_CruiseControl; ._L1_CruiseControl; ._L2_CruiseControl; ._L19_CruiseControl; ._L25_CruiseControl; ._L24_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd{._M_init_0_CruiseControl; ._C0_ThrottleRegulation._I0_Reset} ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._O0_Throttle; ._L1_CruiseControl; ._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl; .ProportionnalAction; ._L22_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation.HoldIntegralAction ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L16_CruiseControl; ._L23_CruiseControl; ._L18_CruiseControl; ._L10_CruiseControl; ._L8_CruiseControl; .IntegralAction; ._L4_CruiseControl; ._L13_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L14_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L21_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._M_init_0_CruiseControl ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._I0_ThrottleIn; ._O0_ThrottleOut} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._O1_Saturate ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L18_CruiseControl; ._L12_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L7_CruiseControl ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L17_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L9_CruiseControl ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L6_CruiseControl; ._L8_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + {[0]._C4_ThrottleCmd{._C0_ThrottleRegulation._C0_SaturateThrottle._L13_CruiseControl; ._M_condact_2_CruiseControl}; [1]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel}} ∈ + [--..--] + [1]{._I6_Accel; ._I7_Brake; ._I8_Speed; ._O0_Cruise_speed; ._O1_Throttle_cmd} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]{._O2_Regul_ON; ._O3_Regul_OFF; ._O4_Regul_STDBY; ._L73_CruiseControl} ∈ + [--..--] + [1]{._L59_CruiseControl; ._L62_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]{.BrakePressed; .AcceleratorPressed; ._L61_CruiseControl; ._L60_CruiseControl; ._L58_CruiseControl} ∈ + [--..--] + [1]._L95_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]{.SpeedOutOffLimits; ._L82_CruiseControl; ._L83_CruiseControl; ._L84_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [1]._L96_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]{._L38_CruiseControl; ._L39_CruiseControl; ._L40_CruiseControl} ∈ + [--..--] + [1]{._L23_CruiseControl; .CruiseSpeed; ._L26_CruiseControl; ._L22_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]{._M_init_CruiseControl; ._C0_CruiseSpeedMgt{._I0_On; ._I1_Set; ._I2_QuickAccel; ._I3_QuickDecel}} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._I4_Speed; ._O0_CruiseSpeed; ._L1_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C0_CruiseSpeedMgt{._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._L21_CruiseControl; ._L10_CruiseControl; ._L12_CruiseControl; ._L13_CruiseControl; ._L15_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C0_CruiseSpeedMgt{._L16_CruiseControl; ._L4_CruiseControl; ._L17_CruiseControl} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._L11_CruiseControl; ._L14_CruiseControl; ._L19_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C0_CruiseSpeedMgt{._L18_CruiseControl; ._L5_CruiseControl; ._L20_CruiseControl} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._L9_CruiseControl; ._L8_CruiseControl; ._L7_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C0_CruiseSpeedMgt._M_init_0_CruiseControl ∈ [--..--] + [1]._C1_DetectPedalsPressed{._I0_Brake; ._I1_Accelerator} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C1_DetectPedalsPressed{._O0_BrakePressed; ._O1_AcceleratorPressed} ∈ + [--..--] + [1]._C1_DetectPedalsPressed{._L2_CruiseControl; ._L8_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C1_DetectPedalsPressed._L4_CruiseControl ∈ [--..--] + [1]._C1_DetectPedalsPressed{._L1_CruiseControl; ._L7_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C1_DetectPedalsPressed._L3_CruiseControl ∈ [--..--] + [1]._C2_DetectSpeedLimits._I0_speed ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C2_DetectSpeedLimits._O0_SpeedOutOffLimits ∈ [--..--] + [1]._C2_DetectSpeedLimits{._L7_CruiseControl; ._L13_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C2_DetectSpeedLimits._L8_CruiseControl ∈ [--..--] + [1]._C2_DetectSpeedLimits._L14_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]{._C2_DetectSpeedLimits{._L9_CruiseControl; ._L17_CruiseControl}; ._C3_CruiseStateMgt; ._M_condact_0_CruiseControl; ._C4_ThrottleCmd._I0_Regul_ON} ∈ + [--..--] + [1]._C4_ThrottleCmd{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._I3_Accelerator; ._O0_Throttle} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd{._L21_CruiseControl; ._L20_CruiseControl; ._L22_CruiseControl; .ONRisingEdge} ∈ + [--..--] + [1]._C4_ThrottleCmd{._L26_CruiseControl; ._L1_CruiseControl; ._L2_CruiseControl; ._L19_CruiseControl; ._L25_CruiseControl; ._L24_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd{._M_init_0_CruiseControl; ._C0_ThrottleRegulation._I0_Reset} ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._O0_Throttle; ._L1_CruiseControl; ._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl; .ProportionnalAction; ._L22_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation.HoldIntegralAction ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation{._L16_CruiseControl; ._L23_CruiseControl; ._L18_CruiseControl; ._L10_CruiseControl; ._L8_CruiseControl; .IntegralAction; ._L4_CruiseControl; ._L13_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation{._L14_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._L21_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._M_init_0_CruiseControl ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._I0_ThrottleIn; ._O0_ThrottleOut} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._O1_Saturate ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L18_CruiseControl; ._L12_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L7_CruiseControl ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L17_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L9_CruiseControl ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L6_CruiseControl; ._L8_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd{._C0_ThrottleRegulation._C0_SaturateThrottle._L13_CruiseControl; ._M_condact_2_CruiseControl} ∈ + [--..--] +[value:final-states] Values at end of function SaturateThrottle: + __retres ∈ {1} + S__C_[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel} ∈ + [--..--] + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed; ._O0_Cruise_speed; ._O1_Throttle_cmd} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]{._O2_Regul_ON; ._O3_Regul_OFF; ._O4_Regul_STDBY; ._L73_CruiseControl} ∈ + [--..--] + [0]{._L59_CruiseControl; ._L62_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]{.BrakePressed; .AcceleratorPressed} ∈ {0; 1} + [0]{._L61_CruiseControl; ._L60_CruiseControl; ._L58_CruiseControl} ∈ + [--..--] + [0]._L95_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]{.SpeedOutOffLimits; ._L82_CruiseControl} ∈ {0; 1} + [0]{._L83_CruiseControl; ._L84_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [0]._L96_CruiseControl ∈ {0} + [0]{._L38_CruiseControl; ._L39_CruiseControl; ._L40_CruiseControl} ∈ + [--..--] + [0]{._L23_CruiseControl; .CruiseSpeed; ._L26_CruiseControl; ._L22_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]{._M_init_CruiseControl; ._C0_CruiseSpeedMgt{._I0_On; ._I1_Set; ._I2_QuickAccel; ._I3_QuickDecel}} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._I4_Speed; ._O0_CruiseSpeed; ._L1_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C0_CruiseSpeedMgt{._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._L21_CruiseControl; ._L10_CruiseControl; ._L12_CruiseControl; ._L13_CruiseControl; ._L15_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C0_CruiseSpeedMgt{._L16_CruiseControl; ._L4_CruiseControl; ._L17_CruiseControl} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._L11_CruiseControl; ._L14_CruiseControl; ._L19_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C0_CruiseSpeedMgt{._L18_CruiseControl; ._L5_CruiseControl; ._L20_CruiseControl} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._L9_CruiseControl; ._L8_CruiseControl; ._L7_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C0_CruiseSpeedMgt._M_init_0_CruiseControl ∈ [--..--] + [0]._C1_DetectPedalsPressed{._I0_Brake; ._I1_Accelerator} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C1_DetectPedalsPressed{._O0_BrakePressed; ._O1_AcceleratorPressed} ∈ + {0; 1} + [0]._C1_DetectPedalsPressed._L2_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C1_DetectPedalsPressed._L8_CruiseControl ∈ {0} + [0]._C1_DetectPedalsPressed._L4_CruiseControl ∈ {0; 1} + [0]._C1_DetectPedalsPressed._L1_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C1_DetectPedalsPressed._L7_CruiseControl ∈ {0} + [0]._C1_DetectPedalsPressed._L3_CruiseControl ∈ {0; 1} + [0]._C2_DetectSpeedLimits._I0_speed ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C2_DetectSpeedLimits._O0_SpeedOutOffLimits ∈ {0; 1} + [0]._C2_DetectSpeedLimits._L7_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C2_DetectSpeedLimits._L13_CruiseControl ∈ {30.0000000000000000} + [0]._C2_DetectSpeedLimits._L8_CruiseControl ∈ {0; 1} + [0]._C2_DetectSpeedLimits._L14_CruiseControl ∈ + {150.0000000000000000} + [0]{._C2_DetectSpeedLimits{._L9_CruiseControl; ._L17_CruiseControl}; ._C3_CruiseStateMgt{._I0_BrakePressed; ._I1_AcceleratorPressed}} ∈ + {0; 1} + [0]._C3_CruiseStateMgt{._I2_Resume; ._I3_On; ._I4_Off} ∈ [--..--] + [0]._C3_CruiseStateMgt{._I5_SpeedOutOffLimits; ._O0_Regul_ON} ∈ + {0; 1} + [0]._C3_CruiseStateMgt{._O1_Regul_OFF; ._O2_Regul_STDBY; ._LE24_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt._LE0_CruiseControl ∈ {0; 1} + [0]._C3_CruiseStateMgt{._LE4_CruiseControl; ._LE40_CruiseControl; ._LE26_CruiseControl; ._LE28_CruiseControl; ._LE9_CruiseControl; ._LE10_CruiseControl; ._LE11_CruiseControl; ._LE33_CruiseControl; ._LE35_CruiseControl; ._LE38_CruiseControl; ._LE12_CruiseControl; ._LE13_CruiseControl; ._LE14_CruiseControl; ._LE17_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt._LE18_CruiseControl ∈ {0; 1} + [0]._C3_CruiseStateMgt{._LE3_CruiseControl; ._LE16_CruiseControl; ._LE41_CruiseControl; ._LE19_CruiseControl; ._LE20_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt{._LE21_CruiseControl; ._LE1_CruiseControl; ._LE5_CruiseControl; ._LE22_CruiseControl; ._LE23_CruiseControl; ._LE25_CruiseControl} ∈ + {0; 1} + [0]._C3_CruiseStateMgt{._LE29_CruiseControl; ._LE2_CruiseControl; ._LE30_CruiseControl; ._LE31_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl; ._LE42_CruiseControl; ._LE6_CruiseControl} ∈ + {0; 1} + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl; ._LE43_CruiseControl; ._LE7_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt._LE27_CruiseControl ∈ {0; 1} + [0]._C3_CruiseStateMgt._LE36_CruiseControl ∈ [--..--] + [0]._C3_CruiseStateMgt._LE37_CruiseControl ∈ {0; 1} + [0]._C3_CruiseStateMgt{._LE44_CruiseControl; ._LE8_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl ∈ {0} + [0]._M_condact_0_CruiseControl ∈ [--..--] + [0]._C4_ThrottleCmd._I0_Regul_ON ∈ {0; 1} + [0]._C4_ThrottleCmd{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._I3_Accelerator; ._O0_Throttle} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._L21_CruiseControl ∈ [--..--] + [0]._C4_ThrottleCmd._L20_CruiseControl ∈ {1} + [0]._C4_ThrottleCmd._L22_CruiseControl ∈ [--..--] + [0]._C4_ThrottleCmd.ONRisingEdge ∈ {0; 1} + [0]._C4_ThrottleCmd._L26_CruiseControl ∈ {0} + [0]._C4_ThrottleCmd{._L1_CruiseControl; ._L2_CruiseControl; ._L19_CruiseControl; ._L25_CruiseControl; ._L24_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._M_init_0_CruiseControl ∈ [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._I0_Reset ∈ {0; 1} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._O0_Throttle; ._L1_CruiseControl; ._L2_CruiseControl; ._L3_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L6_CruiseControl ∈ + {8.1129999160766601} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation.ProportionnalAction ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L22_CruiseControl ∈ {0} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation.HoldIntegralAction ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L16_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L23_CruiseControl ∈ {0} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L18_CruiseControl; ._L10_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L8_CruiseControl ∈ + {1.0000000000000000*2^-1} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation.IntegralAction ∈ + [-1.9999998807907104*2^126 .. 1.9999998807907104*2^126] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L4_CruiseControl; ._L13_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L14_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L21_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._M_init_0_CruiseControl ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._I0_ThrottleIn; ._O0_ThrottleOut} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._O1_Saturate ∈ + {0; 1} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L18_CruiseControl ∈ + {45.0000000000000000} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L12_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L7_CruiseControl ∈ + {0; 1} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L17_CruiseControl ∈ + {0} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L9_CruiseControl ∈ + {0; 1} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L6_CruiseControl; ._L8_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L13_CruiseControl ∈ + {0; 1} + {[0]._C4_ThrottleCmd._M_condact_2_CruiseControl; [1]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel}} ∈ + [--..--] + [1]{._I6_Accel; ._I7_Brake; ._I8_Speed; ._O0_Cruise_speed; ._O1_Throttle_cmd} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]{._O2_Regul_ON; ._O3_Regul_OFF; ._O4_Regul_STDBY; ._L73_CruiseControl} ∈ + [--..--] + [1]{._L59_CruiseControl; ._L62_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]{.BrakePressed; .AcceleratorPressed; ._L61_CruiseControl; ._L60_CruiseControl; ._L58_CruiseControl} ∈ + [--..--] + [1]._L95_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]{.SpeedOutOffLimits; ._L82_CruiseControl; ._L83_CruiseControl; ._L84_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [1]._L96_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]{._L38_CruiseControl; ._L39_CruiseControl; ._L40_CruiseControl} ∈ + [--..--] + [1]{._L23_CruiseControl; .CruiseSpeed; ._L26_CruiseControl; ._L22_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]{._M_init_CruiseControl; ._C0_CruiseSpeedMgt{._I0_On; ._I1_Set; ._I2_QuickAccel; ._I3_QuickDecel}} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._I4_Speed; ._O0_CruiseSpeed; ._L1_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C0_CruiseSpeedMgt{._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._L21_CruiseControl; ._L10_CruiseControl; ._L12_CruiseControl; ._L13_CruiseControl; ._L15_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C0_CruiseSpeedMgt{._L16_CruiseControl; ._L4_CruiseControl; ._L17_CruiseControl} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._L11_CruiseControl; ._L14_CruiseControl; ._L19_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C0_CruiseSpeedMgt{._L18_CruiseControl; ._L5_CruiseControl; ._L20_CruiseControl} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._L9_CruiseControl; ._L8_CruiseControl; ._L7_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C0_CruiseSpeedMgt._M_init_0_CruiseControl ∈ [--..--] + [1]._C1_DetectPedalsPressed{._I0_Brake; ._I1_Accelerator} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C1_DetectPedalsPressed{._O0_BrakePressed; ._O1_AcceleratorPressed} ∈ + [--..--] + [1]._C1_DetectPedalsPressed{._L2_CruiseControl; ._L8_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C1_DetectPedalsPressed._L4_CruiseControl ∈ [--..--] + [1]._C1_DetectPedalsPressed{._L1_CruiseControl; ._L7_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C1_DetectPedalsPressed._L3_CruiseControl ∈ [--..--] + [1]._C2_DetectSpeedLimits._I0_speed ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C2_DetectSpeedLimits._O0_SpeedOutOffLimits ∈ [--..--] + [1]._C2_DetectSpeedLimits{._L7_CruiseControl; ._L13_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C2_DetectSpeedLimits._L8_CruiseControl ∈ [--..--] + [1]._C2_DetectSpeedLimits._L14_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]{._C2_DetectSpeedLimits{._L9_CruiseControl; ._L17_CruiseControl}; ._C3_CruiseStateMgt; ._M_condact_0_CruiseControl; ._C4_ThrottleCmd._I0_Regul_ON} ∈ + [--..--] + [1]._C4_ThrottleCmd{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._I3_Accelerator; ._O0_Throttle} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd{._L21_CruiseControl; ._L20_CruiseControl; ._L22_CruiseControl; .ONRisingEdge} ∈ + [--..--] + [1]._C4_ThrottleCmd{._L26_CruiseControl; ._L1_CruiseControl; ._L2_CruiseControl; ._L19_CruiseControl; ._L25_CruiseControl; ._L24_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd{._M_init_0_CruiseControl; ._C0_ThrottleRegulation._I0_Reset} ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._O0_Throttle; ._L1_CruiseControl; ._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl; .ProportionnalAction; ._L22_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation.HoldIntegralAction ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation{._L16_CruiseControl; ._L23_CruiseControl; ._L18_CruiseControl; ._L10_CruiseControl; ._L8_CruiseControl; .IntegralAction; ._L4_CruiseControl; ._L13_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation{._L14_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._L21_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._M_init_0_CruiseControl ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._I0_ThrottleIn; ._O0_ThrottleOut} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._O1_Saturate ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L18_CruiseControl; ._L12_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L7_CruiseControl ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L17_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L9_CruiseControl ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L6_CruiseControl; ._L8_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd{._C0_ThrottleRegulation._C0_SaturateThrottle._L13_CruiseControl; ._M_condact_2_CruiseControl} ∈ + [--..--] +[value:final-states] Values at end of function ThrottleRegulation: + __retres ∈ {1} + S__C_[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel} ∈ + [--..--] + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed; ._O0_Cruise_speed; ._O1_Throttle_cmd} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]{._O2_Regul_ON; ._O3_Regul_OFF; ._O4_Regul_STDBY; ._L73_CruiseControl} ∈ + [--..--] + [0]{._L59_CruiseControl; ._L62_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]{.BrakePressed; .AcceleratorPressed} ∈ {0; 1} + [0]{._L61_CruiseControl; ._L60_CruiseControl; ._L58_CruiseControl} ∈ + [--..--] + [0]._L95_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]{.SpeedOutOffLimits; ._L82_CruiseControl} ∈ {0; 1} + [0]{._L83_CruiseControl; ._L84_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [0]._L96_CruiseControl ∈ {0} + [0]{._L38_CruiseControl; ._L39_CruiseControl; ._L40_CruiseControl} ∈ + [--..--] + [0]{._L23_CruiseControl; .CruiseSpeed; ._L26_CruiseControl; ._L22_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]{._M_init_CruiseControl; ._C0_CruiseSpeedMgt{._I0_On; ._I1_Set; ._I2_QuickAccel; ._I3_QuickDecel}} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._I4_Speed; ._O0_CruiseSpeed; ._L1_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C0_CruiseSpeedMgt{._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._L21_CruiseControl; ._L10_CruiseControl; ._L12_CruiseControl; ._L13_CruiseControl; ._L15_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C0_CruiseSpeedMgt{._L16_CruiseControl; ._L4_CruiseControl; ._L17_CruiseControl} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._L11_CruiseControl; ._L14_CruiseControl; ._L19_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C0_CruiseSpeedMgt{._L18_CruiseControl; ._L5_CruiseControl; ._L20_CruiseControl} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._L9_CruiseControl; ._L8_CruiseControl; ._L7_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C0_CruiseSpeedMgt._M_init_0_CruiseControl ∈ [--..--] + [0]._C1_DetectPedalsPressed{._I0_Brake; ._I1_Accelerator} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C1_DetectPedalsPressed{._O0_BrakePressed; ._O1_AcceleratorPressed} ∈ + {0; 1} + [0]._C1_DetectPedalsPressed._L2_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C1_DetectPedalsPressed._L8_CruiseControl ∈ {0} + [0]._C1_DetectPedalsPressed._L4_CruiseControl ∈ {0; 1} + [0]._C1_DetectPedalsPressed._L1_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C1_DetectPedalsPressed._L7_CruiseControl ∈ {0} + [0]._C1_DetectPedalsPressed._L3_CruiseControl ∈ {0; 1} + [0]._C2_DetectSpeedLimits._I0_speed ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C2_DetectSpeedLimits._O0_SpeedOutOffLimits ∈ {0; 1} + [0]._C2_DetectSpeedLimits._L7_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C2_DetectSpeedLimits._L13_CruiseControl ∈ {30.0000000000000000} + [0]._C2_DetectSpeedLimits._L8_CruiseControl ∈ {0; 1} + [0]._C2_DetectSpeedLimits._L14_CruiseControl ∈ + {150.0000000000000000} + [0]{._C2_DetectSpeedLimits{._L9_CruiseControl; ._L17_CruiseControl}; ._C3_CruiseStateMgt{._I0_BrakePressed; ._I1_AcceleratorPressed}} ∈ + {0; 1} + [0]._C3_CruiseStateMgt{._I2_Resume; ._I3_On; ._I4_Off} ∈ [--..--] + [0]._C3_CruiseStateMgt{._I5_SpeedOutOffLimits; ._O0_Regul_ON} ∈ + {0; 1} + [0]._C3_CruiseStateMgt{._O1_Regul_OFF; ._O2_Regul_STDBY; ._LE24_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt._LE0_CruiseControl ∈ {0; 1} + [0]._C3_CruiseStateMgt{._LE4_CruiseControl; ._LE40_CruiseControl; ._LE26_CruiseControl; ._LE28_CruiseControl; ._LE9_CruiseControl; ._LE10_CruiseControl; ._LE11_CruiseControl; ._LE33_CruiseControl; ._LE35_CruiseControl; ._LE38_CruiseControl; ._LE12_CruiseControl; ._LE13_CruiseControl; ._LE14_CruiseControl; ._LE17_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt._LE18_CruiseControl ∈ {0; 1} + [0]._C3_CruiseStateMgt{._LE3_CruiseControl; ._LE16_CruiseControl; ._LE41_CruiseControl; ._LE19_CruiseControl; ._LE20_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt{._LE21_CruiseControl; ._LE1_CruiseControl; ._LE5_CruiseControl; ._LE22_CruiseControl; ._LE23_CruiseControl; ._LE25_CruiseControl} ∈ + {0; 1} + [0]._C3_CruiseStateMgt{._LE29_CruiseControl; ._LE2_CruiseControl; ._LE30_CruiseControl; ._LE31_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl; ._LE42_CruiseControl; ._LE6_CruiseControl} ∈ + {0; 1} + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl; ._LE43_CruiseControl; ._LE7_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt._LE27_CruiseControl ∈ {0; 1} + [0]._C3_CruiseStateMgt._LE36_CruiseControl ∈ [--..--] + [0]._C3_CruiseStateMgt._LE37_CruiseControl ∈ {0; 1} + [0]._C3_CruiseStateMgt{._LE44_CruiseControl; ._LE8_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl ∈ {0} + [0]._M_condact_0_CruiseControl ∈ [--..--] + [0]._C4_ThrottleCmd._I0_Regul_ON ∈ {0; 1} + [0]._C4_ThrottleCmd{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._I3_Accelerator; ._O0_Throttle} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._L21_CruiseControl ∈ [--..--] + [0]._C4_ThrottleCmd._L20_CruiseControl ∈ {1} + [0]._C4_ThrottleCmd._L22_CruiseControl ∈ [--..--] + [0]._C4_ThrottleCmd.ONRisingEdge ∈ {0; 1} + [0]._C4_ThrottleCmd._L26_CruiseControl ∈ {0} + [0]._C4_ThrottleCmd{._L1_CruiseControl; ._L2_CruiseControl; ._L19_CruiseControl; ._L25_CruiseControl; ._L24_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._M_init_0_CruiseControl ∈ [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._I0_Reset ∈ {0; 1} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._O0_Throttle; ._L1_CruiseControl; ._L2_CruiseControl; ._L3_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L6_CruiseControl ∈ + {8.1129999160766601} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation.ProportionnalAction ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L22_CruiseControl ∈ {0} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation.HoldIntegralAction ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L16_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L23_CruiseControl ∈ {0} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L18_CruiseControl; ._L10_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L8_CruiseControl ∈ + {1.0000000000000000*2^-1} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation.IntegralAction ∈ + [-1.9999998807907104*2^126 .. 1.9999998807907104*2^126] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L4_CruiseControl; ._L13_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L14_CruiseControl; ._L19_CruiseControl} ∈ + {0; 1} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L21_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._M_init_0_CruiseControl ∈ + {0} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._I0_ThrottleIn; ._O0_ThrottleOut} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._O1_Saturate ∈ + {0; 1} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L18_CruiseControl ∈ + {45.0000000000000000} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L12_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L7_CruiseControl ∈ + {0; 1} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L17_CruiseControl ∈ + {0} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L9_CruiseControl ∈ + {0; 1} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L6_CruiseControl; ._L8_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L13_CruiseControl ∈ + {0; 1} + {[0]._C4_ThrottleCmd._M_condact_2_CruiseControl; [1]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel}} ∈ + [--..--] + [1]{._I6_Accel; ._I7_Brake; ._I8_Speed; ._O0_Cruise_speed; ._O1_Throttle_cmd} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]{._O2_Regul_ON; ._O3_Regul_OFF; ._O4_Regul_STDBY; ._L73_CruiseControl} ∈ + [--..--] + [1]{._L59_CruiseControl; ._L62_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]{.BrakePressed; .AcceleratorPressed; ._L61_CruiseControl; ._L60_CruiseControl; ._L58_CruiseControl} ∈ + [--..--] + [1]._L95_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]{.SpeedOutOffLimits; ._L82_CruiseControl; ._L83_CruiseControl; ._L84_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [1]._L96_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]{._L38_CruiseControl; ._L39_CruiseControl; ._L40_CruiseControl} ∈ + [--..--] + [1]{._L23_CruiseControl; .CruiseSpeed; ._L26_CruiseControl; ._L22_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]{._M_init_CruiseControl; ._C0_CruiseSpeedMgt{._I0_On; ._I1_Set; ._I2_QuickAccel; ._I3_QuickDecel}} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._I4_Speed; ._O0_CruiseSpeed; ._L1_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C0_CruiseSpeedMgt{._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._L21_CruiseControl; ._L10_CruiseControl; ._L12_CruiseControl; ._L13_CruiseControl; ._L15_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C0_CruiseSpeedMgt{._L16_CruiseControl; ._L4_CruiseControl; ._L17_CruiseControl} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._L11_CruiseControl; ._L14_CruiseControl; ._L19_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C0_CruiseSpeedMgt{._L18_CruiseControl; ._L5_CruiseControl; ._L20_CruiseControl} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._L9_CruiseControl; ._L8_CruiseControl; ._L7_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C0_CruiseSpeedMgt._M_init_0_CruiseControl ∈ [--..--] + [1]._C1_DetectPedalsPressed{._I0_Brake; ._I1_Accelerator} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C1_DetectPedalsPressed{._O0_BrakePressed; ._O1_AcceleratorPressed} ∈ + [--..--] + [1]._C1_DetectPedalsPressed{._L2_CruiseControl; ._L8_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C1_DetectPedalsPressed._L4_CruiseControl ∈ [--..--] + [1]._C1_DetectPedalsPressed{._L1_CruiseControl; ._L7_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C1_DetectPedalsPressed._L3_CruiseControl ∈ [--..--] + [1]._C2_DetectSpeedLimits._I0_speed ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C2_DetectSpeedLimits._O0_SpeedOutOffLimits ∈ [--..--] + [1]._C2_DetectSpeedLimits{._L7_CruiseControl; ._L13_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C2_DetectSpeedLimits._L8_CruiseControl ∈ [--..--] + [1]._C2_DetectSpeedLimits._L14_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]{._C2_DetectSpeedLimits{._L9_CruiseControl; ._L17_CruiseControl}; ._C3_CruiseStateMgt; ._M_condact_0_CruiseControl; ._C4_ThrottleCmd._I0_Regul_ON} ∈ + [--..--] + [1]._C4_ThrottleCmd{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._I3_Accelerator; ._O0_Throttle} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd{._L21_CruiseControl; ._L20_CruiseControl; ._L22_CruiseControl; .ONRisingEdge} ∈ + [--..--] + [1]._C4_ThrottleCmd{._L26_CruiseControl; ._L1_CruiseControl; ._L2_CruiseControl; ._L19_CruiseControl; ._L25_CruiseControl; ._L24_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd{._M_init_0_CruiseControl; ._C0_ThrottleRegulation._I0_Reset} ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._O0_Throttle; ._L1_CruiseControl; ._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl; .ProportionnalAction; ._L22_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation.HoldIntegralAction ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation{._L16_CruiseControl; ._L23_CruiseControl; ._L18_CruiseControl; ._L10_CruiseControl; ._L8_CruiseControl; .IntegralAction; ._L4_CruiseControl; ._L13_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation{._L14_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._L21_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._M_init_0_CruiseControl ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._I0_ThrottleIn; ._O0_ThrottleOut} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._O1_Saturate ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L18_CruiseControl; ._L12_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L7_CruiseControl ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L17_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L9_CruiseControl ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L6_CruiseControl; ._L8_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd{._C0_ThrottleRegulation._C0_SaturateThrottle._L13_CruiseControl; ._M_condact_2_CruiseControl} ∈ + [--..--] +[value:final-states] Values at end of function ThrottleCmd: + __retres ∈ {1} + S__C_[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel} ∈ + [--..--] + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed; ._O0_Cruise_speed; ._O1_Throttle_cmd} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]{._O2_Regul_ON; ._O3_Regul_OFF; ._O4_Regul_STDBY; ._L73_CruiseControl} ∈ + [--..--] + [0]{._L59_CruiseControl; ._L62_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]{.BrakePressed; .AcceleratorPressed} ∈ {0; 1} + [0]{._L61_CruiseControl; ._L60_CruiseControl; ._L58_CruiseControl} ∈ + [--..--] + [0]._L95_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]{.SpeedOutOffLimits; ._L82_CruiseControl} ∈ {0; 1} + [0]{._L83_CruiseControl; ._L84_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [0]._L96_CruiseControl ∈ {0} + [0]{._L38_CruiseControl; ._L39_CruiseControl; ._L40_CruiseControl} ∈ + [--..--] + [0]{._L23_CruiseControl; .CruiseSpeed; ._L26_CruiseControl; ._L22_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]{._M_init_CruiseControl; ._C0_CruiseSpeedMgt{._I0_On; ._I1_Set; ._I2_QuickAccel; ._I3_QuickDecel}} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._I4_Speed; ._O0_CruiseSpeed; ._L1_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C0_CruiseSpeedMgt{._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._L21_CruiseControl; ._L10_CruiseControl; ._L12_CruiseControl; ._L13_CruiseControl; ._L15_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C0_CruiseSpeedMgt{._L16_CruiseControl; ._L4_CruiseControl; ._L17_CruiseControl} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._L11_CruiseControl; ._L14_CruiseControl; ._L19_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C0_CruiseSpeedMgt{._L18_CruiseControl; ._L5_CruiseControl; ._L20_CruiseControl} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._L9_CruiseControl; ._L8_CruiseControl; ._L7_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C0_CruiseSpeedMgt._M_init_0_CruiseControl ∈ [--..--] + [0]._C1_DetectPedalsPressed{._I0_Brake; ._I1_Accelerator} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C1_DetectPedalsPressed{._O0_BrakePressed; ._O1_AcceleratorPressed} ∈ + {0; 1} + [0]._C1_DetectPedalsPressed._L2_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C1_DetectPedalsPressed._L8_CruiseControl ∈ {0} + [0]._C1_DetectPedalsPressed._L4_CruiseControl ∈ {0; 1} + [0]._C1_DetectPedalsPressed._L1_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C1_DetectPedalsPressed._L7_CruiseControl ∈ {0} + [0]._C1_DetectPedalsPressed._L3_CruiseControl ∈ {0; 1} + [0]._C2_DetectSpeedLimits._I0_speed ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C2_DetectSpeedLimits._O0_SpeedOutOffLimits ∈ {0; 1} + [0]._C2_DetectSpeedLimits._L7_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C2_DetectSpeedLimits._L13_CruiseControl ∈ {30.0000000000000000} + [0]._C2_DetectSpeedLimits._L8_CruiseControl ∈ {0; 1} + [0]._C2_DetectSpeedLimits._L14_CruiseControl ∈ + {150.0000000000000000} + [0]{._C2_DetectSpeedLimits{._L9_CruiseControl; ._L17_CruiseControl}; ._C3_CruiseStateMgt{._I0_BrakePressed; ._I1_AcceleratorPressed}} ∈ + {0; 1} + [0]._C3_CruiseStateMgt{._I2_Resume; ._I3_On; ._I4_Off} ∈ [--..--] + [0]._C3_CruiseStateMgt{._I5_SpeedOutOffLimits; ._O0_Regul_ON} ∈ + {0; 1} + [0]._C3_CruiseStateMgt{._O1_Regul_OFF; ._O2_Regul_STDBY; ._LE24_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt._LE0_CruiseControl ∈ {0; 1} + [0]._C3_CruiseStateMgt{._LE4_CruiseControl; ._LE40_CruiseControl; ._LE26_CruiseControl; ._LE28_CruiseControl; ._LE9_CruiseControl; ._LE10_CruiseControl; ._LE11_CruiseControl; ._LE33_CruiseControl; ._LE35_CruiseControl; ._LE38_CruiseControl; ._LE12_CruiseControl; ._LE13_CruiseControl; ._LE14_CruiseControl; ._LE17_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt._LE18_CruiseControl ∈ {0; 1} + [0]._C3_CruiseStateMgt{._LE3_CruiseControl; ._LE16_CruiseControl; ._LE41_CruiseControl; ._LE19_CruiseControl; ._LE20_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt{._LE21_CruiseControl; ._LE1_CruiseControl; ._LE5_CruiseControl; ._LE22_CruiseControl; ._LE23_CruiseControl; ._LE25_CruiseControl} ∈ + {0; 1} + [0]._C3_CruiseStateMgt{._LE29_CruiseControl; ._LE2_CruiseControl; ._LE30_CruiseControl; ._LE31_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl; ._LE42_CruiseControl; ._LE6_CruiseControl} ∈ + {0; 1} + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl; ._LE43_CruiseControl; ._LE7_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt._LE27_CruiseControl ∈ {0; 1} + [0]._C3_CruiseStateMgt._LE36_CruiseControl ∈ [--..--] + [0]._C3_CruiseStateMgt._LE37_CruiseControl ∈ {0; 1} + [0]._C3_CruiseStateMgt{._LE44_CruiseControl; ._LE8_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl ∈ {0} + [0]._M_condact_0_CruiseControl ∈ [--..--] + [0]._C4_ThrottleCmd._I0_Regul_ON ∈ {0; 1} + [0]._C4_ThrottleCmd{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._I3_Accelerator; ._O0_Throttle} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._L21_CruiseControl ∈ [--..--] + [0]._C4_ThrottleCmd._L20_CruiseControl ∈ {0; 1} + [0]._C4_ThrottleCmd._L22_CruiseControl ∈ [--..--] + [0]._C4_ThrottleCmd.ONRisingEdge ∈ {0; 1} + [0]._C4_ThrottleCmd._L26_CruiseControl ∈ {0} + [0]._C4_ThrottleCmd{._L1_CruiseControl; ._L2_CruiseControl; ._L19_CruiseControl; ._L25_CruiseControl; ._L24_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._M_init_0_CruiseControl ∈ {0} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._I0_Reset ∈ [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._O0_Throttle; ._L1_CruiseControl; ._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl; .ProportionnalAction; ._L22_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation.HoldIntegralAction ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L16_CruiseControl; ._L23_CruiseControl; ._L18_CruiseControl; ._L10_CruiseControl; ._L8_CruiseControl; .IntegralAction; ._L4_CruiseControl; ._L13_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L14_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L21_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._M_init_0_CruiseControl ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._I0_ThrottleIn; ._O0_ThrottleOut} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._O1_Saturate ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L18_CruiseControl; ._L12_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L7_CruiseControl ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L17_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L9_CruiseControl ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L6_CruiseControl; ._L8_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + {[0]._C4_ThrottleCmd{._C0_ThrottleRegulation._C0_SaturateThrottle._L13_CruiseControl; ._M_condact_2_CruiseControl}; [1]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel}} ∈ + [--..--] + [1]{._I6_Accel; ._I7_Brake; ._I8_Speed; ._O0_Cruise_speed; ._O1_Throttle_cmd} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]{._O2_Regul_ON; ._O3_Regul_OFF; ._O4_Regul_STDBY; ._L73_CruiseControl} ∈ + [--..--] + [1]{._L59_CruiseControl; ._L62_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]{.BrakePressed; .AcceleratorPressed; ._L61_CruiseControl; ._L60_CruiseControl; ._L58_CruiseControl} ∈ + [--..--] + [1]._L95_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]{.SpeedOutOffLimits; ._L82_CruiseControl; ._L83_CruiseControl; ._L84_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [1]._L96_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]{._L38_CruiseControl; ._L39_CruiseControl; ._L40_CruiseControl} ∈ + [--..--] + [1]{._L23_CruiseControl; .CruiseSpeed; ._L26_CruiseControl; ._L22_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]{._M_init_CruiseControl; ._C0_CruiseSpeedMgt{._I0_On; ._I1_Set; ._I2_QuickAccel; ._I3_QuickDecel}} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._I4_Speed; ._O0_CruiseSpeed; ._L1_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C0_CruiseSpeedMgt{._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._L21_CruiseControl; ._L10_CruiseControl; ._L12_CruiseControl; ._L13_CruiseControl; ._L15_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C0_CruiseSpeedMgt{._L16_CruiseControl; ._L4_CruiseControl; ._L17_CruiseControl} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._L11_CruiseControl; ._L14_CruiseControl; ._L19_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C0_CruiseSpeedMgt{._L18_CruiseControl; ._L5_CruiseControl; ._L20_CruiseControl} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._L9_CruiseControl; ._L8_CruiseControl; ._L7_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C0_CruiseSpeedMgt._M_init_0_CruiseControl ∈ [--..--] + [1]._C1_DetectPedalsPressed{._I0_Brake; ._I1_Accelerator} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C1_DetectPedalsPressed{._O0_BrakePressed; ._O1_AcceleratorPressed} ∈ + [--..--] + [1]._C1_DetectPedalsPressed{._L2_CruiseControl; ._L8_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C1_DetectPedalsPressed._L4_CruiseControl ∈ [--..--] + [1]._C1_DetectPedalsPressed{._L1_CruiseControl; ._L7_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C1_DetectPedalsPressed._L3_CruiseControl ∈ [--..--] + [1]._C2_DetectSpeedLimits._I0_speed ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C2_DetectSpeedLimits._O0_SpeedOutOffLimits ∈ [--..--] + [1]._C2_DetectSpeedLimits{._L7_CruiseControl; ._L13_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C2_DetectSpeedLimits._L8_CruiseControl ∈ [--..--] + [1]._C2_DetectSpeedLimits._L14_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]{._C2_DetectSpeedLimits{._L9_CruiseControl; ._L17_CruiseControl}; ._C3_CruiseStateMgt; ._M_condact_0_CruiseControl; ._C4_ThrottleCmd._I0_Regul_ON} ∈ + [--..--] + [1]._C4_ThrottleCmd{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._I3_Accelerator; ._O0_Throttle} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd{._L21_CruiseControl; ._L20_CruiseControl; ._L22_CruiseControl; .ONRisingEdge} ∈ + [--..--] + [1]._C4_ThrottleCmd{._L26_CruiseControl; ._L1_CruiseControl; ._L2_CruiseControl; ._L19_CruiseControl; ._L25_CruiseControl; ._L24_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd{._M_init_0_CruiseControl; ._C0_ThrottleRegulation._I0_Reset} ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._O0_Throttle; ._L1_CruiseControl; ._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl; .ProportionnalAction; ._L22_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation.HoldIntegralAction ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation{._L16_CruiseControl; ._L23_CruiseControl; ._L18_CruiseControl; ._L10_CruiseControl; ._L8_CruiseControl; .IntegralAction; ._L4_CruiseControl; ._L13_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation{._L14_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._L21_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._M_init_0_CruiseControl ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._I0_ThrottleIn; ._O0_ThrottleOut} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._O1_Saturate ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L18_CruiseControl; ._L12_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L7_CruiseControl ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L17_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L9_CruiseControl ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L6_CruiseControl; ._L8_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd{._C0_ThrottleRegulation._C0_SaturateThrottle._L13_CruiseControl; ._M_condact_2_CruiseControl} ∈ + [--..--] +[value:final-states] Values at end of function CruiseControl: + __retres ∈ {1} + S__C_[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel} ∈ + [--..--] + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed; ._O0_Cruise_speed; ._O1_Throttle_cmd} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._O2_Regul_ON ∈ {0; 1} + [0]{._O3_Regul_OFF; ._O4_Regul_STDBY; ._L73_CruiseControl} ∈ + [--..--] + [0]{._L59_CruiseControl; ._L62_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]{.BrakePressed; .AcceleratorPressed} ∈ {0; 1} + [0]{._L61_CruiseControl; ._L60_CruiseControl; ._L58_CruiseControl} ∈ + [--..--] + [0]._L95_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]{.SpeedOutOffLimits; ._L82_CruiseControl} ∈ {0; 1} + [0]{._L83_CruiseControl; ._L84_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [0]._L96_CruiseControl ∈ {0} + [0]{._L38_CruiseControl; ._L39_CruiseControl; ._L40_CruiseControl} ∈ + [--..--] + [0]{._L23_CruiseControl; .CruiseSpeed; ._L26_CruiseControl; ._L22_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._M_init_CruiseControl ∈ {0} + [0]._C0_CruiseSpeedMgt{._I0_On; ._I1_Set; ._I2_QuickAccel; ._I3_QuickDecel} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._I4_Speed; ._O0_CruiseSpeed; ._L1_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C0_CruiseSpeedMgt{._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._L21_CruiseControl; ._L10_CruiseControl; ._L12_CruiseControl; ._L13_CruiseControl; ._L15_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C0_CruiseSpeedMgt{._L16_CruiseControl; ._L4_CruiseControl; ._L17_CruiseControl} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._L11_CruiseControl; ._L14_CruiseControl; ._L19_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C0_CruiseSpeedMgt{._L18_CruiseControl; ._L5_CruiseControl; ._L20_CruiseControl} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._L9_CruiseControl; ._L8_CruiseControl; ._L7_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C0_CruiseSpeedMgt._M_init_0_CruiseControl ∈ [--..--] + [0]._C1_DetectPedalsPressed{._I0_Brake; ._I1_Accelerator} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C1_DetectPedalsPressed{._O0_BrakePressed; ._O1_AcceleratorPressed} ∈ + {0; 1} + [0]._C1_DetectPedalsPressed._L2_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C1_DetectPedalsPressed._L8_CruiseControl ∈ {0} + [0]._C1_DetectPedalsPressed._L4_CruiseControl ∈ {0; 1} + [0]._C1_DetectPedalsPressed._L1_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C1_DetectPedalsPressed._L7_CruiseControl ∈ {0} + [0]._C1_DetectPedalsPressed._L3_CruiseControl ∈ {0; 1} + [0]._C2_DetectSpeedLimits._I0_speed ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C2_DetectSpeedLimits._O0_SpeedOutOffLimits ∈ {0; 1} + [0]._C2_DetectSpeedLimits._L7_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C2_DetectSpeedLimits._L13_CruiseControl ∈ {30.0000000000000000} + [0]._C2_DetectSpeedLimits._L8_CruiseControl ∈ {0; 1} + [0]._C2_DetectSpeedLimits._L14_CruiseControl ∈ + {150.0000000000000000} + [0]{._C2_DetectSpeedLimits{._L9_CruiseControl; ._L17_CruiseControl}; ._C3_CruiseStateMgt{._I0_BrakePressed; ._I1_AcceleratorPressed}} ∈ + {0; 1} + [0]._C3_CruiseStateMgt{._I2_Resume; ._I3_On; ._I4_Off} ∈ [--..--] + [0]._C3_CruiseStateMgt{._I5_SpeedOutOffLimits; ._O0_Regul_ON} ∈ + {0; 1} + [0]._C3_CruiseStateMgt{._O1_Regul_OFF; ._O2_Regul_STDBY; ._LE24_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt._LE0_CruiseControl ∈ {0; 1} + [0]._C3_CruiseStateMgt{._LE4_CruiseControl; ._LE40_CruiseControl; ._LE26_CruiseControl; ._LE28_CruiseControl; ._LE9_CruiseControl; ._LE10_CruiseControl; ._LE11_CruiseControl; ._LE33_CruiseControl; ._LE35_CruiseControl; ._LE38_CruiseControl; ._LE12_CruiseControl; ._LE13_CruiseControl; ._LE14_CruiseControl; ._LE17_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt._LE18_CruiseControl ∈ {0; 1} + [0]._C3_CruiseStateMgt{._LE3_CruiseControl; ._LE16_CruiseControl; ._LE41_CruiseControl; ._LE19_CruiseControl; ._LE20_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt{._LE21_CruiseControl; ._LE1_CruiseControl; ._LE5_CruiseControl; ._LE22_CruiseControl; ._LE23_CruiseControl; ._LE25_CruiseControl} ∈ + {0; 1} + [0]._C3_CruiseStateMgt{._LE29_CruiseControl; ._LE2_CruiseControl; ._LE30_CruiseControl; ._LE31_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl; ._LE42_CruiseControl; ._LE6_CruiseControl} ∈ + {0; 1} + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl; ._LE43_CruiseControl; ._LE7_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt._LE27_CruiseControl ∈ {0; 1} + [0]._C3_CruiseStateMgt._LE36_CruiseControl ∈ [--..--] + [0]._C3_CruiseStateMgt._LE37_CruiseControl ∈ {0; 1} + [0]._C3_CruiseStateMgt{._LE44_CruiseControl; ._LE8_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl ∈ {0} + [0]._M_condact_0_CruiseControl ∈ [--..--] + [0]._C4_ThrottleCmd._I0_Regul_ON ∈ {0; 1} + [0]._C4_ThrottleCmd{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._I3_Accelerator; ._O0_Throttle} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._L21_CruiseControl ∈ [--..--] + [0]._C4_ThrottleCmd._L20_CruiseControl ∈ {0; 1} + [0]._C4_ThrottleCmd._L22_CruiseControl ∈ [--..--] + [0]._C4_ThrottleCmd.ONRisingEdge ∈ {0; 1} + [0]._C4_ThrottleCmd._L26_CruiseControl ∈ {0} + [0]._C4_ThrottleCmd{._L1_CruiseControl; ._L2_CruiseControl; ._L19_CruiseControl; ._L25_CruiseControl; ._L24_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._M_init_0_CruiseControl ∈ {0} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._I0_Reset ∈ [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._O0_Throttle; ._L1_CruiseControl; ._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl; .ProportionnalAction; ._L22_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation.HoldIntegralAction ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L16_CruiseControl; ._L23_CruiseControl; ._L18_CruiseControl; ._L10_CruiseControl; ._L8_CruiseControl; .IntegralAction; ._L4_CruiseControl; ._L13_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L14_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L21_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._M_init_0_CruiseControl ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._I0_ThrottleIn; ._O0_ThrottleOut} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._O1_Saturate ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L18_CruiseControl; ._L12_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L7_CruiseControl ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L17_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L9_CruiseControl ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L6_CruiseControl; ._L8_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + {[0]._C4_ThrottleCmd{._C0_ThrottleRegulation._C0_SaturateThrottle._L13_CruiseControl; ._M_condact_2_CruiseControl}; [1]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel}} ∈ + [--..--] + [1]{._I6_Accel; ._I7_Brake; ._I8_Speed; ._O0_Cruise_speed; ._O1_Throttle_cmd} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]{._O2_Regul_ON; ._O3_Regul_OFF; ._O4_Regul_STDBY; ._L73_CruiseControl} ∈ + [--..--] + [1]{._L59_CruiseControl; ._L62_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]{.BrakePressed; .AcceleratorPressed; ._L61_CruiseControl; ._L60_CruiseControl; ._L58_CruiseControl} ∈ + [--..--] + [1]._L95_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]{.SpeedOutOffLimits; ._L82_CruiseControl; ._L83_CruiseControl; ._L84_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [1]._L96_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]{._L38_CruiseControl; ._L39_CruiseControl; ._L40_CruiseControl} ∈ + [--..--] + [1]{._L23_CruiseControl; .CruiseSpeed; ._L26_CruiseControl; ._L22_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]{._M_init_CruiseControl; ._C0_CruiseSpeedMgt{._I0_On; ._I1_Set; ._I2_QuickAccel; ._I3_QuickDecel}} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._I4_Speed; ._O0_CruiseSpeed; ._L1_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C0_CruiseSpeedMgt{._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._L21_CruiseControl; ._L10_CruiseControl; ._L12_CruiseControl; ._L13_CruiseControl; ._L15_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C0_CruiseSpeedMgt{._L16_CruiseControl; ._L4_CruiseControl; ._L17_CruiseControl} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._L11_CruiseControl; ._L14_CruiseControl; ._L19_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C0_CruiseSpeedMgt{._L18_CruiseControl; ._L5_CruiseControl; ._L20_CruiseControl} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._L9_CruiseControl; ._L8_CruiseControl; ._L7_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C0_CruiseSpeedMgt._M_init_0_CruiseControl ∈ [--..--] + [1]._C1_DetectPedalsPressed{._I0_Brake; ._I1_Accelerator} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C1_DetectPedalsPressed{._O0_BrakePressed; ._O1_AcceleratorPressed} ∈ + [--..--] + [1]._C1_DetectPedalsPressed{._L2_CruiseControl; ._L8_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C1_DetectPedalsPressed._L4_CruiseControl ∈ [--..--] + [1]._C1_DetectPedalsPressed{._L1_CruiseControl; ._L7_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C1_DetectPedalsPressed._L3_CruiseControl ∈ [--..--] + [1]._C2_DetectSpeedLimits._I0_speed ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C2_DetectSpeedLimits._O0_SpeedOutOffLimits ∈ [--..--] + [1]._C2_DetectSpeedLimits{._L7_CruiseControl; ._L13_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C2_DetectSpeedLimits._L8_CruiseControl ∈ [--..--] + [1]._C2_DetectSpeedLimits._L14_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]{._C2_DetectSpeedLimits{._L9_CruiseControl; ._L17_CruiseControl}; ._C3_CruiseStateMgt; ._M_condact_0_CruiseControl; ._C4_ThrottleCmd._I0_Regul_ON} ∈ + [--..--] + [1]._C4_ThrottleCmd{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._I3_Accelerator; ._O0_Throttle} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd{._L21_CruiseControl; ._L20_CruiseControl; ._L22_CruiseControl; .ONRisingEdge} ∈ + [--..--] + [1]._C4_ThrottleCmd{._L26_CruiseControl; ._L1_CruiseControl; ._L2_CruiseControl; ._L19_CruiseControl; ._L25_CruiseControl; ._L24_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd{._M_init_0_CruiseControl; ._C0_ThrottleRegulation._I0_Reset} ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._O0_Throttle; ._L1_CruiseControl; ._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl; .ProportionnalAction; ._L22_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation.HoldIntegralAction ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation{._L16_CruiseControl; ._L23_CruiseControl; ._L18_CruiseControl; ._L10_CruiseControl; ._L8_CruiseControl; .IntegralAction; ._L4_CruiseControl; ._L13_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation{._L14_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._L21_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._M_init_0_CruiseControl ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._I0_ThrottleIn; ._O0_ThrottleOut} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._O1_Saturate ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L18_CruiseControl; ._L12_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L7_CruiseControl ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L17_CruiseControl ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L9_CruiseControl ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L6_CruiseControl; ._L8_CruiseControl} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + [1]._C4_ThrottleCmd{._C0_ThrottleRegulation._C0_SaturateThrottle._L13_CruiseControl; ._M_condact_2_CruiseControl} ∈ + [--..--] +[from] Computing for function CruiseSpeedMgt +[from] Done for function CruiseSpeedMgt +[from] Computing for function CruiseStateMgt +[from] Done for function CruiseStateMgt +[from] Computing for function DetectPedalsPressed +[from] Done for function DetectPedalsPressed +[from] Computing for function DetectSpeedLimits +[from] Done for function DetectSpeedLimits +[from] Computing for function SaturateThrottle +[from] Done for function SaturateThrottle +[from] Computing for function ThrottleRegulation +[from] Done for function ThrottleRegulation +[from] Computing for function ThrottleCmd +[from] Done for function ThrottleCmd +[from] Computing for function CruiseControl +[from] Done for function CruiseControl +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function CruiseSpeedMgt: + S__C_{[0]._C0_CruiseSpeedMgt._O0_CruiseSpeed; + [0]._C0_CruiseSpeedMgt._L7_CruiseControl} + FROM ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; _C_; + S__C_{[0]._C0_CruiseSpeedMgt{._I0_On; ._I1_Set; ._I2_QuickAccel; ._I3_QuickDecel; ._I4_Speed}; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}} + [0]._C0_CruiseSpeedMgt._L1_CruiseControl + FROM _C_; S__C_[0]._C0_CruiseSpeedMgt._I4_Speed + [0]._C0_CruiseSpeedMgt._L2_CruiseControl + FROM _C_; S__C_[0]._C0_CruiseSpeedMgt._I1_Set + [0]._C0_CruiseSpeedMgt._L3_CruiseControl + FROM _C_; S__C_[0]._C0_CruiseSpeedMgt._I0_On + [0]._C0_CruiseSpeedMgt._L6_CruiseControl + FROM _C_; S__C_[0]._C0_CruiseSpeedMgt{._I0_On; ._I1_Set} + [0]._C0_CruiseSpeedMgt._L21_CruiseControl FROM ZeroSpeed; _C_ + [0]._C0_CruiseSpeedMgt._L10_CruiseControl + FROM ZeroSpeed; _C_; + S__C_[0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl} + {[0]._C0_CruiseSpeedMgt._L12_CruiseControl; + [0]._C0_CruiseSpeedMgt._L11_CruiseControl} + FROM SpeedInc; _C_ + {[0]._C0_CruiseSpeedMgt._L13_CruiseControl; + [0]._C0_CruiseSpeedMgt._L14_CruiseControl} + FROM ZeroSpeed; SpeedInc; _C_; + S__C_[0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl} + [0]._C0_CruiseSpeedMgt._L15_CruiseControl FROM SpeedMax; _C_ + [0]._C0_CruiseSpeedMgt._L16_CruiseControl + FROM ZeroSpeed; SpeedInc; SpeedMax; _C_; + S__C_[0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl} + [0]._C0_CruiseSpeedMgt._L4_CruiseControl + FROM _C_; S__C_[0]._C0_CruiseSpeedMgt._I2_QuickAccel + [0]._C0_CruiseSpeedMgt._L17_CruiseControl + FROM ZeroSpeed; SpeedInc; SpeedMax; _C_; + S__C_{[0]._C0_CruiseSpeedMgt._I2_QuickAccel; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}} + [0]._C0_CruiseSpeedMgt._L19_CruiseControl FROM SpeedMin; _C_ + [0]._C0_CruiseSpeedMgt._L18_CruiseControl + FROM ZeroSpeed; SpeedInc; SpeedMin; _C_; + S__C_[0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl} + [0]._C0_CruiseSpeedMgt._L5_CruiseControl + FROM _C_; S__C_[0]._C0_CruiseSpeedMgt._I3_QuickDecel + [0]._C0_CruiseSpeedMgt._L20_CruiseControl + FROM ZeroSpeed; SpeedInc; SpeedMin; _C_; + S__C_{[0]._C0_CruiseSpeedMgt._I3_QuickDecel; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}} + [0]._C0_CruiseSpeedMgt._L9_CruiseControl + FROM ZeroSpeed; SpeedInc; SpeedMin; _C_; + S__C_{[0]._C0_CruiseSpeedMgt._I3_QuickDecel; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}} + [0]._C0_CruiseSpeedMgt._L8_CruiseControl + FROM ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; _C_; + S__C_{[0]._C0_CruiseSpeedMgt{._I2_QuickAccel; ._I3_QuickDecel}; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}} + [0]._C0_CruiseSpeedMgt._M_init_0_CruiseControl FROM _C_ + \result FROM \nothing +[from] Function CruiseStateMgt: + S__C_{[0]._C3_CruiseStateMgt._O0_Regul_ON; + [0]._C3_CruiseStateMgt._O2_Regul_STDBY; + [0]._C3_CruiseStateMgt{._LE42_CruiseControl; ._LE6_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE44_CruiseControl; ._LE8_CruiseControl}} + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt{._I0_BrakePressed; ._I1_AcceleratorPressed; ._I2_Resume; ._I3_On; ._I4_Off; ._I5_SpeedOutOffLimits}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + {[0]._C3_CruiseStateMgt._O1_Regul_OFF; + [0]._C3_CruiseStateMgt{._LE39_CruiseControl; ._LE43_CruiseControl; ._LE7_CruiseControl}} + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._I0_BrakePressed; + [0]._C3_CruiseStateMgt{._I2_Resume; ._I3_On; ._I4_Off}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE24_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._LE23_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE0_CruiseControl + FROM _C_; S__C_[0]._C3_CruiseStateMgt._I0_BrakePressed + [0]._C3_CruiseStateMgt._LE4_CruiseControl + FROM _C_; S__C_[0]._C3_CruiseStateMgt._I4_Off + [0]._C3_CruiseStateMgt._LE40_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._LE39_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE26_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._LE25_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE28_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE9_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._LE25_CruiseControl; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE10_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE11_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt._LE39_CruiseControl; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE33_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._LE32_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE35_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._LE34_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE38_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE12_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._LE34_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE13_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE14_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt._LE39_CruiseControl; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + {[0]._C3_CruiseStateMgt._LE17_CruiseControl; + [0]._C3_CruiseStateMgt._LE29_CruiseControl; + [0]._C3_CruiseStateMgt._LE30_CruiseControl} + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._I4_Off; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt._LE39_CruiseControl; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE18_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._I0_BrakePressed; + [0]._C3_CruiseStateMgt._I4_Off; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt._LE39_CruiseControl; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE3_CruiseControl + FROM _C_; S__C_[0]._C3_CruiseStateMgt._I3_On + [0]._C3_CruiseStateMgt._LE16_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._LE15_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE41_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE19_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._I3_On; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE20_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._I3_On; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt._LE15_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE21_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._I0_BrakePressed; + [0]._C3_CruiseStateMgt{._I3_On; ._I4_Off}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE1_CruiseControl + FROM _C_; S__C_[0]._C3_CruiseStateMgt._I1_AcceleratorPressed + [0]._C3_CruiseStateMgt._LE5_CruiseControl + FROM _C_; S__C_[0]._C3_CruiseStateMgt._I5_SpeedOutOffLimits + [0]._C3_CruiseStateMgt._LE22_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._I1_AcceleratorPressed; + [0]._C3_CruiseStateMgt._I5_SpeedOutOffLimits} + {[0]._C3_CruiseStateMgt._LE23_CruiseControl; + [0]._C3_CruiseStateMgt._LE27_CruiseControl} + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt{._I0_BrakePressed; ._I1_AcceleratorPressed}; + [0]._C3_CruiseStateMgt{._I3_On; ._I4_Off; ._I5_SpeedOutOffLimits}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + {[0]._C3_CruiseStateMgt._LE25_CruiseControl; + [0]._C3_CruiseStateMgt._LE34_CruiseControl} + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt{._I0_BrakePressed; ._I1_AcceleratorPressed}; + [0]._C3_CruiseStateMgt{._I4_Off; ._I5_SpeedOutOffLimits}; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt._LE39_CruiseControl; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE2_CruiseControl + FROM _C_; S__C_[0]._C3_CruiseStateMgt._I2_Resume + [0]._C3_CruiseStateMgt._LE31_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._I2_Resume; + [0]._C3_CruiseStateMgt._I4_Off; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt._LE39_CruiseControl; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + {[0]._C3_CruiseStateMgt._LE32_CruiseControl; + [0]._C3_CruiseStateMgt{._LE36_CruiseControl; ._LE37_CruiseControl}} + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt{._I0_BrakePressed; ._I1_AcceleratorPressed; ._I2_Resume}; + [0]._C3_CruiseStateMgt{._I4_Off; ._I5_SpeedOutOffLimits}; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt._LE39_CruiseControl; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE15_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt{._I3_On; ._I4_Off}; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl FROM _C_ + \result FROM \nothing +[from] Function DetectPedalsPressed: + S__C_{[0]._C1_DetectPedalsPressed._O0_BrakePressed; + [0]._C1_DetectPedalsPressed._L4_CruiseControl} + FROM ZeroPercent; _C_; S__C_[0]._C1_DetectPedalsPressed._I0_Brake + {[0]._C1_DetectPedalsPressed._O1_AcceleratorPressed; + [0]._C1_DetectPedalsPressed._L3_CruiseControl} + FROM ZeroPercent; _C_; + S__C_[0]._C1_DetectPedalsPressed._I1_Accelerator + [0]._C1_DetectPedalsPressed._L2_CruiseControl + FROM _C_; S__C_[0]._C1_DetectPedalsPressed._I0_Brake + {[0]._C1_DetectPedalsPressed._L8_CruiseControl; + [0]._C1_DetectPedalsPressed._L7_CruiseControl} + FROM ZeroPercent; _C_ + [0]._C1_DetectPedalsPressed._L1_CruiseControl + FROM _C_; S__C_[0]._C1_DetectPedalsPressed._I1_Accelerator + \result FROM \nothing +[from] Function DetectSpeedLimits: + S__C_{[0]._C2_DetectSpeedLimits._O0_SpeedOutOffLimits; + [0]._C2_DetectSpeedLimits._L17_CruiseControl} + FROM SpeedMax; SpeedMin; _C_; S__C_[0]._C2_DetectSpeedLimits._I0_speed + [0]._C2_DetectSpeedLimits._L7_CruiseControl + FROM _C_; S__C_[0]._C2_DetectSpeedLimits._I0_speed + [0]._C2_DetectSpeedLimits._L13_CruiseControl FROM SpeedMin; _C_ + [0]._C2_DetectSpeedLimits._L8_CruiseControl + FROM SpeedMin; _C_; S__C_[0]._C2_DetectSpeedLimits._I0_speed + [0]._C2_DetectSpeedLimits._L14_CruiseControl FROM SpeedMax; _C_ + [0]._C2_DetectSpeedLimits._L9_CruiseControl + FROM SpeedMax; _C_; S__C_[0]._C2_DetectSpeedLimits._I0_speed + \result FROM \nothing +[from] Function SaturateThrottle: + S__C_{[0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._O0_ThrottleOut; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L8_CruiseControl} + FROM ZeroPercent; RegThrottleMax; _C_; + S__C_[0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._I0_ThrottleIn + {[0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._O1_Saturate; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L13_CruiseControl} + FROM ZeroPercent; RegThrottleMax; _C_; + S__C_[0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._I0_ThrottleIn + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L18_CruiseControl + FROM RegThrottleMax; _C_ + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L12_CruiseControl + FROM _C_; + S__C_[0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._I0_ThrottleIn + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L7_CruiseControl + FROM RegThrottleMax; _C_; + S__C_[0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._I0_ThrottleIn + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L17_CruiseControl + FROM ZeroPercent; _C_ + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L9_CruiseControl + FROM ZeroPercent; _C_; + S__C_[0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._I0_ThrottleIn + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L6_CruiseControl + FROM ZeroPercent; _C_; + S__C_[0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._I0_ThrottleIn + \result FROM \nothing +[from] Function ThrottleRegulation: + S__C_{[0]._C4_ThrottleCmd._C0_ThrottleRegulation._O0_Throttle; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L13_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._O0_ThrottleOut; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L8_CruiseControl} + FROM ZeroSpeed; ZeroPercent; Kp; Ki; RegThrottleMax; _C_; + S__C_{[0]._C4_ThrottleCmd._C0_ThrottleRegulation{._I1_CruiseSpeed; ._I2_VehiculeSpeed}; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L1_CruiseControl + FROM _C_; + S__C_[0]._C4_ThrottleCmd._C0_ThrottleRegulation._I1_CruiseSpeed + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L2_CruiseControl + FROM _C_; + S__C_[0]._C4_ThrottleCmd._C0_ThrottleRegulation._I2_VehiculeSpeed + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L3_CruiseControl + FROM _C_; + S__C_[0]._C4_ThrottleCmd._C0_ThrottleRegulation{._I1_CruiseSpeed; ._I2_VehiculeSpeed} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L6_CruiseControl + FROM Kp; _C_ + [0]._C4_ThrottleCmd._C0_ThrottleRegulation.ProportionnalAction + FROM Kp; _C_; + S__C_[0]._C4_ThrottleCmd._C0_ThrottleRegulation{._I1_CruiseSpeed; ._I2_VehiculeSpeed} + {[0]._C4_ThrottleCmd._C0_ThrottleRegulation._L22_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L23_CruiseControl} + FROM ZeroSpeed; _C_ + [0]._C4_ThrottleCmd._C0_ThrottleRegulation.HoldIntegralAction + FROM _C_; + S__C_{[0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._M_init_0_CruiseControl} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L16_CruiseControl + FROM ZeroSpeed; _C_; + S__C_{[0]._C4_ThrottleCmd._C0_ThrottleRegulation{._I1_CruiseSpeed; ._I2_VehiculeSpeed}; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._M_init_0_CruiseControl} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L18_CruiseControl + FROM ZeroSpeed; _C_; + S__C_[0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L10_CruiseControl + FROM ZeroSpeed; _C_; + S__C_{[0]._C4_ThrottleCmd._C0_ThrottleRegulation{._I1_CruiseSpeed; ._I2_VehiculeSpeed}; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L8_CruiseControl + FROM Ki; _C_ + [0]._C4_ThrottleCmd._C0_ThrottleRegulation.IntegralAction + FROM ZeroSpeed; Ki; _C_; + S__C_{[0]._C4_ThrottleCmd._C0_ThrottleRegulation{._I1_CruiseSpeed; ._I2_VehiculeSpeed}; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} + {[0]._C4_ThrottleCmd._C0_ThrottleRegulation._L4_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._I0_ThrottleIn; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L12_CruiseControl} + FROM ZeroSpeed; Kp; Ki; _C_; + S__C_{[0]._C4_ThrottleCmd._C0_ThrottleRegulation{._I1_CruiseSpeed; ._I2_VehiculeSpeed}; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} + {[0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._O1_Saturate; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L13_CruiseControl} + FROM ZeroSpeed; ZeroPercent; Kp; Ki; RegThrottleMax; _C_; + S__C_{[0]._C4_ThrottleCmd._C0_ThrottleRegulation{._I1_CruiseSpeed; ._I2_VehiculeSpeed}; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L19_CruiseControl + FROM _C_; S__C_[0]._C4_ThrottleCmd._C0_ThrottleRegulation._I0_Reset + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L21_CruiseControl + FROM ZeroSpeed; _C_; + S__C_{[0]._C4_ThrottleCmd._C0_ThrottleRegulation{._I0_Reset; ._I1_CruiseSpeed; ._I2_VehiculeSpeed}; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._M_init_0_CruiseControl + FROM _C_ + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L18_CruiseControl + FROM RegThrottleMax; _C_ + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L7_CruiseControl + FROM ZeroSpeed; Kp; Ki; RegThrottleMax; _C_; + S__C_{[0]._C4_ThrottleCmd._C0_ThrottleRegulation{._I1_CruiseSpeed; ._I2_VehiculeSpeed}; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L17_CruiseControl + FROM ZeroPercent; _C_ + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L9_CruiseControl + FROM ZeroSpeed; ZeroPercent; Kp; Ki; _C_; + S__C_{[0]._C4_ThrottleCmd._C0_ThrottleRegulation{._I1_CruiseSpeed; ._I2_VehiculeSpeed}; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L6_CruiseControl + FROM ZeroSpeed; ZeroPercent; Kp; Ki; _C_; + S__C_{[0]._C4_ThrottleCmd._C0_ThrottleRegulation{._I1_CruiseSpeed; ._I2_VehiculeSpeed}; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} + \result FROM \nothing +[from] Function ThrottleCmd: + S__C_{[0]._C4_ThrottleCmd._O0_Throttle; + [0]._C4_ThrottleCmd._L24_CruiseControl} + FROM ZeroSpeed; ZeroPercent; Kp; Ki; RegThrottleMax; _C_; + S__C_{[0]._C4_ThrottleCmd{._I0_Regul_ON; ._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._I3_Accelerator}; + [0]._C4_ThrottleCmd._L19_CruiseControl; + [0]._C4_ThrottleCmd._M_init_0_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} + {[0]._C4_ThrottleCmd._L21_CruiseControl; + [0]._C4_ThrottleCmd._L22_CruiseControl} + FROM _C_; + S__C_{[0]._C4_ThrottleCmd._L20_CruiseControl; + [0]._C4_ThrottleCmd._M_init_0_CruiseControl} + [0]._C4_ThrottleCmd._L20_CruiseControl + FROM _C_; S__C_[0]._C4_ThrottleCmd._I0_Regul_ON + [0]._C4_ThrottleCmd.ONRisingEdge + FROM _C_; + S__C_{[0]._C4_ThrottleCmd._I0_Regul_ON; + [0]._C4_ThrottleCmd._L20_CruiseControl; + [0]._C4_ThrottleCmd._M_init_0_CruiseControl} + [0]._C4_ThrottleCmd._L26_CruiseControl FROM ZeroPercent; _C_ + [0]._C4_ThrottleCmd._L1_CruiseControl + FROM _C_; S__C_[0]._C4_ThrottleCmd._I1_CruiseSpeed + [0]._C4_ThrottleCmd._L2_CruiseControl + FROM _C_; S__C_[0]._C4_ThrottleCmd._I2_VehiculeSpeed + [0]._C4_ThrottleCmd._L19_CruiseControl + FROM ZeroSpeed; ZeroPercent; Kp; Ki; RegThrottleMax; _C_; + S__C_{[0]._C4_ThrottleCmd{._I0_Regul_ON; ._I1_CruiseSpeed; ._I2_VehiculeSpeed}; + [0]._C4_ThrottleCmd._M_init_0_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} (and SELF) + [0]._C4_ThrottleCmd._L25_CruiseControl + FROM _C_; + S__C_{[0]._C4_ThrottleCmd._I0_Regul_ON; + [0]._C4_ThrottleCmd._I3_Accelerator} + [0]._C4_ThrottleCmd._M_init_0_CruiseControl + FROM _C_; S__C_[0]._C4_ThrottleCmd._I0_Regul_ON + {[0]._C4_ThrottleCmd._C0_ThrottleRegulation._I0_Reset; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L19_CruiseControl} + FROM _C_; + S__C_{[0]._C4_ThrottleCmd._I0_Regul_ON; + [0]._C4_ThrottleCmd._L20_CruiseControl; + [0]._C4_ThrottleCmd._M_init_0_CruiseControl} (and SELF) + {[0]._C4_ThrottleCmd._C0_ThrottleRegulation._I1_CruiseSpeed; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L1_CruiseControl} + FROM _C_; + S__C_[0]._C4_ThrottleCmd{._I0_Regul_ON; ._I1_CruiseSpeed} (and SELF) + {[0]._C4_ThrottleCmd._C0_ThrottleRegulation._I2_VehiculeSpeed; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L2_CruiseControl} + FROM _C_; + S__C_{[0]._C4_ThrottleCmd._I0_Regul_ON; + [0]._C4_ThrottleCmd._I2_VehiculeSpeed} (and SELF) + {[0]._C4_ThrottleCmd._C0_ThrottleRegulation._O0_Throttle; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L13_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._O0_ThrottleOut; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L8_CruiseControl} + FROM ZeroSpeed; ZeroPercent; Kp; Ki; RegThrottleMax; _C_; + S__C_{[0]._C4_ThrottleCmd{._I0_Regul_ON; ._I1_CruiseSpeed; ._I2_VehiculeSpeed}; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L3_CruiseControl + FROM _C_; + S__C_[0]._C4_ThrottleCmd{._I0_Regul_ON; ._I1_CruiseSpeed; ._I2_VehiculeSpeed} (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L6_CruiseControl + FROM Kp; _C_; S__C_[0]._C4_ThrottleCmd._I0_Regul_ON (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation.ProportionnalAction + FROM Kp; _C_; + S__C_[0]._C4_ThrottleCmd{._I0_Regul_ON; ._I1_CruiseSpeed; ._I2_VehiculeSpeed} (and SELF) + {[0]._C4_ThrottleCmd._C0_ThrottleRegulation._L22_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L23_CruiseControl} + FROM ZeroSpeed; _C_; S__C_[0]._C4_ThrottleCmd._I0_Regul_ON (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation.HoldIntegralAction + FROM _C_; + S__C_{[0]._C4_ThrottleCmd._I0_Regul_ON; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._M_init_0_CruiseControl} (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L16_CruiseControl + FROM ZeroSpeed; _C_; + S__C_{[0]._C4_ThrottleCmd{._I0_Regul_ON; ._I1_CruiseSpeed; ._I2_VehiculeSpeed}; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._M_init_0_CruiseControl} (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L18_CruiseControl + FROM ZeroSpeed; _C_; + S__C_{[0]._C4_ThrottleCmd._I0_Regul_ON; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L10_CruiseControl + FROM ZeroSpeed; _C_; + S__C_{[0]._C4_ThrottleCmd{._I0_Regul_ON; ._I1_CruiseSpeed; ._I2_VehiculeSpeed}; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L8_CruiseControl + FROM Ki; _C_; S__C_[0]._C4_ThrottleCmd._I0_Regul_ON (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation.IntegralAction + FROM ZeroSpeed; Ki; _C_; + S__C_{[0]._C4_ThrottleCmd{._I0_Regul_ON; ._I1_CruiseSpeed; ._I2_VehiculeSpeed}; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} (and SELF) + {[0]._C4_ThrottleCmd._C0_ThrottleRegulation._L4_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._I0_ThrottleIn; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L12_CruiseControl} + FROM ZeroSpeed; Kp; Ki; _C_; + S__C_{[0]._C4_ThrottleCmd{._I0_Regul_ON; ._I1_CruiseSpeed; ._I2_VehiculeSpeed}; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} (and SELF) + {[0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._O1_Saturate; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L13_CruiseControl} + FROM ZeroSpeed; ZeroPercent; Kp; Ki; RegThrottleMax; _C_; + S__C_{[0]._C4_ThrottleCmd{._I0_Regul_ON; ._I1_CruiseSpeed; ._I2_VehiculeSpeed}; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L21_CruiseControl + FROM ZeroSpeed; _C_; + S__C_{[0]._C4_ThrottleCmd{._I0_Regul_ON; ._I1_CruiseSpeed; ._I2_VehiculeSpeed}; + [0]._C4_ThrottleCmd._L20_CruiseControl; + [0]._C4_ThrottleCmd._M_init_0_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} (and SELF) + {[0]._C4_ThrottleCmd._C0_ThrottleRegulation._M_init_0_CruiseControl; + [0]._C4_ThrottleCmd._M_condact_2_CruiseControl} + FROM _C_; S__C_[0]._C4_ThrottleCmd._I0_Regul_ON (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L18_CruiseControl + FROM RegThrottleMax; _C_; + S__C_[0]._C4_ThrottleCmd._I0_Regul_ON (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L7_CruiseControl + FROM ZeroSpeed; Kp; Ki; RegThrottleMax; _C_; + S__C_{[0]._C4_ThrottleCmd{._I0_Regul_ON; ._I1_CruiseSpeed; ._I2_VehiculeSpeed}; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L17_CruiseControl + FROM ZeroPercent; _C_; + S__C_[0]._C4_ThrottleCmd._I0_Regul_ON (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L9_CruiseControl + FROM ZeroSpeed; ZeroPercent; Kp; Ki; _C_; + S__C_{[0]._C4_ThrottleCmd{._I0_Regul_ON; ._I1_CruiseSpeed; ._I2_VehiculeSpeed}; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L6_CruiseControl + FROM ZeroSpeed; ZeroPercent; Kp; Ki; _C_; + S__C_{[0]._C4_ThrottleCmd{._I0_Regul_ON; ._I1_CruiseSpeed; ._I2_VehiculeSpeed}; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} (and SELF) + \result FROM _C_; S__C_[0]._C4_ThrottleCmd._I0_Regul_ON +[from] Function CruiseControl: + S__C_{[0]._O0_Cruise_speed; [0]._C4_ThrottleCmd._I1_CruiseSpeed; + [0]._C4_ThrottleCmd._L1_CruiseControl} + FROM ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel; ._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0].CruiseSpeed; [0]._M_init_CruiseControl; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + {[0]._O1_Throttle_cmd; [0]._L22_CruiseControl; + [0]._C4_ThrottleCmd._O0_Throttle; + [0]._C4_ThrottleCmd._L24_CruiseControl} + FROM ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; ZeroPercent; Kp; + Ki; RegThrottleMax; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel; ._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0].CruiseSpeed; [0]._M_init_CruiseControl; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl; + [0]._C4_ThrottleCmd._L19_CruiseControl; + [0]._C4_ThrottleCmd._M_init_0_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} + {[0]._O2_Regul_ON; [0]._O4_Regul_STDBY; + [0]._C4_ThrottleCmd._I0_Regul_ON; + [0]._C4_ThrottleCmd._L20_CruiseControl} + FROM SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._O3_Regul_OFF + FROM SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + {[0]._L73_CruiseControl; [0]._L60_CruiseControl; + [0]._C3_CruiseStateMgt._I3_On; + [0]._C3_CruiseStateMgt._LE3_CruiseControl} + FROM _C_; S__C_[0]._I0_On + {[0]._L59_CruiseControl; [0]._C1_DetectPedalsPressed._I0_Brake; + [0]._C1_DetectPedalsPressed._L2_CruiseControl} + FROM _C_; S__C_[0]._I7_Brake + {[0]._L62_CruiseControl; [0]._C1_DetectPedalsPressed._I1_Accelerator; + [0]._C1_DetectPedalsPressed._L1_CruiseControl} + FROM _C_; S__C_[0]._I6_Accel + {[0].BrakePressed; [0]._C1_DetectPedalsPressed._O0_BrakePressed; + [0]._C1_DetectPedalsPressed._L4_CruiseControl; + [0]._C3_CruiseStateMgt._I0_BrakePressed; + [0]._C3_CruiseStateMgt._LE0_CruiseControl} + FROM ZeroPercent; _C_; S__C_[0]._I7_Brake + {[0].AcceleratorPressed; + [0]._C1_DetectPedalsPressed._O1_AcceleratorPressed; + [0]._C1_DetectPedalsPressed._L3_CruiseControl; + [0]._C3_CruiseStateMgt._I1_AcceleratorPressed; + [0]._C3_CruiseStateMgt._LE1_CruiseControl} + FROM ZeroPercent; _C_; S__C_[0]._I6_Accel + {[0]._L61_CruiseControl; [0]._C3_CruiseStateMgt._I2_Resume; + [0]._C3_CruiseStateMgt._LE2_CruiseControl} + FROM _C_; S__C_[0]._I2_Resume + {[0]._L58_CruiseControl; [0]._C3_CruiseStateMgt._I4_Off; + [0]._C3_CruiseStateMgt._LE4_CruiseControl} + FROM _C_; S__C_[0]._I1_Off + {[0]._L95_CruiseControl; [0]._L23_CruiseControl; + [0]._C2_DetectSpeedLimits._I0_speed; + [0]._C2_DetectSpeedLimits._L7_CruiseControl} + FROM _C_; S__C_[0]._I8_Speed + {[0].SpeedOutOffLimits; + [0]._C2_DetectSpeedLimits._O0_SpeedOutOffLimits; + [0]._C2_DetectSpeedLimits._L17_CruiseControl; + [0]._C3_CruiseStateMgt._I5_SpeedOutOffLimits; + [0]._C3_CruiseStateMgt._LE5_CruiseControl} + FROM SpeedMax; SpeedMin; _C_; S__C_[0]._I8_Speed + {[0]._L82_CruiseControl; + [0]{._L84_CruiseControl; ._L19_CruiseControl}; + [0]._C3_CruiseStateMgt._O0_Regul_ON; + [0]._C3_CruiseStateMgt._O2_Regul_STDBY; + [0]._C3_CruiseStateMgt{._LE42_CruiseControl; ._LE6_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE44_CruiseControl; ._LE8_CruiseControl}} + FROM SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + {[0]._L83_CruiseControl; [0]._C3_CruiseStateMgt._O1_Regul_OFF; + [0]._C3_CruiseStateMgt{._LE39_CruiseControl; ._LE43_CruiseControl; ._LE7_CruiseControl}} + FROM ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; [0]._I7_Brake; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._L96_CruiseControl FROM ZeroSpeed; _C_ + [0]._L38_CruiseControl FROM _C_; S__C_[0]._I3_Set + [0]._L39_CruiseControl FROM _C_; S__C_[0]._I4_QuickAccel + [0]._L40_CruiseControl FROM _C_; S__C_[0]._I5_QuickDecel + [0].CruiseSpeed + FROM ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel; ._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._M_init_CruiseControl; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} (and SELF) + {[0]._L26_CruiseControl; [0]._C4_ThrottleCmd._I3_Accelerator; + [0]._C4_ThrottleCmd._L25_CruiseControl} + FROM SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + {[0]._M_init_CruiseControl; + [0]._C4_ThrottleCmd._M_init_0_CruiseControl} + FROM SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + {[0]._C0_CruiseSpeedMgt._I0_On; + [0]._C0_CruiseSpeedMgt._L3_CruiseControl} + FROM SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} (and SELF) + {[0]._C0_CruiseSpeedMgt._I1_Set; + [0]._C0_CruiseSpeedMgt._L2_CruiseControl} + FROM SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} (and SELF) + {[0]._C0_CruiseSpeedMgt._I2_QuickAccel; + [0]._C0_CruiseSpeedMgt._L4_CruiseControl} + FROM SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; [0]._I4_QuickAccel; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} (and SELF) + {[0]._C0_CruiseSpeedMgt._I3_QuickDecel; + [0]._C0_CruiseSpeedMgt._L5_CruiseControl} + FROM SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I5_QuickDecel; ._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} (and SELF) + {[0]._C0_CruiseSpeedMgt._I4_Speed; + [0]._C0_CruiseSpeedMgt._L1_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._I2_VehiculeSpeed; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L2_CruiseControl} + FROM SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} (and SELF) + {[0]._C0_CruiseSpeedMgt._O0_CruiseSpeed; + [0]._C0_CruiseSpeedMgt._L7_CruiseControl} + FROM ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel; ._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} (and SELF) + [0]._C0_CruiseSpeedMgt._L6_CruiseControl + FROM SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} (and SELF) + {[0]._C0_CruiseSpeedMgt._L21_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L22_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L23_CruiseControl} + FROM ZeroSpeed; SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} (and SELF) + [0]._C0_CruiseSpeedMgt._L10_CruiseControl + FROM ZeroSpeed; SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} (and SELF) + {[0]._C0_CruiseSpeedMgt._L12_CruiseControl; + [0]._C0_CruiseSpeedMgt._L11_CruiseControl} + FROM SpeedInc; SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} (and SELF) + {[0]._C0_CruiseSpeedMgt._L13_CruiseControl; + [0]._C0_CruiseSpeedMgt._L14_CruiseControl} + FROM ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} (and SELF) + [0]._C0_CruiseSpeedMgt._L15_CruiseControl + FROM SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} (and SELF) + [0]._C0_CruiseSpeedMgt._L16_CruiseControl + FROM ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} (and SELF) + [0]._C0_CruiseSpeedMgt._L17_CruiseControl + FROM ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; [0]._I4_QuickAccel; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} (and SELF) + [0]._C0_CruiseSpeedMgt._L19_CruiseControl + FROM SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} (and SELF) + [0]._C0_CruiseSpeedMgt._L18_CruiseControl + FROM ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} (and SELF) + [0]._C0_CruiseSpeedMgt._L20_CruiseControl + FROM ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I5_QuickDecel; ._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} (and SELF) + [0]._C0_CruiseSpeedMgt._L9_CruiseControl + FROM ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I5_QuickDecel; ._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} (and SELF) + [0]._C0_CruiseSpeedMgt._L8_CruiseControl + FROM ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I4_QuickAccel; ._I5_QuickDecel; ._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} (and SELF) + {[0]._C0_CruiseSpeedMgt._M_init_0_CruiseControl; + [0]._M_condact_0_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._M_init_0_CruiseControl; + [0]._C4_ThrottleCmd._M_condact_2_CruiseControl} + FROM SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} (and SELF) + {[0]._C1_DetectPedalsPressed._L8_CruiseControl; + [0]._C1_DetectPedalsPressed._L7_CruiseControl} + FROM ZeroPercent; _C_ + [0]._C2_DetectSpeedLimits._L13_CruiseControl FROM SpeedMin; _C_ + [0]._C2_DetectSpeedLimits._L8_CruiseControl + FROM SpeedMin; _C_; S__C_[0]._I8_Speed + [0]._C2_DetectSpeedLimits._L14_CruiseControl FROM SpeedMax; _C_ + [0]._C2_DetectSpeedLimits._L9_CruiseControl + FROM SpeedMax; _C_; S__C_[0]._I8_Speed + [0]._C3_CruiseStateMgt._LE24_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._LE23_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE40_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._LE39_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE26_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._LE25_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE28_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE9_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._LE25_CruiseControl; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE10_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE11_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt._LE39_CruiseControl; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE33_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._LE32_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE35_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._LE34_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE38_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE12_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._LE34_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE13_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE14_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt._LE39_CruiseControl; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + {[0]._C3_CruiseStateMgt._LE17_CruiseControl; + [0]._C3_CruiseStateMgt._LE29_CruiseControl; + [0]._C3_CruiseStateMgt._LE30_CruiseControl} + FROM _C_; + S__C_{[0]._I1_Off; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt._LE39_CruiseControl; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE18_CruiseControl + FROM ZeroPercent; _C_; + S__C_{[0]._I1_Off; [0]._I7_Brake; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt._LE39_CruiseControl; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE16_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._LE15_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE41_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE19_CruiseControl + FROM _C_; + S__C_{[0]._I0_On; [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE20_CruiseControl + FROM _C_; + S__C_{[0]._I0_On; [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt._LE15_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE21_CruiseControl + FROM ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off}; [0]._I7_Brake; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE22_CruiseControl + FROM SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]._I6_Accel; [0]._I8_Speed} + {[0]._C3_CruiseStateMgt._LE23_CruiseControl; + [0]._C3_CruiseStateMgt._LE27_CruiseControl} + FROM SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + {[0]._C3_CruiseStateMgt._LE25_CruiseControl; + [0]._C3_CruiseStateMgt._LE34_CruiseControl} + FROM SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]._I1_Off; [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt._LE39_CruiseControl; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE31_CruiseControl + FROM _C_; + S__C_{[0]{._I1_Off; ._I2_Resume}; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt._LE39_CruiseControl; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + {[0]._C3_CruiseStateMgt._LE32_CruiseControl; + [0]._C3_CruiseStateMgt{._LE36_CruiseControl; ._LE37_CruiseControl}} + FROM SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt._LE39_CruiseControl; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE15_CruiseControl + FROM _C_; + S__C_{[0]{._I0_On; ._I1_Off}; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl FROM _C_ + {[0]._C4_ThrottleCmd._I2_VehiculeSpeed; + [0]._C4_ThrottleCmd._L2_CruiseControl} + FROM SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + {[0]._C4_ThrottleCmd._L21_CruiseControl; + [0]._C4_ThrottleCmd._L22_CruiseControl} + FROM SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl; + [0]._C4_ThrottleCmd._L20_CruiseControl; + [0]._C4_ThrottleCmd._M_init_0_CruiseControl} + [0]._C4_ThrottleCmd.ONRisingEdge + FROM SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl; + [0]._C4_ThrottleCmd._L20_CruiseControl; + [0]._C4_ThrottleCmd._M_init_0_CruiseControl} + [0]._C4_ThrottleCmd._L26_CruiseControl + FROM SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C4_ThrottleCmd._L19_CruiseControl + FROM ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; ZeroPercent; Kp; + Ki; RegThrottleMax; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel; ._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0].CruiseSpeed; [0]._M_init_CruiseControl; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl; + [0]._C4_ThrottleCmd._M_init_0_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} (and SELF) + {[0]._C4_ThrottleCmd._C0_ThrottleRegulation._I0_Reset; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L19_CruiseControl} + FROM SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl; + [0]._C4_ThrottleCmd._L20_CruiseControl; + [0]._C4_ThrottleCmd._M_init_0_CruiseControl} (and SELF) + {[0]._C4_ThrottleCmd._C0_ThrottleRegulation._I1_CruiseSpeed; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L1_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L3_CruiseControl} + FROM ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel; ._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0].CruiseSpeed; [0]._M_init_CruiseControl; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} (and SELF) + {[0]._C4_ThrottleCmd._C0_ThrottleRegulation._O0_Throttle; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L13_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._O0_ThrottleOut; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L8_CruiseControl} + FROM ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; ZeroPercent; Kp; + Ki; RegThrottleMax; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel; ._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0].CruiseSpeed; [0]._M_init_CruiseControl; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L6_CruiseControl + FROM SpeedMax; SpeedMin; ZeroPercent; Kp; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation.ProportionnalAction + FROM ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; ZeroPercent; Kp; + _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel; ._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0].CruiseSpeed; [0]._M_init_CruiseControl; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation.HoldIntegralAction + FROM SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._M_init_0_CruiseControl} (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L16_CruiseControl + FROM ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel; ._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0].CruiseSpeed; [0]._M_init_CruiseControl; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._M_init_0_CruiseControl} (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L18_CruiseControl + FROM ZeroSpeed; SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L10_CruiseControl + FROM ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel; ._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0].CruiseSpeed; [0]._M_init_CruiseControl; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L8_CruiseControl + FROM SpeedMax; SpeedMin; ZeroPercent; Ki; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation.IntegralAction + FROM ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; ZeroPercent; Ki; + _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel; ._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0].CruiseSpeed; [0]._M_init_CruiseControl; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} (and SELF) + {[0]._C4_ThrottleCmd._C0_ThrottleRegulation._L4_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._I0_ThrottleIn; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L12_CruiseControl} + FROM ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; ZeroPercent; Kp; + Ki; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel; ._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0].CruiseSpeed; [0]._M_init_CruiseControl; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} (and SELF) + {[0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._O1_Saturate; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L13_CruiseControl} + FROM ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; ZeroPercent; Kp; + Ki; RegThrottleMax; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel; ._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0].CruiseSpeed; [0]._M_init_CruiseControl; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L21_CruiseControl + FROM ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel; ._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0].CruiseSpeed; [0]._M_init_CruiseControl; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl; + [0]._C4_ThrottleCmd._L20_CruiseControl; + [0]._C4_ThrottleCmd._M_init_0_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L18_CruiseControl + FROM SpeedMax; SpeedMin; ZeroPercent; RegThrottleMax; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L7_CruiseControl + FROM ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; ZeroPercent; Kp; + Ki; RegThrottleMax; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel; ._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0].CruiseSpeed; [0]._M_init_CruiseControl; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L17_CruiseControl + FROM SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L9_CruiseControl + FROM ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; ZeroPercent; Kp; + Ki; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel; ._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0].CruiseSpeed; [0]._M_init_CruiseControl; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L6_CruiseControl + FROM ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; ZeroPercent; Kp; + Ki; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel; ._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0].CruiseSpeed; [0]._M_init_CruiseControl; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} (and SELF) + \result FROM SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function CruiseSpeedMgt: + __retres; + S__C_[0]._C0_CruiseSpeedMgt{._O0_CruiseSpeed; ._L1_CruiseControl; ._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl; ._L21_CruiseControl; ._L10_CruiseControl; ._L12_CruiseControl; ._L13_CruiseControl; ._L15_CruiseControl; ._L16_CruiseControl; ._L4_CruiseControl; ._L17_CruiseControl; ._L11_CruiseControl; ._L14_CruiseControl; ._L19_CruiseControl; ._L18_CruiseControl; ._L5_CruiseControl; ._L20_CruiseControl; ._L9_CruiseControl; ._L8_CruiseControl; ._L7_CruiseControl; ._M_init_0_CruiseControl} +[inout] Inputs for function CruiseSpeedMgt: + ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; + S__C_{[0]._C0_CruiseSpeedMgt{._I0_On; ._I1_Set; ._I2_QuickAccel; ._I3_QuickDecel; ._I4_Speed}; + [0]._C0_CruiseSpeedMgt{._L1_CruiseControl; ._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl; ._L21_CruiseControl; ._L10_CruiseControl; ._L12_CruiseControl; ._L13_CruiseControl; ._L15_CruiseControl; ._L16_CruiseControl; ._L4_CruiseControl; ._L17_CruiseControl; ._L11_CruiseControl; ._L14_CruiseControl; ._L19_CruiseControl; ._L18_CruiseControl; ._L5_CruiseControl; ._L20_CruiseControl; ._L9_CruiseControl; ._L8_CruiseControl; ._L7_CruiseControl; ._M_init_0_CruiseControl}} +[inout] Out (internal) for function CruiseStateMgt: + __retres; + S__C_[0]._C3_CruiseStateMgt{._O0_Regul_ON; ._O1_Regul_OFF; ._O2_Regul_STDBY; ._LE24_CruiseControl; ._LE0_CruiseControl; ._LE4_CruiseControl; ._LE40_CruiseControl; ._LE26_CruiseControl; ._LE28_CruiseControl; ._LE9_CruiseControl; ._LE10_CruiseControl; ._LE11_CruiseControl; ._LE33_CruiseControl; ._LE35_CruiseControl; ._LE38_CruiseControl; ._LE12_CruiseControl; ._LE13_CruiseControl; ._LE14_CruiseControl; ._LE17_CruiseControl; ._LE18_CruiseControl; ._LE3_CruiseControl; ._LE16_CruiseControl; ._LE41_CruiseControl; ._LE19_CruiseControl; ._LE20_CruiseControl; ._LE21_CruiseControl; ._LE1_CruiseControl; ._LE5_CruiseControl; ._LE22_CruiseControl; ._LE23_CruiseControl; ._LE25_CruiseControl; ._LE29_CruiseControl; ._LE2_CruiseControl; ._LE30_CruiseControl; ._LE31_CruiseControl; ._LE32_CruiseControl; ._LE34_CruiseControl; ._LE42_CruiseControl; ._LE6_CruiseControl; ._LE15_CruiseControl; ._LE39_CruiseControl; ._LE43_CruiseControl; ._LE7_CruiseControl; ._LE27_CruiseControl; ._LE36_CruiseControl; ._LE37_CruiseControl; ._LE44_CruiseControl; ._LE8_CruiseControl; ._M_init_0_CruiseControl} +[inout] Inputs for function CruiseStateMgt: + S__C_{[0]._C3_CruiseStateMgt{._I0_BrakePressed; ._I1_AcceleratorPressed; ._I2_Resume; ._I3_On; ._I4_Off; ._I5_SpeedOutOffLimits}; + [0]._C3_CruiseStateMgt{._LE24_CruiseControl; ._LE0_CruiseControl; ._LE4_CruiseControl; ._LE40_CruiseControl; ._LE26_CruiseControl; ._LE28_CruiseControl; ._LE9_CruiseControl; ._LE10_CruiseControl; ._LE11_CruiseControl; ._LE33_CruiseControl; ._LE35_CruiseControl; ._LE38_CruiseControl; ._LE12_CruiseControl; ._LE13_CruiseControl; ._LE14_CruiseControl; ._LE17_CruiseControl; ._LE18_CruiseControl; ._LE3_CruiseControl; ._LE16_CruiseControl; ._LE41_CruiseControl; ._LE19_CruiseControl; ._LE20_CruiseControl; ._LE21_CruiseControl; ._LE1_CruiseControl; ._LE5_CruiseControl; ._LE22_CruiseControl; ._LE23_CruiseControl; ._LE25_CruiseControl; ._LE29_CruiseControl; ._LE2_CruiseControl; ._LE30_CruiseControl; ._LE31_CruiseControl; ._LE32_CruiseControl; ._LE34_CruiseControl; ._LE42_CruiseControl; ._LE6_CruiseControl; ._LE15_CruiseControl; ._LE39_CruiseControl; ._LE43_CruiseControl; ._LE7_CruiseControl; ._LE27_CruiseControl; ._LE36_CruiseControl; ._LE37_CruiseControl; ._LE44_CruiseControl; ._LE8_CruiseControl; ._M_init_0_CruiseControl}} +[inout] Out (internal) for function DetectPedalsPressed: + __retres; + S__C_[0]._C1_DetectPedalsPressed{._O0_BrakePressed; ._O1_AcceleratorPressed; ._L2_CruiseControl; ._L8_CruiseControl; ._L4_CruiseControl; ._L1_CruiseControl; ._L7_CruiseControl; ._L3_CruiseControl} +[inout] Inputs for function DetectPedalsPressed: + ZeroPercent; + S__C_{[0]._C1_DetectPedalsPressed{._I0_Brake; ._I1_Accelerator}; + [0]._C1_DetectPedalsPressed{._L2_CruiseControl; ._L8_CruiseControl; ._L4_CruiseControl; ._L1_CruiseControl; ._L7_CruiseControl; ._L3_CruiseControl}} +[inout] Out (internal) for function DetectSpeedLimits: + __retres; + S__C_[0]._C2_DetectSpeedLimits{._O0_SpeedOutOffLimits; ._L7_CruiseControl; ._L13_CruiseControl; ._L8_CruiseControl; ._L14_CruiseControl; ._L9_CruiseControl; ._L17_CruiseControl} +[inout] Inputs for function DetectSpeedLimits: + SpeedMax; SpeedMin; + S__C_{[0]._C2_DetectSpeedLimits._I0_speed; + [0]._C2_DetectSpeedLimits{._L7_CruiseControl; ._L13_CruiseControl; ._L8_CruiseControl; ._L14_CruiseControl; ._L9_CruiseControl; ._L17_CruiseControl}} +[inout] Out (internal) for function SaturateThrottle: + __retres; + S__C_[0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._O0_ThrottleOut; ._O1_Saturate; ._L18_CruiseControl; ._L12_CruiseControl; ._L7_CruiseControl; ._L17_CruiseControl; ._L9_CruiseControl; ._L6_CruiseControl; ._L8_CruiseControl; ._L13_CruiseControl} +[inout] Inputs for function SaturateThrottle: + ZeroPercent; RegThrottleMax; + S__C_{[0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._I0_ThrottleIn; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L18_CruiseControl; ._L12_CruiseControl; ._L7_CruiseControl; ._L17_CruiseControl; ._L9_CruiseControl; ._L6_CruiseControl; ._L8_CruiseControl; ._L13_CruiseControl}} +[inout] Out (internal) for function ThrottleRegulation: + tmp; __retres; + S__C_[0]._C4_ThrottleCmd._C0_ThrottleRegulation{._O0_Throttle; ._L1_CruiseControl; ._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl; .ProportionnalAction; ._L22_CruiseControl; .HoldIntegralAction; ._L16_CruiseControl; ._L23_CruiseControl; ._L18_CruiseControl; ._L10_CruiseControl; ._L8_CruiseControl; .IntegralAction; ._L4_CruiseControl; ._L13_CruiseControl; ._L14_CruiseControl; ._L19_CruiseControl; ._L21_CruiseControl; ._M_init_0_CruiseControl; ._C0_SaturateThrottle} +[inout] Inputs for function ThrottleRegulation: + ZeroSpeed; ZeroPercent; Kp; Ki; RegThrottleMax; + S__C_{[0]._C4_ThrottleCmd._C0_ThrottleRegulation{._I0_Reset; ._I1_CruiseSpeed; ._I2_VehiculeSpeed}; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L1_CruiseControl; ._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl; .ProportionnalAction; ._L22_CruiseControl; .HoldIntegralAction; ._L16_CruiseControl; ._L23_CruiseControl; ._L18_CruiseControl; ._L10_CruiseControl; ._L8_CruiseControl; .IntegralAction; ._L4_CruiseControl; ._L13_CruiseControl; ._L14_CruiseControl; ._L19_CruiseControl; ._L21_CruiseControl; ._M_init_0_CruiseControl; ._C0_SaturateThrottle}} +[inout] Out (internal) for function ThrottleCmd: + tmp; __retres; + S__C_[0]._C4_ThrottleCmd{._O0_Throttle; ._L21_CruiseControl; ._L20_CruiseControl; ._L22_CruiseControl; .ONRisingEdge; ._L26_CruiseControl; ._L1_CruiseControl; ._L2_CruiseControl; ._L19_CruiseControl; ._L25_CruiseControl; ._L24_CruiseControl; ._M_init_0_CruiseControl; ._C0_ThrottleRegulation; ._M_condact_2_CruiseControl} +[inout] Inputs for function ThrottleCmd: + ZeroSpeed; ZeroPercent; Kp; Ki; RegThrottleMax; + S__C_{[0]._C4_ThrottleCmd{._I0_Regul_ON; ._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._I3_Accelerator}; + [0]._C4_ThrottleCmd{._L21_CruiseControl; ._L20_CruiseControl; ._L22_CruiseControl; .ONRisingEdge; ._L26_CruiseControl; ._L1_CruiseControl; ._L2_CruiseControl; ._L19_CruiseControl; ._L25_CruiseControl; ._L24_CruiseControl; ._M_init_0_CruiseControl; ._C0_ThrottleRegulation}} +[inout] Out (internal) for function CruiseControl: + tmp; tmp_0; tmp_1; tmp_2; tmp_3; __retres; + S__C_[0]{._O0_Cruise_speed; ._O1_Throttle_cmd; ._O2_Regul_ON; ._O3_Regul_OFF; ._O4_Regul_STDBY; ._L73_CruiseControl; ._L59_CruiseControl; ._L62_CruiseControl; .BrakePressed; .AcceleratorPressed; ._L61_CruiseControl; ._L60_CruiseControl; ._L58_CruiseControl; ._L95_CruiseControl; .SpeedOutOffLimits; ._L82_CruiseControl; ._L83_CruiseControl; ._L84_CruiseControl; ._L19_CruiseControl; ._L96_CruiseControl; ._L38_CruiseControl; ._L39_CruiseControl; ._L40_CruiseControl; ._L23_CruiseControl; .CruiseSpeed; ._L26_CruiseControl; ._L22_CruiseControl; ._M_init_CruiseControl; ._C0_CruiseSpeedMgt; ._C1_DetectPedalsPressed; ._C2_DetectSpeedLimits; ._C3_CruiseStateMgt; ._M_condact_0_CruiseControl; ._C4_ThrottleCmd} +[inout] Inputs for function CruiseControl: + ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; ZeroPercent; Kp; Ki; + RegThrottleMax; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel; ._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]{._L73_CruiseControl; ._L59_CruiseControl; ._L62_CruiseControl; .BrakePressed; .AcceleratorPressed; ._L61_CruiseControl; ._L60_CruiseControl; ._L58_CruiseControl; ._L95_CruiseControl; .SpeedOutOffLimits; ._L82_CruiseControl; ._L83_CruiseControl; ._L84_CruiseControl; ._L19_CruiseControl; ._L96_CruiseControl; ._L38_CruiseControl; ._L39_CruiseControl; ._L40_CruiseControl; ._L23_CruiseControl; .CruiseSpeed; ._L26_CruiseControl; ._L22_CruiseControl; ._M_init_CruiseControl; ._C0_CruiseSpeedMgt; ._C1_DetectPedalsPressed; ._C2_DetectSpeedLimits; ._C3_CruiseStateMgt}; + [0]._C4_ThrottleCmd{._I0_Regul_ON; ._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._I3_Accelerator; ._O0_Throttle; ._L21_CruiseControl; ._L20_CruiseControl; ._L22_CruiseControl; .ONRisingEdge; ._L26_CruiseControl; ._L1_CruiseControl; ._L2_CruiseControl; ._L19_CruiseControl; ._L25_CruiseControl; ._L24_CruiseControl; ._M_init_0_CruiseControl; ._C0_ThrottleRegulation}} diff --git a/tests/value/oracle_symblocs/CruiseControl.1.err.oracle b/tests/value/oracle_symblocs/CruiseControl.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/CruiseControl.1.res.oracle b/tests/value/oracle_symblocs/CruiseControl.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..4f95c77137842151b8c44d8e390b86e61e3ebb43 --- /dev/null +++ b/tests/value/oracle_symblocs/CruiseControl.1.res.oracle @@ -0,0 +1,3348 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/CruiseControl.c (with preprocessing) +tests/value/CruiseControl.c:577:[kernel] warning: Floating-point constant 8.113 is not represented exactly. Will use 0x1.039db22d0e560p3. See documentation for option -warn-decimal-float +[kernel] Parsing tests/value/CruiseControl_const.c (with preprocessing) +[value] Analyzing an incomplete application starting at CruiseControl +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + ZeroSpeed ∈ {0} + SpeedInc ∈ {0x1.0000000000000p1} + SpeedMax ∈ {0x1.2c00000000000p7} + SpeedMin ∈ {0x1.e000000000000p4} + ZeroPercent ∈ {0} + Kp ∈ [0x1.039db20000000p3 .. 0x1.039db40000000p3] + Ki ∈ {0x1.0000000000000p-1} + RegThrottleMax ∈ {0x1.6800000000000p5} +[value] computing for function DetectPedalsPressed <- CruiseControl. + Called from tests/value/CruiseControl.c:462. +[value] Recording results for DetectPedalsPressed +[value] Done for function DetectPedalsPressed +[value] computing for function DetectSpeedLimits <- CruiseControl. + Called from tests/value/CruiseControl.c:473. +[value] Recording results for DetectSpeedLimits +[value] Done for function DetectSpeedLimits +[value] computing for function CruiseStateMgt <- CruiseControl. + Called from tests/value/CruiseControl.c:486. +[value] Recording results for CruiseStateMgt +[value] Done for function CruiseStateMgt +[value] computing for function CruiseSpeedMgt <- CruiseControl. + Called from tests/value/CruiseControl.c:508. +tests/value/CruiseControl.c:100:[value] warning: non-finite float value. + assert \is_finite((float)(_C_->_L10_CruiseControl+_C_->_L12_CruiseControl)); +tests/value/CruiseControl.c:109:[value] warning: non-finite float value. + assert \is_finite((float)(_C_->_L10_CruiseControl-_C_->_L11_CruiseControl)); +[value] Recording results for CruiseSpeedMgt +[value] Done for function CruiseSpeedMgt +[value] computing for function ThrottleCmd <- CruiseControl. + Called from tests/value/CruiseControl.c:525. +[value] computing for function ThrottleRegulation <- ThrottleCmd <- CruiseControl. + Called from tests/value/CruiseControl.c:242. +tests/value/CruiseControl.c:172:[value] warning: non-finite float value. + assert \is_finite((float)(_C_->_L1_CruiseControl-_C_->_L2_CruiseControl)); +tests/value/CruiseControl.c:175:[value] warning: non-finite float value. + assert \is_finite((float)(_C_->_L3_CruiseControl*_C_->_L6_CruiseControl)); +tests/value/CruiseControl.c:194:[value] warning: non-finite float value. + assert \is_finite((float)(_C_->_L16_CruiseControl+_C_->_L18_CruiseControl)); +tests/value/CruiseControl.c:199:[value] warning: non-finite float value. + assert \is_finite((float)(_C_->ProportionnalAction+_C_->IntegralAction)); +[value] computing for function SaturateThrottle <- ThrottleRegulation <- + ThrottleCmd <- CruiseControl. + Called from tests/value/CruiseControl.c:202. +tests/value/CruiseControl.c:162:[value] warning: assertion got status unknown. +[value] Recording results for SaturateThrottle +[value] Done for function SaturateThrottle +[value] Recording results for ThrottleRegulation +[value] Done for function ThrottleRegulation +[value] Recording results for ThrottleCmd +[value] Done for function ThrottleCmd +[value] Recording results for CruiseControl +[value] done for function CruiseControl +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function CruiseSpeedMgt: + __retres ∈ {1} + S__C_[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel} ∈ + [--..--] + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed; ._O0_Cruise_speed; ._O1_Throttle_cmd} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]{._O2_Regul_ON; ._O3_Regul_OFF; ._O4_Regul_STDBY; ._L73_CruiseControl} ∈ + [--..--] + [0]{._L59_CruiseControl; ._L62_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]{.BrakePressed; .AcceleratorPressed} ∈ {0; 1} + [0]{._L61_CruiseControl; ._L60_CruiseControl; ._L58_CruiseControl} ∈ + [--..--] + [0]._L95_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]{.SpeedOutOffLimits; ._L82_CruiseControl} ∈ {0; 1} + [0]{._L83_CruiseControl; ._L84_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [0]._L96_CruiseControl ∈ {0} + [0]{._L38_CruiseControl; ._L39_CruiseControl; ._L40_CruiseControl} ∈ + [--..--] + [0]{._L23_CruiseControl; .CruiseSpeed; ._L26_CruiseControl; ._L22_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]{._M_init_CruiseControl; ._C0_CruiseSpeedMgt{._I0_On; ._I1_Set; ._I2_QuickAccel; ._I3_QuickDecel}} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._I4_Speed; ._O0_CruiseSpeed; ._L1_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C0_CruiseSpeedMgt{._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt._L21_CruiseControl ∈ {0} + [0]._C0_CruiseSpeedMgt._L10_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C0_CruiseSpeedMgt._L12_CruiseControl ∈ {0x1.0000000000000p1} + [0]._C0_CruiseSpeedMgt._L13_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C0_CruiseSpeedMgt._L15_CruiseControl ∈ {0x1.2c00000000000p7} + [0]._C0_CruiseSpeedMgt._L16_CruiseControl ∈ {0; 1} + [0]._C0_CruiseSpeedMgt._L4_CruiseControl ∈ [--..--] + [0]._C0_CruiseSpeedMgt._L17_CruiseControl ∈ {0; 1} + [0]._C0_CruiseSpeedMgt._L11_CruiseControl ∈ {0x1.0000000000000p1} + [0]._C0_CruiseSpeedMgt._L14_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C0_CruiseSpeedMgt._L19_CruiseControl ∈ {0x1.e000000000000p4} + [0]._C0_CruiseSpeedMgt._L18_CruiseControl ∈ {0; 1} + [0]._C0_CruiseSpeedMgt._L5_CruiseControl ∈ [--..--] + [0]._C0_CruiseSpeedMgt._L20_CruiseControl ∈ {0; 1} + [0]._C0_CruiseSpeedMgt{._L9_CruiseControl; ._L8_CruiseControl; ._L7_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C0_CruiseSpeedMgt._M_init_0_CruiseControl ∈ {0} + [0]._C1_DetectPedalsPressed{._I0_Brake; ._I1_Accelerator} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C1_DetectPedalsPressed{._O0_BrakePressed; ._O1_AcceleratorPressed} ∈ + {0; 1} + [0]._C1_DetectPedalsPressed._L2_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C1_DetectPedalsPressed._L8_CruiseControl ∈ {0} + [0]._C1_DetectPedalsPressed._L4_CruiseControl ∈ {0; 1} + [0]._C1_DetectPedalsPressed._L1_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C1_DetectPedalsPressed._L7_CruiseControl ∈ {0} + [0]._C1_DetectPedalsPressed._L3_CruiseControl ∈ {0; 1} + [0]._C2_DetectSpeedLimits._I0_speed ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C2_DetectSpeedLimits._O0_SpeedOutOffLimits ∈ {0; 1} + [0]._C2_DetectSpeedLimits._L7_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C2_DetectSpeedLimits._L13_CruiseControl ∈ {0x1.e000000000000p4} + [0]._C2_DetectSpeedLimits._L8_CruiseControl ∈ {0; 1} + [0]._C2_DetectSpeedLimits._L14_CruiseControl ∈ {0x1.2c00000000000p7} + [0]{._C2_DetectSpeedLimits{._L9_CruiseControl; ._L17_CruiseControl}; ._C3_CruiseStateMgt{._I0_BrakePressed; ._I1_AcceleratorPressed}} ∈ + {0; 1} + [0]._C3_CruiseStateMgt{._I2_Resume; ._I3_On; ._I4_Off} ∈ [--..--] + [0]._C3_CruiseStateMgt{._I5_SpeedOutOffLimits; ._O0_Regul_ON} ∈ + {0; 1} + [0]._C3_CruiseStateMgt{._O1_Regul_OFF; ._O2_Regul_STDBY; ._LE24_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt._LE0_CruiseControl ∈ {0; 1} + [0]._C3_CruiseStateMgt{._LE4_CruiseControl; ._LE40_CruiseControl; ._LE26_CruiseControl; ._LE28_CruiseControl; ._LE9_CruiseControl; ._LE10_CruiseControl; ._LE11_CruiseControl; ._LE33_CruiseControl; ._LE35_CruiseControl; ._LE38_CruiseControl; ._LE12_CruiseControl; ._LE13_CruiseControl; ._LE14_CruiseControl; ._LE17_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt._LE18_CruiseControl ∈ {0; 1} + [0]._C3_CruiseStateMgt{._LE3_CruiseControl; ._LE16_CruiseControl; ._LE41_CruiseControl; ._LE19_CruiseControl; ._LE20_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt{._LE21_CruiseControl; ._LE1_CruiseControl; ._LE5_CruiseControl; ._LE22_CruiseControl; ._LE23_CruiseControl; ._LE25_CruiseControl} ∈ + {0; 1} + [0]._C3_CruiseStateMgt{._LE29_CruiseControl; ._LE2_CruiseControl; ._LE30_CruiseControl; ._LE31_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl; ._LE42_CruiseControl; ._LE6_CruiseControl} ∈ + {0; 1} + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl; ._LE43_CruiseControl; ._LE7_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt._LE27_CruiseControl ∈ {0; 1} + [0]._C3_CruiseStateMgt._LE36_CruiseControl ∈ [--..--] + [0]._C3_CruiseStateMgt._LE37_CruiseControl ∈ {0; 1} + [0]._C3_CruiseStateMgt{._LE44_CruiseControl; ._LE8_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl ∈ {0} + [0]{._M_condact_0_CruiseControl; ._C4_ThrottleCmd._I0_Regul_ON} ∈ + [--..--] + [0]._C4_ThrottleCmd{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._I3_Accelerator; ._O0_Throttle} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd{._L21_CruiseControl; ._L20_CruiseControl; ._L22_CruiseControl; .ONRisingEdge} ∈ + [--..--] + [0]._C4_ThrottleCmd{._L26_CruiseControl; ._L1_CruiseControl; ._L2_CruiseControl; ._L19_CruiseControl; ._L25_CruiseControl; ._L24_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd{._M_init_0_CruiseControl; ._C0_ThrottleRegulation._I0_Reset} ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._O0_Throttle; ._L1_CruiseControl; ._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl; .ProportionnalAction; ._L22_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation.HoldIntegralAction ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L16_CruiseControl; ._L23_CruiseControl; ._L18_CruiseControl; ._L10_CruiseControl; ._L8_CruiseControl; .IntegralAction; ._L4_CruiseControl; ._L13_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L14_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L21_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._M_init_0_CruiseControl ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._I0_ThrottleIn; ._O0_ThrottleOut} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._O1_Saturate ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L18_CruiseControl; ._L12_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L7_CruiseControl ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L17_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L9_CruiseControl ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L6_CruiseControl; ._L8_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + {[0]._C4_ThrottleCmd{._C0_ThrottleRegulation._C0_SaturateThrottle._L13_CruiseControl; ._M_condact_2_CruiseControl}; [1]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel}} ∈ + [--..--] + [1]{._I6_Accel; ._I7_Brake; ._I8_Speed; ._O0_Cruise_speed; ._O1_Throttle_cmd} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]{._O2_Regul_ON; ._O3_Regul_OFF; ._O4_Regul_STDBY; ._L73_CruiseControl} ∈ + [--..--] + [1]{._L59_CruiseControl; ._L62_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]{.BrakePressed; .AcceleratorPressed; ._L61_CruiseControl; ._L60_CruiseControl; ._L58_CruiseControl} ∈ + [--..--] + [1]._L95_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]{.SpeedOutOffLimits; ._L82_CruiseControl; ._L83_CruiseControl; ._L84_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [1]._L96_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]{._L38_CruiseControl; ._L39_CruiseControl; ._L40_CruiseControl} ∈ + [--..--] + [1]{._L23_CruiseControl; .CruiseSpeed; ._L26_CruiseControl; ._L22_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]{._M_init_CruiseControl; ._C0_CruiseSpeedMgt{._I0_On; ._I1_Set; ._I2_QuickAccel; ._I3_QuickDecel}} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._I4_Speed; ._O0_CruiseSpeed; ._L1_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C0_CruiseSpeedMgt{._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._L21_CruiseControl; ._L10_CruiseControl; ._L12_CruiseControl; ._L13_CruiseControl; ._L15_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C0_CruiseSpeedMgt{._L16_CruiseControl; ._L4_CruiseControl; ._L17_CruiseControl} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._L11_CruiseControl; ._L14_CruiseControl; ._L19_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C0_CruiseSpeedMgt{._L18_CruiseControl; ._L5_CruiseControl; ._L20_CruiseControl} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._L9_CruiseControl; ._L8_CruiseControl; ._L7_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C0_CruiseSpeedMgt._M_init_0_CruiseControl ∈ [--..--] + [1]._C1_DetectPedalsPressed{._I0_Brake; ._I1_Accelerator} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C1_DetectPedalsPressed{._O0_BrakePressed; ._O1_AcceleratorPressed} ∈ + [--..--] + [1]._C1_DetectPedalsPressed{._L2_CruiseControl; ._L8_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C1_DetectPedalsPressed._L4_CruiseControl ∈ [--..--] + [1]._C1_DetectPedalsPressed{._L1_CruiseControl; ._L7_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C1_DetectPedalsPressed._L3_CruiseControl ∈ [--..--] + [1]._C2_DetectSpeedLimits._I0_speed ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C2_DetectSpeedLimits._O0_SpeedOutOffLimits ∈ [--..--] + [1]._C2_DetectSpeedLimits{._L7_CruiseControl; ._L13_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C2_DetectSpeedLimits._L8_CruiseControl ∈ [--..--] + [1]._C2_DetectSpeedLimits._L14_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]{._C2_DetectSpeedLimits{._L9_CruiseControl; ._L17_CruiseControl}; ._C3_CruiseStateMgt; ._M_condact_0_CruiseControl; ._C4_ThrottleCmd._I0_Regul_ON} ∈ + [--..--] + [1]._C4_ThrottleCmd{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._I3_Accelerator; ._O0_Throttle} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd{._L21_CruiseControl; ._L20_CruiseControl; ._L22_CruiseControl; .ONRisingEdge} ∈ + [--..--] + [1]._C4_ThrottleCmd{._L26_CruiseControl; ._L1_CruiseControl; ._L2_CruiseControl; ._L19_CruiseControl; ._L25_CruiseControl; ._L24_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd{._M_init_0_CruiseControl; ._C0_ThrottleRegulation._I0_Reset} ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._O0_Throttle; ._L1_CruiseControl; ._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl; .ProportionnalAction; ._L22_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation.HoldIntegralAction ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation{._L16_CruiseControl; ._L23_CruiseControl; ._L18_CruiseControl; ._L10_CruiseControl; ._L8_CruiseControl; .IntegralAction; ._L4_CruiseControl; ._L13_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation{._L14_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._L21_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._M_init_0_CruiseControl ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._I0_ThrottleIn; ._O0_ThrottleOut} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._O1_Saturate ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L18_CruiseControl; ._L12_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L7_CruiseControl ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L17_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L9_CruiseControl ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L6_CruiseControl; ._L8_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd{._C0_ThrottleRegulation._C0_SaturateThrottle._L13_CruiseControl; ._M_condact_2_CruiseControl} ∈ + [--..--] +[value:final-states] Values at end of function CruiseStateMgt: + __retres ∈ {1} + S__C_[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel} ∈ + [--..--] + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed; ._O0_Cruise_speed; ._O1_Throttle_cmd} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]{._O2_Regul_ON; ._O3_Regul_OFF; ._O4_Regul_STDBY; ._L73_CruiseControl} ∈ + [--..--] + [0]{._L59_CruiseControl; ._L62_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]{.BrakePressed; .AcceleratorPressed} ∈ {0; 1} + [0]{._L61_CruiseControl; ._L60_CruiseControl; ._L58_CruiseControl} ∈ + [--..--] + [0]._L95_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0].SpeedOutOffLimits ∈ {0; 1} + [0]{._L82_CruiseControl; ._L83_CruiseControl; ._L84_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [0]._L96_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]{._L38_CruiseControl; ._L39_CruiseControl; ._L40_CruiseControl} ∈ + [--..--] + [0]{._L23_CruiseControl; .CruiseSpeed; ._L26_CruiseControl; ._L22_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]{._M_init_CruiseControl; ._C0_CruiseSpeedMgt{._I0_On; ._I1_Set; ._I2_QuickAccel; ._I3_QuickDecel}} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._I4_Speed; ._O0_CruiseSpeed; ._L1_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C0_CruiseSpeedMgt{._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._L21_CruiseControl; ._L10_CruiseControl; ._L12_CruiseControl; ._L13_CruiseControl; ._L15_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C0_CruiseSpeedMgt{._L16_CruiseControl; ._L4_CruiseControl; ._L17_CruiseControl} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._L11_CruiseControl; ._L14_CruiseControl; ._L19_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C0_CruiseSpeedMgt{._L18_CruiseControl; ._L5_CruiseControl; ._L20_CruiseControl} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._L9_CruiseControl; ._L8_CruiseControl; ._L7_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C0_CruiseSpeedMgt._M_init_0_CruiseControl ∈ [--..--] + [0]._C1_DetectPedalsPressed{._I0_Brake; ._I1_Accelerator} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C1_DetectPedalsPressed{._O0_BrakePressed; ._O1_AcceleratorPressed} ∈ + {0; 1} + [0]._C1_DetectPedalsPressed._L2_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C1_DetectPedalsPressed._L8_CruiseControl ∈ {0} + [0]._C1_DetectPedalsPressed._L4_CruiseControl ∈ {0; 1} + [0]._C1_DetectPedalsPressed._L1_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C1_DetectPedalsPressed._L7_CruiseControl ∈ {0} + [0]._C1_DetectPedalsPressed._L3_CruiseControl ∈ {0; 1} + [0]._C2_DetectSpeedLimits._I0_speed ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C2_DetectSpeedLimits._O0_SpeedOutOffLimits ∈ {0; 1} + [0]._C2_DetectSpeedLimits._L7_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C2_DetectSpeedLimits._L13_CruiseControl ∈ {0x1.e000000000000p4} + [0]._C2_DetectSpeedLimits._L8_CruiseControl ∈ {0; 1} + [0]._C2_DetectSpeedLimits._L14_CruiseControl ∈ {0x1.2c00000000000p7} + [0]{._C2_DetectSpeedLimits{._L9_CruiseControl; ._L17_CruiseControl}; ._C3_CruiseStateMgt{._I0_BrakePressed; ._I1_AcceleratorPressed}} ∈ + {0; 1} + [0]._C3_CruiseStateMgt{._I2_Resume; ._I3_On; ._I4_Off} ∈ [--..--] + [0]._C3_CruiseStateMgt{._I5_SpeedOutOffLimits; ._O0_Regul_ON} ∈ + {0; 1} + [0]._C3_CruiseStateMgt{._O1_Regul_OFF; ._O2_Regul_STDBY; ._LE24_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt._LE0_CruiseControl ∈ {0; 1} + [0]._C3_CruiseStateMgt{._LE4_CruiseControl; ._LE40_CruiseControl; ._LE26_CruiseControl; ._LE28_CruiseControl; ._LE9_CruiseControl; ._LE10_CruiseControl; ._LE11_CruiseControl; ._LE33_CruiseControl; ._LE35_CruiseControl; ._LE38_CruiseControl; ._LE12_CruiseControl; ._LE13_CruiseControl; ._LE14_CruiseControl; ._LE17_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt._LE18_CruiseControl ∈ {0; 1} + [0]._C3_CruiseStateMgt{._LE3_CruiseControl; ._LE16_CruiseControl; ._LE41_CruiseControl; ._LE19_CruiseControl; ._LE20_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt{._LE21_CruiseControl; ._LE1_CruiseControl; ._LE5_CruiseControl; ._LE22_CruiseControl; ._LE23_CruiseControl; ._LE25_CruiseControl} ∈ + {0; 1} + [0]._C3_CruiseStateMgt{._LE29_CruiseControl; ._LE2_CruiseControl; ._LE30_CruiseControl; ._LE31_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl; ._LE42_CruiseControl; ._LE6_CruiseControl} ∈ + {0; 1} + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl; ._LE43_CruiseControl; ._LE7_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt._LE27_CruiseControl ∈ {0; 1} + [0]._C3_CruiseStateMgt._LE36_CruiseControl ∈ [--..--] + [0]._C3_CruiseStateMgt._LE37_CruiseControl ∈ {0; 1} + [0]._C3_CruiseStateMgt{._LE44_CruiseControl; ._LE8_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl ∈ {0} + [0]{._M_condact_0_CruiseControl; ._C4_ThrottleCmd._I0_Regul_ON} ∈ + [--..--] + [0]._C4_ThrottleCmd{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._I3_Accelerator; ._O0_Throttle} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd{._L21_CruiseControl; ._L20_CruiseControl; ._L22_CruiseControl; .ONRisingEdge} ∈ + [--..--] + [0]._C4_ThrottleCmd{._L26_CruiseControl; ._L1_CruiseControl; ._L2_CruiseControl; ._L19_CruiseControl; ._L25_CruiseControl; ._L24_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd{._M_init_0_CruiseControl; ._C0_ThrottleRegulation._I0_Reset} ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._O0_Throttle; ._L1_CruiseControl; ._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl; .ProportionnalAction; ._L22_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation.HoldIntegralAction ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L16_CruiseControl; ._L23_CruiseControl; ._L18_CruiseControl; ._L10_CruiseControl; ._L8_CruiseControl; .IntegralAction; ._L4_CruiseControl; ._L13_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L14_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L21_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._M_init_0_CruiseControl ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._I0_ThrottleIn; ._O0_ThrottleOut} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._O1_Saturate ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L18_CruiseControl; ._L12_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L7_CruiseControl ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L17_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L9_CruiseControl ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L6_CruiseControl; ._L8_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + {[0]._C4_ThrottleCmd{._C0_ThrottleRegulation._C0_SaturateThrottle._L13_CruiseControl; ._M_condact_2_CruiseControl}; [1]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel}} ∈ + [--..--] + [1]{._I6_Accel; ._I7_Brake; ._I8_Speed; ._O0_Cruise_speed; ._O1_Throttle_cmd} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]{._O2_Regul_ON; ._O3_Regul_OFF; ._O4_Regul_STDBY; ._L73_CruiseControl} ∈ + [--..--] + [1]{._L59_CruiseControl; ._L62_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]{.BrakePressed; .AcceleratorPressed; ._L61_CruiseControl; ._L60_CruiseControl; ._L58_CruiseControl} ∈ + [--..--] + [1]._L95_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]{.SpeedOutOffLimits; ._L82_CruiseControl; ._L83_CruiseControl; ._L84_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [1]._L96_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]{._L38_CruiseControl; ._L39_CruiseControl; ._L40_CruiseControl} ∈ + [--..--] + [1]{._L23_CruiseControl; .CruiseSpeed; ._L26_CruiseControl; ._L22_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]{._M_init_CruiseControl; ._C0_CruiseSpeedMgt{._I0_On; ._I1_Set; ._I2_QuickAccel; ._I3_QuickDecel}} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._I4_Speed; ._O0_CruiseSpeed; ._L1_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C0_CruiseSpeedMgt{._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._L21_CruiseControl; ._L10_CruiseControl; ._L12_CruiseControl; ._L13_CruiseControl; ._L15_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C0_CruiseSpeedMgt{._L16_CruiseControl; ._L4_CruiseControl; ._L17_CruiseControl} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._L11_CruiseControl; ._L14_CruiseControl; ._L19_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C0_CruiseSpeedMgt{._L18_CruiseControl; ._L5_CruiseControl; ._L20_CruiseControl} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._L9_CruiseControl; ._L8_CruiseControl; ._L7_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C0_CruiseSpeedMgt._M_init_0_CruiseControl ∈ [--..--] + [1]._C1_DetectPedalsPressed{._I0_Brake; ._I1_Accelerator} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C1_DetectPedalsPressed{._O0_BrakePressed; ._O1_AcceleratorPressed} ∈ + [--..--] + [1]._C1_DetectPedalsPressed{._L2_CruiseControl; ._L8_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C1_DetectPedalsPressed._L4_CruiseControl ∈ [--..--] + [1]._C1_DetectPedalsPressed{._L1_CruiseControl; ._L7_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C1_DetectPedalsPressed._L3_CruiseControl ∈ [--..--] + [1]._C2_DetectSpeedLimits._I0_speed ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C2_DetectSpeedLimits._O0_SpeedOutOffLimits ∈ [--..--] + [1]._C2_DetectSpeedLimits{._L7_CruiseControl; ._L13_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C2_DetectSpeedLimits._L8_CruiseControl ∈ [--..--] + [1]._C2_DetectSpeedLimits._L14_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]{._C2_DetectSpeedLimits{._L9_CruiseControl; ._L17_CruiseControl}; ._C3_CruiseStateMgt; ._M_condact_0_CruiseControl; ._C4_ThrottleCmd._I0_Regul_ON} ∈ + [--..--] + [1]._C4_ThrottleCmd{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._I3_Accelerator; ._O0_Throttle} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd{._L21_CruiseControl; ._L20_CruiseControl; ._L22_CruiseControl; .ONRisingEdge} ∈ + [--..--] + [1]._C4_ThrottleCmd{._L26_CruiseControl; ._L1_CruiseControl; ._L2_CruiseControl; ._L19_CruiseControl; ._L25_CruiseControl; ._L24_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd{._M_init_0_CruiseControl; ._C0_ThrottleRegulation._I0_Reset} ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._O0_Throttle; ._L1_CruiseControl; ._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl; .ProportionnalAction; ._L22_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation.HoldIntegralAction ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation{._L16_CruiseControl; ._L23_CruiseControl; ._L18_CruiseControl; ._L10_CruiseControl; ._L8_CruiseControl; .IntegralAction; ._L4_CruiseControl; ._L13_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation{._L14_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._L21_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._M_init_0_CruiseControl ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._I0_ThrottleIn; ._O0_ThrottleOut} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._O1_Saturate ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L18_CruiseControl; ._L12_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L7_CruiseControl ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L17_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L9_CruiseControl ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L6_CruiseControl; ._L8_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd{._C0_ThrottleRegulation._C0_SaturateThrottle._L13_CruiseControl; ._M_condact_2_CruiseControl} ∈ + [--..--] +[value:final-states] Values at end of function DetectPedalsPressed: + __retres ∈ {1} + S__C_[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel} ∈ + [--..--] + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed; ._O0_Cruise_speed; ._O1_Throttle_cmd} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]{._O2_Regul_ON; ._O3_Regul_OFF; ._O4_Regul_STDBY; ._L73_CruiseControl} ∈ + [--..--] + [0]{._L59_CruiseControl; ._L62_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]{.BrakePressed; .AcceleratorPressed; ._L61_CruiseControl; ._L60_CruiseControl; ._L58_CruiseControl} ∈ + [--..--] + [0]._L95_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]{.SpeedOutOffLimits; ._L82_CruiseControl; ._L83_CruiseControl; ._L84_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [0]._L96_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]{._L38_CruiseControl; ._L39_CruiseControl; ._L40_CruiseControl} ∈ + [--..--] + [0]{._L23_CruiseControl; .CruiseSpeed; ._L26_CruiseControl; ._L22_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]{._M_init_CruiseControl; ._C0_CruiseSpeedMgt{._I0_On; ._I1_Set; ._I2_QuickAccel; ._I3_QuickDecel}} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._I4_Speed; ._O0_CruiseSpeed; ._L1_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C0_CruiseSpeedMgt{._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._L21_CruiseControl; ._L10_CruiseControl; ._L12_CruiseControl; ._L13_CruiseControl; ._L15_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C0_CruiseSpeedMgt{._L16_CruiseControl; ._L4_CruiseControl; ._L17_CruiseControl} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._L11_CruiseControl; ._L14_CruiseControl; ._L19_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C0_CruiseSpeedMgt{._L18_CruiseControl; ._L5_CruiseControl; ._L20_CruiseControl} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._L9_CruiseControl; ._L8_CruiseControl; ._L7_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C0_CruiseSpeedMgt._M_init_0_CruiseControl ∈ [--..--] + [0]._C1_DetectPedalsPressed{._I0_Brake; ._I1_Accelerator} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C1_DetectPedalsPressed{._O0_BrakePressed; ._O1_AcceleratorPressed} ∈ + {0; 1} + [0]._C1_DetectPedalsPressed._L2_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C1_DetectPedalsPressed._L8_CruiseControl ∈ {0} + [0]._C1_DetectPedalsPressed._L4_CruiseControl ∈ {0; 1} + [0]._C1_DetectPedalsPressed._L1_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C1_DetectPedalsPressed._L7_CruiseControl ∈ {0} + [0]._C1_DetectPedalsPressed._L3_CruiseControl ∈ {0; 1} + [0]._C2_DetectSpeedLimits._I0_speed ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C2_DetectSpeedLimits._O0_SpeedOutOffLimits ∈ [--..--] + [0]._C2_DetectSpeedLimits{._L7_CruiseControl; ._L13_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C2_DetectSpeedLimits._L8_CruiseControl ∈ [--..--] + [0]._C2_DetectSpeedLimits._L14_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]{._C2_DetectSpeedLimits{._L9_CruiseControl; ._L17_CruiseControl}; ._C3_CruiseStateMgt; ._M_condact_0_CruiseControl; ._C4_ThrottleCmd._I0_Regul_ON} ∈ + [--..--] + [0]._C4_ThrottleCmd{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._I3_Accelerator; ._O0_Throttle} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd{._L21_CruiseControl; ._L20_CruiseControl; ._L22_CruiseControl; .ONRisingEdge} ∈ + [--..--] + [0]._C4_ThrottleCmd{._L26_CruiseControl; ._L1_CruiseControl; ._L2_CruiseControl; ._L19_CruiseControl; ._L25_CruiseControl; ._L24_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd{._M_init_0_CruiseControl; ._C0_ThrottleRegulation._I0_Reset} ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._O0_Throttle; ._L1_CruiseControl; ._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl; .ProportionnalAction; ._L22_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation.HoldIntegralAction ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L16_CruiseControl; ._L23_CruiseControl; ._L18_CruiseControl; ._L10_CruiseControl; ._L8_CruiseControl; .IntegralAction; ._L4_CruiseControl; ._L13_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L14_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L21_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._M_init_0_CruiseControl ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._I0_ThrottleIn; ._O0_ThrottleOut} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._O1_Saturate ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L18_CruiseControl; ._L12_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L7_CruiseControl ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L17_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L9_CruiseControl ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L6_CruiseControl; ._L8_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + {[0]._C4_ThrottleCmd{._C0_ThrottleRegulation._C0_SaturateThrottle._L13_CruiseControl; ._M_condact_2_CruiseControl}; [1]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel}} ∈ + [--..--] + [1]{._I6_Accel; ._I7_Brake; ._I8_Speed; ._O0_Cruise_speed; ._O1_Throttle_cmd} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]{._O2_Regul_ON; ._O3_Regul_OFF; ._O4_Regul_STDBY; ._L73_CruiseControl} ∈ + [--..--] + [1]{._L59_CruiseControl; ._L62_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]{.BrakePressed; .AcceleratorPressed; ._L61_CruiseControl; ._L60_CruiseControl; ._L58_CruiseControl} ∈ + [--..--] + [1]._L95_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]{.SpeedOutOffLimits; ._L82_CruiseControl; ._L83_CruiseControl; ._L84_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [1]._L96_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]{._L38_CruiseControl; ._L39_CruiseControl; ._L40_CruiseControl} ∈ + [--..--] + [1]{._L23_CruiseControl; .CruiseSpeed; ._L26_CruiseControl; ._L22_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]{._M_init_CruiseControl; ._C0_CruiseSpeedMgt{._I0_On; ._I1_Set; ._I2_QuickAccel; ._I3_QuickDecel}} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._I4_Speed; ._O0_CruiseSpeed; ._L1_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C0_CruiseSpeedMgt{._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._L21_CruiseControl; ._L10_CruiseControl; ._L12_CruiseControl; ._L13_CruiseControl; ._L15_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C0_CruiseSpeedMgt{._L16_CruiseControl; ._L4_CruiseControl; ._L17_CruiseControl} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._L11_CruiseControl; ._L14_CruiseControl; ._L19_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C0_CruiseSpeedMgt{._L18_CruiseControl; ._L5_CruiseControl; ._L20_CruiseControl} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._L9_CruiseControl; ._L8_CruiseControl; ._L7_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C0_CruiseSpeedMgt._M_init_0_CruiseControl ∈ [--..--] + [1]._C1_DetectPedalsPressed{._I0_Brake; ._I1_Accelerator} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C1_DetectPedalsPressed{._O0_BrakePressed; ._O1_AcceleratorPressed} ∈ + [--..--] + [1]._C1_DetectPedalsPressed{._L2_CruiseControl; ._L8_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C1_DetectPedalsPressed._L4_CruiseControl ∈ [--..--] + [1]._C1_DetectPedalsPressed{._L1_CruiseControl; ._L7_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C1_DetectPedalsPressed._L3_CruiseControl ∈ [--..--] + [1]._C2_DetectSpeedLimits._I0_speed ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C2_DetectSpeedLimits._O0_SpeedOutOffLimits ∈ [--..--] + [1]._C2_DetectSpeedLimits{._L7_CruiseControl; ._L13_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C2_DetectSpeedLimits._L8_CruiseControl ∈ [--..--] + [1]._C2_DetectSpeedLimits._L14_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]{._C2_DetectSpeedLimits{._L9_CruiseControl; ._L17_CruiseControl}; ._C3_CruiseStateMgt; ._M_condact_0_CruiseControl; ._C4_ThrottleCmd._I0_Regul_ON} ∈ + [--..--] + [1]._C4_ThrottleCmd{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._I3_Accelerator; ._O0_Throttle} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd{._L21_CruiseControl; ._L20_CruiseControl; ._L22_CruiseControl; .ONRisingEdge} ∈ + [--..--] + [1]._C4_ThrottleCmd{._L26_CruiseControl; ._L1_CruiseControl; ._L2_CruiseControl; ._L19_CruiseControl; ._L25_CruiseControl; ._L24_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd{._M_init_0_CruiseControl; ._C0_ThrottleRegulation._I0_Reset} ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._O0_Throttle; ._L1_CruiseControl; ._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl; .ProportionnalAction; ._L22_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation.HoldIntegralAction ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation{._L16_CruiseControl; ._L23_CruiseControl; ._L18_CruiseControl; ._L10_CruiseControl; ._L8_CruiseControl; .IntegralAction; ._L4_CruiseControl; ._L13_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation{._L14_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._L21_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._M_init_0_CruiseControl ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._I0_ThrottleIn; ._O0_ThrottleOut} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._O1_Saturate ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L18_CruiseControl; ._L12_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L7_CruiseControl ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L17_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L9_CruiseControl ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L6_CruiseControl; ._L8_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd{._C0_ThrottleRegulation._C0_SaturateThrottle._L13_CruiseControl; ._M_condact_2_CruiseControl} ∈ + [--..--] +[value:final-states] Values at end of function DetectSpeedLimits: + __retres ∈ {1} + S__C_[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel} ∈ + [--..--] + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed; ._O0_Cruise_speed; ._O1_Throttle_cmd} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]{._O2_Regul_ON; ._O3_Regul_OFF; ._O4_Regul_STDBY; ._L73_CruiseControl} ∈ + [--..--] + [0]{._L59_CruiseControl; ._L62_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]{.BrakePressed; .AcceleratorPressed} ∈ {0; 1} + [0]{._L61_CruiseControl; ._L60_CruiseControl; ._L58_CruiseControl} ∈ + [--..--] + [0]._L95_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]{.SpeedOutOffLimits; ._L82_CruiseControl; ._L83_CruiseControl; ._L84_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [0]._L96_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]{._L38_CruiseControl; ._L39_CruiseControl; ._L40_CruiseControl} ∈ + [--..--] + [0]{._L23_CruiseControl; .CruiseSpeed; ._L26_CruiseControl; ._L22_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]{._M_init_CruiseControl; ._C0_CruiseSpeedMgt{._I0_On; ._I1_Set; ._I2_QuickAccel; ._I3_QuickDecel}} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._I4_Speed; ._O0_CruiseSpeed; ._L1_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C0_CruiseSpeedMgt{._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._L21_CruiseControl; ._L10_CruiseControl; ._L12_CruiseControl; ._L13_CruiseControl; ._L15_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C0_CruiseSpeedMgt{._L16_CruiseControl; ._L4_CruiseControl; ._L17_CruiseControl} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._L11_CruiseControl; ._L14_CruiseControl; ._L19_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C0_CruiseSpeedMgt{._L18_CruiseControl; ._L5_CruiseControl; ._L20_CruiseControl} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._L9_CruiseControl; ._L8_CruiseControl; ._L7_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C0_CruiseSpeedMgt._M_init_0_CruiseControl ∈ [--..--] + [0]._C1_DetectPedalsPressed{._I0_Brake; ._I1_Accelerator} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C1_DetectPedalsPressed{._O0_BrakePressed; ._O1_AcceleratorPressed} ∈ + {0; 1} + [0]._C1_DetectPedalsPressed._L2_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C1_DetectPedalsPressed._L8_CruiseControl ∈ {0} + [0]._C1_DetectPedalsPressed._L4_CruiseControl ∈ {0; 1} + [0]._C1_DetectPedalsPressed._L1_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C1_DetectPedalsPressed._L7_CruiseControl ∈ {0} + [0]._C1_DetectPedalsPressed._L3_CruiseControl ∈ {0; 1} + [0]._C2_DetectSpeedLimits._I0_speed ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C2_DetectSpeedLimits._O0_SpeedOutOffLimits ∈ {0; 1} + [0]._C2_DetectSpeedLimits._L7_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C2_DetectSpeedLimits._L13_CruiseControl ∈ {0x1.e000000000000p4} + [0]._C2_DetectSpeedLimits._L8_CruiseControl ∈ {0; 1} + [0]._C2_DetectSpeedLimits._L14_CruiseControl ∈ {0x1.2c00000000000p7} + [0]._C2_DetectSpeedLimits{._L9_CruiseControl; ._L17_CruiseControl} ∈ + {0; 1} + [0]{._C3_CruiseStateMgt; ._M_condact_0_CruiseControl; ._C4_ThrottleCmd._I0_Regul_ON} ∈ + [--..--] + [0]._C4_ThrottleCmd{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._I3_Accelerator; ._O0_Throttle} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd{._L21_CruiseControl; ._L20_CruiseControl; ._L22_CruiseControl; .ONRisingEdge} ∈ + [--..--] + [0]._C4_ThrottleCmd{._L26_CruiseControl; ._L1_CruiseControl; ._L2_CruiseControl; ._L19_CruiseControl; ._L25_CruiseControl; ._L24_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd{._M_init_0_CruiseControl; ._C0_ThrottleRegulation._I0_Reset} ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._O0_Throttle; ._L1_CruiseControl; ._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl; .ProportionnalAction; ._L22_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation.HoldIntegralAction ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L16_CruiseControl; ._L23_CruiseControl; ._L18_CruiseControl; ._L10_CruiseControl; ._L8_CruiseControl; .IntegralAction; ._L4_CruiseControl; ._L13_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L14_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L21_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._M_init_0_CruiseControl ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._I0_ThrottleIn; ._O0_ThrottleOut} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._O1_Saturate ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L18_CruiseControl; ._L12_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L7_CruiseControl ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L17_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L9_CruiseControl ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L6_CruiseControl; ._L8_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + {[0]._C4_ThrottleCmd{._C0_ThrottleRegulation._C0_SaturateThrottle._L13_CruiseControl; ._M_condact_2_CruiseControl}; [1]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel}} ∈ + [--..--] + [1]{._I6_Accel; ._I7_Brake; ._I8_Speed; ._O0_Cruise_speed; ._O1_Throttle_cmd} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]{._O2_Regul_ON; ._O3_Regul_OFF; ._O4_Regul_STDBY; ._L73_CruiseControl} ∈ + [--..--] + [1]{._L59_CruiseControl; ._L62_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]{.BrakePressed; .AcceleratorPressed; ._L61_CruiseControl; ._L60_CruiseControl; ._L58_CruiseControl} ∈ + [--..--] + [1]._L95_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]{.SpeedOutOffLimits; ._L82_CruiseControl; ._L83_CruiseControl; ._L84_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [1]._L96_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]{._L38_CruiseControl; ._L39_CruiseControl; ._L40_CruiseControl} ∈ + [--..--] + [1]{._L23_CruiseControl; .CruiseSpeed; ._L26_CruiseControl; ._L22_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]{._M_init_CruiseControl; ._C0_CruiseSpeedMgt{._I0_On; ._I1_Set; ._I2_QuickAccel; ._I3_QuickDecel}} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._I4_Speed; ._O0_CruiseSpeed; ._L1_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C0_CruiseSpeedMgt{._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._L21_CruiseControl; ._L10_CruiseControl; ._L12_CruiseControl; ._L13_CruiseControl; ._L15_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C0_CruiseSpeedMgt{._L16_CruiseControl; ._L4_CruiseControl; ._L17_CruiseControl} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._L11_CruiseControl; ._L14_CruiseControl; ._L19_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C0_CruiseSpeedMgt{._L18_CruiseControl; ._L5_CruiseControl; ._L20_CruiseControl} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._L9_CruiseControl; ._L8_CruiseControl; ._L7_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C0_CruiseSpeedMgt._M_init_0_CruiseControl ∈ [--..--] + [1]._C1_DetectPedalsPressed{._I0_Brake; ._I1_Accelerator} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C1_DetectPedalsPressed{._O0_BrakePressed; ._O1_AcceleratorPressed} ∈ + [--..--] + [1]._C1_DetectPedalsPressed{._L2_CruiseControl; ._L8_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C1_DetectPedalsPressed._L4_CruiseControl ∈ [--..--] + [1]._C1_DetectPedalsPressed{._L1_CruiseControl; ._L7_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C1_DetectPedalsPressed._L3_CruiseControl ∈ [--..--] + [1]._C2_DetectSpeedLimits._I0_speed ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C2_DetectSpeedLimits._O0_SpeedOutOffLimits ∈ [--..--] + [1]._C2_DetectSpeedLimits{._L7_CruiseControl; ._L13_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C2_DetectSpeedLimits._L8_CruiseControl ∈ [--..--] + [1]._C2_DetectSpeedLimits._L14_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]{._C2_DetectSpeedLimits{._L9_CruiseControl; ._L17_CruiseControl}; ._C3_CruiseStateMgt; ._M_condact_0_CruiseControl; ._C4_ThrottleCmd._I0_Regul_ON} ∈ + [--..--] + [1]._C4_ThrottleCmd{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._I3_Accelerator; ._O0_Throttle} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd{._L21_CruiseControl; ._L20_CruiseControl; ._L22_CruiseControl; .ONRisingEdge} ∈ + [--..--] + [1]._C4_ThrottleCmd{._L26_CruiseControl; ._L1_CruiseControl; ._L2_CruiseControl; ._L19_CruiseControl; ._L25_CruiseControl; ._L24_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd{._M_init_0_CruiseControl; ._C0_ThrottleRegulation._I0_Reset} ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._O0_Throttle; ._L1_CruiseControl; ._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl; .ProportionnalAction; ._L22_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation.HoldIntegralAction ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation{._L16_CruiseControl; ._L23_CruiseControl; ._L18_CruiseControl; ._L10_CruiseControl; ._L8_CruiseControl; .IntegralAction; ._L4_CruiseControl; ._L13_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation{._L14_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._L21_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._M_init_0_CruiseControl ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._I0_ThrottleIn; ._O0_ThrottleOut} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._O1_Saturate ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L18_CruiseControl; ._L12_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L7_CruiseControl ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L17_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L9_CruiseControl ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L6_CruiseControl; ._L8_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd{._C0_ThrottleRegulation._C0_SaturateThrottle._L13_CruiseControl; ._M_condact_2_CruiseControl} ∈ + [--..--] +[value:final-states] Values at end of function SaturateThrottle: + __retres ∈ {1} + S__C_[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel} ∈ + [--..--] + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed; ._O0_Cruise_speed; ._O1_Throttle_cmd} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]{._O2_Regul_ON; ._O3_Regul_OFF; ._O4_Regul_STDBY; ._L73_CruiseControl} ∈ + [--..--] + [0]{._L59_CruiseControl; ._L62_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]{.BrakePressed; .AcceleratorPressed} ∈ {0; 1} + [0]{._L61_CruiseControl; ._L60_CruiseControl; ._L58_CruiseControl} ∈ + [--..--] + [0]._L95_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]{.SpeedOutOffLimits; ._L82_CruiseControl} ∈ {0; 1} + [0]{._L83_CruiseControl; ._L84_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [0]._L96_CruiseControl ∈ {0} + [0]{._L38_CruiseControl; ._L39_CruiseControl; ._L40_CruiseControl} ∈ + [--..--] + [0]{._L23_CruiseControl; .CruiseSpeed; ._L26_CruiseControl; ._L22_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]{._M_init_CruiseControl; ._C0_CruiseSpeedMgt{._I0_On; ._I1_Set; ._I2_QuickAccel; ._I3_QuickDecel}} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._I4_Speed; ._O0_CruiseSpeed; ._L1_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C0_CruiseSpeedMgt{._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._L21_CruiseControl; ._L10_CruiseControl; ._L12_CruiseControl; ._L13_CruiseControl; ._L15_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C0_CruiseSpeedMgt{._L16_CruiseControl; ._L4_CruiseControl; ._L17_CruiseControl} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._L11_CruiseControl; ._L14_CruiseControl; ._L19_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C0_CruiseSpeedMgt{._L18_CruiseControl; ._L5_CruiseControl; ._L20_CruiseControl} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._L9_CruiseControl; ._L8_CruiseControl; ._L7_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C0_CruiseSpeedMgt._M_init_0_CruiseControl ∈ [--..--] + [0]._C1_DetectPedalsPressed{._I0_Brake; ._I1_Accelerator} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C1_DetectPedalsPressed{._O0_BrakePressed; ._O1_AcceleratorPressed} ∈ + {0; 1} + [0]._C1_DetectPedalsPressed._L2_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C1_DetectPedalsPressed._L8_CruiseControl ∈ {0} + [0]._C1_DetectPedalsPressed._L4_CruiseControl ∈ {0; 1} + [0]._C1_DetectPedalsPressed._L1_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C1_DetectPedalsPressed._L7_CruiseControl ∈ {0} + [0]._C1_DetectPedalsPressed._L3_CruiseControl ∈ {0; 1} + [0]._C2_DetectSpeedLimits._I0_speed ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C2_DetectSpeedLimits._O0_SpeedOutOffLimits ∈ {0; 1} + [0]._C2_DetectSpeedLimits._L7_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C2_DetectSpeedLimits._L13_CruiseControl ∈ {0x1.e000000000000p4} + [0]._C2_DetectSpeedLimits._L8_CruiseControl ∈ {0; 1} + [0]._C2_DetectSpeedLimits._L14_CruiseControl ∈ {0x1.2c00000000000p7} + [0]{._C2_DetectSpeedLimits{._L9_CruiseControl; ._L17_CruiseControl}; ._C3_CruiseStateMgt{._I0_BrakePressed; ._I1_AcceleratorPressed}} ∈ + {0; 1} + [0]._C3_CruiseStateMgt{._I2_Resume; ._I3_On; ._I4_Off} ∈ [--..--] + [0]._C3_CruiseStateMgt{._I5_SpeedOutOffLimits; ._O0_Regul_ON} ∈ + {0; 1} + [0]._C3_CruiseStateMgt{._O1_Regul_OFF; ._O2_Regul_STDBY; ._LE24_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt._LE0_CruiseControl ∈ {0; 1} + [0]._C3_CruiseStateMgt{._LE4_CruiseControl; ._LE40_CruiseControl; ._LE26_CruiseControl; ._LE28_CruiseControl; ._LE9_CruiseControl; ._LE10_CruiseControl; ._LE11_CruiseControl; ._LE33_CruiseControl; ._LE35_CruiseControl; ._LE38_CruiseControl; ._LE12_CruiseControl; ._LE13_CruiseControl; ._LE14_CruiseControl; ._LE17_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt._LE18_CruiseControl ∈ {0; 1} + [0]._C3_CruiseStateMgt{._LE3_CruiseControl; ._LE16_CruiseControl; ._LE41_CruiseControl; ._LE19_CruiseControl; ._LE20_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt{._LE21_CruiseControl; ._LE1_CruiseControl; ._LE5_CruiseControl; ._LE22_CruiseControl; ._LE23_CruiseControl; ._LE25_CruiseControl} ∈ + {0; 1} + [0]._C3_CruiseStateMgt{._LE29_CruiseControl; ._LE2_CruiseControl; ._LE30_CruiseControl; ._LE31_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl; ._LE42_CruiseControl; ._LE6_CruiseControl} ∈ + {0; 1} + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl; ._LE43_CruiseControl; ._LE7_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt._LE27_CruiseControl ∈ {0; 1} + [0]._C3_CruiseStateMgt._LE36_CruiseControl ∈ [--..--] + [0]._C3_CruiseStateMgt._LE37_CruiseControl ∈ {0; 1} + [0]._C3_CruiseStateMgt{._LE44_CruiseControl; ._LE8_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl ∈ {0} + [0]._M_condact_0_CruiseControl ∈ [--..--] + [0]._C4_ThrottleCmd._I0_Regul_ON ∈ {0; 1} + [0]._C4_ThrottleCmd{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._I3_Accelerator; ._O0_Throttle} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._L21_CruiseControl ∈ [--..--] + [0]._C4_ThrottleCmd._L20_CruiseControl ∈ {1} + [0]._C4_ThrottleCmd._L22_CruiseControl ∈ [--..--] + [0]._C4_ThrottleCmd.ONRisingEdge ∈ {0; 1} + [0]._C4_ThrottleCmd._L26_CruiseControl ∈ {0} + [0]._C4_ThrottleCmd{._L1_CruiseControl; ._L2_CruiseControl; ._L19_CruiseControl; ._L25_CruiseControl; ._L24_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._M_init_0_CruiseControl ∈ [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._I0_Reset ∈ {0; 1} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._O0_Throttle; ._L1_CruiseControl; ._L2_CruiseControl; ._L3_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L6_CruiseControl ∈ + [0x1.039db20000000p3 .. 0x1.039db40000000p3] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation.ProportionnalAction ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L22_CruiseControl ∈ {0} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation.HoldIntegralAction ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L16_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L23_CruiseControl ∈ {0} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L18_CruiseControl; ._L10_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L8_CruiseControl ∈ + {0x1.0000000000000p-1} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation.IntegralAction ∈ + [-0x1.fffffe0000000p126 .. 0x1.fffffe0000000p126] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L4_CruiseControl; ._L13_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L14_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L21_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._M_init_0_CruiseControl ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._I0_ThrottleIn; ._O0_ThrottleOut} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._O1_Saturate ∈ + {0; 1} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L18_CruiseControl ∈ + {0x1.6800000000000p5} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L12_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L7_CruiseControl ∈ + {0; 1} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L17_CruiseControl ∈ + {0} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L9_CruiseControl ∈ + {0; 1} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L6_CruiseControl; ._L8_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L13_CruiseControl ∈ + {0; 1} + {[0]._C4_ThrottleCmd._M_condact_2_CruiseControl; [1]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel}} ∈ + [--..--] + [1]{._I6_Accel; ._I7_Brake; ._I8_Speed; ._O0_Cruise_speed; ._O1_Throttle_cmd} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]{._O2_Regul_ON; ._O3_Regul_OFF; ._O4_Regul_STDBY; ._L73_CruiseControl} ∈ + [--..--] + [1]{._L59_CruiseControl; ._L62_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]{.BrakePressed; .AcceleratorPressed; ._L61_CruiseControl; ._L60_CruiseControl; ._L58_CruiseControl} ∈ + [--..--] + [1]._L95_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]{.SpeedOutOffLimits; ._L82_CruiseControl; ._L83_CruiseControl; ._L84_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [1]._L96_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]{._L38_CruiseControl; ._L39_CruiseControl; ._L40_CruiseControl} ∈ + [--..--] + [1]{._L23_CruiseControl; .CruiseSpeed; ._L26_CruiseControl; ._L22_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]{._M_init_CruiseControl; ._C0_CruiseSpeedMgt{._I0_On; ._I1_Set; ._I2_QuickAccel; ._I3_QuickDecel}} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._I4_Speed; ._O0_CruiseSpeed; ._L1_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C0_CruiseSpeedMgt{._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._L21_CruiseControl; ._L10_CruiseControl; ._L12_CruiseControl; ._L13_CruiseControl; ._L15_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C0_CruiseSpeedMgt{._L16_CruiseControl; ._L4_CruiseControl; ._L17_CruiseControl} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._L11_CruiseControl; ._L14_CruiseControl; ._L19_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C0_CruiseSpeedMgt{._L18_CruiseControl; ._L5_CruiseControl; ._L20_CruiseControl} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._L9_CruiseControl; ._L8_CruiseControl; ._L7_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C0_CruiseSpeedMgt._M_init_0_CruiseControl ∈ [--..--] + [1]._C1_DetectPedalsPressed{._I0_Brake; ._I1_Accelerator} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C1_DetectPedalsPressed{._O0_BrakePressed; ._O1_AcceleratorPressed} ∈ + [--..--] + [1]._C1_DetectPedalsPressed{._L2_CruiseControl; ._L8_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C1_DetectPedalsPressed._L4_CruiseControl ∈ [--..--] + [1]._C1_DetectPedalsPressed{._L1_CruiseControl; ._L7_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C1_DetectPedalsPressed._L3_CruiseControl ∈ [--..--] + [1]._C2_DetectSpeedLimits._I0_speed ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C2_DetectSpeedLimits._O0_SpeedOutOffLimits ∈ [--..--] + [1]._C2_DetectSpeedLimits{._L7_CruiseControl; ._L13_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C2_DetectSpeedLimits._L8_CruiseControl ∈ [--..--] + [1]._C2_DetectSpeedLimits._L14_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]{._C2_DetectSpeedLimits{._L9_CruiseControl; ._L17_CruiseControl}; ._C3_CruiseStateMgt; ._M_condact_0_CruiseControl; ._C4_ThrottleCmd._I0_Regul_ON} ∈ + [--..--] + [1]._C4_ThrottleCmd{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._I3_Accelerator; ._O0_Throttle} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd{._L21_CruiseControl; ._L20_CruiseControl; ._L22_CruiseControl; .ONRisingEdge} ∈ + [--..--] + [1]._C4_ThrottleCmd{._L26_CruiseControl; ._L1_CruiseControl; ._L2_CruiseControl; ._L19_CruiseControl; ._L25_CruiseControl; ._L24_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd{._M_init_0_CruiseControl; ._C0_ThrottleRegulation._I0_Reset} ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._O0_Throttle; ._L1_CruiseControl; ._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl; .ProportionnalAction; ._L22_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation.HoldIntegralAction ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation{._L16_CruiseControl; ._L23_CruiseControl; ._L18_CruiseControl; ._L10_CruiseControl; ._L8_CruiseControl; .IntegralAction; ._L4_CruiseControl; ._L13_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation{._L14_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._L21_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._M_init_0_CruiseControl ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._I0_ThrottleIn; ._O0_ThrottleOut} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._O1_Saturate ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L18_CruiseControl; ._L12_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L7_CruiseControl ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L17_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L9_CruiseControl ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L6_CruiseControl; ._L8_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd{._C0_ThrottleRegulation._C0_SaturateThrottle._L13_CruiseControl; ._M_condact_2_CruiseControl} ∈ + [--..--] +[value:final-states] Values at end of function ThrottleRegulation: + __retres ∈ {1} + S__C_[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel} ∈ + [--..--] + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed; ._O0_Cruise_speed; ._O1_Throttle_cmd} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]{._O2_Regul_ON; ._O3_Regul_OFF; ._O4_Regul_STDBY; ._L73_CruiseControl} ∈ + [--..--] + [0]{._L59_CruiseControl; ._L62_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]{.BrakePressed; .AcceleratorPressed} ∈ {0; 1} + [0]{._L61_CruiseControl; ._L60_CruiseControl; ._L58_CruiseControl} ∈ + [--..--] + [0]._L95_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]{.SpeedOutOffLimits; ._L82_CruiseControl} ∈ {0; 1} + [0]{._L83_CruiseControl; ._L84_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [0]._L96_CruiseControl ∈ {0} + [0]{._L38_CruiseControl; ._L39_CruiseControl; ._L40_CruiseControl} ∈ + [--..--] + [0]{._L23_CruiseControl; .CruiseSpeed; ._L26_CruiseControl; ._L22_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]{._M_init_CruiseControl; ._C0_CruiseSpeedMgt{._I0_On; ._I1_Set; ._I2_QuickAccel; ._I3_QuickDecel}} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._I4_Speed; ._O0_CruiseSpeed; ._L1_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C0_CruiseSpeedMgt{._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._L21_CruiseControl; ._L10_CruiseControl; ._L12_CruiseControl; ._L13_CruiseControl; ._L15_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C0_CruiseSpeedMgt{._L16_CruiseControl; ._L4_CruiseControl; ._L17_CruiseControl} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._L11_CruiseControl; ._L14_CruiseControl; ._L19_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C0_CruiseSpeedMgt{._L18_CruiseControl; ._L5_CruiseControl; ._L20_CruiseControl} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._L9_CruiseControl; ._L8_CruiseControl; ._L7_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C0_CruiseSpeedMgt._M_init_0_CruiseControl ∈ [--..--] + [0]._C1_DetectPedalsPressed{._I0_Brake; ._I1_Accelerator} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C1_DetectPedalsPressed{._O0_BrakePressed; ._O1_AcceleratorPressed} ∈ + {0; 1} + [0]._C1_DetectPedalsPressed._L2_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C1_DetectPedalsPressed._L8_CruiseControl ∈ {0} + [0]._C1_DetectPedalsPressed._L4_CruiseControl ∈ {0; 1} + [0]._C1_DetectPedalsPressed._L1_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C1_DetectPedalsPressed._L7_CruiseControl ∈ {0} + [0]._C1_DetectPedalsPressed._L3_CruiseControl ∈ {0; 1} + [0]._C2_DetectSpeedLimits._I0_speed ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C2_DetectSpeedLimits._O0_SpeedOutOffLimits ∈ {0; 1} + [0]._C2_DetectSpeedLimits._L7_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C2_DetectSpeedLimits._L13_CruiseControl ∈ {0x1.e000000000000p4} + [0]._C2_DetectSpeedLimits._L8_CruiseControl ∈ {0; 1} + [0]._C2_DetectSpeedLimits._L14_CruiseControl ∈ {0x1.2c00000000000p7} + [0]{._C2_DetectSpeedLimits{._L9_CruiseControl; ._L17_CruiseControl}; ._C3_CruiseStateMgt{._I0_BrakePressed; ._I1_AcceleratorPressed}} ∈ + {0; 1} + [0]._C3_CruiseStateMgt{._I2_Resume; ._I3_On; ._I4_Off} ∈ [--..--] + [0]._C3_CruiseStateMgt{._I5_SpeedOutOffLimits; ._O0_Regul_ON} ∈ + {0; 1} + [0]._C3_CruiseStateMgt{._O1_Regul_OFF; ._O2_Regul_STDBY; ._LE24_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt._LE0_CruiseControl ∈ {0; 1} + [0]._C3_CruiseStateMgt{._LE4_CruiseControl; ._LE40_CruiseControl; ._LE26_CruiseControl; ._LE28_CruiseControl; ._LE9_CruiseControl; ._LE10_CruiseControl; ._LE11_CruiseControl; ._LE33_CruiseControl; ._LE35_CruiseControl; ._LE38_CruiseControl; ._LE12_CruiseControl; ._LE13_CruiseControl; ._LE14_CruiseControl; ._LE17_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt._LE18_CruiseControl ∈ {0; 1} + [0]._C3_CruiseStateMgt{._LE3_CruiseControl; ._LE16_CruiseControl; ._LE41_CruiseControl; ._LE19_CruiseControl; ._LE20_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt{._LE21_CruiseControl; ._LE1_CruiseControl; ._LE5_CruiseControl; ._LE22_CruiseControl; ._LE23_CruiseControl; ._LE25_CruiseControl} ∈ + {0; 1} + [0]._C3_CruiseStateMgt{._LE29_CruiseControl; ._LE2_CruiseControl; ._LE30_CruiseControl; ._LE31_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl; ._LE42_CruiseControl; ._LE6_CruiseControl} ∈ + {0; 1} + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl; ._LE43_CruiseControl; ._LE7_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt._LE27_CruiseControl ∈ {0; 1} + [0]._C3_CruiseStateMgt._LE36_CruiseControl ∈ [--..--] + [0]._C3_CruiseStateMgt._LE37_CruiseControl ∈ {0; 1} + [0]._C3_CruiseStateMgt{._LE44_CruiseControl; ._LE8_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl ∈ {0} + [0]._M_condact_0_CruiseControl ∈ [--..--] + [0]._C4_ThrottleCmd._I0_Regul_ON ∈ {0; 1} + [0]._C4_ThrottleCmd{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._I3_Accelerator; ._O0_Throttle} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._L21_CruiseControl ∈ [--..--] + [0]._C4_ThrottleCmd._L20_CruiseControl ∈ {1} + [0]._C4_ThrottleCmd._L22_CruiseControl ∈ [--..--] + [0]._C4_ThrottleCmd.ONRisingEdge ∈ {0; 1} + [0]._C4_ThrottleCmd._L26_CruiseControl ∈ {0} + [0]._C4_ThrottleCmd{._L1_CruiseControl; ._L2_CruiseControl; ._L19_CruiseControl; ._L25_CruiseControl; ._L24_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._M_init_0_CruiseControl ∈ [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._I0_Reset ∈ {0; 1} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._O0_Throttle; ._L1_CruiseControl; ._L2_CruiseControl; ._L3_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L6_CruiseControl ∈ + [0x1.039db20000000p3 .. 0x1.039db40000000p3] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation.ProportionnalAction ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L22_CruiseControl ∈ {0} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation.HoldIntegralAction ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L16_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L23_CruiseControl ∈ {0} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L18_CruiseControl; ._L10_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L8_CruiseControl ∈ + {0x1.0000000000000p-1} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation.IntegralAction ∈ + [-0x1.fffffe0000000p126 .. 0x1.fffffe0000000p126] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L4_CruiseControl; ._L13_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L14_CruiseControl; ._L19_CruiseControl} ∈ + {0; 1} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L21_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._M_init_0_CruiseControl ∈ + {0} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._I0_ThrottleIn; ._O0_ThrottleOut} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._O1_Saturate ∈ + {0; 1} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L18_CruiseControl ∈ + {0x1.6800000000000p5} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L12_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L7_CruiseControl ∈ + {0; 1} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L17_CruiseControl ∈ + {0} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L9_CruiseControl ∈ + {0; 1} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L6_CruiseControl; ._L8_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L13_CruiseControl ∈ + {0; 1} + {[0]._C4_ThrottleCmd._M_condact_2_CruiseControl; [1]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel}} ∈ + [--..--] + [1]{._I6_Accel; ._I7_Brake; ._I8_Speed; ._O0_Cruise_speed; ._O1_Throttle_cmd} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]{._O2_Regul_ON; ._O3_Regul_OFF; ._O4_Regul_STDBY; ._L73_CruiseControl} ∈ + [--..--] + [1]{._L59_CruiseControl; ._L62_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]{.BrakePressed; .AcceleratorPressed; ._L61_CruiseControl; ._L60_CruiseControl; ._L58_CruiseControl} ∈ + [--..--] + [1]._L95_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]{.SpeedOutOffLimits; ._L82_CruiseControl; ._L83_CruiseControl; ._L84_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [1]._L96_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]{._L38_CruiseControl; ._L39_CruiseControl; ._L40_CruiseControl} ∈ + [--..--] + [1]{._L23_CruiseControl; .CruiseSpeed; ._L26_CruiseControl; ._L22_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]{._M_init_CruiseControl; ._C0_CruiseSpeedMgt{._I0_On; ._I1_Set; ._I2_QuickAccel; ._I3_QuickDecel}} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._I4_Speed; ._O0_CruiseSpeed; ._L1_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C0_CruiseSpeedMgt{._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._L21_CruiseControl; ._L10_CruiseControl; ._L12_CruiseControl; ._L13_CruiseControl; ._L15_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C0_CruiseSpeedMgt{._L16_CruiseControl; ._L4_CruiseControl; ._L17_CruiseControl} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._L11_CruiseControl; ._L14_CruiseControl; ._L19_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C0_CruiseSpeedMgt{._L18_CruiseControl; ._L5_CruiseControl; ._L20_CruiseControl} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._L9_CruiseControl; ._L8_CruiseControl; ._L7_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C0_CruiseSpeedMgt._M_init_0_CruiseControl ∈ [--..--] + [1]._C1_DetectPedalsPressed{._I0_Brake; ._I1_Accelerator} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C1_DetectPedalsPressed{._O0_BrakePressed; ._O1_AcceleratorPressed} ∈ + [--..--] + [1]._C1_DetectPedalsPressed{._L2_CruiseControl; ._L8_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C1_DetectPedalsPressed._L4_CruiseControl ∈ [--..--] + [1]._C1_DetectPedalsPressed{._L1_CruiseControl; ._L7_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C1_DetectPedalsPressed._L3_CruiseControl ∈ [--..--] + [1]._C2_DetectSpeedLimits._I0_speed ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C2_DetectSpeedLimits._O0_SpeedOutOffLimits ∈ [--..--] + [1]._C2_DetectSpeedLimits{._L7_CruiseControl; ._L13_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C2_DetectSpeedLimits._L8_CruiseControl ∈ [--..--] + [1]._C2_DetectSpeedLimits._L14_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]{._C2_DetectSpeedLimits{._L9_CruiseControl; ._L17_CruiseControl}; ._C3_CruiseStateMgt; ._M_condact_0_CruiseControl; ._C4_ThrottleCmd._I0_Regul_ON} ∈ + [--..--] + [1]._C4_ThrottleCmd{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._I3_Accelerator; ._O0_Throttle} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd{._L21_CruiseControl; ._L20_CruiseControl; ._L22_CruiseControl; .ONRisingEdge} ∈ + [--..--] + [1]._C4_ThrottleCmd{._L26_CruiseControl; ._L1_CruiseControl; ._L2_CruiseControl; ._L19_CruiseControl; ._L25_CruiseControl; ._L24_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd{._M_init_0_CruiseControl; ._C0_ThrottleRegulation._I0_Reset} ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._O0_Throttle; ._L1_CruiseControl; ._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl; .ProportionnalAction; ._L22_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation.HoldIntegralAction ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation{._L16_CruiseControl; ._L23_CruiseControl; ._L18_CruiseControl; ._L10_CruiseControl; ._L8_CruiseControl; .IntegralAction; ._L4_CruiseControl; ._L13_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation{._L14_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._L21_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._M_init_0_CruiseControl ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._I0_ThrottleIn; ._O0_ThrottleOut} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._O1_Saturate ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L18_CruiseControl; ._L12_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L7_CruiseControl ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L17_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L9_CruiseControl ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L6_CruiseControl; ._L8_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd{._C0_ThrottleRegulation._C0_SaturateThrottle._L13_CruiseControl; ._M_condact_2_CruiseControl} ∈ + [--..--] +[value:final-states] Values at end of function ThrottleCmd: + __retres ∈ {1} + S__C_[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel} ∈ + [--..--] + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed; ._O0_Cruise_speed; ._O1_Throttle_cmd} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]{._O2_Regul_ON; ._O3_Regul_OFF; ._O4_Regul_STDBY; ._L73_CruiseControl} ∈ + [--..--] + [0]{._L59_CruiseControl; ._L62_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]{.BrakePressed; .AcceleratorPressed} ∈ {0; 1} + [0]{._L61_CruiseControl; ._L60_CruiseControl; ._L58_CruiseControl} ∈ + [--..--] + [0]._L95_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]{.SpeedOutOffLimits; ._L82_CruiseControl} ∈ {0; 1} + [0]{._L83_CruiseControl; ._L84_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [0]._L96_CruiseControl ∈ {0} + [0]{._L38_CruiseControl; ._L39_CruiseControl; ._L40_CruiseControl} ∈ + [--..--] + [0]{._L23_CruiseControl; .CruiseSpeed; ._L26_CruiseControl; ._L22_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]{._M_init_CruiseControl; ._C0_CruiseSpeedMgt{._I0_On; ._I1_Set; ._I2_QuickAccel; ._I3_QuickDecel}} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._I4_Speed; ._O0_CruiseSpeed; ._L1_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C0_CruiseSpeedMgt{._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._L21_CruiseControl; ._L10_CruiseControl; ._L12_CruiseControl; ._L13_CruiseControl; ._L15_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C0_CruiseSpeedMgt{._L16_CruiseControl; ._L4_CruiseControl; ._L17_CruiseControl} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._L11_CruiseControl; ._L14_CruiseControl; ._L19_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C0_CruiseSpeedMgt{._L18_CruiseControl; ._L5_CruiseControl; ._L20_CruiseControl} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._L9_CruiseControl; ._L8_CruiseControl; ._L7_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C0_CruiseSpeedMgt._M_init_0_CruiseControl ∈ [--..--] + [0]._C1_DetectPedalsPressed{._I0_Brake; ._I1_Accelerator} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C1_DetectPedalsPressed{._O0_BrakePressed; ._O1_AcceleratorPressed} ∈ + {0; 1} + [0]._C1_DetectPedalsPressed._L2_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C1_DetectPedalsPressed._L8_CruiseControl ∈ {0} + [0]._C1_DetectPedalsPressed._L4_CruiseControl ∈ {0; 1} + [0]._C1_DetectPedalsPressed._L1_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C1_DetectPedalsPressed._L7_CruiseControl ∈ {0} + [0]._C1_DetectPedalsPressed._L3_CruiseControl ∈ {0; 1} + [0]._C2_DetectSpeedLimits._I0_speed ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C2_DetectSpeedLimits._O0_SpeedOutOffLimits ∈ {0; 1} + [0]._C2_DetectSpeedLimits._L7_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C2_DetectSpeedLimits._L13_CruiseControl ∈ {0x1.e000000000000p4} + [0]._C2_DetectSpeedLimits._L8_CruiseControl ∈ {0; 1} + [0]._C2_DetectSpeedLimits._L14_CruiseControl ∈ {0x1.2c00000000000p7} + [0]{._C2_DetectSpeedLimits{._L9_CruiseControl; ._L17_CruiseControl}; ._C3_CruiseStateMgt{._I0_BrakePressed; ._I1_AcceleratorPressed}} ∈ + {0; 1} + [0]._C3_CruiseStateMgt{._I2_Resume; ._I3_On; ._I4_Off} ∈ [--..--] + [0]._C3_CruiseStateMgt{._I5_SpeedOutOffLimits; ._O0_Regul_ON} ∈ + {0; 1} + [0]._C3_CruiseStateMgt{._O1_Regul_OFF; ._O2_Regul_STDBY; ._LE24_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt._LE0_CruiseControl ∈ {0; 1} + [0]._C3_CruiseStateMgt{._LE4_CruiseControl; ._LE40_CruiseControl; ._LE26_CruiseControl; ._LE28_CruiseControl; ._LE9_CruiseControl; ._LE10_CruiseControl; ._LE11_CruiseControl; ._LE33_CruiseControl; ._LE35_CruiseControl; ._LE38_CruiseControl; ._LE12_CruiseControl; ._LE13_CruiseControl; ._LE14_CruiseControl; ._LE17_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt._LE18_CruiseControl ∈ {0; 1} + [0]._C3_CruiseStateMgt{._LE3_CruiseControl; ._LE16_CruiseControl; ._LE41_CruiseControl; ._LE19_CruiseControl; ._LE20_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt{._LE21_CruiseControl; ._LE1_CruiseControl; ._LE5_CruiseControl; ._LE22_CruiseControl; ._LE23_CruiseControl; ._LE25_CruiseControl} ∈ + {0; 1} + [0]._C3_CruiseStateMgt{._LE29_CruiseControl; ._LE2_CruiseControl; ._LE30_CruiseControl; ._LE31_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl; ._LE42_CruiseControl; ._LE6_CruiseControl} ∈ + {0; 1} + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl; ._LE43_CruiseControl; ._LE7_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt._LE27_CruiseControl ∈ {0; 1} + [0]._C3_CruiseStateMgt._LE36_CruiseControl ∈ [--..--] + [0]._C3_CruiseStateMgt._LE37_CruiseControl ∈ {0; 1} + [0]._C3_CruiseStateMgt{._LE44_CruiseControl; ._LE8_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl ∈ {0} + [0]._M_condact_0_CruiseControl ∈ [--..--] + [0]._C4_ThrottleCmd._I0_Regul_ON ∈ {0; 1} + [0]._C4_ThrottleCmd{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._I3_Accelerator; ._O0_Throttle} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._L21_CruiseControl ∈ [--..--] + [0]._C4_ThrottleCmd._L20_CruiseControl ∈ {0; 1} + [0]._C4_ThrottleCmd._L22_CruiseControl ∈ [--..--] + [0]._C4_ThrottleCmd.ONRisingEdge ∈ {0; 1} + [0]._C4_ThrottleCmd._L26_CruiseControl ∈ {0} + [0]._C4_ThrottleCmd{._L1_CruiseControl; ._L2_CruiseControl; ._L19_CruiseControl; ._L25_CruiseControl; ._L24_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._M_init_0_CruiseControl ∈ {0} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._I0_Reset ∈ [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._O0_Throttle; ._L1_CruiseControl; ._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl; .ProportionnalAction; ._L22_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation.HoldIntegralAction ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L16_CruiseControl; ._L23_CruiseControl; ._L18_CruiseControl; ._L10_CruiseControl; ._L8_CruiseControl; .IntegralAction; ._L4_CruiseControl; ._L13_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L14_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L21_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._M_init_0_CruiseControl ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._I0_ThrottleIn; ._O0_ThrottleOut} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._O1_Saturate ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L18_CruiseControl; ._L12_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L7_CruiseControl ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L17_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L9_CruiseControl ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L6_CruiseControl; ._L8_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + {[0]._C4_ThrottleCmd{._C0_ThrottleRegulation._C0_SaturateThrottle._L13_CruiseControl; ._M_condact_2_CruiseControl}; [1]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel}} ∈ + [--..--] + [1]{._I6_Accel; ._I7_Brake; ._I8_Speed; ._O0_Cruise_speed; ._O1_Throttle_cmd} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]{._O2_Regul_ON; ._O3_Regul_OFF; ._O4_Regul_STDBY; ._L73_CruiseControl} ∈ + [--..--] + [1]{._L59_CruiseControl; ._L62_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]{.BrakePressed; .AcceleratorPressed; ._L61_CruiseControl; ._L60_CruiseControl; ._L58_CruiseControl} ∈ + [--..--] + [1]._L95_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]{.SpeedOutOffLimits; ._L82_CruiseControl; ._L83_CruiseControl; ._L84_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [1]._L96_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]{._L38_CruiseControl; ._L39_CruiseControl; ._L40_CruiseControl} ∈ + [--..--] + [1]{._L23_CruiseControl; .CruiseSpeed; ._L26_CruiseControl; ._L22_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]{._M_init_CruiseControl; ._C0_CruiseSpeedMgt{._I0_On; ._I1_Set; ._I2_QuickAccel; ._I3_QuickDecel}} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._I4_Speed; ._O0_CruiseSpeed; ._L1_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C0_CruiseSpeedMgt{._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._L21_CruiseControl; ._L10_CruiseControl; ._L12_CruiseControl; ._L13_CruiseControl; ._L15_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C0_CruiseSpeedMgt{._L16_CruiseControl; ._L4_CruiseControl; ._L17_CruiseControl} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._L11_CruiseControl; ._L14_CruiseControl; ._L19_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C0_CruiseSpeedMgt{._L18_CruiseControl; ._L5_CruiseControl; ._L20_CruiseControl} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._L9_CruiseControl; ._L8_CruiseControl; ._L7_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C0_CruiseSpeedMgt._M_init_0_CruiseControl ∈ [--..--] + [1]._C1_DetectPedalsPressed{._I0_Brake; ._I1_Accelerator} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C1_DetectPedalsPressed{._O0_BrakePressed; ._O1_AcceleratorPressed} ∈ + [--..--] + [1]._C1_DetectPedalsPressed{._L2_CruiseControl; ._L8_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C1_DetectPedalsPressed._L4_CruiseControl ∈ [--..--] + [1]._C1_DetectPedalsPressed{._L1_CruiseControl; ._L7_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C1_DetectPedalsPressed._L3_CruiseControl ∈ [--..--] + [1]._C2_DetectSpeedLimits._I0_speed ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C2_DetectSpeedLimits._O0_SpeedOutOffLimits ∈ [--..--] + [1]._C2_DetectSpeedLimits{._L7_CruiseControl; ._L13_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C2_DetectSpeedLimits._L8_CruiseControl ∈ [--..--] + [1]._C2_DetectSpeedLimits._L14_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]{._C2_DetectSpeedLimits{._L9_CruiseControl; ._L17_CruiseControl}; ._C3_CruiseStateMgt; ._M_condact_0_CruiseControl; ._C4_ThrottleCmd._I0_Regul_ON} ∈ + [--..--] + [1]._C4_ThrottleCmd{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._I3_Accelerator; ._O0_Throttle} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd{._L21_CruiseControl; ._L20_CruiseControl; ._L22_CruiseControl; .ONRisingEdge} ∈ + [--..--] + [1]._C4_ThrottleCmd{._L26_CruiseControl; ._L1_CruiseControl; ._L2_CruiseControl; ._L19_CruiseControl; ._L25_CruiseControl; ._L24_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd{._M_init_0_CruiseControl; ._C0_ThrottleRegulation._I0_Reset} ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._O0_Throttle; ._L1_CruiseControl; ._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl; .ProportionnalAction; ._L22_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation.HoldIntegralAction ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation{._L16_CruiseControl; ._L23_CruiseControl; ._L18_CruiseControl; ._L10_CruiseControl; ._L8_CruiseControl; .IntegralAction; ._L4_CruiseControl; ._L13_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation{._L14_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._L21_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._M_init_0_CruiseControl ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._I0_ThrottleIn; ._O0_ThrottleOut} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._O1_Saturate ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L18_CruiseControl; ._L12_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L7_CruiseControl ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L17_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L9_CruiseControl ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L6_CruiseControl; ._L8_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd{._C0_ThrottleRegulation._C0_SaturateThrottle._L13_CruiseControl; ._M_condact_2_CruiseControl} ∈ + [--..--] +[value:final-states] Values at end of function CruiseControl: + __retres ∈ {1} + S__C_[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel} ∈ + [--..--] + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed; ._O0_Cruise_speed; ._O1_Throttle_cmd} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._O2_Regul_ON ∈ {0; 1} + [0]{._O3_Regul_OFF; ._O4_Regul_STDBY; ._L73_CruiseControl} ∈ + [--..--] + [0]{._L59_CruiseControl; ._L62_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]{.BrakePressed; .AcceleratorPressed} ∈ {0; 1} + [0]{._L61_CruiseControl; ._L60_CruiseControl; ._L58_CruiseControl} ∈ + [--..--] + [0]._L95_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]{.SpeedOutOffLimits; ._L82_CruiseControl} ∈ {0; 1} + [0]{._L83_CruiseControl; ._L84_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [0]._L96_CruiseControl ∈ {0} + [0]{._L38_CruiseControl; ._L39_CruiseControl; ._L40_CruiseControl} ∈ + [--..--] + [0]{._L23_CruiseControl; .CruiseSpeed; ._L26_CruiseControl; ._L22_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._M_init_CruiseControl ∈ {0} + [0]._C0_CruiseSpeedMgt{._I0_On; ._I1_Set; ._I2_QuickAccel; ._I3_QuickDecel} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._I4_Speed; ._O0_CruiseSpeed; ._L1_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C0_CruiseSpeedMgt{._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._L21_CruiseControl; ._L10_CruiseControl; ._L12_CruiseControl; ._L13_CruiseControl; ._L15_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C0_CruiseSpeedMgt{._L16_CruiseControl; ._L4_CruiseControl; ._L17_CruiseControl} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._L11_CruiseControl; ._L14_CruiseControl; ._L19_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C0_CruiseSpeedMgt{._L18_CruiseControl; ._L5_CruiseControl; ._L20_CruiseControl} ∈ + [--..--] + [0]._C0_CruiseSpeedMgt{._L9_CruiseControl; ._L8_CruiseControl; ._L7_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C0_CruiseSpeedMgt._M_init_0_CruiseControl ∈ [--..--] + [0]._C1_DetectPedalsPressed{._I0_Brake; ._I1_Accelerator} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C1_DetectPedalsPressed{._O0_BrakePressed; ._O1_AcceleratorPressed} ∈ + {0; 1} + [0]._C1_DetectPedalsPressed._L2_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C1_DetectPedalsPressed._L8_CruiseControl ∈ {0} + [0]._C1_DetectPedalsPressed._L4_CruiseControl ∈ {0; 1} + [0]._C1_DetectPedalsPressed._L1_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C1_DetectPedalsPressed._L7_CruiseControl ∈ {0} + [0]._C1_DetectPedalsPressed._L3_CruiseControl ∈ {0; 1} + [0]._C2_DetectSpeedLimits._I0_speed ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C2_DetectSpeedLimits._O0_SpeedOutOffLimits ∈ {0; 1} + [0]._C2_DetectSpeedLimits._L7_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C2_DetectSpeedLimits._L13_CruiseControl ∈ {0x1.e000000000000p4} + [0]._C2_DetectSpeedLimits._L8_CruiseControl ∈ {0; 1} + [0]._C2_DetectSpeedLimits._L14_CruiseControl ∈ {0x1.2c00000000000p7} + [0]{._C2_DetectSpeedLimits{._L9_CruiseControl; ._L17_CruiseControl}; ._C3_CruiseStateMgt{._I0_BrakePressed; ._I1_AcceleratorPressed}} ∈ + {0; 1} + [0]._C3_CruiseStateMgt{._I2_Resume; ._I3_On; ._I4_Off} ∈ [--..--] + [0]._C3_CruiseStateMgt{._I5_SpeedOutOffLimits; ._O0_Regul_ON} ∈ + {0; 1} + [0]._C3_CruiseStateMgt{._O1_Regul_OFF; ._O2_Regul_STDBY; ._LE24_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt._LE0_CruiseControl ∈ {0; 1} + [0]._C3_CruiseStateMgt{._LE4_CruiseControl; ._LE40_CruiseControl; ._LE26_CruiseControl; ._LE28_CruiseControl; ._LE9_CruiseControl; ._LE10_CruiseControl; ._LE11_CruiseControl; ._LE33_CruiseControl; ._LE35_CruiseControl; ._LE38_CruiseControl; ._LE12_CruiseControl; ._LE13_CruiseControl; ._LE14_CruiseControl; ._LE17_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt._LE18_CruiseControl ∈ {0; 1} + [0]._C3_CruiseStateMgt{._LE3_CruiseControl; ._LE16_CruiseControl; ._LE41_CruiseControl; ._LE19_CruiseControl; ._LE20_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt{._LE21_CruiseControl; ._LE1_CruiseControl; ._LE5_CruiseControl; ._LE22_CruiseControl; ._LE23_CruiseControl; ._LE25_CruiseControl} ∈ + {0; 1} + [0]._C3_CruiseStateMgt{._LE29_CruiseControl; ._LE2_CruiseControl; ._LE30_CruiseControl; ._LE31_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl; ._LE42_CruiseControl; ._LE6_CruiseControl} ∈ + {0; 1} + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl; ._LE43_CruiseControl; ._LE7_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt._LE27_CruiseControl ∈ {0; 1} + [0]._C3_CruiseStateMgt._LE36_CruiseControl ∈ [--..--] + [0]._C3_CruiseStateMgt._LE37_CruiseControl ∈ {0; 1} + [0]._C3_CruiseStateMgt{._LE44_CruiseControl; ._LE8_CruiseControl} ∈ + [--..--] + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl ∈ {0} + [0]._M_condact_0_CruiseControl ∈ [--..--] + [0]._C4_ThrottleCmd._I0_Regul_ON ∈ {0; 1} + [0]._C4_ThrottleCmd{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._I3_Accelerator; ._O0_Throttle} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._L21_CruiseControl ∈ [--..--] + [0]._C4_ThrottleCmd._L20_CruiseControl ∈ {0; 1} + [0]._C4_ThrottleCmd._L22_CruiseControl ∈ [--..--] + [0]._C4_ThrottleCmd.ONRisingEdge ∈ {0; 1} + [0]._C4_ThrottleCmd._L26_CruiseControl ∈ {0} + [0]._C4_ThrottleCmd{._L1_CruiseControl; ._L2_CruiseControl; ._L19_CruiseControl; ._L25_CruiseControl; ._L24_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._M_init_0_CruiseControl ∈ {0} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._I0_Reset ∈ [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._O0_Throttle; ._L1_CruiseControl; ._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl; .ProportionnalAction; ._L22_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation.HoldIntegralAction ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L16_CruiseControl; ._L23_CruiseControl; ._L18_CruiseControl; ._L10_CruiseControl; ._L8_CruiseControl; .IntegralAction; ._L4_CruiseControl; ._L13_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L14_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L21_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._M_init_0_CruiseControl ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._I0_ThrottleIn; ._O0_ThrottleOut} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._O1_Saturate ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L18_CruiseControl; ._L12_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L7_CruiseControl ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L17_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L9_CruiseControl ∈ + [--..--] + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L6_CruiseControl; ._L8_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + {[0]._C4_ThrottleCmd{._C0_ThrottleRegulation._C0_SaturateThrottle._L13_CruiseControl; ._M_condact_2_CruiseControl}; [1]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel}} ∈ + [--..--] + [1]{._I6_Accel; ._I7_Brake; ._I8_Speed; ._O0_Cruise_speed; ._O1_Throttle_cmd} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]{._O2_Regul_ON; ._O3_Regul_OFF; ._O4_Regul_STDBY; ._L73_CruiseControl} ∈ + [--..--] + [1]{._L59_CruiseControl; ._L62_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]{.BrakePressed; .AcceleratorPressed; ._L61_CruiseControl; ._L60_CruiseControl; ._L58_CruiseControl} ∈ + [--..--] + [1]._L95_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]{.SpeedOutOffLimits; ._L82_CruiseControl; ._L83_CruiseControl; ._L84_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [1]._L96_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]{._L38_CruiseControl; ._L39_CruiseControl; ._L40_CruiseControl} ∈ + [--..--] + [1]{._L23_CruiseControl; .CruiseSpeed; ._L26_CruiseControl; ._L22_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]{._M_init_CruiseControl; ._C0_CruiseSpeedMgt{._I0_On; ._I1_Set; ._I2_QuickAccel; ._I3_QuickDecel}} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._I4_Speed; ._O0_CruiseSpeed; ._L1_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C0_CruiseSpeedMgt{._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._L21_CruiseControl; ._L10_CruiseControl; ._L12_CruiseControl; ._L13_CruiseControl; ._L15_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C0_CruiseSpeedMgt{._L16_CruiseControl; ._L4_CruiseControl; ._L17_CruiseControl} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._L11_CruiseControl; ._L14_CruiseControl; ._L19_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C0_CruiseSpeedMgt{._L18_CruiseControl; ._L5_CruiseControl; ._L20_CruiseControl} ∈ + [--..--] + [1]._C0_CruiseSpeedMgt{._L9_CruiseControl; ._L8_CruiseControl; ._L7_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C0_CruiseSpeedMgt._M_init_0_CruiseControl ∈ [--..--] + [1]._C1_DetectPedalsPressed{._I0_Brake; ._I1_Accelerator} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C1_DetectPedalsPressed{._O0_BrakePressed; ._O1_AcceleratorPressed} ∈ + [--..--] + [1]._C1_DetectPedalsPressed{._L2_CruiseControl; ._L8_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C1_DetectPedalsPressed._L4_CruiseControl ∈ [--..--] + [1]._C1_DetectPedalsPressed{._L1_CruiseControl; ._L7_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C1_DetectPedalsPressed._L3_CruiseControl ∈ [--..--] + [1]._C2_DetectSpeedLimits._I0_speed ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C2_DetectSpeedLimits._O0_SpeedOutOffLimits ∈ [--..--] + [1]._C2_DetectSpeedLimits{._L7_CruiseControl; ._L13_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C2_DetectSpeedLimits._L8_CruiseControl ∈ [--..--] + [1]._C2_DetectSpeedLimits._L14_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]{._C2_DetectSpeedLimits{._L9_CruiseControl; ._L17_CruiseControl}; ._C3_CruiseStateMgt; ._M_condact_0_CruiseControl; ._C4_ThrottleCmd._I0_Regul_ON} ∈ + [--..--] + [1]._C4_ThrottleCmd{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._I3_Accelerator; ._O0_Throttle} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd{._L21_CruiseControl; ._L20_CruiseControl; ._L22_CruiseControl; .ONRisingEdge} ∈ + [--..--] + [1]._C4_ThrottleCmd{._L26_CruiseControl; ._L1_CruiseControl; ._L2_CruiseControl; ._L19_CruiseControl; ._L25_CruiseControl; ._L24_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd{._M_init_0_CruiseControl; ._C0_ThrottleRegulation._I0_Reset} ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation{._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._O0_Throttle; ._L1_CruiseControl; ._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl; .ProportionnalAction; ._L22_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation.HoldIntegralAction ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation{._L16_CruiseControl; ._L23_CruiseControl; ._L18_CruiseControl; ._L10_CruiseControl; ._L8_CruiseControl; .IntegralAction; ._L4_CruiseControl; ._L13_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation{._L14_CruiseControl; ._L19_CruiseControl} ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._L21_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._M_init_0_CruiseControl ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._I0_ThrottleIn; ._O0_ThrottleOut} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._O1_Saturate ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L18_CruiseControl; ._L12_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L7_CruiseControl ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L17_CruiseControl ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L9_CruiseControl ∈ + [--..--] + [1]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L6_CruiseControl; ._L8_CruiseControl} ∈ + [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + [1]._C4_ThrottleCmd{._C0_ThrottleRegulation._C0_SaturateThrottle._L13_CruiseControl; ._M_condact_2_CruiseControl} ∈ + [--..--] +[from] Computing for function CruiseSpeedMgt +[from] Done for function CruiseSpeedMgt +[from] Computing for function CruiseStateMgt +[from] Done for function CruiseStateMgt +[from] Computing for function DetectPedalsPressed +[from] Done for function DetectPedalsPressed +[from] Computing for function DetectSpeedLimits +[from] Done for function DetectSpeedLimits +[from] Computing for function SaturateThrottle +[from] Done for function SaturateThrottle +[from] Computing for function ThrottleRegulation +[from] Done for function ThrottleRegulation +[from] Computing for function ThrottleCmd +[from] Done for function ThrottleCmd +[from] Computing for function CruiseControl +[from] Done for function CruiseControl +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function CruiseSpeedMgt: + S__C_{[0]._C0_CruiseSpeedMgt._O0_CruiseSpeed; + [0]._C0_CruiseSpeedMgt._L7_CruiseControl} + FROM ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; _C_; + S__C_{[0]._C0_CruiseSpeedMgt{._I0_On; ._I1_Set; ._I2_QuickAccel; ._I3_QuickDecel; ._I4_Speed}; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}} + [0]._C0_CruiseSpeedMgt._L1_CruiseControl + FROM _C_; S__C_[0]._C0_CruiseSpeedMgt._I4_Speed + [0]._C0_CruiseSpeedMgt._L2_CruiseControl + FROM _C_; S__C_[0]._C0_CruiseSpeedMgt._I1_Set + [0]._C0_CruiseSpeedMgt._L3_CruiseControl + FROM _C_; S__C_[0]._C0_CruiseSpeedMgt._I0_On + [0]._C0_CruiseSpeedMgt._L6_CruiseControl + FROM _C_; S__C_[0]._C0_CruiseSpeedMgt{._I0_On; ._I1_Set} + [0]._C0_CruiseSpeedMgt._L21_CruiseControl FROM ZeroSpeed; _C_ + [0]._C0_CruiseSpeedMgt._L10_CruiseControl + FROM ZeroSpeed; _C_; + S__C_[0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl} + {[0]._C0_CruiseSpeedMgt._L12_CruiseControl; + [0]._C0_CruiseSpeedMgt._L11_CruiseControl} + FROM SpeedInc; _C_ + {[0]._C0_CruiseSpeedMgt._L13_CruiseControl; + [0]._C0_CruiseSpeedMgt._L14_CruiseControl} + FROM ZeroSpeed; SpeedInc; _C_; + S__C_[0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl} + [0]._C0_CruiseSpeedMgt._L15_CruiseControl FROM SpeedMax; _C_ + [0]._C0_CruiseSpeedMgt._L16_CruiseControl + FROM ZeroSpeed; SpeedInc; SpeedMax; _C_; + S__C_[0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl} + [0]._C0_CruiseSpeedMgt._L4_CruiseControl + FROM _C_; S__C_[0]._C0_CruiseSpeedMgt._I2_QuickAccel + [0]._C0_CruiseSpeedMgt._L17_CruiseControl + FROM ZeroSpeed; SpeedInc; SpeedMax; _C_; + S__C_{[0]._C0_CruiseSpeedMgt._I2_QuickAccel; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}} + [0]._C0_CruiseSpeedMgt._L19_CruiseControl FROM SpeedMin; _C_ + [0]._C0_CruiseSpeedMgt._L18_CruiseControl + FROM ZeroSpeed; SpeedInc; SpeedMin; _C_; + S__C_[0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl} + [0]._C0_CruiseSpeedMgt._L5_CruiseControl + FROM _C_; S__C_[0]._C0_CruiseSpeedMgt._I3_QuickDecel + [0]._C0_CruiseSpeedMgt._L20_CruiseControl + FROM ZeroSpeed; SpeedInc; SpeedMin; _C_; + S__C_{[0]._C0_CruiseSpeedMgt._I3_QuickDecel; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}} + [0]._C0_CruiseSpeedMgt._L9_CruiseControl + FROM ZeroSpeed; SpeedInc; SpeedMin; _C_; + S__C_{[0]._C0_CruiseSpeedMgt._I3_QuickDecel; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}} + [0]._C0_CruiseSpeedMgt._L8_CruiseControl + FROM ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; _C_; + S__C_{[0]._C0_CruiseSpeedMgt{._I2_QuickAccel; ._I3_QuickDecel}; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}} + [0]._C0_CruiseSpeedMgt._M_init_0_CruiseControl FROM _C_ + \result FROM \nothing +[from] Function CruiseStateMgt: + S__C_{[0]._C3_CruiseStateMgt._O0_Regul_ON; + [0]._C3_CruiseStateMgt._O2_Regul_STDBY; + [0]._C3_CruiseStateMgt{._LE42_CruiseControl; ._LE6_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE44_CruiseControl; ._LE8_CruiseControl}} + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt{._I0_BrakePressed; ._I1_AcceleratorPressed; ._I2_Resume; ._I3_On; ._I4_Off; ._I5_SpeedOutOffLimits}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + {[0]._C3_CruiseStateMgt._O1_Regul_OFF; + [0]._C3_CruiseStateMgt{._LE39_CruiseControl; ._LE43_CruiseControl; ._LE7_CruiseControl}} + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._I0_BrakePressed; + [0]._C3_CruiseStateMgt{._I2_Resume; ._I3_On; ._I4_Off}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE24_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._LE23_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE0_CruiseControl + FROM _C_; S__C_[0]._C3_CruiseStateMgt._I0_BrakePressed + [0]._C3_CruiseStateMgt._LE4_CruiseControl + FROM _C_; S__C_[0]._C3_CruiseStateMgt._I4_Off + [0]._C3_CruiseStateMgt._LE40_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._LE39_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE26_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._LE25_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE28_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE9_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._LE25_CruiseControl; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE10_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE11_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt._LE39_CruiseControl; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE33_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._LE32_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE35_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._LE34_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE38_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE12_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._LE34_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE13_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE14_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt._LE39_CruiseControl; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + {[0]._C3_CruiseStateMgt._LE17_CruiseControl; + [0]._C3_CruiseStateMgt._LE29_CruiseControl; + [0]._C3_CruiseStateMgt._LE30_CruiseControl} + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._I4_Off; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt._LE39_CruiseControl; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE18_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._I0_BrakePressed; + [0]._C3_CruiseStateMgt._I4_Off; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt._LE39_CruiseControl; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE3_CruiseControl + FROM _C_; S__C_[0]._C3_CruiseStateMgt._I3_On + [0]._C3_CruiseStateMgt._LE16_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._LE15_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE41_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE19_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._I3_On; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE20_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._I3_On; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt._LE15_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE21_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._I0_BrakePressed; + [0]._C3_CruiseStateMgt{._I3_On; ._I4_Off}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE1_CruiseControl + FROM _C_; S__C_[0]._C3_CruiseStateMgt._I1_AcceleratorPressed + [0]._C3_CruiseStateMgt._LE5_CruiseControl + FROM _C_; S__C_[0]._C3_CruiseStateMgt._I5_SpeedOutOffLimits + [0]._C3_CruiseStateMgt._LE22_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._I1_AcceleratorPressed; + [0]._C3_CruiseStateMgt._I5_SpeedOutOffLimits} + {[0]._C3_CruiseStateMgt._LE23_CruiseControl; + [0]._C3_CruiseStateMgt._LE27_CruiseControl} + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt{._I0_BrakePressed; ._I1_AcceleratorPressed}; + [0]._C3_CruiseStateMgt{._I3_On; ._I4_Off; ._I5_SpeedOutOffLimits}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + {[0]._C3_CruiseStateMgt._LE25_CruiseControl; + [0]._C3_CruiseStateMgt._LE34_CruiseControl} + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt{._I0_BrakePressed; ._I1_AcceleratorPressed}; + [0]._C3_CruiseStateMgt{._I4_Off; ._I5_SpeedOutOffLimits}; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt._LE39_CruiseControl; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE2_CruiseControl + FROM _C_; S__C_[0]._C3_CruiseStateMgt._I2_Resume + [0]._C3_CruiseStateMgt._LE31_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._I2_Resume; + [0]._C3_CruiseStateMgt._I4_Off; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt._LE39_CruiseControl; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + {[0]._C3_CruiseStateMgt._LE32_CruiseControl; + [0]._C3_CruiseStateMgt{._LE36_CruiseControl; ._LE37_CruiseControl}} + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt{._I0_BrakePressed; ._I1_AcceleratorPressed; ._I2_Resume}; + [0]._C3_CruiseStateMgt{._I4_Off; ._I5_SpeedOutOffLimits}; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt._LE39_CruiseControl; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE15_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt{._I3_On; ._I4_Off}; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl FROM _C_ + \result FROM \nothing +[from] Function DetectPedalsPressed: + S__C_{[0]._C1_DetectPedalsPressed._O0_BrakePressed; + [0]._C1_DetectPedalsPressed._L4_CruiseControl} + FROM ZeroPercent; _C_; S__C_[0]._C1_DetectPedalsPressed._I0_Brake + {[0]._C1_DetectPedalsPressed._O1_AcceleratorPressed; + [0]._C1_DetectPedalsPressed._L3_CruiseControl} + FROM ZeroPercent; _C_; + S__C_[0]._C1_DetectPedalsPressed._I1_Accelerator + [0]._C1_DetectPedalsPressed._L2_CruiseControl + FROM _C_; S__C_[0]._C1_DetectPedalsPressed._I0_Brake + {[0]._C1_DetectPedalsPressed._L8_CruiseControl; + [0]._C1_DetectPedalsPressed._L7_CruiseControl} + FROM ZeroPercent; _C_ + [0]._C1_DetectPedalsPressed._L1_CruiseControl + FROM _C_; S__C_[0]._C1_DetectPedalsPressed._I1_Accelerator + \result FROM \nothing +[from] Function DetectSpeedLimits: + S__C_{[0]._C2_DetectSpeedLimits._O0_SpeedOutOffLimits; + [0]._C2_DetectSpeedLimits._L17_CruiseControl} + FROM SpeedMax; SpeedMin; _C_; S__C_[0]._C2_DetectSpeedLimits._I0_speed + [0]._C2_DetectSpeedLimits._L7_CruiseControl + FROM _C_; S__C_[0]._C2_DetectSpeedLimits._I0_speed + [0]._C2_DetectSpeedLimits._L13_CruiseControl FROM SpeedMin; _C_ + [0]._C2_DetectSpeedLimits._L8_CruiseControl + FROM SpeedMin; _C_; S__C_[0]._C2_DetectSpeedLimits._I0_speed + [0]._C2_DetectSpeedLimits._L14_CruiseControl FROM SpeedMax; _C_ + [0]._C2_DetectSpeedLimits._L9_CruiseControl + FROM SpeedMax; _C_; S__C_[0]._C2_DetectSpeedLimits._I0_speed + \result FROM \nothing +[from] Function SaturateThrottle: + S__C_{[0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._O0_ThrottleOut; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L8_CruiseControl} + FROM ZeroPercent; RegThrottleMax; _C_; + S__C_[0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._I0_ThrottleIn + {[0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._O1_Saturate; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L13_CruiseControl} + FROM ZeroPercent; RegThrottleMax; _C_; + S__C_[0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._I0_ThrottleIn + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L18_CruiseControl + FROM RegThrottleMax; _C_ + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L12_CruiseControl + FROM _C_; + S__C_[0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._I0_ThrottleIn + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L7_CruiseControl + FROM RegThrottleMax; _C_; + S__C_[0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._I0_ThrottleIn + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L17_CruiseControl + FROM ZeroPercent; _C_ + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L9_CruiseControl + FROM ZeroPercent; _C_; + S__C_[0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._I0_ThrottleIn + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L6_CruiseControl + FROM ZeroPercent; _C_; + S__C_[0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._I0_ThrottleIn + \result FROM \nothing +[from] Function ThrottleRegulation: + S__C_{[0]._C4_ThrottleCmd._C0_ThrottleRegulation._O0_Throttle; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L13_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._O0_ThrottleOut; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L8_CruiseControl} + FROM ZeroSpeed; ZeroPercent; Kp; Ki; RegThrottleMax; _C_; + S__C_{[0]._C4_ThrottleCmd._C0_ThrottleRegulation{._I1_CruiseSpeed; ._I2_VehiculeSpeed}; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L1_CruiseControl + FROM _C_; + S__C_[0]._C4_ThrottleCmd._C0_ThrottleRegulation._I1_CruiseSpeed + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L2_CruiseControl + FROM _C_; + S__C_[0]._C4_ThrottleCmd._C0_ThrottleRegulation._I2_VehiculeSpeed + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L3_CruiseControl + FROM _C_; + S__C_[0]._C4_ThrottleCmd._C0_ThrottleRegulation{._I1_CruiseSpeed; ._I2_VehiculeSpeed} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L6_CruiseControl + FROM Kp; _C_ + [0]._C4_ThrottleCmd._C0_ThrottleRegulation.ProportionnalAction + FROM Kp; _C_; + S__C_[0]._C4_ThrottleCmd._C0_ThrottleRegulation{._I1_CruiseSpeed; ._I2_VehiculeSpeed} + {[0]._C4_ThrottleCmd._C0_ThrottleRegulation._L22_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L23_CruiseControl} + FROM ZeroSpeed; _C_ + [0]._C4_ThrottleCmd._C0_ThrottleRegulation.HoldIntegralAction + FROM _C_; + S__C_{[0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._M_init_0_CruiseControl} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L16_CruiseControl + FROM ZeroSpeed; _C_; + S__C_{[0]._C4_ThrottleCmd._C0_ThrottleRegulation{._I1_CruiseSpeed; ._I2_VehiculeSpeed}; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._M_init_0_CruiseControl} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L18_CruiseControl + FROM ZeroSpeed; _C_; + S__C_[0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L10_CruiseControl + FROM ZeroSpeed; _C_; + S__C_{[0]._C4_ThrottleCmd._C0_ThrottleRegulation{._I1_CruiseSpeed; ._I2_VehiculeSpeed}; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L8_CruiseControl + FROM Ki; _C_ + [0]._C4_ThrottleCmd._C0_ThrottleRegulation.IntegralAction + FROM ZeroSpeed; Ki; _C_; + S__C_{[0]._C4_ThrottleCmd._C0_ThrottleRegulation{._I1_CruiseSpeed; ._I2_VehiculeSpeed}; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} + {[0]._C4_ThrottleCmd._C0_ThrottleRegulation._L4_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._I0_ThrottleIn; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L12_CruiseControl} + FROM ZeroSpeed; Kp; Ki; _C_; + S__C_{[0]._C4_ThrottleCmd._C0_ThrottleRegulation{._I1_CruiseSpeed; ._I2_VehiculeSpeed}; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} + {[0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._O1_Saturate; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L13_CruiseControl} + FROM ZeroSpeed; ZeroPercent; Kp; Ki; RegThrottleMax; _C_; + S__C_{[0]._C4_ThrottleCmd._C0_ThrottleRegulation{._I1_CruiseSpeed; ._I2_VehiculeSpeed}; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L19_CruiseControl + FROM _C_; S__C_[0]._C4_ThrottleCmd._C0_ThrottleRegulation._I0_Reset + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L21_CruiseControl + FROM ZeroSpeed; _C_; + S__C_{[0]._C4_ThrottleCmd._C0_ThrottleRegulation{._I0_Reset; ._I1_CruiseSpeed; ._I2_VehiculeSpeed}; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._M_init_0_CruiseControl + FROM _C_ + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L18_CruiseControl + FROM RegThrottleMax; _C_ + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L7_CruiseControl + FROM ZeroSpeed; Kp; Ki; RegThrottleMax; _C_; + S__C_{[0]._C4_ThrottleCmd._C0_ThrottleRegulation{._I1_CruiseSpeed; ._I2_VehiculeSpeed}; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L17_CruiseControl + FROM ZeroPercent; _C_ + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L9_CruiseControl + FROM ZeroSpeed; ZeroPercent; Kp; Ki; _C_; + S__C_{[0]._C4_ThrottleCmd._C0_ThrottleRegulation{._I1_CruiseSpeed; ._I2_VehiculeSpeed}; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L6_CruiseControl + FROM ZeroSpeed; ZeroPercent; Kp; Ki; _C_; + S__C_{[0]._C4_ThrottleCmd._C0_ThrottleRegulation{._I1_CruiseSpeed; ._I2_VehiculeSpeed}; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} + \result FROM \nothing +[from] Function ThrottleCmd: + S__C_{[0]._C4_ThrottleCmd._O0_Throttle; + [0]._C4_ThrottleCmd._L24_CruiseControl} + FROM ZeroSpeed; ZeroPercent; Kp; Ki; RegThrottleMax; _C_; + S__C_{[0]._C4_ThrottleCmd{._I0_Regul_ON; ._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._I3_Accelerator}; + [0]._C4_ThrottleCmd._L19_CruiseControl; + [0]._C4_ThrottleCmd._M_init_0_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} + {[0]._C4_ThrottleCmd._L21_CruiseControl; + [0]._C4_ThrottleCmd._L22_CruiseControl} + FROM _C_; + S__C_{[0]._C4_ThrottleCmd._L20_CruiseControl; + [0]._C4_ThrottleCmd._M_init_0_CruiseControl} + [0]._C4_ThrottleCmd._L20_CruiseControl + FROM _C_; S__C_[0]._C4_ThrottleCmd._I0_Regul_ON + [0]._C4_ThrottleCmd.ONRisingEdge + FROM _C_; + S__C_{[0]._C4_ThrottleCmd._I0_Regul_ON; + [0]._C4_ThrottleCmd._L20_CruiseControl; + [0]._C4_ThrottleCmd._M_init_0_CruiseControl} + [0]._C4_ThrottleCmd._L26_CruiseControl FROM ZeroPercent; _C_ + [0]._C4_ThrottleCmd._L1_CruiseControl + FROM _C_; S__C_[0]._C4_ThrottleCmd._I1_CruiseSpeed + [0]._C4_ThrottleCmd._L2_CruiseControl + FROM _C_; S__C_[0]._C4_ThrottleCmd._I2_VehiculeSpeed + [0]._C4_ThrottleCmd._L19_CruiseControl + FROM ZeroSpeed; ZeroPercent; Kp; Ki; RegThrottleMax; _C_; + S__C_{[0]._C4_ThrottleCmd{._I0_Regul_ON; ._I1_CruiseSpeed; ._I2_VehiculeSpeed}; + [0]._C4_ThrottleCmd._M_init_0_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} (and SELF) + [0]._C4_ThrottleCmd._L25_CruiseControl + FROM _C_; + S__C_{[0]._C4_ThrottleCmd._I0_Regul_ON; + [0]._C4_ThrottleCmd._I3_Accelerator} + [0]._C4_ThrottleCmd._M_init_0_CruiseControl + FROM _C_; S__C_[0]._C4_ThrottleCmd._I0_Regul_ON + {[0]._C4_ThrottleCmd._C0_ThrottleRegulation._I0_Reset; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L19_CruiseControl} + FROM _C_; + S__C_{[0]._C4_ThrottleCmd._I0_Regul_ON; + [0]._C4_ThrottleCmd._L20_CruiseControl; + [0]._C4_ThrottleCmd._M_init_0_CruiseControl} (and SELF) + {[0]._C4_ThrottleCmd._C0_ThrottleRegulation._I1_CruiseSpeed; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L1_CruiseControl} + FROM _C_; + S__C_[0]._C4_ThrottleCmd{._I0_Regul_ON; ._I1_CruiseSpeed} (and SELF) + {[0]._C4_ThrottleCmd._C0_ThrottleRegulation._I2_VehiculeSpeed; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L2_CruiseControl} + FROM _C_; + S__C_{[0]._C4_ThrottleCmd._I0_Regul_ON; + [0]._C4_ThrottleCmd._I2_VehiculeSpeed} (and SELF) + {[0]._C4_ThrottleCmd._C0_ThrottleRegulation._O0_Throttle; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L13_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._O0_ThrottleOut; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L8_CruiseControl} + FROM ZeroSpeed; ZeroPercent; Kp; Ki; RegThrottleMax; _C_; + S__C_{[0]._C4_ThrottleCmd{._I0_Regul_ON; ._I1_CruiseSpeed; ._I2_VehiculeSpeed}; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L3_CruiseControl + FROM _C_; + S__C_[0]._C4_ThrottleCmd{._I0_Regul_ON; ._I1_CruiseSpeed; ._I2_VehiculeSpeed} (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L6_CruiseControl + FROM Kp; _C_; S__C_[0]._C4_ThrottleCmd._I0_Regul_ON (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation.ProportionnalAction + FROM Kp; _C_; + S__C_[0]._C4_ThrottleCmd{._I0_Regul_ON; ._I1_CruiseSpeed; ._I2_VehiculeSpeed} (and SELF) + {[0]._C4_ThrottleCmd._C0_ThrottleRegulation._L22_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L23_CruiseControl} + FROM ZeroSpeed; _C_; S__C_[0]._C4_ThrottleCmd._I0_Regul_ON (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation.HoldIntegralAction + FROM _C_; + S__C_{[0]._C4_ThrottleCmd._I0_Regul_ON; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._M_init_0_CruiseControl} (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L16_CruiseControl + FROM ZeroSpeed; _C_; + S__C_{[0]._C4_ThrottleCmd{._I0_Regul_ON; ._I1_CruiseSpeed; ._I2_VehiculeSpeed}; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._M_init_0_CruiseControl} (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L18_CruiseControl + FROM ZeroSpeed; _C_; + S__C_{[0]._C4_ThrottleCmd._I0_Regul_ON; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L10_CruiseControl + FROM ZeroSpeed; _C_; + S__C_{[0]._C4_ThrottleCmd{._I0_Regul_ON; ._I1_CruiseSpeed; ._I2_VehiculeSpeed}; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L8_CruiseControl + FROM Ki; _C_; S__C_[0]._C4_ThrottleCmd._I0_Regul_ON (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation.IntegralAction + FROM ZeroSpeed; Ki; _C_; + S__C_{[0]._C4_ThrottleCmd{._I0_Regul_ON; ._I1_CruiseSpeed; ._I2_VehiculeSpeed}; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} (and SELF) + {[0]._C4_ThrottleCmd._C0_ThrottleRegulation._L4_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._I0_ThrottleIn; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L12_CruiseControl} + FROM ZeroSpeed; Kp; Ki; _C_; + S__C_{[0]._C4_ThrottleCmd{._I0_Regul_ON; ._I1_CruiseSpeed; ._I2_VehiculeSpeed}; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} (and SELF) + {[0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._O1_Saturate; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L13_CruiseControl} + FROM ZeroSpeed; ZeroPercent; Kp; Ki; RegThrottleMax; _C_; + S__C_{[0]._C4_ThrottleCmd{._I0_Regul_ON; ._I1_CruiseSpeed; ._I2_VehiculeSpeed}; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L21_CruiseControl + FROM ZeroSpeed; _C_; + S__C_{[0]._C4_ThrottleCmd{._I0_Regul_ON; ._I1_CruiseSpeed; ._I2_VehiculeSpeed}; + [0]._C4_ThrottleCmd._L20_CruiseControl; + [0]._C4_ThrottleCmd._M_init_0_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} (and SELF) + {[0]._C4_ThrottleCmd._C0_ThrottleRegulation._M_init_0_CruiseControl; + [0]._C4_ThrottleCmd._M_condact_2_CruiseControl} + FROM _C_; S__C_[0]._C4_ThrottleCmd._I0_Regul_ON (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L18_CruiseControl + FROM RegThrottleMax; _C_; + S__C_[0]._C4_ThrottleCmd._I0_Regul_ON (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L7_CruiseControl + FROM ZeroSpeed; Kp; Ki; RegThrottleMax; _C_; + S__C_{[0]._C4_ThrottleCmd{._I0_Regul_ON; ._I1_CruiseSpeed; ._I2_VehiculeSpeed}; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L17_CruiseControl + FROM ZeroPercent; _C_; + S__C_[0]._C4_ThrottleCmd._I0_Regul_ON (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L9_CruiseControl + FROM ZeroSpeed; ZeroPercent; Kp; Ki; _C_; + S__C_{[0]._C4_ThrottleCmd{._I0_Regul_ON; ._I1_CruiseSpeed; ._I2_VehiculeSpeed}; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L6_CruiseControl + FROM ZeroSpeed; ZeroPercent; Kp; Ki; _C_; + S__C_{[0]._C4_ThrottleCmd{._I0_Regul_ON; ._I1_CruiseSpeed; ._I2_VehiculeSpeed}; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} (and SELF) + \result FROM _C_; S__C_[0]._C4_ThrottleCmd._I0_Regul_ON +[from] Function CruiseControl: + S__C_{[0]._O0_Cruise_speed; [0]._C4_ThrottleCmd._I1_CruiseSpeed; + [0]._C4_ThrottleCmd._L1_CruiseControl} + FROM ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel; ._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0].CruiseSpeed; [0]._M_init_CruiseControl; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + {[0]._O1_Throttle_cmd; [0]._L22_CruiseControl; + [0]._C4_ThrottleCmd._O0_Throttle; + [0]._C4_ThrottleCmd._L24_CruiseControl} + FROM ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; ZeroPercent; Kp; + Ki; RegThrottleMax; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel; ._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0].CruiseSpeed; [0]._M_init_CruiseControl; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl; + [0]._C4_ThrottleCmd._L19_CruiseControl; + [0]._C4_ThrottleCmd._M_init_0_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} + {[0]._O2_Regul_ON; [0]._O4_Regul_STDBY; + [0]._C4_ThrottleCmd._I0_Regul_ON; + [0]._C4_ThrottleCmd._L20_CruiseControl} + FROM SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._O3_Regul_OFF + FROM SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + {[0]._L73_CruiseControl; [0]._L60_CruiseControl; + [0]._C3_CruiseStateMgt._I3_On; + [0]._C3_CruiseStateMgt._LE3_CruiseControl} + FROM _C_; S__C_[0]._I0_On + {[0]._L59_CruiseControl; [0]._C1_DetectPedalsPressed._I0_Brake; + [0]._C1_DetectPedalsPressed._L2_CruiseControl} + FROM _C_; S__C_[0]._I7_Brake + {[0]._L62_CruiseControl; [0]._C1_DetectPedalsPressed._I1_Accelerator; + [0]._C1_DetectPedalsPressed._L1_CruiseControl} + FROM _C_; S__C_[0]._I6_Accel + {[0].BrakePressed; [0]._C1_DetectPedalsPressed._O0_BrakePressed; + [0]._C1_DetectPedalsPressed._L4_CruiseControl; + [0]._C3_CruiseStateMgt._I0_BrakePressed; + [0]._C3_CruiseStateMgt._LE0_CruiseControl} + FROM ZeroPercent; _C_; S__C_[0]._I7_Brake + {[0].AcceleratorPressed; + [0]._C1_DetectPedalsPressed._O1_AcceleratorPressed; + [0]._C1_DetectPedalsPressed._L3_CruiseControl; + [0]._C3_CruiseStateMgt._I1_AcceleratorPressed; + [0]._C3_CruiseStateMgt._LE1_CruiseControl} + FROM ZeroPercent; _C_; S__C_[0]._I6_Accel + {[0]._L61_CruiseControl; [0]._C3_CruiseStateMgt._I2_Resume; + [0]._C3_CruiseStateMgt._LE2_CruiseControl} + FROM _C_; S__C_[0]._I2_Resume + {[0]._L58_CruiseControl; [0]._C3_CruiseStateMgt._I4_Off; + [0]._C3_CruiseStateMgt._LE4_CruiseControl} + FROM _C_; S__C_[0]._I1_Off + {[0]._L95_CruiseControl; [0]._L23_CruiseControl; + [0]._C2_DetectSpeedLimits._I0_speed; + [0]._C2_DetectSpeedLimits._L7_CruiseControl} + FROM _C_; S__C_[0]._I8_Speed + {[0].SpeedOutOffLimits; + [0]._C2_DetectSpeedLimits._O0_SpeedOutOffLimits; + [0]._C2_DetectSpeedLimits._L17_CruiseControl; + [0]._C3_CruiseStateMgt._I5_SpeedOutOffLimits; + [0]._C3_CruiseStateMgt._LE5_CruiseControl} + FROM SpeedMax; SpeedMin; _C_; S__C_[0]._I8_Speed + {[0]._L82_CruiseControl; + [0]{._L84_CruiseControl; ._L19_CruiseControl}; + [0]._C3_CruiseStateMgt._O0_Regul_ON; + [0]._C3_CruiseStateMgt._O2_Regul_STDBY; + [0]._C3_CruiseStateMgt{._LE42_CruiseControl; ._LE6_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE44_CruiseControl; ._LE8_CruiseControl}} + FROM SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + {[0]._L83_CruiseControl; [0]._C3_CruiseStateMgt._O1_Regul_OFF; + [0]._C3_CruiseStateMgt{._LE39_CruiseControl; ._LE43_CruiseControl; ._LE7_CruiseControl}} + FROM ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; [0]._I7_Brake; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._L96_CruiseControl FROM ZeroSpeed; _C_ + [0]._L38_CruiseControl FROM _C_; S__C_[0]._I3_Set + [0]._L39_CruiseControl FROM _C_; S__C_[0]._I4_QuickAccel + [0]._L40_CruiseControl FROM _C_; S__C_[0]._I5_QuickDecel + [0].CruiseSpeed + FROM ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel; ._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._M_init_CruiseControl; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} (and SELF) + {[0]._L26_CruiseControl; [0]._C4_ThrottleCmd._I3_Accelerator; + [0]._C4_ThrottleCmd._L25_CruiseControl} + FROM SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + {[0]._M_init_CruiseControl; + [0]._C4_ThrottleCmd._M_init_0_CruiseControl} + FROM SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + {[0]._C0_CruiseSpeedMgt._I0_On; + [0]._C0_CruiseSpeedMgt._L3_CruiseControl} + FROM SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} (and SELF) + {[0]._C0_CruiseSpeedMgt._I1_Set; + [0]._C0_CruiseSpeedMgt._L2_CruiseControl} + FROM SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} (and SELF) + {[0]._C0_CruiseSpeedMgt._I2_QuickAccel; + [0]._C0_CruiseSpeedMgt._L4_CruiseControl} + FROM SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; [0]._I4_QuickAccel; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} (and SELF) + {[0]._C0_CruiseSpeedMgt._I3_QuickDecel; + [0]._C0_CruiseSpeedMgt._L5_CruiseControl} + FROM SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I5_QuickDecel; ._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} (and SELF) + {[0]._C0_CruiseSpeedMgt._I4_Speed; + [0]._C0_CruiseSpeedMgt._L1_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._I2_VehiculeSpeed; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L2_CruiseControl} + FROM SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} (and SELF) + {[0]._C0_CruiseSpeedMgt._O0_CruiseSpeed; + [0]._C0_CruiseSpeedMgt._L7_CruiseControl} + FROM ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel; ._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} (and SELF) + [0]._C0_CruiseSpeedMgt._L6_CruiseControl + FROM SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} (and SELF) + {[0]._C0_CruiseSpeedMgt._L21_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L22_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L23_CruiseControl} + FROM ZeroSpeed; SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} (and SELF) + [0]._C0_CruiseSpeedMgt._L10_CruiseControl + FROM ZeroSpeed; SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} (and SELF) + {[0]._C0_CruiseSpeedMgt._L12_CruiseControl; + [0]._C0_CruiseSpeedMgt._L11_CruiseControl} + FROM SpeedInc; SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} (and SELF) + {[0]._C0_CruiseSpeedMgt._L13_CruiseControl; + [0]._C0_CruiseSpeedMgt._L14_CruiseControl} + FROM ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} (and SELF) + [0]._C0_CruiseSpeedMgt._L15_CruiseControl + FROM SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} (and SELF) + [0]._C0_CruiseSpeedMgt._L16_CruiseControl + FROM ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} (and SELF) + [0]._C0_CruiseSpeedMgt._L17_CruiseControl + FROM ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; [0]._I4_QuickAccel; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} (and SELF) + [0]._C0_CruiseSpeedMgt._L19_CruiseControl + FROM SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} (and SELF) + [0]._C0_CruiseSpeedMgt._L18_CruiseControl + FROM ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} (and SELF) + [0]._C0_CruiseSpeedMgt._L20_CruiseControl + FROM ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I5_QuickDecel; ._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} (and SELF) + [0]._C0_CruiseSpeedMgt._L9_CruiseControl + FROM ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I5_QuickDecel; ._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} (and SELF) + [0]._C0_CruiseSpeedMgt._L8_CruiseControl + FROM ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I4_QuickAccel; ._I5_QuickDecel; ._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} (and SELF) + {[0]._C0_CruiseSpeedMgt._M_init_0_CruiseControl; + [0]._M_condact_0_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._M_init_0_CruiseControl; + [0]._C4_ThrottleCmd._M_condact_2_CruiseControl} + FROM SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} (and SELF) + {[0]._C1_DetectPedalsPressed._L8_CruiseControl; + [0]._C1_DetectPedalsPressed._L7_CruiseControl} + FROM ZeroPercent; _C_ + [0]._C2_DetectSpeedLimits._L13_CruiseControl FROM SpeedMin; _C_ + [0]._C2_DetectSpeedLimits._L8_CruiseControl + FROM SpeedMin; _C_; S__C_[0]._I8_Speed + [0]._C2_DetectSpeedLimits._L14_CruiseControl FROM SpeedMax; _C_ + [0]._C2_DetectSpeedLimits._L9_CruiseControl + FROM SpeedMax; _C_; S__C_[0]._I8_Speed + [0]._C3_CruiseStateMgt._LE24_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._LE23_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE40_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._LE39_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE26_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._LE25_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE28_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE9_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._LE25_CruiseControl; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE10_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE11_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt._LE39_CruiseControl; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE33_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._LE32_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE35_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._LE34_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE38_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE12_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._LE34_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE13_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE14_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt._LE39_CruiseControl; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + {[0]._C3_CruiseStateMgt._LE17_CruiseControl; + [0]._C3_CruiseStateMgt._LE29_CruiseControl; + [0]._C3_CruiseStateMgt._LE30_CruiseControl} + FROM _C_; + S__C_{[0]._I1_Off; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt._LE39_CruiseControl; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE18_CruiseControl + FROM ZeroPercent; _C_; + S__C_{[0]._I1_Off; [0]._I7_Brake; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt._LE39_CruiseControl; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE16_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._LE15_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE41_CruiseControl + FROM _C_; + S__C_{[0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE19_CruiseControl + FROM _C_; + S__C_{[0]._I0_On; [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE20_CruiseControl + FROM _C_; + S__C_{[0]._I0_On; [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt._LE15_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE21_CruiseControl + FROM ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off}; [0]._I7_Brake; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE22_CruiseControl + FROM SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]._I6_Accel; [0]._I8_Speed} + {[0]._C3_CruiseStateMgt._LE23_CruiseControl; + [0]._C3_CruiseStateMgt._LE27_CruiseControl} + FROM SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + {[0]._C3_CruiseStateMgt._LE25_CruiseControl; + [0]._C3_CruiseStateMgt._LE34_CruiseControl} + FROM SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]._I1_Off; [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt._LE39_CruiseControl; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE31_CruiseControl + FROM _C_; + S__C_{[0]{._I1_Off; ._I2_Resume}; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt._LE39_CruiseControl; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + {[0]._C3_CruiseStateMgt._LE32_CruiseControl; + [0]._C3_CruiseStateMgt{._LE36_CruiseControl; ._LE37_CruiseControl}} + FROM SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt._LE39_CruiseControl; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._LE15_CruiseControl + FROM _C_; + S__C_{[0]{._I0_On; ._I1_Off}; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl FROM _C_ + {[0]._C4_ThrottleCmd._I2_VehiculeSpeed; + [0]._C4_ThrottleCmd._L2_CruiseControl} + FROM SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + {[0]._C4_ThrottleCmd._L21_CruiseControl; + [0]._C4_ThrottleCmd._L22_CruiseControl} + FROM SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl; + [0]._C4_ThrottleCmd._L20_CruiseControl; + [0]._C4_ThrottleCmd._M_init_0_CruiseControl} + [0]._C4_ThrottleCmd.ONRisingEdge + FROM SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl; + [0]._C4_ThrottleCmd._L20_CruiseControl; + [0]._C4_ThrottleCmd._M_init_0_CruiseControl} + [0]._C4_ThrottleCmd._L26_CruiseControl + FROM SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} + [0]._C4_ThrottleCmd._L19_CruiseControl + FROM ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; ZeroPercent; Kp; + Ki; RegThrottleMax; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel; ._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0].CruiseSpeed; [0]._M_init_CruiseControl; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl; + [0]._C4_ThrottleCmd._M_init_0_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} (and SELF) + {[0]._C4_ThrottleCmd._C0_ThrottleRegulation._I0_Reset; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L19_CruiseControl} + FROM SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl; + [0]._C4_ThrottleCmd._L20_CruiseControl; + [0]._C4_ThrottleCmd._M_init_0_CruiseControl} (and SELF) + {[0]._C4_ThrottleCmd._C0_ThrottleRegulation._I1_CruiseSpeed; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L1_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L3_CruiseControl} + FROM ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel; ._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0].CruiseSpeed; [0]._M_init_CruiseControl; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} (and SELF) + {[0]._C4_ThrottleCmd._C0_ThrottleRegulation._O0_Throttle; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L13_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._O0_ThrottleOut; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L8_CruiseControl} + FROM ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; ZeroPercent; Kp; + Ki; RegThrottleMax; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel; ._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0].CruiseSpeed; [0]._M_init_CruiseControl; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L6_CruiseControl + FROM SpeedMax; SpeedMin; ZeroPercent; Kp; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation.ProportionnalAction + FROM ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; ZeroPercent; Kp; + _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel; ._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0].CruiseSpeed; [0]._M_init_CruiseControl; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation.HoldIntegralAction + FROM SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._M_init_0_CruiseControl} (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L16_CruiseControl + FROM ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel; ._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0].CruiseSpeed; [0]._M_init_CruiseControl; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._M_init_0_CruiseControl} (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L18_CruiseControl + FROM ZeroSpeed; SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L10_CruiseControl + FROM ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel; ._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0].CruiseSpeed; [0]._M_init_CruiseControl; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L8_CruiseControl + FROM SpeedMax; SpeedMin; ZeroPercent; Ki; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation.IntegralAction + FROM ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; ZeroPercent; Ki; + _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel; ._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0].CruiseSpeed; [0]._M_init_CruiseControl; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} (and SELF) + {[0]._C4_ThrottleCmd._C0_ThrottleRegulation._L4_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._I0_ThrottleIn; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L12_CruiseControl} + FROM ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; ZeroPercent; Kp; + Ki; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel; ._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0].CruiseSpeed; [0]._M_init_CruiseControl; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} (and SELF) + {[0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._O1_Saturate; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L13_CruiseControl} + FROM ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; ZeroPercent; Kp; + Ki; RegThrottleMax; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel; ._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0].CruiseSpeed; [0]._M_init_CruiseControl; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L21_CruiseControl + FROM ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel; ._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0].CruiseSpeed; [0]._M_init_CruiseControl; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl; + [0]._C4_ThrottleCmd._L20_CruiseControl; + [0]._C4_ThrottleCmd._M_init_0_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L18_CruiseControl + FROM SpeedMax; SpeedMin; ZeroPercent; RegThrottleMax; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L7_CruiseControl + FROM ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; ZeroPercent; Kp; + Ki; RegThrottleMax; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel; ._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0].CruiseSpeed; [0]._M_init_CruiseControl; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L17_CruiseControl + FROM SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L9_CruiseControl + FROM ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; ZeroPercent; Kp; + Ki; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel; ._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0].CruiseSpeed; [0]._M_init_CruiseControl; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} (and SELF) + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._L6_CruiseControl + FROM ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; ZeroPercent; Kp; + Ki; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel; ._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0].CruiseSpeed; [0]._M_init_CruiseControl; + [0]._C0_CruiseSpeedMgt{._L7_CruiseControl; ._M_init_0_CruiseControl}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._L14_CruiseControl; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L21_CruiseControl; ._M_init_0_CruiseControl}} (and SELF) + \result FROM SpeedMax; SpeedMin; ZeroPercent; _C_; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume}; + [0]{._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]._C3_CruiseStateMgt._LE19_CruiseControl; + [0]._C3_CruiseStateMgt{._LE23_CruiseControl; ._LE25_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE32_CruiseControl; ._LE34_CruiseControl}; + [0]._C3_CruiseStateMgt{._LE15_CruiseControl; ._LE39_CruiseControl}; + [0]._C3_CruiseStateMgt._LE27_CruiseControl; + [0]._C3_CruiseStateMgt._LE37_CruiseControl; + [0]._C3_CruiseStateMgt._M_init_0_CruiseControl} +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function CruiseSpeedMgt: + __retres; + S__C_[0]._C0_CruiseSpeedMgt{._O0_CruiseSpeed; ._L1_CruiseControl; ._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl; ._L21_CruiseControl; ._L10_CruiseControl; ._L12_CruiseControl; ._L13_CruiseControl; ._L15_CruiseControl; ._L16_CruiseControl; ._L4_CruiseControl; ._L17_CruiseControl; ._L11_CruiseControl; ._L14_CruiseControl; ._L19_CruiseControl; ._L18_CruiseControl; ._L5_CruiseControl; ._L20_CruiseControl; ._L9_CruiseControl; ._L8_CruiseControl; ._L7_CruiseControl; ._M_init_0_CruiseControl} +[inout] Inputs for function CruiseSpeedMgt: + ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; + S__C_{[0]._C0_CruiseSpeedMgt{._I0_On; ._I1_Set; ._I2_QuickAccel; ._I3_QuickDecel; ._I4_Speed}; + [0]._C0_CruiseSpeedMgt{._L1_CruiseControl; ._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl; ._L21_CruiseControl; ._L10_CruiseControl; ._L12_CruiseControl; ._L13_CruiseControl; ._L15_CruiseControl; ._L16_CruiseControl; ._L4_CruiseControl; ._L17_CruiseControl; ._L11_CruiseControl; ._L14_CruiseControl; ._L19_CruiseControl; ._L18_CruiseControl; ._L5_CruiseControl; ._L20_CruiseControl; ._L9_CruiseControl; ._L8_CruiseControl; ._L7_CruiseControl; ._M_init_0_CruiseControl}} +[inout] Out (internal) for function CruiseStateMgt: + __retres; + S__C_[0]._C3_CruiseStateMgt{._O0_Regul_ON; ._O1_Regul_OFF; ._O2_Regul_STDBY; ._LE24_CruiseControl; ._LE0_CruiseControl; ._LE4_CruiseControl; ._LE40_CruiseControl; ._LE26_CruiseControl; ._LE28_CruiseControl; ._LE9_CruiseControl; ._LE10_CruiseControl; ._LE11_CruiseControl; ._LE33_CruiseControl; ._LE35_CruiseControl; ._LE38_CruiseControl; ._LE12_CruiseControl; ._LE13_CruiseControl; ._LE14_CruiseControl; ._LE17_CruiseControl; ._LE18_CruiseControl; ._LE3_CruiseControl; ._LE16_CruiseControl; ._LE41_CruiseControl; ._LE19_CruiseControl; ._LE20_CruiseControl; ._LE21_CruiseControl; ._LE1_CruiseControl; ._LE5_CruiseControl; ._LE22_CruiseControl; ._LE23_CruiseControl; ._LE25_CruiseControl; ._LE29_CruiseControl; ._LE2_CruiseControl; ._LE30_CruiseControl; ._LE31_CruiseControl; ._LE32_CruiseControl; ._LE34_CruiseControl; ._LE42_CruiseControl; ._LE6_CruiseControl; ._LE15_CruiseControl; ._LE39_CruiseControl; ._LE43_CruiseControl; ._LE7_CruiseControl; ._LE27_CruiseControl; ._LE36_CruiseControl; ._LE37_CruiseControl; ._LE44_CruiseControl; ._LE8_CruiseControl; ._M_init_0_CruiseControl} +[inout] Inputs for function CruiseStateMgt: + S__C_{[0]._C3_CruiseStateMgt{._I0_BrakePressed; ._I1_AcceleratorPressed; ._I2_Resume; ._I3_On; ._I4_Off; ._I5_SpeedOutOffLimits}; + [0]._C3_CruiseStateMgt{._LE24_CruiseControl; ._LE0_CruiseControl; ._LE4_CruiseControl; ._LE40_CruiseControl; ._LE26_CruiseControl; ._LE28_CruiseControl; ._LE9_CruiseControl; ._LE10_CruiseControl; ._LE11_CruiseControl; ._LE33_CruiseControl; ._LE35_CruiseControl; ._LE38_CruiseControl; ._LE12_CruiseControl; ._LE13_CruiseControl; ._LE14_CruiseControl; ._LE17_CruiseControl; ._LE18_CruiseControl; ._LE3_CruiseControl; ._LE16_CruiseControl; ._LE41_CruiseControl; ._LE19_CruiseControl; ._LE20_CruiseControl; ._LE21_CruiseControl; ._LE1_CruiseControl; ._LE5_CruiseControl; ._LE22_CruiseControl; ._LE23_CruiseControl; ._LE25_CruiseControl; ._LE29_CruiseControl; ._LE2_CruiseControl; ._LE30_CruiseControl; ._LE31_CruiseControl; ._LE32_CruiseControl; ._LE34_CruiseControl; ._LE42_CruiseControl; ._LE6_CruiseControl; ._LE15_CruiseControl; ._LE39_CruiseControl; ._LE43_CruiseControl; ._LE7_CruiseControl; ._LE27_CruiseControl; ._LE36_CruiseControl; ._LE37_CruiseControl; ._LE44_CruiseControl; ._LE8_CruiseControl; ._M_init_0_CruiseControl}} +[inout] Out (internal) for function DetectPedalsPressed: + __retres; + S__C_[0]._C1_DetectPedalsPressed{._O0_BrakePressed; ._O1_AcceleratorPressed; ._L2_CruiseControl; ._L8_CruiseControl; ._L4_CruiseControl; ._L1_CruiseControl; ._L7_CruiseControl; ._L3_CruiseControl} +[inout] Inputs for function DetectPedalsPressed: + ZeroPercent; + S__C_{[0]._C1_DetectPedalsPressed{._I0_Brake; ._I1_Accelerator}; + [0]._C1_DetectPedalsPressed{._L2_CruiseControl; ._L8_CruiseControl; ._L4_CruiseControl; ._L1_CruiseControl; ._L7_CruiseControl; ._L3_CruiseControl}} +[inout] Out (internal) for function DetectSpeedLimits: + __retres; + S__C_[0]._C2_DetectSpeedLimits{._O0_SpeedOutOffLimits; ._L7_CruiseControl; ._L13_CruiseControl; ._L8_CruiseControl; ._L14_CruiseControl; ._L9_CruiseControl; ._L17_CruiseControl} +[inout] Inputs for function DetectSpeedLimits: + SpeedMax; SpeedMin; + S__C_{[0]._C2_DetectSpeedLimits._I0_speed; + [0]._C2_DetectSpeedLimits{._L7_CruiseControl; ._L13_CruiseControl; ._L8_CruiseControl; ._L14_CruiseControl; ._L9_CruiseControl; ._L17_CruiseControl}} +[inout] Out (internal) for function SaturateThrottle: + __retres; + S__C_[0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._O0_ThrottleOut; ._O1_Saturate; ._L18_CruiseControl; ._L12_CruiseControl; ._L7_CruiseControl; ._L17_CruiseControl; ._L9_CruiseControl; ._L6_CruiseControl; ._L8_CruiseControl; ._L13_CruiseControl} +[inout] Inputs for function SaturateThrottle: + ZeroPercent; RegThrottleMax; + S__C_{[0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle._I0_ThrottleIn; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation._C0_SaturateThrottle{._L18_CruiseControl; ._L12_CruiseControl; ._L7_CruiseControl; ._L17_CruiseControl; ._L9_CruiseControl; ._L6_CruiseControl; ._L8_CruiseControl; ._L13_CruiseControl}} +[inout] Out (internal) for function ThrottleRegulation: + tmp; __retres; + S__C_[0]._C4_ThrottleCmd._C0_ThrottleRegulation{._O0_Throttle; ._L1_CruiseControl; ._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl; .ProportionnalAction; ._L22_CruiseControl; .HoldIntegralAction; ._L16_CruiseControl; ._L23_CruiseControl; ._L18_CruiseControl; ._L10_CruiseControl; ._L8_CruiseControl; .IntegralAction; ._L4_CruiseControl; ._L13_CruiseControl; ._L14_CruiseControl; ._L19_CruiseControl; ._L21_CruiseControl; ._M_init_0_CruiseControl; ._C0_SaturateThrottle} +[inout] Inputs for function ThrottleRegulation: + ZeroSpeed; ZeroPercent; Kp; Ki; RegThrottleMax; + S__C_{[0]._C4_ThrottleCmd._C0_ThrottleRegulation{._I0_Reset; ._I1_CruiseSpeed; ._I2_VehiculeSpeed}; + [0]._C4_ThrottleCmd._C0_ThrottleRegulation{._L1_CruiseControl; ._L2_CruiseControl; ._L3_CruiseControl; ._L6_CruiseControl; .ProportionnalAction; ._L22_CruiseControl; .HoldIntegralAction; ._L16_CruiseControl; ._L23_CruiseControl; ._L18_CruiseControl; ._L10_CruiseControl; ._L8_CruiseControl; .IntegralAction; ._L4_CruiseControl; ._L13_CruiseControl; ._L14_CruiseControl; ._L19_CruiseControl; ._L21_CruiseControl; ._M_init_0_CruiseControl; ._C0_SaturateThrottle}} +[inout] Out (internal) for function ThrottleCmd: + tmp; __retres; + S__C_[0]._C4_ThrottleCmd{._O0_Throttle; ._L21_CruiseControl; ._L20_CruiseControl; ._L22_CruiseControl; .ONRisingEdge; ._L26_CruiseControl; ._L1_CruiseControl; ._L2_CruiseControl; ._L19_CruiseControl; ._L25_CruiseControl; ._L24_CruiseControl; ._M_init_0_CruiseControl; ._C0_ThrottleRegulation; ._M_condact_2_CruiseControl} +[inout] Inputs for function ThrottleCmd: + ZeroSpeed; ZeroPercent; Kp; Ki; RegThrottleMax; + S__C_{[0]._C4_ThrottleCmd{._I0_Regul_ON; ._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._I3_Accelerator}; + [0]._C4_ThrottleCmd{._L21_CruiseControl; ._L20_CruiseControl; ._L22_CruiseControl; .ONRisingEdge; ._L26_CruiseControl; ._L1_CruiseControl; ._L2_CruiseControl; ._L19_CruiseControl; ._L25_CruiseControl; ._L24_CruiseControl; ._M_init_0_CruiseControl; ._C0_ThrottleRegulation}} +[inout] Out (internal) for function CruiseControl: + tmp; tmp_0; tmp_1; tmp_2; tmp_3; __retres; + S__C_[0]{._O0_Cruise_speed; ._O1_Throttle_cmd; ._O2_Regul_ON; ._O3_Regul_OFF; ._O4_Regul_STDBY; ._L73_CruiseControl; ._L59_CruiseControl; ._L62_CruiseControl; .BrakePressed; .AcceleratorPressed; ._L61_CruiseControl; ._L60_CruiseControl; ._L58_CruiseControl; ._L95_CruiseControl; .SpeedOutOffLimits; ._L82_CruiseControl; ._L83_CruiseControl; ._L84_CruiseControl; ._L19_CruiseControl; ._L96_CruiseControl; ._L38_CruiseControl; ._L39_CruiseControl; ._L40_CruiseControl; ._L23_CruiseControl; .CruiseSpeed; ._L26_CruiseControl; ._L22_CruiseControl; ._M_init_CruiseControl; ._C0_CruiseSpeedMgt; ._C1_DetectPedalsPressed; ._C2_DetectSpeedLimits; ._C3_CruiseStateMgt; ._M_condact_0_CruiseControl; ._C4_ThrottleCmd} +[inout] Inputs for function CruiseControl: + ZeroSpeed; SpeedInc; SpeedMax; SpeedMin; ZeroPercent; Kp; Ki; + RegThrottleMax; + S__C_{[0]{._I0_On; ._I1_Off; ._I2_Resume; ._I3_Set; ._I4_QuickAccel; ._I5_QuickDecel; ._I6_Accel; ._I7_Brake; ._I8_Speed}; + [0]{._L73_CruiseControl; ._L59_CruiseControl; ._L62_CruiseControl; .BrakePressed; .AcceleratorPressed; ._L61_CruiseControl; ._L60_CruiseControl; ._L58_CruiseControl; ._L95_CruiseControl; .SpeedOutOffLimits; ._L82_CruiseControl; ._L83_CruiseControl; ._L84_CruiseControl; ._L19_CruiseControl; ._L96_CruiseControl; ._L38_CruiseControl; ._L39_CruiseControl; ._L40_CruiseControl; ._L23_CruiseControl; .CruiseSpeed; ._L26_CruiseControl; ._L22_CruiseControl; ._M_init_CruiseControl; ._C0_CruiseSpeedMgt; ._C1_DetectPedalsPressed; ._C2_DetectSpeedLimits; ._C3_CruiseStateMgt}; + [0]._C4_ThrottleCmd{._I0_Regul_ON; ._I1_CruiseSpeed; ._I2_VehiculeSpeed; ._I3_Accelerator; ._O0_Throttle; ._L21_CruiseControl; ._L20_CruiseControl; ._L22_CruiseControl; .ONRisingEdge; ._L26_CruiseControl; ._L1_CruiseControl; ._L2_CruiseControl; ._L19_CruiseControl; ._L25_CruiseControl; ._L24_CruiseControl; ._M_init_0_CruiseControl; ._C0_ThrottleRegulation}} diff --git a/tests/value/oracle_symblocs/FP5.err.oracle b/tests/value/oracle_symblocs/FP5.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/FP5.res.oracle b/tests/value/oracle_symblocs/FP5.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..2b4e0fd3be9fa17907708b980f7944ffa57d5bcc --- /dev/null +++ b/tests/value/oracle_symblocs/FP5.res.oracle @@ -0,0 +1,31 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/FP5.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +tests/value/FP5.i:1:[value] warning: function main: precondition got status unknown. +tests/value/FP5.i:2:[value] warning: function main: precondition got status unknown. +tests/value/FP5.i:3:[value] function main: precondition got status valid. +tests/value/FP5.i:23:[value] entering loop for the first time +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + i ∈ [0..2147483647] + S_c[0] ∈ {-1; 0; 1} + [1] ∈ [--..--] + S_b[0..1] ∈ [--..--] +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + S_c[0] FROM a; c + S_b[0] FROM a; b (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + i; S_c[0]; S_b[0] +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/abs.err.oracle b/tests/value/oracle_symblocs/abs.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/abs.res.oracle b/tests/value/oracle_symblocs/abs.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..ec1882e4eb9f05fdf770988cd451283337220ee6 --- /dev/null +++ b/tests/value/oracle_symblocs/abs.res.oracle @@ -0,0 +1,26 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/abs.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +tests/value/abs.i:6:[value] warning: function main: precondition got status unknown. +tests/value/abs.i:9:[value] warning: signed overflow. assert -*p ≤ 2147483647; +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + S_p[0] ∈ [0..2147483647] + [1] ∈ [--..--] +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + S_p[0] FROM p; S_p[0] (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + S_p[0] +[inout] Inputs for function main: + S_p[0] diff --git a/tests/value/oracle_symblocs/abs_addr.err.oracle b/tests/value/oracle_symblocs/abs_addr.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/abs_addr.res.oracle b/tests/value/oracle_symblocs/abs_addr.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..8a7887f43f02a57ece2d9c300613542ff29cce66 --- /dev/null +++ b/tests/value/oracle_symblocs/abs_addr.res.oracle @@ -0,0 +1,49 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/abs_addr.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + NULL[rbits 1048576 to 2097151] ∈ [--..--] + AutoTest[0..999] ∈ {0} +[value] computing for function TstRomUcmm <- main. + Called from tests/value/abs_addr.i:46. +tests/value/abs_addr.i:18:[value] entering loop for the first time +tests/value/abs_addr.i:32:[value] entering loop for the first time +[value] Recording results for TstRomUcmm +[value] Done for function TstRomUcmm +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function TstRomUcmm: + AutoTest[0..72] ∈ {0} + [73] ∈ {0; 1} + [74..999] ∈ {0} + rom ∈ [--..--] or UNINITIALIZED + chkrom ∈ [--..--] + ptrom ∈ {262142} + __retres ∈ {0; 1} +[value:final-states] Values at end of function main: + AutoTest[0..72] ∈ {0} + [73] ∈ {0; 1} + [74..999] ∈ {0} +[from] Computing for function TstRomUcmm +[from] Done for function TstRomUcmm +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function TstRomUcmm: + AutoTest[73] FROM NULL[131072..262143] (and SELF) + \result FROM NULL[131072..262143]; AutoTest[73] +[from] Function main: + AutoTest[73] FROM NULL[131072..262143] (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function TstRomUcmm: + AutoTest[73]; rom; chkrom; ptrom; __retres +[inout] Inputs for function TstRomUcmm: + NULL[131072..262143]; AutoTest[73] +[inout] Out (internal) for function main: + AutoTest[73] +[inout] Inputs for function main: + NULL[131072..262143]; AutoTest[73] diff --git a/tests/value/oracle_symblocs/absolute_pointer.err.oracle b/tests/value/oracle_symblocs/absolute_pointer.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/absolute_pointer.res.oracle b/tests/value/oracle_symblocs/absolute_pointer.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..a857169bb4f33e711ceb93c0f3b06562b41d2b48 --- /dev/null +++ b/tests/value/oracle_symblocs/absolute_pointer.res.oracle @@ -0,0 +1,62 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/absolute_pointer.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + NULL[rbits 0 to 31] ∈ [--..--] + R ∈ {0} +[value] computing for function crash <- main. + Called from tests/value/absolute_pointer.i:18. +[value] computing for function f <- crash <- main. + Called from tests/value/absolute_pointer.i:12. +[value] Recording results for f +[value] Done for function f +tests/value/absolute_pointer.i:12:[value] warning: out of bounds write. assert \valid(tmp); + (tmp from f()) +tests/value/absolute_pointer.i:12:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +[value] Recording results for crash +[value] Done for function crash +[value] Recording results for main +[value] done for function main +tests/value/absolute_pointer.i:12:[value] assertion 'Value,mem_access' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + __retres ∈ {100} +[value:final-states] Values at end of function crash: + NON TERMINATING FUNCTION +[value:final-states] Values at end of function main: + NULL[rbits 0 to 7] ∈ {2} + [rbits 8 to 15] ∈ [--..--] + [rbits 16 to 23] ∈ {2} + [rbits 24 to 31] ∈ [--..--] + R ∈ [--..--] +[from] Computing for function f +[from] Done for function f +[from] Computing for function crash +[from] Non-terminating function crash (no dependencies) +[from] Done for function crash +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + \result FROM \nothing +[from] Function crash: + NON TERMINATING - NO EFFECTS +[from] Function main: + NULL{[0]; [2]} FROM \nothing + R FROM NULL[3] +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + __retres +[inout] Inputs for function f: + \nothing +[inout] Out (internal) for function crash: + v; tmp +[inout] Inputs for function crash: + \nothing +[inout] Out (internal) for function main: + NULL{[0]; [2]}; R +[inout] Inputs for function main: + NULL{[1]; [3]} diff --git a/tests/value/oracle_symblocs/abstract_struct_1.err.oracle b/tests/value/oracle_symblocs/abstract_struct_1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/abstract_struct_1.res.oracle b/tests/value/oracle_symblocs/abstract_struct_1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..da98bb1e90e8be7e5cbdd5c868b851e355ea0f42 --- /dev/null +++ b/tests/value/oracle_symblocs/abstract_struct_1.res.oracle @@ -0,0 +1,48 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/abstract_struct_1.c (with preprocessing) +[kernel] Parsing tests/value/abstract_struct_2.c (with preprocessing) +[value] Analyzing an incomplete application starting at main +[value] Computing initial state +tests/value/abstract_struct_1.c:10:[value] warning: during initialization of variable 'repositories', size of + type 'struct abstracttype' cannot be computed + (abstract type 'struct abstracttype') +[value] Initial state computed +[value:initial-state] Values of globals at initialization + __fc_random_counter ∈ [--..--] + __fc_rand_max ∈ {32767} + __fc_heap_status ∈ [--..--] + repositories ∈ {{ NULL ; &S_repositories[0] }} + S_repositories[0].data ∈ + {{ NULL ; (struct abstracttype *)&S_data_0_S_repositories }} + [1].data ∈ + {{ NULL ; (struct abstracttype *)&S_data_1_S_repositories }} + S_data_0_S_repositories[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + S_data_1_S_repositories[bits 0 to ..] ∈ [--..--] or UNINITIALIZED +[value] computing for function calloc <- main. + Called from tests/value/abstract_struct_1.c:13. +tests/value/abstract_struct_1.c:13:[kernel] warning: No code nor implicit assigns clause for function calloc, generating default assigns from the prototype +[value] using specification for function calloc +share/libc/stdlib.h:159:[value] function calloc: precondition got status valid. +[value] Done for function calloc +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + repositories ∈ + {{ NULL + [--..--] ; + &alloced_return_calloc + [0..2147483647] }} +[from] Computing for function main +[from] Computing for function calloc <-main +[from] Done for function calloc +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function calloc: + \result FROM nmemb; size +[from] Function main: + repositories FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + repositories +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/access_path.err.oracle b/tests/value/oracle_symblocs/access_path.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/access_path.res.oracle b/tests/value/oracle_symblocs/access_path.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..eee9b0ec7edabb79fc22c7145d3a8c0d123769f8 --- /dev/null +++ b/tests/value/oracle_symblocs/access_path.res.oracle @@ -0,0 +1,29 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/access_path.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +tests/value/access_path.i:2:[value] warning: out of bounds read. assert \valid_read(p); +tests/value/access_path.i:2:[value] warning: out of bounds write. assert \valid(*p); +tests/value/access_path.i:2:[value] warning: signed overflow. assert *(*p)+1 ≤ 2147483647; +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + __retres ∈ {0} + S_0_S_p[0] ∈ [-2147483647..2147483647] + [1] ∈ [--..--] +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + S_0_S_p[0] FROM p; S_p[0]; S_0_S_p[0] + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + __retres; S_0_S_p[0] +[inout] Inputs for function main: + S_p[0]; S_0_S_p[0] diff --git a/tests/value/oracle_symblocs/add_approx.err.oracle b/tests/value/oracle_symblocs/add_approx.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/add_approx.res.oracle b/tests/value/oracle_symblocs/add_approx.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..5b3082eafc76441ee8272f52f287edfaef3c5891 --- /dev/null +++ b/tests/value/oracle_symblocs/add_approx.res.oracle @@ -0,0 +1,32 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/add_approx.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + t[0..9] ∈ {0} + x ∈ {0} +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + t[0] ∈ {0; 2} + [1] ∈ {1; 2} + [2] ∈ {0} + [3] ∈ {77} + [4..9] ∈ {0} + x ∈ {0; 1} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + t[0] FROM c (and SELF) + [1] FROM c + [3] FROM \nothing + x FROM c +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + t{[0..1]; [3]}; x +[inout] Inputs for function main: + x diff --git a/tests/value/oracle_symblocs/addition.err.oracle b/tests/value/oracle_symblocs/addition.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/addition.res.oracle b/tests/value/oracle_symblocs/addition.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..598c0ce8795f992e72a2186a310658b030fd0fd4 --- /dev/null +++ b/tests/value/oracle_symblocs/addition.res.oracle @@ -0,0 +1,464 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/addition.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + NULL[rbits 360 to 391] ∈ [--..--] + t[0..9] ∈ {0} + x ∈ {0} + y ∈ {0} + z ∈ {0} + zz ∈ {0} + p1 ∈ {0} + p2 ∈ {0} + p3 ∈ {0} + p4 ∈ {0} + p5 ∈ {0} + p6 ∈ {0} + p7 ∈ {0} + p8 ∈ {0} + p9 ∈ {0} + p10 ∈ {0} + p11 ∈ {0} + p12 ∈ {0} + p13 ∈ {0} + p14 ∈ {0} + p15 ∈ {0} + p16 ∈ {0} + p17 ∈ {0} + u1 ∈ {0} + u3 ∈ {0} + q1 ∈ {0} + quo1 ∈ {0} + rem1 ∈ {0} + quo2 ∈ {0} + rem2 ∈ {0} + quo3 ∈ {0} + rem3 ∈ {0} + quo4 ∈ {0} + rem4 ∈ {0} + quo5 ∈ {0} + rem5 ∈ {0} + mm1 ∈ {0} + mm2 ∈ {0} + mm3 ∈ {0} + quo6 ∈ {0} + c1 ∈ {0} + c2 ∈ {0} + qu1 ∈ {0} + qu2 ∈ {0} + ll1 ∈ {0} + ll2 ∈ {0} + tt[0..4] ∈ {0} + ttt[0..4][0..5] ∈ {0} + square ∈ {0} +tests/value/addition.i:34:[value] warning: signed overflow. assert -2147483648 ≤ &p2-&p3; +tests/value/addition.i:34:[value] warning: signed overflow. assert &p2-&p3 ≤ 2147483647; +tests/value/addition.i:34:[value] Assigning imprecise value to p1. + The imprecision originates from Arithmetic {tests/value/addition.i:34} +tests/value/addition.i:36:[value] Assigning imprecise value to p2. + The imprecision originates from Arithmetic {tests/value/addition.i:36} +tests/value/addition.i:38:[value] Assigning imprecise value to p3. + The imprecision originates from Arithmetic {tests/value/addition.i:38} +tests/value/addition.i:40:[value] Assigning imprecise value to p4. + The imprecision originates from Arithmetic {tests/value/addition.i:40} +tests/value/addition.i:42:[value] Assigning imprecise value to p5. + The imprecision originates from Arithmetic {tests/value/addition.i:42} +tests/value/addition.i:44:[value] Assigning imprecise value to p6. + The imprecision originates from Arithmetic {tests/value/addition.i:44} +tests/value/addition.i:46:[value] Assigning imprecise value to p7. + The imprecision originates from Arithmetic {tests/value/addition.i:46} +tests/value/addition.i:48:[value] warning: pointer comparison. + assert \pointer_comparable((void *)(&p1+1), (void *)(&p2)); +tests/value/addition.i:50:[value] warning: signed overflow. assert -2147483648 ≤ (int)(&p1)/2; +tests/value/addition.i:50:[value] warning: signed overflow. assert (int)(&p1)/2 ≤ 2147483647; +tests/value/addition.i:50:[value] Assigning imprecise value to p9. + The imprecision originates from Arithmetic {tests/value/addition.i:50} +tests/value/addition.i:52:[value] Assigning imprecise value to p10. + The imprecision originates from Arithmetic {tests/value/addition.i:52} +tests/value/addition.i:56:[value] Assigning imprecise value to p12. + The imprecision originates from Arithmetic {tests/value/addition.i:56} +tests/value/addition.i:59:[value] warning: signed overflow. assert -2147483648 ≤ (int)*((char *)(&q1))+2; +tests/value/addition.i:59:[value] warning: signed overflow. assert (int)*((char *)(&q1))+2 ≤ 2147483647; +tests/value/addition.i:59:[value] Assigning imprecise value to p13. + The imprecision originates from Misaligned {tests/value/addition.i:59} +tests/value/addition.i:61:[value] warning: signed overflow. assert -2147483648 ≤ (int)*((char *)(&q1))+2; +tests/value/addition.i:61:[value] warning: signed overflow. assert (int)*((char *)(&q1))+2 ≤ 2147483647; +tests/value/addition.i:61:[value] Assigning imprecise value to p14. + The imprecision originates from Misaligned {tests/value/addition.i:61} +tests/value/addition.i:66:[value] warning: out of bounds read. assert \valid_read(*((int **)45)); +[value] Called Frama_C_show_each_1([-10..15]) +tests/value/addition.i:88:[value] assertion got status valid. +[value] Recording results for main +[value] done for function main +[value] warning: Garbled mix generated during analysis: + {{ garbled mix of &{p3} (origin: Arithmetic {tests/value/addition.i:34}) }} + {{ garbled mix of &{p2} (origin: Arithmetic {tests/value/addition.i:34}) }} + {{ garbled mix of &{p1} (origin: Arithmetic {tests/value/addition.i:36}) }} + {{ garbled mix of &{p1} (origin: Arithmetic {tests/value/addition.i:38}) }} + {{ garbled mix of &{p1} (origin: Arithmetic {tests/value/addition.i:40}) }} + {{ garbled mix of &{p2} (origin: Arithmetic {tests/value/addition.i:42}) }} + {{ garbled mix of &{p1} (origin: Arithmetic {tests/value/addition.i:42}) }} + {{ garbled mix of &{p1} (origin: Arithmetic {tests/value/addition.i:44}) }} + {{ garbled mix of &{p2} (origin: Arithmetic {tests/value/addition.i:46}) }} + {{ garbled mix of &{p1} (origin: Arithmetic {tests/value/addition.i:50}) }} + {{ garbled mix of &{p1} (origin: Arithmetic {tests/value/addition.i:52}) }} + {{ garbled mix of &{p2} (origin: Arithmetic {tests/value/addition.i:56}) }} + {{ garbled mix of &{p1} (origin: Arithmetic {tests/value/addition.i:56}) }} + {{ garbled mix of &{p1} (origin: Misaligned {tests/value/addition.i:59}) }} + {{ garbled mix of &{p1} (origin: Misaligned {tests/value/addition.i:61}) }} +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + t[0] ∈ {0} + [1] ∈ {45} + [2] ∈ {3} + [3..9] ∈ {0} + z ∈ {37} + p1 ∈ + {{ garbled mix of &{p2; p3} + (origin: Arithmetic {tests/value/addition.i:34}) }} + p2 ∈ + {{ garbled mix of &{p1} + (origin: Arithmetic {tests/value/addition.i:36}) }} + p3 ∈ + {{ garbled mix of &{t; p1} + (origin: Arithmetic {tests/value/addition.i:38}) }} + p4 ∈ + {{ garbled mix of &{p1; tt} + (origin: Arithmetic {tests/value/addition.i:40}) }} + p5 ∈ + {{ garbled mix of &{p1; p2; ttt} + (origin: Arithmetic {tests/value/addition.i:42}) }} + p6 ∈ + {{ garbled mix of &{p1; ttt} + (origin: Arithmetic {tests/value/addition.i:44}) }} + p7 ∈ + {{ garbled mix of &{p2; ttt} + (origin: Arithmetic {tests/value/addition.i:46}) }} + p8 ∈ {0; 1} + p9 ∈ + {{ garbled mix of &{p1} + (origin: Arithmetic {tests/value/addition.i:50}) }} + p10 ∈ + {{ garbled mix of &{p1} + (origin: Arithmetic {tests/value/addition.i:52}) }} + p11 ∈ [-2147483648..0] + p12 ∈ + {{ garbled mix of &{p1; p2} + (origin: Arithmetic {tests/value/addition.i:56}) }} + p13 ∈ + {{ garbled mix of &{p1} + (origin: Misaligned {tests/value/addition.i:59}) }} + p14 ∈ + {{ garbled mix of &{p1} + (origin: Misaligned {tests/value/addition.i:61}) }} + p15 ∈ {-1} + p16 ∈ {2949122} + p17 ∈ {-2147483648; 0} + u1 ∈ {8} + q1 ∈ {{ &p1 }} + quo1 ∈ {3} + rem1 ∈ {1} + quo2 ∈ {-3} + rem2 ∈ {-1} + quo3 ∈ {3} + rem3 ∈ {-1} + quo4 ∈ {-3} + rem4 ∈ {1} + quo5 ∈ {-3} + rem5 ∈ {0} + mm1 ∈ [-224848..151152],0%16 + mm2 ∈ [-6982976..4665024],64%128 + mm3 ∈ [-1182974..789526],1%5 + quo6 ∈ [-446..-371],1%3 + c1 ∈ [-48..77],2%5 + c2 ∈ [-46..79],4%5 + qu1 ∈ [53..223] + qu2 ∈ [-14..23] + ll1 ∈ [4294967248..4294967373],3%5 + ll2 ∈ [4294967250..4294967375],0%5 + tt[0].a ∈ {0} + [0].b ∈ {-1} + {[0].[bits 34 to 63]; [1..4]} ∈ {0} + square ∈ [-150..225] + u2 ∈ {34} + __retres ∈ {6} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + t[1] FROM NULL[45..48] + [2] FROM \nothing + z FROM \nothing + p1 FROM \nothing + p2 FROM \nothing + p3 FROM \nothing + p4 FROM \nothing + p5 FROM \nothing + p6 FROM u2 + p7 FROM u2 + p8 FROM \nothing + p9 FROM \nothing + p10 FROM \nothing + p11 FROM u2 (and SELF) + p12 FROM \nothing + p13 FROM \nothing + p14 FROM \nothing + p15 FROM \nothing + p16 FROM NULL[45..48]; t[0][bits 16 to 31] + p17 FROM u4 + u1 FROM \nothing + q1 FROM \nothing + quo1 FROM \nothing + rem1 FROM \nothing + quo2 FROM \nothing + rem2 FROM \nothing + quo3 FROM \nothing + rem3 FROM \nothing + quo4 FROM \nothing + rem4 FROM \nothing + quo5 FROM \nothing + rem5 FROM \nothing + mm1 FROM u2; u3_0 + mm2 FROM u2; u3_0 + mm3 FROM u2; u3_0 + quo6 FROM u3_0 + c1 FROM u3_0 + c2 FROM u3_0 + qu1 FROM u3_0 + qu2 FROM u3_0 + ll1 FROM u3_0 + ll2 FROM u3_0 + tt[0].b FROM \nothing + square FROM u3_0 + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + t[1..2]; z; p1; p2; p3; p4; p5; p6; p7; p8; p9; p10; p11; p12; p13; + p14; p15; p16; p17; u1; q1; quo1; rem1; quo2; rem2; quo3; rem3; quo4; + rem4; quo5; rem5; mm1; mm2; mm3; quo6; c1; c2; qu1; qu2; ll1; ll2; + tt[0].b; square; u2; s; t_0; __retres +[inout] Inputs for function main: + NULL[45..48]; t{{[0][bits 16 to 31]; [1][bits 0 to 15]}; [2]}; z; p17; + q1[bits 0 to 7]; ll1; ll2; tt[0].b +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + NULL[rbits 360 to 399] ∈ [--..--] + t[0..9] ∈ {0} + x ∈ {0} + y ∈ {0} + z ∈ {0} + zz ∈ {0} + p1 ∈ {0} + p2 ∈ {0} + p3 ∈ {0} + p4 ∈ {0} + p5 ∈ {0} + p6 ∈ {0} + p7 ∈ {0} + p8 ∈ {0} + p9 ∈ {0} + p10 ∈ {0} + p11 ∈ {0} + p12 ∈ {0} + p13 ∈ {0} + p14 ∈ {0} + p15 ∈ {0} + p16 ∈ {0} + p17 ∈ {0} + u1 ∈ {0} + u3 ∈ {0} + q1 ∈ {0} + quo1 ∈ {0} + rem1 ∈ {0} + quo2 ∈ {0} + rem2 ∈ {0} + quo3 ∈ {0} + rem3 ∈ {0} + quo4 ∈ {0} + rem4 ∈ {0} + quo5 ∈ {0} + rem5 ∈ {0} + mm1 ∈ {0} + mm2 ∈ {0} + mm3 ∈ {0} + quo6 ∈ {0} + c1 ∈ {0} + c2 ∈ {0} + qu1 ∈ {0} + qu2 ∈ {0} + ll1 ∈ {0} + ll2 ∈ {0} + tt[0..4] ∈ {0} + ttt[0..4][0..5] ∈ {0} + square ∈ {0} +tests/value/addition.i:34:[value] warning: signed overflow. assert -2147483648 ≤ &p2-&p3; +tests/value/addition.i:34:[value] warning: signed overflow. assert &p2-&p3 ≤ 2147483647; +tests/value/addition.i:48:[value] warning: pointer comparison. + assert \pointer_comparable((void *)(&p1+1), (void *)(&p2)); +tests/value/addition.i:50:[value] warning: signed overflow. assert -2147483648 ≤ (int)(&p1)/2; +tests/value/addition.i:50:[value] warning: signed overflow. assert (int)(&p1)/2 ≤ 2147483647; +tests/value/addition.i:59:[value] warning: signed overflow. assert -2147483648 ≤ (int)*((char *)(&q1))+2; +tests/value/addition.i:59:[value] warning: signed overflow. assert (int)*((char *)(&q1))+2 ≤ 2147483647; +tests/value/addition.i:61:[value] warning: signed overflow. assert -2147483648 ≤ (int)*((char *)(&q1))+2; +tests/value/addition.i:61:[value] warning: signed overflow. assert (int)*((char *)(&q1))+2 ≤ 2147483647; +tests/value/addition.i:66:[value] warning: out of bounds read. assert \valid_read(*((int **)45)); +[value] Called Frama_C_show_each_1([-10..15]) +[value] Recording results for main +[value] done for function main +[value] warning: Garbled mix generated during analysis: + {{ garbled mix of &{p3} (origin: Arithmetic {tests/value/addition.i:34}) }} + {{ garbled mix of &{p2} (origin: Arithmetic {tests/value/addition.i:34}) }} + {{ garbled mix of &{p1} (origin: Arithmetic {tests/value/addition.i:36}) }} + {{ garbled mix of &{p1} (origin: Arithmetic {tests/value/addition.i:38}) }} + {{ garbled mix of &{p1} (origin: Arithmetic {tests/value/addition.i:40}) }} + {{ garbled mix of &{p2} (origin: Arithmetic {tests/value/addition.i:42}) }} + {{ garbled mix of &{p1} (origin: Arithmetic {tests/value/addition.i:42}) }} + {{ garbled mix of &{p1} (origin: Arithmetic {tests/value/addition.i:44}) }} + {{ garbled mix of &{p2} (origin: Arithmetic {tests/value/addition.i:46}) }} + {{ garbled mix of &{p1} (origin: Arithmetic {tests/value/addition.i:50}) }} + {{ garbled mix of &{p1} (origin: Arithmetic {tests/value/addition.i:52}) }} + {{ garbled mix of &{p2} (origin: Arithmetic {tests/value/addition.i:56}) }} + {{ garbled mix of &{p1} (origin: Arithmetic {tests/value/addition.i:56}) }} + {{ garbled mix of &{p1} (origin: Misaligned {tests/value/addition.i:59}) }} + {{ garbled mix of &{p1} (origin: Misaligned {tests/value/addition.i:61}) }} +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + t[0] ∈ {0} + [1][bits 0 to 23] ∈ {0; 45; 46} + [1][bits 24 to 31] ∈ [--..--] + [2] ∈ {3} + [3..9] ∈ {0} + z ∈ {37} + p1 ∈ + {{ garbled mix of &{p2; p3} + (origin: Arithmetic {tests/value/addition.i:34}) }} + p2 ∈ + {{ garbled mix of &{p1} + (origin: Arithmetic {tests/value/addition.i:36}) }} + p3 ∈ + {{ garbled mix of &{t; p1} + (origin: Arithmetic {tests/value/addition.i:38}) }} + p4 ∈ + {{ garbled mix of &{p1; tt} + (origin: Arithmetic {tests/value/addition.i:40}) }} + p5 ∈ + {{ garbled mix of &{p1; p2; ttt} + (origin: Arithmetic {tests/value/addition.i:42}) }} + p6 ∈ + {{ garbled mix of &{p1; ttt} + (origin: Arithmetic {tests/value/addition.i:44}) }} + p7 ∈ + {{ garbled mix of &{p2; ttt} + (origin: Arithmetic {tests/value/addition.i:46}) }} + p8 ∈ {0; 1} + p9 ∈ + {{ garbled mix of &{p1} + (origin: Arithmetic {tests/value/addition.i:50}) }} + p10 ∈ + {{ garbled mix of &{p1} + (origin: Arithmetic {tests/value/addition.i:52}) }} + p11 ∈ [-2147483648..0] + p12 ∈ + {{ garbled mix of &{p1; p2} + (origin: Arithmetic {tests/value/addition.i:56}) }} + p13 ∈ + {{ garbled mix of &{p1} + (origin: Misaligned {tests/value/addition.i:59}) }} + p14 ∈ + {{ garbled mix of &{p1} + (origin: Misaligned {tests/value/addition.i:61}) }} + p15 ∈ {-1} + p16 ∈ {2; 2949122; 3014658} + p17 ∈ {-2147483648; 0} + u1 ∈ {8} + q1 ∈ {{ &p1 }} + quo1 ∈ {3} + rem1 ∈ {1} + quo2 ∈ {-3} + rem2 ∈ {-1} + quo3 ∈ {3} + rem3 ∈ {-1} + quo4 ∈ {-3} + rem4 ∈ {1} + quo5 ∈ {-3} + rem5 ∈ {0} + mm1 ∈ [-224848..151152],0%16 + mm2 ∈ [-6982976..4665024],64%128 + mm3 ∈ [-1182974..789526],1%5 + quo6 ∈ [-446..-371],1%3 + c1 ∈ [-48..77],2%5 + c2 ∈ [-46..79],4%5 + qu1 ∈ [53..223] + qu2 ∈ [-14..23] + ll1 ∈ [4294967248..4294967373],3%5 + ll2 ∈ [4294967250..4294967375],0%5 + tt[0].a ∈ {0} + [0].b ∈ {-1} + {[0].[bits 34 to 63]; [1..4]} ∈ {0} + square ∈ [-150..225] + u2 ∈ {34} + __retres ∈ {6} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + t[1] FROM NULL[45..49] + [2] FROM \nothing + z FROM \nothing + p1 FROM \nothing + p2 FROM \nothing + p3 FROM \nothing + p4 FROM \nothing + p5 FROM \nothing + p6 FROM u2 + p7 FROM u2 + p8 FROM \nothing + p9 FROM \nothing + p10 FROM \nothing + p11 FROM u2 (and SELF) + p12 FROM \nothing + p13 FROM \nothing + p14 FROM \nothing + p15 FROM \nothing + p16 FROM NULL[45..49]; t[0][bits 16 to 31] + p17 FROM u4 + u1 FROM \nothing + q1 FROM \nothing + quo1 FROM \nothing + rem1 FROM \nothing + quo2 FROM \nothing + rem2 FROM \nothing + quo3 FROM \nothing + rem3 FROM \nothing + quo4 FROM \nothing + rem4 FROM \nothing + quo5 FROM \nothing + rem5 FROM \nothing + mm1 FROM u2; u3_0 + mm2 FROM u2; u3_0 + mm3 FROM u2; u3_0 + quo6 FROM u3_0 + c1 FROM u3_0 + c2 FROM u3_0 + qu1 FROM u3_0 + qu2 FROM u3_0 + ll1 FROM u3_0 + ll2 FROM u3_0 + tt[0].b FROM \nothing + square FROM u3_0 + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + t[1..2]; z; p1; p2; p3; p4; p5; p6; p7; p8; p9; p10; p11; p12; p13; + p14; p15; p16; p17; u1; q1; quo1; rem1; quo2; rem2; quo3; rem3; quo4; + rem4; quo5; rem5; mm1; mm2; mm3; quo6; c1; c2; qu1; qu2; ll1; ll2; + tt[0].b; square; u2; s; t_0; __retres +[inout] Inputs for function main: + NULL[45..49]; t{{[0][bits 16 to 31]; [1][bits 0 to 15]}; [2]}; z; p17; + q1[bits 0 to 7]; ll1; ll2; tt[0].b diff --git a/tests/value/oracle_symblocs/addr.0.err.oracle b/tests/value/oracle_symblocs/addr.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/addr.0.res.oracle b/tests/value/oracle_symblocs/addr.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..658fecb224c14e7a6f920863ef02883db3549344 --- /dev/null +++ b/tests/value/oracle_symblocs/addr.0.res.oracle @@ -0,0 +1,44 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/addr.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + t[0..4] ∈ {0} + x ∈ {0} + p ∈ {0} + q ∈ {0} +[value] computing for function f <- main. + Called from tests/value/addr.i:20. +[value] Recording results for f +[value] Done for function f +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + p ∈ {{ &t[2] }} +[value:final-states] Values at end of function main: + t[0..1] ∈ {0} + [2] ∈ {77} + [3..4] ∈ {0} + p ∈ {{ &t[2] }} +[from] Computing for function f +[from] Done for function f +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + p FROM i +[from] Function main: + t[2] FROM \nothing + p FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + p +[inout] Inputs for function f: + \nothing +[inout] Out (internal) for function main: + t[2]; p +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/addr.1.err.oracle b/tests/value/oracle_symblocs/addr.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/addr.1.res.oracle b/tests/value/oracle_symblocs/addr.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..577dd891b6116373eaa2bb92a01ef7f3ed1996dc --- /dev/null +++ b/tests/value/oracle_symblocs/addr.1.res.oracle @@ -0,0 +1,26 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/addr.i (no preprocessing) +[value] Analyzing a complete application starting at f +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + t[0..4] ∈ {0} + x ∈ {0} + p ∈ {0} + q ∈ {0} +[value] Recording results for f +[value] done for function f +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + p ∈ {{ &t + [-8589934592..8589934588],0%4 }} +[from] Computing for function f +[from] Done for function f +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + p FROM i +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + p +[inout] Inputs for function f: + \nothing diff --git a/tests/value/oracle_symblocs/addr2.err.oracle b/tests/value/oracle_symblocs/addr2.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/addr2.res.oracle b/tests/value/oracle_symblocs/addr2.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..ac6e2a512c4b4d96c93b46a15e4a6209fc95a87f --- /dev/null +++ b/tests/value/oracle_symblocs/addr2.res.oracle @@ -0,0 +1,29 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/addr2.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + x ∈ {0} + t[0..12] ∈ {0} +tests/value/addr2.i:13:[value] entering loop for the first time +[value] Called Frama_C_show_each_F({0}) +[value] Called Frama_C_show_each_F({0; 1}) +[value] Called Frama_C_show_each_F({0; 1; 2}) +[value] Called Frama_C_show_each_F([0..12]) +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + i ∈ {13} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + i +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/addrofstring.err.oracle b/tests/value/oracle_symblocs/addrofstring.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/addrofstring.res.oracle b/tests/value/oracle_symblocs/addrofstring.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..d3bb72d2cabe9e35ad77131ad8519f85263e4724 --- /dev/null +++ b/tests/value/oracle_symblocs/addrofstring.res.oracle @@ -0,0 +1,24 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/addrofstring.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + p ∈ {{ "bar" }} + __retres ∈ {0} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + \result FROM "bar"[bits 8 to 15] +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + p; __retres +[inout] Inputs for function main: + "bar"[bits 8 to 15] diff --git a/tests/value/oracle_symblocs/affect_corrupt.0.err.oracle b/tests/value/oracle_symblocs/affect_corrupt.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/affect_corrupt.0.res.oracle b/tests/value/oracle_symblocs/affect_corrupt.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e64ee562a6e6d9eef9282dec1872770fba090694 --- /dev/null +++ b/tests/value/oracle_symblocs/affect_corrupt.0.res.oracle @@ -0,0 +1,27 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/affect_corrupt.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + p ∈ {0} + r ∈ {77} +tests/value/affect_corrupt.i:8:[value] warning: out of bounds read. assert \valid_read(p); +[value] Recording results for main +[value] done for function main +tests/value/affect_corrupt.i:8:[value] assertion 'Value,mem_access' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + NON TERMINATING FUNCTION +[from] Computing for function main +[from] Non-terminating function main (no dependencies) +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NON TERMINATING - NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + r +[inout] Inputs for function main: + p diff --git a/tests/value/oracle_symblocs/affect_corrupt.1.err.oracle b/tests/value/oracle_symblocs/affect_corrupt.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/affect_corrupt.1.res.oracle b/tests/value/oracle_symblocs/affect_corrupt.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..21b9db54edd07ac38ef61a3977be2afdfdc8756f --- /dev/null +++ b/tests/value/oracle_symblocs/affect_corrupt.1.res.oracle @@ -0,0 +1,25 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/affect_corrupt.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + NULL[rbits 0 to 31] ∈ [--..--] + p ∈ {0} + r ∈ {77} +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + r ∈ [--..--] +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + r FROM NULL[0..3]; p +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + r +[inout] Inputs for function main: + NULL[0..3]; p diff --git a/tests/value/oracle_symblocs/ai_annot.err.oracle b/tests/value/oracle_symblocs/ai_annot.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/ai_annot.res.oracle b/tests/value/oracle_symblocs/ai_annot.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..fd561c0a9cb52a8e08b5a7ca780742190640fd48 --- /dev/null +++ b/tests/value/oracle_symblocs/ai_annot.res.oracle @@ -0,0 +1,38 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/ai_annot.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + u ∈ {0} + v ∈ {0} + w ∈ {0} +tests/value/ai_annot.i:9:[value] warning: assertion got status unknown. +tests/value/ai_annot.i:10:[value] warning: assertion got status unknown. +tests/value/ai_annot.i:11:[value] warning: assertion got status unknown. +tests/value/ai_annot.i:12:[value] warning: out of bounds write. assert \valid(p+1); +tests/value/ai_annot.i:14:[value] warning: out of bounds read. assert \valid_read(p+2); +tests/value/ai_annot.i:14:[value] warning: signed overflow. assert x+*(p+2) ≤ 2147483647; +[value] Recording results for main +[value] done for function main +[scope:rm_asserts] removing 2 assertion(s) +tests/value/ai_annot.i:12:[scope:rm_asserts] removing redundant assert Value: mem_access: \valid(p+1); +tests/value/ai_annot.i:14:[scope:rm_asserts] removing redundant assert Value: mem_access: \valid_read(p+2); +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + __retres ∈ [--..--] + S_p[0] ∈ [--..--] + [1] ∈ [0..2147483647] + [2] ∈ [--..--] +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + S_p[1] FROM x; p + \result FROM x; p; S_p[2] +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + __retres; S_p[1] +[inout] Inputs for function main: + S_p[2] diff --git a/tests/value/oracle_symblocs/alias.0.err.oracle b/tests/value/oracle_symblocs/alias.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/alias.0.res.oracle b/tests/value/oracle_symblocs/alias.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..cbdd83cd020b66c90f174667fd3142c9951e45c8 --- /dev/null +++ b/tests/value/oracle_symblocs/alias.0.res.oracle @@ -0,0 +1,160 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/alias.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + A ∈ {0} + B ∈ {0} + C ∈ {0} + D ∈ {0} + E ∈ {0} + F ∈ {0} + G ∈ {0} + p[0..4] ∈ {0} + q[0] ∈ {1} + [1] ∈ {2} + [2] ∈ {3} + [3] ∈ {4} + [4] ∈ {5} + p2[0..4] ∈ {0} + q2[0] ∈ {1} + [1] ∈ {2} + [2] ∈ {3} + [3] ∈ {4} + [4] ∈ {5} + p3[0..4] ∈ {0} + t ∈ {0} + u ∈ {0} + v ∈ {0} + w ∈ {0} + x ∈ {0} + y ∈ {0} + z ∈ {0} + t2 ∈ {0} + v2 ∈ {0} + PTR1 ∈ {0} + PTR2 ∈ {0} + PTR3 ∈ {0} + PTR4 ∈ {0} + PTR5 ∈ {0} + PTR6 ∈ {0} + c ∈ [--..--] + c1 ∈ [--..--] + c2 ∈ [--..--] + c3 ∈ [--..--] + c4 ∈ [--..--] + e ∈ {0} + g ∈ {0} + h ∈ {0} + i ∈ {0} + tz1 ∈ {0} + tz2 ∈ {0} + tz3 ∈ {0} + tx ∈ {0} + ty ∈ {0} + tz ∈ {0} + U ∈ {0} + char1 ∈ {0} + ll1 ∈ {0} +[value] computing for function f <- main. + Called from tests/value/alias.i:45. +[value] Recording results for f +[value] Done for function f +[value] computing for function f <- main. + Called from tests/value/alias.i:46. +[value] Recording results for f +[value] Done for function f +[value] computing for function f <- main. + Called from tests/value/alias.i:47. +[value] Recording results for f +[value] Done for function f +tests/value/alias.i:82:[value] warning: signed overflow. assert -2147483648 ≤ p3[1]-vol; +tests/value/alias.i:82:[value] warning: signed overflow. assert p3[1]-vol ≤ 2147483647; +[value] Called Frama_C_show_each_d0([-2147483648..2147483647]) +tests/value/alias.i:84:[value] warning: signed overflow. assert -2147483648 ≤ p3[1]-vol; +tests/value/alias.i:84:[value] warning: signed overflow. assert p3[1]-vol ≤ 2147483647; +[value] Called Frama_C_show_each_d2([-2147483648..2147483647]) +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: +Cannot filter: dumping raw memory (including unchanged variables) + A ∈ {516} + B ∈ {4} + C ∈ {0} + D ∈ {0} + E ∈ {0} + F ∈ {0} + G ∈ {0} + p[0][bits 0 to 15]# ∈ {1} repeated %8 + {[0][bits 16 to 31]; [1..4]} ∈ {0} + q[0] ∈ {1} + [1] ∈ {2} + [2] ∈ {3} + [3] ∈ {4} + [4] ∈ {5} + p2[0] ∈ {0; 7} + [1] ∈ {0; 6} + [2..4] ∈ {0} + q2[0] ∈ {1} + [1] ∈ {2; 7} + [2] ∈ {3; 6} + [3] ∈ {4} + [4] ∈ {5} + p3[0] ∈ {0} + [1] ∈ [--..--] + [2..4] ∈ {0} + t ∈ {1; 2; 4} + u ∈ {2; 3; 4; 5} + v ∈ {1; 2; 4; 5} + w ∈ {1; 2; 4; 5} + x ∈ {1; 4} + y ∈ {2; 4; 5} + z ∈ {3; 5} + t2 ∈ {0; 3; 6} + v2 ∈ {0; 2; 7} + PTR1 ∈ {{ &x ; &y }} + PTR2 ∈ {{ &y ; &z }} + PTR3 ∈ {{ &x ; &y }} + PTR4 ∈ {{ &p2[1] ; &q2[2] }} + PTR5 ∈ {0} + PTR6 ∈ {0} + c ∈ [--..--] + c1 ∈ [--..--] + c2 ∈ [--..--] + c3 ∈ [--..--] + c4 ∈ [--..--] + vol ∈ [--..--] + e ∈ {0} + g ∈ {0} + h ∈ {0} + i ∈ {0} + tz1 ∈ {0} + tz2 ∈ {0} + tz3 ∈ {0} + tx ∈ {0} + ty ∈ {0} + tz ∈ {0} + U ∈ {0} + char1 ∈ {0} + ll1 ∈ {0} +[from] Computing for function f +[from] Done for function f +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + FROMTOP +[from] Function main: + FROMTOP +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + ANYTHING(origin:Unknown) +[inout] Inputs for function f: + ANYTHING(origin:Unknown) +[inout] Out (internal) for function main: + ANYTHING(origin:Unknown) +[inout] Inputs for function main: + ANYTHING(origin:Unknown) diff --git a/tests/value/oracle_symblocs/alias.1.err.oracle b/tests/value/oracle_symblocs/alias.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/alias.1.res.oracle b/tests/value/oracle_symblocs/alias.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..4384e6d280525c54b1671699ab8408c0fda567e6 --- /dev/null +++ b/tests/value/oracle_symblocs/alias.1.res.oracle @@ -0,0 +1,115 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/alias.i (no preprocessing) +[value] Analyzing a complete application starting at main3 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + A ∈ {0} + B ∈ {0} + C ∈ {0} + D ∈ {0} + E ∈ {0} + F ∈ {0} + G ∈ {0} + p[0..4] ∈ {0} + q[0] ∈ {1} + [1] ∈ {2} + [2] ∈ {3} + [3] ∈ {4} + [4] ∈ {5} + p2[0..4] ∈ {0} + q2[0] ∈ {1} + [1] ∈ {2} + [2] ∈ {3} + [3] ∈ {4} + [4] ∈ {5} + p3[0..4] ∈ {0} + t ∈ {0} + u ∈ {0} + v ∈ {0} + w ∈ {0} + x ∈ {0} + y ∈ {0} + z ∈ {0} + t2 ∈ {0} + v2 ∈ {0} + PTR1 ∈ {0} + PTR2 ∈ {0} + PTR3 ∈ {0} + PTR4 ∈ {0} + PTR5 ∈ {0} + PTR6 ∈ {0} + c ∈ [--..--] + c1 ∈ [--..--] + c2 ∈ [--..--] + c3 ∈ [--..--] + c4 ∈ [--..--] + e ∈ {0} + g ∈ {0} + h ∈ {0} + i ∈ {0} + tz1 ∈ {0} + tz2 ∈ {0} + tz3 ∈ {0} + tx ∈ {0} + ty ∈ {0} + tz ∈ {0} + U ∈ {0} + char1 ∈ {0} + ll1 ∈ {0} +tests/value/alias.i:97:[value] warning: signed overflow. assert c+1 ≤ 2147483647; +tests/value/alias.i:105:[value] warning: signed overflow. assert c+1 ≤ 2147483647; +tests/value/alias.i:105:[value] warning: signed overflow. assert c+2 ≤ 2147483647; +tests/value/alias.i:107:[value] warning: signed overflow. assert c+10 ≤ 2147483647; +tests/value/alias.i:107:[value] warning: signed overflow. assert c+11 ≤ 2147483647; +tests/value/alias.i:108:[value] warning: signed overflow. assert c+3 ≤ 2147483647; +tests/value/alias.i:108:[value] warning: signed overflow. assert c+4 ≤ 2147483647; +[value] Recording results for main3 +[value] done for function main3 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main3: + p2[0] ∈ {0; 96; 97; 98} + [1..2] ∈ {0; 96; 97; 98; 99} + [3] ∈ {0} + [4] ∈ {0; 99} + t ∈ {3; 4} + u ∈ {0; 1} + v ∈ {0; 1} + x ∈ {0; 96; 97; 98; 99} + z ∈ {0; 1; 2} + t2 ∈ {0; 96; 97; 98; 99} + v2 ∈ {-1; 0; 1; 2; 3; 4} + PTR1 ∈ {{ &p2{[0], [1], [2]} }} + PTR2 ∈ {{ &p2{[1], [2]} }} + PTR3 ∈ {{ &p2{[1], [2], [4]} }} + PTR4 ∈ {{ &p2{[1], [2]} }} + p_0 ∈ {{ &s1 ; &s2 }} + s1.a ∈ {2; 7} + .b ∈ {4} + .c ∈ {6} + s2.a ∈ {1; 7} + .b ∈ {3} + .c ∈ {5} +[from] Computing for function main3 +[from] Done for function main3 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main3: + p2{[0..2]; [4]} FROM c (and SELF) + t FROM c + u FROM c + v FROM c + x FROM p2[0..2]; c + z FROM w; c + t2 FROM p2[0..2]; c + v2 FROM c + PTR1 FROM c + PTR2 FROM c + PTR3 FROM c + PTR4 FROM c +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main3: + p2{[0..2]; [4]}; t; u; v; x; z; t2; v2; PTR1; PTR2; PTR3; PTR4; p_0; + s1; s2; tmp; tmp_0; tmp_1; tmp_2; tmp_3 +[inout] Inputs for function main3: + p2[0..2]; u; v; w; PTR1; PTR2; PTR3; PTR4; c diff --git a/tests/value/oracle_symblocs/alias.2.err.oracle b/tests/value/oracle_symblocs/alias.2.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/alias.2.res.oracle b/tests/value/oracle_symblocs/alias.2.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..ff3b27f8bdb0397868eedc9660381c65e84be95f --- /dev/null +++ b/tests/value/oracle_symblocs/alias.2.res.oracle @@ -0,0 +1,121 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/alias.i (no preprocessing) +[value] Analyzing a complete application starting at main4 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + NULL[rbits 0 to 2047] ∈ [--..--] + A ∈ {0} + B ∈ {0} + C ∈ {0} + D ∈ {0} + E ∈ {0} + F ∈ {0} + G ∈ {0} + p[0..4] ∈ {0} + q[0] ∈ {1} + [1] ∈ {2} + [2] ∈ {3} + [3] ∈ {4} + [4] ∈ {5} + p2[0..4] ∈ {0} + q2[0] ∈ {1} + [1] ∈ {2} + [2] ∈ {3} + [3] ∈ {4} + [4] ∈ {5} + p3[0..4] ∈ {0} + t ∈ {0} + u ∈ {0} + v ∈ {0} + w ∈ {0} + x ∈ {0} + y ∈ {0} + z ∈ {0} + t2 ∈ {0} + v2 ∈ {0} + PTR1 ∈ {0} + PTR2 ∈ {0} + PTR3 ∈ {0} + PTR4 ∈ {0} + PTR5 ∈ {0} + PTR6 ∈ {0} + c ∈ [--..--] + c1 ∈ [--..--] + c2 ∈ [--..--] + c3 ∈ [--..--] + c4 ∈ [--..--] + e ∈ {0} + g ∈ {0} + h ∈ {0} + i ∈ {0} + tz1 ∈ {0} + tz2 ∈ {0} + tz3 ∈ {0} + tx ∈ {0} + ty ∈ {0} + tz ∈ {0} + U ∈ {0} + char1 ∈ {0} + ll1 ∈ {0} +tests/value/alias.i:142:[value] warning: signed overflow. assert c+1 ≤ 2147483647; +tests/value/alias.i:142:[value] warning: signed overflow. assert c+2 ≤ 2147483647; +tests/value/alias.i:144:[value] warning: signed overflow. assert c+3 ≤ 2147483647; +tests/value/alias.i:144:[value] warning: signed overflow. assert c+4 ≤ 2147483647; +[value] Recording results for main4 +[value] done for function main4 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main4: + u ∈ {0; 1; 2} + v ∈ {1; 2; 3} + x ∈ {1; 2; 5} + y ∈ {1; 2; 5} + z ∈ {-5; -4; -3; -2; -1; 0; 1; 1000} + p_0 ∈ {{ &t1.s2 ; &t2_0.s3 }} + s.a ∈ {4; 27; 777} + .b ∈ {5; 28} + .c ∈ {6; 29} + ss ∈ [--..--] + sss.a ∈ {4; 27; 777} + .b ∈ {5; 28; 888} + .c ∈ {6; 29} + pt ∈ {0} + t1.s1.a ∈ {1} + .s1.b ∈ {2} + .s1.c ∈ {3} + .s2.a ∈ {4; 777} + .s2.b ∈ {5; 888} + .s2.c ∈ {6} + .s3.a ∈ {7} + .s3.b ∈ {8} + .s3.c ∈ {9} + .s4.a ∈ {10} + .s4.b ∈ {11} + .s4.c ∈ {12} + t2_0.s1.a ∈ {21} + .s1.b ∈ {22} + .s1.c ∈ {23} + .s2.a ∈ {24} + .s2.b ∈ {25} + .s2.c ∈ {26} + .s3.a ∈ {27; 777} + .s3.b ∈ {28; 888} + .s3.c ∈ {29} + .s4.a ∈ {30} + .s4.b ∈ {31} + .s4.c ∈ {32} +[from] Computing for function main4 +[from] Done for function main4 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main4: + u FROM c + v FROM c + x FROM c + y FROM c + z FROM c +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main4: + u; v; x; y; z; p_0; s; ss; sss; pt; t1; t2_0; tmp; tmp_0 +[inout] Inputs for function main4: + NULL[0..11]; u; v; x; y; c diff --git a/tests/value/oracle_symblocs/alias.3.err.oracle b/tests/value/oracle_symblocs/alias.3.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/alias.3.res.oracle b/tests/value/oracle_symblocs/alias.3.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..fedab151a6af8f0aca4350619c7e47b1b960c35e --- /dev/null +++ b/tests/value/oracle_symblocs/alias.3.res.oracle @@ -0,0 +1,108 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/alias.i (no preprocessing) +[value] Analyzing a complete application starting at main5 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + A ∈ {0} + B ∈ {0} + C ∈ {0} + D ∈ {0} + E ∈ {0} + F ∈ {0} + G ∈ {0} + p[0..4] ∈ {0} + q[0] ∈ {1} + [1] ∈ {2} + [2] ∈ {3} + [3] ∈ {4} + [4] ∈ {5} + p2[0..4] ∈ {0} + q2[0] ∈ {1} + [1] ∈ {2} + [2] ∈ {3} + [3] ∈ {4} + [4] ∈ {5} + p3[0..4] ∈ {0} + t ∈ {0} + u ∈ {0} + v ∈ {0} + w ∈ {0} + x ∈ {0} + y ∈ {0} + z ∈ {0} + t2 ∈ {0} + v2 ∈ {0} + PTR1 ∈ {0} + PTR2 ∈ {0} + PTR3 ∈ {0} + PTR4 ∈ {0} + PTR5 ∈ {0} + PTR6 ∈ {0} + c ∈ [--..--] + c1 ∈ [--..--] + c2 ∈ [--..--] + c3 ∈ [--..--] + c4 ∈ [--..--] + e ∈ {0} + g ∈ {0} + h ∈ {0} + i ∈ {0} + tz1 ∈ {0} + tz2 ∈ {0} + tz3 ∈ {0} + tx ∈ {0} + ty ∈ {0} + tz ∈ {0} + U ∈ {0} + char1 ∈ {0} + ll1 ∈ {0} +tests/value/alias.i:171:[value] warning: signed overflow. assert c+1 ≤ 2147483647; +[value] Recording results for main5 +[value] done for function main5 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main5: + u ∈ {0; 1} + v ∈ {0; 1} + z ∈ {0; 1; 2} + sss.a ∈ {4; 27} + .b ∈ {5; 28; 888; 999} + .c ∈ {6; 29} + pt ∈ {{ (struct T *)&t1.s2 ; (struct T *)&t2_0.s3 }} + t1.s1.a ∈ {1} + .s1.b ∈ {2} + .s1.c ∈ {3} + .s2.a ∈ {4} + .s2.b ∈ {5; 888} + .s2.c ∈ {6} + .s3.a ∈ {7} + .s3.b ∈ {8} + .s3.c ∈ {9} + .s4.a ∈ {10} + .s4.b ∈ {11} + .s4.c ∈ {12} + t2_0.s1.a ∈ {21} + .s1.b ∈ {22} + .s1.c ∈ {23} + .s2.a ∈ {24} + .s2.b ∈ {25} + .s2.c ∈ {26} + .s3.a ∈ {27} + .s3.b ∈ {28; 999} + .s3.c ∈ {29} + .s4.a ∈ {30} + .s4.b ∈ {31} + .s4.c ∈ {32} +[from] Computing for function main5 +[from] Done for function main5 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main5: + u FROM c + v FROM c + z FROM w; c +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main5: + u; v; z; sss; pt; t1; t2_0 +[inout] Inputs for function main5: + u; v; w; c diff --git a/tests/value/oracle_symblocs/alias.4.err.oracle b/tests/value/oracle_symblocs/alias.4.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/alias.4.res.oracle b/tests/value/oracle_symblocs/alias.4.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..bdbed53aaa95bcd15ef83385a06c8af33294b0aa --- /dev/null +++ b/tests/value/oracle_symblocs/alias.4.res.oracle @@ -0,0 +1,104 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/alias.i (no preprocessing) +[value] Analyzing a complete application starting at main6 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + NULL[rbits 0 to 2047] ∈ [--..--] + A ∈ {0} + B ∈ {0} + C ∈ {0} + D ∈ {0} + E ∈ {0} + F ∈ {0} + G ∈ {0} + p[0..4] ∈ {0} + q[0] ∈ {1} + [1] ∈ {2} + [2] ∈ {3} + [3] ∈ {4} + [4] ∈ {5} + p2[0..4] ∈ {0} + q2[0] ∈ {1} + [1] ∈ {2} + [2] ∈ {3} + [3] ∈ {4} + [4] ∈ {5} + p3[0..4] ∈ {0} + t ∈ {0} + u ∈ {0} + v ∈ {0} + w ∈ {0} + x ∈ {0} + y ∈ {0} + z ∈ {0} + t2 ∈ {0} + v2 ∈ {0} + PTR1 ∈ {0} + PTR2 ∈ {0} + PTR3 ∈ {0} + PTR4 ∈ {0} + PTR5 ∈ {0} + PTR6 ∈ {0} + c ∈ [--..--] + c1 ∈ [--..--] + c2 ∈ [--..--] + c3 ∈ [--..--] + c4 ∈ [--..--] + e ∈ {0} + g ∈ {0} + h ∈ {0} + i ∈ {0} + tz1 ∈ {0} + tz2 ∈ {0} + tz3 ∈ {0} + tx ∈ {0} + ty ∈ {0} + tz ∈ {0} + U ∈ {0} + char1 ∈ {0} + ll1 ∈ {0} +tests/value/alias.i:185:[value] entering loop for the first time +tests/value/alias.i:191:[value] warning: pointer comparison. assert \pointer_comparable((void *)PTR2, (void *)PTR1); +tests/value/alias.i:199:[value] warning: signed overflow. assert c+1 ≤ 2147483647; +[value] Recording results for main6 +[value] done for function main6 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main6: + p[0] ∈ {0} + [1] ∈ {0; 77} + [2..4] ∈ {0} + q[0] ∈ {1} + [1] ∈ {2} + [2] ∈ {3; 77} + [3] ∈ {4} + [4] ∈ {5} + u ∈ {0; 1} + v ∈ {0; 1} + w ∈ {0; 1} + x ∈ [0..99] + y ∈ {0; 3; 77} + z ∈ {-33} + PTR1 ∈ {{ &p[1] ; &q[2] }} + PTR2 ∈ [--..--] + i_0 ∈ {100} +[from] Computing for function main6 +[from] Done for function main6 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main6: + p[1] FROM c (and SELF) + q[2] FROM c (and SELF) + u FROM c + v FROM c + w FROM c + x FROM \nothing (and SELF) + y FROM p[1]; q[2]; c + z FROM NULL[0..3]; PTR2; c + PTR1 FROM c + PTR2 FROM NULL[0..3]; PTR2 +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main6: + p[1]; q[2]; u; v; w; x; y; z; PTR1; PTR2; i_0 +[inout] Inputs for function main6: + NULL[0..3]; p[1]; q[2]; u; v; PTR1; PTR2; c diff --git a/tests/value/oracle_symblocs/alias.5.err.oracle b/tests/value/oracle_symblocs/alias.5.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/alias.5.res.oracle b/tests/value/oracle_symblocs/alias.5.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..cbbbb5ded0602e362bd969049d1497818fc2ab0f --- /dev/null +++ b/tests/value/oracle_symblocs/alias.5.res.oracle @@ -0,0 +1,222 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/alias.i (no preprocessing) +[value] Analyzing a complete application starting at main11 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + NULL[rbits 0 to 2047] ∈ [--..--] + A ∈ {0} + B ∈ {0} + C ∈ {0} + D ∈ {0} + E ∈ {0} + F ∈ {0} + G ∈ {0} + p[0..4] ∈ {0} + q[0] ∈ {1} + [1] ∈ {2} + [2] ∈ {3} + [3] ∈ {4} + [4] ∈ {5} + p2[0..4] ∈ {0} + q2[0] ∈ {1} + [1] ∈ {2} + [2] ∈ {3} + [3] ∈ {4} + [4] ∈ {5} + p3[0..4] ∈ {0} + t ∈ {0} + u ∈ {0} + v ∈ {0} + w ∈ {0} + x ∈ {0} + y ∈ {0} + z ∈ {0} + t2 ∈ {0} + v2 ∈ {0} + PTR1 ∈ {0} + PTR2 ∈ {0} + PTR3 ∈ {0} + PTR4 ∈ {0} + PTR5 ∈ {0} + PTR6 ∈ {0} + c ∈ [--..--] + c1 ∈ [--..--] + c2 ∈ [--..--] + c3 ∈ [--..--] + c4 ∈ [--..--] + e ∈ {0} + g ∈ {0} + h ∈ {0} + i ∈ {0} + tz1 ∈ {0} + tz2 ∈ {0} + tz3 ∈ {0} + tx ∈ {0} + ty ∈ {0} + tz ∈ {0} + U ∈ {0} + char1 ∈ {0} + ll1 ∈ {0} +tests/value/alias.i:260:[value] entering loop for the first time +[value] computing for function f2 <- main11. + Called from tests/value/alias.i:268. +[value] DUMPING STATE of file tests/value/alias.i line 23 + NULL[rbits 0 to 2047] ∈ [--..--] + x_0 ∈ {{ (char *)&p2 }} + q_0 ∈ {{ &p2 + {1} }} + A ∈ {0} + B ∈ {0} + C ∈ {0} + D ∈ {33} + E ∈ {0} + F ∈ {0} + G ∈ {0} + p[0..4] ∈ {0} + q[0] ∈ {1} + [1] ∈ {2} + [2] ∈ {3} + [3] ∈ {4} + [4] ∈ {5} + p2[0][bits 0 to 15]# ∈ {1} repeated %8 + [0][bits 16 to 31] ∈ {0} + [1] ∈ {33} + [2..4] ∈ {0} + q2[0] ∈ {1} + [1] ∈ {2} + [2] ∈ {3} + [3] ∈ {4} + [4] ∈ {5} + p3[0..4] ∈ {0} + t ∈ {0} + u ∈ {0} + v ∈ {0} + w ∈ {0} + x ∈ {0} + y ∈ {0} + z ∈ {0} + t2 ∈ {0} + v2 ∈ {0} + PTR1 ∈ {0} + PTR2 ∈ {0} + PTR3 ∈ {{ &p2[1] }} + PTR4 ∈ {0} + PTR5 ∈ {0} + PTR6 ∈ {0} + c ∈ [--..--] + c1 ∈ [--..--] + c2 ∈ [--..--] + c3 ∈ [--..--] + c4 ∈ [--..--] + e ∈ {0} + g ∈ {0} + h ∈ {0} + i ∈ {0} + tz1 ∈ {0} + tz2 ∈ {0} + tz3 ∈ {0} + tx ∈ {0} + ty ∈ {0} + tz ∈ {0} + U ∈ {0} + char1 ∈ {0} + ll1 ∈ {0} + i_0 ∈ {0} + =END OF DUMP== +[value] Recording results for f2 +[value] Done for function f2 +tests/value/alias.i:271:[value] warning: signed overflow. assert c2+1 ≤ 2147483647; +tests/value/alias.i:273:[value] warning: signed overflow. assert c2+2 ≤ 2147483647; +tests/value/alias.i:279:[value] entering loop for the first time +tests/value/alias.i:285:[value] warning: pointer comparison. assert \pointer_comparable((void *)PTR2, (void *)PTR1); +tests/value/alias.i:292:[value] entering loop for the first time +tests/value/alias.i:292:[value] warning: signed overflow. assert c1+1 ≤ 2147483647; +[value] Recording results for main11 +[value] done for function main11 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f2: + q_0 ∈ {{ &p2 + {1} }} + p2[0][bits 0 to 15]# ∈ {1} repeated %8 + [0][bits 16 to 31] ∈ {0} + [1] ∈ {33} + [2..4] ∈ {0} +[value:final-states] Values at end of function main11: + A ∈ {1; 33} + B ∈ {-32; 0; 32} + D ∈ {33} + p[0] ∈ {0} + [1] ∈ {0; 77} + [2..4] ∈ {0} + q[0] ∈ {1} + [1] ∈ {2} + [2] ∈ {3; 77} + [3] ∈ {4} + [4] ∈ {5} + p2[0][bits 0 to 15]# ∈ {1} repeated %8 + [0][bits 16 to 31] ∈ {0} + [1] ∈ {33} + [2..4] ∈ {0} + q2[0] ∈ {1; 33} + [1] ∈ {33} + [2] ∈ {3} + [3] ∈ {4} + [4] ∈ {5} + t ∈ {0; 1} + x ∈ [0..99] + y ∈ {0; 3; 77} + z ∈ {-33} + PTR1 ∈ {{ &p[1] ; &q[2] }} + PTR2 ∈ [--..--] + PTR3 ∈ {{ &p2[1] }} + PTR4 ∈ {{ &q2[1] }} + c1 ∈ [--..--] + U{.ll[bits 0 to 31]; .i; .c[bits 0 to 31]} ∈ {2; 3} + {.ll[bits 32 to 63]#; .i[bits 32 to 63]#; .c[bits 32 to 63]#} ∈ + {16; 17}%64, bits 32 to 63 + ll1 ∈ {15; 16} + i_0 ∈ {100} +[from] Computing for function f2 +[from] Computing for function Frama_C_dump_each <-f2 +[from] Done for function Frama_C_dump_each +[from] Done for function f2 +[from] Computing for function main11 +[from] Done for function main11 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f2: + p2[0][bits 0 to 7] FROM x_0; p2[0][bits 0 to 7] + [0][bits 8 to 15] FROM x_0; p2[0][bits 8 to 15] +[from] Function main11: + A FROM q2[0]; c1 + B FROM q2[0]; c1 + D FROM c + p[1] FROM c (and SELF) + q[2] FROM c (and SELF) + p2[0][bits 0 to 7] FROM p2[0][bits 0 to 7] + [0][bits 8 to 15] FROM p2[0][bits 8 to 15] + [1] FROM \nothing + [2] FROM p2[2]; c (and SELF) + q2[0] FROM c1 (and SELF) + [1] FROM \nothing + t FROM c2 + x FROM \nothing (and SELF) + y FROM p[1]; q[2]; c + z FROM NULL[0..3]; PTR2; c + PTR1 FROM c + PTR2 FROM NULL[0..3]; PTR2 + PTR3 FROM c + PTR4 FROM c1 + c1 FROM c1 + U FROM c2 + ll1 FROM c2 +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f2: + q_0; p2[0][bits 0 to 15] +[inout] Inputs for function f2: + p2[0][bits 0 to 15] +[inout] Out (internal) for function main11: + A; B; D; p[1]; q[2]; p2{[0][bits 0 to 15]; [1..2]}; q2[0..1]; t; x; + y; z; PTR1; PTR2; PTR3; PTR4; c1; U; ll1; i_0; tm; tmp +[inout] Inputs for function main11: + NULL[0..3]; A; p[1]; q[2]; p2{[0][bits 0 to 15]; [1..2]}; q2[0]; t; + PTR1; PTR2; PTR3; PTR4; c; c1; c2; ll1 diff --git a/tests/value/oracle_symblocs/alias.6.err.oracle b/tests/value/oracle_symblocs/alias.6.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/alias.6.res.oracle b/tests/value/oracle_symblocs/alias.6.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..71863253129d9f45c6e6426b015f361023f3b564 --- /dev/null +++ b/tests/value/oracle_symblocs/alias.6.res.oracle @@ -0,0 +1,137 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/alias.i (no preprocessing) +[value] Analyzing a complete application starting at main8 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + NULL[rbits 0 to 2047] ∈ [--..--] + A ∈ {0} + B ∈ {0} + C ∈ {0} + D ∈ {0} + E ∈ {0} + F ∈ {0} + G ∈ {0} + p[0..4] ∈ {0} + q[0] ∈ {1} + [1] ∈ {2} + [2] ∈ {3} + [3] ∈ {4} + [4] ∈ {5} + p2[0..4] ∈ {0} + q2[0] ∈ {1} + [1] ∈ {2} + [2] ∈ {3} + [3] ∈ {4} + [4] ∈ {5} + p3[0..4] ∈ {0} + t ∈ {0} + u ∈ {0} + v ∈ {0} + w ∈ {0} + x ∈ {0} + y ∈ {0} + z ∈ {0} + t2 ∈ {0} + v2 ∈ {0} + PTR1 ∈ {0} + PTR2 ∈ {0} + PTR3 ∈ {0} + PTR4 ∈ {0} + PTR5 ∈ {0} + PTR6 ∈ {0} + c ∈ [--..--] + c1 ∈ [--..--] + c2 ∈ [--..--] + c3 ∈ [--..--] + c4 ∈ [--..--] + e ∈ {0} + g ∈ {0} + h ∈ {0} + i ∈ {0} + tz1 ∈ {0} + tz2 ∈ {0} + tz3 ∈ {0} + tx ∈ {0} + ty ∈ {0} + tz ∈ {0} + U ∈ {0} + char1 ∈ {0} + ll1 ∈ {0} +[value] Recording results for main8 +[value] done for function main8 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main8: + A ∈ {3; 4} + B ∈ {4; 5} + C ∈ {2; 3; 33; 44} + D ∈ {0; 4; 5; 33; 44} + p[0..1] ∈ {0} + [2] ∈ {0; 33} + [3] ∈ {0; 44} + [4] ∈ {0} + q[0] ∈ {1} + [1] ∈ {2} + [2] ∈ {3} + [3] ∈ {4; 33} + [4] ∈ {5; 44} + q2[0] ∈ {1} + [1] ∈ {2; 33} + [2] ∈ {3; 44} + [3] ∈ {4} + [4] ∈ {5} + t ∈ {4; 5; 6} + u ∈ {0; 5} + v ∈ {0; 5; 44} + w ∈ {0; 4} + x ∈ {0; 4; 33} + y ∈ {0; 1} + z ∈ {0; 4; 33} + PTR1 ∈ {{ &p[2] ; &q[3] }} + PTR2 ∈ {{ &p[3] ; &q[4] }} + PTR3 ∈ {{ &p[2] ; &q[3] }} + PTR4 ∈ {{ &q2{[1], [2]} }} + PTR5 ∈ {{ &p{[2], [3]} ; &q{[3], [4]} }} + tz1 ∈ {0; 1} + tz2 ∈ {0; 1} + tz3 ∈ {0; 1} + tx ∈ {2; 3} + ty ∈ {3; 4} + tz ∈ {5; 6} +[from] Computing for function main8 +[from] Done for function main8 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main8: + A FROM c1 + B FROM c1 + C FROM q2[1..2]; c3 + D FROM p[2..3]; q[3..4]; c2; c3 + p[2..3] FROM c2 (and SELF) + q[3..4] FROM c2 (and SELF) + q2[1..2] FROM c3 (and SELF) + t FROM c1 + u FROM p[3]; q[4]; c2 + v FROM p[3]; q[4]; c2 + w FROM p[2]; q[3]; c2 + x FROM p[2]; q[3]; c2 + y FROM c1 + z FROM p[2]; q[3]; c2 + PTR1 FROM c2 + PTR2 FROM c2 + PTR3 FROM c2 + PTR4 FROM c3 + PTR5 FROM c2; c3 + tz1 FROM c + tz2 FROM c + tz3 FROM c + tx FROM c + ty FROM c + tz FROM c +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main8: + A; B; C; D; p[2..3]; q[3..4]; q2[1..2]; t; u; v; w; x; y; z; PTR1; + PTR2; PTR3; PTR4; PTR5; tz1; tz2; tz3; tx; ty; tz +[inout] Inputs for function main8: + A; B; p[2..3]; q[3..4]; q2[1..2]; PTR1; PTR2; PTR3; PTR4; PTR5; c; + c1; c2; c3; tx; ty; tz diff --git a/tests/value/oracle_symblocs/align.err.oracle b/tests/value/oracle_symblocs/align.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/align.res.oracle b/tests/value/oracle_symblocs/align.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..da9f94f60ace3c684ce7c37c049f4e9e4bf79190 --- /dev/null +++ b/tests/value/oracle_symblocs/align.res.oracle @@ -0,0 +1,30 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/align.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + c[0..4][0..9] ∈ {0} +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + c[0][0] ∈ {120} + {[0][1..9]; [1][0..9]; [2][0][bits 0 to 7]} ∈ {0} + [2][0][bits 8 to 15] ∈ {121} + {[2]{[0][bits 16 to 31]; [1..9]}; [3..4][0..9]} ∈ {0} + d ∈ {{ (char *)&c }} + l[bits 0 to 7] ∈ {2} + [bits 8 to 31] ∈ {0} + pl ∈ {{ &l }} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + c{[0][0]; [2][0][bits 8 to 15]} FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + c{[0][0]; [2][0][bits 8 to 15]}; d; l; pl +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/align_char_array.err.oracle b/tests/value/oracle_symblocs/align_char_array.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/align_char_array.res.oracle b/tests/value/oracle_symblocs/align_char_array.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..c8155f10f86d9b7e11fafc1df474dbd0d81159f4 --- /dev/null +++ b/tests/value/oracle_symblocs/align_char_array.res.oracle @@ -0,0 +1,39 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/align_char_array.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + S ∈ {0} + t[0][0..1] ∈ {0} + [0][2..6] ∈ {1} + {[0][7..9]; [1..9][0..9]} ∈ {0} + d1 ∈ {0} + s1 ∈ {0} + d2 ∈ {0} + s2 ∈ {0} + overlapread1 ∈ {0} + overlapread2 ∈ {0} + overlapread3 ∈ {0} + overlapread4 ∈ {0} +tests/value/align_char_array.c:25:[value] warning: signed overflow. assert -2147483648 ≤ (int)((char (*)[10])t)+3; +tests/value/align_char_array.c:25:[value] warning: signed overflow. assert (int)((char (*)[10])t)+3 ≤ 2147483647; +tests/value/align_char_array.c:26:[value] warning: signed overflow. assert -2147483648 ≤ (int)((char (*)[10])t)+3; +tests/value/align_char_array.c:26:[value] warning: signed overflow. assert (int)((char (*)[10])t)+3 ≤ 2147483647; +tests/value/align_char_array.c:27:[value] warning: signed overflow. assert -2147483648 ≤ (int)((char (*)[10])t)+2; +tests/value/align_char_array.c:27:[value] warning: signed overflow. assert (int)((char (*)[10])t)+2 ≤ 2147483647; +tests/value/align_char_array.c:28:[value] warning: signed overflow. assert -2147483648 ≤ (int)((char (*)[10])t)+2; +tests/value/align_char_array.c:28:[value] warning: signed overflow. assert (int)((char (*)[10])t)+2 ≤ 2147483647; +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + d1 ∈ {1} + s1 ∈ {3} + d2 ∈ {22} + s2 ∈ {100} + overlapread1# ∈ {1} repeated %8 + overlapread2# ∈ {1} repeated %8 + overlapread3 ∈ {16843010} + overlapread4 ∈ {16843010} + __retres ∈ {0} diff --git a/tests/value/oracle_symblocs/annot.err.oracle b/tests/value/oracle_symblocs/annot.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/annot.res.oracle b/tests/value/oracle_symblocs/annot.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..c4d6072fc4f7c9c09e16930dc82322d4883ed679 --- /dev/null +++ b/tests/value/oracle_symblocs/annot.res.oracle @@ -0,0 +1,44 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/annot.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + A ∈ {0} + B ∈ {0} + C ∈ {0} + u ∈ {0} + v ∈ {0} + w ∈ {0} +tests/value/annot.i:5:[value] warning: function main: precondition got status unknown. +tests/value/annot.i:15:[value] assertion got status valid. +[value] Called Frama_C_show_each_diff({1}) +tests/value/annot.i:21:[value] assertion got status valid. +tests/value/annot.i:28:[value] warning: assertion got status unknown. +tests/value/annot.i:33:[value] warning: assertion got status unknown. +[value] Called Frama_C_show_each_elseif_A_B({0}, {2}) +tests/value/annot.i:38:[value] warning: assertion got status unknown. +[value] Called Frama_C_show_each_else_A_B({0; 1}, {0; 2}) +tests/value/annot.i:42:[value] warning: assertion got status unknown. +[value] Called Frama_C_show_each_mn([0..9], [0..9]) +tests/value/annot.i:46:[value] assertion got status valid. +tests/value/annot.i:47:[value] assertion got status valid. +tests/value/annot.i:51:[value] warning: assertion got status unknown. +tests/value/annot.i:53:[value] warning: assertion got status invalid (stopping propagation). +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + NON TERMINATING FUNCTION +[from] Computing for function main +[from] Non-terminating function main (no dependencies) +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NON TERMINATING - NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + A; B; x; y; z; a; b; tt[0] +[inout] Inputs for function main: + A; B; u diff --git a/tests/value/oracle_symblocs/annot_valid.err.oracle b/tests/value/oracle_symblocs/annot_valid.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/annot_valid.res.oracle b/tests/value/oracle_symblocs/annot_valid.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..f28d0a1d4803772e9b67eec93c344ba4a23ecf93 --- /dev/null +++ b/tests/value/oracle_symblocs/annot_valid.res.oracle @@ -0,0 +1,45 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/annot_valid.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + G ∈ {0} +tests/value/annot_valid.i:8:[value] assertion got status valid. +tests/value/annot_valid.i:11:[value] warning: assertion got status invalid (stopping propagation). +tests/value/annot_valid.i:14:[value] assertion got status valid. +tests/value/annot_valid.i:17:[value] assertion got status valid. +tests/value/annot_valid.i:20:[value] assertion got status valid. +tests/value/annot_valid.i:23:[value] warning: assertion got status invalid (stopping propagation). +tests/value/annot_valid.i:26:[value] warning: assertion got status invalid (stopping propagation). +tests/value/annot_valid.i:29:[value] warning: assertion got status unknown. +tests/value/annot_valid.i:32:[value] warning: assertion got status invalid (stopping propagation). +tests/value/annot_valid.i:35:[value] assertion got status valid. +tests/value/annot_valid.i:38:[value] warning: assertion got status unknown. +tests/value/annot_valid.i:41:[value] assertion got status valid. +tests/value/annot_valid.i:44:[value] warning: assertion got status invalid (stopping propagation). +tests/value/annot_valid.i:47:[value] assertion got status valid. +tests/value/annot_valid.i:50:[value] warning: assertion got status invalid (stopping propagation). +tests/value/annot_valid.i:53:[value] assertion got status valid. +tests/value/annot_valid.i:56:[value] assertion got status valid. +tests/value/annot_valid.i:57:[value] cannot evaluate ACSL term, \at() on a C label is unsupported +tests/value/annot_valid.i:57:[value] warning: assertion got status unknown. +tests/value/annot_valid.i:62:[value] warning: assertion got status invalid (stopping propagation). +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + p ∈ {{ &G }} + c ∈ {{ (char *)&G }} + __retres ∈ {0} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + p; c; __retres +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/anonymous_field.err.oracle b/tests/value/oracle_symblocs/anonymous_field.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/anonymous_field.res.oracle b/tests/value/oracle_symblocs/anonymous_field.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..38f63e191266d672f776709a3bfb39d11f3abae0 --- /dev/null +++ b/tests/value/oracle_symblocs/anonymous_field.res.oracle @@ -0,0 +1,43 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/anonymous_field.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + Sa ∈ {0} +[value] computing for function set_anonymous_struct <- main. + Called from tests/value/anonymous_field.i:19. +tests/value/anonymous_field.i:10:[value] function set_anonymous_struct: postcondition got status valid. +[value] Recording results for set_anonymous_struct +[value] Done for function set_anonymous_struct +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function set_anonymous_struct: + Sa{.a; .__anonCompField1.gcc_a} ∈ {42} + {.__anonCompField1.gcc_b; .b} ∈ {3} +[value:final-states] Values at end of function main: + Sa{.a; .__anonCompField1.gcc_a} ∈ {42} + {.__anonCompField1.gcc_b; .b} ∈ {3} + __retres ∈ {0} +[from] Computing for function set_anonymous_struct +[from] Done for function set_anonymous_struct +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function set_anonymous_struct: + Sa.__anonCompField1.gcc_a FROM Sa.a + .__anonCompField1.gcc_b FROM Sa.b +[from] Function main: + Sa FROM \nothing + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function set_anonymous_struct: + Sa.__anonCompField1 +[inout] Inputs for function set_anonymous_struct: + Sa{.a; .b} +[inout] Out (internal) for function main: + Sa; __retres +[inout] Inputs for function main: + Sa{.a; .b} diff --git a/tests/value/oracle_symblocs/any_int.err.oracle b/tests/value/oracle_symblocs/any_int.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/any_int.res.oracle b/tests/value/oracle_symblocs/any_int.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..260f3ef8f796f5f1cea4a51d984a86833eb397f0 --- /dev/null +++ b/tests/value/oracle_symblocs/any_int.res.oracle @@ -0,0 +1,30 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/any_int.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +tests/value/any_int.c:9:[value] entering loop for the first time +tests/value/any_int.c:9:[value] warning: signed overflow. assert y+1 ≤ 2147483647; +tests/value/any_int.c:9:[value] warning: signed overflow. assert y+1 ≤ 2147483647; +tests/value/any_int.c:9:[value] warning: signed overflow. assert -2147483648 ≤ y-1; +tests/value/any_int.c:9:[value] warning: signed overflow. assert x+1 ≤ 2147483647; +tests/value/any_int.c:9:[value] warning: signed overflow. assert -2147483648 ≤ x-1; +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + y ∈ [--..--] + x ∈ [--..--] +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + y; x +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/arch.err.oracle b/tests/value/oracle_symblocs/arch.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/arch.res.oracle b/tests/value/oracle_symblocs/arch.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..7a5e8e9e57443194c756b39e7587d8b9f7a73a17 --- /dev/null +++ b/tests/value/oracle_symblocs/arch.res.oracle @@ -0,0 +1,33 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/arch.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + a ∈ {0} + b ∈ {0} + c ∈ {0} + l ∈ {0} + t[0..9] ∈ {0} +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + a ∈ {4} + b ∈ {4} + c ∈ {4} + l ∈ {{ (unsigned long)&t }} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + a FROM \nothing + b FROM \nothing + c FROM \nothing + l FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + a; b; c; l +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/arg_array.err.oracle b/tests/value/oracle_symblocs/arg_array.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/arg_array.res.oracle b/tests/value/oracle_symblocs/arg_array.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..af6133c8da0b69f7a39cae4566cb8d2eca324ce7 --- /dev/null +++ b/tests/value/oracle_symblocs/arg_array.res.oracle @@ -0,0 +1,31 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/arg_array.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +tests/value/arg_array.i:2:[value] warning: out of bounds write. assert \valid(T); +tests/value/arg_array.i:4:[value] warning: out of bounds write. assert \valid(ptr+1); +tests/value/arg_array.i:5:[value] warning: out of bounds write. assert \valid(ptr+2); +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + ptr ∈ {{ &S_T[0] }} + T ∈ {{ &S_T[0] }} + S_T[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {2} + [3] ∈ [--..--] +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + S_T[0..2] FROM T +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + ptr; T; S_T[0..2] +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/arith_pointer.err.oracle b/tests/value/oracle_symblocs/arith_pointer.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/arith_pointer.res.oracle b/tests/value/oracle_symblocs/arith_pointer.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..d3056a57590baaa4da299d7cf30eec9f4f112d4c --- /dev/null +++ b/tests/value/oracle_symblocs/arith_pointer.res.oracle @@ -0,0 +1,195 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/arith_pointer.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + a ∈ {0} + t[0..24] ∈ {0} + vol ∈ [--..--] +[value] computing for function main1 <- main. + Called from tests/value/arith_pointer.c:69. +[value] Recording results for main1 +[value] Done for function main1 +[value] computing for function main2 <- main. + Called from tests/value/arith_pointer.c:70. +tests/value/arith_pointer.c:30:[value] warning: pointer subtraction. assert \base_addr(p1) ≡ \base_addr(p2); +[value] Called Frama_C_show_each({-1}) +[value] Called Frama_C_show_each({0}) +tests/value/arith_pointer.c:49:[value] warning: pointer subtraction. assert \base_addr(p2) ≡ \base_addr(p1); +[value] Called Frama_C_show_each({6; 11}) +tests/value/arith_pointer.c:51:[value] warning: pointer subtraction. assert \base_addr(p2) ≡ \base_addr(p2); +[value] Called Frama_C_show_each({0}) +tests/value/arith_pointer.c:54:[value] Assigning imprecise value to p1. + The imprecision originates from Arithmetic {tests/value/arith_pointer.c:54} +tests/value/arith_pointer.c:56:[value] warning: pointer subtraction. assert \base_addr(p2) ≡ \base_addr(p1); +tests/value/arith_pointer.c:56:[value] warning: signed overflow. assert -2147483648 ≤ p2-p1; +tests/value/arith_pointer.c:56:[value] warning: signed overflow. assert p2-p1 ≤ 2147483647; +[value] Called Frama_C_show_each([-2147483648..2147483647]) +tests/value/arith_pointer.c:60:[value] warning: assertion got status unknown. +[value] Called Frama_C_show_each([-3..5]) +tests/value/arith_pointer.c:65:[value] warning: assertion got status unknown. +[value] Recording results for main2 +[value] Done for function main2 +[value] Recording results for main +[value] done for function main +tests/value/arith_pointer.c:30:[value] assertion 'Value,differing_blocks' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main1: + t[0..1] ∈ {-3} + [2..5] ∈ {-2} + [6..9] ∈ {-1} + [10..13] ∈ {0} + [14..17] ∈ {1} + [18..19] ∈ {2} + [20..24] ∈ {0} + i ∈ {10} + j ∈ {-10} +[value:final-states] Values at end of function main2: + d ∈ {1} + p1 ∈ {{ &x + {0; 4; 8; 12; 16} }} + p2 ∈ {{ &x + {4; 8; 12; 16; 20} }} + i ∈ {0; 1; 2; 3; 4} +[value:final-states] Values at end of function main: + t[0..1] ∈ {-3} + [2..5] ∈ {-2} + [6..9] ∈ {-1} + [10..13] ∈ {0} + [14..17] ∈ {1} + [18..19] ∈ {2} + [20..24] ∈ {0} +[from] Computing for function main1 +[from] Done for function main1 +[from] Computing for function main2 +[from] Done for function main2 +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main1: + t[0..19] FROM \nothing +[from] Function main2: + NO EFFECTS +[from] Function main: + t[0..19] FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main1: + t[0..19]; i; j +[inout] Inputs for function main1: + \nothing +[inout] Out (internal) for function main2: + d; p1; p2; i +[inout] Inputs for function main2: + vol +[inout] Out (internal) for function main: + t[0..19] +[inout] Inputs for function main: + vol +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + a ∈ {0} + t[0..24] ∈ {0} + vol ∈ [--..--] +[value] computing for function main1 <- main. + Called from tests/value/arith_pointer.c:69. +[value] Recording results for main1 +[value] Done for function main1 +[value] computing for function main2 <- main. + Called from tests/value/arith_pointer.c:70. +tests/value/arith_pointer.c:30:[value] warning: signed overflow. assert -2147483648 ≤ p1-p2; +tests/value/arith_pointer.c:30:[value] warning: signed overflow. assert p1-p2 ≤ 2147483647; +tests/value/arith_pointer.c:30:[value] Assigning imprecise value to d. + The imprecision originates from Arithmetic {tests/value/arith_pointer.c:30} +tests/value/arith_pointer.c:31:[value] Reading left-value d. + It contains a garbled mix of {x; y} because of Arithmetic + {tests/value/arith_pointer.c:30}. +[value] Called Frama_C_show_each({{ garbled mix of &{x; y} + (origin: Arithmetic + {tests/value/arith_pointer.c:30}) }}) +[value] Called Frama_C_show_each({-1}) +[value] Called Frama_C_show_each({0}) +tests/value/arith_pointer.c:49:[value] warning: signed overflow. assert -2147483648 ≤ p2-p1; +tests/value/arith_pointer.c:49:[value] warning: signed overflow. assert p2-p1 ≤ 2147483647; +tests/value/arith_pointer.c:49:[value] Assigning imprecise value to d. + The imprecision originates from Arithmetic {tests/value/arith_pointer.c:49} +tests/value/arith_pointer.c:50:[value] Reading left-value d. + It contains a garbled mix of {x; y} because of Arithmetic + {tests/value/arith_pointer.c:49}. +[value] Called Frama_C_show_each({{ garbled mix of &{x; y} + (origin: Arithmetic + {tests/value/arith_pointer.c:49}) }}) +tests/value/arith_pointer.c:51:[value] warning: signed overflow. assert -2147483648 ≤ p2-p2; +tests/value/arith_pointer.c:51:[value] warning: signed overflow. assert p2-p2 ≤ 2147483647; +tests/value/arith_pointer.c:51:[value] Assigning imprecise value to d. + The imprecision originates from Arithmetic {tests/value/arith_pointer.c:51} +tests/value/arith_pointer.c:52:[value] Reading left-value d. + It contains a garbled mix of {x; y} because of Arithmetic + {tests/value/arith_pointer.c:51}. +[value] Called Frama_C_show_each({{ garbled mix of &{x; y} + (origin: Arithmetic + {tests/value/arith_pointer.c:51}) }}) +tests/value/arith_pointer.c:56:[value] warning: signed overflow. assert -2147483648 ≤ p2-p1; +tests/value/arith_pointer.c:56:[value] warning: signed overflow. assert p2-p1 ≤ 2147483647; +tests/value/arith_pointer.c:56:[value] Assigning imprecise value to d. + The imprecision originates from Arithmetic +tests/value/arith_pointer.c:57:[value] Reading left-value d. + It contains a garbled mix of {x} because of Arithmetic. +[value] Called Frama_C_show_each({{ garbled mix of &{x} (origin: Arithmetic) }}) +[value] Called Frama_C_show_each([-3..5]) +[value] Recording results for main2 +[value] Done for function main2 +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main1: + t[0..1] ∈ {-3} + [2..5] ∈ {-2} + [6..9] ∈ {-1} + [10..13] ∈ {0} + [14..17] ∈ {1} + [18..19] ∈ {2} + [20..24] ∈ {0} + i ∈ {10} + j ∈ {-10} +[value:final-states] Values at end of function main2: + d ∈ {1} + p1 ∈ {{ &x + {0; 4; 8; 12; 16} }} + p2 ∈ {{ &x + {4; 8; 12; 16; 20} }} + i ∈ {0; 1; 2; 3; 4} +[value:final-states] Values at end of function main: + t[0..1] ∈ {-3} + [2..5] ∈ {-2} + [6..9] ∈ {-1} + [10..13] ∈ {0} + [14..17] ∈ {1} + [18..19] ∈ {2} + [20..24] ∈ {0} +[from] Computing for function main1 +[from] Done for function main1 +[from] Computing for function main2 +[from] Done for function main2 +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main1: + t[0..19] FROM \nothing +[from] Function main2: + NO EFFECTS +[from] Function main: + t[0..19] FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main1: + t[0..19]; i; j +[inout] Inputs for function main1: + \nothing +[inout] Out (internal) for function main2: + d; p1; p2; i +[inout] Inputs for function main2: + vol +[inout] Out (internal) for function main: + t[0..19] +[inout] Inputs for function main: + vol diff --git a/tests/value/oracle_symblocs/array_access.err.oracle b/tests/value/oracle_symblocs/array_access.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/array_access.res.oracle b/tests/value/oracle_symblocs/array_access.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..c00a277e0d435bef3a24642a7a56340497d8ebf0 --- /dev/null +++ b/tests/value/oracle_symblocs/array_access.res.oracle @@ -0,0 +1,181 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/array_access.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + t1[0] ∈ {1} + [1] ∈ {2} + [2] ∈ {3} + [3] ∈ {4} + [4] ∈ {5} + [5] ∈ {6} + [6] ∈ {7} + [7] ∈ {8} + [8] ∈ {9} + t2[0] ∈ {11} + [1] ∈ {12} + [2] ∈ {13} + [3] ∈ {14} + [4] ∈ {15} + [5] ∈ {16} + [6] ∈ {17} + [7] ∈ {18} + [8] ∈ {19} + ch[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {0} + [3] ∈ {1} + [4] ∈ {0} + [5] ∈ {1} + [6] ∈ {0} + [7] ∈ {1} + [8] ∈ {0} + [9] ∈ {1} + [10] ∈ {0} + [11] ∈ {1} + [12] ∈ {0} + [13] ∈ {1} + [14] ∈ {0} + [15..17] ∈ {1} + [18] ∈ {0} + [19] ∈ {1} + [20] ∈ {0} + [21] ∈ {1} + [22] ∈ {0} + [23] ∈ {1} + [24] ∈ {0} + [25] ∈ {1} + [26] ∈ {0} + [27] ∈ {1} + [28] ∈ {0} + [29] ∈ {1} + [30] ∈ {0} + [31] ∈ {1} + [32] ∈ {0} + [33] ∈ {1} + [34] ∈ {0} + [35] ∈ {1} + [36] ∈ {0} + [37] ∈ {1} + [38] ∈ {0} + [39] ∈ {1} + [40] ∈ {0} + [41] ∈ {1} + [42] ∈ {0} + [43] ∈ {1} + [44] ∈ {0} + [45] ∈ {1} + [46] ∈ {0} + [47] ∈ {1} + [48] ∈ {0} + [49] ∈ {1} + [50] ∈ {0} + [51] ∈ {1} + [52] ∈ {0} + [53] ∈ {1} + [54] ∈ {0} + [55] ∈ {1} + [56] ∈ {0} + [57] ∈ {1} + [58] ∈ {0} + [59] ∈ {1} + [60] ∈ {0} + [61] ∈ {1} + [62] ∈ {0} + [63] ∈ {1} + [64] ∈ {0} + [65] ∈ {1} + [66] ∈ {0} + [67] ∈ {1} + [68] ∈ {0} + [69] ∈ {1} + [70] ∈ {0} + [71] ∈ {1} + [72] ∈ {0} + [73] ∈ {1} + [74] ∈ {0} + [75] ∈ {1} + [76] ∈ {0} + [77] ∈ {1} + [78] ∈ {0} + [79] ∈ {1} + [80] ∈ {0} + [81] ∈ {1} + [82] ∈ {0} + [83] ∈ {1} + [84] ∈ {0} + [85] ∈ {1} + [86] ∈ {0} + [87] ∈ {1} + [88] ∈ {0} + [89] ∈ {1} + [90] ∈ {0} + [91] ∈ {1} + [92] ∈ {0} + [93] ∈ {1} + [94] ∈ {0} + [95] ∈ {1} + [96] ∈ {0} + [97] ∈ {1} + [98] ∈ {0} + [99] ∈ {1} + [100] ∈ {0} + [101] ∈ {1} + [102] ∈ {0} + [103] ∈ {1} + [104] ∈ {2} + [105] ∈ {3} + [106] ∈ {4} + R ∈ {0} +[value] Call to builtin bzero(({{ (unsigned char *)< }},{40})) +[value] computing for function any_int <- main. + Called from tests/value/array_access.c:16. +[value] using specification for function any_int +[value] Done for function any_int +[value] computing for function any_int <- main. + Called from tests/value/array_access.c:16. +[value] Done for function any_int +[value] Called Frama_C_show_each_I([0..8]) +tests/value/array_access.c:19:[value] warning: accessing out of bounds index. assert 0 ≤ (int)((int)(-i)-1); +tests/value/array_access.c:19:[value] warning: accessing out of bounds index. assert (int)((int)(-i)-1) < 10; +[value] computing for function any_int <- main. + Called from tests/value/array_access.c:21. +[value] Done for function any_int +tests/value/array_access.c:21:[value] warning: out of bounds read. + assert \valid_read((int *)((char *)ch)+tmp_0); + (tmp_0 from any_int()) +[value] Recording results for main +[value] done for function main +tests/value/array_access.c:19:[value] assertion 'Value,index_bound' got final status valid. +tests/value/array_access.c:19:[value] assertion 'Value,index_bound' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + R[bits 0 to 7] ∈ {0; 1} + [bits 8 to 15] ∈ {1} + [bits 16 to 23] ∈ {0} + [bits 24 to 31] ∈ {1} + i ∈ [--..--] + j ∈ {10} + k ∈ {88} + c ∈ [--..--] + p ∈ UNINITIALIZED + LT[0] ∈ {1} + [1..9] ∈ {0} +[from] Computing for function main +[from] Computing for function Frama_C_bzero <-main +[from] Done for function Frama_C_bzero +[from] Computing for function any_int <-main +[from] Done for function any_int +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function any_int: + \result FROM \nothing +[from] Function main: + R FROM ch[0..103] +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + R; i; j; k; c; p; LT[0..9]; tmp; tmp_0 +[inout] Inputs for function main: + t1[0..8]; t2[0..8]; ch[0..103] diff --git a/tests/value/oracle_symblocs/array_array.0.err.oracle b/tests/value/oracle_symblocs/array_array.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/array_array.0.res.oracle b/tests/value/oracle_symblocs/array_array.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..b62515fa71bd9db903bec7ab4ab652ffaeb600c0 --- /dev/null +++ b/tests/value/oracle_symblocs/array_array.0.res.oracle @@ -0,0 +1,48 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/array_array.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + StaticAllocHEAP[0..3] ∈ {2} + [4..9999] ∈ {0} + next_free ∈ {0} +[value] computing for function LIB_MEM_StaticAlloc <- main. + Called from tests/value/array_array.c:24. +[value] Called Frama_C_show_each_ALLOCATION_WITH_STATIC_ALLOC({24}) +[value] Recording results for LIB_MEM_StaticAlloc +[value] Done for function LIB_MEM_StaticAlloc +tests/value/array_array.c:26:[value] entering loop for the first time +[value] Called Frama_C_show_each_I({29}) +tests/value/array_array.c:28:[value] warning: accessing out of bounds index. assert i < 3; +tests/value/array_array.c:28:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +[value] Recording results for main +[value] done for function main +tests/value/array_array.c:28:[value] assertion 'Value,index_bound' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function LIB_MEM_StaticAlloc: + new ∈ {{ (void *)&StaticAllocHEAP }} + next_free ∈ {24} +[value:final-states] Values at end of function main: + NON TERMINATING FUNCTION +[from] Computing for function LIB_MEM_StaticAlloc +[from] Done for function LIB_MEM_StaticAlloc +[from] Computing for function main +[from] Non-terminating function main (no dependencies) +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function LIB_MEM_StaticAlloc: + next_free FROM size; next_free + \result FROM next_free +[from] Function main: + NON TERMINATING - NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function LIB_MEM_StaticAlloc: + new; tmp; next_free +[inout] Inputs for function LIB_MEM_StaticAlloc: + next_free +[inout] Out (internal) for function main: + v; i; next_free +[inout] Inputs for function main: + next_free diff --git a/tests/value/oracle_symblocs/array_array.1.err.oracle b/tests/value/oracle_symblocs/array_array.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/array_array.1.res.oracle b/tests/value/oracle_symblocs/array_array.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..9e9fa7798c32dae583ec4b68177c8a8863f1fc2c --- /dev/null +++ b/tests/value/oracle_symblocs/array_array.1.res.oracle @@ -0,0 +1,49 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/array_array.c (with preprocessing) +[value] Analyzing a complete application starting at main2 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + StaticAllocHEAP[0..3] ∈ {2} + [4..9999] ∈ {0} + next_free ∈ {0} +[value] computing for function LIB_MEM_StaticAlloc <- main2. + Called from tests/value/array_array.c:41. +[value] Called Frama_C_show_each_ALLOCATION_WITH_STATIC_ALLOC({24}) +[value] Recording results for LIB_MEM_StaticAlloc +[value] Done for function LIB_MEM_StaticAlloc +tests/value/array_array.c:45:[value] entering loop for the first time +[value] Called Frama_C_show_each_TMP({0}) +[value] Called Frama_C_show_each_I({29}) +tests/value/array_array.c:48:[value] warning: accessing out of bounds index. assert i < 3; +tests/value/array_array.c:48:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +[value] Recording results for main2 +[value] done for function main2 +tests/value/array_array.c:48:[value] assertion 'Value,index_bound' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function LIB_MEM_StaticAlloc: + new ∈ {{ (void *)&StaticAllocHEAP }} + next_free ∈ {24} +[value:final-states] Values at end of function main2: + NON TERMINATING FUNCTION +[from] Computing for function LIB_MEM_StaticAlloc +[from] Done for function LIB_MEM_StaticAlloc +[from] Computing for function main2 +[from] Non-terminating function main2 (no dependencies) +[from] Done for function main2 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function LIB_MEM_StaticAlloc: + next_free FROM size; next_free + \result FROM next_free +[from] Function main2: + NON TERMINATING - NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function LIB_MEM_StaticAlloc: + new; tmp; next_free +[inout] Inputs for function LIB_MEM_StaticAlloc: + next_free +[inout] Out (internal) for function main2: + v; i; tmp___0; next_free +[inout] Inputs for function main2: + next_free diff --git a/tests/value/oracle_symblocs/array_array.2.err.oracle b/tests/value/oracle_symblocs/array_array.2.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/array_array.2.res.oracle b/tests/value/oracle_symblocs/array_array.2.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e211fd85563df3b33c980383a87d95ee040737c8 --- /dev/null +++ b/tests/value/oracle_symblocs/array_array.2.res.oracle @@ -0,0 +1,47 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/array_array.c (with preprocessing) +[value] Analyzing a complete application starting at main3 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + StaticAllocHEAP[0..3] ∈ {2} + [4..9999] ∈ {0} + next_free ∈ {0} +[value] computing for function LIB_MEM_StaticAlloc <- main3. + Called from tests/value/array_array.c:66. +[value] Called Frama_C_show_each_ALLOCATION_WITH_STATIC_ALLOC({24}) +[value] Recording results for LIB_MEM_StaticAlloc +[value] Done for function LIB_MEM_StaticAlloc +tests/value/array_array.c:68:[value] entering loop for the first time +tests/value/array_array.c:69:[value] warning: accessing out of bounds index. assert i < 3; +tests/value/array_array.c:69:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +[value] Recording results for main3 +[value] done for function main3 +tests/value/array_array.c:69:[value] assertion 'Value,index_bound' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function LIB_MEM_StaticAlloc: + new ∈ {{ (void *)&StaticAllocHEAP }} + next_free ∈ {24} +[value:final-states] Values at end of function main3: + NON TERMINATING FUNCTION +[from] Computing for function LIB_MEM_StaticAlloc +[from] Done for function LIB_MEM_StaticAlloc +[from] Computing for function main3 +[from] Non-terminating function main3 (no dependencies) +[from] Done for function main3 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function LIB_MEM_StaticAlloc: + next_free FROM size; next_free + \result FROM next_free +[from] Function main3: + NON TERMINATING - NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function LIB_MEM_StaticAlloc: + new; tmp; next_free +[inout] Inputs for function LIB_MEM_StaticAlloc: + next_free +[inout] Out (internal) for function main3: + v; i; next_free +[inout] Inputs for function main3: + next_free diff --git a/tests/value/oracle_symblocs/array_bounds.0.err.oracle b/tests/value/oracle_symblocs/array_bounds.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/array_bounds.0.res.oracle b/tests/value/oracle_symblocs/array_bounds.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..085bc2d591d7455063c1738b198bca3493cc08c8 --- /dev/null +++ b/tests/value/oracle_symblocs/array_bounds.0.res.oracle @@ -0,0 +1,76 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/array_bounds.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + c ∈ [--..--] + s.a ∈ {1} + .T[0] ∈ {0} + .T[1] ∈ {1} + .T[2] ∈ {2} + .T[3] ∈ {3} + .T[4] ∈ {4} + .T[5] ∈ {5} + .T[6] ∈ {6} + .T[7] ∈ {7} + .T[8] ∈ {8} + .T[9] ∈ {9} + .T[10] ∈ {10} + .T[11] ∈ {11} + .b ∈ {20} + u.a ∈ {1} + .T[0] ∈ {0} + .T[1] ∈ {1} + .T[2] ∈ {2} + .T[3] ∈ {3} + .T[4] ∈ {4} + .T[5] ∈ {5} + .T[6] ∈ {6} + .T[7] ∈ {7} + .T[8] ∈ {8} + .T[9] ∈ {9} + .T[10] ∈ {10} + .T[11] ∈ {11} + .b ∈ {20} +tests/value/array_bounds.i:14:[value] entering loop for the first time +[value] Called Frama_C_show_each({0}) +[value] Called Frama_C_show_each({0; 1}) +[value] Called Frama_C_show_each({0; 1; 2}) +[value] Called Frama_C_show_each([0..11]) +[value] Called Frama_C_show_each([0..11]) +tests/value/array_bounds.i:19:[value] entering loop for the first time +tests/value/array_bounds.i:20:[value] warning: accessing out of bounds index. assert j < 12; +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + s.a ∈ {9} + .T[0] ∈ {0} + .T[1] ∈ {1} + .T[2] ∈ {2} + .T[3] ∈ {3} + .T[4] ∈ {4} + .T[5] ∈ {5} + .T[6] ∈ {6} + .T[7] ∈ {7} + .T[8] ∈ {8} + .T[9] ∈ {9} + .T[10] ∈ {10} + .T[11] ∈ {11} + .b ∈ {9} + u.a ∈ {1} + .T[0..11] ∈ [--..--] + .b ∈ {20} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + s{.a; .b} FROM \nothing + u.T[0..11] FROM c (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + s; u.T[0..11]; i; j +[inout] Inputs for function main: + c diff --git a/tests/value/oracle_symblocs/array_bounds.1.err.oracle b/tests/value/oracle_symblocs/array_bounds.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/array_bounds.1.res.oracle b/tests/value/oracle_symblocs/array_bounds.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..db06cb7fb236eb5626ada95d9e24b11128280234 --- /dev/null +++ b/tests/value/oracle_symblocs/array_bounds.1.res.oracle @@ -0,0 +1,67 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/array_bounds.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + c ∈ [--..--] + s.a ∈ {1} + .T[0] ∈ {0} + .T[1] ∈ {1} + .T[2] ∈ {2} + .T[3] ∈ {3} + .T[4] ∈ {4} + .T[5] ∈ {5} + .T[6] ∈ {6} + .T[7] ∈ {7} + .T[8] ∈ {8} + .T[9] ∈ {9} + .T[10] ∈ {10} + .T[11] ∈ {11} + .b ∈ {20} + u.a ∈ {1} + .T[0] ∈ {0} + .T[1] ∈ {1} + .T[2] ∈ {2} + .T[3] ∈ {3} + .T[4] ∈ {4} + .T[5] ∈ {5} + .T[6] ∈ {6} + .T[7] ∈ {7} + .T[8] ∈ {8} + .T[9] ∈ {9} + .T[10] ∈ {10} + .T[11] ∈ {11} + .b ∈ {20} +tests/value/array_bounds.i:14:[value] entering loop for the first time +[value] Called Frama_C_show_each({0}) +[value] Called Frama_C_show_each({0; 1}) +[value] Called Frama_C_show_each({0; 1; 2}) +[value] Called Frama_C_show_each([0..11]) +[value] Called Frama_C_show_each([0..11]) +tests/value/array_bounds.i:19:[value] entering loop for the first time +tests/value/array_bounds.i:19:[value] warning: signed overflow. assert j+5 ≤ 2147483647; +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + s.a ∈ {9} + {.T[0..11]; .b} ∈ [--..--] + u.a ∈ {-1; 1} + .T[0..11] ∈ [--..--] + .b ∈ {20} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + s.a FROM \nothing + .T[0..11] FROM c (and SELF) + .b FROM c + u.a FROM c (and SELF) + .T[0..11] FROM c (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + s; u{.a; .T[0..11]}; i; j +[inout] Inputs for function main: + c diff --git a/tests/value/oracle_symblocs/array_degenerating_loop.err.oracle b/tests/value/oracle_symblocs/array_degenerating_loop.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/array_degenerating_loop.res.oracle b/tests/value/oracle_symblocs/array_degenerating_loop.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..748c791aa6225fd8644b4cf4e5edbb3a261f74d0 --- /dev/null +++ b/tests/value/oracle_symblocs/array_degenerating_loop.res.oracle @@ -0,0 +1,29 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/array_degenerating_loop.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + t[0..1] ∈ {1} + [2..99] ∈ {0} +tests/value/array_degenerating_loop.i:8:[value] entering loop for the first time +tests/value/array_degenerating_loop.i:9:[value] warning: accessing out of bounds index. assert i < 100; +tests/value/array_degenerating_loop.i:9:[value] warning: signed overflow. assert G+t[i] ≤ 2147483647; +[value] Called Frama_C_show_each([55..2147483647], [-2147483648..99]) +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + G ∈ [55..2147483647] + i ∈ [0..100] +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + G; i +[inout] Inputs for function main: + t[0..99] diff --git a/tests/value/oracle_symblocs/array_initializer.err.oracle b/tests/value/oracle_symblocs/array_initializer.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/array_initializer.res.oracle b/tests/value/oracle_symblocs/array_initializer.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..ef9849c7abebe11cc8efc9ec72542768d5897429 --- /dev/null +++ b/tests/value/oracle_symblocs/array_initializer.res.oracle @@ -0,0 +1,45 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/array_initializer.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + t[0..1] ∈ {0} + [2] ∈ {3} + [3..4] ∈ {0} + s.a ∈ {97} + {.t[0..1]; .[bits 8 to 31]} ∈ {0} + .t[2] ∈ {3} + .t[3..4] ∈ {0} + u[0..1] ∈ {0} + [2] ∈ {2} + [3] ∈ {0} + [4] ∈ {4} + [5] ∈ {0} +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + t[0..1] ∈ {0} + [2] ∈ {3} + [3..4] ∈ {0} + s.a ∈ {97} + .[bits 8 to 31] ∈ {0} or UNINITIALIZED + .t[0..1] ∈ {0} + .t[2] ∈ {3} + .t[3..4] ∈ {0} + u[0..1] ∈ {0} + [2] ∈ {2} + [3] ∈ {0} + [4] ∈ {4} + [5] ∈ {0} +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + diff --git a/tests/value/oracle_symblocs/array_loop.err.oracle b/tests/value/oracle_symblocs/array_loop.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/array_loop.res.oracle b/tests/value/oracle_symblocs/array_loop.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..6586f0e8837c495d3ffbac1f3cd7dfc52fcdc908 --- /dev/null +++ b/tests/value/oracle_symblocs/array_loop.res.oracle @@ -0,0 +1,46 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/array_loop.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + t[0] ∈ {17} + [1] ∈ {18} + [2] ∈ {19} + [3] ∈ {20} + [4] ∈ {21} + [5] ∈ {22} + [6] ∈ {23} + [7] ∈ {24} + [8..17] ∈ {1} + [18..19] ∈ {0} + tt[0] ∈ {17} + [1] ∈ {18} + [2] ∈ {19} + [3] ∈ {20} + [4] ∈ {21} + [5] ∈ {22} + [6] ∈ {23} + [7] ∈ {24} + [8..17] ∈ {1} + [18..19] ∈ {0} +tests/value/array_loop.i:7:[value] entering loop for the first time +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + t[0..7] ∈ [-14..24] + [8..17] ∈ {1} + [18..19] ∈ {0} + i ∈ {16} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + t[0..7] FROM tt[0..15] (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + t[0..7]; i +[inout] Inputs for function main: + tt[0..15] diff --git a/tests/value/oracle_symblocs/array_overlap.err.oracle b/tests/value/oracle_symblocs/array_overlap.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/array_overlap.res.oracle b/tests/value/oracle_symblocs/array_overlap.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..4291060142f1e353ae974c8f243cb1bf28737565 --- /dev/null +++ b/tests/value/oracle_symblocs/array_overlap.res.oracle @@ -0,0 +1,48 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/array_overlap.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + T[0..2] ∈ {1} + [3..4] ∈ {2} + [5] ∈ {3} + [6..9] ∈ {0} + U[0..2] ∈ {1} + [3..4] ∈ {2} + [5] ∈ {3} + [6..9] ∈ {0} +tests/value/array_overlap.i:11:[value] warning: partially overlapping lvalue assignment. + assert + ptr ≡ (struct S *)((char *)T) ∨ \separated(ptr, (struct S *)((char *)T)); +tests/value/array_overlap.i:16:[value] warning: partially overlapping lvalue assignment. + assert + ptr ≡ (struct S *)((char *)U) ∨ \separated(ptr, (struct S *)((char *)U)); +[value] Recording results for main +[value] done for function main +tests/value/array_overlap.i:11:[value] assertion 'Value,overlap' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + T[0..3] ∈ {1} + [4..5] ∈ {2} + [6] ∈ {3} + [7..9] ∈ {0} + U[0..2] ∈ {1} + [3] ∈ {1; 2} + [4] ∈ {2} + [5] ∈ {2; 3} + [6] ∈ {0; 3} + [7..9] ∈ {0} + ptr ∈ {{ (struct S *)&U{[0], [1]} }} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + T[1..6] FROM T[0..5] + U[0..6] FROM U[0..5]; c (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + T[1..6]; U[0..6]; ptr; i +[inout] Inputs for function main: + T[0..5]; U[0..5] diff --git a/tests/value/oracle_symblocs/array_ptr.err.oracle b/tests/value/oracle_symblocs/array_ptr.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/array_ptr.res.oracle b/tests/value/oracle_symblocs/array_ptr.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..f9bdb30a8cd4cfe3c61b9c43321221f32a4681be --- /dev/null +++ b/tests/value/oracle_symblocs/array_ptr.res.oracle @@ -0,0 +1,50 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/array_ptr.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + G ∈ {1} + l[0] ∈ {1} + [1..19] ∈ {0} +[value] computing for function f <- main. + Called from tests/value/array_ptr.i:15. +[value] Recording results for f +[value] Done for function f +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + G ∈ {1} + l[0] ∈ {2} + [1..19] ∈ {0} + __retres ∈ {2} +[value:final-states] Values at end of function main: + G ∈ {1} + l[0] ∈ {2} + [1..19] ∈ {0} + g ∈ {{ (int)&l }} + __retres ∈ {0} +[from] Computing for function f +[from] Done for function f +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + G FROM x; l[0]; g + l[0] FROM x; g + \result FROM \nothing +[from] Function main: + G FROM l[0] + l[0] FROM \nothing + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + G; l[0]; __retres +[inout] Inputs for function f: + l[0]; g +[inout] Out (internal) for function main: + G; l[0]; g; __retres +[inout] Inputs for function main: + l[0] diff --git a/tests/value/oracle_symblocs/array_zero_length.0.err.oracle b/tests/value/oracle_symblocs/array_zero_length.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/array_zero_length.0.res.oracle b/tests/value/oracle_symblocs/array_zero_length.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..deda1c6f88d87dbb1a3b7379bb9f80d605ec228f --- /dev/null +++ b/tests/value/oracle_symblocs/array_zero_length.0.res.oracle @@ -0,0 +1,67 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/array_zero_length.i (no preprocessing) +tests/value/array_zero_length.i:10:[kernel] warning: declaration of array of 'zero-length arrays' ('char [0]`); + zero-length arrays are a compiler extension +tests/value/array_zero_length.i:15:[kernel] warning: declaration of array of 'zero-length arrays' ('char [0]`); + zero-length arrays are a compiler extension +[value] Analyzing a complete application starting at main +[value] Computing initial state +tests/value/array_zero_length.i:7:[value] warning: during initialization of variable 'T', size of type 'char []' cannot be + computed (Size of array without number of elements.) +tests/value/array_zero_length.i:7:[kernel] imprecise size for variable T (Size of array without number of elements.) +tests/value/array_zero_length.i:9:[value] warning: during initialization of variable 'V', size of type 'char [][2]' cannot be + computed (Size of array without number of elements.) +tests/value/array_zero_length.i:9:[kernel] imprecise size for variable V (Size of array without number of elements.) +tests/value/array_zero_length.i:10:[value] warning: during initialization of variable 'W', size of type 'char [][0]' cannot be + computed (Size of array without number of elements.) +tests/value/array_zero_length.i:10:[kernel] imprecise size for variable W (Size of array without number of elements.) +[value] Initial state computed +[value:initial-state] Values of globals at initialization + T[0..4294967295] ∈ {0} or UNINITIALIZED + V[0..2147483647][0..1] ∈ {0} or UNINITIALIZED + W[bits 0 to ..] ∈ {0} or UNINITIALIZED + W2[0..1][0] ∈ {0} + pW ∈ {0} +tests/value/array_zero_length.i:24:[value] assertion got status valid. +tests/value/array_zero_length.i:28:[value] assertion got status valid. +tests/value/array_zero_length.i:30:[value] assertion got status valid. +tests/value/array_zero_length.i:32:[value] assertion got status valid. +tests/value/array_zero_length.i:34:[value] assertion got status valid. +tests/value/array_zero_length.i:36:[value] warning: out of bounds write. assert \valid(&T[2]); +tests/value/array_zero_length.i:37:[value] warning: out of bounds write. assert \valid(&T[1]); +tests/value/array_zero_length.i:37:[value] warning: accessing uninitialized left-value. assert \initialized(&T[3]); +tests/value/array_zero_length.i:37:[value] warning: out of bounds read. assert \valid_read(&T[3]); +tests/value/array_zero_length.i:39:[value] warning: out of bounds write. assert \valid(&V[2][1]); +tests/value/array_zero_length.i:40:[value] warning: out of bounds write. assert \valid(&V[1][1]); +tests/value/array_zero_length.i:40:[value] warning: accessing uninitialized left-value. assert \initialized(&V[3][1]); +tests/value/array_zero_length.i:40:[value] warning: out of bounds read. assert \valid_read(&V[3][1]); +tests/value/array_zero_length.i:42:[value] warning: out of bounds write. assert \valid(&W[2][1]); +tests/value/array_zero_length.i:43:[value] warning: out of bounds write. assert \valid(&W[1][1]); +tests/value/array_zero_length.i:43:[value] warning: accessing uninitialized left-value. assert \initialized(&W[3][1]); +tests/value/array_zero_length.i:43:[value] warning: out of bounds read. assert \valid_read(&W[3][1]); +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + T[0] ∈ {0} or UNINITIALIZED + [1] ∈ {0; 3} or UNINITIALIZED + [2] ∈ {3} + [3..4294967295] ∈ {0} or UNINITIALIZED + V{[0][0..1]; [1][0]} ∈ {0} or UNINITIALIZED + [1][1] ∈ {0; 3} or UNINITIALIZED + [2][0] ∈ {0} or UNINITIALIZED + [2][1] ∈ {0; 3} or UNINITIALIZED + [3..2147483647][0..1] ∈ {0} or UNINITIALIZED + W[bits 0 to 7] ∈ {0} or UNINITIALIZED + [bits 8 to 15] ∈ {0; 3; 6} or UNINITIALIZED + [bits 16 to ..] ∈ {0} or UNINITIALIZED + pW ∈ {{ NULL ; &W[-1] }} + sT ∈ [--..--] + sU ∈ {0} + sV ∈ [--..--] + sW ∈ [--..--] + sT1 ∈ {0} + sU1 ∈ {0} + sV1 ∈ {0} + sW1 ∈ {0} + sW2 ∈ {2} diff --git a/tests/value/oracle_symblocs/array_zero_length.1.err.oracle b/tests/value/oracle_symblocs/array_zero_length.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/array_zero_length.1.res.oracle b/tests/value/oracle_symblocs/array_zero_length.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..b881f0788f34cb7d3eaf14575dcd70724bf2aaac --- /dev/null +++ b/tests/value/oracle_symblocs/array_zero_length.1.res.oracle @@ -0,0 +1,61 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/array_zero_length.i (no preprocessing) +tests/value/array_zero_length.i:10:[kernel] warning: declaration of array of 'zero-length arrays' ('char [0]`); + zero-length arrays are a compiler extension +tests/value/array_zero_length.i:15:[kernel] warning: declaration of array of 'zero-length arrays' ('char [0]`); + zero-length arrays are a compiler extension +[value] Analyzing an incomplete application starting at main +[value] Computing initial state +tests/value/array_zero_length.i:7:[kernel] imprecise size for variable T (Size of array without number of elements.) +tests/value/array_zero_length.i:7:[value] warning: during initialization of variable 'T', size of type 'char []' cannot be + computed (Size of array without number of elements.) +tests/value/array_zero_length.i:9:[kernel] imprecise size for variable V (Size of array without number of elements.) +tests/value/array_zero_length.i:9:[value] warning: during initialization of variable 'V', size of type 'char [][2]' cannot be + computed (Size of array without number of elements.) +tests/value/array_zero_length.i:10:[kernel] imprecise size for variable W (Size of array without number of elements.) +tests/value/array_zero_length.i:10:[value] warning: during initialization of variable 'W', size of type 'char [][0]' cannot be + computed (Size of array without number of elements.) +[value] Initial state computed +[value:initial-state] Values of globals at initialization + T[0..4294967295] ∈ [--..--] or UNINITIALIZED + V[0..2147483647][0..1] ∈ [--..--] or UNINITIALIZED + W[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + W2[0..1][0] ∈ [--..--] + pW ∈ {{ NULL ; &S_pW[0] }} + S_pW[0..1] ∈ [--..--] +tests/value/array_zero_length.i:24:[value] assertion got status valid. +tests/value/array_zero_length.i:28:[value] assertion got status valid. +tests/value/array_zero_length.i:30:[value] assertion got status valid. +tests/value/array_zero_length.i:32:[value] assertion got status valid. +tests/value/array_zero_length.i:34:[value] assertion got status valid. +tests/value/array_zero_length.i:36:[value] warning: out of bounds write. assert \valid(&T[2]); +tests/value/array_zero_length.i:37:[value] warning: out of bounds write. assert \valid(&T[1]); +tests/value/array_zero_length.i:37:[value] warning: accessing uninitialized left-value. assert \initialized(&T[3]); +tests/value/array_zero_length.i:37:[value] warning: out of bounds read. assert \valid_read(&T[3]); +tests/value/array_zero_length.i:39:[value] warning: out of bounds write. assert \valid(&V[2][1]); +tests/value/array_zero_length.i:40:[value] warning: out of bounds write. assert \valid(&V[1][1]); +tests/value/array_zero_length.i:40:[value] warning: accessing uninitialized left-value. assert \initialized(&V[3][1]); +tests/value/array_zero_length.i:40:[value] warning: out of bounds read. assert \valid_read(&V[3][1]); +tests/value/array_zero_length.i:42:[value] warning: out of bounds write. assert \valid(&W[2][1]); +tests/value/array_zero_length.i:43:[value] warning: out of bounds write. assert \valid(&W[1][1]); +tests/value/array_zero_length.i:43:[value] warning: accessing uninitialized left-value. assert \initialized(&W[3][1]); +tests/value/array_zero_length.i:43:[value] warning: out of bounds read. assert \valid_read(&W[3][1]); +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + T[0..1] ∈ [--..--] or UNINITIALIZED + [2] ∈ {3} + [3..4294967295] ∈ [--..--] or UNINITIALIZED + V[0..2147483647][0..1] ∈ [--..--] or UNINITIALIZED + W[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + pW ∈ {{ NULL ; &W[-1] ; &S_pW[0] }} + sT ∈ [--..--] + sU ∈ {0} + sV ∈ [--..--] + sW ∈ [--..--] + sT1 ∈ {0} + sU1 ∈ {0} + sV1 ∈ {0} + sW1 ∈ {0} + sW2 ∈ {2} diff --git a/tests/value/oracle_symblocs/array_zero_length.2.err.oracle b/tests/value/oracle_symblocs/array_zero_length.2.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/array_zero_length.2.res.oracle b/tests/value/oracle_symblocs/array_zero_length.2.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..736546326c2222624bbd1871ced6d2deaf1579e2 --- /dev/null +++ b/tests/value/oracle_symblocs/array_zero_length.2.res.oracle @@ -0,0 +1,7 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/array_zero_length.i (no preprocessing) +tests/value/array_zero_length.i:10:[kernel] user error: declaration of array of 'zero-length arrays' ('char [0]`); + zero-length arrays are not allowed in C99 +[kernel] user error: empty initializers only allowed for GCC/MSVC +[kernel] user error: stopping on file "tests/value/array_zero_length.i" that has errors. +[kernel] Frama-C aborted: invalid user input. diff --git a/tests/value/oracle_symblocs/assert_builtin.err.oracle b/tests/value/oracle_symblocs/assert_builtin.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/assert_builtin.res.oracle b/tests/value/oracle_symblocs/assert_builtin.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..9311f9ff639c9e0dae44eac7159fd238092a9bc1 --- /dev/null +++ b/tests/value/oracle_symblocs/assert_builtin.res.oracle @@ -0,0 +1,27 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/assert_builtin.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + t[0..9] ∈ {0} +tests/value/assert_builtin.i:6:[value] warning: Frama_C_assert: unknown +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +tests/value/assert_builtin.i:6:[kernel] warning: Neither code nor specification for function Frama_C_assert, generating default assigns from the prototype +[value:final-states] Values at end of function main: + __retres ∈ {0} +[from] Computing for function main +[from] Computing for function Frama_C_assert <-main +[from] Done for function Frama_C_assert +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + \result FROM t[0..9]; c +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + __retres +[inout] Inputs for function main: + t[0..9] diff --git a/tests/value/oracle_symblocs/assert_ptr.err.oracle b/tests/value/oracle_symblocs/assert_ptr.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/assert_ptr.res.oracle b/tests/value/oracle_symblocs/assert_ptr.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..aabfefcc9aadafd8f36ae749638cfa6c2c8bedfc --- /dev/null +++ b/tests/value/oracle_symblocs/assert_ptr.res.oracle @@ -0,0 +1,39 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/assert_ptr.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + ptr ∈ {0} + q ∈ {0} + s_q ∈ {0} + a ∈ {0} + r ∈ {0} +tests/value/assert_ptr.i:8:[value] assertion got status valid. +[value] Called Frama_C_show_each_ptr({{ NULL ; &a }}) +tests/value/assert_ptr.i:12:[value] warning: assertion got status unknown. +[value] Called Frama_C_show_each_q({{ &a }}) +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + ptr ∈ {{ NULL ; &a }} + q ∈ {{ (int **)&s_q }} + s_q ∈ {{ (int)&a }} + a ∈ {0; 1} + __retres ∈ {0} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + ptr FROM c (and SELF) + q FROM \nothing + s_q FROM d; e (and SELF) + a FROM ptr; a; c (and SELF) + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + ptr; q; s_q; a; __retres +[inout] Inputs for function main: + ptr; q; s_q; a diff --git a/tests/value/oracle_symblocs/assign-leaf-indirect.err.oracle b/tests/value/oracle_symblocs/assign-leaf-indirect.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/assign-leaf-indirect.res.oracle b/tests/value/oracle_symblocs/assign-leaf-indirect.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..31817d15ff07ee69a89d599d15d522db0d935d06 --- /dev/null +++ b/tests/value/oracle_symblocs/assign-leaf-indirect.res.oracle @@ -0,0 +1,45 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/assign-leaf-indirect.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + x ∈ {0} + y ∈ {0} + z ∈ {0} +[value] computing for function f <- main. + Called from tests/value/assign-leaf-indirect.i:8. +[value] using specification for function f +[value] Done for function f +[value] computing for function g <- main. + Called from tests/value/assign-leaf-indirect.i:9. +[value] using specification for function g +[value] Done for function g +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + y ∈ + {{ garbled mix of &{x} + (origin: Library function {tests/value/assign-leaf-indirect.i:8}) }} + z ∈ [--..--] +[from] Computing for function main +[from] Computing for function f <-main +[from] Done for function f +[from] Computing for function g <-main +[from] Done for function g +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + y FROM x; p +[from] Function g: + z FROM x; p +[from] Function main: + y FROM x + z FROM x +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + y; z +[inout] Inputs for function main: + x diff --git a/tests/value/oracle_symblocs/assigns.err.oracle b/tests/value/oracle_symblocs/assigns.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/assigns.res.oracle b/tests/value/oracle_symblocs/assigns.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e642abe4cccb58e5e6d2ed164decd92c51d3e620 --- /dev/null +++ b/tests/value/oracle_symblocs/assigns.res.oracle @@ -0,0 +1,1010 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/assigns.i (no preprocessing) +tests/value/assigns.i:31:[kernel] warning: parsing obsolete ACSL construct 'logic declaration'. 'an axiomatic block' should be used instead. +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + v ∈ [--..--] + G ∈ {0} + T[0..99] ∈ {0} + Tpost[0..99] ∈ {0} + t[0..9] ∈ {0} + t2[0..99999] ∈ {0} + t3[0..99999] ∈ {0} + x ∈ {0} + k ∈ {53} + y1 ∈ {0} + y2 ∈ {0} + y3 ∈ {0} + t_main3_1[0..6][0..7] ∈ {0} + t_main3_2[0..2][0..3][0..4] ∈ {0} + t_main4[0..999] ∈ {0} + u_main4[0..99] ∈ {0} +[value] computing for function main1 <- main. + Called from tests/value/assigns.i:110. +[value] computing for function F1 <- main1 <- main. + Called from tests/value/assigns.i:46. +[value] using specification for function F1 +[value] Done for function F1 +tests/value/assigns.i:48:[value] entering loop for the first time +[value] computing for function f <- main1 <- main. + Called from tests/value/assigns.i:49. +[value] using specification for function f +[value] Done for function f +[value] computing for function f <- main1 <- main. + Called from tests/value/assigns.i:49. +[value] Done for function f +[value] computing for function f <- main1 <- main. + Called from tests/value/assigns.i:49. +[value] Done for function f +[value] computing for function f <- main1 <- main. + Called from tests/value/assigns.i:49. +[value] Done for function f +[value] computing for function f <- main1 <- main. + Called from tests/value/assigns.i:49. +[value] Done for function f +tests/value/assigns.i:51:[value] warning: signed overflow. assert -2147483648 ≤ 2*(int)(&T); +tests/value/assigns.i:51:[value] warning: signed overflow. assert 2*(int)(&T) ≤ 2147483647; +[value] computing for function g <- main1 <- main. + Called from tests/value/assigns.i:51. +[value] using specification for function g +[value] Done for function g +tests/value/assigns.i:52:[value] warning: signed overflow. assert -2147483648 ≤ 2*(int)(&t3); +tests/value/assigns.i:52:[value] warning: signed overflow. assert 2*(int)(&t3) ≤ 2147483647; +[value] computing for function h <- main1 <- main. + Called from tests/value/assigns.i:52. +[value] using specification for function h +[value] Done for function h +[value] computing for function j <- main1 <- main. + Called from tests/value/assigns.i:54. +tests/value/assigns.i:54:[value] Cannot evaluate range bound foo(*p) + (unsupported ACSL construct: logic functions or predicates). Approximating +[value] using specification for function j +[value] Done for function j +[value] computing for function assigns_post <- main1 <- main. + Called from tests/value/assigns.i:56. +[value] using specification for function assigns_post +tests/value/assigns.i:39:[value] warning: no \from part + for clause 'assigns Tpost[\at(\old(i),Post)], Tpost[\at(k,Post)];' of + function assigns_post +tests/value/assigns.i:56:[value] warning: cannot interpret 'from' clause 'assigns \at(x,Post) \from \at(x,Post);' + of function assigns_post + (no environment to evaluate \at(_,Post)) +tests/value/assigns.i:56:[value] warning: cannot interpret assigns Tpost[\at(k,Post)] in function assigns_post + (no environment to evaluate \at(_,Post)); effects will be ignored +[value] Done for function assigns_post +tests/value/assigns.i:57:[value] warning: locals escaping the scope of main1 through x +[value] Recording results for main1 +[value] Done for function main1 +[value] computing for function main2 <- main. + Called from tests/value/assigns.i:111. +[value] computing for function ff1 <- main2 <- main. + Called from tests/value/assigns.i:76. +[value] using specification for function ff1 +tests/value/assigns.i:60:[value] warning: no 'assigns \result \from ...' clause specified for function ff1 +[value] Done for function ff1 +[value] computing for function ff3 <- main2 <- main. + Called from tests/value/assigns.i:78. +[value] using specification for function ff3 +tests/value/assigns.i:68:[value] warning: no \from part for clause 'assigns y1, y3;' of function ff3 +[value] Done for function ff3 +[value] computing for function ff4 <- main2 <- main. + Called from tests/value/assigns.i:79. +tests/value/assigns.i:79:[kernel] warning: Neither code nor specification for function ff4, generating default assigns from the prototype +[value] using specification for function ff4 +[value] Done for function ff4 +[value] computing for function ff5 <- main2 <- main. + Called from tests/value/assigns.i:80. +tests/value/assigns.i:80:[kernel] warning: Neither code nor specification for function ff5, generating default assigns from the prototype +[value] using specification for function ff5 +[value] Done for function ff5 +[value] computing for function ff2 <- main2 <- main. + Called from tests/value/assigns.i:82. +tests/value/assigns.i:82:[kernel] warning: Neither code nor specification for function ff2, generating default assigns from the prototype +[value] using specification for function ff2 +[value] Done for function ff2 +[value] computing for function ff2_bis <- main2 <- main. + Called from tests/value/assigns.i:83. +[value] using specification for function ff2_bis +tests/value/assigns.i:64:[value] warning: no 'assigns \result \from ...' clause specified for function ff2_bis +[value] Done for function ff2_bis +tests/value/assigns.i:84:[value] warning: pointer comparison. assert \pointer_comparable((void *)p, (void *)(&x)); +[value] Recording results for main2 +[value] Done for function main2 +[value] computing for function main3 <- main. + Called from tests/value/assigns.i:112. +tests/value/assigns.i:112:[kernel] warning: Neither code nor specification for function main3, generating default assigns from the prototype +[value] using specification for function main3 +[value] Done for function main3 +[value] computing for function main4 <- main. + Called from tests/value/assigns.i:113. +[value] computing for function f_main4_1 <- main4 <- main. + Called from tests/value/assigns.i:104. +tests/value/assigns.i:104:[kernel] more than 200(1000) elements to enumerate. Approximating. +[value] using specification for function f_main4_1 +tests/value/assigns.i:104:[kernel] more than 200(1000) locations to update in array. Approximating. +[value] Done for function f_main4_1 +[value] computing for function f_main4_2 <- main4 <- main. + Called from tests/value/assigns.i:105. +[value] using specification for function f_main4_2 +tests/value/assigns.i:105:[kernel] more than 200(1000) locations to update in array. Approximating. +[value] Done for function f_main4_2 +[value] Recording results for main4 +[value] Done for function main4 +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main1: + T[0..99] ∈ [--..--] + Tpost[0..17] ∈ {0} + [18] ∈ [--..--] + [19..99] ∈ {0} + t[0].f1 ∈ {0} + {[0].f2; [1..5]} ∈ [--..--] + [6..9] ∈ {0} + t2[0..99999] ∈ [--..--] + t3[0..99999] ∈ [--..--] + x ∈ {{ ANYTHING }} +[value:final-states] Values at end of function main2: + y1 ∈ [--..--] + y2 ∈ [--..--] + y3 ∈ [--..--] + l ∈ [--..--] + p ∈ {{ NULL + [--..--] ; &alloced_return_ff2 + [0..2147483644],0%4 }} + q ∈ {{ NULL + [--..--] ; &alloced_return_ff2_bis + [0..2147483644],0%4 }} + __retres ∈ {1} +[value:final-states] Values at end of function main4: + t_main4{[0..998]; [999].f1} ∈ [--..--] + [999].f2 ∈ {0} + u_main4[0].f1 ∈ [--..--] + [0].f2 ∈ {0} + [1].f1 ∈ [--..--] + [1].f2 ∈ {0} + [2].f1 ∈ [--..--] + [2].f2 ∈ {0} + [3].f1 ∈ [--..--] + [3].f2 ∈ {0} + [4].f1 ∈ [--..--] + [4].f2 ∈ {0} + [5].f1 ∈ [--..--] + [5].f2 ∈ {0} + [6].f1 ∈ [--..--] + [6].f2 ∈ {0} + [7].f1 ∈ [--..--] + [7].f2 ∈ {0} + [8].f1 ∈ [--..--] + [8].f2 ∈ {0} + [9].f1 ∈ [--..--] + [9].f2 ∈ {0} + [10].f1 ∈ [--..--] + [10].f2 ∈ {0} + [11].f1 ∈ [--..--] + [11].f2 ∈ {0} + [12].f1 ∈ [--..--] + [12].f2 ∈ {0} + [13].f1 ∈ [--..--] + [13].f2 ∈ {0} + [14].f1 ∈ [--..--] + [14].f2 ∈ {0} + [15].f1 ∈ [--..--] + [15].f2 ∈ {0} + [16].f1 ∈ [--..--] + [16].f2 ∈ {0} + [17].f1 ∈ [--..--] + [17].f2 ∈ {0} + [18].f1 ∈ [--..--] + [18].f2 ∈ {0} + [19].f1 ∈ [--..--] + [19].f2 ∈ {0} + [20].f1 ∈ [--..--] + [20].f2 ∈ {0} + [21].f1 ∈ [--..--] + [21].f2 ∈ {0} + [22].f1 ∈ [--..--] + [22].f2 ∈ {0} + [23].f1 ∈ [--..--] + [23].f2 ∈ {0} + [24].f1 ∈ [--..--] + [24].f2 ∈ {0} + [25].f1 ∈ [--..--] + [25].f2 ∈ {0} + [26].f1 ∈ [--..--] + [26].f2 ∈ {0} + [27].f1 ∈ [--..--] + [27].f2 ∈ {0} + [28].f1 ∈ [--..--] + [28].f2 ∈ {0} + [29].f1 ∈ [--..--] + [29].f2 ∈ {0} + [30].f1 ∈ [--..--] + [30].f2 ∈ {0} + [31].f1 ∈ [--..--] + [31].f2 ∈ {0} + [32].f1 ∈ [--..--] + [32].f2 ∈ {0} + [33].f1 ∈ [--..--] + [33].f2 ∈ {0} + [34].f1 ∈ [--..--] + [34].f2 ∈ {0} + [35].f1 ∈ [--..--] + [35].f2 ∈ {0} + [36].f1 ∈ [--..--] + [36].f2 ∈ {0} + [37].f1 ∈ [--..--] + [37].f2 ∈ {0} + [38].f1 ∈ [--..--] + [38].f2 ∈ {0} + [39].f1 ∈ [--..--] + [39].f2 ∈ {0} + [40].f1 ∈ [--..--] + [40].f2 ∈ {0} + [41].f1 ∈ [--..--] + [41].f2 ∈ {0} + [42].f1 ∈ [--..--] + [42].f2 ∈ {0} + [43].f1 ∈ [--..--] + [43].f2 ∈ {0} + [44].f1 ∈ [--..--] + [44].f2 ∈ {0} + [45].f1 ∈ [--..--] + [45].f2 ∈ {0} + [46].f1 ∈ [--..--] + [46].f2 ∈ {0} + [47].f1 ∈ [--..--] + [47].f2 ∈ {0} + [48].f1 ∈ [--..--] + [48].f2 ∈ {0} + [49].f1 ∈ [--..--] + [49].f2 ∈ {0} + [50].f1 ∈ [--..--] + [50].f2 ∈ {0} + [51].f1 ∈ [--..--] + [51].f2 ∈ {0} + [52].f1 ∈ [--..--] + [52].f2 ∈ {0} + [53].f1 ∈ [--..--] + [53].f2 ∈ {0} + [54].f1 ∈ [--..--] + [54].f2 ∈ {0} + [55].f1 ∈ [--..--] + [55].f2 ∈ {0} + [56].f1 ∈ [--..--] + [56].f2 ∈ {0} + [57].f1 ∈ [--..--] + [57].f2 ∈ {0} + [58].f1 ∈ [--..--] + [58].f2 ∈ {0} + [59].f1 ∈ [--..--] + [59].f2 ∈ {0} + [60].f1 ∈ [--..--] + [60].f2 ∈ {0} + [61].f1 ∈ [--..--] + [61].f2 ∈ {0} + [62].f1 ∈ [--..--] + [62].f2 ∈ {0} + [63].f1 ∈ [--..--] + [63].f2 ∈ {0} + [64].f1 ∈ [--..--] + [64].f2 ∈ {0} + [65].f1 ∈ [--..--] + [65].f2 ∈ {0} + [66].f1 ∈ [--..--] + [66].f2 ∈ {0} + [67].f1 ∈ [--..--] + [67].f2 ∈ {0} + [68].f1 ∈ [--..--] + [68].f2 ∈ {0} + [69].f1 ∈ [--..--] + [69].f2 ∈ {0} + [70].f1 ∈ [--..--] + [70].f2 ∈ {0} + [71].f1 ∈ [--..--] + [71].f2 ∈ {0} + [72].f1 ∈ [--..--] + [72].f2 ∈ {0} + [73].f1 ∈ [--..--] + [73].f2 ∈ {0} + [74].f1 ∈ [--..--] + [74].f2 ∈ {0} + [75].f1 ∈ [--..--] + [75].f2 ∈ {0} + [76].f1 ∈ [--..--] + [76].f2 ∈ {0} + [77].f1 ∈ [--..--] + [77].f2 ∈ {0} + [78].f1 ∈ [--..--] + [78].f2 ∈ {0} + [79].f1 ∈ [--..--] + [79].f2 ∈ {0} + [80].f1 ∈ [--..--] + [80].f2 ∈ {0} + [81].f1 ∈ [--..--] + [81].f2 ∈ {0} + [82].f1 ∈ [--..--] + [82].f2 ∈ {0} + [83].f1 ∈ [--..--] + [83].f2 ∈ {0} + [84].f1 ∈ [--..--] + [84].f2 ∈ {0} + [85].f1 ∈ [--..--] + [85].f2 ∈ {0} + [86].f1 ∈ [--..--] + [86].f2 ∈ {0} + [87].f1 ∈ [--..--] + [87].f2 ∈ {0} + [88].f1 ∈ [--..--] + [88].f2 ∈ {0} + [89].f1 ∈ [--..--] + [89].f2 ∈ {0} + [90].f1 ∈ [--..--] + [90].f2 ∈ {0} + [91].f1 ∈ [--..--] + [91].f2 ∈ {0} + [92].f1 ∈ [--..--] + [92].f2 ∈ {0} + [93].f1 ∈ [--..--] + [93].f2 ∈ {0} + [94].f1 ∈ [--..--] + [94].f2 ∈ {0} + [95].f1 ∈ [--..--] + [95].f2 ∈ {0} + [96].f1 ∈ [--..--] + [96].f2 ∈ {0} + [97].f1 ∈ [--..--] + [97].f2 ∈ {0} + [98].f1 ∈ [--..--] + [98].f2 ∈ {0} + [99].f1 ∈ [--..--] + [99].f2 ∈ {0} +[value:final-states] Values at end of function main: + T[0..99] ∈ [--..--] + Tpost[0..17] ∈ {0} + [18] ∈ [--..--] + [19..99] ∈ {0} + t[0].f1 ∈ {0} + {[0].f2; [1..5]} ∈ [--..--] + [6..9] ∈ {0} + t2[0..99999] ∈ [--..--] + t3[0..99999] ∈ [--..--] + x ∈ {{ ANYTHING }} or ESCAPINGADDR + y1 ∈ [--..--] + y2 ∈ [--..--] + y3 ∈ [--..--] + t_main3_1[0][0..7] ∈ [--..--] + [1..6][0..7] ∈ {0} + t_main3_2[0..2][0..3][0..4] ∈ [--..--] + t_main4{[0..998]; [999].f1} ∈ [--..--] + [999].f2 ∈ {0} + u_main4[0].f1 ∈ [--..--] + [0].f2 ∈ {0} + [1].f1 ∈ [--..--] + [1].f2 ∈ {0} + [2].f1 ∈ [--..--] + [2].f2 ∈ {0} + [3].f1 ∈ [--..--] + [3].f2 ∈ {0} + [4].f1 ∈ [--..--] + [4].f2 ∈ {0} + [5].f1 ∈ [--..--] + [5].f2 ∈ {0} + [6].f1 ∈ [--..--] + [6].f2 ∈ {0} + [7].f1 ∈ [--..--] + [7].f2 ∈ {0} + [8].f1 ∈ [--..--] + [8].f2 ∈ {0} + [9].f1 ∈ [--..--] + [9].f2 ∈ {0} + [10].f1 ∈ [--..--] + [10].f2 ∈ {0} + [11].f1 ∈ [--..--] + [11].f2 ∈ {0} + [12].f1 ∈ [--..--] + [12].f2 ∈ {0} + [13].f1 ∈ [--..--] + [13].f2 ∈ {0} + [14].f1 ∈ [--..--] + [14].f2 ∈ {0} + [15].f1 ∈ [--..--] + [15].f2 ∈ {0} + [16].f1 ∈ [--..--] + [16].f2 ∈ {0} + [17].f1 ∈ [--..--] + [17].f2 ∈ {0} + [18].f1 ∈ [--..--] + [18].f2 ∈ {0} + [19].f1 ∈ [--..--] + [19].f2 ∈ {0} + [20].f1 ∈ [--..--] + [20].f2 ∈ {0} + [21].f1 ∈ [--..--] + [21].f2 ∈ {0} + [22].f1 ∈ [--..--] + [22].f2 ∈ {0} + [23].f1 ∈ [--..--] + [23].f2 ∈ {0} + [24].f1 ∈ [--..--] + [24].f2 ∈ {0} + [25].f1 ∈ [--..--] + [25].f2 ∈ {0} + [26].f1 ∈ [--..--] + [26].f2 ∈ {0} + [27].f1 ∈ [--..--] + [27].f2 ∈ {0} + [28].f1 ∈ [--..--] + [28].f2 ∈ {0} + [29].f1 ∈ [--..--] + [29].f2 ∈ {0} + [30].f1 ∈ [--..--] + [30].f2 ∈ {0} + [31].f1 ∈ [--..--] + [31].f2 ∈ {0} + [32].f1 ∈ [--..--] + [32].f2 ∈ {0} + [33].f1 ∈ [--..--] + [33].f2 ∈ {0} + [34].f1 ∈ [--..--] + [34].f2 ∈ {0} + [35].f1 ∈ [--..--] + [35].f2 ∈ {0} + [36].f1 ∈ [--..--] + [36].f2 ∈ {0} + [37].f1 ∈ [--..--] + [37].f2 ∈ {0} + [38].f1 ∈ [--..--] + [38].f2 ∈ {0} + [39].f1 ∈ [--..--] + [39].f2 ∈ {0} + [40].f1 ∈ [--..--] + [40].f2 ∈ {0} + [41].f1 ∈ [--..--] + [41].f2 ∈ {0} + [42].f1 ∈ [--..--] + [42].f2 ∈ {0} + [43].f1 ∈ [--..--] + [43].f2 ∈ {0} + [44].f1 ∈ [--..--] + [44].f2 ∈ {0} + [45].f1 ∈ [--..--] + [45].f2 ∈ {0} + [46].f1 ∈ [--..--] + [46].f2 ∈ {0} + [47].f1 ∈ [--..--] + [47].f2 ∈ {0} + [48].f1 ∈ [--..--] + [48].f2 ∈ {0} + [49].f1 ∈ [--..--] + [49].f2 ∈ {0} + [50].f1 ∈ [--..--] + [50].f2 ∈ {0} + [51].f1 ∈ [--..--] + [51].f2 ∈ {0} + [52].f1 ∈ [--..--] + [52].f2 ∈ {0} + [53].f1 ∈ [--..--] + [53].f2 ∈ {0} + [54].f1 ∈ [--..--] + [54].f2 ∈ {0} + [55].f1 ∈ [--..--] + [55].f2 ∈ {0} + [56].f1 ∈ [--..--] + [56].f2 ∈ {0} + [57].f1 ∈ [--..--] + [57].f2 ∈ {0} + [58].f1 ∈ [--..--] + [58].f2 ∈ {0} + [59].f1 ∈ [--..--] + [59].f2 ∈ {0} + [60].f1 ∈ [--..--] + [60].f2 ∈ {0} + [61].f1 ∈ [--..--] + [61].f2 ∈ {0} + [62].f1 ∈ [--..--] + [62].f2 ∈ {0} + [63].f1 ∈ [--..--] + [63].f2 ∈ {0} + [64].f1 ∈ [--..--] + [64].f2 ∈ {0} + [65].f1 ∈ [--..--] + [65].f2 ∈ {0} + [66].f1 ∈ [--..--] + [66].f2 ∈ {0} + [67].f1 ∈ [--..--] + [67].f2 ∈ {0} + [68].f1 ∈ [--..--] + [68].f2 ∈ {0} + [69].f1 ∈ [--..--] + [69].f2 ∈ {0} + [70].f1 ∈ [--..--] + [70].f2 ∈ {0} + [71].f1 ∈ [--..--] + [71].f2 ∈ {0} + [72].f1 ∈ [--..--] + [72].f2 ∈ {0} + [73].f1 ∈ [--..--] + [73].f2 ∈ {0} + [74].f1 ∈ [--..--] + [74].f2 ∈ {0} + [75].f1 ∈ [--..--] + [75].f2 ∈ {0} + [76].f1 ∈ [--..--] + [76].f2 ∈ {0} + [77].f1 ∈ [--..--] + [77].f2 ∈ {0} + [78].f1 ∈ [--..--] + [78].f2 ∈ {0} + [79].f1 ∈ [--..--] + [79].f2 ∈ {0} + [80].f1 ∈ [--..--] + [80].f2 ∈ {0} + [81].f1 ∈ [--..--] + [81].f2 ∈ {0} + [82].f1 ∈ [--..--] + [82].f2 ∈ {0} + [83].f1 ∈ [--..--] + [83].f2 ∈ {0} + [84].f1 ∈ [--..--] + [84].f2 ∈ {0} + [85].f1 ∈ [--..--] + [85].f2 ∈ {0} + [86].f1 ∈ [--..--] + [86].f2 ∈ {0} + [87].f1 ∈ [--..--] + [87].f2 ∈ {0} + [88].f1 ∈ [--..--] + [88].f2 ∈ {0} + [89].f1 ∈ [--..--] + [89].f2 ∈ {0} + [90].f1 ∈ [--..--] + [90].f2 ∈ {0} + [91].f1 ∈ [--..--] + [91].f2 ∈ {0} + [92].f1 ∈ [--..--] + [92].f2 ∈ {0} + [93].f1 ∈ [--..--] + [93].f2 ∈ {0} + [94].f1 ∈ [--..--] + [94].f2 ∈ {0} + [95].f1 ∈ [--..--] + [95].f2 ∈ {0} + [96].f1 ∈ [--..--] + [96].f2 ∈ {0} + [97].f1 ∈ [--..--] + [97].f2 ∈ {0} + [98].f1 ∈ [--..--] + [98].f2 ∈ {0} + [99].f1 ∈ [--..--] + [99].f2 ∈ {0} +[from] Computing for function main1 +[from] Computing for function F1 <-main1 +[from] Done for function F1 +[from] Computing for function f <-main1 +[from] Done for function f +[from] Computing for function g <-main1 +[from] Done for function g +[from] Computing for function h <-main1 +[from] Done for function h +[from] Computing for function j <-main1 +[from] Done for function j +[from] Computing for function assigns_post <-main1 +[from] Done for function assigns_post +[from] Done for function main1 +[from] Computing for function main2 +[from] Computing for function ff1 <-main2 +[from] Done for function ff1 +[from] Computing for function ff3 <-main2 +[from] Done for function ff3 +[from] Computing for function ff4 <-main2 +[from] Done for function ff4 +[from] Computing for function ff5 <-main2 +[from] Done for function ff5 +[from] Computing for function ff2 <-main2 +[from] Done for function ff2 +[from] Computing for function ff2_bis <-main2 +[from] Done for function ff2_bis +[from] Done for function main2 +[from] Computing for function main4 +[from] Computing for function f_main4_1 <-main4 +tests/value/assigns.i:104:[kernel] more than 200(1000) dependencies to update. Approximating. +[from] Done for function f_main4_1 +[from] Computing for function f_main4_2 <-main4 +tests/value/assigns.i:105:[kernel] more than 200(1000) dependencies to update. Approximating. +[from] Done for function f_main4_2 +[from] Done for function main4 +[from] Computing for function main +[from] Computing for function main3 <-main +[from] Done for function main3 +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function F1: + T[0..99] FROM T[0..99] (and SELF) +[from] Function assigns_post: + Tpost{[18]; [53]} FROM ANYTHING(origin:Unknown) (and SELF) + x FROM x (and SELF) +[from] Function f: + t{[0].f2; [1..5]} FROM t{[1..5]; [6].f1} (and SELF) +[from] Function f_main4_1: + t_main4{[0..998]; [999].f1} FROM \nothing (and SELF) + u_main4{[0].f1; [1].f1; [2].f1; [3].f1; [4].f1; [5].f1; [6].f1; [7].f1; + [8].f1; [9].f1; [10].f1; [11].f1; [12].f1; [13].f1; [14].f1; + [15].f1; [16].f1; [17].f1; [18].f1; [19].f1; [20].f1; [21].f1; + [22].f1; [23].f1; [24].f1; [25].f1; [26].f1; [27].f1; [28].f1; + [29].f1; [30].f1; [31].f1; [32].f1; [33].f1; [34].f1; [35].f1; + [36].f1; [37].f1; [38].f1; [39].f1; [40].f1; [41].f1; [42].f1; + [43].f1; [44].f1; [45].f1; [46].f1; [47].f1; [48].f1; [49].f1; + [50].f1; [51].f1; [52].f1; [53].f1; [54].f1; [55].f1; [56].f1; + [57].f1; [58].f1; [59].f1; [60].f1; [61].f1; [62].f1; [63].f1; + [64].f1; [65].f1; [66].f1; [67].f1; [68].f1; [69].f1; [70].f1; + [71].f1; [72].f1; [73].f1; [74].f1; [75].f1; [76].f1; [77].f1; + [78].f1; [79].f1; [80].f1; [81].f1; [82].f1; [83].f1; [84].f1; + [85].f1; [86].f1; [87].f1; [88].f1; [89].f1; [90].f1; [91].f1; + [92].f1; [93].f1; [94].f1; [95].f1; [96].f1; [97].f1; [98].f1; + [99].f1} + FROM \nothing (and SELF) +[from] Function f_main4_2: + t_main4{[0..998]; [999].f1} FROM \nothing (and SELF) + u_main4{[0].f1; [1].f1; [2].f1; [3].f1; [4].f1; [5].f1; [6].f1; [7].f1; + [8].f1; [9].f1; [10].f1; [11].f1; [12].f1; [13].f1; [14].f1; + [15].f1; [16].f1; [17].f1; [18].f1; [19].f1; [20].f1; [21].f1; + [22].f1; [23].f1; [24].f1; [25].f1; [26].f1; [27].f1; [28].f1; + [29].f1; [30].f1; [31].f1; [32].f1; [33].f1; [34].f1; [35].f1; + [36].f1; [37].f1; [38].f1; [39].f1; [40].f1; [41].f1; [42].f1; + [43].f1; [44].f1; [45].f1; [46].f1; [47].f1; [48].f1; [49].f1; + [50].f1; [51].f1; [52].f1; [53].f1; [54].f1; [55].f1; [56].f1; + [57].f1; [58].f1; [59].f1; [60].f1; [61].f1; [62].f1; [63].f1; + [64].f1; [65].f1; [66].f1; [67].f1; [68].f1; [69].f1; [70].f1; + [71].f1; [72].f1; [73].f1; [74].f1; [75].f1; [76].f1; [77].f1; + [78].f1; [79].f1; [80].f1; [81].f1; [82].f1; [83].f1; [84].f1; + [85].f1; [86].f1; [87].f1; [88].f1; [89].f1; [90].f1; [91].f1; + [92].f1; [93].f1; [94].f1; [95].f1; [96].f1; [97].f1; [98].f1; + [99].f1} + FROM \nothing +[from] Function ff1: + \result FROM ANYTHING(origin:Unknown) +[from] Function ff2: + \result FROM \nothing +[from] Function ff2_bis: + \result FROM ANYTHING(origin:Unknown) +[from] Function ff3: + y1 FROM ANYTHING(origin:Unknown) (and SELF) + y2 FROM y2 (and SELF) + y3 FROM ANYTHING(origin:Unknown) (and SELF) +[from] Function ff4: + NO EFFECTS +[from] Function ff5: + \result FROM \nothing +[from] Function g: + t2[0..99999] FROM \nothing (and SELF) +[from] Function h: + t3[0..99999] FROM \nothing (and SELF) +[from] Function j: + T[9..96] FROM \nothing (and SELF) +[from] Function main1: + T[0..99] FROM T[0..99] (and SELF) + Tpost{[18]; [53]} FROM ANYTHING(origin:Unknown) (and SELF) + t{[0].f2; [1..5]} FROM t{[1..5]; [6].f1} (and SELF) + t2[0..99999] FROM \nothing (and SELF) + t3[0..99999] FROM \nothing (and SELF) + x FROM x (and SELF) +[from] Function main2: + y1 FROM ANYTHING(origin:Unknown) (and SELF) + y2 FROM y2 (and SELF) + y3 FROM ANYTHING(origin:Unknown) (and SELF) + \result FROM \nothing +[from] Function main3: + t_main3_1[0][0..7] + FROM t_main3_1[0][0..7]; t_main3_2[0..2][0..3][0..4] (and SELF) + t_main3_2[0..2][0..3][0..4] FROM t_main3_1[0][0..7]; + t_main3_2[0..2][0..3][0..4] (and SELF) + \result FROM t_main3_1[0][0..7]; t_main3_2[0..2][0..3][0..4] +[from] Function main4: + t_main4{[0..998]; [999].f1} FROM \nothing (and SELF) + u_main4{[0].f1; [1].f1; [2].f1; [3].f1; [4].f1; [5].f1; [6].f1; [7].f1; + [8].f1; [9].f1; [10].f1; [11].f1; [12].f1; [13].f1; [14].f1; + [15].f1; [16].f1; [17].f1; [18].f1; [19].f1; [20].f1; [21].f1; + [22].f1; [23].f1; [24].f1; [25].f1; [26].f1; [27].f1; [28].f1; + [29].f1; [30].f1; [31].f1; [32].f1; [33].f1; [34].f1; [35].f1; + [36].f1; [37].f1; [38].f1; [39].f1; [40].f1; [41].f1; [42].f1; + [43].f1; [44].f1; [45].f1; [46].f1; [47].f1; [48].f1; [49].f1; + [50].f1; [51].f1; [52].f1; [53].f1; [54].f1; [55].f1; [56].f1; + [57].f1; [58].f1; [59].f1; [60].f1; [61].f1; [62].f1; [63].f1; + [64].f1; [65].f1; [66].f1; [67].f1; [68].f1; [69].f1; [70].f1; + [71].f1; [72].f1; [73].f1; [74].f1; [75].f1; [76].f1; [77].f1; + [78].f1; [79].f1; [80].f1; [81].f1; [82].f1; [83].f1; [84].f1; + [85].f1; [86].f1; [87].f1; [88].f1; [89].f1; [90].f1; [91].f1; + [92].f1; [93].f1; [94].f1; [95].f1; [96].f1; [97].f1; [98].f1; + [99].f1} + FROM \nothing +[from] Function main: + T[0..99] FROM T[0..99] (and SELF) + Tpost{[18]; [53]} FROM ANYTHING(origin:Unknown) (and SELF) + t{[0].f2; [1..5]} FROM t{[1..5]; [6].f1} (and SELF) + t2[0..99999] FROM \nothing (and SELF) + t3[0..99999] FROM \nothing (and SELF) + x FROM x (and SELF) + y1 FROM ANYTHING(origin:Unknown) (and SELF) + y2 FROM y2 (and SELF) + y3 FROM ANYTHING(origin:Unknown) (and SELF) + t_main3_1[0][0..7] + FROM t_main3_1[0][0..7]; t_main3_2[0..2][0..3][0..4] (and SELF) + t_main3_2[0..2][0..3][0..4] FROM t_main3_1[0][0..7]; + t_main3_2[0..2][0..3][0..4] (and SELF) + t_main4{[0..998]; [999].f1} FROM \nothing (and SELF) + u_main4{[0].f1; [1].f1; [2].f1; [3].f1; [4].f1; [5].f1; [6].f1; [7].f1; + [8].f1; [9].f1; [10].f1; [11].f1; [12].f1; [13].f1; [14].f1; + [15].f1; [16].f1; [17].f1; [18].f1; [19].f1; [20].f1; [21].f1; + [22].f1; [23].f1; [24].f1; [25].f1; [26].f1; [27].f1; [28].f1; + [29].f1; [30].f1; [31].f1; [32].f1; [33].f1; [34].f1; [35].f1; + [36].f1; [37].f1; [38].f1; [39].f1; [40].f1; [41].f1; [42].f1; + [43].f1; [44].f1; [45].f1; [46].f1; [47].f1; [48].f1; [49].f1; + [50].f1; [51].f1; [52].f1; [53].f1; [54].f1; [55].f1; [56].f1; + [57].f1; [58].f1; [59].f1; [60].f1; [61].f1; [62].f1; [63].f1; + [64].f1; [65].f1; [66].f1; [67].f1; [68].f1; [69].f1; [70].f1; + [71].f1; [72].f1; [73].f1; [74].f1; [75].f1; [76].f1; [77].f1; + [78].f1; [79].f1; [80].f1; [81].f1; [82].f1; [83].f1; [84].f1; + [85].f1; [86].f1; [87].f1; [88].f1; [89].f1; [90].f1; [91].f1; + [92].f1; [93].f1; [94].f1; [95].f1; [96].f1; [97].f1; [98].f1; + [99].f1} + FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main1: + T[0..99]; Tpost{[18]; [53]}; t{[0].f2; [1..5]}; t2[0..99999]; t3[0..99999]; + x; i +[inout] Inputs for function main1: + ANYTHING(origin:Unknown) +[inout] InOut (internal) for function main1: + Operational inputs: + ANYTHING(origin:Unknown) + Operational inputs on termination: + ANYTHING(origin:Unknown) + Sure outputs: + i +[inout] Out (internal) for function main2: + y1; y2; y3; l; p; q; __retres +[inout] Inputs for function main2: + ANYTHING(origin:Unknown) +[inout] InOut (internal) for function main2: + Operational inputs: + ANYTHING(origin:Unknown) + Operational inputs on termination: + ANYTHING(origin:Unknown) + Sure outputs: + l; p; q; __retres +[inout] Out (internal) for function main4: + t_main4{[0..998]; [999].f1}; + u_main4{[0].f1; [1].f1; [2].f1; [3].f1; [4].f1; [5].f1; [6].f1; [7].f1; + [8].f1; [9].f1; [10].f1; [11].f1; [12].f1; [13].f1; [14].f1; + [15].f1; [16].f1; [17].f1; [18].f1; [19].f1; [20].f1; [21].f1; + [22].f1; [23].f1; [24].f1; [25].f1; [26].f1; [27].f1; [28].f1; + [29].f1; [30].f1; [31].f1; [32].f1; [33].f1; [34].f1; [35].f1; + [36].f1; [37].f1; [38].f1; [39].f1; [40].f1; [41].f1; [42].f1; + [43].f1; [44].f1; [45].f1; [46].f1; [47].f1; [48].f1; [49].f1; + [50].f1; [51].f1; [52].f1; [53].f1; [54].f1; [55].f1; [56].f1; + [57].f1; [58].f1; [59].f1; [60].f1; [61].f1; [62].f1; [63].f1; + [64].f1; [65].f1; [66].f1; [67].f1; [68].f1; [69].f1; [70].f1; + [71].f1; [72].f1; [73].f1; [74].f1; [75].f1; [76].f1; [77].f1; + [78].f1; [79].f1; [80].f1; [81].f1; [82].f1; [83].f1; [84].f1; + [85].f1; [86].f1; [87].f1; [88].f1; [89].f1; [90].f1; [91].f1; + [92].f1; [93].f1; [94].f1; [95].f1; [96].f1; [97].f1; [98].f1; + [99].f1} +[inout] Inputs for function main4: + v +[inout] InOut (internal) for function main4: + Operational inputs: + v + Operational inputs on termination: + v + Sure outputs: + u_main4{[0].f1; [1].f1; [2].f1; [3].f1; [4].f1; [5].f1; [6].f1; [7].f1; + [8].f1; [9].f1; [10].f1; [11].f1; [12].f1; [13].f1; [14].f1; + [15].f1; [16].f1; [17].f1; [18].f1; [19].f1; [20].f1; [21].f1; + [22].f1; [23].f1; [24].f1; [25].f1; [26].f1; [27].f1; [28].f1; + [29].f1; [30].f1; [31].f1; [32].f1; [33].f1; [34].f1; [35].f1; + [36].f1; [37].f1; [38].f1; [39].f1; [40].f1; [41].f1; [42].f1; + [43].f1; [44].f1; [45].f1; [46].f1; [47].f1; [48].f1; [49].f1; + [50].f1; [51].f1; [52].f1; [53].f1; [54].f1; [55].f1; [56].f1; + [57].f1; [58].f1; [59].f1; [60].f1; [61].f1; [62].f1; [63].f1; + [64].f1; [65].f1; [66].f1; [67].f1; [68].f1; [69].f1; [70].f1; + [71].f1; [72].f1; [73].f1; [74].f1; [75].f1; [76].f1; [77].f1; + [78].f1; [79].f1; [80].f1; [81].f1; [82].f1; [83].f1; [84].f1; + [85].f1; [86].f1; [87].f1; [88].f1; [89].f1; [90].f1; [91].f1; + [92].f1; [93].f1; [94].f1; [95].f1; [96].f1; [97].f1; [98].f1; + [99].f1} +[inout] Out (internal) for function main: + T[0..99]; Tpost{[18]; [53]}; t{[0].f2; [1..5]}; t2[0..99999]; t3[0..99999]; + x; y1; y2; y3; t_main3_1[0][0..7]; t_main3_2[0..2][0..3][0..4]; + t_main4{[0..998]; [999].f1}; + u_main4{[0].f1; [1].f1; [2].f1; [3].f1; [4].f1; [5].f1; [6].f1; [7].f1; + [8].f1; [9].f1; [10].f1; [11].f1; [12].f1; [13].f1; [14].f1; + [15].f1; [16].f1; [17].f1; [18].f1; [19].f1; [20].f1; [21].f1; + [22].f1; [23].f1; [24].f1; [25].f1; [26].f1; [27].f1; [28].f1; + [29].f1; [30].f1; [31].f1; [32].f1; [33].f1; [34].f1; [35].f1; + [36].f1; [37].f1; [38].f1; [39].f1; [40].f1; [41].f1; [42].f1; + [43].f1; [44].f1; [45].f1; [46].f1; [47].f1; [48].f1; [49].f1; + [50].f1; [51].f1; [52].f1; [53].f1; [54].f1; [55].f1; [56].f1; + [57].f1; [58].f1; [59].f1; [60].f1; [61].f1; [62].f1; [63].f1; + [64].f1; [65].f1; [66].f1; [67].f1; [68].f1; [69].f1; [70].f1; + [71].f1; [72].f1; [73].f1; [74].f1; [75].f1; [76].f1; [77].f1; + [78].f1; [79].f1; [80].f1; [81].f1; [82].f1; [83].f1; [84].f1; + [85].f1; [86].f1; [87].f1; [88].f1; [89].f1; [90].f1; [91].f1; + [92].f1; [93].f1; [94].f1; [95].f1; [96].f1; [97].f1; [98].f1; + [99].f1} +[inout] Inputs for function main: + ANYTHING(origin:Unknown) +[inout] InOut (internal) for function main: + Operational inputs: + ANYTHING(origin:Unknown) + Operational inputs on termination: + ANYTHING(origin:Unknown) + Sure outputs: + u_main4{[0].f1; [1].f1; [2].f1; [3].f1; [4].f1; [5].f1; [6].f1; [7].f1; + [8].f1; [9].f1; [10].f1; [11].f1; [12].f1; [13].f1; [14].f1; + [15].f1; [16].f1; [17].f1; [18].f1; [19].f1; [20].f1; [21].f1; + [22].f1; [23].f1; [24].f1; [25].f1; [26].f1; [27].f1; [28].f1; + [29].f1; [30].f1; [31].f1; [32].f1; [33].f1; [34].f1; [35].f1; + [36].f1; [37].f1; [38].f1; [39].f1; [40].f1; [41].f1; [42].f1; + [43].f1; [44].f1; [45].f1; [46].f1; [47].f1; [48].f1; [49].f1; + [50].f1; [51].f1; [52].f1; [53].f1; [54].f1; [55].f1; [56].f1; + [57].f1; [58].f1; [59].f1; [60].f1; [61].f1; [62].f1; [63].f1; + [64].f1; [65].f1; [66].f1; [67].f1; [68].f1; [69].f1; [70].f1; + [71].f1; [72].f1; [73].f1; [74].f1; [75].f1; [76].f1; [77].f1; + [78].f1; [79].f1; [80].f1; [81].f1; [82].f1; [83].f1; [84].f1; + [85].f1; [86].f1; [87].f1; [88].f1; [89].f1; [90].f1; [91].f1; + [92].f1; [93].f1; [94].f1; [95].f1; [96].f1; [97].f1; [98].f1; + [99].f1} +/* Generated by Frama-C */ +struct __anonstruct_ts_1 { + int f1 ; + int f2 ; +}; +typedef struct __anonstruct_ts_1 ts; +int volatile v; +int G; +/*@ assigns *(s+(..)); + assigns *(s+(..)) \from *(s+(..)); */ +extern void F1(char *s); + +char T[100]; +char Tpost[100]; +ts t[10]; +int t2[100000]; +int t3[100000]; +/*@ assigns *(p+(0 .. 3)); + assigns *(p+(0 .. 3)) \from *(p+(4 .. 7)); */ +extern void f(char *p); + +/*@ assigns t2[(unsigned char)len+1 .. (unsigned char)len+1]; + assigns t2[(unsigned char)len+1 .. (unsigned char)len+1] \from \nothing; + */ +extern void g(int len); + +/*@ assigns *(p+(..)); + assigns *(p+(..)) \from \nothing; */ +extern void h(int *p); + +/*@ logic int foo(int p) ; + */ +/*@ assigns *(p+(0 .. foo(*p))); + assigns *(p+(0 .. foo(*p))) \from \nothing; + */ +extern void j(int *p); + +int x; +int k = 53; +/*@ assigns \at(x,Post), Tpost[\at(\old(i),Post)], Tpost[\at(k,Post)]; + assigns \at(x,Post) \from \at(x,Post); + */ +extern void assigns_post(int i); + +void main1(void) +{ + F1(T); + { + int i; + i = 0; + while (i <= 5) { + f((char *)(& t[i].f2)); + i ++; + } + } + /*@ assert Value: signed_overflow: -2147483648 ≤ 2*(int)(&T); */ + /*@ assert Value: signed_overflow: 2*(int)(&T) ≤ 2147483647; */ + g(2 * (int)(& T)); + /*@ assert Value: signed_overflow: -2147483648 ≤ 2*(int)(&t3); */ + /*@ assert Value: signed_overflow: 2*(int)(&t3) ≤ 2147483647; */ + h((int *)(2 * (int)(& t3))); + j((int *)(& T[9])); + assigns_post(18); + return; +} + +/*@ assigns \nothing; */ +extern int ff1(); + +/*@ assigns \result; + assigns \result \from \nothing; */ +extern int *ff2(); + +/*@ assigns \nothing; */ +extern int *ff2_bis(); + +int y1; +int y2; +int y3; +/*@ assigns y1, y2, y3; + assigns y2 \from y2; */ +extern void ff3(); + +/*@ assigns \nothing; */ +extern void ff4(); + +/*@ assigns \result; + assigns \result \from \nothing; */ +extern int ff5(); + +int main2(void) +{ + int __retres; + int l; + int *p; + int *q; + l = ff1(); + ff3(); + ff4(); + ff5(); + p = ff2(); + q = ff2_bis(); + /*@ assert + Value: ptr_comparison: \pointer_comparable((void *)p, (void *)(&x)); + */ + if (p != & x) { + __retres = 1; + goto return_label; + } + __retres = 0; + return_label: return __retres; +} + +int t_main3_1[7][8]; +int t_main3_2[3][4][5]; +/*@ assigns \result, (*a)[0 .. 7], (*(b+(0 .. 2)))[0 .. 3][0 .. 4]; + assigns \result \from (*a)[0 .. 7], (*(b+(0 .. 2)))[0 .. 3][0 .. 4]; + assigns (*a)[0 .. 7] \from (*a)[0 .. 7], (*(b+(0 .. 2)))[0 .. 3][0 .. 4]; + assigns (*(b+(0 .. 2)))[0 .. 3][0 .. 4] + \from (*a)[0 .. 7], (*(b+(0 .. 2)))[0 .. 3][0 .. 4]; + */ +extern int main3(int (*a)[8], int (* /*[3]*/ b)[4][5]); + +ts t_main4[1000]; +ts u_main4[100]; +/*@ assigns t_main4[i].f1, u_main4[i].f1; + assigns t_main4[i].f1 \from \nothing; + assigns u_main4[i].f1 \from \nothing; + */ +extern void f_main4_1(int i); + +/*@ assigns t_main4[0 .. 999].f1, u_main4[0 .. 99].f1; + assigns t_main4[0 .. 999].f1 \from \nothing; + assigns u_main4[0 .. 99].f1 \from \nothing; + */ +extern void f_main4_2(); + +void main4(void) +{ + f_main4_1(v); + f_main4_2(); + return; +} + +void main(void) +{ + main1(); + main2(); + main3(t_main3_1,t_main3_2); + main4(); + return; +} + + diff --git a/tests/value/oracle_symblocs/assigns_from.err.oracle b/tests/value/oracle_symblocs/assigns_from.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/assigns_from.res.oracle b/tests/value/oracle_symblocs/assigns_from.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..7a6cf47388369e21e4effc15bb16ac533e72906b --- /dev/null +++ b/tests/value/oracle_symblocs/assigns_from.res.oracle @@ -0,0 +1,661 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/assigns_from.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + u ∈ {0} + v ∈ {0} + k ∈ {0} + a[0..9] ∈ {0} + constante ∈ {2} + t[0..99] ∈ {0} + p_t ∈ {{ &t[0] }} + t17[0..9] ∈ {0} +[value] computing for function main1 <- main. + Called from tests/value/assigns_from.i:203. +[value] computing for function f <- main1 <- main. + Called from tests/value/assigns_from.i:30. +[value] Recording results for f +[from] Computing for function f +[from] Done for function f +[value] Done for function f +[value] Recording results for main1 +[from] Computing for function main1 +[from] Done for function main1 +tests/value/assigns_from.i:12:[value] function main1: assigns got status valid. +tests/value/assigns_from.i:15:[value] function main1, behavior true: assigns got status valid. +tests/value/assigns_from.i:15:[value] function main1, behavior true: \from ... part in assign clause got status valid. +tests/value/assigns_from.i:16:[value] function main1, behavior true: \from ... part in assign clause got status valid. +tests/value/assigns_from.i:19:[value] function main1, behavior ok_too_large: assigns got status valid. +tests/value/assigns_from.i:19:[value] function main1, behavior ok_too_large: \from ... part in assign clause got status valid. +tests/value/assigns_from.i:20:[value] function main1, behavior ok_too_large: \from ... part in assign clause got status valid. +tests/value/assigns_from.i:23:[value] function main1, behavior wrong: assigns got status valid. +tests/value/assigns_from.i:23:[value] function main1, behavior wrong: \from ... part in assign clause got status valid. +tests/value/assigns_from.i:24:[value] warning: function main1, behavior wrong: \from ... part in assign clause got status unknown (cannot validate direct dependencies). +[value] Done for function main1 +[value] computing for function main15 <- main. + Called from tests/value/assigns_from.i:204. +[value] Recording results for main15 +[from] Computing for function main15 +[from] Done for function main15 +tests/value/assigns_from.i:37:[value] function main15: assigns got status valid. +tests/value/assigns_from.i:37:[value] function main15: \from ... part in assign clause got status valid. +tests/value/assigns_from.i:37:[value] function main15: \from ... part in assign clause got status valid. +tests/value/assigns_from.i:37:[value] function main15: \from ... part in assign clause got status valid. +[value] Done for function main15 +[value] computing for function main2 <- main. + Called from tests/value/assigns_from.i:205. +[value] Recording results for main2 +[from] Computing for function main2 +[from] Done for function main2 +tests/value/assigns_from.i:45:[value] function main2: assigns got status valid. +tests/value/assigns_from.i:45:[value] function main2: \from ... part in assign clause got status valid. +tests/value/assigns_from.i:48:[value] function main2, behavior true: assigns got status valid. +tests/value/assigns_from.i:48:[value] function main2, behavior true: \from ... part in assign clause got status valid. +tests/value/assigns_from.i:52:[value] warning: function main2, behavior wrongassigns: assigns got status unknown. +tests/value/assigns_from.i:52:[value] function main2, behavior wrongassigns: \from ... part in assign clause got status valid. +tests/value/assigns_from.i:56:[value] function main2, behavior true2: assigns got status valid. +tests/value/assigns_from.i:56:[value] function main2, behavior true2: \from ... part in assign clause got status valid. +tests/value/assigns_from.i:60:[value] function main2, behavior wrongfrom: assigns got status valid. +tests/value/assigns_from.i:60:[value] warning: function main2, behavior wrongfrom: \from ... part in assign clause got status unknown (cannot validate direct dependencies). +[value] Done for function main2 +[value] computing for function Frama_C_interval <- main. + Called from tests/value/assigns_from.i:206. +[value] using specification for function Frama_C_interval +[value] Done for function Frama_C_interval +[value] computing for function main3 <- main. + Called from tests/value/assigns_from.i:207. +[value] Recording results for main3 +[from] Computing for function main3 +[from] Done for function main3 +tests/value/assigns_from.i:67:[value] function main3: assigns got status valid. +tests/value/assigns_from.i:67:[value] function main3: \from ... part in assign clause got status valid. +[value] Done for function main3 +[value] computing for function main3 <- main. + Called from tests/value/assigns_from.i:208. +[value] Recording results for main3 +[from] Computing for function main3 +[from] Done for function main3 +tests/value/assigns_from.i:67:[value] warning: function main3: assigns got status unknown. +[value] Done for function main3 +[value] computing for function main4 <- main. + Called from tests/value/assigns_from.i:209. +[value] Recording results for main4 +[from] Computing for function main4 +[from] Done for function main4 +tests/value/assigns_from.i:78:[value] function main4, behavior true: assigns got status valid. +tests/value/assigns_from.i:78:[value] function main4, behavior true: \from ... part in assign clause got status valid. +tests/value/assigns_from.i:82:[value] function main4, behavior wrong: assigns got status valid. +tests/value/assigns_from.i:82:[value] warning: function main4, behavior wrong: \from ... part in assign clause got status unknown (cannot validate direct dependencies). +[value] Done for function main4 +[value] computing for function main5 <- main. + Called from tests/value/assigns_from.i:210. +[value] Recording results for main5 +[from] Computing for function main5 +[from] Done for function main5 +tests/value/assigns_from.i:92:[value] function main5, behavior wrong: assigns got status valid. +tests/value/assigns_from.i:92:[value] warning: function main5, behavior wrong: \from ... part in assign clause got status unknown (cannot validate direct dependencies). +tests/value/assigns_from.i:95:[value] function main5, behavior true: assigns got status valid. +tests/value/assigns_from.i:95:[value] function main5, behavior true: \from ... part in assign clause got status valid. +[value] Done for function main5 +[value] computing for function Frama_C_interval <- main. + Called from tests/value/assigns_from.i:211. +[value] Done for function Frama_C_interval +[value] computing for function Frama_C_interval <- main. + Called from tests/value/assigns_from.i:212. +[value] Done for function Frama_C_interval +[value] computing for function main6_right <- main. + Called from tests/value/assigns_from.i:213. +[value] Recording results for main6_right +[from] Computing for function main6_right +[from] Done for function main6_right +tests/value/assigns_from.i:111:[value] function main6_right: assigns got status valid. +[value] Done for function main6_right +[value] computing for function main6_wrong <- main. + Called from tests/value/assigns_from.i:214. +[value] Recording results for main6_wrong +[from] Computing for function main6_wrong +[from] Done for function main6_wrong +tests/value/assigns_from.i:102:[value] warning: function main6_wrong: assigns got status unknown. +[value] Done for function main6_wrong +[value] computing for function main7 <- main. + Called from tests/value/assigns_from.i:215. +[value] Recording results for main7 +[from] Computing for function main7 +[from] Done for function main7 +tests/value/assigns_from.i:119:[value] function main7, behavior right: assigns got status valid. +tests/value/assigns_from.i:122:[value] warning: function main7, behavior wrong: assigns got status unknown. +[value] Done for function main7 +[value] computing for function main8 <- main. + Called from tests/value/assigns_from.i:218. +[value] Recording results for main8 +[from] Computing for function main8 +[from] Done for function main8 +tests/value/assigns_from.i:130:[value] function main8: assigns got status valid. +tests/value/assigns_from.i:130:[value] function main8: \from ... part in assign clause got status valid. +[value] Done for function main8 +[value] computing for function main8 <- main. + Called from tests/value/assigns_from.i:220. +[value] Recording results for main8 +[from] Computing for function main8 +[from] Done for function main8 +tests/value/assigns_from.i:130:[value] warning: function main8: assigns got status unknown. +[value] Done for function main8 +[value] computing for function main9 <- main. + Called from tests/value/assigns_from.i:222. +[value] Recording results for main9 +[from] Computing for function main9 +[from] Done for function main9 +tests/value/assigns_from.i:141:[kernel] warning: using size of 'void' +tests/value/assigns_from.i:135:[value] function main9: assigns got status valid. +[value] Done for function main9 +[value] computing for function main10 <- main. + Called from tests/value/assigns_from.i:223. +tests/value/assigns_from.i:152:[value] entering loop for the first time +[value] computing for function c <- main10 <- main. + Called from tests/value/assigns_from.i:152. +tests/value/assigns_from.i:152:[kernel] warning: Neither code nor specification for function c, generating default assigns from the prototype +[value] using specification for function c +[value] Done for function c +[value] computing for function c <- main10 <- main. + Called from tests/value/assigns_from.i:152. +[value] Done for function c +[value] computing for function c <- main10 <- main. + Called from tests/value/assigns_from.i:152. +[value] Done for function c +[value] computing for function c <- main10 <- main. + Called from tests/value/assigns_from.i:152. +[value] Done for function c +[value] computing for function c <- main10 <- main. + Called from tests/value/assigns_from.i:152. +[value] Done for function c +tests/value/assigns_from.i:154:[value] warning: assertion got status unknown. +[value] Recording results for main10 +[from] Computing for function main10 +[from] Done for function main10 +[value] Done for function main10 +[value] computing for function main11 <- main. + Called from tests/value/assigns_from.i:224. +[value] Recording results for main11 +[from] Computing for function main11 +[from] Done for function main11 +tests/value/assigns_from.i:157:[value] function main11: assigns got status valid. +tests/value/assigns_from.i:157:[value] function main11: \from ... part in assign clause got status valid. +[value] Done for function main11 +[value] computing for function main11 <- main. + Called from tests/value/assigns_from.i:225. +[value] Recording results for main11 +[from] Computing for function main11 +[from] Done for function main11 +tests/value/assigns_from.i:157:[value] warning: function main11: assigns got status unknown. +tests/value/assigns_from.i:157:[value] warning: function main11: \from ... part in assign clause got status unknown (cannot validate direct dependencies). +[value] Done for function main11 +[value] computing for function Frama_C_interval <- main. + Called from tests/value/assigns_from.i:226. +[value] Done for function Frama_C_interval +[value] computing for function main11 <- main. + Called from tests/value/assigns_from.i:226. +[value] Recording results for main11 +[from] Computing for function main11 +[from] Done for function main11 +[value] Done for function main11 +[value] computing for function main12 <- main. + Called from tests/value/assigns_from.i:227. +[value] Recording results for main12 +[from] Computing for function main12 +[from] Done for function main12 +tests/value/assigns_from.i:169:[value] function main12, behavior ok: assigns got status valid. +tests/value/assigns_from.i:167:[value] function main12, behavior ok: \from ... part in assign clause got status valid. +[value] Done for function main12 +[value] computing for function main13 <- main. + Called from tests/value/assigns_from.i:228. +[value] Recording results for main13 +[from] Computing for function main13 +[from] Done for function main13 +tests/value/assigns_from.i:179:[value] function main13, behavior ok: assigns got status valid. +tests/value/assigns_from.i:174:[value] function main13, behavior ok: \from ... part in assign clause got status valid. +tests/value/assigns_from.i:179:[value] function main13, behavior bad: assigns got status valid. +tests/value/assigns_from.i:177:[value] warning: function main13, behavior bad: \from ... part in assign clause got status unknown (cannot validate direct dependencies). +[value] Done for function main13 +[value] computing for function main14 <- main. + Called from tests/value/assigns_from.i:229. +tests/value/assigns_from.i:183:[value] entering loop for the first time +[value] Recording results for main14 +[from] Computing for function main14 +[from] Done for function main14 +tests/value/assigns_from.i:181:[value] function main14: assigns got status valid. +tests/value/assigns_from.i:181:[value] warning: function main14: \from ... part in assign clause got status unknown (cannot validate direct dependencies). +[value] Done for function main14 +[value] computing for function main16 <- main. + Called from tests/value/assigns_from.i:230. +tests/value/assigns_from.i:188:[value] entering loop for the first time +[value] Recording results for main16 +[from] Computing for function main16 +[from] Done for function main16 +tests/value/assigns_from.i:186:[value] function main16: assigns got status valid. +tests/value/assigns_from.i:186:[value] warning: function main16: \from ... part in assign clause got status unknown (cannot validate direct dependencies). +[value] Done for function main16 +[value] computing for function main17 <- main. + Called from tests/value/assigns_from.i:231. +tests/value/assigns_from.i:195:[value] entering loop for the first time +[value] Recording results for main17 +[from] Computing for function main17 +[from] Done for function main17 +tests/value/assigns_from.i:193:[value] function main17: assigns got status valid. +tests/value/assigns_from.i:193:[value] warning: function main17: \from ... part in assign clause got status unknown (cannot validate direct and indirect dependencies). +[value] Done for function main17 +[value] Recording results for main +[from] Computing for function main +[from] Done for function main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + k ∈ {0} +[value:final-states] Values at end of function main1: + u ∈ {0} + k ∈ {3} +[value:final-states] Values at end of function main10: + t10[0..13] ∈ {3} or UNINITIALIZED + [14..37] ∈ {3} + [38..49] ∈ {3} or UNINITIALIZED + i ∈ {50} +[value:final-states] Values at end of function main11: + a[0..1] ∈ {0; 3} + [2] ∈ {3} + [3..8] ∈ {0} + [9] ∈ {0; 3} +[value:final-states] Values at end of function main12: + __retres ∈ {{ &t[0] }} +[value:final-states] Values at end of function main13: + +[value:final-states] Values at end of function main14: + t[0..1] ∈ {0} + [2..38] ∈ [0..38] + [39..99] ∈ {0} + i ∈ {39} +[value:final-states] Values at end of function main15: + a[0..2] ∈ {0} + [3] ∈ {2} + [4] ∈ {3} + [5] ∈ {4} + [6..9] ∈ {0} +[value:final-states] Values at end of function main16: + t[0] ∈ {0} + [1] ∈ [0..19] + [2..38] ∈ [0..38] + [39..99] ∈ {0} + i ∈ {20} +[value:final-states] Values at end of function main17: + t17[0][bits 0 to 7] ∈ [0..9] + [0][bits 8 to 31] ∈ {0} + [1][bits 0 to 7] ∈ [0..9] + [1][bits 8 to 31] ∈ {0} + [2][bits 0 to 7] ∈ [0..9] + [2][bits 8 to 31] ∈ {0} + [3][bits 0 to 7] ∈ [0..9] + [3][bits 8 to 31] ∈ {0} + [4][bits 0 to 7] ∈ [0..9] + [4][bits 8 to 31] ∈ {0} + [5][bits 0 to 7] ∈ [0..9] + [5][bits 8 to 31] ∈ {0} + [6][bits 0 to 7] ∈ [0..9] + [6][bits 8 to 31] ∈ {0} + [7][bits 0 to 7] ∈ [0..9] + [7][bits 8 to 31] ∈ {0} + [8][bits 0 to 7] ∈ [0..9] + [8][bits 8 to 31] ∈ {0} + [9][bits 0 to 7] ∈ [0..9] + [9][bits 8 to 31] ∈ {0} + j ∈ [10..2147483647] +[value:final-states] Values at end of function main2: + a[0..2] ∈ {0} + [3] ∈ {2} + [4] ∈ {3} + [5] ∈ {4} + [6..9] ∈ {0} +[value:final-states] Values at end of function main3: + a[0..2] ∈ {0; 3} + [3] ∈ {2; 3} + [4] ∈ {3} + [5] ∈ {3; 4} + [6] ∈ {3} + [7..9] ∈ {0; 3} +[value:final-states] Values at end of function main4: + a[0..1] ∈ {0; 3} + [2] ∈ {3} + [3] ∈ {2; 3} + [4] ∈ {3} + [5] ∈ {3; 4} + [6] ∈ {3} + [7..9] ∈ {0; 3} +[value:final-states] Values at end of function main5: + a[0..1] ∈ {0; 3} + [2] ∈ {3} + [3] ∈ {2; 3} + [4] ∈ {3} + [5] ∈ {3; 4} + [6] ∈ {3} + [7..9] ∈ {0; 3} +[value:final-states] Values at end of function main6_right: + a[0..1] ∈ {0; 3} + [2] ∈ {3} + [3..5] ∈ {0} + [6] ∈ {3} + [7..9] ∈ {0; 3} +[value:final-states] Values at end of function main6_wrong: + a[0..1] ∈ {0; 3} + [2..6] ∈ {0} + [7..9] ∈ {0; 3} +[value:final-states] Values at end of function main7: + a[0..1] ∈ {0; 3} + [2..8] ∈ {0} + [9] ∈ {0; 3} +[value:final-states] Values at end of function main8: + c_0 ∈ {4} + d ∈ {4} or UNINITIALIZED +[value:final-states] Values at end of function main9: + +[value:final-states] Values at end of function main: + u ∈ {0} + k ∈ {3} + a[0..1] ∈ {0; 3} + [2] ∈ {3} + [3..8] ∈ {0} + [9] ∈ {0; 3} + constante ∈ {2} + t[0] ∈ {0} + [1] ∈ [0..19] + [2..38] ∈ [0..38] + [39..99] ∈ {0} + t17[0][bits 0 to 7] ∈ [0..9] + [0][bits 8 to 31] ∈ {0} + [1][bits 0 to 7] ∈ [0..9] + [1][bits 8 to 31] ∈ {0} + [2][bits 0 to 7] ∈ [0..9] + [2][bits 8 to 31] ∈ {0} + [3][bits 0 to 7] ∈ [0..9] + [3][bits 8 to 31] ∈ {0} + [4][bits 0 to 7] ∈ [0..9] + [4][bits 8 to 31] ∈ {0} + [5][bits 0 to 7] ∈ [0..9] + [5][bits 8 to 31] ∈ {0} + [6][bits 0 to 7] ∈ [0..9] + [6][bits 8 to 31] ∈ {0} + [7][bits 0 to 7] ∈ [0..9] + [7][bits 8 to 31] ∈ {0} + [8][bits 0 to 7] ∈ [0..9] + [8][bits 8 to 31] ∈ {0} + [9][bits 0 to 7] ∈ [0..9] + [9][bits 8 to 31] ∈ {0} + j ∈ [0..9] + a_0 ∈ {0; 1; 2; 3} + b ∈ {6; 7; 8; 9} + c_0 ∈ {4} + d ∈ {4} or UNINITIALIZED + p ∈ {{ &c_0 ; &d }} +[from] Computing for function f +[from] Done for function f +[from] Computing for function main1 +[from] Done for function main1 +[from] Computing for function main10 +[from] Computing for function c <-main10 +[from] Done for function c +[from] Done for function main10 +[from] Computing for function main11 +[from] Done for function main11 +[from] Computing for function main12 +[from] Done for function main12 +[from] Computing for function main13 +[from] Done for function main13 +[from] Computing for function main14 +[from] Done for function main14 +[from] Computing for function main15 +[from] Done for function main15 +[from] Computing for function main16 +[from] Done for function main16 +[from] Computing for function main17 +[from] Done for function main17 +[from] Computing for function main2 +[from] Done for function main2 +[from] Computing for function main3 +[from] Done for function main3 +[from] Computing for function main4 +[from] Done for function main4 +[from] Computing for function main5 +[from] Done for function main5 +[from] Computing for function main6_right +[from] Done for function main6_right +[from] Computing for function main6_wrong +[from] Done for function main6_wrong +[from] Computing for function main7 +[from] Done for function main7 +[from] Computing for function main8 +[from] Done for function main8 +[from] Computing for function main9 +[from] Done for function main9 +[from] Computing for function main +[from] Computing for function Frama_C_interval <-main +[from] Done for function Frama_C_interval +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function Frama_C_interval: + \result FROM a; b +[from] Function c: + \result FROM \nothing +[from] Function f: + k FROM u +[from] Function main1: + u FROM v + k FROM \nothing +[from] Function main10: + NO EFFECTS +[from] Function main11: + a[2] FROM \nothing +[from] Function main12: + \result FROM \nothing +[from] Function main13: + \result FROM p_t +[from] Function main14: + t[2..38] FROM \nothing (and SELF) +[from] Function main15: + a[3..5] FROM \nothing +[from] Function main16: + t[1..19] FROM \nothing (and SELF) +[from] Function main17: + t17{[0][bits 0 to 7]; [1][bits 0 to 7]; [2][bits 0 to 7]; [3][bits 0 to 7]; + [4][bits 0 to 7]; [5][bits 0 to 7]; [6][bits 0 to 7]; [7][bits 0 to 7]; + [8][bits 0 to 7]; [9][bits 0 to 7]} + FROM p; i (and SELF) +[from] Function main2: + a[3..5] FROM \nothing +[from] Function main3: + a[0..9] FROM i (and SELF) +[from] Function main4: + a[2] FROM \nothing +[from] Function main5: + a[2] FROM a[4] +[from] Function main6_right: + a[3..5] FROM \nothing +[from] Function main6_wrong: + a[2..6] FROM \nothing +[from] Function main7: + a{[2]; [7..8]} FROM \nothing +[from] Function main8: + c_0 FROM p (and SELF) + d FROM p (and SELF) +[from] Function main9: + NO EFFECTS +[from] Function main: + u FROM v + k FROM \nothing + a{[0..1]; [9]} FROM \nothing (and SELF) + [2..8] FROM \nothing + constante FROM \nothing + t[1..38] FROM \nothing (and SELF) + t17{[0][bits 0 to 7]; [1][bits 0 to 7]; [2][bits 0 to 7]; [3][bits 0 to 7]; + [4][bits 0 to 7]; [5][bits 0 to 7]; [6][bits 0 to 7]; [7][bits 0 to 7]; + [8][bits 0 to 7]; [9][bits 0 to 7]} + FROM \nothing (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[from] ====== DISPLAYING CALLWISE DEPENDENCIES ====== +[from] call to f at tests/value/assigns_from.i:30 (by main1): + k FROM u +[from] call to c at tests/value/assigns_from.i:152 (by main10): + \result FROM \nothing +[from] call to main1 at tests/value/assigns_from.i:203 (by main): + u FROM v + k FROM \nothing +[from] call to main15 at tests/value/assigns_from.i:204 (by main): + a[3..5] FROM \nothing +[from] call to main2 at tests/value/assigns_from.i:205 (by main): + a[3..5] FROM \nothing +[from] call to Frama_C_interval at tests/value/assigns_from.i:206 (by main): + \result FROM a; b +[from] call to main3 at tests/value/assigns_from.i:207 (by main): + a[6] FROM i +[from] call to main3 at tests/value/assigns_from.i:208 (by main): + a[0..9] FROM i (and SELF) +[from] call to main4 at tests/value/assigns_from.i:209 (by main): + a[2] FROM \nothing +[from] call to main5 at tests/value/assigns_from.i:210 (by main): + a[2] FROM a[4] +[from] call to Frama_C_interval at tests/value/assigns_from.i:211 (by main): + \result FROM a; b +[from] call to Frama_C_interval at tests/value/assigns_from.i:212 (by main): + \result FROM a; b +[from] call to main6_right at tests/value/assigns_from.i:213 (by main): + a[3..5] FROM \nothing +[from] call to main6_wrong at tests/value/assigns_from.i:214 (by main): + a[2..6] FROM \nothing +[from] call to main7 at tests/value/assigns_from.i:215 (by main): + a{[2]; [7..8]} FROM \nothing +[from] call to main8 at tests/value/assigns_from.i:218 (by main): + c_0 FROM p +[from] call to main8 at tests/value/assigns_from.i:220 (by main): + c_0 FROM p (and SELF) + d FROM p (and SELF) +[from] call to main9 at tests/value/assigns_from.i:222 (by main): + NO EFFECTS +[from] call to main10 at tests/value/assigns_from.i:223 (by main): + NO EFFECTS +[from] call to main11 at tests/value/assigns_from.i:224 (by main): + a[2] FROM \nothing +[from] call to main11 at tests/value/assigns_from.i:225 (by main): + a[2] FROM \nothing +[from] call to main11 at tests/value/assigns_from.i:226 (by main): + a[2] FROM \nothing +[from] call to Frama_C_interval at tests/value/assigns_from.i:226 (by main): + \result FROM a; b +[from] call to main12 at tests/value/assigns_from.i:227 (by main): + \result FROM \nothing +[from] call to main13 at tests/value/assigns_from.i:228 (by main): + \result FROM p_t +[from] call to main14 at tests/value/assigns_from.i:229 (by main): + t[2..38] FROM \nothing (and SELF) +[from] call to main16 at tests/value/assigns_from.i:230 (by main): + t[1..19] FROM \nothing (and SELF) +[from] call to main17 at tests/value/assigns_from.i:231 (by main): + t17{[0][bits 0 to 7]; [1][bits 0 to 7]; [2][bits 0 to 7]; [3][bits 0 to 7]; + [4][bits 0 to 7]; [5][bits 0 to 7]; [6][bits 0 to 7]; [7][bits 0 to 7]; + [8][bits 0 to 7]; [9][bits 0 to 7]} + FROM p; i (and SELF) +[from] entry point: + u FROM v + k FROM \nothing + a{[0..1]; [9]} FROM \nothing (and SELF) + [2..8] FROM \nothing + constante FROM \nothing + t[1..38] FROM \nothing (and SELF) + t17{[0][bits 0 to 7]; [1][bits 0 to 7]; [2][bits 0 to 7]; [3][bits 0 to 7]; + [4][bits 0 to 7]; [5][bits 0 to 7]; [6][bits 0 to 7]; [7][bits 0 to 7]; + [8][bits 0 to 7]; [9][bits 0 to 7]} + FROM \nothing (and SELF) +[from] ====== END OF CALLWISE DEPENDENCIES ====== +[inout] Out (internal) for function f: + k +[inout] Inputs for function f: + u +[inout] Out (internal) for function main1: + u; k +[inout] Inputs for function main1: + u; v +[inout] Out (internal) for function main10: + t10[0..49]; i; tmp +[inout] Inputs for function main10: + \nothing +[inout] Out (internal) for function main11: + a[2] +[inout] Inputs for function main11: + \nothing +[inout] Out (internal) for function main12: + __retres +[inout] Inputs for function main12: + \nothing +[inout] Out (internal) for function main13: + \nothing +[inout] Inputs for function main13: + p_t +[inout] Out (internal) for function main14: + t[2..38]; i +[inout] Inputs for function main14: + \nothing +[inout] Out (internal) for function main15: + a[3..5] +[inout] Inputs for function main15: + \nothing +[inout] Out (internal) for function main16: + t[1..19]; i +[inout] Inputs for function main16: + \nothing +[inout] Out (internal) for function main17: + t17{[0][bits 0 to 7]; [1][bits 0 to 7]; [2][bits 0 to 7]; [3][bits 0 to 7]; + [4][bits 0 to 7]; [5][bits 0 to 7]; [6][bits 0 to 7]; [7][bits 0 to 7]; + [8][bits 0 to 7]; [9][bits 0 to 7]}; j +[inout] Inputs for function main17: + \nothing +[inout] Out (internal) for function main2: + a[3..5] +[inout] Inputs for function main2: + \nothing +[inout] Out (internal) for function main3: + a[0..9] +[inout] Inputs for function main3: + \nothing +[inout] Out (internal) for function main4: + a[2] +[inout] Inputs for function main4: + \nothing +[inout] Out (internal) for function main5: + a[2] +[inout] Inputs for function main5: + a[4] +[inout] Out (internal) for function main6_right: + a[3..5] +[inout] Inputs for function main6_right: + \nothing +[inout] Out (internal) for function main6_wrong: + a[2..6] +[inout] Inputs for function main6_wrong: + \nothing +[inout] Out (internal) for function main7: + a{[2]; [7..8]} +[inout] Inputs for function main7: + \nothing +[inout] Out (internal) for function main8: + c_0; d +[inout] Inputs for function main8: + \nothing +[inout] Out (internal) for function main9: + \nothing +[inout] Inputs for function main9: + \nothing +[inout] Out (internal) for function main: + u; k; a[0..9]; constante; t[1..38]; + t17{[0][bits 0 to 7]; [1][bits 0 to 7]; [2][bits 0 to 7]; [3][bits 0 to 7]; + [4][bits 0 to 7]; [5][bits 0 to 7]; [6][bits 0 to 7]; [7][bits 0 to 7]; + [8][bits 0 to 7]; [9][bits 0 to 7]}; j; a_0; b; c_0; d; p; tmp_2; + tmp_3 +[inout] Inputs for function main: + u; v; a[4]; p_t diff --git a/tests/value/oracle_symblocs/assigns_from_direct.err.oracle b/tests/value/oracle_symblocs/assigns_from_direct.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/assigns_from_direct.res.oracle b/tests/value/oracle_symblocs/assigns_from_direct.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..c4133b5029de69d36ce11e3f7dc337bd7d9fef87 --- /dev/null +++ b/tests/value/oracle_symblocs/assigns_from_direct.res.oracle @@ -0,0 +1,130 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/assigns_from_direct.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] computing for function f_valid <- main. + Called from tests/value/assigns_from_direct.i:14. +[value] Recording results for f_valid +[from] Computing for function f_valid +[from] Done for function f_valid +tests/value/assigns_from_direct.i:21:[value] function f_valid: assigns got status valid. +tests/value/assigns_from_direct.i:21:[value] function f_valid: \from ... part in assign clause got status valid. +[value] Done for function f_valid +[value] computing for function f_invalid_direct <- main. + Called from tests/value/assigns_from_direct.i:15. +[value] Recording results for f_invalid_direct +[from] Computing for function f_invalid_direct +[from] Done for function f_invalid_direct +tests/value/assigns_from_direct.i:30:[value] function f_invalid_direct: assigns got status valid. +tests/value/assigns_from_direct.i:30:[value] warning: function f_invalid_direct: \from ... part in assign clause got status unknown (cannot validate direct dependencies). +[value] Done for function f_invalid_direct +[value] computing for function f_invalid_address <- main. + Called from tests/value/assigns_from_direct.i:16. +[value] Recording results for f_invalid_address +[from] Computing for function f_invalid_address +[from] Done for function f_invalid_address +tests/value/assigns_from_direct.i:39:[value] function f_invalid_address: assigns got status valid. +tests/value/assigns_from_direct.i:39:[value] warning: function f_invalid_address: \from ... part in assign clause got status unknown (cannot validate indirect dependencies). +[value] Done for function f_invalid_address +[value] computing for function f_invalid_condition <- main. + Called from tests/value/assigns_from_direct.i:17. +[value] Recording results for f_invalid_condition +[from] Computing for function f_invalid_condition +[from] Done for function f_invalid_condition +tests/value/assigns_from_direct.i:48:[value] function f_invalid_condition: assigns got status valid. +tests/value/assigns_from_direct.i:48:[value] warning: function f_invalid_condition: \from ... part in assign clause got status unknown (cannot validate indirect dependencies). +[value] Done for function f_invalid_condition +[value] computing for function f_invalid_all <- main. + Called from tests/value/assigns_from_direct.i:18. +[value] Recording results for f_invalid_all +[from] Computing for function f_invalid_all +[from] Done for function f_invalid_all +tests/value/assigns_from_direct.i:57:[value] function f_invalid_all: assigns got status valid. +tests/value/assigns_from_direct.i:57:[value] warning: function f_invalid_all: \from ... part in assign clause got status unknown (cannot validate direct and indirect dependencies). +[value] Done for function f_invalid_all +[value] Recording results for main +[from] Computing for function main +[from] Done for function main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f_invalid_address: + y ∈ {3} +[value:final-states] Values at end of function f_invalid_all: + y ∈ {3} +[value:final-states] Values at end of function f_invalid_condition: + y ∈ {3} +[value:final-states] Values at end of function f_invalid_direct: + y ∈ {3} +[value:final-states] Values at end of function f_valid: + y ∈ {3} +[value:final-states] Values at end of function main: + x ∈ {3} + y ∈ {3} +[from] Computing for function f_invalid_address +[from] Done for function f_invalid_address +[from] Computing for function f_invalid_all +[from] Done for function f_invalid_all +[from] Computing for function f_invalid_condition +[from] Done for function f_invalid_condition +[from] Computing for function f_invalid_direct +[from] Done for function f_invalid_direct +[from] Computing for function f_valid +[from] Done for function f_valid +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f_invalid_address: + y FROM a; b; c +[from] Function f_invalid_all: + y FROM a; b; c +[from] Function f_invalid_condition: + y FROM a; b; c +[from] Function f_invalid_direct: + y FROM a; b; c +[from] Function f_valid: + y FROM a; b; c +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[from] ====== DISPLAYING CALLWISE DEPENDENCIES ====== +[from] call to f_valid at tests/value/assigns_from_direct.i:14 (by main): + y FROM a; b; c +[from] call to f_invalid_direct at tests/value/assigns_from_direct.i:15 (by main): + y FROM a; b; c +[from] call to f_invalid_address at tests/value/assigns_from_direct.i:16 (by main): + y FROM a; b; c +[from] call to f_invalid_condition at tests/value/assigns_from_direct.i:17 (by main): + y FROM a; b; c +[from] call to f_invalid_all at tests/value/assigns_from_direct.i:18 (by main): + y FROM a; b; c +[from] entry point: + NO EFFECTS +[from] ====== END OF CALLWISE DEPENDENCIES ====== +[inout] Out (internal) for function f_invalid_address: + y +[inout] Inputs for function f_invalid_address: + \nothing +[inout] Out (internal) for function f_invalid_all: + y +[inout] Inputs for function f_invalid_all: + \nothing +[inout] Out (internal) for function f_invalid_condition: + y +[inout] Inputs for function f_invalid_condition: + \nothing +[inout] Out (internal) for function f_invalid_direct: + y +[inout] Inputs for function f_invalid_direct: + \nothing +[inout] Out (internal) for function f_valid: + y +[inout] Inputs for function f_valid: + \nothing +[inout] Out (internal) for function main: + x; y +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/attribute-aligned.err.oracle b/tests/value/oracle_symblocs/attribute-aligned.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/attribute-aligned.res.oracle b/tests/value/oracle_symblocs/attribute-aligned.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..2c16c28198ceafac3b67376718134ac79b91a037 --- /dev/null +++ b/tests/value/oracle_symblocs/attribute-aligned.res.oracle @@ -0,0 +1,151 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/attribute-aligned.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + S ∈ {0} + A ∈ {0} + B ∈ {0} +[value] computing for function ct <- main. + Called from tests/value/attribute-aligned.c:94. +[value] Recording results for ct +[value] Done for function ct +[value] computing for function dt <- main. + Called from tests/value/attribute-aligned.c:95. +[value] Recording results for dt +[value] Done for function dt +[value] computing for function pt <- main. + Called from tests/value/attribute-aligned.c:96. +[value] Recording results for pt +[value] Done for function pt +[value] computing for function qt <- main. + Called from tests/value/attribute-aligned.c:97. +[value] Recording results for qt +[value] Done for function qt +[value] computing for function rt <- main. + Called from tests/value/attribute-aligned.c:98. +[value] Recording results for rt +[value] Done for function rt +[value] computing for function st <- main. + Called from tests/value/attribute-aligned.c:99. +[value] Recording results for st +[value] Done for function st +[value] computing for function tt <- main. + Called from tests/value/attribute-aligned.c:100. +[value] Recording results for tt +[value] Done for function tt +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function ct: + S ∈ {1} + A ∈ {0} +[value:final-states] Values at end of function dt: + S ∈ {4} + A ∈ {0} +[value:final-states] Values at end of function pt: + S ∈ {4} + A ∈ {0} +[value:final-states] Values at end of function qt: + S ∈ {4} + A ∈ {0} + B ∈ {1} +[value:final-states] Values at end of function rt: + S ∈ {8} + A ∈ {0} + B ∈ {4} +[value:final-states] Values at end of function st: + S ∈ {8} + A ∈ {0} + B ∈ {4} +[value:final-states] Values at end of function tt: + S ∈ {4} + A ∈ {0} + B ∈ {4} +[value:final-states] Values at end of function main: + S ∈ {4} + A ∈ {0} + B ∈ {4} + __retres ∈ {0} +[from] Computing for function ct +[from] Done for function ct +[from] Computing for function dt +[from] Done for function dt +[from] Computing for function pt +[from] Done for function pt +[from] Computing for function qt +[from] Done for function qt +[from] Computing for function rt +[from] Done for function rt +[from] Computing for function st +[from] Done for function st +[from] Computing for function tt +[from] Done for function tt +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function ct: + S FROM \nothing + A FROM \nothing +[from] Function dt: + S FROM \nothing + A FROM \nothing +[from] Function pt: + S FROM \nothing + A FROM \nothing +[from] Function qt: + S FROM \nothing + A FROM \nothing + B FROM \nothing +[from] Function rt: + S FROM \nothing + A FROM \nothing + B FROM \nothing +[from] Function st: + S FROM \nothing + A FROM \nothing + B FROM \nothing +[from] Function tt: + S FROM \nothing + A FROM \nothing + B FROM \nothing +[from] Function main: + S FROM \nothing + A FROM \nothing + B FROM \nothing + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function ct: + S; A +[inout] Inputs for function ct: + \nothing +[inout] Out (internal) for function dt: + S; A +[inout] Inputs for function dt: + \nothing +[inout] Out (internal) for function pt: + S; A +[inout] Inputs for function pt: + \nothing +[inout] Out (internal) for function qt: + S; A; B +[inout] Inputs for function qt: + \nothing +[inout] Out (internal) for function rt: + S; A; B +[inout] Inputs for function rt: + \nothing +[inout] Out (internal) for function st: + S; A; B +[inout] Inputs for function st: + \nothing +[inout] Out (internal) for function tt: + S; A; B +[inout] Inputs for function tt: + \nothing +[inout] Out (internal) for function main: + S; A; B; __retres +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/automalloc.err.oracle b/tests/value/oracle_symblocs/automalloc.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/automalloc.res.oracle b/tests/value/oracle_symblocs/automalloc.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..478ef1f780168989ef5da236c499ad979c7bc0b5 --- /dev/null +++ b/tests/value/oracle_symblocs/automalloc.res.oracle @@ -0,0 +1,56 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/automalloc.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] computing for function malloc <- main. + Called from tests/value/automalloc.i:10. +tests/value/automalloc.i:10:[kernel] warning: Neither code nor specification for function malloc, generating default assigns from the prototype +[value] using specification for function malloc +[value] Done for function malloc +[value] computing for function realloc <- main. + Called from tests/value/automalloc.i:11. +tests/value/automalloc.i:11:[kernel] warning: Neither code nor specification for function realloc, generating default assigns from the prototype +[value] using specification for function realloc +[value] Done for function realloc +tests/value/automalloc.i:13:[value] warning: out of bounds write. assert \valid(buf+1); +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + test ∈ [--..--] + buf ∈ + {{ NULL + [--..--] ; &alloced_return_malloc + [0..2147483647] ; + &alloced_return_realloc + [0..2147483647] }} + alloced_return_malloc[bits 0 to ..] ∈ + {{ garbled mix of &{alloced_return_malloc} + (origin: Library function + {tests/value/automalloc.i:10}) }} + alloced_return_realloc[bits 0 to ..] ∈ + {{ garbled mix of &{alloced_return_realloc} + (origin: Library function + {tests/value/automalloc.i:11}) }} +[from] Computing for function main +[from] Computing for function malloc <-main +[from] Done for function malloc +[from] Computing for function realloc <-main +[from] Done for function realloc +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function malloc: + \result FROM s +[from] Function realloc: + test FROM s; test (and SELF) + \result FROM s; test +[from] Function main: + alloced_return_malloc[bits 8 to 17179869191] FROM test (and SELF) + alloced_return_realloc[bits 8 to 17179869191] FROM test (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + test; buf; alloced_return_malloc[bits 8 to 17179869191]; + alloced_return_realloc[bits 8 to 17179869191] +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/backward_add_ptr.err.oracle b/tests/value/oracle_symblocs/backward_add_ptr.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/backward_add_ptr.res.oracle b/tests/value/oracle_symblocs/backward_add_ptr.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..a10c0b2014577e25c313814191cdf5cba52d3aa8 --- /dev/null +++ b/tests/value/oracle_symblocs/backward_add_ptr.res.oracle @@ -0,0 +1,289 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/backward_add_ptr.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + a ∈ {0} + b ∈ {1} + c ∈ {2} + p ∈ {0} + q ∈ {0} + v ∈ {0} + w ∈ {0} + rand ∈ [--..--] +[value] computing for function main1 <- main. + Called from tests/value/backward_add_ptr.c:185. +tests/value/backward_add_ptr.c:25:[value] warning: out of bounds read. assert \valid_read(p+(unsigned int)q); +[value] Called Frama_C_show_each_only_a({0; 1}, {{ &a }}, {0}) +tests/value/backward_add_ptr.c:32:[value] warning: out of bounds read. assert \valid_read((char *)p+(unsigned int)q); +[value] Called Frama_C_show_each_reduced_offset({0; 1}, + {{ NULL + {0; 1; 2; 3} ; &a }}, + {{ NULL + {0; 1; 2; 3} ; &b }}) +tests/value/backward_add_ptr.c:38:[value] warning: out of bounds read. assert \valid_read(p+(unsigned int)((unsigned int)q/4)); +[value] Called Frama_C_show_each_no_reduction({0; 1}, + {{ NULL + [0..4294967295] ; &a }}, + {{ NULL + [0..4294967295] ; &b }}) +[value] Recording results for main1 +[value] Done for function main1 +[value] computing for function main2 <- main. + Called from tests/value/backward_add_ptr.c:186. +tests/value/backward_add_ptr.c:54:[value] warning: out of bounds read. assert \valid_read((int *)((char *)p+(unsigned int)q)); +[value] Called Frama_C_show_each_int_if({{ &a }}, {0}) +[value] Called Frama_C_show_each_int_else({0}, {{ &b }}) +tests/value/backward_add_ptr.c:60:[value] warning: out of bounds read. assert \valid_read((char *)p+(unsigned int)q); +[value] Called Frama_C_show_each_char_if({{ NULL + {1; 2; 3} ; &a }}, + {{ NULL + {0; 1; 2; 3} ; &b }}) +[value] Called Frama_C_show_each_char_else({0}, {{ &b }}) +[value] Recording results for main2 +[value] Done for function main2 +[value] computing for function main3 <- main. + Called from tests/value/backward_add_ptr.c:187. +[value] computing for function gm <- main3 <- main. + Called from tests/value/backward_add_ptr.c:75. +tests/value/backward_add_ptr.c:68:[value] Assigning imprecise value to __retres. + The imprecision originates from Arithmetic + {tests/value/backward_add_ptr.c:68} +[value] Recording results for gm +[value] Done for function gm +tests/value/backward_add_ptr.c:81:[value] warning: out of bounds read. assert \valid_read(p+(unsigned int)q); +[value] Called Frama_C_show_each_GM_only_a({{ &a + [-17179869180..0],0%4 }}, + [0..4294967295]) +tests/value/backward_add_ptr.c:87:[value] warning: out of bounds read. assert \valid_read((char *)p+(unsigned int)q); +[value] Called Frama_C_show_each_GM_reduce_p_offset({{ NULL + {0; 1; 2; 3} ; + &a + [-4294967295..3] }}, + {{ NULL + [0..4294967295] ; &b }}) +[value] computing for function gm <- main3 <- main. + Called from tests/value/backward_add_ptr.c:91. +[value] Recording results for gm +[value] Done for function gm +tests/value/backward_add_ptr.c:96:[value] warning: out of bounds read. assert \valid_read(p+(unsigned int)q); +[value] computing for function gm <- main3 <- main. + Called from tests/value/backward_add_ptr.c:100. +[value] Recording results for gm +[value] Done for function gm +tests/value/backward_add_ptr.c:106:[value] warning: out of bounds read. assert \valid_read(p+(unsigned int)q); +tests/value/backward_add_ptr.c:107:[value] Reading left-value p. + It contains a garbled mix of {a; b} because of Arithmetic + {tests/value/backward_add_ptr.c:68}. +[value] Called Frama_C_show_each_GM_no_reduction({{ garbled mix of &{a; b} + (origin: Arithmetic + {tests/value/backward_add_ptr.c:68}) }}, + {{ NULL + [0..4294967295] ; &b }}) +[value] computing for function gm <- main3 <- main. + Called from tests/value/backward_add_ptr.c:110. +[value] Recording results for gm +[value] Done for function gm +tests/value/backward_add_ptr.c:115:[value] warning: out of bounds read. assert \valid_read((char *)p+(unsigned int)q); +[value] Called Frama_C_show_each_GM_only_c({0}, {{ &c }}) +tests/value/backward_add_ptr.c:121:[value] warning: out of bounds read. assert \valid_read(p+(unsigned int)q); +[value] Called Frama_C_show_each_GM_only_b({{ &b + [-17179869180..0],0%4 }}, + [0..4294967295]) +[value] computing for function gm <- main3 <- main. + Called from tests/value/backward_add_ptr.c:125. +[value] Recording results for gm +[value] Done for function gm +tests/value/backward_add_ptr.c:130:[value] warning: out of bounds read. assert \valid_read((char *)p+(unsigned int)q); +tests/value/backward_add_ptr.c:136:[value] warning: out of bounds read. assert \valid_read((char *)p+(unsigned int)q); +tests/value/backward_add_ptr.c:137:[value] Reading left-value p. + It contains a garbled mix of {b} because of Arithmetic + {tests/value/backward_add_ptr.c:68}. +[value] Called Frama_C_show_each_GM_only_b_and_gm({{ garbled mix of &{b} + (origin: Arithmetic + {tests/value/backward_add_ptr.c:68}) }}, + {{ NULL + [0..4294967295] ; &b }}) +[value] Recording results for main3 +[value] Done for function main3 +[value] computing for function main4 <- main. + Called from tests/value/backward_add_ptr.c:188. +[value] computing for function gm <- main4 <- main. + Called from tests/value/backward_add_ptr.c:145. +[value] Recording results for gm +[value] Done for function gm +[value] computing for function gm <- main4 <- main. + Called from tests/value/backward_add_ptr.c:146. +[value] Recording results for gm +[value] Done for function gm +tests/value/backward_add_ptr.c:150:[value] warning: out of bounds read. assert \valid_read(p+(unsigned int)q); +tests/value/backward_add_ptr.c:151:[value] Reading left-value q. + It contains a garbled mix of {c} because of Arithmetic + {tests/value/backward_add_ptr.c:68}. +tests/value/backward_add_ptr.c:151:[value] Reading left-value p. + It contains a garbled mix of {a; b} because of Arithmetic + {tests/value/backward_add_ptr.c:68}. +[value] Called Frama_C_show_each_2GM_no_reduction({{ garbled mix of &{a; b} + (origin: Arithmetic + {tests/value/backward_add_ptr.c:68}) }}, + {{ garbled mix of &{c} + (origin: Arithmetic + {tests/value/backward_add_ptr.c:68}) }}) +tests/value/backward_add_ptr.c:156:[value] warning: out of bounds read. assert \valid_read((char *)p+(unsigned int)q); +tests/value/backward_add_ptr.c:157:[value] Reading left-value p. + It contains a garbled mix of {b} because of Arithmetic + {tests/value/backward_add_ptr.c:68}. +[value] Called Frama_C_show_each_2GM_only_b({{ garbled mix of &{b} + (origin: Arithmetic + {tests/value/backward_add_ptr.c:68}) }}, + [0..4294967295]) +[value] computing for function gm <- main4 <- main. + Called from tests/value/backward_add_ptr.c:160. +[value] Recording results for gm +[value] Done for function gm +[value] computing for function gm <- main4 <- main. + Called from tests/value/backward_add_ptr.c:161. +[value] Recording results for gm +[value] Done for function gm +tests/value/backward_add_ptr.c:165:[value] warning: out of bounds read. assert \valid_read((char *)p+(unsigned int)q); +tests/value/backward_add_ptr.c:166:[value] Reading left-value q. + It contains a garbled mix of {b} because of Arithmetic + {tests/value/backward_add_ptr.c:68}. +tests/value/backward_add_ptr.c:166:[value] Reading left-value p. + It contains a garbled mix of {b} because of Arithmetic + {tests/value/backward_add_ptr.c:68}. +[value] Called Frama_C_show_each_2GM_TEST({{ garbled mix of &{b} + (origin: Arithmetic + {tests/value/backward_add_ptr.c:68}) }}, + {{ garbled mix of &{b} + (origin: Arithmetic + {tests/value/backward_add_ptr.c:68}) }}) +tests/value/backward_add_ptr.c:171:[value] warning: out of bounds read. assert \valid_read(p+(unsigned int)q); +tests/value/backward_add_ptr.c:172:[value] Reading left-value q. + It contains a garbled mix of {b} because of Arithmetic + {tests/value/backward_add_ptr.c:68}. +tests/value/backward_add_ptr.c:172:[value] Reading left-value p. + It contains a garbled mix of {a; b} because of Arithmetic + {tests/value/backward_add_ptr.c:68}. +[value] Called Frama_C_show_each_2GM_gm_of_a_b({{ garbled mix of &{a; b} + (origin: Arithmetic + {tests/value/backward_add_ptr.c:68}) }}, + {{ garbled mix of &{b} + (origin: Arithmetic + {tests/value/backward_add_ptr.c:68}) }}) +tests/value/backward_add_ptr.c:177:[value] warning: out of bounds read. assert \valid_read((char *)p+(unsigned int)q); +tests/value/backward_add_ptr.c:178:[value] Reading left-value q. + It contains a garbled mix of {b; c} because of Arithmetic + {tests/value/backward_add_ptr.c:68}. +tests/value/backward_add_ptr.c:178:[value] Reading left-value p. + It contains a garbled mix of {b} because of Arithmetic + {tests/value/backward_add_ptr.c:68}. +[value] Called Frama_C_show_each_2GM_gm_of_b_c({{ garbled mix of &{b} + (origin: Arithmetic + {tests/value/backward_add_ptr.c:68}) }}, + {{ garbled mix of &{b; c} + (origin: Arithmetic + {tests/value/backward_add_ptr.c:68}) }}) +[value] Recording results for main4 +[value] Done for function main4 +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function gm: + __retres ∈ + {{ garbled mix of &{a; b; c} + (origin: Arithmetic {tests/value/backward_add_ptr.c:68}) }} +[value:final-states] Values at end of function main1: + p ∈ {{ NULL + [--..--] ; &a }} + q ∈ {{ NULL + [--..--] ; &b }} + v ∈ {0; 1} + w ∈ {0; 1} +[value:final-states] Values at end of function main2: + p ∈ {{ NULL + [--..--] ; &a }} + q ∈ {{ NULL + [--..--] ; &b }} +[value:final-states] Values at end of function main3: + p ∈ + {{ garbled mix of &{a; b} + (origin: Arithmetic {tests/value/backward_add_ptr.c:68}) }} + q ∈ {{ NULL + [--..--] ; &b }} + v[bits 0 to 7] ∈ {0; 1} + [bits 8 to 31]# ∈ {0; 1}%32, bits 8 to 31 + w ∈ {0; 1} +[value:final-states] Values at end of function main4: + p ∈ + {{ garbled mix of &{a; b} + (origin: Arithmetic {tests/value/backward_add_ptr.c:68}) }} + q ∈ + {{ garbled mix of &{b; c} + (origin: Arithmetic {tests/value/backward_add_ptr.c:68}) }} + v[bits 0 to 7] ∈ {0; 1; 2} + [bits 8 to 31]# ∈ {0; 1; 2}%32, bits 8 to 31 +[value:final-states] Values at end of function main: + a ∈ {0} + b ∈ {1} + c ∈ {2} + p ∈ + {{ garbled mix of &{a; b} + (origin: Arithmetic {tests/value/backward_add_ptr.c:68}) }} + q ∈ + {{ garbled mix of &{b; c} + (origin: Arithmetic {tests/value/backward_add_ptr.c:68}) }} + v[bits 0 to 7] ∈ {0; 1; 2} + [bits 8 to 31]# ∈ {0; 1; 2}%32, bits 8 to 31 + w ∈ {0; 1} + __retres ∈ {0} +[from] Computing for function gm +[from] Done for function gm +[from] Computing for function main1 +[from] Done for function main1 +[from] Computing for function main2 +[from] Done for function main2 +[from] Computing for function main3 +[from] Done for function main3 +[from] Computing for function main4 +[from] Done for function main4 +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function gm: + \result FROM p_0 +[from] Function main1: + p FROM rand + q FROM rand + v FROM a; b; rand (and SELF) + w FROM a; b; rand (and SELF) +[from] Function main2: + p FROM rand + q FROM rand +[from] Function main3: + p FROM rand + q FROM rand + v FROM a; b; rand (and SELF) + w FROM a; b; rand (and SELF) +[from] Function main4: + p FROM rand + q FROM rand + v FROM a; b; c; rand (and SELF) +[from] Function main: + a FROM \nothing + b FROM \nothing + c FROM \nothing + p FROM rand + q FROM rand + v FROM a; b; c; rand (and SELF) + w FROM a; b; rand (and SELF) + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function gm: + __retres +[inout] Inputs for function gm: + \nothing +[inout] Out (internal) for function main1: + p; q; v; w +[inout] Inputs for function main1: + a; b; p; q; v; w; rand +[inout] Out (internal) for function main2: + p; q +[inout] Inputs for function main2: + a; b; p; q; rand +[inout] Out (internal) for function main3: + p; q; v; w; tmp; tmp_0; tmp_1 +[inout] Inputs for function main3: + a; b; c; p; q; rand +[inout] Out (internal) for function main4: + p; q; v; tmp; tmp_0; tmp_1 +[inout] Inputs for function main4: + a; b; c; p; q; rand +[inout] Out (internal) for function main: + a; b; c; p; q; v; w; __retres +[inout] Inputs for function main: + a; b; c; p; q; v; w; rand diff --git a/tests/value/oracle_symblocs/bad_loop.err.oracle b/tests/value/oracle_symblocs/bad_loop.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/bad_loop.res.oracle b/tests/value/oracle_symblocs/bad_loop.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..a72c3b1d872b8bcea382f7a0fa282caa5dfc2498 --- /dev/null +++ b/tests/value/oracle_symblocs/bad_loop.res.oracle @@ -0,0 +1,27 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/bad_loop.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + c ∈ [--..--] +tests/value/bad_loop.i:6:[value] entering loop for the first time +tests/value/bad_loop.i:12:[value] entering loop for the first time +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + x ∈ {0; 1; 2} + d ∈ [--..--] + e ∈ [--..--] +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + x; d; e +[inout] Inputs for function main: + c diff --git a/tests/value/oracle_symblocs/base_addr_offset_block_length.err.oracle b/tests/value/oracle_symblocs/base_addr_offset_block_length.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/base_addr_offset_block_length.res.oracle b/tests/value/oracle_symblocs/base_addr_offset_block_length.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..6a63d1bfcab9345369a7c7dec98cb5e386570817 --- /dev/null +++ b/tests/value/oracle_symblocs/base_addr_offset_block_length.res.oracle @@ -0,0 +1,51 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/base_addr_offset_block_length.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + x ∈ {0} + y ∈ {0} + z ∈ {0} +tests/value/base_addr_offset_block_length.i:9:[value] warning: function main: precondition got status unknown. +tests/value/base_addr_offset_block_length.i:17:[value] assertion got status valid. +tests/value/base_addr_offset_block_length.i:18:[value] assertion got status valid. +tests/value/base_addr_offset_block_length.i:19:[value] assertion got status valid. +tests/value/base_addr_offset_block_length.i:20:[value] warning: assertion got status unknown. +tests/value/base_addr_offset_block_length.i:21:[value] assertion got status valid. +tests/value/base_addr_offset_block_length.i:22:[value] assertion got status valid. +tests/value/base_addr_offset_block_length.i:23:[value] warning: assertion got status unknown. +tests/value/base_addr_offset_block_length.i:24:[value] assertion got status valid. +tests/value/base_addr_offset_block_length.i:25:[value] assertion got status valid. +tests/value/base_addr_offset_block_length.i:26:[value] assertion got status valid. +tests/value/base_addr_offset_block_length.i:27:[value] assertion got status valid. +tests/value/base_addr_offset_block_length.i:28:[value] assertion got status valid. +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + px ∈ {{ &x + {4} }} + px2 ∈ {{ &x + {12} }} + py ∈ {{ &y + {8} }} + pz ∈ {{ &z + {4} }} + p ∈ {{ &x + {4} ; &y }} + q ∈ {{ &x + {8} ; &y + {4} }} +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + x ∈ {0} + y ∈ {0} + z ∈ {0} +tests/value/base_addr_offset_block_length.i:20:[value] assertion got status valid. +tests/value/base_addr_offset_block_length.i:23:[value] assertion got status valid. +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + px ∈ {{ &x + {4} }} + px2 ∈ {{ &x + {12} }} + py ∈ {{ &y + {8} }} + pz ∈ {{ &z + {4} }} + p ∈ {{ &x + {4} ; &y }} + q ∈ {{ &x + {8} ; &y + {4} }} diff --git a/tests/value/oracle_symblocs/behaviors1.err.oracle b/tests/value/oracle_symblocs/behaviors1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/behaviors1.res.oracle b/tests/value/oracle_symblocs/behaviors1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..96d0d40fb11b213f2ca783c5612fedcaf061c0d3 --- /dev/null +++ b/tests/value/oracle_symblocs/behaviors1.res.oracle @@ -0,0 +1,690 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/behaviors1.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + nondet ∈ [--..--] + T[0..9] ∈ {0} +[value] computing for function test_none <- main. + Called from tests/value/behaviors1.i:623. +[value] computing for function f_none <- test_none <- main. + Called from tests/value/behaviors1.i:328. +[value] using specification for function f_none +tests/value/behaviors1.i:328:[value] function f_none, behavior b2: assumes got status invalid; behavior not evaluated. +tests/value/behaviors1.i:328:[value] function f_none, behavior b3: assumes got status invalid; behavior not evaluated. +tests/value/behaviors1.i:328:[value] function f_none, behavior b5: assumes got status invalid; behavior not evaluated. +[value] Done for function f_none +[value] computing for function f_none <- test_none <- main. + Called from tests/value/behaviors1.i:329. +tests/value/behaviors1.i:329:[value] function f_none, behavior b2: assumes got status invalid; behavior not evaluated. +tests/value/behaviors1.i:329:[value] function f_none, behavior b3: assumes got status invalid; behavior not evaluated. +[value] Done for function f_none +[value] computing for function f_none <- test_none <- main. + Called from tests/value/behaviors1.i:330. +tests/value/behaviors1.i:330:[value] function f_none, behavior b3: assumes got status invalid; behavior not evaluated. +tests/value/behaviors1.i:330:[value] function f_none, behavior b5: assumes got status invalid; behavior not evaluated. +[value] Done for function f_none +[value] computing for function f_none <- test_none <- main. + Called from tests/value/behaviors1.i:331. +[value] Done for function f_none +[value] Recording results for test_none +[value] Done for function test_none +[value] computing for function test_comp_disj <- main. + Called from tests/value/behaviors1.i:624. +[value] computing for function f_comp_disj <- test_comp_disj <- main. + Called from tests/value/behaviors1.i:342. +[value] using specification for function f_comp_disj +tests/value/behaviors1.i:342:[value] function f_comp_disj, behavior b2: assumes got status invalid; behavior not evaluated. +tests/value/behaviors1.i:342:[value] function f_comp_disj, behavior b3: assumes got status invalid; behavior not evaluated. +tests/value/behaviors1.i:342:[value] function f_comp_disj, behavior b5: assumes got status invalid; behavior not evaluated. +[value] Done for function f_comp_disj +[value] computing for function f_comp_disj <- test_comp_disj <- main. + Called from tests/value/behaviors1.i:350. +tests/value/behaviors1.i:350:[value] function f_comp_disj, behavior b2: assumes got status invalid; behavior not evaluated. +tests/value/behaviors1.i:350:[value] function f_comp_disj, behavior b3: assumes got status invalid; behavior not evaluated. +[value] Done for function f_comp_disj +[value] computing for function f_comp_disj <- test_comp_disj <- main. + Called from tests/value/behaviors1.i:358. +tests/value/behaviors1.i:358:[value] function f_comp_disj, behavior b3: assumes got status invalid; behavior not evaluated. +tests/value/behaviors1.i:358:[value] function f_comp_disj, behavior b5: assumes got status invalid; behavior not evaluated. +[value] Done for function f_comp_disj +[value] computing for function f_comp_disj <- test_comp_disj <- main. + Called from tests/value/behaviors1.i:366. +[value] Done for function f_comp_disj +[value] Recording results for test_comp_disj +[value] Done for function test_comp_disj +[value] computing for function test_comp <- main. + Called from tests/value/behaviors1.i:625. +[value] computing for function f_comp <- test_comp <- main. + Called from tests/value/behaviors1.i:388. +[value] using specification for function f_comp +tests/value/behaviors1.i:388:[value] function f_comp, behavior b2: assumes got status invalid; behavior not evaluated. +tests/value/behaviors1.i:388:[value] function f_comp, behavior b3: assumes got status invalid; behavior not evaluated. +tests/value/behaviors1.i:388:[value] function f_comp, behavior b5: assumes got status invalid; behavior not evaluated. +[value] Done for function f_comp +[value] computing for function f_comp <- test_comp <- main. + Called from tests/value/behaviors1.i:389. +tests/value/behaviors1.i:389:[value] function f_comp, behavior b2: assumes got status invalid; behavior not evaluated. +tests/value/behaviors1.i:389:[value] function f_comp, behavior b3: assumes got status invalid; behavior not evaluated. +[value] Done for function f_comp +[value] computing for function f_comp <- test_comp <- main. + Called from tests/value/behaviors1.i:390. +tests/value/behaviors1.i:390:[value] function f_comp, behavior b3: assumes got status invalid; behavior not evaluated. +tests/value/behaviors1.i:390:[value] function f_comp, behavior b5: assumes got status invalid; behavior not evaluated. +[value] Done for function f_comp +[value] computing for function f_comp <- test_comp <- main. + Called from tests/value/behaviors1.i:391. +[value] Done for function f_comp +[value] Recording results for test_comp +[value] Done for function test_comp +[value] computing for function test_disj <- main. + Called from tests/value/behaviors1.i:626. +[value] computing for function f_disj <- test_disj <- main. + Called from tests/value/behaviors1.i:377. +[value] using specification for function f_disj +tests/value/behaviors1.i:377:[value] function f_disj, behavior b2: assumes got status invalid; behavior not evaluated. +tests/value/behaviors1.i:377:[value] function f_disj, behavior b3: assumes got status invalid; behavior not evaluated. +tests/value/behaviors1.i:377:[value] function f_disj, behavior b5: assumes got status invalid; behavior not evaluated. +[value] Done for function f_disj +[value] computing for function f_disj <- test_disj <- main. + Called from tests/value/behaviors1.i:378. +tests/value/behaviors1.i:378:[value] function f_disj, behavior b2: assumes got status invalid; behavior not evaluated. +tests/value/behaviors1.i:378:[value] function f_disj, behavior b3: assumes got status invalid; behavior not evaluated. +[value] Done for function f_disj +[value] computing for function f_disj <- test_disj <- main. + Called from tests/value/behaviors1.i:379. +tests/value/behaviors1.i:379:[value] function f_disj, behavior b3: assumes got status invalid; behavior not evaluated. +tests/value/behaviors1.i:379:[value] function f_disj, behavior b5: assumes got status invalid; behavior not evaluated. +[value] Done for function f_disj +[value] computing for function f_disj <- test_disj <- main. + Called from tests/value/behaviors1.i:380. +[value] Done for function f_disj +[value] Recording results for test_disj +[value] Done for function test_disj +[value] computing for function test_123_comp_disj <- main. + Called from tests/value/behaviors1.i:627. +[value] computing for function f_123_comp_disj <- test_123_comp_disj <- main. + Called from tests/value/behaviors1.i:399. +[value] using specification for function f_123_comp_disj +tests/value/behaviors1.i:399:[value] function f_123_comp_disj, behavior b2: assumes got status invalid; behavior not evaluated. +tests/value/behaviors1.i:399:[value] function f_123_comp_disj, behavior b3: assumes got status invalid; behavior not evaluated. +tests/value/behaviors1.i:399:[value] function f_123_comp_disj, behavior b5: assumes got status invalid; behavior not evaluated. +[value] Done for function f_123_comp_disj +[value] computing for function f_123_comp_disj <- test_123_comp_disj <- main. + Called from tests/value/behaviors1.i:400. +tests/value/behaviors1.i:400:[value] function f_123_comp_disj, behavior b2: assumes got status invalid; behavior not evaluated. +tests/value/behaviors1.i:400:[value] function f_123_comp_disj, behavior b3: assumes got status invalid; behavior not evaluated. +[value] Done for function f_123_comp_disj +[value] computing for function f_123_comp_disj <- test_123_comp_disj <- main. + Called from tests/value/behaviors1.i:401. +tests/value/behaviors1.i:401:[value] function f_123_comp_disj, behavior b3: assumes got status invalid; behavior not evaluated. +tests/value/behaviors1.i:401:[value] function f_123_comp_disj, behavior b5: assumes got status invalid; behavior not evaluated. +[value] Done for function f_123_comp_disj +[value] computing for function f_123_comp_disj <- test_123_comp_disj <- main. + Called from tests/value/behaviors1.i:402. +[value] Done for function f_123_comp_disj +[value] Recording results for test_123_comp_disj +[value] Done for function test_123_comp_disj +[value] computing for function test_123_comp_disj_2345_disj <- main. + Called from tests/value/behaviors1.i:628. +[value] computing for function f_123_comp_disj_2345_disj <- + test_123_comp_disj_2345_disj <- main. + Called from tests/value/behaviors1.i:410. +[value] using specification for function f_123_comp_disj_2345_disj +tests/value/behaviors1.i:410:[value] function f_123_comp_disj_2345_disj, behavior b2: assumes got status invalid; behavior not evaluated. +tests/value/behaviors1.i:410:[value] function f_123_comp_disj_2345_disj, behavior b3: assumes got status invalid; behavior not evaluated. +tests/value/behaviors1.i:410:[value] function f_123_comp_disj_2345_disj, behavior b5: assumes got status invalid; behavior not evaluated. +[value] Done for function f_123_comp_disj_2345_disj +[value] computing for function f_123_comp_disj_2345_disj <- + test_123_comp_disj_2345_disj <- main. + Called from tests/value/behaviors1.i:411. +tests/value/behaviors1.i:411:[value] function f_123_comp_disj_2345_disj, behavior b2: assumes got status invalid; behavior not evaluated. +tests/value/behaviors1.i:411:[value] function f_123_comp_disj_2345_disj, behavior b3: assumes got status invalid; behavior not evaluated. +[value] Done for function f_123_comp_disj_2345_disj +[value] computing for function f_123_comp_disj_2345_disj <- + test_123_comp_disj_2345_disj <- main. + Called from tests/value/behaviors1.i:412. +tests/value/behaviors1.i:412:[value] function f_123_comp_disj_2345_disj, behavior b3: assumes got status invalid; behavior not evaluated. +tests/value/behaviors1.i:412:[value] function f_123_comp_disj_2345_disj, behavior b5: assumes got status invalid; behavior not evaluated. +[value] Done for function f_123_comp_disj_2345_disj +[value] computing for function f_123_comp_disj_2345_disj <- + test_123_comp_disj_2345_disj <- main. + Called from tests/value/behaviors1.i:413. +[value] Done for function f_123_comp_disj_2345_disj +[value] Recording results for test_123_comp_disj_2345_disj +[value] Done for function test_123_comp_disj_2345_disj +[value] computing for function test_123_comp_disj_2345_comp <- main. + Called from tests/value/behaviors1.i:629. +[value] computing for function f_123_comp_disj_2345_comp <- + test_123_comp_disj_2345_comp <- main. + Called from tests/value/behaviors1.i:421. +[value] using specification for function f_123_comp_disj_2345_comp +tests/value/behaviors1.i:421:[value] function f_123_comp_disj_2345_comp, behavior b2: assumes got status invalid; behavior not evaluated. +tests/value/behaviors1.i:421:[value] function f_123_comp_disj_2345_comp, behavior b3: assumes got status invalid; behavior not evaluated. +tests/value/behaviors1.i:421:[value] function f_123_comp_disj_2345_comp, behavior b5: assumes got status invalid; behavior not evaluated. +[value] Done for function f_123_comp_disj_2345_comp +[value] computing for function f_123_comp_disj_2345_comp <- + test_123_comp_disj_2345_comp <- main. + Called from tests/value/behaviors1.i:422. +tests/value/behaviors1.i:422:[value] function f_123_comp_disj_2345_comp, behavior b2: assumes got status invalid; behavior not evaluated. +tests/value/behaviors1.i:422:[value] function f_123_comp_disj_2345_comp, behavior b3: assumes got status invalid; behavior not evaluated. +[value] Done for function f_123_comp_disj_2345_comp +[value] computing for function f_123_comp_disj_2345_comp <- + test_123_comp_disj_2345_comp <- main. + Called from tests/value/behaviors1.i:423. +tests/value/behaviors1.i:423:[value] function f_123_comp_disj_2345_comp, behavior b3: assumes got status invalid; behavior not evaluated. +tests/value/behaviors1.i:423:[value] function f_123_comp_disj_2345_comp, behavior b5: assumes got status invalid; behavior not evaluated. +[value] Done for function f_123_comp_disj_2345_comp +[value] computing for function f_123_comp_disj_2345_comp <- + test_123_comp_disj_2345_comp <- main. + Called from tests/value/behaviors1.i:424. +[value] Done for function f_123_comp_disj_2345_comp +[value] Recording results for test_123_comp_disj_2345_comp +[value] Done for function test_123_comp_disj_2345_comp +[value] computing for function test_123_disj_2345_comp_disj <- main. + Called from tests/value/behaviors1.i:630. +[value] computing for function f_123_disj_2345_comp_disj <- + test_123_disj_2345_comp_disj <- main. + Called from tests/value/behaviors1.i:432. +[value] using specification for function f_123_disj_2345_comp_disj +tests/value/behaviors1.i:432:[value] function f_123_disj_2345_comp_disj, behavior b2: assumes got status invalid; behavior not evaluated. +tests/value/behaviors1.i:432:[value] function f_123_disj_2345_comp_disj, behavior b3: assumes got status invalid; behavior not evaluated. +tests/value/behaviors1.i:432:[value] function f_123_disj_2345_comp_disj, behavior b5: assumes got status invalid; behavior not evaluated. +[value] Done for function f_123_disj_2345_comp_disj +[value] computing for function f_123_disj_2345_comp_disj <- + test_123_disj_2345_comp_disj <- main. + Called from tests/value/behaviors1.i:433. +tests/value/behaviors1.i:433:[value] function f_123_disj_2345_comp_disj, behavior b2: assumes got status invalid; behavior not evaluated. +tests/value/behaviors1.i:433:[value] function f_123_disj_2345_comp_disj, behavior b3: assumes got status invalid; behavior not evaluated. +[value] Done for function f_123_disj_2345_comp_disj +[value] computing for function f_123_disj_2345_comp_disj <- + test_123_disj_2345_comp_disj <- main. + Called from tests/value/behaviors1.i:434. +tests/value/behaviors1.i:434:[value] function f_123_disj_2345_comp_disj, behavior b3: assumes got status invalid; behavior not evaluated. +tests/value/behaviors1.i:434:[value] function f_123_disj_2345_comp_disj, behavior b5: assumes got status invalid; behavior not evaluated. +[value] Done for function f_123_disj_2345_comp_disj +[value] computing for function f_123_disj_2345_comp_disj <- + test_123_disj_2345_comp_disj <- main. + Called from tests/value/behaviors1.i:435. +[value] Done for function f_123_disj_2345_comp_disj +[value] Recording results for test_123_disj_2345_comp_disj +[value] Done for function test_123_disj_2345_comp_disj +[value] computing for function test_123_comp_2345_comp_disj <- main. + Called from tests/value/behaviors1.i:631. +[value] computing for function f_123_comp_2345_comp_disj <- + test_123_comp_2345_comp_disj <- main. + Called from tests/value/behaviors1.i:443. +[value] using specification for function f_123_comp_2345_comp_disj +tests/value/behaviors1.i:443:[value] function f_123_comp_2345_comp_disj, behavior b2: assumes got status invalid; behavior not evaluated. +tests/value/behaviors1.i:443:[value] function f_123_comp_2345_comp_disj, behavior b3: assumes got status invalid; behavior not evaluated. +tests/value/behaviors1.i:443:[value] function f_123_comp_2345_comp_disj, behavior b5: assumes got status invalid; behavior not evaluated. +[value] Done for function f_123_comp_2345_comp_disj +[value] computing for function f_123_comp_2345_comp_disj <- + test_123_comp_2345_comp_disj <- main. + Called from tests/value/behaviors1.i:444. +tests/value/behaviors1.i:444:[value] function f_123_comp_2345_comp_disj, behavior b2: assumes got status invalid; behavior not evaluated. +tests/value/behaviors1.i:444:[value] function f_123_comp_2345_comp_disj, behavior b3: assumes got status invalid; behavior not evaluated. +[value] Done for function f_123_comp_2345_comp_disj +[value] computing for function f_123_comp_2345_comp_disj <- + test_123_comp_2345_comp_disj <- main. + Called from tests/value/behaviors1.i:445. +tests/value/behaviors1.i:445:[value] function f_123_comp_2345_comp_disj, behavior b3: assumes got status invalid; behavior not evaluated. +tests/value/behaviors1.i:445:[value] function f_123_comp_2345_comp_disj, behavior b5: assumes got status invalid; behavior not evaluated. +[value] Done for function f_123_comp_2345_comp_disj +[value] computing for function f_123_comp_2345_comp_disj <- + test_123_comp_2345_comp_disj <- main. + Called from tests/value/behaviors1.i:446. +[value] Done for function f_123_comp_2345_comp_disj +[value] Recording results for test_123_comp_2345_comp_disj +[value] Done for function test_123_comp_2345_comp_disj +[value] computing for function test_assigns <- main. + Called from tests/value/behaviors1.i:632. +[value] computing for function f <- test_assigns <- main. + Called from tests/value/behaviors1.i:473. +[value] using specification for function f +[value] Done for function f +tests/value/behaviors1.i:473:[value] Assigning imprecise value to p1. + The imprecision originates from Library function + {tests/value/behaviors1.i:473} +[value] computing for function f <- test_assigns <- main. + Called from tests/value/behaviors1.i:474. +[value] Done for function f +tests/value/behaviors1.i:474:[value] Assigning imprecise value to p2. + The imprecision originates from Library function + {tests/value/behaviors1.i:474} +[value] computing for function f <- test_assigns <- main. + Called from tests/value/behaviors1.i:475. +[value] Done for function f +[value] Recording results for test_assigns +[value] Done for function test_assigns +[value] computing for function test_assigns2 <- main. + Called from tests/value/behaviors1.i:633. +[value] computing for function f2 <- test_assigns2 <- main. + Called from tests/value/behaviors1.i:490. +[value] using specification for function f2 +tests/value/behaviors1.i:480:[value] function f2: precondition got status valid. +[value] Done for function f2 +[value] Recording results for test_assigns2 +[value] Done for function test_assigns2 +[value] computing for function test_small1 <- main. + Called from tests/value/behaviors1.i:634. +[value] computing for function f3 <- test_small1 <- main. + Called from tests/value/behaviors1.i:506. +tests/value/behaviors1.i:506:[kernel] warning: No code nor implicit assigns clause for function f3, generating default assigns from the prototype +[value] using specification for function f3 +tests/value/behaviors1.i:494:[value] warning: function f3: precondition got status unknown. +tests/value/behaviors1.i:497:[value] warning: function f3, behavior b1: precondition got status invalid. +[value] Done for function f3 +[value] Recording results for test_small1 +[value] Done for function test_small1 +[value] computing for function test_small2 <- main. + Called from tests/value/behaviors1.i:635. +[value] computing for function f4 <- test_small2 <- main. + Called from tests/value/behaviors1.i:521. +tests/value/behaviors1.i:521:[kernel] warning: No code nor implicit assigns clause for function f4, generating default assigns from the prototype +[value] using specification for function f4 +tests/value/behaviors1.i:510:[value] warning: function f4: precondition got status unknown. +tests/value/behaviors1.i:513:[value] warning: function f4, behavior b1: precondition got status invalid. +tests/value/behaviors1.i:513:[value] function f4, behavior b1: no state left in which to evaluate precondition, status not computed. +tests/value/behaviors1.i:521:[value] function f4, behavior b1: requires got status invalid; postconditions not evaluated. +[value] Done for function f4 +[value] Recording results for test_small2 +[value] Done for function test_small2 +[value] computing for function test_small3 <- main. + Called from tests/value/behaviors1.i:636. +[value] computing for function f5 <- test_small3 <- main. + Called from tests/value/behaviors1.i:534. +tests/value/behaviors1.i:534:[kernel] warning: No code nor implicit assigns clause for function f5, generating default assigns from the prototype +[value] using specification for function f5 +[value] Done for function f5 +[value] Recording results for test_small3 +[value] Done for function test_small3 +[value] computing for function test_small4 <- main. + Called from tests/value/behaviors1.i:637. +[value] computing for function f6 <- test_small4 <- main. + Called from tests/value/behaviors1.i:548. +tests/value/behaviors1.i:548:[kernel] warning: No code nor implicit assigns clause for function f6, generating default assigns from the prototype +[value] using specification for function f6 +[value] Done for function f6 +[value] Recording results for test_small4 +[value] Done for function test_small4 +[value] computing for function test_small5 <- main. + Called from tests/value/behaviors1.i:638. +[value] computing for function f7 <- test_small5 <- main. + Called from tests/value/behaviors1.i:561. +tests/value/behaviors1.i:561:[kernel] warning: No code nor implicit assigns clause for function f7, generating default assigns from the prototype +[value] using specification for function f7 +tests/value/behaviors1.i:552:[value] warning: function f7: precondition got status unknown. +[value] Done for function f7 +[value] Recording results for test_small5 +[value] Done for function test_small5 +[value] computing for function test_small6 <- main. + Called from tests/value/behaviors1.i:639. +[value] computing for function f8 <- test_small6 <- main. + Called from tests/value/behaviors1.i:576. +[value] using specification for function f8 +tests/value/behaviors1.i:565:[value] function f8: precondition got status valid. +[value] Done for function f8 +[value] Recording results for test_small6 +[value] Done for function test_small6 +[value] computing for function test_promote <- main. + Called from tests/value/behaviors1.i:640. +[value] computing for function f9 <- test_promote <- main. + Called from tests/value/behaviors1.i:594. +[value] using specification for function f9 +tests/value/behaviors1.i:594:[value] cannot evaluate ACSL term, unsupported ACSL construct: logic functions or predicates +tests/value/behaviors1.i:594:[value] function f9, behavior b1: assumes got status invalid; behavior not evaluated. +[value] Done for function f9 +[value] Recording results for test_promote +[value] Done for function test_promote +[value] computing for function test_narrow <- main. + Called from tests/value/behaviors1.i:641. +[value] computing for function f10 <- test_narrow <- main. + Called from tests/value/behaviors1.i:619. +[value] using specification for function f10 +tests/value/behaviors1.i:619:[value] cannot evaluate ACSL term, unsupported ACSL construct: logic functions or predicates +[value] Done for function f10 +[value] Recording results for test_narrow +[value] Done for function test_narrow +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function test_123_comp_2345_comp_disj: + a ∈ [--..--] + b ∈ [--..--] + c1 ∈ {4} or UNINITIALIZED + c2 ∈ {4; 5} or UNINITIALIZED + c3 ∈ {2; 4} or UNINITIALIZED + c4 ∈ {2; 3; 4; 5} or UNINITIALIZED +[value:final-states] Values at end of function test_123_comp_disj: + a ∈ [--..--] + b ∈ [--..--] + c1 ∈ {4} or UNINITIALIZED + c2 ∈ {4; 5} or UNINITIALIZED + c3 ∈ {2; 4; 5} or UNINITIALIZED + c4 ∈ {2; 3; 4; 5} or UNINITIALIZED +[value:final-states] Values at end of function test_123_comp_disj_2345_comp: + a ∈ [--..--] + b ∈ [--..--] + c1 ∈ {4} or UNINITIALIZED + c2 ∈ {4; 5} or UNINITIALIZED + c3 ∈ {2; 4} or UNINITIALIZED + c4 ∈ {2; 3; 4; 5} or UNINITIALIZED +[value:final-states] Values at end of function test_123_comp_disj_2345_disj: + a ∈ [--..--] + b ∈ [--..--] + c1 ∈ {4} or UNINITIALIZED + c2 ∈ {4; 5} or UNINITIALIZED + c3 ∈ {2; 4; 5} or UNINITIALIZED + c4 ∈ {2; 3; 4; 5} or UNINITIALIZED +[value:final-states] Values at end of function test_123_disj_2345_comp_disj: + a ∈ [--..--] + b ∈ [--..--] + c1 ∈ {4} or UNINITIALIZED + c2 ∈ {4; 5} or UNINITIALIZED + c3 ∈ {2; 4} or UNINITIALIZED + c4 ∈ {2; 3; 4; 5} or UNINITIALIZED +[value:final-states] Values at end of function test_assigns: + p1 ∈ + {{ garbled mix of &{a} + (origin: Library function {tests/value/behaviors1.i:473}) }} + p2 ∈ + {{ garbled mix of &{b} + (origin: Library function {tests/value/behaviors1.i:474}) }} + p3 ∈ [--..--] +[value:final-states] Values at end of function test_assigns2: + T[0..4] ∈ [--..--] + [5..9] ∈ {0} + p ∈ {{ &T[0] }} +[value:final-states] Values at end of function test_comp: + a ∈ [--..--] + b ∈ [--..--] + c1 ∈ {4} or UNINITIALIZED + c2 ∈ {4; 5} or UNINITIALIZED + c3 ∈ {2; 4} or UNINITIALIZED + c4 ∈ {2; 3; 4; 5} or UNINITIALIZED +[value:final-states] Values at end of function test_comp_disj: + a ∈ [--..--] + b ∈ [--..--] + c1 ∈ {4} or UNINITIALIZED + c2 ∈ {4; 5} or UNINITIALIZED + c3 ∈ {2; 4} or UNINITIALIZED + c4 ∈ {2; 3; 4; 5} or UNINITIALIZED +[value:final-states] Values at end of function test_disj: + a ∈ [--..--] + b ∈ [--..--] + c1 ∈ {4} or UNINITIALIZED + c2 ∈ {4; 5} or UNINITIALIZED + c3 ∈ [1..2147483647] or UNINITIALIZED + c4 ∈ [1..2147483647] or UNINITIALIZED +[value:final-states] Values at end of function test_narrow: + r ∈ {100; 200; 300} +[value:final-states] Values at end of function test_none: + a ∈ [--..--] + b ∈ [--..--] + c1 ∈ {4} or UNINITIALIZED + c2 ∈ {4; 5} or UNINITIALIZED + c3 ∈ [1..2147483647] or UNINITIALIZED + c4 ∈ [1..2147483647] or UNINITIALIZED +[value:final-states] Values at end of function test_promote: + x ∈ [--..--] + r ∈ {1} +[value:final-states] Values at end of function test_small1: + x ∈ {4} +[value:final-states] Values at end of function test_small2: + x ∈ {2; 4} +[value:final-states] Values at end of function test_small3: + r ∈ [0..1000] +[value:final-states] Values at end of function test_small4: + r ∈ [0..1000] +[value:final-states] Values at end of function test_small5: + r ∈ [--..--] +[value:final-states] Values at end of function test_small6: + a ∈ [--..--] + p ∈ {{ &a }} +[value:final-states] Values at end of function main: + T[0..4] ∈ [--..--] + [5..9] ∈ {0} + __retres ∈ {0} +[from] Computing for function test_123_comp_2345_comp_disj +[from] Computing for function f_123_comp_2345_comp_disj <-test_123_comp_2345_comp_disj +[from] Done for function f_123_comp_2345_comp_disj +[from] Done for function test_123_comp_2345_comp_disj +[from] Computing for function test_123_comp_disj +[from] Computing for function f_123_comp_disj <-test_123_comp_disj +[from] Done for function f_123_comp_disj +[from] Done for function test_123_comp_disj +[from] Computing for function test_123_comp_disj_2345_comp +[from] Computing for function f_123_comp_disj_2345_comp <-test_123_comp_disj_2345_comp +[from] Done for function f_123_comp_disj_2345_comp +[from] Done for function test_123_comp_disj_2345_comp +[from] Computing for function test_123_comp_disj_2345_disj +[from] Computing for function f_123_comp_disj_2345_disj <-test_123_comp_disj_2345_disj +[from] Done for function f_123_comp_disj_2345_disj +[from] Done for function test_123_comp_disj_2345_disj +[from] Computing for function test_123_disj_2345_comp_disj +[from] Computing for function f_123_disj_2345_comp_disj <-test_123_disj_2345_comp_disj +[from] Done for function f_123_disj_2345_comp_disj +[from] Done for function test_123_disj_2345_comp_disj +[from] Computing for function test_assigns +[from] Computing for function f <-test_assigns +[from] Done for function f +[from] Done for function test_assigns +[from] Computing for function test_assigns2 +[from] Computing for function f2 <-test_assigns2 +[from] Done for function f2 +[from] Done for function test_assigns2 +[from] Computing for function test_comp +[from] Computing for function f_comp <-test_comp +[from] Done for function f_comp +[from] Done for function test_comp +[from] Computing for function test_comp_disj +[from] Computing for function f_comp_disj <-test_comp_disj +[from] Done for function f_comp_disj +[from] Done for function test_comp_disj +[from] Computing for function test_disj +[from] Computing for function f_disj <-test_disj +[from] Done for function f_disj +[from] Done for function test_disj +[from] Computing for function test_narrow +[from] Computing for function f10 <-test_narrow +[from] Done for function f10 +[from] Done for function test_narrow +[from] Computing for function test_none +[from] Computing for function f_none <-test_none +[from] Done for function f_none +[from] Done for function test_none +[from] Computing for function test_promote +[from] Computing for function f9 <-test_promote +[from] Done for function f9 +[from] Done for function test_promote +[from] Computing for function test_small1 +[from] Computing for function f3 <-test_small1 +[from] Done for function f3 +[from] Done for function test_small1 +[from] Computing for function test_small2 +[from] Computing for function f4 <-test_small2 +[from] Done for function f4 +[from] Done for function test_small2 +[from] Computing for function test_small3 +[from] Computing for function f5 <-test_small3 +[from] Done for function f5 +[from] Done for function test_small3 +[from] Computing for function test_small4 +[from] Computing for function f6 <-test_small4 +[from] Done for function f6 +[from] Done for function test_small4 +[from] Computing for function test_small5 +[from] Computing for function f7 <-test_small5 +[from] Done for function f7 +[from] Done for function test_small5 +[from] Computing for function test_small6 +[from] Computing for function f8 <-test_small6 +[from] Done for function f8 +[from] Done for function test_small6 +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + \result FROM p; q +[from] Function f10: + \result FROM x +[from] Function f2: + T[0..4] FROM \nothing +[from] Function f3: + \result FROM x +[from] Function f4: + \result FROM x +[from] Function f5: + \result FROM x +[from] Function f6: + \result FROM x +[from] Function f7: + \result FROM x +[from] Function f8: + a FROM \nothing + \result FROM p +[from] Function f9: + \result FROM n; "a"[bits 0 to 7] +[from] Function f_123_comp_2345_comp_disj: + \result FROM a; b +[from] Function f_123_comp_disj: + \result FROM a; b +[from] Function f_123_comp_disj_2345_comp: + \result FROM a; b +[from] Function f_123_comp_disj_2345_disj: + \result FROM a; b +[from] Function f_123_disj_2345_comp_disj: + \result FROM a; b +[from] Function f_comp: + \result FROM a; b +[from] Function f_comp_disj: + \result FROM a; b +[from] Function f_disj: + \result FROM a; b +[from] Function f_none: + \result FROM a; b +[from] Function test_123_comp_2345_comp_disj: + NO EFFECTS +[from] Function test_123_comp_disj: + NO EFFECTS +[from] Function test_123_comp_disj_2345_comp: + NO EFFECTS +[from] Function test_123_comp_disj_2345_disj: + NO EFFECTS +[from] Function test_123_disj_2345_comp_disj: + NO EFFECTS +[from] Function test_assigns: + NO EFFECTS +[from] Function test_assigns2: + T[0..4] FROM \nothing +[from] Function test_comp: + NO EFFECTS +[from] Function test_comp_disj: + NO EFFECTS +[from] Function test_disj: + NO EFFECTS +[from] Function test_narrow: + NO EFFECTS +[from] Function test_none: + NO EFFECTS +[from] Function test_promote: + NO EFFECTS +[from] Function test_small1: + NO EFFECTS +[from] Function test_small2: + NO EFFECTS +[from] Function test_small3: + NO EFFECTS +[from] Function test_small4: + NO EFFECTS +[from] Function test_small5: + NO EFFECTS +[from] Function test_small6: + NO EFFECTS +[from] Function main: + T[0..4] FROM \nothing + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function test_123_comp_2345_comp_disj: + a; b; c1; c2; c3; c4 +[inout] Inputs for function test_123_comp_2345_comp_disj: + nondet +[inout] Out (internal) for function test_123_comp_disj: + a; b; c1; c2; c3; c4 +[inout] Inputs for function test_123_comp_disj: + nondet +[inout] Out (internal) for function test_123_comp_disj_2345_comp: + a; b; c1; c2; c3; c4 +[inout] Inputs for function test_123_comp_disj_2345_comp: + nondet +[inout] Out (internal) for function test_123_comp_disj_2345_disj: + a; b; c1; c2; c3; c4 +[inout] Inputs for function test_123_comp_disj_2345_disj: + nondet +[inout] Out (internal) for function test_123_disj_2345_comp_disj: + a; b; c1; c2; c3; c4 +[inout] Inputs for function test_123_disj_2345_comp_disj: + nondet +[inout] Out (internal) for function test_assigns: + p1; p2; p3; tmp; tmp_0; tmp_1 +[inout] Inputs for function test_assigns: + \nothing +[inout] Out (internal) for function test_assigns2: + T[0..4]; p +[inout] Inputs for function test_assigns2: + \nothing +[inout] Out (internal) for function test_comp: + a; b; c1; c2; c3; c4 +[inout] Inputs for function test_comp: + nondet +[inout] Out (internal) for function test_comp_disj: + a; b; c1; c2; c3; c4 +[inout] Inputs for function test_comp_disj: + nondet +[inout] Out (internal) for function test_disj: + a; b; c1; c2; c3; c4 +[inout] Inputs for function test_disj: + nondet +[inout] Out (internal) for function test_narrow: + r +[inout] Inputs for function test_narrow: + nondet +[inout] Out (internal) for function test_none: + a; b; c1; c2; c3; c4 +[inout] Inputs for function test_none: + nondet +[inout] Out (internal) for function test_promote: + x; r +[inout] Inputs for function test_promote: + nondet; "a"[bits 0 to 7] +[inout] Out (internal) for function test_small1: + x +[inout] Inputs for function test_small1: + nondet +[inout] Out (internal) for function test_small2: + x +[inout] Inputs for function test_small2: + nondet +[inout] Out (internal) for function test_small3: + r +[inout] Inputs for function test_small3: + nondet +[inout] Out (internal) for function test_small4: + r +[inout] Inputs for function test_small4: + nondet +[inout] Out (internal) for function test_small5: + r +[inout] Inputs for function test_small5: + nondet +[inout] Out (internal) for function test_small6: + a; p +[inout] Inputs for function test_small6: + \nothing +[inout] Out (internal) for function main: + T[0..4]; __retres +[inout] Inputs for function main: + nondet; "a"[bits 0 to 7] diff --git a/tests/value/oracle_symblocs/behaviors2.err.oracle b/tests/value/oracle_symblocs/behaviors2.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/behaviors2.res.oracle b/tests/value/oracle_symblocs/behaviors2.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..6fa9eb28ddeeb56a66298b660356e6c2c13ebf6a --- /dev/null +++ b/tests/value/oracle_symblocs/behaviors2.res.oracle @@ -0,0 +1,240 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/behaviors2.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + __fc_random_counter ∈ {0} + __fc_rand_max ∈ {32767} + __fc_heap_status ∈ [--..--] + nondet ∈ [--..--] +[value] computing for function test1 <- main. + Called from tests/value/behaviors2.c:314. +[value] computing for function divi <- test1 <- main. + Called from tests/value/behaviors2.c:178. +[value] using specification for function divi +tests/value/behaviors2.c:27:[value] function divi: precondition got status valid. +tests/value/behaviors2.c:178:[value] function divi, behavior division_by_zero: assumes got status invalid; behavior not evaluated. +tests/value/behaviors2.c:178:[value] function divi, behavior invalid_parameter: assumes got status invalid; behavior not evaluated. +tests/value/behaviors2.c:178:[value] function divi, behavior error: assumes got status invalid; behavior not evaluated. +tests/value/behaviors2.c:178:[value] function divi, behavior ok_res_sign_nonpositive: assumes got status invalid; behavior not evaluated. +tests/value/behaviors2.c:178:[value] function divi, behavior ok_quotient_zero: assumes got status invalid; behavior not evaluated. +[value] Done for function divi +[value] computing for function divi <- test1 <- main. + Called from tests/value/behaviors2.c:180. +tests/value/behaviors2.c:180:[value] function divi, behavior division_by_zero: assumes got status invalid; behavior not evaluated. +tests/value/behaviors2.c:180:[value] function divi, behavior invalid_parameter: assumes got status invalid; behavior not evaluated. +tests/value/behaviors2.c:180:[value] function divi, behavior error: assumes got status invalid; behavior not evaluated. +tests/value/behaviors2.c:180:[value] function divi, behavior ok_res_sign_nonpositive: assumes got status invalid; behavior not evaluated. +tests/value/behaviors2.c:180:[value] function divi, behavior ok_quotient_non_zero: assumes got status invalid; behavior not evaluated. +[value] Done for function divi +[value] computing for function divi <- test1 <- main. + Called from tests/value/behaviors2.c:182. +tests/value/behaviors2.c:182:[value] function divi, behavior division_by_zero: assumes got status invalid; behavior not evaluated. +tests/value/behaviors2.c:182:[value] function divi, behavior invalid_parameter: assumes got status invalid; behavior not evaluated. +tests/value/behaviors2.c:182:[value] function divi, behavior error: assumes got status invalid; behavior not evaluated. +tests/value/behaviors2.c:182:[value] function divi, behavior ok_res_sign_nonpositive: assumes got status invalid; behavior not evaluated. +tests/value/behaviors2.c:182:[value] function divi, behavior ok_quotient_non_zero: assumes got status invalid; behavior not evaluated. +[value] Done for function divi +[value] computing for function divi <- test1 <- main. + Called from tests/value/behaviors2.c:184. +tests/value/behaviors2.c:184:[value] function divi, behavior invalid_parameter: assumes got status invalid; behavior not evaluated. +tests/value/behaviors2.c:184:[value] function divi, behavior ok: assumes got status invalid; behavior not evaluated. +tests/value/behaviors2.c:184:[value] function divi, behavior ok_res_sign_nonnegative: assumes got status invalid; behavior not evaluated. +tests/value/behaviors2.c:184:[value] function divi, behavior ok_res_sign_nonpositive: assumes got status invalid; behavior not evaluated. +tests/value/behaviors2.c:184:[value] function divi, behavior ok_quotient_zero: assumes got status invalid; behavior not evaluated. +tests/value/behaviors2.c:184:[value] function divi, behavior ok_quotient_non_zero: assumes got status invalid; behavior not evaluated. +tests/value/behaviors2.c:34:[value] function divi, behavior division_by_zero: precondition got status valid. +tests/value/behaviors2.c:49:[value] function divi, behavior error: precondition got status valid. +[value] Done for function divi +[value] computing for function divi <- test1 <- main. + Called from tests/value/behaviors2.c:186. +tests/value/behaviors2.c:186:[value] function divi, behavior division_by_zero: assumes got status invalid; behavior not evaluated. +tests/value/behaviors2.c:186:[value] function divi, behavior ok: assumes got status invalid; behavior not evaluated. +tests/value/behaviors2.c:186:[value] function divi, behavior ok_res_sign_nonnegative: assumes got status invalid; behavior not evaluated. +tests/value/behaviors2.c:186:[value] function divi, behavior ok_res_sign_nonpositive: assumes got status invalid; behavior not evaluated. +tests/value/behaviors2.c:186:[value] function divi, behavior ok_quotient_zero: assumes got status invalid; behavior not evaluated. +tests/value/behaviors2.c:186:[value] function divi, behavior ok_quotient_non_zero: assumes got status invalid; behavior not evaluated. +tests/value/behaviors2.c:41:[value] function divi, behavior invalid_parameter: precondition got status valid. +[value] Done for function divi +[value] computing for function divi <- test1 <- main. + Called from tests/value/behaviors2.c:188. +tests/value/behaviors2.c:188:[value] function divi, behavior division_by_zero: assumes got status invalid; behavior not evaluated. +tests/value/behaviors2.c:188:[value] function divi, behavior ok: assumes got status invalid; behavior not evaluated. +tests/value/behaviors2.c:188:[value] function divi, behavior ok_res_sign_nonnegative: assumes got status invalid; behavior not evaluated. +tests/value/behaviors2.c:188:[value] function divi, behavior ok_res_sign_nonpositive: assumes got status invalid; behavior not evaluated. +tests/value/behaviors2.c:188:[value] function divi, behavior ok_quotient_zero: assumes got status invalid; behavior not evaluated. +tests/value/behaviors2.c:188:[value] function divi, behavior ok_quotient_non_zero: assumes got status invalid; behavior not evaluated. +[value] Done for function divi +[value] computing for function divi <- test1 <- main. + Called from tests/value/behaviors2.c:190. +tests/value/behaviors2.c:190:[value] function divi, behavior division_by_zero: assumes got status invalid; behavior not evaluated. +tests/value/behaviors2.c:190:[value] function divi, behavior ok: assumes got status invalid; behavior not evaluated. +tests/value/behaviors2.c:190:[value] function divi, behavior ok_res_sign_nonnegative: assumes got status invalid; behavior not evaluated. +tests/value/behaviors2.c:190:[value] function divi, behavior ok_res_sign_nonpositive: assumes got status invalid; behavior not evaluated. +tests/value/behaviors2.c:190:[value] function divi, behavior ok_quotient_zero: assumes got status invalid; behavior not evaluated. +tests/value/behaviors2.c:190:[value] function divi, behavior ok_quotient_non_zero: assumes got status invalid; behavior not evaluated. +[value] Done for function divi +[value] computing for function divi <- test1 <- main. + Called from tests/value/behaviors2.c:192. +tests/value/behaviors2.c:192:[value] function divi, behavior invalid_parameter: assumes got status invalid; behavior not evaluated. +[value] Done for function divi +[value] Recording results for test1 +[value] Done for function test1 +[value] computing for function test2 <- main. + Called from tests/value/behaviors2.c:315. +[value] computing for function f1 <- test2 <- main. + Called from tests/value/behaviors2.c:229. +[value] using specification for function f1 +tests/value/behaviors2.c:197:[value] warning: function f1: precondition got status unknown. +tests/value/behaviors2.c:204:[value] function f1, behavior b1: precondition got status valid. +tests/value/behaviors2.c:205:[value] function f1, behavior b1: precondition got status valid. +tests/value/behaviors2.c:213:[value] function f1, behavior b2: precondition got status valid. +tests/value/behaviors2.c:214:[value] function f1, behavior b2: precondition got status valid. +[value] Done for function f1 +[value] Recording results for test2 +[value] Done for function test2 +[value] computing for function test3 <- main. + Called from tests/value/behaviors2.c:316. +[value] computing for function f2 <- test3 <- main. + Called from tests/value/behaviors2.c:265. +[value] using specification for function f2 +tests/value/behaviors2.c:233:[value] warning: function f2: precondition got status unknown. +tests/value/behaviors2.c:240:[value] function f2, behavior b1: precondition got status valid. +tests/value/behaviors2.c:241:[value] function f2, behavior b1: precondition got status valid. +tests/value/behaviors2.c:249:[value] function f2, behavior b2: precondition got status valid. +tests/value/behaviors2.c:250:[value] function f2, behavior b2: precondition got status valid. +[value] Done for function f2 +[value] Recording results for test3 +[value] Done for function test3 +[value] computing for function test4 <- main. + Called from tests/value/behaviors2.c:317. +[value] computing for function f3 <- test4 <- main. + Called from tests/value/behaviors2.c:285. +[value] using specification for function f3 +tests/value/behaviors2.c:269:[value] warning: function f3: precondition got status unknown. +tests/value/behaviors2.c:285:[value] function f3, behavior b3: requires got status invalid; postconditions not evaluated. +[value] Done for function f3 +[value] Recording results for test4 +[value] Done for function test4 +[value] computing for function test5 <- main. + Called from tests/value/behaviors2.c:318. +[value] computing for function f4 <- test5 <- main. + Called from tests/value/behaviors2.c:306. +[value] using specification for function f4 +tests/value/behaviors2.c:289:[value] warning: function f4: precondition got status unknown. +tests/value/behaviors2.c:306:[value] function f4, behavior b3: requires got status invalid; postconditions not evaluated. +[value] Done for function f4 +[value] Recording results for test5 +[value] Done for function test5 +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function test1: + quotient ∈ [--..--] + remainder ∈ [--..--] + sign ∈ {-1; 0; 1} + errmsg[0..19] ∈ [--..--] or UNINITIALIZED + r1 ∈ {0} + r2 ∈ {0} + r3 ∈ {0} + r4 ∈ {1} + r5 ∈ {2} + r6 ∈ {2} + r7 ∈ {2} + r8 ∈ {0; 1} +[value:final-states] Values at end of function test2: + a ∈ {1} + b ∈ {2} + p ∈ {{ &a ; &b }} + y ∈ {-4; -2; 2; 4} + x ∈ {2; 4} +[value:final-states] Values at end of function test3: + a ∈ {1} + b ∈ {2} + p ∈ {{ &a ; &b }} + y ∈ {-4; -2; 2; 4} + x ∈ {2; 4} +[value:final-states] Values at end of function test4: + x ∈ {2; 4} +[value:final-states] Values at end of function test5: + x ∈ {4} +[value:final-states] Values at end of function main: + __retres ∈ {0} +[from] Computing for function test1 +[from] Computing for function divi <-test1 +[from] Done for function divi +[from] Done for function test1 +[from] Computing for function test2 +[from] Computing for function f1 <-test2 +[from] Done for function f1 +[from] Done for function test2 +[from] Computing for function test3 +[from] Computing for function f2 <-test3 +[from] Done for function f2 +[from] Done for function test3 +[from] Computing for function test4 +[from] Computing for function f3 <-test4 +[from] Done for function f3 +[from] Done for function test4 +[from] Computing for function test5 +[from] Computing for function f4 <-test5 +[from] Done for function f4 +[from] Done for function test5 +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function divi: + quotient FROM dividend; divisor (and SELF) + remainder FROM dividend; divisor (and SELF) + sign FROM dividend; divisor (and SELF) + errmsg[0..19] FROM dividend; divisor; quotient; remainder; sign + \result FROM dividend; divisor; quotient; remainder; sign +[from] Function f1: + y FROM x + \result FROM p1; p2 +[from] Function f2: + y FROM x + \result FROM p1; p2 +[from] Function f3: + \result FROM x +[from] Function f4: + \result FROM x +[from] Function test1: + NO EFFECTS +[from] Function test2: + NO EFFECTS +[from] Function test3: + NO EFFECTS +[from] Function test4: + NO EFFECTS +[from] Function test5: + NO EFFECTS +[from] Function main: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function test1: + quotient; remainder; sign; errmsg[0..19]; r1; r2; r3; r4; r5; r6; r7; r8 +[inout] Inputs for function test1: + nondet +[inout] Out (internal) for function test2: + a; b; p; y; x +[inout] Inputs for function test2: + nondet +[inout] Out (internal) for function test3: + a; b; p; y; x +[inout] Inputs for function test3: + nondet +[inout] Out (internal) for function test4: + x +[inout] Inputs for function test4: + nondet +[inout] Out (internal) for function test5: + x +[inout] Inputs for function test5: + nondet +[inout] Out (internal) for function main: + __retres +[inout] Inputs for function main: + nondet diff --git a/tests/value/oracle_symblocs/big_lib_entry.err.oracle b/tests/value/oracle_symblocs/big_lib_entry.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/big_lib_entry.res.oracle b/tests/value/oracle_symblocs/big_lib_entry.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..c7db2fca3a625d016987056ee3735025a10716a3 --- /dev/null +++ b/tests/value/oracle_symblocs/big_lib_entry.res.oracle @@ -0,0 +1,9117 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/big_lib_entry.i (no preprocessing) +[value] Analyzing an incomplete application starting at main +[value] Computing initial state +tests/value/big_lib_entry.i:32:[value] Initializing a complex array of 1000 elements. This may take some time +[value] Initial state computed +[value:initial-state] Values of globals at initialization + s.c1 ∈ [--..--] + .[bits 8 to 31] ∈ UNINITIALIZED + .tcs[0].f1 ∈ [--..--] + .tcs[0].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + .tcs[0].f3 ∈ [--..--] + .tcs[0].[bits 72 to 95] ∈ UNINITIALIZED + .tcs[0].f4 ∈ {{ NULL ; &S_f4_0_tcs_s[0] }} + .tcs[0].f5 ∈ [--..--] + .tcs[0].[bits 136 to 159] ∈ UNINITIALIZED + .tcs[1].f1 ∈ [--..--] + .tcs[1].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + .tcs[1].f3 ∈ [--..--] + .tcs[1].[bits 72 to 95] ∈ UNINITIALIZED + .tcs[1].f4 ∈ {{ NULL ; &S_f4_1_tcs_s[0] }} + .tcs[1].f5 ∈ [--..--] + .tcs[1].[bits 136 to 159] ∈ UNINITIALIZED + .tcs[2].f1 ∈ [--..--] + .tcs[2].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + .tcs[2].f3 ∈ [--..--] + .tcs[2].[bits 72 to 95] ∈ UNINITIALIZED + .tcs[2].f4 ∈ {{ NULL ; &S_f4_2_tcs_s[0] }} + .tcs[2].f5 ∈ [--..--] + .tcs[2].[bits 136 to 159] ∈ UNINITIALIZED + .tcs[3].f1 ∈ [--..--] + .tcs[3].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + .tcs[3].f3 ∈ [--..--] + .tcs[3].[bits 72 to 95] ∈ UNINITIALIZED + .tcs[3].f4 ∈ {{ NULL ; &S_f4_3_tcs_s[0] }} + .tcs[3].f5 ∈ [--..--] + .tcs[3].[bits 136 to 159] ∈ UNINITIALIZED + .tcs[4].f1 ∈ [--..--] + .tcs[4].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + .tcs[4].f3 ∈ [--..--] + .tcs[4].[bits 72 to 95] ∈ UNINITIALIZED + .tcs[4].f4 ∈ + {{ NULL ; &S_f4_0_tcs_s[0] ; &S_f4_1_tcs_s[0] ; &S_f4_2_tcs_s[0] ; + &S_f4_3_tcs_s[0] }} + .tcs[4].f5 ∈ [--..--] + .tcs[4].[bits 136 to 159] ∈ UNINITIALIZED + .tcs[5].f1 ∈ [--..--] + .tcs[5].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + .tcs[5].f3 ∈ [--..--] + .tcs[5].[bits 72 to 95] ∈ UNINITIALIZED + .tcs[5].f4 ∈ + {{ NULL ; &S_f4_0_tcs_s[0] ; &S_f4_1_tcs_s[0] ; &S_f4_2_tcs_s[0] ; + &S_f4_3_tcs_s[0] }} + .tcs[5].f5 ∈ [--..--] + .tcs[5].[bits 136 to 159] ∈ UNINITIALIZED + .tcs[6].f1 ∈ [--..--] + .tcs[6].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + .tcs[6].f3 ∈ [--..--] + .tcs[6].[bits 72 to 95] ∈ UNINITIALIZED + .tcs[6].f4 ∈ + {{ NULL ; &S_f4_0_tcs_s[0] ; &S_f4_1_tcs_s[0] ; &S_f4_2_tcs_s[0] ; + &S_f4_3_tcs_s[0] }} + .tcs[6].f5 ∈ [--..--] + .tcs[6].[bits 136 to 159] ∈ UNINITIALIZED + .tcs[7].f1 ∈ [--..--] + .tcs[7].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + .tcs[7].f3 ∈ [--..--] + .tcs[7].[bits 72 to 95] ∈ UNINITIALIZED + .tcs[7].f4 ∈ + {{ NULL ; &S_f4_0_tcs_s[0] ; &S_f4_1_tcs_s[0] ; &S_f4_2_tcs_s[0] ; + &S_f4_3_tcs_s[0] }} + .tcs[7].f5 ∈ [--..--] + .tcs[7].[bits 136 to 159] ∈ UNINITIALIZED + .tcs[8].f1 ∈ [--..--] + .tcs[8].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + .tcs[8].f3 ∈ [--..--] + .tcs[8].[bits 72 to 95] ∈ UNINITIALIZED + .tcs[8].f4 ∈ + {{ NULL ; &S_f4_0_tcs_s[0] ; &S_f4_1_tcs_s[0] ; &S_f4_2_tcs_s[0] ; + &S_f4_3_tcs_s[0] }} + .tcs[8].f5 ∈ [--..--] + .tcs[8].[bits 136 to 159] ∈ UNINITIALIZED + .tcs[9].f1 ∈ [--..--] + .tcs[9].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + .tcs[9].f3 ∈ [--..--] + .tcs[9].[bits 72 to 95] ∈ UNINITIALIZED + .tcs[9].f4 ∈ + {{ NULL ; &S_f4_0_tcs_s[0] ; &S_f4_1_tcs_s[0] ; &S_f4_2_tcs_s[0] ; + &S_f4_3_tcs_s[0] }} + .tcs[9].f5 ∈ [--..--] + .tcs[9].[bits 136 to 159] ∈ UNINITIALIZED + .c2 ∈ [--..--] + .[bits 1640 to 1663] ∈ UNINITIALIZED + t1[0] ∈ {{ NULL ; &S_0_t1[0] }} + [1] ∈ {{ NULL ; &S_1_t1[0] }} + [2] ∈ {{ NULL ; &S_2_t1[0] }} + [3] ∈ {{ NULL ; &S_3_t1[0] }} + [4..4999999] ∈ + {{ NULL ; &S_0_t1[0] ; &S_1_t1[0] ; &S_2_t1[0] ; &S_3_t1[0] }} + t2[0..4999999] ∈ [--..--] + t3[0].f1 ∈ [--..--] + [0].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [0].f3 ∈ [--..--] + [0].[bits 72 to 95] ∈ UNINITIALIZED + [0].f4 ∈ {{ NULL ; &S_f4_0_t3[0] }} + [0].f5 ∈ [--..--] + [0].[bits 136 to 159] ∈ UNINITIALIZED + [1].f1 ∈ [--..--] + [1].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [1].f3 ∈ [--..--] + [1].[bits 72 to 95] ∈ UNINITIALIZED + [1].f4 ∈ {{ NULL ; &S_f4_1_t3[0] }} + [1].f5 ∈ [--..--] + [1].[bits 136 to 159] ∈ UNINITIALIZED + [2].f1 ∈ [--..--] + [2].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [2].f3 ∈ [--..--] + [2].[bits 72 to 95] ∈ UNINITIALIZED + [2].f4 ∈ {{ NULL ; &S_f4_2_t3[0] }} + [2].f5 ∈ [--..--] + [2].[bits 136 to 159] ∈ UNINITIALIZED + [3].f1 ∈ [--..--] + [3].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [3].f3 ∈ [--..--] + [3].[bits 72 to 95] ∈ UNINITIALIZED + [3].f4 ∈ {{ NULL ; &S_f4_3_t3[0] }} + [3].f5 ∈ [--..--] + [3].[bits 136 to 159] ∈ UNINITIALIZED + [4].f1 ∈ [--..--] + [4].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [4].f3 ∈ [--..--] + [4].[bits 72 to 95] ∈ UNINITIALIZED + [4].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [4].f5 ∈ [--..--] + [4].[bits 136 to 159] ∈ UNINITIALIZED + [5].f1 ∈ [--..--] + [5].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [5].f3 ∈ [--..--] + [5].[bits 72 to 95] ∈ UNINITIALIZED + [5].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [5].f5 ∈ [--..--] + [5].[bits 136 to 159] ∈ UNINITIALIZED + [6].f1 ∈ [--..--] + [6].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [6].f3 ∈ [--..--] + [6].[bits 72 to 95] ∈ UNINITIALIZED + [6].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [6].f5 ∈ [--..--] + [6].[bits 136 to 159] ∈ UNINITIALIZED + [7].f1 ∈ [--..--] + [7].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [7].f3 ∈ [--..--] + [7].[bits 72 to 95] ∈ UNINITIALIZED + [7].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [7].f5 ∈ [--..--] + [7].[bits 136 to 159] ∈ UNINITIALIZED + [8].f1 ∈ [--..--] + [8].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [8].f3 ∈ [--..--] + [8].[bits 72 to 95] ∈ UNINITIALIZED + [8].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [8].f5 ∈ [--..--] + [8].[bits 136 to 159] ∈ UNINITIALIZED + [9].f1 ∈ [--..--] + [9].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [9].f3 ∈ [--..--] + [9].[bits 72 to 95] ∈ UNINITIALIZED + [9].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [9].f5 ∈ [--..--] + [9].[bits 136 to 159] ∈ UNINITIALIZED + [10].f1 ∈ [--..--] + [10].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [10].f3 ∈ [--..--] + [10].[bits 72 to 95] ∈ UNINITIALIZED + [10].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [10].f5 ∈ [--..--] + [10].[bits 136 to 159] ∈ UNINITIALIZED + [11].f1 ∈ [--..--] + [11].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [11].f3 ∈ [--..--] + [11].[bits 72 to 95] ∈ UNINITIALIZED + [11].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [11].f5 ∈ [--..--] + [11].[bits 136 to 159] ∈ UNINITIALIZED + [12].f1 ∈ [--..--] + [12].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [12].f3 ∈ [--..--] + [12].[bits 72 to 95] ∈ UNINITIALIZED + [12].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [12].f5 ∈ [--..--] + [12].[bits 136 to 159] ∈ UNINITIALIZED + [13].f1 ∈ [--..--] + [13].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [13].f3 ∈ [--..--] + [13].[bits 72 to 95] ∈ UNINITIALIZED + [13].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [13].f5 ∈ [--..--] + [13].[bits 136 to 159] ∈ UNINITIALIZED + [14].f1 ∈ [--..--] + [14].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [14].f3 ∈ [--..--] + [14].[bits 72 to 95] ∈ UNINITIALIZED + [14].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [14].f5 ∈ [--..--] + [14].[bits 136 to 159] ∈ UNINITIALIZED + [15].f1 ∈ [--..--] + [15].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [15].f3 ∈ [--..--] + [15].[bits 72 to 95] ∈ UNINITIALIZED + [15].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [15].f5 ∈ [--..--] + [15].[bits 136 to 159] ∈ UNINITIALIZED + [16].f1 ∈ [--..--] + [16].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [16].f3 ∈ [--..--] + [16].[bits 72 to 95] ∈ UNINITIALIZED + [16].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [16].f5 ∈ [--..--] + [16].[bits 136 to 159] ∈ UNINITIALIZED + [17].f1 ∈ [--..--] + [17].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [17].f3 ∈ [--..--] + [17].[bits 72 to 95] ∈ UNINITIALIZED + [17].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [17].f5 ∈ [--..--] + [17].[bits 136 to 159] ∈ UNINITIALIZED + [18].f1 ∈ [--..--] + [18].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [18].f3 ∈ [--..--] + [18].[bits 72 to 95] ∈ UNINITIALIZED + [18].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [18].f5 ∈ [--..--] + [18].[bits 136 to 159] ∈ UNINITIALIZED + [19].f1 ∈ [--..--] + [19].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [19].f3 ∈ [--..--] + [19].[bits 72 to 95] ∈ UNINITIALIZED + [19].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [19].f5 ∈ [--..--] + [19].[bits 136 to 159] ∈ UNINITIALIZED + [20].f1 ∈ [--..--] + [20].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [20].f3 ∈ [--..--] + [20].[bits 72 to 95] ∈ UNINITIALIZED + [20].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [20].f5 ∈ [--..--] + [20].[bits 136 to 159] ∈ UNINITIALIZED + [21].f1 ∈ [--..--] + [21].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [21].f3 ∈ [--..--] + [21].[bits 72 to 95] ∈ UNINITIALIZED + [21].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [21].f5 ∈ [--..--] + [21].[bits 136 to 159] ∈ UNINITIALIZED + [22].f1 ∈ [--..--] + [22].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [22].f3 ∈ [--..--] + [22].[bits 72 to 95] ∈ UNINITIALIZED + [22].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [22].f5 ∈ [--..--] + [22].[bits 136 to 159] ∈ UNINITIALIZED + [23].f1 ∈ [--..--] + [23].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [23].f3 ∈ [--..--] + [23].[bits 72 to 95] ∈ UNINITIALIZED + [23].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [23].f5 ∈ [--..--] + [23].[bits 136 to 159] ∈ UNINITIALIZED + [24].f1 ∈ [--..--] + [24].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [24].f3 ∈ [--..--] + [24].[bits 72 to 95] ∈ UNINITIALIZED + [24].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [24].f5 ∈ [--..--] + [24].[bits 136 to 159] ∈ UNINITIALIZED + [25].f1 ∈ [--..--] + [25].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [25].f3 ∈ [--..--] + [25].[bits 72 to 95] ∈ UNINITIALIZED + [25].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [25].f5 ∈ [--..--] + [25].[bits 136 to 159] ∈ UNINITIALIZED + [26].f1 ∈ [--..--] + [26].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [26].f3 ∈ [--..--] + [26].[bits 72 to 95] ∈ UNINITIALIZED + [26].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [26].f5 ∈ [--..--] + [26].[bits 136 to 159] ∈ UNINITIALIZED + [27].f1 ∈ [--..--] + [27].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [27].f3 ∈ [--..--] + [27].[bits 72 to 95] ∈ UNINITIALIZED + [27].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [27].f5 ∈ [--..--] + [27].[bits 136 to 159] ∈ UNINITIALIZED + [28].f1 ∈ [--..--] + [28].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [28].f3 ∈ [--..--] + [28].[bits 72 to 95] ∈ UNINITIALIZED + [28].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [28].f5 ∈ [--..--] + [28].[bits 136 to 159] ∈ UNINITIALIZED + [29].f1 ∈ [--..--] + [29].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [29].f3 ∈ [--..--] + [29].[bits 72 to 95] ∈ UNINITIALIZED + [29].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [29].f5 ∈ [--..--] + [29].[bits 136 to 159] ∈ UNINITIALIZED + [30].f1 ∈ [--..--] + [30].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [30].f3 ∈ [--..--] + [30].[bits 72 to 95] ∈ UNINITIALIZED + [30].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [30].f5 ∈ [--..--] + [30].[bits 136 to 159] ∈ UNINITIALIZED + [31].f1 ∈ [--..--] + [31].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [31].f3 ∈ [--..--] + [31].[bits 72 to 95] ∈ UNINITIALIZED + [31].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [31].f5 ∈ [--..--] + [31].[bits 136 to 159] ∈ UNINITIALIZED + [32].f1 ∈ [--..--] + [32].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [32].f3 ∈ [--..--] + [32].[bits 72 to 95] ∈ UNINITIALIZED + [32].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [32].f5 ∈ [--..--] + [32].[bits 136 to 159] ∈ UNINITIALIZED + [33].f1 ∈ [--..--] + [33].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [33].f3 ∈ [--..--] + [33].[bits 72 to 95] ∈ UNINITIALIZED + [33].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [33].f5 ∈ [--..--] + [33].[bits 136 to 159] ∈ UNINITIALIZED + [34].f1 ∈ [--..--] + [34].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [34].f3 ∈ [--..--] + [34].[bits 72 to 95] ∈ UNINITIALIZED + [34].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [34].f5 ∈ [--..--] + [34].[bits 136 to 159] ∈ UNINITIALIZED + [35].f1 ∈ [--..--] + [35].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [35].f3 ∈ [--..--] + [35].[bits 72 to 95] ∈ UNINITIALIZED + [35].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [35].f5 ∈ [--..--] + [35].[bits 136 to 159] ∈ UNINITIALIZED + [36].f1 ∈ [--..--] + [36].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [36].f3 ∈ [--..--] + [36].[bits 72 to 95] ∈ UNINITIALIZED + [36].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [36].f5 ∈ [--..--] + [36].[bits 136 to 159] ∈ UNINITIALIZED + [37].f1 ∈ [--..--] + [37].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [37].f3 ∈ [--..--] + [37].[bits 72 to 95] ∈ UNINITIALIZED + [37].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [37].f5 ∈ [--..--] + [37].[bits 136 to 159] ∈ UNINITIALIZED + [38].f1 ∈ [--..--] + [38].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [38].f3 ∈ [--..--] + [38].[bits 72 to 95] ∈ UNINITIALIZED + [38].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [38].f5 ∈ [--..--] + [38].[bits 136 to 159] ∈ UNINITIALIZED + [39].f1 ∈ [--..--] + [39].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [39].f3 ∈ [--..--] + [39].[bits 72 to 95] ∈ UNINITIALIZED + [39].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [39].f5 ∈ [--..--] + [39].[bits 136 to 159] ∈ UNINITIALIZED + [40].f1 ∈ [--..--] + [40].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [40].f3 ∈ [--..--] + [40].[bits 72 to 95] ∈ UNINITIALIZED + [40].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [40].f5 ∈ [--..--] + [40].[bits 136 to 159] ∈ UNINITIALIZED + [41].f1 ∈ [--..--] + [41].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [41].f3 ∈ [--..--] + [41].[bits 72 to 95] ∈ UNINITIALIZED + [41].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [41].f5 ∈ [--..--] + [41].[bits 136 to 159] ∈ UNINITIALIZED + [42].f1 ∈ [--..--] + [42].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [42].f3 ∈ [--..--] + [42].[bits 72 to 95] ∈ UNINITIALIZED + [42].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [42].f5 ∈ [--..--] + [42].[bits 136 to 159] ∈ UNINITIALIZED + [43].f1 ∈ [--..--] + [43].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [43].f3 ∈ [--..--] + [43].[bits 72 to 95] ∈ UNINITIALIZED + [43].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [43].f5 ∈ [--..--] + [43].[bits 136 to 159] ∈ UNINITIALIZED + [44].f1 ∈ [--..--] + [44].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [44].f3 ∈ [--..--] + [44].[bits 72 to 95] ∈ UNINITIALIZED + [44].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [44].f5 ∈ [--..--] + [44].[bits 136 to 159] ∈ UNINITIALIZED + [45].f1 ∈ [--..--] + [45].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [45].f3 ∈ [--..--] + [45].[bits 72 to 95] ∈ UNINITIALIZED + [45].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [45].f5 ∈ [--..--] + [45].[bits 136 to 159] ∈ UNINITIALIZED + [46].f1 ∈ [--..--] + [46].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [46].f3 ∈ [--..--] + [46].[bits 72 to 95] ∈ UNINITIALIZED + [46].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [46].f5 ∈ [--..--] + [46].[bits 136 to 159] ∈ UNINITIALIZED + [47].f1 ∈ [--..--] + [47].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [47].f3 ∈ [--..--] + [47].[bits 72 to 95] ∈ UNINITIALIZED + [47].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [47].f5 ∈ [--..--] + [47].[bits 136 to 159] ∈ UNINITIALIZED + [48].f1 ∈ [--..--] + [48].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [48].f3 ∈ [--..--] + [48].[bits 72 to 95] ∈ UNINITIALIZED + [48].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [48].f5 ∈ [--..--] + [48].[bits 136 to 159] ∈ UNINITIALIZED + [49].f1 ∈ [--..--] + [49].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [49].f3 ∈ [--..--] + [49].[bits 72 to 95] ∈ UNINITIALIZED + [49].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [49].f5 ∈ [--..--] + [49].[bits 136 to 159] ∈ UNINITIALIZED + [50].f1 ∈ [--..--] + [50].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [50].f3 ∈ [--..--] + [50].[bits 72 to 95] ∈ UNINITIALIZED + [50].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [50].f5 ∈ [--..--] + [50].[bits 136 to 159] ∈ UNINITIALIZED + [51].f1 ∈ [--..--] + [51].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [51].f3 ∈ [--..--] + [51].[bits 72 to 95] ∈ UNINITIALIZED + [51].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [51].f5 ∈ [--..--] + [51].[bits 136 to 159] ∈ UNINITIALIZED + [52].f1 ∈ [--..--] + [52].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [52].f3 ∈ [--..--] + [52].[bits 72 to 95] ∈ UNINITIALIZED + [52].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [52].f5 ∈ [--..--] + [52].[bits 136 to 159] ∈ UNINITIALIZED + [53].f1 ∈ [--..--] + [53].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [53].f3 ∈ [--..--] + [53].[bits 72 to 95] ∈ UNINITIALIZED + [53].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [53].f5 ∈ [--..--] + [53].[bits 136 to 159] ∈ UNINITIALIZED + [54].f1 ∈ [--..--] + [54].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [54].f3 ∈ [--..--] + [54].[bits 72 to 95] ∈ UNINITIALIZED + [54].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [54].f5 ∈ [--..--] + [54].[bits 136 to 159] ∈ UNINITIALIZED + [55].f1 ∈ [--..--] + [55].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [55].f3 ∈ [--..--] + [55].[bits 72 to 95] ∈ UNINITIALIZED + [55].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [55].f5 ∈ [--..--] + [55].[bits 136 to 159] ∈ UNINITIALIZED + [56].f1 ∈ [--..--] + [56].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [56].f3 ∈ [--..--] + [56].[bits 72 to 95] ∈ UNINITIALIZED + [56].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [56].f5 ∈ [--..--] + [56].[bits 136 to 159] ∈ UNINITIALIZED + [57].f1 ∈ [--..--] + [57].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [57].f3 ∈ [--..--] + [57].[bits 72 to 95] ∈ UNINITIALIZED + [57].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [57].f5 ∈ [--..--] + [57].[bits 136 to 159] ∈ UNINITIALIZED + [58].f1 ∈ [--..--] + [58].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [58].f3 ∈ [--..--] + [58].[bits 72 to 95] ∈ UNINITIALIZED + [58].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [58].f5 ∈ [--..--] + [58].[bits 136 to 159] ∈ UNINITIALIZED + [59].f1 ∈ [--..--] + [59].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [59].f3 ∈ [--..--] + [59].[bits 72 to 95] ∈ UNINITIALIZED + [59].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [59].f5 ∈ [--..--] + [59].[bits 136 to 159] ∈ UNINITIALIZED + [60].f1 ∈ [--..--] + [60].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [60].f3 ∈ [--..--] + [60].[bits 72 to 95] ∈ UNINITIALIZED + [60].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [60].f5 ∈ [--..--] + [60].[bits 136 to 159] ∈ UNINITIALIZED + [61].f1 ∈ [--..--] + [61].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [61].f3 ∈ [--..--] + [61].[bits 72 to 95] ∈ UNINITIALIZED + [61].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [61].f5 ∈ [--..--] + [61].[bits 136 to 159] ∈ UNINITIALIZED + [62].f1 ∈ [--..--] + [62].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [62].f3 ∈ [--..--] + [62].[bits 72 to 95] ∈ UNINITIALIZED + [62].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [62].f5 ∈ [--..--] + [62].[bits 136 to 159] ∈ UNINITIALIZED + [63].f1 ∈ [--..--] + [63].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [63].f3 ∈ [--..--] + [63].[bits 72 to 95] ∈ UNINITIALIZED + [63].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [63].f5 ∈ [--..--] + [63].[bits 136 to 159] ∈ UNINITIALIZED + [64].f1 ∈ [--..--] + [64].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [64].f3 ∈ [--..--] + [64].[bits 72 to 95] ∈ UNINITIALIZED + [64].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [64].f5 ∈ [--..--] + [64].[bits 136 to 159] ∈ UNINITIALIZED + [65].f1 ∈ [--..--] + [65].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [65].f3 ∈ [--..--] + [65].[bits 72 to 95] ∈ UNINITIALIZED + [65].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [65].f5 ∈ [--..--] + [65].[bits 136 to 159] ∈ UNINITIALIZED + [66].f1 ∈ [--..--] + [66].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [66].f3 ∈ [--..--] + [66].[bits 72 to 95] ∈ UNINITIALIZED + [66].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [66].f5 ∈ [--..--] + [66].[bits 136 to 159] ∈ UNINITIALIZED + [67].f1 ∈ [--..--] + [67].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [67].f3 ∈ [--..--] + [67].[bits 72 to 95] ∈ UNINITIALIZED + [67].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [67].f5 ∈ [--..--] + [67].[bits 136 to 159] ∈ UNINITIALIZED + [68].f1 ∈ [--..--] + [68].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [68].f3 ∈ [--..--] + [68].[bits 72 to 95] ∈ UNINITIALIZED + [68].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [68].f5 ∈ [--..--] + [68].[bits 136 to 159] ∈ UNINITIALIZED + [69].f1 ∈ [--..--] + [69].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [69].f3 ∈ [--..--] + [69].[bits 72 to 95] ∈ UNINITIALIZED + [69].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [69].f5 ∈ [--..--] + [69].[bits 136 to 159] ∈ UNINITIALIZED + [70].f1 ∈ [--..--] + [70].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [70].f3 ∈ [--..--] + [70].[bits 72 to 95] ∈ UNINITIALIZED + [70].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [70].f5 ∈ [--..--] + [70].[bits 136 to 159] ∈ UNINITIALIZED + [71].f1 ∈ [--..--] + [71].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [71].f3 ∈ [--..--] + [71].[bits 72 to 95] ∈ UNINITIALIZED + [71].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [71].f5 ∈ [--..--] + [71].[bits 136 to 159] ∈ UNINITIALIZED + [72].f1 ∈ [--..--] + [72].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [72].f3 ∈ [--..--] + [72].[bits 72 to 95] ∈ UNINITIALIZED + [72].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [72].f5 ∈ [--..--] + [72].[bits 136 to 159] ∈ UNINITIALIZED + [73].f1 ∈ [--..--] + [73].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [73].f3 ∈ [--..--] + [73].[bits 72 to 95] ∈ UNINITIALIZED + [73].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [73].f5 ∈ [--..--] + [73].[bits 136 to 159] ∈ UNINITIALIZED + [74].f1 ∈ [--..--] + [74].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [74].f3 ∈ [--..--] + [74].[bits 72 to 95] ∈ UNINITIALIZED + [74].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [74].f5 ∈ [--..--] + [74].[bits 136 to 159] ∈ UNINITIALIZED + [75].f1 ∈ [--..--] + [75].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [75].f3 ∈ [--..--] + [75].[bits 72 to 95] ∈ UNINITIALIZED + [75].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [75].f5 ∈ [--..--] + [75].[bits 136 to 159] ∈ UNINITIALIZED + [76].f1 ∈ [--..--] + [76].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [76].f3 ∈ [--..--] + [76].[bits 72 to 95] ∈ UNINITIALIZED + [76].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [76].f5 ∈ [--..--] + [76].[bits 136 to 159] ∈ UNINITIALIZED + [77].f1 ∈ [--..--] + [77].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [77].f3 ∈ [--..--] + [77].[bits 72 to 95] ∈ UNINITIALIZED + [77].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [77].f5 ∈ [--..--] + [77].[bits 136 to 159] ∈ UNINITIALIZED + [78].f1 ∈ [--..--] + [78].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [78].f3 ∈ [--..--] + [78].[bits 72 to 95] ∈ UNINITIALIZED + [78].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [78].f5 ∈ [--..--] + [78].[bits 136 to 159] ∈ UNINITIALIZED + [79].f1 ∈ [--..--] + [79].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [79].f3 ∈ [--..--] + [79].[bits 72 to 95] ∈ UNINITIALIZED + [79].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [79].f5 ∈ [--..--] + [79].[bits 136 to 159] ∈ UNINITIALIZED + [80].f1 ∈ [--..--] + [80].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [80].f3 ∈ [--..--] + [80].[bits 72 to 95] ∈ UNINITIALIZED + [80].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [80].f5 ∈ [--..--] + [80].[bits 136 to 159] ∈ UNINITIALIZED + [81].f1 ∈ [--..--] + [81].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [81].f3 ∈ [--..--] + [81].[bits 72 to 95] ∈ UNINITIALIZED + [81].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [81].f5 ∈ [--..--] + [81].[bits 136 to 159] ∈ UNINITIALIZED + [82].f1 ∈ [--..--] + [82].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [82].f3 ∈ [--..--] + [82].[bits 72 to 95] ∈ UNINITIALIZED + [82].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [82].f5 ∈ [--..--] + [82].[bits 136 to 159] ∈ UNINITIALIZED + [83].f1 ∈ [--..--] + [83].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [83].f3 ∈ [--..--] + [83].[bits 72 to 95] ∈ UNINITIALIZED + [83].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [83].f5 ∈ [--..--] + [83].[bits 136 to 159] ∈ UNINITIALIZED + [84].f1 ∈ [--..--] + [84].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [84].f3 ∈ [--..--] + [84].[bits 72 to 95] ∈ UNINITIALIZED + [84].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [84].f5 ∈ [--..--] + [84].[bits 136 to 159] ∈ UNINITIALIZED + [85].f1 ∈ [--..--] + [85].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [85].f3 ∈ [--..--] + [85].[bits 72 to 95] ∈ UNINITIALIZED + [85].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [85].f5 ∈ [--..--] + [85].[bits 136 to 159] ∈ UNINITIALIZED + [86].f1 ∈ [--..--] + [86].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [86].f3 ∈ [--..--] + [86].[bits 72 to 95] ∈ UNINITIALIZED + [86].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [86].f5 ∈ [--..--] + [86].[bits 136 to 159] ∈ UNINITIALIZED + [87].f1 ∈ [--..--] + [87].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [87].f3 ∈ [--..--] + [87].[bits 72 to 95] ∈ UNINITIALIZED + [87].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [87].f5 ∈ [--..--] + [87].[bits 136 to 159] ∈ UNINITIALIZED + [88].f1 ∈ [--..--] + [88].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [88].f3 ∈ [--..--] + [88].[bits 72 to 95] ∈ UNINITIALIZED + [88].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [88].f5 ∈ [--..--] + [88].[bits 136 to 159] ∈ UNINITIALIZED + [89].f1 ∈ [--..--] + [89].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [89].f3 ∈ [--..--] + [89].[bits 72 to 95] ∈ UNINITIALIZED + [89].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [89].f5 ∈ [--..--] + [89].[bits 136 to 159] ∈ UNINITIALIZED + [90].f1 ∈ [--..--] + [90].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [90].f3 ∈ [--..--] + [90].[bits 72 to 95] ∈ UNINITIALIZED + [90].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [90].f5 ∈ [--..--] + [90].[bits 136 to 159] ∈ UNINITIALIZED + [91].f1 ∈ [--..--] + [91].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [91].f3 ∈ [--..--] + [91].[bits 72 to 95] ∈ UNINITIALIZED + [91].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [91].f5 ∈ [--..--] + [91].[bits 136 to 159] ∈ UNINITIALIZED + [92].f1 ∈ [--..--] + [92].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [92].f3 ∈ [--..--] + [92].[bits 72 to 95] ∈ UNINITIALIZED + [92].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [92].f5 ∈ [--..--] + [92].[bits 136 to 159] ∈ UNINITIALIZED + [93].f1 ∈ [--..--] + [93].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [93].f3 ∈ [--..--] + [93].[bits 72 to 95] ∈ UNINITIALIZED + [93].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [93].f5 ∈ [--..--] + [93].[bits 136 to 159] ∈ UNINITIALIZED + [94].f1 ∈ [--..--] + [94].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [94].f3 ∈ [--..--] + [94].[bits 72 to 95] ∈ UNINITIALIZED + [94].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [94].f5 ∈ [--..--] + [94].[bits 136 to 159] ∈ UNINITIALIZED + [95].f1 ∈ [--..--] + [95].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [95].f3 ∈ [--..--] + [95].[bits 72 to 95] ∈ UNINITIALIZED + [95].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [95].f5 ∈ [--..--] + [95].[bits 136 to 159] ∈ UNINITIALIZED + [96].f1 ∈ [--..--] + [96].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [96].f3 ∈ [--..--] + [96].[bits 72 to 95] ∈ UNINITIALIZED + [96].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [96].f5 ∈ [--..--] + [96].[bits 136 to 159] ∈ UNINITIALIZED + [97].f1 ∈ [--..--] + [97].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [97].f3 ∈ [--..--] + [97].[bits 72 to 95] ∈ UNINITIALIZED + [97].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [97].f5 ∈ [--..--] + [97].[bits 136 to 159] ∈ UNINITIALIZED + [98].f1 ∈ [--..--] + [98].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [98].f3 ∈ [--..--] + [98].[bits 72 to 95] ∈ UNINITIALIZED + [98].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [98].f5 ∈ [--..--] + [98].[bits 136 to 159] ∈ UNINITIALIZED + [99].f1 ∈ [--..--] + [99].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [99].f3 ∈ [--..--] + [99].[bits 72 to 95] ∈ UNINITIALIZED + [99].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [99].f5 ∈ [--..--] + [99].[bits 136 to 159] ∈ UNINITIALIZED + [100].f1 ∈ [--..--] + [100].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [100].f3 ∈ [--..--] + [100].[bits 72 to 95] ∈ UNINITIALIZED + [100].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [100].f5 ∈ [--..--] + [100].[bits 136 to 159] ∈ UNINITIALIZED + [101].f1 ∈ [--..--] + [101].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [101].f3 ∈ [--..--] + [101].[bits 72 to 95] ∈ UNINITIALIZED + [101].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [101].f5 ∈ [--..--] + [101].[bits 136 to 159] ∈ UNINITIALIZED + [102].f1 ∈ [--..--] + [102].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [102].f3 ∈ [--..--] + [102].[bits 72 to 95] ∈ UNINITIALIZED + [102].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [102].f5 ∈ [--..--] + [102].[bits 136 to 159] ∈ UNINITIALIZED + [103].f1 ∈ [--..--] + [103].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [103].f3 ∈ [--..--] + [103].[bits 72 to 95] ∈ UNINITIALIZED + [103].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [103].f5 ∈ [--..--] + [103].[bits 136 to 159] ∈ UNINITIALIZED + [104].f1 ∈ [--..--] + [104].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [104].f3 ∈ [--..--] + [104].[bits 72 to 95] ∈ UNINITIALIZED + [104].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [104].f5 ∈ [--..--] + [104].[bits 136 to 159] ∈ UNINITIALIZED + [105].f1 ∈ [--..--] + [105].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [105].f3 ∈ [--..--] + [105].[bits 72 to 95] ∈ UNINITIALIZED + [105].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [105].f5 ∈ [--..--] + [105].[bits 136 to 159] ∈ UNINITIALIZED + [106].f1 ∈ [--..--] + [106].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [106].f3 ∈ [--..--] + [106].[bits 72 to 95] ∈ UNINITIALIZED + [106].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [106].f5 ∈ [--..--] + [106].[bits 136 to 159] ∈ UNINITIALIZED + [107].f1 ∈ [--..--] + [107].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [107].f3 ∈ [--..--] + [107].[bits 72 to 95] ∈ UNINITIALIZED + [107].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [107].f5 ∈ [--..--] + [107].[bits 136 to 159] ∈ UNINITIALIZED + [108].f1 ∈ [--..--] + [108].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [108].f3 ∈ [--..--] + [108].[bits 72 to 95] ∈ UNINITIALIZED + [108].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [108].f5 ∈ [--..--] + [108].[bits 136 to 159] ∈ UNINITIALIZED + [109].f1 ∈ [--..--] + [109].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [109].f3 ∈ [--..--] + [109].[bits 72 to 95] ∈ UNINITIALIZED + [109].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [109].f5 ∈ [--..--] + [109].[bits 136 to 159] ∈ UNINITIALIZED + [110].f1 ∈ [--..--] + [110].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [110].f3 ∈ [--..--] + [110].[bits 72 to 95] ∈ UNINITIALIZED + [110].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [110].f5 ∈ [--..--] + [110].[bits 136 to 159] ∈ UNINITIALIZED + [111].f1 ∈ [--..--] + [111].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [111].f3 ∈ [--..--] + [111].[bits 72 to 95] ∈ UNINITIALIZED + [111].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [111].f5 ∈ [--..--] + [111].[bits 136 to 159] ∈ UNINITIALIZED + [112].f1 ∈ [--..--] + [112].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [112].f3 ∈ [--..--] + [112].[bits 72 to 95] ∈ UNINITIALIZED + [112].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [112].f5 ∈ [--..--] + [112].[bits 136 to 159] ∈ UNINITIALIZED + [113].f1 ∈ [--..--] + [113].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [113].f3 ∈ [--..--] + [113].[bits 72 to 95] ∈ UNINITIALIZED + [113].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [113].f5 ∈ [--..--] + [113].[bits 136 to 159] ∈ UNINITIALIZED + [114].f1 ∈ [--..--] + [114].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [114].f3 ∈ [--..--] + [114].[bits 72 to 95] ∈ UNINITIALIZED + [114].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [114].f5 ∈ [--..--] + [114].[bits 136 to 159] ∈ UNINITIALIZED + [115].f1 ∈ [--..--] + [115].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [115].f3 ∈ [--..--] + [115].[bits 72 to 95] ∈ UNINITIALIZED + [115].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [115].f5 ∈ [--..--] + [115].[bits 136 to 159] ∈ UNINITIALIZED + [116].f1 ∈ [--..--] + [116].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [116].f3 ∈ [--..--] + [116].[bits 72 to 95] ∈ UNINITIALIZED + [116].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [116].f5 ∈ [--..--] + [116].[bits 136 to 159] ∈ UNINITIALIZED + [117].f1 ∈ [--..--] + [117].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [117].f3 ∈ [--..--] + [117].[bits 72 to 95] ∈ UNINITIALIZED + [117].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [117].f5 ∈ [--..--] + [117].[bits 136 to 159] ∈ UNINITIALIZED + [118].f1 ∈ [--..--] + [118].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [118].f3 ∈ [--..--] + [118].[bits 72 to 95] ∈ UNINITIALIZED + [118].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [118].f5 ∈ [--..--] + [118].[bits 136 to 159] ∈ UNINITIALIZED + [119].f1 ∈ [--..--] + [119].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [119].f3 ∈ [--..--] + [119].[bits 72 to 95] ∈ UNINITIALIZED + [119].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [119].f5 ∈ [--..--] + [119].[bits 136 to 159] ∈ UNINITIALIZED + [120].f1 ∈ [--..--] + [120].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [120].f3 ∈ [--..--] + [120].[bits 72 to 95] ∈ UNINITIALIZED + [120].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [120].f5 ∈ [--..--] + [120].[bits 136 to 159] ∈ UNINITIALIZED + [121].f1 ∈ [--..--] + [121].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [121].f3 ∈ [--..--] + [121].[bits 72 to 95] ∈ UNINITIALIZED + [121].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [121].f5 ∈ [--..--] + [121].[bits 136 to 159] ∈ UNINITIALIZED + [122].f1 ∈ [--..--] + [122].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [122].f3 ∈ [--..--] + [122].[bits 72 to 95] ∈ UNINITIALIZED + [122].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [122].f5 ∈ [--..--] + [122].[bits 136 to 159] ∈ UNINITIALIZED + [123].f1 ∈ [--..--] + [123].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [123].f3 ∈ [--..--] + [123].[bits 72 to 95] ∈ UNINITIALIZED + [123].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [123].f5 ∈ [--..--] + [123].[bits 136 to 159] ∈ UNINITIALIZED + [124].f1 ∈ [--..--] + [124].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [124].f3 ∈ [--..--] + [124].[bits 72 to 95] ∈ UNINITIALIZED + [124].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [124].f5 ∈ [--..--] + [124].[bits 136 to 159] ∈ UNINITIALIZED + [125].f1 ∈ [--..--] + [125].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [125].f3 ∈ [--..--] + [125].[bits 72 to 95] ∈ UNINITIALIZED + [125].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [125].f5 ∈ [--..--] + [125].[bits 136 to 159] ∈ UNINITIALIZED + [126].f1 ∈ [--..--] + [126].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [126].f3 ∈ [--..--] + [126].[bits 72 to 95] ∈ UNINITIALIZED + [126].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [126].f5 ∈ [--..--] + [126].[bits 136 to 159] ∈ UNINITIALIZED + [127].f1 ∈ [--..--] + [127].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [127].f3 ∈ [--..--] + [127].[bits 72 to 95] ∈ UNINITIALIZED + [127].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [127].f5 ∈ [--..--] + [127].[bits 136 to 159] ∈ UNINITIALIZED + [128].f1 ∈ [--..--] + [128].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [128].f3 ∈ [--..--] + [128].[bits 72 to 95] ∈ UNINITIALIZED + [128].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [128].f5 ∈ [--..--] + [128].[bits 136 to 159] ∈ UNINITIALIZED + [129].f1 ∈ [--..--] + [129].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [129].f3 ∈ [--..--] + [129].[bits 72 to 95] ∈ UNINITIALIZED + [129].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [129].f5 ∈ [--..--] + [129].[bits 136 to 159] ∈ UNINITIALIZED + [130].f1 ∈ [--..--] + [130].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [130].f3 ∈ [--..--] + [130].[bits 72 to 95] ∈ UNINITIALIZED + [130].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [130].f5 ∈ [--..--] + [130].[bits 136 to 159] ∈ UNINITIALIZED + [131].f1 ∈ [--..--] + [131].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [131].f3 ∈ [--..--] + [131].[bits 72 to 95] ∈ UNINITIALIZED + [131].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [131].f5 ∈ [--..--] + [131].[bits 136 to 159] ∈ UNINITIALIZED + [132].f1 ∈ [--..--] + [132].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [132].f3 ∈ [--..--] + [132].[bits 72 to 95] ∈ UNINITIALIZED + [132].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [132].f5 ∈ [--..--] + [132].[bits 136 to 159] ∈ UNINITIALIZED + [133].f1 ∈ [--..--] + [133].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [133].f3 ∈ [--..--] + [133].[bits 72 to 95] ∈ UNINITIALIZED + [133].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [133].f5 ∈ [--..--] + [133].[bits 136 to 159] ∈ UNINITIALIZED + [134].f1 ∈ [--..--] + [134].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [134].f3 ∈ [--..--] + [134].[bits 72 to 95] ∈ UNINITIALIZED + [134].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [134].f5 ∈ [--..--] + [134].[bits 136 to 159] ∈ UNINITIALIZED + [135].f1 ∈ [--..--] + [135].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [135].f3 ∈ [--..--] + [135].[bits 72 to 95] ∈ UNINITIALIZED + [135].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [135].f5 ∈ [--..--] + [135].[bits 136 to 159] ∈ UNINITIALIZED + [136].f1 ∈ [--..--] + [136].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [136].f3 ∈ [--..--] + [136].[bits 72 to 95] ∈ UNINITIALIZED + [136].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [136].f5 ∈ [--..--] + [136].[bits 136 to 159] ∈ UNINITIALIZED + [137].f1 ∈ [--..--] + [137].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [137].f3 ∈ [--..--] + [137].[bits 72 to 95] ∈ UNINITIALIZED + [137].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [137].f5 ∈ [--..--] + [137].[bits 136 to 159] ∈ UNINITIALIZED + [138].f1 ∈ [--..--] + [138].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [138].f3 ∈ [--..--] + [138].[bits 72 to 95] ∈ UNINITIALIZED + [138].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [138].f5 ∈ [--..--] + [138].[bits 136 to 159] ∈ UNINITIALIZED + [139].f1 ∈ [--..--] + [139].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [139].f3 ∈ [--..--] + [139].[bits 72 to 95] ∈ UNINITIALIZED + [139].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [139].f5 ∈ [--..--] + [139].[bits 136 to 159] ∈ UNINITIALIZED + [140].f1 ∈ [--..--] + [140].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [140].f3 ∈ [--..--] + [140].[bits 72 to 95] ∈ UNINITIALIZED + [140].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [140].f5 ∈ [--..--] + [140].[bits 136 to 159] ∈ UNINITIALIZED + [141].f1 ∈ [--..--] + [141].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [141].f3 ∈ [--..--] + [141].[bits 72 to 95] ∈ UNINITIALIZED + [141].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [141].f5 ∈ [--..--] + [141].[bits 136 to 159] ∈ UNINITIALIZED + [142].f1 ∈ [--..--] + [142].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [142].f3 ∈ [--..--] + [142].[bits 72 to 95] ∈ UNINITIALIZED + [142].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [142].f5 ∈ [--..--] + [142].[bits 136 to 159] ∈ UNINITIALIZED + [143].f1 ∈ [--..--] + [143].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [143].f3 ∈ [--..--] + [143].[bits 72 to 95] ∈ UNINITIALIZED + [143].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [143].f5 ∈ [--..--] + [143].[bits 136 to 159] ∈ UNINITIALIZED + [144].f1 ∈ [--..--] + [144].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [144].f3 ∈ [--..--] + [144].[bits 72 to 95] ∈ UNINITIALIZED + [144].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [144].f5 ∈ [--..--] + [144].[bits 136 to 159] ∈ UNINITIALIZED + [145].f1 ∈ [--..--] + [145].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [145].f3 ∈ [--..--] + [145].[bits 72 to 95] ∈ UNINITIALIZED + [145].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [145].f5 ∈ [--..--] + [145].[bits 136 to 159] ∈ UNINITIALIZED + [146].f1 ∈ [--..--] + [146].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [146].f3 ∈ [--..--] + [146].[bits 72 to 95] ∈ UNINITIALIZED + [146].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [146].f5 ∈ [--..--] + [146].[bits 136 to 159] ∈ UNINITIALIZED + [147].f1 ∈ [--..--] + [147].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [147].f3 ∈ [--..--] + [147].[bits 72 to 95] ∈ UNINITIALIZED + [147].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [147].f5 ∈ [--..--] + [147].[bits 136 to 159] ∈ UNINITIALIZED + [148].f1 ∈ [--..--] + [148].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [148].f3 ∈ [--..--] + [148].[bits 72 to 95] ∈ UNINITIALIZED + [148].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [148].f5 ∈ [--..--] + [148].[bits 136 to 159] ∈ UNINITIALIZED + [149].f1 ∈ [--..--] + [149].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [149].f3 ∈ [--..--] + [149].[bits 72 to 95] ∈ UNINITIALIZED + [149].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [149].f5 ∈ [--..--] + [149].[bits 136 to 159] ∈ UNINITIALIZED + [150].f1 ∈ [--..--] + [150].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [150].f3 ∈ [--..--] + [150].[bits 72 to 95] ∈ UNINITIALIZED + [150].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [150].f5 ∈ [--..--] + [150].[bits 136 to 159] ∈ UNINITIALIZED + [151].f1 ∈ [--..--] + [151].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [151].f3 ∈ [--..--] + [151].[bits 72 to 95] ∈ UNINITIALIZED + [151].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [151].f5 ∈ [--..--] + [151].[bits 136 to 159] ∈ UNINITIALIZED + [152].f1 ∈ [--..--] + [152].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [152].f3 ∈ [--..--] + [152].[bits 72 to 95] ∈ UNINITIALIZED + [152].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [152].f5 ∈ [--..--] + [152].[bits 136 to 159] ∈ UNINITIALIZED + [153].f1 ∈ [--..--] + [153].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [153].f3 ∈ [--..--] + [153].[bits 72 to 95] ∈ UNINITIALIZED + [153].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [153].f5 ∈ [--..--] + [153].[bits 136 to 159] ∈ UNINITIALIZED + [154].f1 ∈ [--..--] + [154].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [154].f3 ∈ [--..--] + [154].[bits 72 to 95] ∈ UNINITIALIZED + [154].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [154].f5 ∈ [--..--] + [154].[bits 136 to 159] ∈ UNINITIALIZED + [155].f1 ∈ [--..--] + [155].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [155].f3 ∈ [--..--] + [155].[bits 72 to 95] ∈ UNINITIALIZED + [155].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [155].f5 ∈ [--..--] + [155].[bits 136 to 159] ∈ UNINITIALIZED + [156].f1 ∈ [--..--] + [156].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [156].f3 ∈ [--..--] + [156].[bits 72 to 95] ∈ UNINITIALIZED + [156].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [156].f5 ∈ [--..--] + [156].[bits 136 to 159] ∈ UNINITIALIZED + [157].f1 ∈ [--..--] + [157].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [157].f3 ∈ [--..--] + [157].[bits 72 to 95] ∈ UNINITIALIZED + [157].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [157].f5 ∈ [--..--] + [157].[bits 136 to 159] ∈ UNINITIALIZED + [158].f1 ∈ [--..--] + [158].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [158].f3 ∈ [--..--] + [158].[bits 72 to 95] ∈ UNINITIALIZED + [158].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [158].f5 ∈ [--..--] + [158].[bits 136 to 159] ∈ UNINITIALIZED + [159].f1 ∈ [--..--] + [159].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [159].f3 ∈ [--..--] + [159].[bits 72 to 95] ∈ UNINITIALIZED + [159].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [159].f5 ∈ [--..--] + [159].[bits 136 to 159] ∈ UNINITIALIZED + [160].f1 ∈ [--..--] + [160].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [160].f3 ∈ [--..--] + [160].[bits 72 to 95] ∈ UNINITIALIZED + [160].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [160].f5 ∈ [--..--] + [160].[bits 136 to 159] ∈ UNINITIALIZED + [161].f1 ∈ [--..--] + [161].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [161].f3 ∈ [--..--] + [161].[bits 72 to 95] ∈ UNINITIALIZED + [161].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [161].f5 ∈ [--..--] + [161].[bits 136 to 159] ∈ UNINITIALIZED + [162].f1 ∈ [--..--] + [162].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [162].f3 ∈ [--..--] + [162].[bits 72 to 95] ∈ UNINITIALIZED + [162].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [162].f5 ∈ [--..--] + [162].[bits 136 to 159] ∈ UNINITIALIZED + [163].f1 ∈ [--..--] + [163].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [163].f3 ∈ [--..--] + [163].[bits 72 to 95] ∈ UNINITIALIZED + [163].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [163].f5 ∈ [--..--] + [163].[bits 136 to 159] ∈ UNINITIALIZED + [164].f1 ∈ [--..--] + [164].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [164].f3 ∈ [--..--] + [164].[bits 72 to 95] ∈ UNINITIALIZED + [164].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [164].f5 ∈ [--..--] + [164].[bits 136 to 159] ∈ UNINITIALIZED + [165].f1 ∈ [--..--] + [165].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [165].f3 ∈ [--..--] + [165].[bits 72 to 95] ∈ UNINITIALIZED + [165].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [165].f5 ∈ [--..--] + [165].[bits 136 to 159] ∈ UNINITIALIZED + [166].f1 ∈ [--..--] + [166].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [166].f3 ∈ [--..--] + [166].[bits 72 to 95] ∈ UNINITIALIZED + [166].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [166].f5 ∈ [--..--] + [166].[bits 136 to 159] ∈ UNINITIALIZED + [167].f1 ∈ [--..--] + [167].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [167].f3 ∈ [--..--] + [167].[bits 72 to 95] ∈ UNINITIALIZED + [167].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [167].f5 ∈ [--..--] + [167].[bits 136 to 159] ∈ UNINITIALIZED + [168].f1 ∈ [--..--] + [168].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [168].f3 ∈ [--..--] + [168].[bits 72 to 95] ∈ UNINITIALIZED + [168].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [168].f5 ∈ [--..--] + [168].[bits 136 to 159] ∈ UNINITIALIZED + [169].f1 ∈ [--..--] + [169].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [169].f3 ∈ [--..--] + [169].[bits 72 to 95] ∈ UNINITIALIZED + [169].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [169].f5 ∈ [--..--] + [169].[bits 136 to 159] ∈ UNINITIALIZED + [170].f1 ∈ [--..--] + [170].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [170].f3 ∈ [--..--] + [170].[bits 72 to 95] ∈ UNINITIALIZED + [170].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [170].f5 ∈ [--..--] + [170].[bits 136 to 159] ∈ UNINITIALIZED + [171].f1 ∈ [--..--] + [171].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [171].f3 ∈ [--..--] + [171].[bits 72 to 95] ∈ UNINITIALIZED + [171].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [171].f5 ∈ [--..--] + [171].[bits 136 to 159] ∈ UNINITIALIZED + [172].f1 ∈ [--..--] + [172].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [172].f3 ∈ [--..--] + [172].[bits 72 to 95] ∈ UNINITIALIZED + [172].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [172].f5 ∈ [--..--] + [172].[bits 136 to 159] ∈ UNINITIALIZED + [173].f1 ∈ [--..--] + [173].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [173].f3 ∈ [--..--] + [173].[bits 72 to 95] ∈ UNINITIALIZED + [173].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [173].f5 ∈ [--..--] + [173].[bits 136 to 159] ∈ UNINITIALIZED + [174].f1 ∈ [--..--] + [174].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [174].f3 ∈ [--..--] + [174].[bits 72 to 95] ∈ UNINITIALIZED + [174].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [174].f5 ∈ [--..--] + [174].[bits 136 to 159] ∈ UNINITIALIZED + [175].f1 ∈ [--..--] + [175].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [175].f3 ∈ [--..--] + [175].[bits 72 to 95] ∈ UNINITIALIZED + [175].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [175].f5 ∈ [--..--] + [175].[bits 136 to 159] ∈ UNINITIALIZED + [176].f1 ∈ [--..--] + [176].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [176].f3 ∈ [--..--] + [176].[bits 72 to 95] ∈ UNINITIALIZED + [176].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [176].f5 ∈ [--..--] + [176].[bits 136 to 159] ∈ UNINITIALIZED + [177].f1 ∈ [--..--] + [177].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [177].f3 ∈ [--..--] + [177].[bits 72 to 95] ∈ UNINITIALIZED + [177].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [177].f5 ∈ [--..--] + [177].[bits 136 to 159] ∈ UNINITIALIZED + [178].f1 ∈ [--..--] + [178].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [178].f3 ∈ [--..--] + [178].[bits 72 to 95] ∈ UNINITIALIZED + [178].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [178].f5 ∈ [--..--] + [178].[bits 136 to 159] ∈ UNINITIALIZED + [179].f1 ∈ [--..--] + [179].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [179].f3 ∈ [--..--] + [179].[bits 72 to 95] ∈ UNINITIALIZED + [179].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [179].f5 ∈ [--..--] + [179].[bits 136 to 159] ∈ UNINITIALIZED + [180].f1 ∈ [--..--] + [180].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [180].f3 ∈ [--..--] + [180].[bits 72 to 95] ∈ UNINITIALIZED + [180].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [180].f5 ∈ [--..--] + [180].[bits 136 to 159] ∈ UNINITIALIZED + [181].f1 ∈ [--..--] + [181].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [181].f3 ∈ [--..--] + [181].[bits 72 to 95] ∈ UNINITIALIZED + [181].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [181].f5 ∈ [--..--] + [181].[bits 136 to 159] ∈ UNINITIALIZED + [182].f1 ∈ [--..--] + [182].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [182].f3 ∈ [--..--] + [182].[bits 72 to 95] ∈ UNINITIALIZED + [182].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [182].f5 ∈ [--..--] + [182].[bits 136 to 159] ∈ UNINITIALIZED + [183].f1 ∈ [--..--] + [183].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [183].f3 ∈ [--..--] + [183].[bits 72 to 95] ∈ UNINITIALIZED + [183].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [183].f5 ∈ [--..--] + [183].[bits 136 to 159] ∈ UNINITIALIZED + [184].f1 ∈ [--..--] + [184].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [184].f3 ∈ [--..--] + [184].[bits 72 to 95] ∈ UNINITIALIZED + [184].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [184].f5 ∈ [--..--] + [184].[bits 136 to 159] ∈ UNINITIALIZED + [185].f1 ∈ [--..--] + [185].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [185].f3 ∈ [--..--] + [185].[bits 72 to 95] ∈ UNINITIALIZED + [185].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [185].f5 ∈ [--..--] + [185].[bits 136 to 159] ∈ UNINITIALIZED + [186].f1 ∈ [--..--] + [186].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [186].f3 ∈ [--..--] + [186].[bits 72 to 95] ∈ UNINITIALIZED + [186].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [186].f5 ∈ [--..--] + [186].[bits 136 to 159] ∈ UNINITIALIZED + [187].f1 ∈ [--..--] + [187].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [187].f3 ∈ [--..--] + [187].[bits 72 to 95] ∈ UNINITIALIZED + [187].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [187].f5 ∈ [--..--] + [187].[bits 136 to 159] ∈ UNINITIALIZED + [188].f1 ∈ [--..--] + [188].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [188].f3 ∈ [--..--] + [188].[bits 72 to 95] ∈ UNINITIALIZED + [188].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [188].f5 ∈ [--..--] + [188].[bits 136 to 159] ∈ UNINITIALIZED + [189].f1 ∈ [--..--] + [189].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [189].f3 ∈ [--..--] + [189].[bits 72 to 95] ∈ UNINITIALIZED + [189].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [189].f5 ∈ [--..--] + [189].[bits 136 to 159] ∈ UNINITIALIZED + [190].f1 ∈ [--..--] + [190].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [190].f3 ∈ [--..--] + [190].[bits 72 to 95] ∈ UNINITIALIZED + [190].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [190].f5 ∈ [--..--] + [190].[bits 136 to 159] ∈ UNINITIALIZED + [191].f1 ∈ [--..--] + [191].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [191].f3 ∈ [--..--] + [191].[bits 72 to 95] ∈ UNINITIALIZED + [191].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [191].f5 ∈ [--..--] + [191].[bits 136 to 159] ∈ UNINITIALIZED + [192].f1 ∈ [--..--] + [192].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [192].f3 ∈ [--..--] + [192].[bits 72 to 95] ∈ UNINITIALIZED + [192].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [192].f5 ∈ [--..--] + [192].[bits 136 to 159] ∈ UNINITIALIZED + [193].f1 ∈ [--..--] + [193].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [193].f3 ∈ [--..--] + [193].[bits 72 to 95] ∈ UNINITIALIZED + [193].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [193].f5 ∈ [--..--] + [193].[bits 136 to 159] ∈ UNINITIALIZED + [194].f1 ∈ [--..--] + [194].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [194].f3 ∈ [--..--] + [194].[bits 72 to 95] ∈ UNINITIALIZED + [194].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [194].f5 ∈ [--..--] + [194].[bits 136 to 159] ∈ UNINITIALIZED + [195].f1 ∈ [--..--] + [195].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [195].f3 ∈ [--..--] + [195].[bits 72 to 95] ∈ UNINITIALIZED + [195].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [195].f5 ∈ [--..--] + [195].[bits 136 to 159] ∈ UNINITIALIZED + [196].f1 ∈ [--..--] + [196].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [196].f3 ∈ [--..--] + [196].[bits 72 to 95] ∈ UNINITIALIZED + [196].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [196].f5 ∈ [--..--] + [196].[bits 136 to 159] ∈ UNINITIALIZED + [197].f1 ∈ [--..--] + [197].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [197].f3 ∈ [--..--] + [197].[bits 72 to 95] ∈ UNINITIALIZED + [197].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [197].f5 ∈ [--..--] + [197].[bits 136 to 159] ∈ UNINITIALIZED + [198].f1 ∈ [--..--] + [198].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [198].f3 ∈ [--..--] + [198].[bits 72 to 95] ∈ UNINITIALIZED + [198].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [198].f5 ∈ [--..--] + [198].[bits 136 to 159] ∈ UNINITIALIZED + [199].f1 ∈ [--..--] + [199].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [199].f3 ∈ [--..--] + [199].[bits 72 to 95] ∈ UNINITIALIZED + [199].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [199].f5 ∈ [--..--] + [199].[bits 136 to 159] ∈ UNINITIALIZED + [200].f1 ∈ [--..--] + [200].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [200].f3 ∈ [--..--] + [200].[bits 72 to 95] ∈ UNINITIALIZED + [200].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [200].f5 ∈ [--..--] + [200].[bits 136 to 159] ∈ UNINITIALIZED + [201].f1 ∈ [--..--] + [201].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [201].f3 ∈ [--..--] + [201].[bits 72 to 95] ∈ UNINITIALIZED + [201].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [201].f5 ∈ [--..--] + [201].[bits 136 to 159] ∈ UNINITIALIZED + [202].f1 ∈ [--..--] + [202].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [202].f3 ∈ [--..--] + [202].[bits 72 to 95] ∈ UNINITIALIZED + [202].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [202].f5 ∈ [--..--] + [202].[bits 136 to 159] ∈ UNINITIALIZED + [203].f1 ∈ [--..--] + [203].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [203].f3 ∈ [--..--] + [203].[bits 72 to 95] ∈ UNINITIALIZED + [203].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [203].f5 ∈ [--..--] + [203].[bits 136 to 159] ∈ UNINITIALIZED + [204].f1 ∈ [--..--] + [204].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [204].f3 ∈ [--..--] + [204].[bits 72 to 95] ∈ UNINITIALIZED + [204].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [204].f5 ∈ [--..--] + [204].[bits 136 to 159] ∈ UNINITIALIZED + [205].f1 ∈ [--..--] + [205].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [205].f3 ∈ [--..--] + [205].[bits 72 to 95] ∈ UNINITIALIZED + [205].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [205].f5 ∈ [--..--] + [205].[bits 136 to 159] ∈ UNINITIALIZED + [206].f1 ∈ [--..--] + [206].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [206].f3 ∈ [--..--] + [206].[bits 72 to 95] ∈ UNINITIALIZED + [206].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [206].f5 ∈ [--..--] + [206].[bits 136 to 159] ∈ UNINITIALIZED + [207].f1 ∈ [--..--] + [207].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [207].f3 ∈ [--..--] + [207].[bits 72 to 95] ∈ UNINITIALIZED + [207].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [207].f5 ∈ [--..--] + [207].[bits 136 to 159] ∈ UNINITIALIZED + [208].f1 ∈ [--..--] + [208].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [208].f3 ∈ [--..--] + [208].[bits 72 to 95] ∈ UNINITIALIZED + [208].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [208].f5 ∈ [--..--] + [208].[bits 136 to 159] ∈ UNINITIALIZED + [209].f1 ∈ [--..--] + [209].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [209].f3 ∈ [--..--] + [209].[bits 72 to 95] ∈ UNINITIALIZED + [209].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [209].f5 ∈ [--..--] + [209].[bits 136 to 159] ∈ UNINITIALIZED + [210].f1 ∈ [--..--] + [210].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [210].f3 ∈ [--..--] + [210].[bits 72 to 95] ∈ UNINITIALIZED + [210].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [210].f5 ∈ [--..--] + [210].[bits 136 to 159] ∈ UNINITIALIZED + [211].f1 ∈ [--..--] + [211].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [211].f3 ∈ [--..--] + [211].[bits 72 to 95] ∈ UNINITIALIZED + [211].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [211].f5 ∈ [--..--] + [211].[bits 136 to 159] ∈ UNINITIALIZED + [212].f1 ∈ [--..--] + [212].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [212].f3 ∈ [--..--] + [212].[bits 72 to 95] ∈ UNINITIALIZED + [212].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [212].f5 ∈ [--..--] + [212].[bits 136 to 159] ∈ UNINITIALIZED + [213].f1 ∈ [--..--] + [213].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [213].f3 ∈ [--..--] + [213].[bits 72 to 95] ∈ UNINITIALIZED + [213].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [213].f5 ∈ [--..--] + [213].[bits 136 to 159] ∈ UNINITIALIZED + [214].f1 ∈ [--..--] + [214].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [214].f3 ∈ [--..--] + [214].[bits 72 to 95] ∈ UNINITIALIZED + [214].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [214].f5 ∈ [--..--] + [214].[bits 136 to 159] ∈ UNINITIALIZED + [215].f1 ∈ [--..--] + [215].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [215].f3 ∈ [--..--] + [215].[bits 72 to 95] ∈ UNINITIALIZED + [215].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [215].f5 ∈ [--..--] + [215].[bits 136 to 159] ∈ UNINITIALIZED + [216].f1 ∈ [--..--] + [216].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [216].f3 ∈ [--..--] + [216].[bits 72 to 95] ∈ UNINITIALIZED + [216].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [216].f5 ∈ [--..--] + [216].[bits 136 to 159] ∈ UNINITIALIZED + [217].f1 ∈ [--..--] + [217].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [217].f3 ∈ [--..--] + [217].[bits 72 to 95] ∈ UNINITIALIZED + [217].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [217].f5 ∈ [--..--] + [217].[bits 136 to 159] ∈ UNINITIALIZED + [218].f1 ∈ [--..--] + [218].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [218].f3 ∈ [--..--] + [218].[bits 72 to 95] ∈ UNINITIALIZED + [218].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [218].f5 ∈ [--..--] + [218].[bits 136 to 159] ∈ UNINITIALIZED + [219].f1 ∈ [--..--] + [219].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [219].f3 ∈ [--..--] + [219].[bits 72 to 95] ∈ UNINITIALIZED + [219].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [219].f5 ∈ [--..--] + [219].[bits 136 to 159] ∈ UNINITIALIZED + [220].f1 ∈ [--..--] + [220].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [220].f3 ∈ [--..--] + [220].[bits 72 to 95] ∈ UNINITIALIZED + [220].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [220].f5 ∈ [--..--] + [220].[bits 136 to 159] ∈ UNINITIALIZED + [221].f1 ∈ [--..--] + [221].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [221].f3 ∈ [--..--] + [221].[bits 72 to 95] ∈ UNINITIALIZED + [221].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [221].f5 ∈ [--..--] + [221].[bits 136 to 159] ∈ UNINITIALIZED + [222].f1 ∈ [--..--] + [222].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [222].f3 ∈ [--..--] + [222].[bits 72 to 95] ∈ UNINITIALIZED + [222].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [222].f5 ∈ [--..--] + [222].[bits 136 to 159] ∈ UNINITIALIZED + [223].f1 ∈ [--..--] + [223].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [223].f3 ∈ [--..--] + [223].[bits 72 to 95] ∈ UNINITIALIZED + [223].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [223].f5 ∈ [--..--] + [223].[bits 136 to 159] ∈ UNINITIALIZED + [224].f1 ∈ [--..--] + [224].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [224].f3 ∈ [--..--] + [224].[bits 72 to 95] ∈ UNINITIALIZED + [224].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [224].f5 ∈ [--..--] + [224].[bits 136 to 159] ∈ UNINITIALIZED + [225].f1 ∈ [--..--] + [225].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [225].f3 ∈ [--..--] + [225].[bits 72 to 95] ∈ UNINITIALIZED + [225].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [225].f5 ∈ [--..--] + [225].[bits 136 to 159] ∈ UNINITIALIZED + [226].f1 ∈ [--..--] + [226].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [226].f3 ∈ [--..--] + [226].[bits 72 to 95] ∈ UNINITIALIZED + [226].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [226].f5 ∈ [--..--] + [226].[bits 136 to 159] ∈ UNINITIALIZED + [227].f1 ∈ [--..--] + [227].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [227].f3 ∈ [--..--] + [227].[bits 72 to 95] ∈ UNINITIALIZED + [227].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [227].f5 ∈ [--..--] + [227].[bits 136 to 159] ∈ UNINITIALIZED + [228].f1 ∈ [--..--] + [228].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [228].f3 ∈ [--..--] + [228].[bits 72 to 95] ∈ UNINITIALIZED + [228].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [228].f5 ∈ [--..--] + [228].[bits 136 to 159] ∈ UNINITIALIZED + [229].f1 ∈ [--..--] + [229].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [229].f3 ∈ [--..--] + [229].[bits 72 to 95] ∈ UNINITIALIZED + [229].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [229].f5 ∈ [--..--] + [229].[bits 136 to 159] ∈ UNINITIALIZED + [230].f1 ∈ [--..--] + [230].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [230].f3 ∈ [--..--] + [230].[bits 72 to 95] ∈ UNINITIALIZED + [230].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [230].f5 ∈ [--..--] + [230].[bits 136 to 159] ∈ UNINITIALIZED + [231].f1 ∈ [--..--] + [231].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [231].f3 ∈ [--..--] + [231].[bits 72 to 95] ∈ UNINITIALIZED + [231].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [231].f5 ∈ [--..--] + [231].[bits 136 to 159] ∈ UNINITIALIZED + [232].f1 ∈ [--..--] + [232].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [232].f3 ∈ [--..--] + [232].[bits 72 to 95] ∈ UNINITIALIZED + [232].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [232].f5 ∈ [--..--] + [232].[bits 136 to 159] ∈ UNINITIALIZED + [233].f1 ∈ [--..--] + [233].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [233].f3 ∈ [--..--] + [233].[bits 72 to 95] ∈ UNINITIALIZED + [233].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [233].f5 ∈ [--..--] + [233].[bits 136 to 159] ∈ UNINITIALIZED + [234].f1 ∈ [--..--] + [234].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [234].f3 ∈ [--..--] + [234].[bits 72 to 95] ∈ UNINITIALIZED + [234].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [234].f5 ∈ [--..--] + [234].[bits 136 to 159] ∈ UNINITIALIZED + [235].f1 ∈ [--..--] + [235].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [235].f3 ∈ [--..--] + [235].[bits 72 to 95] ∈ UNINITIALIZED + [235].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [235].f5 ∈ [--..--] + [235].[bits 136 to 159] ∈ UNINITIALIZED + [236].f1 ∈ [--..--] + [236].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [236].f3 ∈ [--..--] + [236].[bits 72 to 95] ∈ UNINITIALIZED + [236].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [236].f5 ∈ [--..--] + [236].[bits 136 to 159] ∈ UNINITIALIZED + [237].f1 ∈ [--..--] + [237].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [237].f3 ∈ [--..--] + [237].[bits 72 to 95] ∈ UNINITIALIZED + [237].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [237].f5 ∈ [--..--] + [237].[bits 136 to 159] ∈ UNINITIALIZED + [238].f1 ∈ [--..--] + [238].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [238].f3 ∈ [--..--] + [238].[bits 72 to 95] ∈ UNINITIALIZED + [238].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [238].f5 ∈ [--..--] + [238].[bits 136 to 159] ∈ UNINITIALIZED + [239].f1 ∈ [--..--] + [239].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [239].f3 ∈ [--..--] + [239].[bits 72 to 95] ∈ UNINITIALIZED + [239].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [239].f5 ∈ [--..--] + [239].[bits 136 to 159] ∈ UNINITIALIZED + [240].f1 ∈ [--..--] + [240].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [240].f3 ∈ [--..--] + [240].[bits 72 to 95] ∈ UNINITIALIZED + [240].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [240].f5 ∈ [--..--] + [240].[bits 136 to 159] ∈ UNINITIALIZED + [241].f1 ∈ [--..--] + [241].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [241].f3 ∈ [--..--] + [241].[bits 72 to 95] ∈ UNINITIALIZED + [241].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [241].f5 ∈ [--..--] + [241].[bits 136 to 159] ∈ UNINITIALIZED + [242].f1 ∈ [--..--] + [242].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [242].f3 ∈ [--..--] + [242].[bits 72 to 95] ∈ UNINITIALIZED + [242].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [242].f5 ∈ [--..--] + [242].[bits 136 to 159] ∈ UNINITIALIZED + [243].f1 ∈ [--..--] + [243].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [243].f3 ∈ [--..--] + [243].[bits 72 to 95] ∈ UNINITIALIZED + [243].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [243].f5 ∈ [--..--] + [243].[bits 136 to 159] ∈ UNINITIALIZED + [244].f1 ∈ [--..--] + [244].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [244].f3 ∈ [--..--] + [244].[bits 72 to 95] ∈ UNINITIALIZED + [244].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [244].f5 ∈ [--..--] + [244].[bits 136 to 159] ∈ UNINITIALIZED + [245].f1 ∈ [--..--] + [245].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [245].f3 ∈ [--..--] + [245].[bits 72 to 95] ∈ UNINITIALIZED + [245].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [245].f5 ∈ [--..--] + [245].[bits 136 to 159] ∈ UNINITIALIZED + [246].f1 ∈ [--..--] + [246].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [246].f3 ∈ [--..--] + [246].[bits 72 to 95] ∈ UNINITIALIZED + [246].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [246].f5 ∈ [--..--] + [246].[bits 136 to 159] ∈ UNINITIALIZED + [247].f1 ∈ [--..--] + [247].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [247].f3 ∈ [--..--] + [247].[bits 72 to 95] ∈ UNINITIALIZED + [247].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [247].f5 ∈ [--..--] + [247].[bits 136 to 159] ∈ UNINITIALIZED + [248].f1 ∈ [--..--] + [248].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [248].f3 ∈ [--..--] + [248].[bits 72 to 95] ∈ UNINITIALIZED + [248].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [248].f5 ∈ [--..--] + [248].[bits 136 to 159] ∈ UNINITIALIZED + [249].f1 ∈ [--..--] + [249].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [249].f3 ∈ [--..--] + [249].[bits 72 to 95] ∈ UNINITIALIZED + [249].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [249].f5 ∈ [--..--] + [249].[bits 136 to 159] ∈ UNINITIALIZED + [250].f1 ∈ [--..--] + [250].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [250].f3 ∈ [--..--] + [250].[bits 72 to 95] ∈ UNINITIALIZED + [250].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [250].f5 ∈ [--..--] + [250].[bits 136 to 159] ∈ UNINITIALIZED + [251].f1 ∈ [--..--] + [251].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [251].f3 ∈ [--..--] + [251].[bits 72 to 95] ∈ UNINITIALIZED + [251].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [251].f5 ∈ [--..--] + [251].[bits 136 to 159] ∈ UNINITIALIZED + [252].f1 ∈ [--..--] + [252].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [252].f3 ∈ [--..--] + [252].[bits 72 to 95] ∈ UNINITIALIZED + [252].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [252].f5 ∈ [--..--] + [252].[bits 136 to 159] ∈ UNINITIALIZED + [253].f1 ∈ [--..--] + [253].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [253].f3 ∈ [--..--] + [253].[bits 72 to 95] ∈ UNINITIALIZED + [253].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [253].f5 ∈ [--..--] + [253].[bits 136 to 159] ∈ UNINITIALIZED + [254].f1 ∈ [--..--] + [254].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [254].f3 ∈ [--..--] + [254].[bits 72 to 95] ∈ UNINITIALIZED + [254].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [254].f5 ∈ [--..--] + [254].[bits 136 to 159] ∈ UNINITIALIZED + [255].f1 ∈ [--..--] + [255].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [255].f3 ∈ [--..--] + [255].[bits 72 to 95] ∈ UNINITIALIZED + [255].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [255].f5 ∈ [--..--] + [255].[bits 136 to 159] ∈ UNINITIALIZED + [256].f1 ∈ [--..--] + [256].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [256].f3 ∈ [--..--] + [256].[bits 72 to 95] ∈ UNINITIALIZED + [256].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [256].f5 ∈ [--..--] + [256].[bits 136 to 159] ∈ UNINITIALIZED + [257].f1 ∈ [--..--] + [257].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [257].f3 ∈ [--..--] + [257].[bits 72 to 95] ∈ UNINITIALIZED + [257].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [257].f5 ∈ [--..--] + [257].[bits 136 to 159] ∈ UNINITIALIZED + [258].f1 ∈ [--..--] + [258].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [258].f3 ∈ [--..--] + [258].[bits 72 to 95] ∈ UNINITIALIZED + [258].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [258].f5 ∈ [--..--] + [258].[bits 136 to 159] ∈ UNINITIALIZED + [259].f1 ∈ [--..--] + [259].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [259].f3 ∈ [--..--] + [259].[bits 72 to 95] ∈ UNINITIALIZED + [259].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [259].f5 ∈ [--..--] + [259].[bits 136 to 159] ∈ UNINITIALIZED + [260].f1 ∈ [--..--] + [260].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [260].f3 ∈ [--..--] + [260].[bits 72 to 95] ∈ UNINITIALIZED + [260].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [260].f5 ∈ [--..--] + [260].[bits 136 to 159] ∈ UNINITIALIZED + [261].f1 ∈ [--..--] + [261].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [261].f3 ∈ [--..--] + [261].[bits 72 to 95] ∈ UNINITIALIZED + [261].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [261].f5 ∈ [--..--] + [261].[bits 136 to 159] ∈ UNINITIALIZED + [262].f1 ∈ [--..--] + [262].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [262].f3 ∈ [--..--] + [262].[bits 72 to 95] ∈ UNINITIALIZED + [262].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [262].f5 ∈ [--..--] + [262].[bits 136 to 159] ∈ UNINITIALIZED + [263].f1 ∈ [--..--] + [263].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [263].f3 ∈ [--..--] + [263].[bits 72 to 95] ∈ UNINITIALIZED + [263].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [263].f5 ∈ [--..--] + [263].[bits 136 to 159] ∈ UNINITIALIZED + [264].f1 ∈ [--..--] + [264].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [264].f3 ∈ [--..--] + [264].[bits 72 to 95] ∈ UNINITIALIZED + [264].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [264].f5 ∈ [--..--] + [264].[bits 136 to 159] ∈ UNINITIALIZED + [265].f1 ∈ [--..--] + [265].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [265].f3 ∈ [--..--] + [265].[bits 72 to 95] ∈ UNINITIALIZED + [265].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [265].f5 ∈ [--..--] + [265].[bits 136 to 159] ∈ UNINITIALIZED + [266].f1 ∈ [--..--] + [266].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [266].f3 ∈ [--..--] + [266].[bits 72 to 95] ∈ UNINITIALIZED + [266].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [266].f5 ∈ [--..--] + [266].[bits 136 to 159] ∈ UNINITIALIZED + [267].f1 ∈ [--..--] + [267].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [267].f3 ∈ [--..--] + [267].[bits 72 to 95] ∈ UNINITIALIZED + [267].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [267].f5 ∈ [--..--] + [267].[bits 136 to 159] ∈ UNINITIALIZED + [268].f1 ∈ [--..--] + [268].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [268].f3 ∈ [--..--] + [268].[bits 72 to 95] ∈ UNINITIALIZED + [268].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [268].f5 ∈ [--..--] + [268].[bits 136 to 159] ∈ UNINITIALIZED + [269].f1 ∈ [--..--] + [269].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [269].f3 ∈ [--..--] + [269].[bits 72 to 95] ∈ UNINITIALIZED + [269].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [269].f5 ∈ [--..--] + [269].[bits 136 to 159] ∈ UNINITIALIZED + [270].f1 ∈ [--..--] + [270].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [270].f3 ∈ [--..--] + [270].[bits 72 to 95] ∈ UNINITIALIZED + [270].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [270].f5 ∈ [--..--] + [270].[bits 136 to 159] ∈ UNINITIALIZED + [271].f1 ∈ [--..--] + [271].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [271].f3 ∈ [--..--] + [271].[bits 72 to 95] ∈ UNINITIALIZED + [271].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [271].f5 ∈ [--..--] + [271].[bits 136 to 159] ∈ UNINITIALIZED + [272].f1 ∈ [--..--] + [272].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [272].f3 ∈ [--..--] + [272].[bits 72 to 95] ∈ UNINITIALIZED + [272].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [272].f5 ∈ [--..--] + [272].[bits 136 to 159] ∈ UNINITIALIZED + [273].f1 ∈ [--..--] + [273].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [273].f3 ∈ [--..--] + [273].[bits 72 to 95] ∈ UNINITIALIZED + [273].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [273].f5 ∈ [--..--] + [273].[bits 136 to 159] ∈ UNINITIALIZED + [274].f1 ∈ [--..--] + [274].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [274].f3 ∈ [--..--] + [274].[bits 72 to 95] ∈ UNINITIALIZED + [274].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [274].f5 ∈ [--..--] + [274].[bits 136 to 159] ∈ UNINITIALIZED + [275].f1 ∈ [--..--] + [275].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [275].f3 ∈ [--..--] + [275].[bits 72 to 95] ∈ UNINITIALIZED + [275].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [275].f5 ∈ [--..--] + [275].[bits 136 to 159] ∈ UNINITIALIZED + [276].f1 ∈ [--..--] + [276].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [276].f3 ∈ [--..--] + [276].[bits 72 to 95] ∈ UNINITIALIZED + [276].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [276].f5 ∈ [--..--] + [276].[bits 136 to 159] ∈ UNINITIALIZED + [277].f1 ∈ [--..--] + [277].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [277].f3 ∈ [--..--] + [277].[bits 72 to 95] ∈ UNINITIALIZED + [277].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [277].f5 ∈ [--..--] + [277].[bits 136 to 159] ∈ UNINITIALIZED + [278].f1 ∈ [--..--] + [278].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [278].f3 ∈ [--..--] + [278].[bits 72 to 95] ∈ UNINITIALIZED + [278].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [278].f5 ∈ [--..--] + [278].[bits 136 to 159] ∈ UNINITIALIZED + [279].f1 ∈ [--..--] + [279].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [279].f3 ∈ [--..--] + [279].[bits 72 to 95] ∈ UNINITIALIZED + [279].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [279].f5 ∈ [--..--] + [279].[bits 136 to 159] ∈ UNINITIALIZED + [280].f1 ∈ [--..--] + [280].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [280].f3 ∈ [--..--] + [280].[bits 72 to 95] ∈ UNINITIALIZED + [280].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [280].f5 ∈ [--..--] + [280].[bits 136 to 159] ∈ UNINITIALIZED + [281].f1 ∈ [--..--] + [281].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [281].f3 ∈ [--..--] + [281].[bits 72 to 95] ∈ UNINITIALIZED + [281].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [281].f5 ∈ [--..--] + [281].[bits 136 to 159] ∈ UNINITIALIZED + [282].f1 ∈ [--..--] + [282].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [282].f3 ∈ [--..--] + [282].[bits 72 to 95] ∈ UNINITIALIZED + [282].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [282].f5 ∈ [--..--] + [282].[bits 136 to 159] ∈ UNINITIALIZED + [283].f1 ∈ [--..--] + [283].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [283].f3 ∈ [--..--] + [283].[bits 72 to 95] ∈ UNINITIALIZED + [283].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [283].f5 ∈ [--..--] + [283].[bits 136 to 159] ∈ UNINITIALIZED + [284].f1 ∈ [--..--] + [284].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [284].f3 ∈ [--..--] + [284].[bits 72 to 95] ∈ UNINITIALIZED + [284].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [284].f5 ∈ [--..--] + [284].[bits 136 to 159] ∈ UNINITIALIZED + [285].f1 ∈ [--..--] + [285].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [285].f3 ∈ [--..--] + [285].[bits 72 to 95] ∈ UNINITIALIZED + [285].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [285].f5 ∈ [--..--] + [285].[bits 136 to 159] ∈ UNINITIALIZED + [286].f1 ∈ [--..--] + [286].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [286].f3 ∈ [--..--] + [286].[bits 72 to 95] ∈ UNINITIALIZED + [286].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [286].f5 ∈ [--..--] + [286].[bits 136 to 159] ∈ UNINITIALIZED + [287].f1 ∈ [--..--] + [287].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [287].f3 ∈ [--..--] + [287].[bits 72 to 95] ∈ UNINITIALIZED + [287].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [287].f5 ∈ [--..--] + [287].[bits 136 to 159] ∈ UNINITIALIZED + [288].f1 ∈ [--..--] + [288].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [288].f3 ∈ [--..--] + [288].[bits 72 to 95] ∈ UNINITIALIZED + [288].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [288].f5 ∈ [--..--] + [288].[bits 136 to 159] ∈ UNINITIALIZED + [289].f1 ∈ [--..--] + [289].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [289].f3 ∈ [--..--] + [289].[bits 72 to 95] ∈ UNINITIALIZED + [289].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [289].f5 ∈ [--..--] + [289].[bits 136 to 159] ∈ UNINITIALIZED + [290].f1 ∈ [--..--] + [290].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [290].f3 ∈ [--..--] + [290].[bits 72 to 95] ∈ UNINITIALIZED + [290].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [290].f5 ∈ [--..--] + [290].[bits 136 to 159] ∈ UNINITIALIZED + [291].f1 ∈ [--..--] + [291].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [291].f3 ∈ [--..--] + [291].[bits 72 to 95] ∈ UNINITIALIZED + [291].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [291].f5 ∈ [--..--] + [291].[bits 136 to 159] ∈ UNINITIALIZED + [292].f1 ∈ [--..--] + [292].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [292].f3 ∈ [--..--] + [292].[bits 72 to 95] ∈ UNINITIALIZED + [292].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [292].f5 ∈ [--..--] + [292].[bits 136 to 159] ∈ UNINITIALIZED + [293].f1 ∈ [--..--] + [293].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [293].f3 ∈ [--..--] + [293].[bits 72 to 95] ∈ UNINITIALIZED + [293].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [293].f5 ∈ [--..--] + [293].[bits 136 to 159] ∈ UNINITIALIZED + [294].f1 ∈ [--..--] + [294].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [294].f3 ∈ [--..--] + [294].[bits 72 to 95] ∈ UNINITIALIZED + [294].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [294].f5 ∈ [--..--] + [294].[bits 136 to 159] ∈ UNINITIALIZED + [295].f1 ∈ [--..--] + [295].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [295].f3 ∈ [--..--] + [295].[bits 72 to 95] ∈ UNINITIALIZED + [295].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [295].f5 ∈ [--..--] + [295].[bits 136 to 159] ∈ UNINITIALIZED + [296].f1 ∈ [--..--] + [296].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [296].f3 ∈ [--..--] + [296].[bits 72 to 95] ∈ UNINITIALIZED + [296].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [296].f5 ∈ [--..--] + [296].[bits 136 to 159] ∈ UNINITIALIZED + [297].f1 ∈ [--..--] + [297].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [297].f3 ∈ [--..--] + [297].[bits 72 to 95] ∈ UNINITIALIZED + [297].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [297].f5 ∈ [--..--] + [297].[bits 136 to 159] ∈ UNINITIALIZED + [298].f1 ∈ [--..--] + [298].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [298].f3 ∈ [--..--] + [298].[bits 72 to 95] ∈ UNINITIALIZED + [298].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [298].f5 ∈ [--..--] + [298].[bits 136 to 159] ∈ UNINITIALIZED + [299].f1 ∈ [--..--] + [299].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [299].f3 ∈ [--..--] + [299].[bits 72 to 95] ∈ UNINITIALIZED + [299].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [299].f5 ∈ [--..--] + [299].[bits 136 to 159] ∈ UNINITIALIZED + [300].f1 ∈ [--..--] + [300].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [300].f3 ∈ [--..--] + [300].[bits 72 to 95] ∈ UNINITIALIZED + [300].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [300].f5 ∈ [--..--] + [300].[bits 136 to 159] ∈ UNINITIALIZED + [301].f1 ∈ [--..--] + [301].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [301].f3 ∈ [--..--] + [301].[bits 72 to 95] ∈ UNINITIALIZED + [301].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [301].f5 ∈ [--..--] + [301].[bits 136 to 159] ∈ UNINITIALIZED + [302].f1 ∈ [--..--] + [302].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [302].f3 ∈ [--..--] + [302].[bits 72 to 95] ∈ UNINITIALIZED + [302].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [302].f5 ∈ [--..--] + [302].[bits 136 to 159] ∈ UNINITIALIZED + [303].f1 ∈ [--..--] + [303].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [303].f3 ∈ [--..--] + [303].[bits 72 to 95] ∈ UNINITIALIZED + [303].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [303].f5 ∈ [--..--] + [303].[bits 136 to 159] ∈ UNINITIALIZED + [304].f1 ∈ [--..--] + [304].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [304].f3 ∈ [--..--] + [304].[bits 72 to 95] ∈ UNINITIALIZED + [304].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [304].f5 ∈ [--..--] + [304].[bits 136 to 159] ∈ UNINITIALIZED + [305].f1 ∈ [--..--] + [305].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [305].f3 ∈ [--..--] + [305].[bits 72 to 95] ∈ UNINITIALIZED + [305].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [305].f5 ∈ [--..--] + [305].[bits 136 to 159] ∈ UNINITIALIZED + [306].f1 ∈ [--..--] + [306].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [306].f3 ∈ [--..--] + [306].[bits 72 to 95] ∈ UNINITIALIZED + [306].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [306].f5 ∈ [--..--] + [306].[bits 136 to 159] ∈ UNINITIALIZED + [307].f1 ∈ [--..--] + [307].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [307].f3 ∈ [--..--] + [307].[bits 72 to 95] ∈ UNINITIALIZED + [307].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [307].f5 ∈ [--..--] + [307].[bits 136 to 159] ∈ UNINITIALIZED + [308].f1 ∈ [--..--] + [308].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [308].f3 ∈ [--..--] + [308].[bits 72 to 95] ∈ UNINITIALIZED + [308].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [308].f5 ∈ [--..--] + [308].[bits 136 to 159] ∈ UNINITIALIZED + [309].f1 ∈ [--..--] + [309].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [309].f3 ∈ [--..--] + [309].[bits 72 to 95] ∈ UNINITIALIZED + [309].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [309].f5 ∈ [--..--] + [309].[bits 136 to 159] ∈ UNINITIALIZED + [310].f1 ∈ [--..--] + [310].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [310].f3 ∈ [--..--] + [310].[bits 72 to 95] ∈ UNINITIALIZED + [310].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [310].f5 ∈ [--..--] + [310].[bits 136 to 159] ∈ UNINITIALIZED + [311].f1 ∈ [--..--] + [311].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [311].f3 ∈ [--..--] + [311].[bits 72 to 95] ∈ UNINITIALIZED + [311].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [311].f5 ∈ [--..--] + [311].[bits 136 to 159] ∈ UNINITIALIZED + [312].f1 ∈ [--..--] + [312].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [312].f3 ∈ [--..--] + [312].[bits 72 to 95] ∈ UNINITIALIZED + [312].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [312].f5 ∈ [--..--] + [312].[bits 136 to 159] ∈ UNINITIALIZED + [313].f1 ∈ [--..--] + [313].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [313].f3 ∈ [--..--] + [313].[bits 72 to 95] ∈ UNINITIALIZED + [313].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [313].f5 ∈ [--..--] + [313].[bits 136 to 159] ∈ UNINITIALIZED + [314].f1 ∈ [--..--] + [314].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [314].f3 ∈ [--..--] + [314].[bits 72 to 95] ∈ UNINITIALIZED + [314].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [314].f5 ∈ [--..--] + [314].[bits 136 to 159] ∈ UNINITIALIZED + [315].f1 ∈ [--..--] + [315].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [315].f3 ∈ [--..--] + [315].[bits 72 to 95] ∈ UNINITIALIZED + [315].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [315].f5 ∈ [--..--] + [315].[bits 136 to 159] ∈ UNINITIALIZED + [316].f1 ∈ [--..--] + [316].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [316].f3 ∈ [--..--] + [316].[bits 72 to 95] ∈ UNINITIALIZED + [316].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [316].f5 ∈ [--..--] + [316].[bits 136 to 159] ∈ UNINITIALIZED + [317].f1 ∈ [--..--] + [317].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [317].f3 ∈ [--..--] + [317].[bits 72 to 95] ∈ UNINITIALIZED + [317].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [317].f5 ∈ [--..--] + [317].[bits 136 to 159] ∈ UNINITIALIZED + [318].f1 ∈ [--..--] + [318].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [318].f3 ∈ [--..--] + [318].[bits 72 to 95] ∈ UNINITIALIZED + [318].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [318].f5 ∈ [--..--] + [318].[bits 136 to 159] ∈ UNINITIALIZED + [319].f1 ∈ [--..--] + [319].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [319].f3 ∈ [--..--] + [319].[bits 72 to 95] ∈ UNINITIALIZED + [319].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [319].f5 ∈ [--..--] + [319].[bits 136 to 159] ∈ UNINITIALIZED + [320].f1 ∈ [--..--] + [320].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [320].f3 ∈ [--..--] + [320].[bits 72 to 95] ∈ UNINITIALIZED + [320].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [320].f5 ∈ [--..--] + [320].[bits 136 to 159] ∈ UNINITIALIZED + [321].f1 ∈ [--..--] + [321].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [321].f3 ∈ [--..--] + [321].[bits 72 to 95] ∈ UNINITIALIZED + [321].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [321].f5 ∈ [--..--] + [321].[bits 136 to 159] ∈ UNINITIALIZED + [322].f1 ∈ [--..--] + [322].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [322].f3 ∈ [--..--] + [322].[bits 72 to 95] ∈ UNINITIALIZED + [322].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [322].f5 ∈ [--..--] + [322].[bits 136 to 159] ∈ UNINITIALIZED + [323].f1 ∈ [--..--] + [323].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [323].f3 ∈ [--..--] + [323].[bits 72 to 95] ∈ UNINITIALIZED + [323].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [323].f5 ∈ [--..--] + [323].[bits 136 to 159] ∈ UNINITIALIZED + [324].f1 ∈ [--..--] + [324].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [324].f3 ∈ [--..--] + [324].[bits 72 to 95] ∈ UNINITIALIZED + [324].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [324].f5 ∈ [--..--] + [324].[bits 136 to 159] ∈ UNINITIALIZED + [325].f1 ∈ [--..--] + [325].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [325].f3 ∈ [--..--] + [325].[bits 72 to 95] ∈ UNINITIALIZED + [325].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [325].f5 ∈ [--..--] + [325].[bits 136 to 159] ∈ UNINITIALIZED + [326].f1 ∈ [--..--] + [326].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [326].f3 ∈ [--..--] + [326].[bits 72 to 95] ∈ UNINITIALIZED + [326].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [326].f5 ∈ [--..--] + [326].[bits 136 to 159] ∈ UNINITIALIZED + [327].f1 ∈ [--..--] + [327].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [327].f3 ∈ [--..--] + [327].[bits 72 to 95] ∈ UNINITIALIZED + [327].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [327].f5 ∈ [--..--] + [327].[bits 136 to 159] ∈ UNINITIALIZED + [328].f1 ∈ [--..--] + [328].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [328].f3 ∈ [--..--] + [328].[bits 72 to 95] ∈ UNINITIALIZED + [328].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [328].f5 ∈ [--..--] + [328].[bits 136 to 159] ∈ UNINITIALIZED + [329].f1 ∈ [--..--] + [329].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [329].f3 ∈ [--..--] + [329].[bits 72 to 95] ∈ UNINITIALIZED + [329].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [329].f5 ∈ [--..--] + [329].[bits 136 to 159] ∈ UNINITIALIZED + [330].f1 ∈ [--..--] + [330].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [330].f3 ∈ [--..--] + [330].[bits 72 to 95] ∈ UNINITIALIZED + [330].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [330].f5 ∈ [--..--] + [330].[bits 136 to 159] ∈ UNINITIALIZED + [331].f1 ∈ [--..--] + [331].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [331].f3 ∈ [--..--] + [331].[bits 72 to 95] ∈ UNINITIALIZED + [331].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [331].f5 ∈ [--..--] + [331].[bits 136 to 159] ∈ UNINITIALIZED + [332].f1 ∈ [--..--] + [332].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [332].f3 ∈ [--..--] + [332].[bits 72 to 95] ∈ UNINITIALIZED + [332].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [332].f5 ∈ [--..--] + [332].[bits 136 to 159] ∈ UNINITIALIZED + [333].f1 ∈ [--..--] + [333].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [333].f3 ∈ [--..--] + [333].[bits 72 to 95] ∈ UNINITIALIZED + [333].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [333].f5 ∈ [--..--] + [333].[bits 136 to 159] ∈ UNINITIALIZED + [334].f1 ∈ [--..--] + [334].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [334].f3 ∈ [--..--] + [334].[bits 72 to 95] ∈ UNINITIALIZED + [334].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [334].f5 ∈ [--..--] + [334].[bits 136 to 159] ∈ UNINITIALIZED + [335].f1 ∈ [--..--] + [335].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [335].f3 ∈ [--..--] + [335].[bits 72 to 95] ∈ UNINITIALIZED + [335].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [335].f5 ∈ [--..--] + [335].[bits 136 to 159] ∈ UNINITIALIZED + [336].f1 ∈ [--..--] + [336].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [336].f3 ∈ [--..--] + [336].[bits 72 to 95] ∈ UNINITIALIZED + [336].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [336].f5 ∈ [--..--] + [336].[bits 136 to 159] ∈ UNINITIALIZED + [337].f1 ∈ [--..--] + [337].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [337].f3 ∈ [--..--] + [337].[bits 72 to 95] ∈ UNINITIALIZED + [337].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [337].f5 ∈ [--..--] + [337].[bits 136 to 159] ∈ UNINITIALIZED + [338].f1 ∈ [--..--] + [338].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [338].f3 ∈ [--..--] + [338].[bits 72 to 95] ∈ UNINITIALIZED + [338].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [338].f5 ∈ [--..--] + [338].[bits 136 to 159] ∈ UNINITIALIZED + [339].f1 ∈ [--..--] + [339].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [339].f3 ∈ [--..--] + [339].[bits 72 to 95] ∈ UNINITIALIZED + [339].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [339].f5 ∈ [--..--] + [339].[bits 136 to 159] ∈ UNINITIALIZED + [340].f1 ∈ [--..--] + [340].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [340].f3 ∈ [--..--] + [340].[bits 72 to 95] ∈ UNINITIALIZED + [340].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [340].f5 ∈ [--..--] + [340].[bits 136 to 159] ∈ UNINITIALIZED + [341].f1 ∈ [--..--] + [341].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [341].f3 ∈ [--..--] + [341].[bits 72 to 95] ∈ UNINITIALIZED + [341].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [341].f5 ∈ [--..--] + [341].[bits 136 to 159] ∈ UNINITIALIZED + [342].f1 ∈ [--..--] + [342].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [342].f3 ∈ [--..--] + [342].[bits 72 to 95] ∈ UNINITIALIZED + [342].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [342].f5 ∈ [--..--] + [342].[bits 136 to 159] ∈ UNINITIALIZED + [343].f1 ∈ [--..--] + [343].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [343].f3 ∈ [--..--] + [343].[bits 72 to 95] ∈ UNINITIALIZED + [343].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [343].f5 ∈ [--..--] + [343].[bits 136 to 159] ∈ UNINITIALIZED + [344].f1 ∈ [--..--] + [344].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [344].f3 ∈ [--..--] + [344].[bits 72 to 95] ∈ UNINITIALIZED + [344].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [344].f5 ∈ [--..--] + [344].[bits 136 to 159] ∈ UNINITIALIZED + [345].f1 ∈ [--..--] + [345].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [345].f3 ∈ [--..--] + [345].[bits 72 to 95] ∈ UNINITIALIZED + [345].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [345].f5 ∈ [--..--] + [345].[bits 136 to 159] ∈ UNINITIALIZED + [346].f1 ∈ [--..--] + [346].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [346].f3 ∈ [--..--] + [346].[bits 72 to 95] ∈ UNINITIALIZED + [346].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [346].f5 ∈ [--..--] + [346].[bits 136 to 159] ∈ UNINITIALIZED + [347].f1 ∈ [--..--] + [347].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [347].f3 ∈ [--..--] + [347].[bits 72 to 95] ∈ UNINITIALIZED + [347].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [347].f5 ∈ [--..--] + [347].[bits 136 to 159] ∈ UNINITIALIZED + [348].f1 ∈ [--..--] + [348].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [348].f3 ∈ [--..--] + [348].[bits 72 to 95] ∈ UNINITIALIZED + [348].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [348].f5 ∈ [--..--] + [348].[bits 136 to 159] ∈ UNINITIALIZED + [349].f1 ∈ [--..--] + [349].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [349].f3 ∈ [--..--] + [349].[bits 72 to 95] ∈ UNINITIALIZED + [349].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [349].f5 ∈ [--..--] + [349].[bits 136 to 159] ∈ UNINITIALIZED + [350].f1 ∈ [--..--] + [350].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [350].f3 ∈ [--..--] + [350].[bits 72 to 95] ∈ UNINITIALIZED + [350].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [350].f5 ∈ [--..--] + [350].[bits 136 to 159] ∈ UNINITIALIZED + [351].f1 ∈ [--..--] + [351].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [351].f3 ∈ [--..--] + [351].[bits 72 to 95] ∈ UNINITIALIZED + [351].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [351].f5 ∈ [--..--] + [351].[bits 136 to 159] ∈ UNINITIALIZED + [352].f1 ∈ [--..--] + [352].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [352].f3 ∈ [--..--] + [352].[bits 72 to 95] ∈ UNINITIALIZED + [352].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [352].f5 ∈ [--..--] + [352].[bits 136 to 159] ∈ UNINITIALIZED + [353].f1 ∈ [--..--] + [353].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [353].f3 ∈ [--..--] + [353].[bits 72 to 95] ∈ UNINITIALIZED + [353].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [353].f5 ∈ [--..--] + [353].[bits 136 to 159] ∈ UNINITIALIZED + [354].f1 ∈ [--..--] + [354].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [354].f3 ∈ [--..--] + [354].[bits 72 to 95] ∈ UNINITIALIZED + [354].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [354].f5 ∈ [--..--] + [354].[bits 136 to 159] ∈ UNINITIALIZED + [355].f1 ∈ [--..--] + [355].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [355].f3 ∈ [--..--] + [355].[bits 72 to 95] ∈ UNINITIALIZED + [355].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [355].f5 ∈ [--..--] + [355].[bits 136 to 159] ∈ UNINITIALIZED + [356].f1 ∈ [--..--] + [356].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [356].f3 ∈ [--..--] + [356].[bits 72 to 95] ∈ UNINITIALIZED + [356].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [356].f5 ∈ [--..--] + [356].[bits 136 to 159] ∈ UNINITIALIZED + [357].f1 ∈ [--..--] + [357].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [357].f3 ∈ [--..--] + [357].[bits 72 to 95] ∈ UNINITIALIZED + [357].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [357].f5 ∈ [--..--] + [357].[bits 136 to 159] ∈ UNINITIALIZED + [358].f1 ∈ [--..--] + [358].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [358].f3 ∈ [--..--] + [358].[bits 72 to 95] ∈ UNINITIALIZED + [358].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [358].f5 ∈ [--..--] + [358].[bits 136 to 159] ∈ UNINITIALIZED + [359].f1 ∈ [--..--] + [359].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [359].f3 ∈ [--..--] + [359].[bits 72 to 95] ∈ UNINITIALIZED + [359].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [359].f5 ∈ [--..--] + [359].[bits 136 to 159] ∈ UNINITIALIZED + [360].f1 ∈ [--..--] + [360].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [360].f3 ∈ [--..--] + [360].[bits 72 to 95] ∈ UNINITIALIZED + [360].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [360].f5 ∈ [--..--] + [360].[bits 136 to 159] ∈ UNINITIALIZED + [361].f1 ∈ [--..--] + [361].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [361].f3 ∈ [--..--] + [361].[bits 72 to 95] ∈ UNINITIALIZED + [361].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [361].f5 ∈ [--..--] + [361].[bits 136 to 159] ∈ UNINITIALIZED + [362].f1 ∈ [--..--] + [362].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [362].f3 ∈ [--..--] + [362].[bits 72 to 95] ∈ UNINITIALIZED + [362].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [362].f5 ∈ [--..--] + [362].[bits 136 to 159] ∈ UNINITIALIZED + [363].f1 ∈ [--..--] + [363].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [363].f3 ∈ [--..--] + [363].[bits 72 to 95] ∈ UNINITIALIZED + [363].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [363].f5 ∈ [--..--] + [363].[bits 136 to 159] ∈ UNINITIALIZED + [364].f1 ∈ [--..--] + [364].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [364].f3 ∈ [--..--] + [364].[bits 72 to 95] ∈ UNINITIALIZED + [364].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [364].f5 ∈ [--..--] + [364].[bits 136 to 159] ∈ UNINITIALIZED + [365].f1 ∈ [--..--] + [365].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [365].f3 ∈ [--..--] + [365].[bits 72 to 95] ∈ UNINITIALIZED + [365].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [365].f5 ∈ [--..--] + [365].[bits 136 to 159] ∈ UNINITIALIZED + [366].f1 ∈ [--..--] + [366].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [366].f3 ∈ [--..--] + [366].[bits 72 to 95] ∈ UNINITIALIZED + [366].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [366].f5 ∈ [--..--] + [366].[bits 136 to 159] ∈ UNINITIALIZED + [367].f1 ∈ [--..--] + [367].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [367].f3 ∈ [--..--] + [367].[bits 72 to 95] ∈ UNINITIALIZED + [367].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [367].f5 ∈ [--..--] + [367].[bits 136 to 159] ∈ UNINITIALIZED + [368].f1 ∈ [--..--] + [368].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [368].f3 ∈ [--..--] + [368].[bits 72 to 95] ∈ UNINITIALIZED + [368].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [368].f5 ∈ [--..--] + [368].[bits 136 to 159] ∈ UNINITIALIZED + [369].f1 ∈ [--..--] + [369].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [369].f3 ∈ [--..--] + [369].[bits 72 to 95] ∈ UNINITIALIZED + [369].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [369].f5 ∈ [--..--] + [369].[bits 136 to 159] ∈ UNINITIALIZED + [370].f1 ∈ [--..--] + [370].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [370].f3 ∈ [--..--] + [370].[bits 72 to 95] ∈ UNINITIALIZED + [370].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [370].f5 ∈ [--..--] + [370].[bits 136 to 159] ∈ UNINITIALIZED + [371].f1 ∈ [--..--] + [371].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [371].f3 ∈ [--..--] + [371].[bits 72 to 95] ∈ UNINITIALIZED + [371].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [371].f5 ∈ [--..--] + [371].[bits 136 to 159] ∈ UNINITIALIZED + [372].f1 ∈ [--..--] + [372].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [372].f3 ∈ [--..--] + [372].[bits 72 to 95] ∈ UNINITIALIZED + [372].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [372].f5 ∈ [--..--] + [372].[bits 136 to 159] ∈ UNINITIALIZED + [373].f1 ∈ [--..--] + [373].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [373].f3 ∈ [--..--] + [373].[bits 72 to 95] ∈ UNINITIALIZED + [373].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [373].f5 ∈ [--..--] + [373].[bits 136 to 159] ∈ UNINITIALIZED + [374].f1 ∈ [--..--] + [374].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [374].f3 ∈ [--..--] + [374].[bits 72 to 95] ∈ UNINITIALIZED + [374].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [374].f5 ∈ [--..--] + [374].[bits 136 to 159] ∈ UNINITIALIZED + [375].f1 ∈ [--..--] + [375].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [375].f3 ∈ [--..--] + [375].[bits 72 to 95] ∈ UNINITIALIZED + [375].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [375].f5 ∈ [--..--] + [375].[bits 136 to 159] ∈ UNINITIALIZED + [376].f1 ∈ [--..--] + [376].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [376].f3 ∈ [--..--] + [376].[bits 72 to 95] ∈ UNINITIALIZED + [376].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [376].f5 ∈ [--..--] + [376].[bits 136 to 159] ∈ UNINITIALIZED + [377].f1 ∈ [--..--] + [377].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [377].f3 ∈ [--..--] + [377].[bits 72 to 95] ∈ UNINITIALIZED + [377].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [377].f5 ∈ [--..--] + [377].[bits 136 to 159] ∈ UNINITIALIZED + [378].f1 ∈ [--..--] + [378].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [378].f3 ∈ [--..--] + [378].[bits 72 to 95] ∈ UNINITIALIZED + [378].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [378].f5 ∈ [--..--] + [378].[bits 136 to 159] ∈ UNINITIALIZED + [379].f1 ∈ [--..--] + [379].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [379].f3 ∈ [--..--] + [379].[bits 72 to 95] ∈ UNINITIALIZED + [379].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [379].f5 ∈ [--..--] + [379].[bits 136 to 159] ∈ UNINITIALIZED + [380].f1 ∈ [--..--] + [380].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [380].f3 ∈ [--..--] + [380].[bits 72 to 95] ∈ UNINITIALIZED + [380].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [380].f5 ∈ [--..--] + [380].[bits 136 to 159] ∈ UNINITIALIZED + [381].f1 ∈ [--..--] + [381].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [381].f3 ∈ [--..--] + [381].[bits 72 to 95] ∈ UNINITIALIZED + [381].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [381].f5 ∈ [--..--] + [381].[bits 136 to 159] ∈ UNINITIALIZED + [382].f1 ∈ [--..--] + [382].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [382].f3 ∈ [--..--] + [382].[bits 72 to 95] ∈ UNINITIALIZED + [382].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [382].f5 ∈ [--..--] + [382].[bits 136 to 159] ∈ UNINITIALIZED + [383].f1 ∈ [--..--] + [383].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [383].f3 ∈ [--..--] + [383].[bits 72 to 95] ∈ UNINITIALIZED + [383].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [383].f5 ∈ [--..--] + [383].[bits 136 to 159] ∈ UNINITIALIZED + [384].f1 ∈ [--..--] + [384].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [384].f3 ∈ [--..--] + [384].[bits 72 to 95] ∈ UNINITIALIZED + [384].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [384].f5 ∈ [--..--] + [384].[bits 136 to 159] ∈ UNINITIALIZED + [385].f1 ∈ [--..--] + [385].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [385].f3 ∈ [--..--] + [385].[bits 72 to 95] ∈ UNINITIALIZED + [385].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [385].f5 ∈ [--..--] + [385].[bits 136 to 159] ∈ UNINITIALIZED + [386].f1 ∈ [--..--] + [386].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [386].f3 ∈ [--..--] + [386].[bits 72 to 95] ∈ UNINITIALIZED + [386].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [386].f5 ∈ [--..--] + [386].[bits 136 to 159] ∈ UNINITIALIZED + [387].f1 ∈ [--..--] + [387].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [387].f3 ∈ [--..--] + [387].[bits 72 to 95] ∈ UNINITIALIZED + [387].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [387].f5 ∈ [--..--] + [387].[bits 136 to 159] ∈ UNINITIALIZED + [388].f1 ∈ [--..--] + [388].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [388].f3 ∈ [--..--] + [388].[bits 72 to 95] ∈ UNINITIALIZED + [388].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [388].f5 ∈ [--..--] + [388].[bits 136 to 159] ∈ UNINITIALIZED + [389].f1 ∈ [--..--] + [389].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [389].f3 ∈ [--..--] + [389].[bits 72 to 95] ∈ UNINITIALIZED + [389].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [389].f5 ∈ [--..--] + [389].[bits 136 to 159] ∈ UNINITIALIZED + [390].f1 ∈ [--..--] + [390].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [390].f3 ∈ [--..--] + [390].[bits 72 to 95] ∈ UNINITIALIZED + [390].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [390].f5 ∈ [--..--] + [390].[bits 136 to 159] ∈ UNINITIALIZED + [391].f1 ∈ [--..--] + [391].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [391].f3 ∈ [--..--] + [391].[bits 72 to 95] ∈ UNINITIALIZED + [391].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [391].f5 ∈ [--..--] + [391].[bits 136 to 159] ∈ UNINITIALIZED + [392].f1 ∈ [--..--] + [392].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [392].f3 ∈ [--..--] + [392].[bits 72 to 95] ∈ UNINITIALIZED + [392].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [392].f5 ∈ [--..--] + [392].[bits 136 to 159] ∈ UNINITIALIZED + [393].f1 ∈ [--..--] + [393].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [393].f3 ∈ [--..--] + [393].[bits 72 to 95] ∈ UNINITIALIZED + [393].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [393].f5 ∈ [--..--] + [393].[bits 136 to 159] ∈ UNINITIALIZED + [394].f1 ∈ [--..--] + [394].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [394].f3 ∈ [--..--] + [394].[bits 72 to 95] ∈ UNINITIALIZED + [394].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [394].f5 ∈ [--..--] + [394].[bits 136 to 159] ∈ UNINITIALIZED + [395].f1 ∈ [--..--] + [395].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [395].f3 ∈ [--..--] + [395].[bits 72 to 95] ∈ UNINITIALIZED + [395].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [395].f5 ∈ [--..--] + [395].[bits 136 to 159] ∈ UNINITIALIZED + [396].f1 ∈ [--..--] + [396].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [396].f3 ∈ [--..--] + [396].[bits 72 to 95] ∈ UNINITIALIZED + [396].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [396].f5 ∈ [--..--] + [396].[bits 136 to 159] ∈ UNINITIALIZED + [397].f1 ∈ [--..--] + [397].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [397].f3 ∈ [--..--] + [397].[bits 72 to 95] ∈ UNINITIALIZED + [397].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [397].f5 ∈ [--..--] + [397].[bits 136 to 159] ∈ UNINITIALIZED + [398].f1 ∈ [--..--] + [398].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [398].f3 ∈ [--..--] + [398].[bits 72 to 95] ∈ UNINITIALIZED + [398].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [398].f5 ∈ [--..--] + [398].[bits 136 to 159] ∈ UNINITIALIZED + [399].f1 ∈ [--..--] + [399].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [399].f3 ∈ [--..--] + [399].[bits 72 to 95] ∈ UNINITIALIZED + [399].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [399].f5 ∈ [--..--] + [399].[bits 136 to 159] ∈ UNINITIALIZED + [400].f1 ∈ [--..--] + [400].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [400].f3 ∈ [--..--] + [400].[bits 72 to 95] ∈ UNINITIALIZED + [400].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [400].f5 ∈ [--..--] + [400].[bits 136 to 159] ∈ UNINITIALIZED + [401].f1 ∈ [--..--] + [401].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [401].f3 ∈ [--..--] + [401].[bits 72 to 95] ∈ UNINITIALIZED + [401].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [401].f5 ∈ [--..--] + [401].[bits 136 to 159] ∈ UNINITIALIZED + [402].f1 ∈ [--..--] + [402].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [402].f3 ∈ [--..--] + [402].[bits 72 to 95] ∈ UNINITIALIZED + [402].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [402].f5 ∈ [--..--] + [402].[bits 136 to 159] ∈ UNINITIALIZED + [403].f1 ∈ [--..--] + [403].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [403].f3 ∈ [--..--] + [403].[bits 72 to 95] ∈ UNINITIALIZED + [403].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [403].f5 ∈ [--..--] + [403].[bits 136 to 159] ∈ UNINITIALIZED + [404].f1 ∈ [--..--] + [404].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [404].f3 ∈ [--..--] + [404].[bits 72 to 95] ∈ UNINITIALIZED + [404].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [404].f5 ∈ [--..--] + [404].[bits 136 to 159] ∈ UNINITIALIZED + [405].f1 ∈ [--..--] + [405].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [405].f3 ∈ [--..--] + [405].[bits 72 to 95] ∈ UNINITIALIZED + [405].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [405].f5 ∈ [--..--] + [405].[bits 136 to 159] ∈ UNINITIALIZED + [406].f1 ∈ [--..--] + [406].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [406].f3 ∈ [--..--] + [406].[bits 72 to 95] ∈ UNINITIALIZED + [406].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [406].f5 ∈ [--..--] + [406].[bits 136 to 159] ∈ UNINITIALIZED + [407].f1 ∈ [--..--] + [407].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [407].f3 ∈ [--..--] + [407].[bits 72 to 95] ∈ UNINITIALIZED + [407].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [407].f5 ∈ [--..--] + [407].[bits 136 to 159] ∈ UNINITIALIZED + [408].f1 ∈ [--..--] + [408].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [408].f3 ∈ [--..--] + [408].[bits 72 to 95] ∈ UNINITIALIZED + [408].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [408].f5 ∈ [--..--] + [408].[bits 136 to 159] ∈ UNINITIALIZED + [409].f1 ∈ [--..--] + [409].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [409].f3 ∈ [--..--] + [409].[bits 72 to 95] ∈ UNINITIALIZED + [409].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [409].f5 ∈ [--..--] + [409].[bits 136 to 159] ∈ UNINITIALIZED + [410].f1 ∈ [--..--] + [410].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [410].f3 ∈ [--..--] + [410].[bits 72 to 95] ∈ UNINITIALIZED + [410].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [410].f5 ∈ [--..--] + [410].[bits 136 to 159] ∈ UNINITIALIZED + [411].f1 ∈ [--..--] + [411].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [411].f3 ∈ [--..--] + [411].[bits 72 to 95] ∈ UNINITIALIZED + [411].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [411].f5 ∈ [--..--] + [411].[bits 136 to 159] ∈ UNINITIALIZED + [412].f1 ∈ [--..--] + [412].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [412].f3 ∈ [--..--] + [412].[bits 72 to 95] ∈ UNINITIALIZED + [412].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [412].f5 ∈ [--..--] + [412].[bits 136 to 159] ∈ UNINITIALIZED + [413].f1 ∈ [--..--] + [413].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [413].f3 ∈ [--..--] + [413].[bits 72 to 95] ∈ UNINITIALIZED + [413].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [413].f5 ∈ [--..--] + [413].[bits 136 to 159] ∈ UNINITIALIZED + [414].f1 ∈ [--..--] + [414].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [414].f3 ∈ [--..--] + [414].[bits 72 to 95] ∈ UNINITIALIZED + [414].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [414].f5 ∈ [--..--] + [414].[bits 136 to 159] ∈ UNINITIALIZED + [415].f1 ∈ [--..--] + [415].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [415].f3 ∈ [--..--] + [415].[bits 72 to 95] ∈ UNINITIALIZED + [415].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [415].f5 ∈ [--..--] + [415].[bits 136 to 159] ∈ UNINITIALIZED + [416].f1 ∈ [--..--] + [416].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [416].f3 ∈ [--..--] + [416].[bits 72 to 95] ∈ UNINITIALIZED + [416].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [416].f5 ∈ [--..--] + [416].[bits 136 to 159] ∈ UNINITIALIZED + [417].f1 ∈ [--..--] + [417].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [417].f3 ∈ [--..--] + [417].[bits 72 to 95] ∈ UNINITIALIZED + [417].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [417].f5 ∈ [--..--] + [417].[bits 136 to 159] ∈ UNINITIALIZED + [418].f1 ∈ [--..--] + [418].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [418].f3 ∈ [--..--] + [418].[bits 72 to 95] ∈ UNINITIALIZED + [418].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [418].f5 ∈ [--..--] + [418].[bits 136 to 159] ∈ UNINITIALIZED + [419].f1 ∈ [--..--] + [419].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [419].f3 ∈ [--..--] + [419].[bits 72 to 95] ∈ UNINITIALIZED + [419].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [419].f5 ∈ [--..--] + [419].[bits 136 to 159] ∈ UNINITIALIZED + [420].f1 ∈ [--..--] + [420].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [420].f3 ∈ [--..--] + [420].[bits 72 to 95] ∈ UNINITIALIZED + [420].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [420].f5 ∈ [--..--] + [420].[bits 136 to 159] ∈ UNINITIALIZED + [421].f1 ∈ [--..--] + [421].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [421].f3 ∈ [--..--] + [421].[bits 72 to 95] ∈ UNINITIALIZED + [421].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [421].f5 ∈ [--..--] + [421].[bits 136 to 159] ∈ UNINITIALIZED + [422].f1 ∈ [--..--] + [422].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [422].f3 ∈ [--..--] + [422].[bits 72 to 95] ∈ UNINITIALIZED + [422].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [422].f5 ∈ [--..--] + [422].[bits 136 to 159] ∈ UNINITIALIZED + [423].f1 ∈ [--..--] + [423].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [423].f3 ∈ [--..--] + [423].[bits 72 to 95] ∈ UNINITIALIZED + [423].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [423].f5 ∈ [--..--] + [423].[bits 136 to 159] ∈ UNINITIALIZED + [424].f1 ∈ [--..--] + [424].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [424].f3 ∈ [--..--] + [424].[bits 72 to 95] ∈ UNINITIALIZED + [424].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [424].f5 ∈ [--..--] + [424].[bits 136 to 159] ∈ UNINITIALIZED + [425].f1 ∈ [--..--] + [425].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [425].f3 ∈ [--..--] + [425].[bits 72 to 95] ∈ UNINITIALIZED + [425].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [425].f5 ∈ [--..--] + [425].[bits 136 to 159] ∈ UNINITIALIZED + [426].f1 ∈ [--..--] + [426].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [426].f3 ∈ [--..--] + [426].[bits 72 to 95] ∈ UNINITIALIZED + [426].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [426].f5 ∈ [--..--] + [426].[bits 136 to 159] ∈ UNINITIALIZED + [427].f1 ∈ [--..--] + [427].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [427].f3 ∈ [--..--] + [427].[bits 72 to 95] ∈ UNINITIALIZED + [427].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [427].f5 ∈ [--..--] + [427].[bits 136 to 159] ∈ UNINITIALIZED + [428].f1 ∈ [--..--] + [428].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [428].f3 ∈ [--..--] + [428].[bits 72 to 95] ∈ UNINITIALIZED + [428].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [428].f5 ∈ [--..--] + [428].[bits 136 to 159] ∈ UNINITIALIZED + [429].f1 ∈ [--..--] + [429].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [429].f3 ∈ [--..--] + [429].[bits 72 to 95] ∈ UNINITIALIZED + [429].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [429].f5 ∈ [--..--] + [429].[bits 136 to 159] ∈ UNINITIALIZED + [430].f1 ∈ [--..--] + [430].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [430].f3 ∈ [--..--] + [430].[bits 72 to 95] ∈ UNINITIALIZED + [430].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [430].f5 ∈ [--..--] + [430].[bits 136 to 159] ∈ UNINITIALIZED + [431].f1 ∈ [--..--] + [431].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [431].f3 ∈ [--..--] + [431].[bits 72 to 95] ∈ UNINITIALIZED + [431].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [431].f5 ∈ [--..--] + [431].[bits 136 to 159] ∈ UNINITIALIZED + [432].f1 ∈ [--..--] + [432].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [432].f3 ∈ [--..--] + [432].[bits 72 to 95] ∈ UNINITIALIZED + [432].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [432].f5 ∈ [--..--] + [432].[bits 136 to 159] ∈ UNINITIALIZED + [433].f1 ∈ [--..--] + [433].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [433].f3 ∈ [--..--] + [433].[bits 72 to 95] ∈ UNINITIALIZED + [433].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [433].f5 ∈ [--..--] + [433].[bits 136 to 159] ∈ UNINITIALIZED + [434].f1 ∈ [--..--] + [434].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [434].f3 ∈ [--..--] + [434].[bits 72 to 95] ∈ UNINITIALIZED + [434].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [434].f5 ∈ [--..--] + [434].[bits 136 to 159] ∈ UNINITIALIZED + [435].f1 ∈ [--..--] + [435].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [435].f3 ∈ [--..--] + [435].[bits 72 to 95] ∈ UNINITIALIZED + [435].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [435].f5 ∈ [--..--] + [435].[bits 136 to 159] ∈ UNINITIALIZED + [436].f1 ∈ [--..--] + [436].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [436].f3 ∈ [--..--] + [436].[bits 72 to 95] ∈ UNINITIALIZED + [436].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [436].f5 ∈ [--..--] + [436].[bits 136 to 159] ∈ UNINITIALIZED + [437].f1 ∈ [--..--] + [437].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [437].f3 ∈ [--..--] + [437].[bits 72 to 95] ∈ UNINITIALIZED + [437].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [437].f5 ∈ [--..--] + [437].[bits 136 to 159] ∈ UNINITIALIZED + [438].f1 ∈ [--..--] + [438].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [438].f3 ∈ [--..--] + [438].[bits 72 to 95] ∈ UNINITIALIZED + [438].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [438].f5 ∈ [--..--] + [438].[bits 136 to 159] ∈ UNINITIALIZED + [439].f1 ∈ [--..--] + [439].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [439].f3 ∈ [--..--] + [439].[bits 72 to 95] ∈ UNINITIALIZED + [439].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [439].f5 ∈ [--..--] + [439].[bits 136 to 159] ∈ UNINITIALIZED + [440].f1 ∈ [--..--] + [440].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [440].f3 ∈ [--..--] + [440].[bits 72 to 95] ∈ UNINITIALIZED + [440].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [440].f5 ∈ [--..--] + [440].[bits 136 to 159] ∈ UNINITIALIZED + [441].f1 ∈ [--..--] + [441].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [441].f3 ∈ [--..--] + [441].[bits 72 to 95] ∈ UNINITIALIZED + [441].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [441].f5 ∈ [--..--] + [441].[bits 136 to 159] ∈ UNINITIALIZED + [442].f1 ∈ [--..--] + [442].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [442].f3 ∈ [--..--] + [442].[bits 72 to 95] ∈ UNINITIALIZED + [442].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [442].f5 ∈ [--..--] + [442].[bits 136 to 159] ∈ UNINITIALIZED + [443].f1 ∈ [--..--] + [443].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [443].f3 ∈ [--..--] + [443].[bits 72 to 95] ∈ UNINITIALIZED + [443].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [443].f5 ∈ [--..--] + [443].[bits 136 to 159] ∈ UNINITIALIZED + [444].f1 ∈ [--..--] + [444].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [444].f3 ∈ [--..--] + [444].[bits 72 to 95] ∈ UNINITIALIZED + [444].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [444].f5 ∈ [--..--] + [444].[bits 136 to 159] ∈ UNINITIALIZED + [445].f1 ∈ [--..--] + [445].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [445].f3 ∈ [--..--] + [445].[bits 72 to 95] ∈ UNINITIALIZED + [445].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [445].f5 ∈ [--..--] + [445].[bits 136 to 159] ∈ UNINITIALIZED + [446].f1 ∈ [--..--] + [446].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [446].f3 ∈ [--..--] + [446].[bits 72 to 95] ∈ UNINITIALIZED + [446].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [446].f5 ∈ [--..--] + [446].[bits 136 to 159] ∈ UNINITIALIZED + [447].f1 ∈ [--..--] + [447].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [447].f3 ∈ [--..--] + [447].[bits 72 to 95] ∈ UNINITIALIZED + [447].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [447].f5 ∈ [--..--] + [447].[bits 136 to 159] ∈ UNINITIALIZED + [448].f1 ∈ [--..--] + [448].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [448].f3 ∈ [--..--] + [448].[bits 72 to 95] ∈ UNINITIALIZED + [448].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [448].f5 ∈ [--..--] + [448].[bits 136 to 159] ∈ UNINITIALIZED + [449].f1 ∈ [--..--] + [449].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [449].f3 ∈ [--..--] + [449].[bits 72 to 95] ∈ UNINITIALIZED + [449].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [449].f5 ∈ [--..--] + [449].[bits 136 to 159] ∈ UNINITIALIZED + [450].f1 ∈ [--..--] + [450].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [450].f3 ∈ [--..--] + [450].[bits 72 to 95] ∈ UNINITIALIZED + [450].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [450].f5 ∈ [--..--] + [450].[bits 136 to 159] ∈ UNINITIALIZED + [451].f1 ∈ [--..--] + [451].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [451].f3 ∈ [--..--] + [451].[bits 72 to 95] ∈ UNINITIALIZED + [451].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [451].f5 ∈ [--..--] + [451].[bits 136 to 159] ∈ UNINITIALIZED + [452].f1 ∈ [--..--] + [452].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [452].f3 ∈ [--..--] + [452].[bits 72 to 95] ∈ UNINITIALIZED + [452].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [452].f5 ∈ [--..--] + [452].[bits 136 to 159] ∈ UNINITIALIZED + [453].f1 ∈ [--..--] + [453].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [453].f3 ∈ [--..--] + [453].[bits 72 to 95] ∈ UNINITIALIZED + [453].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [453].f5 ∈ [--..--] + [453].[bits 136 to 159] ∈ UNINITIALIZED + [454].f1 ∈ [--..--] + [454].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [454].f3 ∈ [--..--] + [454].[bits 72 to 95] ∈ UNINITIALIZED + [454].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [454].f5 ∈ [--..--] + [454].[bits 136 to 159] ∈ UNINITIALIZED + [455].f1 ∈ [--..--] + [455].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [455].f3 ∈ [--..--] + [455].[bits 72 to 95] ∈ UNINITIALIZED + [455].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [455].f5 ∈ [--..--] + [455].[bits 136 to 159] ∈ UNINITIALIZED + [456].f1 ∈ [--..--] + [456].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [456].f3 ∈ [--..--] + [456].[bits 72 to 95] ∈ UNINITIALIZED + [456].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [456].f5 ∈ [--..--] + [456].[bits 136 to 159] ∈ UNINITIALIZED + [457].f1 ∈ [--..--] + [457].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [457].f3 ∈ [--..--] + [457].[bits 72 to 95] ∈ UNINITIALIZED + [457].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [457].f5 ∈ [--..--] + [457].[bits 136 to 159] ∈ UNINITIALIZED + [458].f1 ∈ [--..--] + [458].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [458].f3 ∈ [--..--] + [458].[bits 72 to 95] ∈ UNINITIALIZED + [458].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [458].f5 ∈ [--..--] + [458].[bits 136 to 159] ∈ UNINITIALIZED + [459].f1 ∈ [--..--] + [459].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [459].f3 ∈ [--..--] + [459].[bits 72 to 95] ∈ UNINITIALIZED + [459].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [459].f5 ∈ [--..--] + [459].[bits 136 to 159] ∈ UNINITIALIZED + [460].f1 ∈ [--..--] + [460].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [460].f3 ∈ [--..--] + [460].[bits 72 to 95] ∈ UNINITIALIZED + [460].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [460].f5 ∈ [--..--] + [460].[bits 136 to 159] ∈ UNINITIALIZED + [461].f1 ∈ [--..--] + [461].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [461].f3 ∈ [--..--] + [461].[bits 72 to 95] ∈ UNINITIALIZED + [461].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [461].f5 ∈ [--..--] + [461].[bits 136 to 159] ∈ UNINITIALIZED + [462].f1 ∈ [--..--] + [462].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [462].f3 ∈ [--..--] + [462].[bits 72 to 95] ∈ UNINITIALIZED + [462].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [462].f5 ∈ [--..--] + [462].[bits 136 to 159] ∈ UNINITIALIZED + [463].f1 ∈ [--..--] + [463].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [463].f3 ∈ [--..--] + [463].[bits 72 to 95] ∈ UNINITIALIZED + [463].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [463].f5 ∈ [--..--] + [463].[bits 136 to 159] ∈ UNINITIALIZED + [464].f1 ∈ [--..--] + [464].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [464].f3 ∈ [--..--] + [464].[bits 72 to 95] ∈ UNINITIALIZED + [464].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [464].f5 ∈ [--..--] + [464].[bits 136 to 159] ∈ UNINITIALIZED + [465].f1 ∈ [--..--] + [465].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [465].f3 ∈ [--..--] + [465].[bits 72 to 95] ∈ UNINITIALIZED + [465].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [465].f5 ∈ [--..--] + [465].[bits 136 to 159] ∈ UNINITIALIZED + [466].f1 ∈ [--..--] + [466].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [466].f3 ∈ [--..--] + [466].[bits 72 to 95] ∈ UNINITIALIZED + [466].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [466].f5 ∈ [--..--] + [466].[bits 136 to 159] ∈ UNINITIALIZED + [467].f1 ∈ [--..--] + [467].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [467].f3 ∈ [--..--] + [467].[bits 72 to 95] ∈ UNINITIALIZED + [467].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [467].f5 ∈ [--..--] + [467].[bits 136 to 159] ∈ UNINITIALIZED + [468].f1 ∈ [--..--] + [468].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [468].f3 ∈ [--..--] + [468].[bits 72 to 95] ∈ UNINITIALIZED + [468].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [468].f5 ∈ [--..--] + [468].[bits 136 to 159] ∈ UNINITIALIZED + [469].f1 ∈ [--..--] + [469].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [469].f3 ∈ [--..--] + [469].[bits 72 to 95] ∈ UNINITIALIZED + [469].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [469].f5 ∈ [--..--] + [469].[bits 136 to 159] ∈ UNINITIALIZED + [470].f1 ∈ [--..--] + [470].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [470].f3 ∈ [--..--] + [470].[bits 72 to 95] ∈ UNINITIALIZED + [470].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [470].f5 ∈ [--..--] + [470].[bits 136 to 159] ∈ UNINITIALIZED + [471].f1 ∈ [--..--] + [471].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [471].f3 ∈ [--..--] + [471].[bits 72 to 95] ∈ UNINITIALIZED + [471].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [471].f5 ∈ [--..--] + [471].[bits 136 to 159] ∈ UNINITIALIZED + [472].f1 ∈ [--..--] + [472].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [472].f3 ∈ [--..--] + [472].[bits 72 to 95] ∈ UNINITIALIZED + [472].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [472].f5 ∈ [--..--] + [472].[bits 136 to 159] ∈ UNINITIALIZED + [473].f1 ∈ [--..--] + [473].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [473].f3 ∈ [--..--] + [473].[bits 72 to 95] ∈ UNINITIALIZED + [473].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [473].f5 ∈ [--..--] + [473].[bits 136 to 159] ∈ UNINITIALIZED + [474].f1 ∈ [--..--] + [474].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [474].f3 ∈ [--..--] + [474].[bits 72 to 95] ∈ UNINITIALIZED + [474].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [474].f5 ∈ [--..--] + [474].[bits 136 to 159] ∈ UNINITIALIZED + [475].f1 ∈ [--..--] + [475].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [475].f3 ∈ [--..--] + [475].[bits 72 to 95] ∈ UNINITIALIZED + [475].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [475].f5 ∈ [--..--] + [475].[bits 136 to 159] ∈ UNINITIALIZED + [476].f1 ∈ [--..--] + [476].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [476].f3 ∈ [--..--] + [476].[bits 72 to 95] ∈ UNINITIALIZED + [476].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [476].f5 ∈ [--..--] + [476].[bits 136 to 159] ∈ UNINITIALIZED + [477].f1 ∈ [--..--] + [477].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [477].f3 ∈ [--..--] + [477].[bits 72 to 95] ∈ UNINITIALIZED + [477].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [477].f5 ∈ [--..--] + [477].[bits 136 to 159] ∈ UNINITIALIZED + [478].f1 ∈ [--..--] + [478].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [478].f3 ∈ [--..--] + [478].[bits 72 to 95] ∈ UNINITIALIZED + [478].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [478].f5 ∈ [--..--] + [478].[bits 136 to 159] ∈ UNINITIALIZED + [479].f1 ∈ [--..--] + [479].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [479].f3 ∈ [--..--] + [479].[bits 72 to 95] ∈ UNINITIALIZED + [479].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [479].f5 ∈ [--..--] + [479].[bits 136 to 159] ∈ UNINITIALIZED + [480].f1 ∈ [--..--] + [480].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [480].f3 ∈ [--..--] + [480].[bits 72 to 95] ∈ UNINITIALIZED + [480].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [480].f5 ∈ [--..--] + [480].[bits 136 to 159] ∈ UNINITIALIZED + [481].f1 ∈ [--..--] + [481].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [481].f3 ∈ [--..--] + [481].[bits 72 to 95] ∈ UNINITIALIZED + [481].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [481].f5 ∈ [--..--] + [481].[bits 136 to 159] ∈ UNINITIALIZED + [482].f1 ∈ [--..--] + [482].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [482].f3 ∈ [--..--] + [482].[bits 72 to 95] ∈ UNINITIALIZED + [482].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [482].f5 ∈ [--..--] + [482].[bits 136 to 159] ∈ UNINITIALIZED + [483].f1 ∈ [--..--] + [483].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [483].f3 ∈ [--..--] + [483].[bits 72 to 95] ∈ UNINITIALIZED + [483].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [483].f5 ∈ [--..--] + [483].[bits 136 to 159] ∈ UNINITIALIZED + [484].f1 ∈ [--..--] + [484].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [484].f3 ∈ [--..--] + [484].[bits 72 to 95] ∈ UNINITIALIZED + [484].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [484].f5 ∈ [--..--] + [484].[bits 136 to 159] ∈ UNINITIALIZED + [485].f1 ∈ [--..--] + [485].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [485].f3 ∈ [--..--] + [485].[bits 72 to 95] ∈ UNINITIALIZED + [485].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [485].f5 ∈ [--..--] + [485].[bits 136 to 159] ∈ UNINITIALIZED + [486].f1 ∈ [--..--] + [486].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [486].f3 ∈ [--..--] + [486].[bits 72 to 95] ∈ UNINITIALIZED + [486].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [486].f5 ∈ [--..--] + [486].[bits 136 to 159] ∈ UNINITIALIZED + [487].f1 ∈ [--..--] + [487].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [487].f3 ∈ [--..--] + [487].[bits 72 to 95] ∈ UNINITIALIZED + [487].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [487].f5 ∈ [--..--] + [487].[bits 136 to 159] ∈ UNINITIALIZED + [488].f1 ∈ [--..--] + [488].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [488].f3 ∈ [--..--] + [488].[bits 72 to 95] ∈ UNINITIALIZED + [488].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [488].f5 ∈ [--..--] + [488].[bits 136 to 159] ∈ UNINITIALIZED + [489].f1 ∈ [--..--] + [489].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [489].f3 ∈ [--..--] + [489].[bits 72 to 95] ∈ UNINITIALIZED + [489].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [489].f5 ∈ [--..--] + [489].[bits 136 to 159] ∈ UNINITIALIZED + [490].f1 ∈ [--..--] + [490].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [490].f3 ∈ [--..--] + [490].[bits 72 to 95] ∈ UNINITIALIZED + [490].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [490].f5 ∈ [--..--] + [490].[bits 136 to 159] ∈ UNINITIALIZED + [491].f1 ∈ [--..--] + [491].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [491].f3 ∈ [--..--] + [491].[bits 72 to 95] ∈ UNINITIALIZED + [491].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [491].f5 ∈ [--..--] + [491].[bits 136 to 159] ∈ UNINITIALIZED + [492].f1 ∈ [--..--] + [492].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [492].f3 ∈ [--..--] + [492].[bits 72 to 95] ∈ UNINITIALIZED + [492].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [492].f5 ∈ [--..--] + [492].[bits 136 to 159] ∈ UNINITIALIZED + [493].f1 ∈ [--..--] + [493].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [493].f3 ∈ [--..--] + [493].[bits 72 to 95] ∈ UNINITIALIZED + [493].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [493].f5 ∈ [--..--] + [493].[bits 136 to 159] ∈ UNINITIALIZED + [494].f1 ∈ [--..--] + [494].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [494].f3 ∈ [--..--] + [494].[bits 72 to 95] ∈ UNINITIALIZED + [494].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [494].f5 ∈ [--..--] + [494].[bits 136 to 159] ∈ UNINITIALIZED + [495].f1 ∈ [--..--] + [495].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [495].f3 ∈ [--..--] + [495].[bits 72 to 95] ∈ UNINITIALIZED + [495].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [495].f5 ∈ [--..--] + [495].[bits 136 to 159] ∈ UNINITIALIZED + [496].f1 ∈ [--..--] + [496].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [496].f3 ∈ [--..--] + [496].[bits 72 to 95] ∈ UNINITIALIZED + [496].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [496].f5 ∈ [--..--] + [496].[bits 136 to 159] ∈ UNINITIALIZED + [497].f1 ∈ [--..--] + [497].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [497].f3 ∈ [--..--] + [497].[bits 72 to 95] ∈ UNINITIALIZED + [497].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [497].f5 ∈ [--..--] + [497].[bits 136 to 159] ∈ UNINITIALIZED + [498].f1 ∈ [--..--] + [498].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [498].f3 ∈ [--..--] + [498].[bits 72 to 95] ∈ UNINITIALIZED + [498].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [498].f5 ∈ [--..--] + [498].[bits 136 to 159] ∈ UNINITIALIZED + [499].f1 ∈ [--..--] + [499].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [499].f3 ∈ [--..--] + [499].[bits 72 to 95] ∈ UNINITIALIZED + [499].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [499].f5 ∈ [--..--] + [499].[bits 136 to 159] ∈ UNINITIALIZED + [500].f1 ∈ [--..--] + [500].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [500].f3 ∈ [--..--] + [500].[bits 72 to 95] ∈ UNINITIALIZED + [500].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [500].f5 ∈ [--..--] + [500].[bits 136 to 159] ∈ UNINITIALIZED + [501].f1 ∈ [--..--] + [501].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [501].f3 ∈ [--..--] + [501].[bits 72 to 95] ∈ UNINITIALIZED + [501].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [501].f5 ∈ [--..--] + [501].[bits 136 to 159] ∈ UNINITIALIZED + [502].f1 ∈ [--..--] + [502].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [502].f3 ∈ [--..--] + [502].[bits 72 to 95] ∈ UNINITIALIZED + [502].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [502].f5 ∈ [--..--] + [502].[bits 136 to 159] ∈ UNINITIALIZED + [503].f1 ∈ [--..--] + [503].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [503].f3 ∈ [--..--] + [503].[bits 72 to 95] ∈ UNINITIALIZED + [503].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [503].f5 ∈ [--..--] + [503].[bits 136 to 159] ∈ UNINITIALIZED + [504].f1 ∈ [--..--] + [504].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [504].f3 ∈ [--..--] + [504].[bits 72 to 95] ∈ UNINITIALIZED + [504].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [504].f5 ∈ [--..--] + [504].[bits 136 to 159] ∈ UNINITIALIZED + [505].f1 ∈ [--..--] + [505].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [505].f3 ∈ [--..--] + [505].[bits 72 to 95] ∈ UNINITIALIZED + [505].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [505].f5 ∈ [--..--] + [505].[bits 136 to 159] ∈ UNINITIALIZED + [506].f1 ∈ [--..--] + [506].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [506].f3 ∈ [--..--] + [506].[bits 72 to 95] ∈ UNINITIALIZED + [506].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [506].f5 ∈ [--..--] + [506].[bits 136 to 159] ∈ UNINITIALIZED + [507].f1 ∈ [--..--] + [507].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [507].f3 ∈ [--..--] + [507].[bits 72 to 95] ∈ UNINITIALIZED + [507].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [507].f5 ∈ [--..--] + [507].[bits 136 to 159] ∈ UNINITIALIZED + [508].f1 ∈ [--..--] + [508].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [508].f3 ∈ [--..--] + [508].[bits 72 to 95] ∈ UNINITIALIZED + [508].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [508].f5 ∈ [--..--] + [508].[bits 136 to 159] ∈ UNINITIALIZED + [509].f1 ∈ [--..--] + [509].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [509].f3 ∈ [--..--] + [509].[bits 72 to 95] ∈ UNINITIALIZED + [509].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [509].f5 ∈ [--..--] + [509].[bits 136 to 159] ∈ UNINITIALIZED + [510].f1 ∈ [--..--] + [510].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [510].f3 ∈ [--..--] + [510].[bits 72 to 95] ∈ UNINITIALIZED + [510].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [510].f5 ∈ [--..--] + [510].[bits 136 to 159] ∈ UNINITIALIZED + [511].f1 ∈ [--..--] + [511].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [511].f3 ∈ [--..--] + [511].[bits 72 to 95] ∈ UNINITIALIZED + [511].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [511].f5 ∈ [--..--] + [511].[bits 136 to 159] ∈ UNINITIALIZED + [512].f1 ∈ [--..--] + [512].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [512].f3 ∈ [--..--] + [512].[bits 72 to 95] ∈ UNINITIALIZED + [512].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [512].f5 ∈ [--..--] + [512].[bits 136 to 159] ∈ UNINITIALIZED + [513].f1 ∈ [--..--] + [513].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [513].f3 ∈ [--..--] + [513].[bits 72 to 95] ∈ UNINITIALIZED + [513].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [513].f5 ∈ [--..--] + [513].[bits 136 to 159] ∈ UNINITIALIZED + [514].f1 ∈ [--..--] + [514].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [514].f3 ∈ [--..--] + [514].[bits 72 to 95] ∈ UNINITIALIZED + [514].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [514].f5 ∈ [--..--] + [514].[bits 136 to 159] ∈ UNINITIALIZED + [515].f1 ∈ [--..--] + [515].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [515].f3 ∈ [--..--] + [515].[bits 72 to 95] ∈ UNINITIALIZED + [515].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [515].f5 ∈ [--..--] + [515].[bits 136 to 159] ∈ UNINITIALIZED + [516].f1 ∈ [--..--] + [516].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [516].f3 ∈ [--..--] + [516].[bits 72 to 95] ∈ UNINITIALIZED + [516].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [516].f5 ∈ [--..--] + [516].[bits 136 to 159] ∈ UNINITIALIZED + [517].f1 ∈ [--..--] + [517].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [517].f3 ∈ [--..--] + [517].[bits 72 to 95] ∈ UNINITIALIZED + [517].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [517].f5 ∈ [--..--] + [517].[bits 136 to 159] ∈ UNINITIALIZED + [518].f1 ∈ [--..--] + [518].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [518].f3 ∈ [--..--] + [518].[bits 72 to 95] ∈ UNINITIALIZED + [518].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [518].f5 ∈ [--..--] + [518].[bits 136 to 159] ∈ UNINITIALIZED + [519].f1 ∈ [--..--] + [519].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [519].f3 ∈ [--..--] + [519].[bits 72 to 95] ∈ UNINITIALIZED + [519].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [519].f5 ∈ [--..--] + [519].[bits 136 to 159] ∈ UNINITIALIZED + [520].f1 ∈ [--..--] + [520].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [520].f3 ∈ [--..--] + [520].[bits 72 to 95] ∈ UNINITIALIZED + [520].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [520].f5 ∈ [--..--] + [520].[bits 136 to 159] ∈ UNINITIALIZED + [521].f1 ∈ [--..--] + [521].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [521].f3 ∈ [--..--] + [521].[bits 72 to 95] ∈ UNINITIALIZED + [521].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [521].f5 ∈ [--..--] + [521].[bits 136 to 159] ∈ UNINITIALIZED + [522].f1 ∈ [--..--] + [522].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [522].f3 ∈ [--..--] + [522].[bits 72 to 95] ∈ UNINITIALIZED + [522].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [522].f5 ∈ [--..--] + [522].[bits 136 to 159] ∈ UNINITIALIZED + [523].f1 ∈ [--..--] + [523].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [523].f3 ∈ [--..--] + [523].[bits 72 to 95] ∈ UNINITIALIZED + [523].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [523].f5 ∈ [--..--] + [523].[bits 136 to 159] ∈ UNINITIALIZED + [524].f1 ∈ [--..--] + [524].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [524].f3 ∈ [--..--] + [524].[bits 72 to 95] ∈ UNINITIALIZED + [524].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [524].f5 ∈ [--..--] + [524].[bits 136 to 159] ∈ UNINITIALIZED + [525].f1 ∈ [--..--] + [525].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [525].f3 ∈ [--..--] + [525].[bits 72 to 95] ∈ UNINITIALIZED + [525].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [525].f5 ∈ [--..--] + [525].[bits 136 to 159] ∈ UNINITIALIZED + [526].f1 ∈ [--..--] + [526].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [526].f3 ∈ [--..--] + [526].[bits 72 to 95] ∈ UNINITIALIZED + [526].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [526].f5 ∈ [--..--] + [526].[bits 136 to 159] ∈ UNINITIALIZED + [527].f1 ∈ [--..--] + [527].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [527].f3 ∈ [--..--] + [527].[bits 72 to 95] ∈ UNINITIALIZED + [527].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [527].f5 ∈ [--..--] + [527].[bits 136 to 159] ∈ UNINITIALIZED + [528].f1 ∈ [--..--] + [528].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [528].f3 ∈ [--..--] + [528].[bits 72 to 95] ∈ UNINITIALIZED + [528].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [528].f5 ∈ [--..--] + [528].[bits 136 to 159] ∈ UNINITIALIZED + [529].f1 ∈ [--..--] + [529].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [529].f3 ∈ [--..--] + [529].[bits 72 to 95] ∈ UNINITIALIZED + [529].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [529].f5 ∈ [--..--] + [529].[bits 136 to 159] ∈ UNINITIALIZED + [530].f1 ∈ [--..--] + [530].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [530].f3 ∈ [--..--] + [530].[bits 72 to 95] ∈ UNINITIALIZED + [530].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [530].f5 ∈ [--..--] + [530].[bits 136 to 159] ∈ UNINITIALIZED + [531].f1 ∈ [--..--] + [531].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [531].f3 ∈ [--..--] + [531].[bits 72 to 95] ∈ UNINITIALIZED + [531].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [531].f5 ∈ [--..--] + [531].[bits 136 to 159] ∈ UNINITIALIZED + [532].f1 ∈ [--..--] + [532].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [532].f3 ∈ [--..--] + [532].[bits 72 to 95] ∈ UNINITIALIZED + [532].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [532].f5 ∈ [--..--] + [532].[bits 136 to 159] ∈ UNINITIALIZED + [533].f1 ∈ [--..--] + [533].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [533].f3 ∈ [--..--] + [533].[bits 72 to 95] ∈ UNINITIALIZED + [533].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [533].f5 ∈ [--..--] + [533].[bits 136 to 159] ∈ UNINITIALIZED + [534].f1 ∈ [--..--] + [534].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [534].f3 ∈ [--..--] + [534].[bits 72 to 95] ∈ UNINITIALIZED + [534].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [534].f5 ∈ [--..--] + [534].[bits 136 to 159] ∈ UNINITIALIZED + [535].f1 ∈ [--..--] + [535].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [535].f3 ∈ [--..--] + [535].[bits 72 to 95] ∈ UNINITIALIZED + [535].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [535].f5 ∈ [--..--] + [535].[bits 136 to 159] ∈ UNINITIALIZED + [536].f1 ∈ [--..--] + [536].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [536].f3 ∈ [--..--] + [536].[bits 72 to 95] ∈ UNINITIALIZED + [536].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [536].f5 ∈ [--..--] + [536].[bits 136 to 159] ∈ UNINITIALIZED + [537].f1 ∈ [--..--] + [537].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [537].f3 ∈ [--..--] + [537].[bits 72 to 95] ∈ UNINITIALIZED + [537].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [537].f5 ∈ [--..--] + [537].[bits 136 to 159] ∈ UNINITIALIZED + [538].f1 ∈ [--..--] + [538].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [538].f3 ∈ [--..--] + [538].[bits 72 to 95] ∈ UNINITIALIZED + [538].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [538].f5 ∈ [--..--] + [538].[bits 136 to 159] ∈ UNINITIALIZED + [539].f1 ∈ [--..--] + [539].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [539].f3 ∈ [--..--] + [539].[bits 72 to 95] ∈ UNINITIALIZED + [539].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [539].f5 ∈ [--..--] + [539].[bits 136 to 159] ∈ UNINITIALIZED + [540].f1 ∈ [--..--] + [540].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [540].f3 ∈ [--..--] + [540].[bits 72 to 95] ∈ UNINITIALIZED + [540].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [540].f5 ∈ [--..--] + [540].[bits 136 to 159] ∈ UNINITIALIZED + [541].f1 ∈ [--..--] + [541].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [541].f3 ∈ [--..--] + [541].[bits 72 to 95] ∈ UNINITIALIZED + [541].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [541].f5 ∈ [--..--] + [541].[bits 136 to 159] ∈ UNINITIALIZED + [542].f1 ∈ [--..--] + [542].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [542].f3 ∈ [--..--] + [542].[bits 72 to 95] ∈ UNINITIALIZED + [542].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [542].f5 ∈ [--..--] + [542].[bits 136 to 159] ∈ UNINITIALIZED + [543].f1 ∈ [--..--] + [543].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [543].f3 ∈ [--..--] + [543].[bits 72 to 95] ∈ UNINITIALIZED + [543].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [543].f5 ∈ [--..--] + [543].[bits 136 to 159] ∈ UNINITIALIZED + [544].f1 ∈ [--..--] + [544].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [544].f3 ∈ [--..--] + [544].[bits 72 to 95] ∈ UNINITIALIZED + [544].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [544].f5 ∈ [--..--] + [544].[bits 136 to 159] ∈ UNINITIALIZED + [545].f1 ∈ [--..--] + [545].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [545].f3 ∈ [--..--] + [545].[bits 72 to 95] ∈ UNINITIALIZED + [545].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [545].f5 ∈ [--..--] + [545].[bits 136 to 159] ∈ UNINITIALIZED + [546].f1 ∈ [--..--] + [546].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [546].f3 ∈ [--..--] + [546].[bits 72 to 95] ∈ UNINITIALIZED + [546].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [546].f5 ∈ [--..--] + [546].[bits 136 to 159] ∈ UNINITIALIZED + [547].f1 ∈ [--..--] + [547].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [547].f3 ∈ [--..--] + [547].[bits 72 to 95] ∈ UNINITIALIZED + [547].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [547].f5 ∈ [--..--] + [547].[bits 136 to 159] ∈ UNINITIALIZED + [548].f1 ∈ [--..--] + [548].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [548].f3 ∈ [--..--] + [548].[bits 72 to 95] ∈ UNINITIALIZED + [548].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [548].f5 ∈ [--..--] + [548].[bits 136 to 159] ∈ UNINITIALIZED + [549].f1 ∈ [--..--] + [549].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [549].f3 ∈ [--..--] + [549].[bits 72 to 95] ∈ UNINITIALIZED + [549].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [549].f5 ∈ [--..--] + [549].[bits 136 to 159] ∈ UNINITIALIZED + [550].f1 ∈ [--..--] + [550].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [550].f3 ∈ [--..--] + [550].[bits 72 to 95] ∈ UNINITIALIZED + [550].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [550].f5 ∈ [--..--] + [550].[bits 136 to 159] ∈ UNINITIALIZED + [551].f1 ∈ [--..--] + [551].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [551].f3 ∈ [--..--] + [551].[bits 72 to 95] ∈ UNINITIALIZED + [551].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [551].f5 ∈ [--..--] + [551].[bits 136 to 159] ∈ UNINITIALIZED + [552].f1 ∈ [--..--] + [552].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [552].f3 ∈ [--..--] + [552].[bits 72 to 95] ∈ UNINITIALIZED + [552].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [552].f5 ∈ [--..--] + [552].[bits 136 to 159] ∈ UNINITIALIZED + [553].f1 ∈ [--..--] + [553].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [553].f3 ∈ [--..--] + [553].[bits 72 to 95] ∈ UNINITIALIZED + [553].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [553].f5 ∈ [--..--] + [553].[bits 136 to 159] ∈ UNINITIALIZED + [554].f1 ∈ [--..--] + [554].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [554].f3 ∈ [--..--] + [554].[bits 72 to 95] ∈ UNINITIALIZED + [554].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [554].f5 ∈ [--..--] + [554].[bits 136 to 159] ∈ UNINITIALIZED + [555].f1 ∈ [--..--] + [555].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [555].f3 ∈ [--..--] + [555].[bits 72 to 95] ∈ UNINITIALIZED + [555].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [555].f5 ∈ [--..--] + [555].[bits 136 to 159] ∈ UNINITIALIZED + [556].f1 ∈ [--..--] + [556].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [556].f3 ∈ [--..--] + [556].[bits 72 to 95] ∈ UNINITIALIZED + [556].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [556].f5 ∈ [--..--] + [556].[bits 136 to 159] ∈ UNINITIALIZED + [557].f1 ∈ [--..--] + [557].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [557].f3 ∈ [--..--] + [557].[bits 72 to 95] ∈ UNINITIALIZED + [557].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [557].f5 ∈ [--..--] + [557].[bits 136 to 159] ∈ UNINITIALIZED + [558].f1 ∈ [--..--] + [558].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [558].f3 ∈ [--..--] + [558].[bits 72 to 95] ∈ UNINITIALIZED + [558].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [558].f5 ∈ [--..--] + [558].[bits 136 to 159] ∈ UNINITIALIZED + [559].f1 ∈ [--..--] + [559].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [559].f3 ∈ [--..--] + [559].[bits 72 to 95] ∈ UNINITIALIZED + [559].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [559].f5 ∈ [--..--] + [559].[bits 136 to 159] ∈ UNINITIALIZED + [560].f1 ∈ [--..--] + [560].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [560].f3 ∈ [--..--] + [560].[bits 72 to 95] ∈ UNINITIALIZED + [560].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [560].f5 ∈ [--..--] + [560].[bits 136 to 159] ∈ UNINITIALIZED + [561].f1 ∈ [--..--] + [561].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [561].f3 ∈ [--..--] + [561].[bits 72 to 95] ∈ UNINITIALIZED + [561].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [561].f5 ∈ [--..--] + [561].[bits 136 to 159] ∈ UNINITIALIZED + [562].f1 ∈ [--..--] + [562].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [562].f3 ∈ [--..--] + [562].[bits 72 to 95] ∈ UNINITIALIZED + [562].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [562].f5 ∈ [--..--] + [562].[bits 136 to 159] ∈ UNINITIALIZED + [563].f1 ∈ [--..--] + [563].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [563].f3 ∈ [--..--] + [563].[bits 72 to 95] ∈ UNINITIALIZED + [563].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [563].f5 ∈ [--..--] + [563].[bits 136 to 159] ∈ UNINITIALIZED + [564].f1 ∈ [--..--] + [564].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [564].f3 ∈ [--..--] + [564].[bits 72 to 95] ∈ UNINITIALIZED + [564].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [564].f5 ∈ [--..--] + [564].[bits 136 to 159] ∈ UNINITIALIZED + [565].f1 ∈ [--..--] + [565].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [565].f3 ∈ [--..--] + [565].[bits 72 to 95] ∈ UNINITIALIZED + [565].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [565].f5 ∈ [--..--] + [565].[bits 136 to 159] ∈ UNINITIALIZED + [566].f1 ∈ [--..--] + [566].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [566].f3 ∈ [--..--] + [566].[bits 72 to 95] ∈ UNINITIALIZED + [566].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [566].f5 ∈ [--..--] + [566].[bits 136 to 159] ∈ UNINITIALIZED + [567].f1 ∈ [--..--] + [567].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [567].f3 ∈ [--..--] + [567].[bits 72 to 95] ∈ UNINITIALIZED + [567].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [567].f5 ∈ [--..--] + [567].[bits 136 to 159] ∈ UNINITIALIZED + [568].f1 ∈ [--..--] + [568].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [568].f3 ∈ [--..--] + [568].[bits 72 to 95] ∈ UNINITIALIZED + [568].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [568].f5 ∈ [--..--] + [568].[bits 136 to 159] ∈ UNINITIALIZED + [569].f1 ∈ [--..--] + [569].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [569].f3 ∈ [--..--] + [569].[bits 72 to 95] ∈ UNINITIALIZED + [569].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [569].f5 ∈ [--..--] + [569].[bits 136 to 159] ∈ UNINITIALIZED + [570].f1 ∈ [--..--] + [570].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [570].f3 ∈ [--..--] + [570].[bits 72 to 95] ∈ UNINITIALIZED + [570].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [570].f5 ∈ [--..--] + [570].[bits 136 to 159] ∈ UNINITIALIZED + [571].f1 ∈ [--..--] + [571].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [571].f3 ∈ [--..--] + [571].[bits 72 to 95] ∈ UNINITIALIZED + [571].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [571].f5 ∈ [--..--] + [571].[bits 136 to 159] ∈ UNINITIALIZED + [572].f1 ∈ [--..--] + [572].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [572].f3 ∈ [--..--] + [572].[bits 72 to 95] ∈ UNINITIALIZED + [572].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [572].f5 ∈ [--..--] + [572].[bits 136 to 159] ∈ UNINITIALIZED + [573].f1 ∈ [--..--] + [573].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [573].f3 ∈ [--..--] + [573].[bits 72 to 95] ∈ UNINITIALIZED + [573].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [573].f5 ∈ [--..--] + [573].[bits 136 to 159] ∈ UNINITIALIZED + [574].f1 ∈ [--..--] + [574].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [574].f3 ∈ [--..--] + [574].[bits 72 to 95] ∈ UNINITIALIZED + [574].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [574].f5 ∈ [--..--] + [574].[bits 136 to 159] ∈ UNINITIALIZED + [575].f1 ∈ [--..--] + [575].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [575].f3 ∈ [--..--] + [575].[bits 72 to 95] ∈ UNINITIALIZED + [575].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [575].f5 ∈ [--..--] + [575].[bits 136 to 159] ∈ UNINITIALIZED + [576].f1 ∈ [--..--] + [576].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [576].f3 ∈ [--..--] + [576].[bits 72 to 95] ∈ UNINITIALIZED + [576].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [576].f5 ∈ [--..--] + [576].[bits 136 to 159] ∈ UNINITIALIZED + [577].f1 ∈ [--..--] + [577].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [577].f3 ∈ [--..--] + [577].[bits 72 to 95] ∈ UNINITIALIZED + [577].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [577].f5 ∈ [--..--] + [577].[bits 136 to 159] ∈ UNINITIALIZED + [578].f1 ∈ [--..--] + [578].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [578].f3 ∈ [--..--] + [578].[bits 72 to 95] ∈ UNINITIALIZED + [578].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [578].f5 ∈ [--..--] + [578].[bits 136 to 159] ∈ UNINITIALIZED + [579].f1 ∈ [--..--] + [579].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [579].f3 ∈ [--..--] + [579].[bits 72 to 95] ∈ UNINITIALIZED + [579].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [579].f5 ∈ [--..--] + [579].[bits 136 to 159] ∈ UNINITIALIZED + [580].f1 ∈ [--..--] + [580].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [580].f3 ∈ [--..--] + [580].[bits 72 to 95] ∈ UNINITIALIZED + [580].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [580].f5 ∈ [--..--] + [580].[bits 136 to 159] ∈ UNINITIALIZED + [581].f1 ∈ [--..--] + [581].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [581].f3 ∈ [--..--] + [581].[bits 72 to 95] ∈ UNINITIALIZED + [581].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [581].f5 ∈ [--..--] + [581].[bits 136 to 159] ∈ UNINITIALIZED + [582].f1 ∈ [--..--] + [582].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [582].f3 ∈ [--..--] + [582].[bits 72 to 95] ∈ UNINITIALIZED + [582].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [582].f5 ∈ [--..--] + [582].[bits 136 to 159] ∈ UNINITIALIZED + [583].f1 ∈ [--..--] + [583].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [583].f3 ∈ [--..--] + [583].[bits 72 to 95] ∈ UNINITIALIZED + [583].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [583].f5 ∈ [--..--] + [583].[bits 136 to 159] ∈ UNINITIALIZED + [584].f1 ∈ [--..--] + [584].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [584].f3 ∈ [--..--] + [584].[bits 72 to 95] ∈ UNINITIALIZED + [584].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [584].f5 ∈ [--..--] + [584].[bits 136 to 159] ∈ UNINITIALIZED + [585].f1 ∈ [--..--] + [585].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [585].f3 ∈ [--..--] + [585].[bits 72 to 95] ∈ UNINITIALIZED + [585].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [585].f5 ∈ [--..--] + [585].[bits 136 to 159] ∈ UNINITIALIZED + [586].f1 ∈ [--..--] + [586].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [586].f3 ∈ [--..--] + [586].[bits 72 to 95] ∈ UNINITIALIZED + [586].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [586].f5 ∈ [--..--] + [586].[bits 136 to 159] ∈ UNINITIALIZED + [587].f1 ∈ [--..--] + [587].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [587].f3 ∈ [--..--] + [587].[bits 72 to 95] ∈ UNINITIALIZED + [587].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [587].f5 ∈ [--..--] + [587].[bits 136 to 159] ∈ UNINITIALIZED + [588].f1 ∈ [--..--] + [588].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [588].f3 ∈ [--..--] + [588].[bits 72 to 95] ∈ UNINITIALIZED + [588].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [588].f5 ∈ [--..--] + [588].[bits 136 to 159] ∈ UNINITIALIZED + [589].f1 ∈ [--..--] + [589].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [589].f3 ∈ [--..--] + [589].[bits 72 to 95] ∈ UNINITIALIZED + [589].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [589].f5 ∈ [--..--] + [589].[bits 136 to 159] ∈ UNINITIALIZED + [590].f1 ∈ [--..--] + [590].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [590].f3 ∈ [--..--] + [590].[bits 72 to 95] ∈ UNINITIALIZED + [590].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [590].f5 ∈ [--..--] + [590].[bits 136 to 159] ∈ UNINITIALIZED + [591].f1 ∈ [--..--] + [591].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [591].f3 ∈ [--..--] + [591].[bits 72 to 95] ∈ UNINITIALIZED + [591].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [591].f5 ∈ [--..--] + [591].[bits 136 to 159] ∈ UNINITIALIZED + [592].f1 ∈ [--..--] + [592].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [592].f3 ∈ [--..--] + [592].[bits 72 to 95] ∈ UNINITIALIZED + [592].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [592].f5 ∈ [--..--] + [592].[bits 136 to 159] ∈ UNINITIALIZED + [593].f1 ∈ [--..--] + [593].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [593].f3 ∈ [--..--] + [593].[bits 72 to 95] ∈ UNINITIALIZED + [593].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [593].f5 ∈ [--..--] + [593].[bits 136 to 159] ∈ UNINITIALIZED + [594].f1 ∈ [--..--] + [594].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [594].f3 ∈ [--..--] + [594].[bits 72 to 95] ∈ UNINITIALIZED + [594].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [594].f5 ∈ [--..--] + [594].[bits 136 to 159] ∈ UNINITIALIZED + [595].f1 ∈ [--..--] + [595].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [595].f3 ∈ [--..--] + [595].[bits 72 to 95] ∈ UNINITIALIZED + [595].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [595].f5 ∈ [--..--] + [595].[bits 136 to 159] ∈ UNINITIALIZED + [596].f1 ∈ [--..--] + [596].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [596].f3 ∈ [--..--] + [596].[bits 72 to 95] ∈ UNINITIALIZED + [596].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [596].f5 ∈ [--..--] + [596].[bits 136 to 159] ∈ UNINITIALIZED + [597].f1 ∈ [--..--] + [597].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [597].f3 ∈ [--..--] + [597].[bits 72 to 95] ∈ UNINITIALIZED + [597].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [597].f5 ∈ [--..--] + [597].[bits 136 to 159] ∈ UNINITIALIZED + [598].f1 ∈ [--..--] + [598].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [598].f3 ∈ [--..--] + [598].[bits 72 to 95] ∈ UNINITIALIZED + [598].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [598].f5 ∈ [--..--] + [598].[bits 136 to 159] ∈ UNINITIALIZED + [599].f1 ∈ [--..--] + [599].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [599].f3 ∈ [--..--] + [599].[bits 72 to 95] ∈ UNINITIALIZED + [599].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [599].f5 ∈ [--..--] + [599].[bits 136 to 159] ∈ UNINITIALIZED + [600].f1 ∈ [--..--] + [600].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [600].f3 ∈ [--..--] + [600].[bits 72 to 95] ∈ UNINITIALIZED + [600].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [600].f5 ∈ [--..--] + [600].[bits 136 to 159] ∈ UNINITIALIZED + [601].f1 ∈ [--..--] + [601].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [601].f3 ∈ [--..--] + [601].[bits 72 to 95] ∈ UNINITIALIZED + [601].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [601].f5 ∈ [--..--] + [601].[bits 136 to 159] ∈ UNINITIALIZED + [602].f1 ∈ [--..--] + [602].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [602].f3 ∈ [--..--] + [602].[bits 72 to 95] ∈ UNINITIALIZED + [602].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [602].f5 ∈ [--..--] + [602].[bits 136 to 159] ∈ UNINITIALIZED + [603].f1 ∈ [--..--] + [603].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [603].f3 ∈ [--..--] + [603].[bits 72 to 95] ∈ UNINITIALIZED + [603].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [603].f5 ∈ [--..--] + [603].[bits 136 to 159] ∈ UNINITIALIZED + [604].f1 ∈ [--..--] + [604].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [604].f3 ∈ [--..--] + [604].[bits 72 to 95] ∈ UNINITIALIZED + [604].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [604].f5 ∈ [--..--] + [604].[bits 136 to 159] ∈ UNINITIALIZED + [605].f1 ∈ [--..--] + [605].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [605].f3 ∈ [--..--] + [605].[bits 72 to 95] ∈ UNINITIALIZED + [605].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [605].f5 ∈ [--..--] + [605].[bits 136 to 159] ∈ UNINITIALIZED + [606].f1 ∈ [--..--] + [606].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [606].f3 ∈ [--..--] + [606].[bits 72 to 95] ∈ UNINITIALIZED + [606].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [606].f5 ∈ [--..--] + [606].[bits 136 to 159] ∈ UNINITIALIZED + [607].f1 ∈ [--..--] + [607].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [607].f3 ∈ [--..--] + [607].[bits 72 to 95] ∈ UNINITIALIZED + [607].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [607].f5 ∈ [--..--] + [607].[bits 136 to 159] ∈ UNINITIALIZED + [608].f1 ∈ [--..--] + [608].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [608].f3 ∈ [--..--] + [608].[bits 72 to 95] ∈ UNINITIALIZED + [608].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [608].f5 ∈ [--..--] + [608].[bits 136 to 159] ∈ UNINITIALIZED + [609].f1 ∈ [--..--] + [609].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [609].f3 ∈ [--..--] + [609].[bits 72 to 95] ∈ UNINITIALIZED + [609].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [609].f5 ∈ [--..--] + [609].[bits 136 to 159] ∈ UNINITIALIZED + [610].f1 ∈ [--..--] + [610].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [610].f3 ∈ [--..--] + [610].[bits 72 to 95] ∈ UNINITIALIZED + [610].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [610].f5 ∈ [--..--] + [610].[bits 136 to 159] ∈ UNINITIALIZED + [611].f1 ∈ [--..--] + [611].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [611].f3 ∈ [--..--] + [611].[bits 72 to 95] ∈ UNINITIALIZED + [611].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [611].f5 ∈ [--..--] + [611].[bits 136 to 159] ∈ UNINITIALIZED + [612].f1 ∈ [--..--] + [612].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [612].f3 ∈ [--..--] + [612].[bits 72 to 95] ∈ UNINITIALIZED + [612].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [612].f5 ∈ [--..--] + [612].[bits 136 to 159] ∈ UNINITIALIZED + [613].f1 ∈ [--..--] + [613].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [613].f3 ∈ [--..--] + [613].[bits 72 to 95] ∈ UNINITIALIZED + [613].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [613].f5 ∈ [--..--] + [613].[bits 136 to 159] ∈ UNINITIALIZED + [614].f1 ∈ [--..--] + [614].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [614].f3 ∈ [--..--] + [614].[bits 72 to 95] ∈ UNINITIALIZED + [614].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [614].f5 ∈ [--..--] + [614].[bits 136 to 159] ∈ UNINITIALIZED + [615].f1 ∈ [--..--] + [615].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [615].f3 ∈ [--..--] + [615].[bits 72 to 95] ∈ UNINITIALIZED + [615].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [615].f5 ∈ [--..--] + [615].[bits 136 to 159] ∈ UNINITIALIZED + [616].f1 ∈ [--..--] + [616].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [616].f3 ∈ [--..--] + [616].[bits 72 to 95] ∈ UNINITIALIZED + [616].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [616].f5 ∈ [--..--] + [616].[bits 136 to 159] ∈ UNINITIALIZED + [617].f1 ∈ [--..--] + [617].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [617].f3 ∈ [--..--] + [617].[bits 72 to 95] ∈ UNINITIALIZED + [617].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [617].f5 ∈ [--..--] + [617].[bits 136 to 159] ∈ UNINITIALIZED + [618].f1 ∈ [--..--] + [618].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [618].f3 ∈ [--..--] + [618].[bits 72 to 95] ∈ UNINITIALIZED + [618].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [618].f5 ∈ [--..--] + [618].[bits 136 to 159] ∈ UNINITIALIZED + [619].f1 ∈ [--..--] + [619].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [619].f3 ∈ [--..--] + [619].[bits 72 to 95] ∈ UNINITIALIZED + [619].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [619].f5 ∈ [--..--] + [619].[bits 136 to 159] ∈ UNINITIALIZED + [620].f1 ∈ [--..--] + [620].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [620].f3 ∈ [--..--] + [620].[bits 72 to 95] ∈ UNINITIALIZED + [620].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [620].f5 ∈ [--..--] + [620].[bits 136 to 159] ∈ UNINITIALIZED + [621].f1 ∈ [--..--] + [621].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [621].f3 ∈ [--..--] + [621].[bits 72 to 95] ∈ UNINITIALIZED + [621].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [621].f5 ∈ [--..--] + [621].[bits 136 to 159] ∈ UNINITIALIZED + [622].f1 ∈ [--..--] + [622].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [622].f3 ∈ [--..--] + [622].[bits 72 to 95] ∈ UNINITIALIZED + [622].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [622].f5 ∈ [--..--] + [622].[bits 136 to 159] ∈ UNINITIALIZED + [623].f1 ∈ [--..--] + [623].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [623].f3 ∈ [--..--] + [623].[bits 72 to 95] ∈ UNINITIALIZED + [623].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [623].f5 ∈ [--..--] + [623].[bits 136 to 159] ∈ UNINITIALIZED + [624].f1 ∈ [--..--] + [624].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [624].f3 ∈ [--..--] + [624].[bits 72 to 95] ∈ UNINITIALIZED + [624].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [624].f5 ∈ [--..--] + [624].[bits 136 to 159] ∈ UNINITIALIZED + [625].f1 ∈ [--..--] + [625].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [625].f3 ∈ [--..--] + [625].[bits 72 to 95] ∈ UNINITIALIZED + [625].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [625].f5 ∈ [--..--] + [625].[bits 136 to 159] ∈ UNINITIALIZED + [626].f1 ∈ [--..--] + [626].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [626].f3 ∈ [--..--] + [626].[bits 72 to 95] ∈ UNINITIALIZED + [626].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [626].f5 ∈ [--..--] + [626].[bits 136 to 159] ∈ UNINITIALIZED + [627].f1 ∈ [--..--] + [627].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [627].f3 ∈ [--..--] + [627].[bits 72 to 95] ∈ UNINITIALIZED + [627].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [627].f5 ∈ [--..--] + [627].[bits 136 to 159] ∈ UNINITIALIZED + [628].f1 ∈ [--..--] + [628].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [628].f3 ∈ [--..--] + [628].[bits 72 to 95] ∈ UNINITIALIZED + [628].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [628].f5 ∈ [--..--] + [628].[bits 136 to 159] ∈ UNINITIALIZED + [629].f1 ∈ [--..--] + [629].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [629].f3 ∈ [--..--] + [629].[bits 72 to 95] ∈ UNINITIALIZED + [629].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [629].f5 ∈ [--..--] + [629].[bits 136 to 159] ∈ UNINITIALIZED + [630].f1 ∈ [--..--] + [630].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [630].f3 ∈ [--..--] + [630].[bits 72 to 95] ∈ UNINITIALIZED + [630].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [630].f5 ∈ [--..--] + [630].[bits 136 to 159] ∈ UNINITIALIZED + [631].f1 ∈ [--..--] + [631].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [631].f3 ∈ [--..--] + [631].[bits 72 to 95] ∈ UNINITIALIZED + [631].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [631].f5 ∈ [--..--] + [631].[bits 136 to 159] ∈ UNINITIALIZED + [632].f1 ∈ [--..--] + [632].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [632].f3 ∈ [--..--] + [632].[bits 72 to 95] ∈ UNINITIALIZED + [632].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [632].f5 ∈ [--..--] + [632].[bits 136 to 159] ∈ UNINITIALIZED + [633].f1 ∈ [--..--] + [633].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [633].f3 ∈ [--..--] + [633].[bits 72 to 95] ∈ UNINITIALIZED + [633].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [633].f5 ∈ [--..--] + [633].[bits 136 to 159] ∈ UNINITIALIZED + [634].f1 ∈ [--..--] + [634].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [634].f3 ∈ [--..--] + [634].[bits 72 to 95] ∈ UNINITIALIZED + [634].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [634].f5 ∈ [--..--] + [634].[bits 136 to 159] ∈ UNINITIALIZED + [635].f1 ∈ [--..--] + [635].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [635].f3 ∈ [--..--] + [635].[bits 72 to 95] ∈ UNINITIALIZED + [635].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [635].f5 ∈ [--..--] + [635].[bits 136 to 159] ∈ UNINITIALIZED + [636].f1 ∈ [--..--] + [636].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [636].f3 ∈ [--..--] + [636].[bits 72 to 95] ∈ UNINITIALIZED + [636].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [636].f5 ∈ [--..--] + [636].[bits 136 to 159] ∈ UNINITIALIZED + [637].f1 ∈ [--..--] + [637].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [637].f3 ∈ [--..--] + [637].[bits 72 to 95] ∈ UNINITIALIZED + [637].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [637].f5 ∈ [--..--] + [637].[bits 136 to 159] ∈ UNINITIALIZED + [638].f1 ∈ [--..--] + [638].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [638].f3 ∈ [--..--] + [638].[bits 72 to 95] ∈ UNINITIALIZED + [638].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [638].f5 ∈ [--..--] + [638].[bits 136 to 159] ∈ UNINITIALIZED + [639].f1 ∈ [--..--] + [639].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [639].f3 ∈ [--..--] + [639].[bits 72 to 95] ∈ UNINITIALIZED + [639].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [639].f5 ∈ [--..--] + [639].[bits 136 to 159] ∈ UNINITIALIZED + [640].f1 ∈ [--..--] + [640].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [640].f3 ∈ [--..--] + [640].[bits 72 to 95] ∈ UNINITIALIZED + [640].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [640].f5 ∈ [--..--] + [640].[bits 136 to 159] ∈ UNINITIALIZED + [641].f1 ∈ [--..--] + [641].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [641].f3 ∈ [--..--] + [641].[bits 72 to 95] ∈ UNINITIALIZED + [641].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [641].f5 ∈ [--..--] + [641].[bits 136 to 159] ∈ UNINITIALIZED + [642].f1 ∈ [--..--] + [642].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [642].f3 ∈ [--..--] + [642].[bits 72 to 95] ∈ UNINITIALIZED + [642].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [642].f5 ∈ [--..--] + [642].[bits 136 to 159] ∈ UNINITIALIZED + [643].f1 ∈ [--..--] + [643].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [643].f3 ∈ [--..--] + [643].[bits 72 to 95] ∈ UNINITIALIZED + [643].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [643].f5 ∈ [--..--] + [643].[bits 136 to 159] ∈ UNINITIALIZED + [644].f1 ∈ [--..--] + [644].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [644].f3 ∈ [--..--] + [644].[bits 72 to 95] ∈ UNINITIALIZED + [644].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [644].f5 ∈ [--..--] + [644].[bits 136 to 159] ∈ UNINITIALIZED + [645].f1 ∈ [--..--] + [645].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [645].f3 ∈ [--..--] + [645].[bits 72 to 95] ∈ UNINITIALIZED + [645].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [645].f5 ∈ [--..--] + [645].[bits 136 to 159] ∈ UNINITIALIZED + [646].f1 ∈ [--..--] + [646].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [646].f3 ∈ [--..--] + [646].[bits 72 to 95] ∈ UNINITIALIZED + [646].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [646].f5 ∈ [--..--] + [646].[bits 136 to 159] ∈ UNINITIALIZED + [647].f1 ∈ [--..--] + [647].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [647].f3 ∈ [--..--] + [647].[bits 72 to 95] ∈ UNINITIALIZED + [647].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [647].f5 ∈ [--..--] + [647].[bits 136 to 159] ∈ UNINITIALIZED + [648].f1 ∈ [--..--] + [648].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [648].f3 ∈ [--..--] + [648].[bits 72 to 95] ∈ UNINITIALIZED + [648].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [648].f5 ∈ [--..--] + [648].[bits 136 to 159] ∈ UNINITIALIZED + [649].f1 ∈ [--..--] + [649].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [649].f3 ∈ [--..--] + [649].[bits 72 to 95] ∈ UNINITIALIZED + [649].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [649].f5 ∈ [--..--] + [649].[bits 136 to 159] ∈ UNINITIALIZED + [650].f1 ∈ [--..--] + [650].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [650].f3 ∈ [--..--] + [650].[bits 72 to 95] ∈ UNINITIALIZED + [650].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [650].f5 ∈ [--..--] + [650].[bits 136 to 159] ∈ UNINITIALIZED + [651].f1 ∈ [--..--] + [651].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [651].f3 ∈ [--..--] + [651].[bits 72 to 95] ∈ UNINITIALIZED + [651].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [651].f5 ∈ [--..--] + [651].[bits 136 to 159] ∈ UNINITIALIZED + [652].f1 ∈ [--..--] + [652].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [652].f3 ∈ [--..--] + [652].[bits 72 to 95] ∈ UNINITIALIZED + [652].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [652].f5 ∈ [--..--] + [652].[bits 136 to 159] ∈ UNINITIALIZED + [653].f1 ∈ [--..--] + [653].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [653].f3 ∈ [--..--] + [653].[bits 72 to 95] ∈ UNINITIALIZED + [653].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [653].f5 ∈ [--..--] + [653].[bits 136 to 159] ∈ UNINITIALIZED + [654].f1 ∈ [--..--] + [654].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [654].f3 ∈ [--..--] + [654].[bits 72 to 95] ∈ UNINITIALIZED + [654].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [654].f5 ∈ [--..--] + [654].[bits 136 to 159] ∈ UNINITIALIZED + [655].f1 ∈ [--..--] + [655].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [655].f3 ∈ [--..--] + [655].[bits 72 to 95] ∈ UNINITIALIZED + [655].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [655].f5 ∈ [--..--] + [655].[bits 136 to 159] ∈ UNINITIALIZED + [656].f1 ∈ [--..--] + [656].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [656].f3 ∈ [--..--] + [656].[bits 72 to 95] ∈ UNINITIALIZED + [656].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [656].f5 ∈ [--..--] + [656].[bits 136 to 159] ∈ UNINITIALIZED + [657].f1 ∈ [--..--] + [657].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [657].f3 ∈ [--..--] + [657].[bits 72 to 95] ∈ UNINITIALIZED + [657].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [657].f5 ∈ [--..--] + [657].[bits 136 to 159] ∈ UNINITIALIZED + [658].f1 ∈ [--..--] + [658].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [658].f3 ∈ [--..--] + [658].[bits 72 to 95] ∈ UNINITIALIZED + [658].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [658].f5 ∈ [--..--] + [658].[bits 136 to 159] ∈ UNINITIALIZED + [659].f1 ∈ [--..--] + [659].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [659].f3 ∈ [--..--] + [659].[bits 72 to 95] ∈ UNINITIALIZED + [659].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [659].f5 ∈ [--..--] + [659].[bits 136 to 159] ∈ UNINITIALIZED + [660].f1 ∈ [--..--] + [660].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [660].f3 ∈ [--..--] + [660].[bits 72 to 95] ∈ UNINITIALIZED + [660].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [660].f5 ∈ [--..--] + [660].[bits 136 to 159] ∈ UNINITIALIZED + [661].f1 ∈ [--..--] + [661].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [661].f3 ∈ [--..--] + [661].[bits 72 to 95] ∈ UNINITIALIZED + [661].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [661].f5 ∈ [--..--] + [661].[bits 136 to 159] ∈ UNINITIALIZED + [662].f1 ∈ [--..--] + [662].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [662].f3 ∈ [--..--] + [662].[bits 72 to 95] ∈ UNINITIALIZED + [662].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [662].f5 ∈ [--..--] + [662].[bits 136 to 159] ∈ UNINITIALIZED + [663].f1 ∈ [--..--] + [663].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [663].f3 ∈ [--..--] + [663].[bits 72 to 95] ∈ UNINITIALIZED + [663].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [663].f5 ∈ [--..--] + [663].[bits 136 to 159] ∈ UNINITIALIZED + [664].f1 ∈ [--..--] + [664].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [664].f3 ∈ [--..--] + [664].[bits 72 to 95] ∈ UNINITIALIZED + [664].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [664].f5 ∈ [--..--] + [664].[bits 136 to 159] ∈ UNINITIALIZED + [665].f1 ∈ [--..--] + [665].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [665].f3 ∈ [--..--] + [665].[bits 72 to 95] ∈ UNINITIALIZED + [665].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [665].f5 ∈ [--..--] + [665].[bits 136 to 159] ∈ UNINITIALIZED + [666].f1 ∈ [--..--] + [666].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [666].f3 ∈ [--..--] + [666].[bits 72 to 95] ∈ UNINITIALIZED + [666].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [666].f5 ∈ [--..--] + [666].[bits 136 to 159] ∈ UNINITIALIZED + [667].f1 ∈ [--..--] + [667].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [667].f3 ∈ [--..--] + [667].[bits 72 to 95] ∈ UNINITIALIZED + [667].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [667].f5 ∈ [--..--] + [667].[bits 136 to 159] ∈ UNINITIALIZED + [668].f1 ∈ [--..--] + [668].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [668].f3 ∈ [--..--] + [668].[bits 72 to 95] ∈ UNINITIALIZED + [668].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [668].f5 ∈ [--..--] + [668].[bits 136 to 159] ∈ UNINITIALIZED + [669].f1 ∈ [--..--] + [669].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [669].f3 ∈ [--..--] + [669].[bits 72 to 95] ∈ UNINITIALIZED + [669].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [669].f5 ∈ [--..--] + [669].[bits 136 to 159] ∈ UNINITIALIZED + [670].f1 ∈ [--..--] + [670].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [670].f3 ∈ [--..--] + [670].[bits 72 to 95] ∈ UNINITIALIZED + [670].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [670].f5 ∈ [--..--] + [670].[bits 136 to 159] ∈ UNINITIALIZED + [671].f1 ∈ [--..--] + [671].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [671].f3 ∈ [--..--] + [671].[bits 72 to 95] ∈ UNINITIALIZED + [671].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [671].f5 ∈ [--..--] + [671].[bits 136 to 159] ∈ UNINITIALIZED + [672].f1 ∈ [--..--] + [672].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [672].f3 ∈ [--..--] + [672].[bits 72 to 95] ∈ UNINITIALIZED + [672].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [672].f5 ∈ [--..--] + [672].[bits 136 to 159] ∈ UNINITIALIZED + [673].f1 ∈ [--..--] + [673].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [673].f3 ∈ [--..--] + [673].[bits 72 to 95] ∈ UNINITIALIZED + [673].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [673].f5 ∈ [--..--] + [673].[bits 136 to 159] ∈ UNINITIALIZED + [674].f1 ∈ [--..--] + [674].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [674].f3 ∈ [--..--] + [674].[bits 72 to 95] ∈ UNINITIALIZED + [674].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [674].f5 ∈ [--..--] + [674].[bits 136 to 159] ∈ UNINITIALIZED + [675].f1 ∈ [--..--] + [675].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [675].f3 ∈ [--..--] + [675].[bits 72 to 95] ∈ UNINITIALIZED + [675].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [675].f5 ∈ [--..--] + [675].[bits 136 to 159] ∈ UNINITIALIZED + [676].f1 ∈ [--..--] + [676].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [676].f3 ∈ [--..--] + [676].[bits 72 to 95] ∈ UNINITIALIZED + [676].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [676].f5 ∈ [--..--] + [676].[bits 136 to 159] ∈ UNINITIALIZED + [677].f1 ∈ [--..--] + [677].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [677].f3 ∈ [--..--] + [677].[bits 72 to 95] ∈ UNINITIALIZED + [677].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [677].f5 ∈ [--..--] + [677].[bits 136 to 159] ∈ UNINITIALIZED + [678].f1 ∈ [--..--] + [678].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [678].f3 ∈ [--..--] + [678].[bits 72 to 95] ∈ UNINITIALIZED + [678].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [678].f5 ∈ [--..--] + [678].[bits 136 to 159] ∈ UNINITIALIZED + [679].f1 ∈ [--..--] + [679].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [679].f3 ∈ [--..--] + [679].[bits 72 to 95] ∈ UNINITIALIZED + [679].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [679].f5 ∈ [--..--] + [679].[bits 136 to 159] ∈ UNINITIALIZED + [680].f1 ∈ [--..--] + [680].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [680].f3 ∈ [--..--] + [680].[bits 72 to 95] ∈ UNINITIALIZED + [680].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [680].f5 ∈ [--..--] + [680].[bits 136 to 159] ∈ UNINITIALIZED + [681].f1 ∈ [--..--] + [681].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [681].f3 ∈ [--..--] + [681].[bits 72 to 95] ∈ UNINITIALIZED + [681].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [681].f5 ∈ [--..--] + [681].[bits 136 to 159] ∈ UNINITIALIZED + [682].f1 ∈ [--..--] + [682].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [682].f3 ∈ [--..--] + [682].[bits 72 to 95] ∈ UNINITIALIZED + [682].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [682].f5 ∈ [--..--] + [682].[bits 136 to 159] ∈ UNINITIALIZED + [683].f1 ∈ [--..--] + [683].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [683].f3 ∈ [--..--] + [683].[bits 72 to 95] ∈ UNINITIALIZED + [683].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [683].f5 ∈ [--..--] + [683].[bits 136 to 159] ∈ UNINITIALIZED + [684].f1 ∈ [--..--] + [684].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [684].f3 ∈ [--..--] + [684].[bits 72 to 95] ∈ UNINITIALIZED + [684].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [684].f5 ∈ [--..--] + [684].[bits 136 to 159] ∈ UNINITIALIZED + [685].f1 ∈ [--..--] + [685].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [685].f3 ∈ [--..--] + [685].[bits 72 to 95] ∈ UNINITIALIZED + [685].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [685].f5 ∈ [--..--] + [685].[bits 136 to 159] ∈ UNINITIALIZED + [686].f1 ∈ [--..--] + [686].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [686].f3 ∈ [--..--] + [686].[bits 72 to 95] ∈ UNINITIALIZED + [686].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [686].f5 ∈ [--..--] + [686].[bits 136 to 159] ∈ UNINITIALIZED + [687].f1 ∈ [--..--] + [687].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [687].f3 ∈ [--..--] + [687].[bits 72 to 95] ∈ UNINITIALIZED + [687].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [687].f5 ∈ [--..--] + [687].[bits 136 to 159] ∈ UNINITIALIZED + [688].f1 ∈ [--..--] + [688].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [688].f3 ∈ [--..--] + [688].[bits 72 to 95] ∈ UNINITIALIZED + [688].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [688].f5 ∈ [--..--] + [688].[bits 136 to 159] ∈ UNINITIALIZED + [689].f1 ∈ [--..--] + [689].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [689].f3 ∈ [--..--] + [689].[bits 72 to 95] ∈ UNINITIALIZED + [689].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [689].f5 ∈ [--..--] + [689].[bits 136 to 159] ∈ UNINITIALIZED + [690].f1 ∈ [--..--] + [690].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [690].f3 ∈ [--..--] + [690].[bits 72 to 95] ∈ UNINITIALIZED + [690].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [690].f5 ∈ [--..--] + [690].[bits 136 to 159] ∈ UNINITIALIZED + [691].f1 ∈ [--..--] + [691].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [691].f3 ∈ [--..--] + [691].[bits 72 to 95] ∈ UNINITIALIZED + [691].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [691].f5 ∈ [--..--] + [691].[bits 136 to 159] ∈ UNINITIALIZED + [692].f1 ∈ [--..--] + [692].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [692].f3 ∈ [--..--] + [692].[bits 72 to 95] ∈ UNINITIALIZED + [692].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [692].f5 ∈ [--..--] + [692].[bits 136 to 159] ∈ UNINITIALIZED + [693].f1 ∈ [--..--] + [693].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [693].f3 ∈ [--..--] + [693].[bits 72 to 95] ∈ UNINITIALIZED + [693].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [693].f5 ∈ [--..--] + [693].[bits 136 to 159] ∈ UNINITIALIZED + [694].f1 ∈ [--..--] + [694].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [694].f3 ∈ [--..--] + [694].[bits 72 to 95] ∈ UNINITIALIZED + [694].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [694].f5 ∈ [--..--] + [694].[bits 136 to 159] ∈ UNINITIALIZED + [695].f1 ∈ [--..--] + [695].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [695].f3 ∈ [--..--] + [695].[bits 72 to 95] ∈ UNINITIALIZED + [695].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [695].f5 ∈ [--..--] + [695].[bits 136 to 159] ∈ UNINITIALIZED + [696].f1 ∈ [--..--] + [696].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [696].f3 ∈ [--..--] + [696].[bits 72 to 95] ∈ UNINITIALIZED + [696].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [696].f5 ∈ [--..--] + [696].[bits 136 to 159] ∈ UNINITIALIZED + [697].f1 ∈ [--..--] + [697].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [697].f3 ∈ [--..--] + [697].[bits 72 to 95] ∈ UNINITIALIZED + [697].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [697].f5 ∈ [--..--] + [697].[bits 136 to 159] ∈ UNINITIALIZED + [698].f1 ∈ [--..--] + [698].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [698].f3 ∈ [--..--] + [698].[bits 72 to 95] ∈ UNINITIALIZED + [698].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [698].f5 ∈ [--..--] + [698].[bits 136 to 159] ∈ UNINITIALIZED + [699].f1 ∈ [--..--] + [699].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [699].f3 ∈ [--..--] + [699].[bits 72 to 95] ∈ UNINITIALIZED + [699].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [699].f5 ∈ [--..--] + [699].[bits 136 to 159] ∈ UNINITIALIZED + [700].f1 ∈ [--..--] + [700].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [700].f3 ∈ [--..--] + [700].[bits 72 to 95] ∈ UNINITIALIZED + [700].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [700].f5 ∈ [--..--] + [700].[bits 136 to 159] ∈ UNINITIALIZED + [701].f1 ∈ [--..--] + [701].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [701].f3 ∈ [--..--] + [701].[bits 72 to 95] ∈ UNINITIALIZED + [701].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [701].f5 ∈ [--..--] + [701].[bits 136 to 159] ∈ UNINITIALIZED + [702].f1 ∈ [--..--] + [702].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [702].f3 ∈ [--..--] + [702].[bits 72 to 95] ∈ UNINITIALIZED + [702].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [702].f5 ∈ [--..--] + [702].[bits 136 to 159] ∈ UNINITIALIZED + [703].f1 ∈ [--..--] + [703].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [703].f3 ∈ [--..--] + [703].[bits 72 to 95] ∈ UNINITIALIZED + [703].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [703].f5 ∈ [--..--] + [703].[bits 136 to 159] ∈ UNINITIALIZED + [704].f1 ∈ [--..--] + [704].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [704].f3 ∈ [--..--] + [704].[bits 72 to 95] ∈ UNINITIALIZED + [704].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [704].f5 ∈ [--..--] + [704].[bits 136 to 159] ∈ UNINITIALIZED + [705].f1 ∈ [--..--] + [705].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [705].f3 ∈ [--..--] + [705].[bits 72 to 95] ∈ UNINITIALIZED + [705].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [705].f5 ∈ [--..--] + [705].[bits 136 to 159] ∈ UNINITIALIZED + [706].f1 ∈ [--..--] + [706].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [706].f3 ∈ [--..--] + [706].[bits 72 to 95] ∈ UNINITIALIZED + [706].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [706].f5 ∈ [--..--] + [706].[bits 136 to 159] ∈ UNINITIALIZED + [707].f1 ∈ [--..--] + [707].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [707].f3 ∈ [--..--] + [707].[bits 72 to 95] ∈ UNINITIALIZED + [707].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [707].f5 ∈ [--..--] + [707].[bits 136 to 159] ∈ UNINITIALIZED + [708].f1 ∈ [--..--] + [708].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [708].f3 ∈ [--..--] + [708].[bits 72 to 95] ∈ UNINITIALIZED + [708].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [708].f5 ∈ [--..--] + [708].[bits 136 to 159] ∈ UNINITIALIZED + [709].f1 ∈ [--..--] + [709].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [709].f3 ∈ [--..--] + [709].[bits 72 to 95] ∈ UNINITIALIZED + [709].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [709].f5 ∈ [--..--] + [709].[bits 136 to 159] ∈ UNINITIALIZED + [710].f1 ∈ [--..--] + [710].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [710].f3 ∈ [--..--] + [710].[bits 72 to 95] ∈ UNINITIALIZED + [710].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [710].f5 ∈ [--..--] + [710].[bits 136 to 159] ∈ UNINITIALIZED + [711].f1 ∈ [--..--] + [711].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [711].f3 ∈ [--..--] + [711].[bits 72 to 95] ∈ UNINITIALIZED + [711].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [711].f5 ∈ [--..--] + [711].[bits 136 to 159] ∈ UNINITIALIZED + [712].f1 ∈ [--..--] + [712].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [712].f3 ∈ [--..--] + [712].[bits 72 to 95] ∈ UNINITIALIZED + [712].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [712].f5 ∈ [--..--] + [712].[bits 136 to 159] ∈ UNINITIALIZED + [713].f1 ∈ [--..--] + [713].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [713].f3 ∈ [--..--] + [713].[bits 72 to 95] ∈ UNINITIALIZED + [713].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [713].f5 ∈ [--..--] + [713].[bits 136 to 159] ∈ UNINITIALIZED + [714].f1 ∈ [--..--] + [714].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [714].f3 ∈ [--..--] + [714].[bits 72 to 95] ∈ UNINITIALIZED + [714].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [714].f5 ∈ [--..--] + [714].[bits 136 to 159] ∈ UNINITIALIZED + [715].f1 ∈ [--..--] + [715].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [715].f3 ∈ [--..--] + [715].[bits 72 to 95] ∈ UNINITIALIZED + [715].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [715].f5 ∈ [--..--] + [715].[bits 136 to 159] ∈ UNINITIALIZED + [716].f1 ∈ [--..--] + [716].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [716].f3 ∈ [--..--] + [716].[bits 72 to 95] ∈ UNINITIALIZED + [716].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [716].f5 ∈ [--..--] + [716].[bits 136 to 159] ∈ UNINITIALIZED + [717].f1 ∈ [--..--] + [717].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [717].f3 ∈ [--..--] + [717].[bits 72 to 95] ∈ UNINITIALIZED + [717].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [717].f5 ∈ [--..--] + [717].[bits 136 to 159] ∈ UNINITIALIZED + [718].f1 ∈ [--..--] + [718].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [718].f3 ∈ [--..--] + [718].[bits 72 to 95] ∈ UNINITIALIZED + [718].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [718].f5 ∈ [--..--] + [718].[bits 136 to 159] ∈ UNINITIALIZED + [719].f1 ∈ [--..--] + [719].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [719].f3 ∈ [--..--] + [719].[bits 72 to 95] ∈ UNINITIALIZED + [719].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [719].f5 ∈ [--..--] + [719].[bits 136 to 159] ∈ UNINITIALIZED + [720].f1 ∈ [--..--] + [720].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [720].f3 ∈ [--..--] + [720].[bits 72 to 95] ∈ UNINITIALIZED + [720].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [720].f5 ∈ [--..--] + [720].[bits 136 to 159] ∈ UNINITIALIZED + [721].f1 ∈ [--..--] + [721].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [721].f3 ∈ [--..--] + [721].[bits 72 to 95] ∈ UNINITIALIZED + [721].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [721].f5 ∈ [--..--] + [721].[bits 136 to 159] ∈ UNINITIALIZED + [722].f1 ∈ [--..--] + [722].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [722].f3 ∈ [--..--] + [722].[bits 72 to 95] ∈ UNINITIALIZED + [722].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [722].f5 ∈ [--..--] + [722].[bits 136 to 159] ∈ UNINITIALIZED + [723].f1 ∈ [--..--] + [723].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [723].f3 ∈ [--..--] + [723].[bits 72 to 95] ∈ UNINITIALIZED + [723].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [723].f5 ∈ [--..--] + [723].[bits 136 to 159] ∈ UNINITIALIZED + [724].f1 ∈ [--..--] + [724].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [724].f3 ∈ [--..--] + [724].[bits 72 to 95] ∈ UNINITIALIZED + [724].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [724].f5 ∈ [--..--] + [724].[bits 136 to 159] ∈ UNINITIALIZED + [725].f1 ∈ [--..--] + [725].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [725].f3 ∈ [--..--] + [725].[bits 72 to 95] ∈ UNINITIALIZED + [725].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [725].f5 ∈ [--..--] + [725].[bits 136 to 159] ∈ UNINITIALIZED + [726].f1 ∈ [--..--] + [726].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [726].f3 ∈ [--..--] + [726].[bits 72 to 95] ∈ UNINITIALIZED + [726].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [726].f5 ∈ [--..--] + [726].[bits 136 to 159] ∈ UNINITIALIZED + [727].f1 ∈ [--..--] + [727].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [727].f3 ∈ [--..--] + [727].[bits 72 to 95] ∈ UNINITIALIZED + [727].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [727].f5 ∈ [--..--] + [727].[bits 136 to 159] ∈ UNINITIALIZED + [728].f1 ∈ [--..--] + [728].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [728].f3 ∈ [--..--] + [728].[bits 72 to 95] ∈ UNINITIALIZED + [728].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [728].f5 ∈ [--..--] + [728].[bits 136 to 159] ∈ UNINITIALIZED + [729].f1 ∈ [--..--] + [729].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [729].f3 ∈ [--..--] + [729].[bits 72 to 95] ∈ UNINITIALIZED + [729].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [729].f5 ∈ [--..--] + [729].[bits 136 to 159] ∈ UNINITIALIZED + [730].f1 ∈ [--..--] + [730].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [730].f3 ∈ [--..--] + [730].[bits 72 to 95] ∈ UNINITIALIZED + [730].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [730].f5 ∈ [--..--] + [730].[bits 136 to 159] ∈ UNINITIALIZED + [731].f1 ∈ [--..--] + [731].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [731].f3 ∈ [--..--] + [731].[bits 72 to 95] ∈ UNINITIALIZED + [731].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [731].f5 ∈ [--..--] + [731].[bits 136 to 159] ∈ UNINITIALIZED + [732].f1 ∈ [--..--] + [732].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [732].f3 ∈ [--..--] + [732].[bits 72 to 95] ∈ UNINITIALIZED + [732].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [732].f5 ∈ [--..--] + [732].[bits 136 to 159] ∈ UNINITIALIZED + [733].f1 ∈ [--..--] + [733].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [733].f3 ∈ [--..--] + [733].[bits 72 to 95] ∈ UNINITIALIZED + [733].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [733].f5 ∈ [--..--] + [733].[bits 136 to 159] ∈ UNINITIALIZED + [734].f1 ∈ [--..--] + [734].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [734].f3 ∈ [--..--] + [734].[bits 72 to 95] ∈ UNINITIALIZED + [734].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [734].f5 ∈ [--..--] + [734].[bits 136 to 159] ∈ UNINITIALIZED + [735].f1 ∈ [--..--] + [735].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [735].f3 ∈ [--..--] + [735].[bits 72 to 95] ∈ UNINITIALIZED + [735].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [735].f5 ∈ [--..--] + [735].[bits 136 to 159] ∈ UNINITIALIZED + [736].f1 ∈ [--..--] + [736].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [736].f3 ∈ [--..--] + [736].[bits 72 to 95] ∈ UNINITIALIZED + [736].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [736].f5 ∈ [--..--] + [736].[bits 136 to 159] ∈ UNINITIALIZED + [737].f1 ∈ [--..--] + [737].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [737].f3 ∈ [--..--] + [737].[bits 72 to 95] ∈ UNINITIALIZED + [737].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [737].f5 ∈ [--..--] + [737].[bits 136 to 159] ∈ UNINITIALIZED + [738].f1 ∈ [--..--] + [738].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [738].f3 ∈ [--..--] + [738].[bits 72 to 95] ∈ UNINITIALIZED + [738].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [738].f5 ∈ [--..--] + [738].[bits 136 to 159] ∈ UNINITIALIZED + [739].f1 ∈ [--..--] + [739].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [739].f3 ∈ [--..--] + [739].[bits 72 to 95] ∈ UNINITIALIZED + [739].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [739].f5 ∈ [--..--] + [739].[bits 136 to 159] ∈ UNINITIALIZED + [740].f1 ∈ [--..--] + [740].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [740].f3 ∈ [--..--] + [740].[bits 72 to 95] ∈ UNINITIALIZED + [740].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [740].f5 ∈ [--..--] + [740].[bits 136 to 159] ∈ UNINITIALIZED + [741].f1 ∈ [--..--] + [741].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [741].f3 ∈ [--..--] + [741].[bits 72 to 95] ∈ UNINITIALIZED + [741].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [741].f5 ∈ [--..--] + [741].[bits 136 to 159] ∈ UNINITIALIZED + [742].f1 ∈ [--..--] + [742].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [742].f3 ∈ [--..--] + [742].[bits 72 to 95] ∈ UNINITIALIZED + [742].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [742].f5 ∈ [--..--] + [742].[bits 136 to 159] ∈ UNINITIALIZED + [743].f1 ∈ [--..--] + [743].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [743].f3 ∈ [--..--] + [743].[bits 72 to 95] ∈ UNINITIALIZED + [743].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [743].f5 ∈ [--..--] + [743].[bits 136 to 159] ∈ UNINITIALIZED + [744].f1 ∈ [--..--] + [744].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [744].f3 ∈ [--..--] + [744].[bits 72 to 95] ∈ UNINITIALIZED + [744].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [744].f5 ∈ [--..--] + [744].[bits 136 to 159] ∈ UNINITIALIZED + [745].f1 ∈ [--..--] + [745].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [745].f3 ∈ [--..--] + [745].[bits 72 to 95] ∈ UNINITIALIZED + [745].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [745].f5 ∈ [--..--] + [745].[bits 136 to 159] ∈ UNINITIALIZED + [746].f1 ∈ [--..--] + [746].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [746].f3 ∈ [--..--] + [746].[bits 72 to 95] ∈ UNINITIALIZED + [746].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [746].f5 ∈ [--..--] + [746].[bits 136 to 159] ∈ UNINITIALIZED + [747].f1 ∈ [--..--] + [747].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [747].f3 ∈ [--..--] + [747].[bits 72 to 95] ∈ UNINITIALIZED + [747].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [747].f5 ∈ [--..--] + [747].[bits 136 to 159] ∈ UNINITIALIZED + [748].f1 ∈ [--..--] + [748].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [748].f3 ∈ [--..--] + [748].[bits 72 to 95] ∈ UNINITIALIZED + [748].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [748].f5 ∈ [--..--] + [748].[bits 136 to 159] ∈ UNINITIALIZED + [749].f1 ∈ [--..--] + [749].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [749].f3 ∈ [--..--] + [749].[bits 72 to 95] ∈ UNINITIALIZED + [749].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [749].f5 ∈ [--..--] + [749].[bits 136 to 159] ∈ UNINITIALIZED + [750].f1 ∈ [--..--] + [750].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [750].f3 ∈ [--..--] + [750].[bits 72 to 95] ∈ UNINITIALIZED + [750].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [750].f5 ∈ [--..--] + [750].[bits 136 to 159] ∈ UNINITIALIZED + [751].f1 ∈ [--..--] + [751].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [751].f3 ∈ [--..--] + [751].[bits 72 to 95] ∈ UNINITIALIZED + [751].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [751].f5 ∈ [--..--] + [751].[bits 136 to 159] ∈ UNINITIALIZED + [752].f1 ∈ [--..--] + [752].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [752].f3 ∈ [--..--] + [752].[bits 72 to 95] ∈ UNINITIALIZED + [752].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [752].f5 ∈ [--..--] + [752].[bits 136 to 159] ∈ UNINITIALIZED + [753].f1 ∈ [--..--] + [753].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [753].f3 ∈ [--..--] + [753].[bits 72 to 95] ∈ UNINITIALIZED + [753].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [753].f5 ∈ [--..--] + [753].[bits 136 to 159] ∈ UNINITIALIZED + [754].f1 ∈ [--..--] + [754].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [754].f3 ∈ [--..--] + [754].[bits 72 to 95] ∈ UNINITIALIZED + [754].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [754].f5 ∈ [--..--] + [754].[bits 136 to 159] ∈ UNINITIALIZED + [755].f1 ∈ [--..--] + [755].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [755].f3 ∈ [--..--] + [755].[bits 72 to 95] ∈ UNINITIALIZED + [755].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [755].f5 ∈ [--..--] + [755].[bits 136 to 159] ∈ UNINITIALIZED + [756].f1 ∈ [--..--] + [756].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [756].f3 ∈ [--..--] + [756].[bits 72 to 95] ∈ UNINITIALIZED + [756].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [756].f5 ∈ [--..--] + [756].[bits 136 to 159] ∈ UNINITIALIZED + [757].f1 ∈ [--..--] + [757].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [757].f3 ∈ [--..--] + [757].[bits 72 to 95] ∈ UNINITIALIZED + [757].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [757].f5 ∈ [--..--] + [757].[bits 136 to 159] ∈ UNINITIALIZED + [758].f1 ∈ [--..--] + [758].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [758].f3 ∈ [--..--] + [758].[bits 72 to 95] ∈ UNINITIALIZED + [758].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [758].f5 ∈ [--..--] + [758].[bits 136 to 159] ∈ UNINITIALIZED + [759].f1 ∈ [--..--] + [759].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [759].f3 ∈ [--..--] + [759].[bits 72 to 95] ∈ UNINITIALIZED + [759].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [759].f5 ∈ [--..--] + [759].[bits 136 to 159] ∈ UNINITIALIZED + [760].f1 ∈ [--..--] + [760].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [760].f3 ∈ [--..--] + [760].[bits 72 to 95] ∈ UNINITIALIZED + [760].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [760].f5 ∈ [--..--] + [760].[bits 136 to 159] ∈ UNINITIALIZED + [761].f1 ∈ [--..--] + [761].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [761].f3 ∈ [--..--] + [761].[bits 72 to 95] ∈ UNINITIALIZED + [761].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [761].f5 ∈ [--..--] + [761].[bits 136 to 159] ∈ UNINITIALIZED + [762].f1 ∈ [--..--] + [762].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [762].f3 ∈ [--..--] + [762].[bits 72 to 95] ∈ UNINITIALIZED + [762].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [762].f5 ∈ [--..--] + [762].[bits 136 to 159] ∈ UNINITIALIZED + [763].f1 ∈ [--..--] + [763].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [763].f3 ∈ [--..--] + [763].[bits 72 to 95] ∈ UNINITIALIZED + [763].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [763].f5 ∈ [--..--] + [763].[bits 136 to 159] ∈ UNINITIALIZED + [764].f1 ∈ [--..--] + [764].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [764].f3 ∈ [--..--] + [764].[bits 72 to 95] ∈ UNINITIALIZED + [764].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [764].f5 ∈ [--..--] + [764].[bits 136 to 159] ∈ UNINITIALIZED + [765].f1 ∈ [--..--] + [765].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [765].f3 ∈ [--..--] + [765].[bits 72 to 95] ∈ UNINITIALIZED + [765].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [765].f5 ∈ [--..--] + [765].[bits 136 to 159] ∈ UNINITIALIZED + [766].f1 ∈ [--..--] + [766].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [766].f3 ∈ [--..--] + [766].[bits 72 to 95] ∈ UNINITIALIZED + [766].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [766].f5 ∈ [--..--] + [766].[bits 136 to 159] ∈ UNINITIALIZED + [767].f1 ∈ [--..--] + [767].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [767].f3 ∈ [--..--] + [767].[bits 72 to 95] ∈ UNINITIALIZED + [767].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [767].f5 ∈ [--..--] + [767].[bits 136 to 159] ∈ UNINITIALIZED + [768].f1 ∈ [--..--] + [768].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [768].f3 ∈ [--..--] + [768].[bits 72 to 95] ∈ UNINITIALIZED + [768].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [768].f5 ∈ [--..--] + [768].[bits 136 to 159] ∈ UNINITIALIZED + [769].f1 ∈ [--..--] + [769].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [769].f3 ∈ [--..--] + [769].[bits 72 to 95] ∈ UNINITIALIZED + [769].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [769].f5 ∈ [--..--] + [769].[bits 136 to 159] ∈ UNINITIALIZED + [770].f1 ∈ [--..--] + [770].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [770].f3 ∈ [--..--] + [770].[bits 72 to 95] ∈ UNINITIALIZED + [770].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [770].f5 ∈ [--..--] + [770].[bits 136 to 159] ∈ UNINITIALIZED + [771].f1 ∈ [--..--] + [771].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [771].f3 ∈ [--..--] + [771].[bits 72 to 95] ∈ UNINITIALIZED + [771].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [771].f5 ∈ [--..--] + [771].[bits 136 to 159] ∈ UNINITIALIZED + [772].f1 ∈ [--..--] + [772].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [772].f3 ∈ [--..--] + [772].[bits 72 to 95] ∈ UNINITIALIZED + [772].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [772].f5 ∈ [--..--] + [772].[bits 136 to 159] ∈ UNINITIALIZED + [773].f1 ∈ [--..--] + [773].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [773].f3 ∈ [--..--] + [773].[bits 72 to 95] ∈ UNINITIALIZED + [773].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [773].f5 ∈ [--..--] + [773].[bits 136 to 159] ∈ UNINITIALIZED + [774].f1 ∈ [--..--] + [774].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [774].f3 ∈ [--..--] + [774].[bits 72 to 95] ∈ UNINITIALIZED + [774].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [774].f5 ∈ [--..--] + [774].[bits 136 to 159] ∈ UNINITIALIZED + [775].f1 ∈ [--..--] + [775].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [775].f3 ∈ [--..--] + [775].[bits 72 to 95] ∈ UNINITIALIZED + [775].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [775].f5 ∈ [--..--] + [775].[bits 136 to 159] ∈ UNINITIALIZED + [776].f1 ∈ [--..--] + [776].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [776].f3 ∈ [--..--] + [776].[bits 72 to 95] ∈ UNINITIALIZED + [776].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [776].f5 ∈ [--..--] + [776].[bits 136 to 159] ∈ UNINITIALIZED + [777].f1 ∈ [--..--] + [777].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [777].f3 ∈ [--..--] + [777].[bits 72 to 95] ∈ UNINITIALIZED + [777].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [777].f5 ∈ [--..--] + [777].[bits 136 to 159] ∈ UNINITIALIZED + [778].f1 ∈ [--..--] + [778].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [778].f3 ∈ [--..--] + [778].[bits 72 to 95] ∈ UNINITIALIZED + [778].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [778].f5 ∈ [--..--] + [778].[bits 136 to 159] ∈ UNINITIALIZED + [779].f1 ∈ [--..--] + [779].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [779].f3 ∈ [--..--] + [779].[bits 72 to 95] ∈ UNINITIALIZED + [779].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [779].f5 ∈ [--..--] + [779].[bits 136 to 159] ∈ UNINITIALIZED + [780].f1 ∈ [--..--] + [780].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [780].f3 ∈ [--..--] + [780].[bits 72 to 95] ∈ UNINITIALIZED + [780].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [780].f5 ∈ [--..--] + [780].[bits 136 to 159] ∈ UNINITIALIZED + [781].f1 ∈ [--..--] + [781].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [781].f3 ∈ [--..--] + [781].[bits 72 to 95] ∈ UNINITIALIZED + [781].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [781].f5 ∈ [--..--] + [781].[bits 136 to 159] ∈ UNINITIALIZED + [782].f1 ∈ [--..--] + [782].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [782].f3 ∈ [--..--] + [782].[bits 72 to 95] ∈ UNINITIALIZED + [782].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [782].f5 ∈ [--..--] + [782].[bits 136 to 159] ∈ UNINITIALIZED + [783].f1 ∈ [--..--] + [783].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [783].f3 ∈ [--..--] + [783].[bits 72 to 95] ∈ UNINITIALIZED + [783].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [783].f5 ∈ [--..--] + [783].[bits 136 to 159] ∈ UNINITIALIZED + [784].f1 ∈ [--..--] + [784].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [784].f3 ∈ [--..--] + [784].[bits 72 to 95] ∈ UNINITIALIZED + [784].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [784].f5 ∈ [--..--] + [784].[bits 136 to 159] ∈ UNINITIALIZED + [785].f1 ∈ [--..--] + [785].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [785].f3 ∈ [--..--] + [785].[bits 72 to 95] ∈ UNINITIALIZED + [785].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [785].f5 ∈ [--..--] + [785].[bits 136 to 159] ∈ UNINITIALIZED + [786].f1 ∈ [--..--] + [786].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [786].f3 ∈ [--..--] + [786].[bits 72 to 95] ∈ UNINITIALIZED + [786].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [786].f5 ∈ [--..--] + [786].[bits 136 to 159] ∈ UNINITIALIZED + [787].f1 ∈ [--..--] + [787].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [787].f3 ∈ [--..--] + [787].[bits 72 to 95] ∈ UNINITIALIZED + [787].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [787].f5 ∈ [--..--] + [787].[bits 136 to 159] ∈ UNINITIALIZED + [788].f1 ∈ [--..--] + [788].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [788].f3 ∈ [--..--] + [788].[bits 72 to 95] ∈ UNINITIALIZED + [788].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [788].f5 ∈ [--..--] + [788].[bits 136 to 159] ∈ UNINITIALIZED + [789].f1 ∈ [--..--] + [789].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [789].f3 ∈ [--..--] + [789].[bits 72 to 95] ∈ UNINITIALIZED + [789].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [789].f5 ∈ [--..--] + [789].[bits 136 to 159] ∈ UNINITIALIZED + [790].f1 ∈ [--..--] + [790].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [790].f3 ∈ [--..--] + [790].[bits 72 to 95] ∈ UNINITIALIZED + [790].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [790].f5 ∈ [--..--] + [790].[bits 136 to 159] ∈ UNINITIALIZED + [791].f1 ∈ [--..--] + [791].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [791].f3 ∈ [--..--] + [791].[bits 72 to 95] ∈ UNINITIALIZED + [791].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [791].f5 ∈ [--..--] + [791].[bits 136 to 159] ∈ UNINITIALIZED + [792].f1 ∈ [--..--] + [792].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [792].f3 ∈ [--..--] + [792].[bits 72 to 95] ∈ UNINITIALIZED + [792].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [792].f5 ∈ [--..--] + [792].[bits 136 to 159] ∈ UNINITIALIZED + [793].f1 ∈ [--..--] + [793].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [793].f3 ∈ [--..--] + [793].[bits 72 to 95] ∈ UNINITIALIZED + [793].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [793].f5 ∈ [--..--] + [793].[bits 136 to 159] ∈ UNINITIALIZED + [794].f1 ∈ [--..--] + [794].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [794].f3 ∈ [--..--] + [794].[bits 72 to 95] ∈ UNINITIALIZED + [794].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [794].f5 ∈ [--..--] + [794].[bits 136 to 159] ∈ UNINITIALIZED + [795].f1 ∈ [--..--] + [795].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [795].f3 ∈ [--..--] + [795].[bits 72 to 95] ∈ UNINITIALIZED + [795].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [795].f5 ∈ [--..--] + [795].[bits 136 to 159] ∈ UNINITIALIZED + [796].f1 ∈ [--..--] + [796].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [796].f3 ∈ [--..--] + [796].[bits 72 to 95] ∈ UNINITIALIZED + [796].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [796].f5 ∈ [--..--] + [796].[bits 136 to 159] ∈ UNINITIALIZED + [797].f1 ∈ [--..--] + [797].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [797].f3 ∈ [--..--] + [797].[bits 72 to 95] ∈ UNINITIALIZED + [797].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [797].f5 ∈ [--..--] + [797].[bits 136 to 159] ∈ UNINITIALIZED + [798].f1 ∈ [--..--] + [798].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [798].f3 ∈ [--..--] + [798].[bits 72 to 95] ∈ UNINITIALIZED + [798].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [798].f5 ∈ [--..--] + [798].[bits 136 to 159] ∈ UNINITIALIZED + [799].f1 ∈ [--..--] + [799].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [799].f3 ∈ [--..--] + [799].[bits 72 to 95] ∈ UNINITIALIZED + [799].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [799].f5 ∈ [--..--] + [799].[bits 136 to 159] ∈ UNINITIALIZED + [800].f1 ∈ [--..--] + [800].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [800].f3 ∈ [--..--] + [800].[bits 72 to 95] ∈ UNINITIALIZED + [800].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [800].f5 ∈ [--..--] + [800].[bits 136 to 159] ∈ UNINITIALIZED + [801].f1 ∈ [--..--] + [801].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [801].f3 ∈ [--..--] + [801].[bits 72 to 95] ∈ UNINITIALIZED + [801].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [801].f5 ∈ [--..--] + [801].[bits 136 to 159] ∈ UNINITIALIZED + [802].f1 ∈ [--..--] + [802].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [802].f3 ∈ [--..--] + [802].[bits 72 to 95] ∈ UNINITIALIZED + [802].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [802].f5 ∈ [--..--] + [802].[bits 136 to 159] ∈ UNINITIALIZED + [803].f1 ∈ [--..--] + [803].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [803].f3 ∈ [--..--] + [803].[bits 72 to 95] ∈ UNINITIALIZED + [803].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [803].f5 ∈ [--..--] + [803].[bits 136 to 159] ∈ UNINITIALIZED + [804].f1 ∈ [--..--] + [804].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [804].f3 ∈ [--..--] + [804].[bits 72 to 95] ∈ UNINITIALIZED + [804].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [804].f5 ∈ [--..--] + [804].[bits 136 to 159] ∈ UNINITIALIZED + [805].f1 ∈ [--..--] + [805].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [805].f3 ∈ [--..--] + [805].[bits 72 to 95] ∈ UNINITIALIZED + [805].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [805].f5 ∈ [--..--] + [805].[bits 136 to 159] ∈ UNINITIALIZED + [806].f1 ∈ [--..--] + [806].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [806].f3 ∈ [--..--] + [806].[bits 72 to 95] ∈ UNINITIALIZED + [806].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [806].f5 ∈ [--..--] + [806].[bits 136 to 159] ∈ UNINITIALIZED + [807].f1 ∈ [--..--] + [807].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [807].f3 ∈ [--..--] + [807].[bits 72 to 95] ∈ UNINITIALIZED + [807].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [807].f5 ∈ [--..--] + [807].[bits 136 to 159] ∈ UNINITIALIZED + [808].f1 ∈ [--..--] + [808].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [808].f3 ∈ [--..--] + [808].[bits 72 to 95] ∈ UNINITIALIZED + [808].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [808].f5 ∈ [--..--] + [808].[bits 136 to 159] ∈ UNINITIALIZED + [809].f1 ∈ [--..--] + [809].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [809].f3 ∈ [--..--] + [809].[bits 72 to 95] ∈ UNINITIALIZED + [809].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [809].f5 ∈ [--..--] + [809].[bits 136 to 159] ∈ UNINITIALIZED + [810].f1 ∈ [--..--] + [810].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [810].f3 ∈ [--..--] + [810].[bits 72 to 95] ∈ UNINITIALIZED + [810].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [810].f5 ∈ [--..--] + [810].[bits 136 to 159] ∈ UNINITIALIZED + [811].f1 ∈ [--..--] + [811].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [811].f3 ∈ [--..--] + [811].[bits 72 to 95] ∈ UNINITIALIZED + [811].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [811].f5 ∈ [--..--] + [811].[bits 136 to 159] ∈ UNINITIALIZED + [812].f1 ∈ [--..--] + [812].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [812].f3 ∈ [--..--] + [812].[bits 72 to 95] ∈ UNINITIALIZED + [812].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [812].f5 ∈ [--..--] + [812].[bits 136 to 159] ∈ UNINITIALIZED + [813].f1 ∈ [--..--] + [813].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [813].f3 ∈ [--..--] + [813].[bits 72 to 95] ∈ UNINITIALIZED + [813].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [813].f5 ∈ [--..--] + [813].[bits 136 to 159] ∈ UNINITIALIZED + [814].f1 ∈ [--..--] + [814].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [814].f3 ∈ [--..--] + [814].[bits 72 to 95] ∈ UNINITIALIZED + [814].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [814].f5 ∈ [--..--] + [814].[bits 136 to 159] ∈ UNINITIALIZED + [815].f1 ∈ [--..--] + [815].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [815].f3 ∈ [--..--] + [815].[bits 72 to 95] ∈ UNINITIALIZED + [815].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [815].f5 ∈ [--..--] + [815].[bits 136 to 159] ∈ UNINITIALIZED + [816].f1 ∈ [--..--] + [816].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [816].f3 ∈ [--..--] + [816].[bits 72 to 95] ∈ UNINITIALIZED + [816].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [816].f5 ∈ [--..--] + [816].[bits 136 to 159] ∈ UNINITIALIZED + [817].f1 ∈ [--..--] + [817].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [817].f3 ∈ [--..--] + [817].[bits 72 to 95] ∈ UNINITIALIZED + [817].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [817].f5 ∈ [--..--] + [817].[bits 136 to 159] ∈ UNINITIALIZED + [818].f1 ∈ [--..--] + [818].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [818].f3 ∈ [--..--] + [818].[bits 72 to 95] ∈ UNINITIALIZED + [818].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [818].f5 ∈ [--..--] + [818].[bits 136 to 159] ∈ UNINITIALIZED + [819].f1 ∈ [--..--] + [819].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [819].f3 ∈ [--..--] + [819].[bits 72 to 95] ∈ UNINITIALIZED + [819].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [819].f5 ∈ [--..--] + [819].[bits 136 to 159] ∈ UNINITIALIZED + [820].f1 ∈ [--..--] + [820].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [820].f3 ∈ [--..--] + [820].[bits 72 to 95] ∈ UNINITIALIZED + [820].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [820].f5 ∈ [--..--] + [820].[bits 136 to 159] ∈ UNINITIALIZED + [821].f1 ∈ [--..--] + [821].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [821].f3 ∈ [--..--] + [821].[bits 72 to 95] ∈ UNINITIALIZED + [821].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [821].f5 ∈ [--..--] + [821].[bits 136 to 159] ∈ UNINITIALIZED + [822].f1 ∈ [--..--] + [822].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [822].f3 ∈ [--..--] + [822].[bits 72 to 95] ∈ UNINITIALIZED + [822].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [822].f5 ∈ [--..--] + [822].[bits 136 to 159] ∈ UNINITIALIZED + [823].f1 ∈ [--..--] + [823].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [823].f3 ∈ [--..--] + [823].[bits 72 to 95] ∈ UNINITIALIZED + [823].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [823].f5 ∈ [--..--] + [823].[bits 136 to 159] ∈ UNINITIALIZED + [824].f1 ∈ [--..--] + [824].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [824].f3 ∈ [--..--] + [824].[bits 72 to 95] ∈ UNINITIALIZED + [824].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [824].f5 ∈ [--..--] + [824].[bits 136 to 159] ∈ UNINITIALIZED + [825].f1 ∈ [--..--] + [825].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [825].f3 ∈ [--..--] + [825].[bits 72 to 95] ∈ UNINITIALIZED + [825].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [825].f5 ∈ [--..--] + [825].[bits 136 to 159] ∈ UNINITIALIZED + [826].f1 ∈ [--..--] + [826].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [826].f3 ∈ [--..--] + [826].[bits 72 to 95] ∈ UNINITIALIZED + [826].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [826].f5 ∈ [--..--] + [826].[bits 136 to 159] ∈ UNINITIALIZED + [827].f1 ∈ [--..--] + [827].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [827].f3 ∈ [--..--] + [827].[bits 72 to 95] ∈ UNINITIALIZED + [827].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [827].f5 ∈ [--..--] + [827].[bits 136 to 159] ∈ UNINITIALIZED + [828].f1 ∈ [--..--] + [828].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [828].f3 ∈ [--..--] + [828].[bits 72 to 95] ∈ UNINITIALIZED + [828].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [828].f5 ∈ [--..--] + [828].[bits 136 to 159] ∈ UNINITIALIZED + [829].f1 ∈ [--..--] + [829].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [829].f3 ∈ [--..--] + [829].[bits 72 to 95] ∈ UNINITIALIZED + [829].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [829].f5 ∈ [--..--] + [829].[bits 136 to 159] ∈ UNINITIALIZED + [830].f1 ∈ [--..--] + [830].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [830].f3 ∈ [--..--] + [830].[bits 72 to 95] ∈ UNINITIALIZED + [830].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [830].f5 ∈ [--..--] + [830].[bits 136 to 159] ∈ UNINITIALIZED + [831].f1 ∈ [--..--] + [831].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [831].f3 ∈ [--..--] + [831].[bits 72 to 95] ∈ UNINITIALIZED + [831].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [831].f5 ∈ [--..--] + [831].[bits 136 to 159] ∈ UNINITIALIZED + [832].f1 ∈ [--..--] + [832].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [832].f3 ∈ [--..--] + [832].[bits 72 to 95] ∈ UNINITIALIZED + [832].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [832].f5 ∈ [--..--] + [832].[bits 136 to 159] ∈ UNINITIALIZED + [833].f1 ∈ [--..--] + [833].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [833].f3 ∈ [--..--] + [833].[bits 72 to 95] ∈ UNINITIALIZED + [833].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [833].f5 ∈ [--..--] + [833].[bits 136 to 159] ∈ UNINITIALIZED + [834].f1 ∈ [--..--] + [834].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [834].f3 ∈ [--..--] + [834].[bits 72 to 95] ∈ UNINITIALIZED + [834].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [834].f5 ∈ [--..--] + [834].[bits 136 to 159] ∈ UNINITIALIZED + [835].f1 ∈ [--..--] + [835].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [835].f3 ∈ [--..--] + [835].[bits 72 to 95] ∈ UNINITIALIZED + [835].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [835].f5 ∈ [--..--] + [835].[bits 136 to 159] ∈ UNINITIALIZED + [836].f1 ∈ [--..--] + [836].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [836].f3 ∈ [--..--] + [836].[bits 72 to 95] ∈ UNINITIALIZED + [836].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [836].f5 ∈ [--..--] + [836].[bits 136 to 159] ∈ UNINITIALIZED + [837].f1 ∈ [--..--] + [837].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [837].f3 ∈ [--..--] + [837].[bits 72 to 95] ∈ UNINITIALIZED + [837].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [837].f5 ∈ [--..--] + [837].[bits 136 to 159] ∈ UNINITIALIZED + [838].f1 ∈ [--..--] + [838].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [838].f3 ∈ [--..--] + [838].[bits 72 to 95] ∈ UNINITIALIZED + [838].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [838].f5 ∈ [--..--] + [838].[bits 136 to 159] ∈ UNINITIALIZED + [839].f1 ∈ [--..--] + [839].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [839].f3 ∈ [--..--] + [839].[bits 72 to 95] ∈ UNINITIALIZED + [839].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [839].f5 ∈ [--..--] + [839].[bits 136 to 159] ∈ UNINITIALIZED + [840].f1 ∈ [--..--] + [840].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [840].f3 ∈ [--..--] + [840].[bits 72 to 95] ∈ UNINITIALIZED + [840].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [840].f5 ∈ [--..--] + [840].[bits 136 to 159] ∈ UNINITIALIZED + [841].f1 ∈ [--..--] + [841].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [841].f3 ∈ [--..--] + [841].[bits 72 to 95] ∈ UNINITIALIZED + [841].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [841].f5 ∈ [--..--] + [841].[bits 136 to 159] ∈ UNINITIALIZED + [842].f1 ∈ [--..--] + [842].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [842].f3 ∈ [--..--] + [842].[bits 72 to 95] ∈ UNINITIALIZED + [842].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [842].f5 ∈ [--..--] + [842].[bits 136 to 159] ∈ UNINITIALIZED + [843].f1 ∈ [--..--] + [843].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [843].f3 ∈ [--..--] + [843].[bits 72 to 95] ∈ UNINITIALIZED + [843].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [843].f5 ∈ [--..--] + [843].[bits 136 to 159] ∈ UNINITIALIZED + [844].f1 ∈ [--..--] + [844].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [844].f3 ∈ [--..--] + [844].[bits 72 to 95] ∈ UNINITIALIZED + [844].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [844].f5 ∈ [--..--] + [844].[bits 136 to 159] ∈ UNINITIALIZED + [845].f1 ∈ [--..--] + [845].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [845].f3 ∈ [--..--] + [845].[bits 72 to 95] ∈ UNINITIALIZED + [845].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [845].f5 ∈ [--..--] + [845].[bits 136 to 159] ∈ UNINITIALIZED + [846].f1 ∈ [--..--] + [846].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [846].f3 ∈ [--..--] + [846].[bits 72 to 95] ∈ UNINITIALIZED + [846].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [846].f5 ∈ [--..--] + [846].[bits 136 to 159] ∈ UNINITIALIZED + [847].f1 ∈ [--..--] + [847].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [847].f3 ∈ [--..--] + [847].[bits 72 to 95] ∈ UNINITIALIZED + [847].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [847].f5 ∈ [--..--] + [847].[bits 136 to 159] ∈ UNINITIALIZED + [848].f1 ∈ [--..--] + [848].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [848].f3 ∈ [--..--] + [848].[bits 72 to 95] ∈ UNINITIALIZED + [848].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [848].f5 ∈ [--..--] + [848].[bits 136 to 159] ∈ UNINITIALIZED + [849].f1 ∈ [--..--] + [849].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [849].f3 ∈ [--..--] + [849].[bits 72 to 95] ∈ UNINITIALIZED + [849].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [849].f5 ∈ [--..--] + [849].[bits 136 to 159] ∈ UNINITIALIZED + [850].f1 ∈ [--..--] + [850].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [850].f3 ∈ [--..--] + [850].[bits 72 to 95] ∈ UNINITIALIZED + [850].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [850].f5 ∈ [--..--] + [850].[bits 136 to 159] ∈ UNINITIALIZED + [851].f1 ∈ [--..--] + [851].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [851].f3 ∈ [--..--] + [851].[bits 72 to 95] ∈ UNINITIALIZED + [851].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [851].f5 ∈ [--..--] + [851].[bits 136 to 159] ∈ UNINITIALIZED + [852].f1 ∈ [--..--] + [852].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [852].f3 ∈ [--..--] + [852].[bits 72 to 95] ∈ UNINITIALIZED + [852].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [852].f5 ∈ [--..--] + [852].[bits 136 to 159] ∈ UNINITIALIZED + [853].f1 ∈ [--..--] + [853].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [853].f3 ∈ [--..--] + [853].[bits 72 to 95] ∈ UNINITIALIZED + [853].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [853].f5 ∈ [--..--] + [853].[bits 136 to 159] ∈ UNINITIALIZED + [854].f1 ∈ [--..--] + [854].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [854].f3 ∈ [--..--] + [854].[bits 72 to 95] ∈ UNINITIALIZED + [854].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [854].f5 ∈ [--..--] + [854].[bits 136 to 159] ∈ UNINITIALIZED + [855].f1 ∈ [--..--] + [855].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [855].f3 ∈ [--..--] + [855].[bits 72 to 95] ∈ UNINITIALIZED + [855].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [855].f5 ∈ [--..--] + [855].[bits 136 to 159] ∈ UNINITIALIZED + [856].f1 ∈ [--..--] + [856].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [856].f3 ∈ [--..--] + [856].[bits 72 to 95] ∈ UNINITIALIZED + [856].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [856].f5 ∈ [--..--] + [856].[bits 136 to 159] ∈ UNINITIALIZED + [857].f1 ∈ [--..--] + [857].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [857].f3 ∈ [--..--] + [857].[bits 72 to 95] ∈ UNINITIALIZED + [857].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [857].f5 ∈ [--..--] + [857].[bits 136 to 159] ∈ UNINITIALIZED + [858].f1 ∈ [--..--] + [858].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [858].f3 ∈ [--..--] + [858].[bits 72 to 95] ∈ UNINITIALIZED + [858].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [858].f5 ∈ [--..--] + [858].[bits 136 to 159] ∈ UNINITIALIZED + [859].f1 ∈ [--..--] + [859].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [859].f3 ∈ [--..--] + [859].[bits 72 to 95] ∈ UNINITIALIZED + [859].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [859].f5 ∈ [--..--] + [859].[bits 136 to 159] ∈ UNINITIALIZED + [860].f1 ∈ [--..--] + [860].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [860].f3 ∈ [--..--] + [860].[bits 72 to 95] ∈ UNINITIALIZED + [860].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [860].f5 ∈ [--..--] + [860].[bits 136 to 159] ∈ UNINITIALIZED + [861].f1 ∈ [--..--] + [861].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [861].f3 ∈ [--..--] + [861].[bits 72 to 95] ∈ UNINITIALIZED + [861].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [861].f5 ∈ [--..--] + [861].[bits 136 to 159] ∈ UNINITIALIZED + [862].f1 ∈ [--..--] + [862].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [862].f3 ∈ [--..--] + [862].[bits 72 to 95] ∈ UNINITIALIZED + [862].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [862].f5 ∈ [--..--] + [862].[bits 136 to 159] ∈ UNINITIALIZED + [863].f1 ∈ [--..--] + [863].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [863].f3 ∈ [--..--] + [863].[bits 72 to 95] ∈ UNINITIALIZED + [863].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [863].f5 ∈ [--..--] + [863].[bits 136 to 159] ∈ UNINITIALIZED + [864].f1 ∈ [--..--] + [864].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [864].f3 ∈ [--..--] + [864].[bits 72 to 95] ∈ UNINITIALIZED + [864].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [864].f5 ∈ [--..--] + [864].[bits 136 to 159] ∈ UNINITIALIZED + [865].f1 ∈ [--..--] + [865].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [865].f3 ∈ [--..--] + [865].[bits 72 to 95] ∈ UNINITIALIZED + [865].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [865].f5 ∈ [--..--] + [865].[bits 136 to 159] ∈ UNINITIALIZED + [866].f1 ∈ [--..--] + [866].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [866].f3 ∈ [--..--] + [866].[bits 72 to 95] ∈ UNINITIALIZED + [866].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [866].f5 ∈ [--..--] + [866].[bits 136 to 159] ∈ UNINITIALIZED + [867].f1 ∈ [--..--] + [867].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [867].f3 ∈ [--..--] + [867].[bits 72 to 95] ∈ UNINITIALIZED + [867].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [867].f5 ∈ [--..--] + [867].[bits 136 to 159] ∈ UNINITIALIZED + [868].f1 ∈ [--..--] + [868].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [868].f3 ∈ [--..--] + [868].[bits 72 to 95] ∈ UNINITIALIZED + [868].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [868].f5 ∈ [--..--] + [868].[bits 136 to 159] ∈ UNINITIALIZED + [869].f1 ∈ [--..--] + [869].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [869].f3 ∈ [--..--] + [869].[bits 72 to 95] ∈ UNINITIALIZED + [869].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [869].f5 ∈ [--..--] + [869].[bits 136 to 159] ∈ UNINITIALIZED + [870].f1 ∈ [--..--] + [870].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [870].f3 ∈ [--..--] + [870].[bits 72 to 95] ∈ UNINITIALIZED + [870].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [870].f5 ∈ [--..--] + [870].[bits 136 to 159] ∈ UNINITIALIZED + [871].f1 ∈ [--..--] + [871].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [871].f3 ∈ [--..--] + [871].[bits 72 to 95] ∈ UNINITIALIZED + [871].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [871].f5 ∈ [--..--] + [871].[bits 136 to 159] ∈ UNINITIALIZED + [872].f1 ∈ [--..--] + [872].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [872].f3 ∈ [--..--] + [872].[bits 72 to 95] ∈ UNINITIALIZED + [872].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [872].f5 ∈ [--..--] + [872].[bits 136 to 159] ∈ UNINITIALIZED + [873].f1 ∈ [--..--] + [873].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [873].f3 ∈ [--..--] + [873].[bits 72 to 95] ∈ UNINITIALIZED + [873].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [873].f5 ∈ [--..--] + [873].[bits 136 to 159] ∈ UNINITIALIZED + [874].f1 ∈ [--..--] + [874].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [874].f3 ∈ [--..--] + [874].[bits 72 to 95] ∈ UNINITIALIZED + [874].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [874].f5 ∈ [--..--] + [874].[bits 136 to 159] ∈ UNINITIALIZED + [875].f1 ∈ [--..--] + [875].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [875].f3 ∈ [--..--] + [875].[bits 72 to 95] ∈ UNINITIALIZED + [875].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [875].f5 ∈ [--..--] + [875].[bits 136 to 159] ∈ UNINITIALIZED + [876].f1 ∈ [--..--] + [876].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [876].f3 ∈ [--..--] + [876].[bits 72 to 95] ∈ UNINITIALIZED + [876].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [876].f5 ∈ [--..--] + [876].[bits 136 to 159] ∈ UNINITIALIZED + [877].f1 ∈ [--..--] + [877].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [877].f3 ∈ [--..--] + [877].[bits 72 to 95] ∈ UNINITIALIZED + [877].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [877].f5 ∈ [--..--] + [877].[bits 136 to 159] ∈ UNINITIALIZED + [878].f1 ∈ [--..--] + [878].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [878].f3 ∈ [--..--] + [878].[bits 72 to 95] ∈ UNINITIALIZED + [878].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [878].f5 ∈ [--..--] + [878].[bits 136 to 159] ∈ UNINITIALIZED + [879].f1 ∈ [--..--] + [879].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [879].f3 ∈ [--..--] + [879].[bits 72 to 95] ∈ UNINITIALIZED + [879].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [879].f5 ∈ [--..--] + [879].[bits 136 to 159] ∈ UNINITIALIZED + [880].f1 ∈ [--..--] + [880].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [880].f3 ∈ [--..--] + [880].[bits 72 to 95] ∈ UNINITIALIZED + [880].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [880].f5 ∈ [--..--] + [880].[bits 136 to 159] ∈ UNINITIALIZED + [881].f1 ∈ [--..--] + [881].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [881].f3 ∈ [--..--] + [881].[bits 72 to 95] ∈ UNINITIALIZED + [881].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [881].f5 ∈ [--..--] + [881].[bits 136 to 159] ∈ UNINITIALIZED + [882].f1 ∈ [--..--] + [882].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [882].f3 ∈ [--..--] + [882].[bits 72 to 95] ∈ UNINITIALIZED + [882].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [882].f5 ∈ [--..--] + [882].[bits 136 to 159] ∈ UNINITIALIZED + [883].f1 ∈ [--..--] + [883].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [883].f3 ∈ [--..--] + [883].[bits 72 to 95] ∈ UNINITIALIZED + [883].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [883].f5 ∈ [--..--] + [883].[bits 136 to 159] ∈ UNINITIALIZED + [884].f1 ∈ [--..--] + [884].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [884].f3 ∈ [--..--] + [884].[bits 72 to 95] ∈ UNINITIALIZED + [884].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [884].f5 ∈ [--..--] + [884].[bits 136 to 159] ∈ UNINITIALIZED + [885].f1 ∈ [--..--] + [885].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [885].f3 ∈ [--..--] + [885].[bits 72 to 95] ∈ UNINITIALIZED + [885].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [885].f5 ∈ [--..--] + [885].[bits 136 to 159] ∈ UNINITIALIZED + [886].f1 ∈ [--..--] + [886].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [886].f3 ∈ [--..--] + [886].[bits 72 to 95] ∈ UNINITIALIZED + [886].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [886].f5 ∈ [--..--] + [886].[bits 136 to 159] ∈ UNINITIALIZED + [887].f1 ∈ [--..--] + [887].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [887].f3 ∈ [--..--] + [887].[bits 72 to 95] ∈ UNINITIALIZED + [887].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [887].f5 ∈ [--..--] + [887].[bits 136 to 159] ∈ UNINITIALIZED + [888].f1 ∈ [--..--] + [888].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [888].f3 ∈ [--..--] + [888].[bits 72 to 95] ∈ UNINITIALIZED + [888].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [888].f5 ∈ [--..--] + [888].[bits 136 to 159] ∈ UNINITIALIZED + [889].f1 ∈ [--..--] + [889].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [889].f3 ∈ [--..--] + [889].[bits 72 to 95] ∈ UNINITIALIZED + [889].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [889].f5 ∈ [--..--] + [889].[bits 136 to 159] ∈ UNINITIALIZED + [890].f1 ∈ [--..--] + [890].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [890].f3 ∈ [--..--] + [890].[bits 72 to 95] ∈ UNINITIALIZED + [890].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [890].f5 ∈ [--..--] + [890].[bits 136 to 159] ∈ UNINITIALIZED + [891].f1 ∈ [--..--] + [891].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [891].f3 ∈ [--..--] + [891].[bits 72 to 95] ∈ UNINITIALIZED + [891].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [891].f5 ∈ [--..--] + [891].[bits 136 to 159] ∈ UNINITIALIZED + [892].f1 ∈ [--..--] + [892].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [892].f3 ∈ [--..--] + [892].[bits 72 to 95] ∈ UNINITIALIZED + [892].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [892].f5 ∈ [--..--] + [892].[bits 136 to 159] ∈ UNINITIALIZED + [893].f1 ∈ [--..--] + [893].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [893].f3 ∈ [--..--] + [893].[bits 72 to 95] ∈ UNINITIALIZED + [893].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [893].f5 ∈ [--..--] + [893].[bits 136 to 159] ∈ UNINITIALIZED + [894].f1 ∈ [--..--] + [894].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [894].f3 ∈ [--..--] + [894].[bits 72 to 95] ∈ UNINITIALIZED + [894].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [894].f5 ∈ [--..--] + [894].[bits 136 to 159] ∈ UNINITIALIZED + [895].f1 ∈ [--..--] + [895].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [895].f3 ∈ [--..--] + [895].[bits 72 to 95] ∈ UNINITIALIZED + [895].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [895].f5 ∈ [--..--] + [895].[bits 136 to 159] ∈ UNINITIALIZED + [896].f1 ∈ [--..--] + [896].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [896].f3 ∈ [--..--] + [896].[bits 72 to 95] ∈ UNINITIALIZED + [896].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [896].f5 ∈ [--..--] + [896].[bits 136 to 159] ∈ UNINITIALIZED + [897].f1 ∈ [--..--] + [897].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [897].f3 ∈ [--..--] + [897].[bits 72 to 95] ∈ UNINITIALIZED + [897].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [897].f5 ∈ [--..--] + [897].[bits 136 to 159] ∈ UNINITIALIZED + [898].f1 ∈ [--..--] + [898].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [898].f3 ∈ [--..--] + [898].[bits 72 to 95] ∈ UNINITIALIZED + [898].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [898].f5 ∈ [--..--] + [898].[bits 136 to 159] ∈ UNINITIALIZED + [899].f1 ∈ [--..--] + [899].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [899].f3 ∈ [--..--] + [899].[bits 72 to 95] ∈ UNINITIALIZED + [899].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [899].f5 ∈ [--..--] + [899].[bits 136 to 159] ∈ UNINITIALIZED + [900].f1 ∈ [--..--] + [900].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [900].f3 ∈ [--..--] + [900].[bits 72 to 95] ∈ UNINITIALIZED + [900].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [900].f5 ∈ [--..--] + [900].[bits 136 to 159] ∈ UNINITIALIZED + [901].f1 ∈ [--..--] + [901].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [901].f3 ∈ [--..--] + [901].[bits 72 to 95] ∈ UNINITIALIZED + [901].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [901].f5 ∈ [--..--] + [901].[bits 136 to 159] ∈ UNINITIALIZED + [902].f1 ∈ [--..--] + [902].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [902].f3 ∈ [--..--] + [902].[bits 72 to 95] ∈ UNINITIALIZED + [902].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [902].f5 ∈ [--..--] + [902].[bits 136 to 159] ∈ UNINITIALIZED + [903].f1 ∈ [--..--] + [903].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [903].f3 ∈ [--..--] + [903].[bits 72 to 95] ∈ UNINITIALIZED + [903].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [903].f5 ∈ [--..--] + [903].[bits 136 to 159] ∈ UNINITIALIZED + [904].f1 ∈ [--..--] + [904].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [904].f3 ∈ [--..--] + [904].[bits 72 to 95] ∈ UNINITIALIZED + [904].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [904].f5 ∈ [--..--] + [904].[bits 136 to 159] ∈ UNINITIALIZED + [905].f1 ∈ [--..--] + [905].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [905].f3 ∈ [--..--] + [905].[bits 72 to 95] ∈ UNINITIALIZED + [905].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [905].f5 ∈ [--..--] + [905].[bits 136 to 159] ∈ UNINITIALIZED + [906].f1 ∈ [--..--] + [906].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [906].f3 ∈ [--..--] + [906].[bits 72 to 95] ∈ UNINITIALIZED + [906].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [906].f5 ∈ [--..--] + [906].[bits 136 to 159] ∈ UNINITIALIZED + [907].f1 ∈ [--..--] + [907].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [907].f3 ∈ [--..--] + [907].[bits 72 to 95] ∈ UNINITIALIZED + [907].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [907].f5 ∈ [--..--] + [907].[bits 136 to 159] ∈ UNINITIALIZED + [908].f1 ∈ [--..--] + [908].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [908].f3 ∈ [--..--] + [908].[bits 72 to 95] ∈ UNINITIALIZED + [908].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [908].f5 ∈ [--..--] + [908].[bits 136 to 159] ∈ UNINITIALIZED + [909].f1 ∈ [--..--] + [909].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [909].f3 ∈ [--..--] + [909].[bits 72 to 95] ∈ UNINITIALIZED + [909].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [909].f5 ∈ [--..--] + [909].[bits 136 to 159] ∈ UNINITIALIZED + [910].f1 ∈ [--..--] + [910].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [910].f3 ∈ [--..--] + [910].[bits 72 to 95] ∈ UNINITIALIZED + [910].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [910].f5 ∈ [--..--] + [910].[bits 136 to 159] ∈ UNINITIALIZED + [911].f1 ∈ [--..--] + [911].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [911].f3 ∈ [--..--] + [911].[bits 72 to 95] ∈ UNINITIALIZED + [911].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [911].f5 ∈ [--..--] + [911].[bits 136 to 159] ∈ UNINITIALIZED + [912].f1 ∈ [--..--] + [912].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [912].f3 ∈ [--..--] + [912].[bits 72 to 95] ∈ UNINITIALIZED + [912].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [912].f5 ∈ [--..--] + [912].[bits 136 to 159] ∈ UNINITIALIZED + [913].f1 ∈ [--..--] + [913].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [913].f3 ∈ [--..--] + [913].[bits 72 to 95] ∈ UNINITIALIZED + [913].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [913].f5 ∈ [--..--] + [913].[bits 136 to 159] ∈ UNINITIALIZED + [914].f1 ∈ [--..--] + [914].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [914].f3 ∈ [--..--] + [914].[bits 72 to 95] ∈ UNINITIALIZED + [914].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [914].f5 ∈ [--..--] + [914].[bits 136 to 159] ∈ UNINITIALIZED + [915].f1 ∈ [--..--] + [915].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [915].f3 ∈ [--..--] + [915].[bits 72 to 95] ∈ UNINITIALIZED + [915].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [915].f5 ∈ [--..--] + [915].[bits 136 to 159] ∈ UNINITIALIZED + [916].f1 ∈ [--..--] + [916].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [916].f3 ∈ [--..--] + [916].[bits 72 to 95] ∈ UNINITIALIZED + [916].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [916].f5 ∈ [--..--] + [916].[bits 136 to 159] ∈ UNINITIALIZED + [917].f1 ∈ [--..--] + [917].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [917].f3 ∈ [--..--] + [917].[bits 72 to 95] ∈ UNINITIALIZED + [917].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [917].f5 ∈ [--..--] + [917].[bits 136 to 159] ∈ UNINITIALIZED + [918].f1 ∈ [--..--] + [918].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [918].f3 ∈ [--..--] + [918].[bits 72 to 95] ∈ UNINITIALIZED + [918].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [918].f5 ∈ [--..--] + [918].[bits 136 to 159] ∈ UNINITIALIZED + [919].f1 ∈ [--..--] + [919].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [919].f3 ∈ [--..--] + [919].[bits 72 to 95] ∈ UNINITIALIZED + [919].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [919].f5 ∈ [--..--] + [919].[bits 136 to 159] ∈ UNINITIALIZED + [920].f1 ∈ [--..--] + [920].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [920].f3 ∈ [--..--] + [920].[bits 72 to 95] ∈ UNINITIALIZED + [920].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [920].f5 ∈ [--..--] + [920].[bits 136 to 159] ∈ UNINITIALIZED + [921].f1 ∈ [--..--] + [921].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [921].f3 ∈ [--..--] + [921].[bits 72 to 95] ∈ UNINITIALIZED + [921].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [921].f5 ∈ [--..--] + [921].[bits 136 to 159] ∈ UNINITIALIZED + [922].f1 ∈ [--..--] + [922].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [922].f3 ∈ [--..--] + [922].[bits 72 to 95] ∈ UNINITIALIZED + [922].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [922].f5 ∈ [--..--] + [922].[bits 136 to 159] ∈ UNINITIALIZED + [923].f1 ∈ [--..--] + [923].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [923].f3 ∈ [--..--] + [923].[bits 72 to 95] ∈ UNINITIALIZED + [923].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [923].f5 ∈ [--..--] + [923].[bits 136 to 159] ∈ UNINITIALIZED + [924].f1 ∈ [--..--] + [924].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [924].f3 ∈ [--..--] + [924].[bits 72 to 95] ∈ UNINITIALIZED + [924].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [924].f5 ∈ [--..--] + [924].[bits 136 to 159] ∈ UNINITIALIZED + [925].f1 ∈ [--..--] + [925].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [925].f3 ∈ [--..--] + [925].[bits 72 to 95] ∈ UNINITIALIZED + [925].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [925].f5 ∈ [--..--] + [925].[bits 136 to 159] ∈ UNINITIALIZED + [926].f1 ∈ [--..--] + [926].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [926].f3 ∈ [--..--] + [926].[bits 72 to 95] ∈ UNINITIALIZED + [926].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [926].f5 ∈ [--..--] + [926].[bits 136 to 159] ∈ UNINITIALIZED + [927].f1 ∈ [--..--] + [927].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [927].f3 ∈ [--..--] + [927].[bits 72 to 95] ∈ UNINITIALIZED + [927].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [927].f5 ∈ [--..--] + [927].[bits 136 to 159] ∈ UNINITIALIZED + [928].f1 ∈ [--..--] + [928].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [928].f3 ∈ [--..--] + [928].[bits 72 to 95] ∈ UNINITIALIZED + [928].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [928].f5 ∈ [--..--] + [928].[bits 136 to 159] ∈ UNINITIALIZED + [929].f1 ∈ [--..--] + [929].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [929].f3 ∈ [--..--] + [929].[bits 72 to 95] ∈ UNINITIALIZED + [929].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [929].f5 ∈ [--..--] + [929].[bits 136 to 159] ∈ UNINITIALIZED + [930].f1 ∈ [--..--] + [930].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [930].f3 ∈ [--..--] + [930].[bits 72 to 95] ∈ UNINITIALIZED + [930].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [930].f5 ∈ [--..--] + [930].[bits 136 to 159] ∈ UNINITIALIZED + [931].f1 ∈ [--..--] + [931].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [931].f3 ∈ [--..--] + [931].[bits 72 to 95] ∈ UNINITIALIZED + [931].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [931].f5 ∈ [--..--] + [931].[bits 136 to 159] ∈ UNINITIALIZED + [932].f1 ∈ [--..--] + [932].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [932].f3 ∈ [--..--] + [932].[bits 72 to 95] ∈ UNINITIALIZED + [932].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [932].f5 ∈ [--..--] + [932].[bits 136 to 159] ∈ UNINITIALIZED + [933].f1 ∈ [--..--] + [933].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [933].f3 ∈ [--..--] + [933].[bits 72 to 95] ∈ UNINITIALIZED + [933].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [933].f5 ∈ [--..--] + [933].[bits 136 to 159] ∈ UNINITIALIZED + [934].f1 ∈ [--..--] + [934].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [934].f3 ∈ [--..--] + [934].[bits 72 to 95] ∈ UNINITIALIZED + [934].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [934].f5 ∈ [--..--] + [934].[bits 136 to 159] ∈ UNINITIALIZED + [935].f1 ∈ [--..--] + [935].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [935].f3 ∈ [--..--] + [935].[bits 72 to 95] ∈ UNINITIALIZED + [935].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [935].f5 ∈ [--..--] + [935].[bits 136 to 159] ∈ UNINITIALIZED + [936].f1 ∈ [--..--] + [936].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [936].f3 ∈ [--..--] + [936].[bits 72 to 95] ∈ UNINITIALIZED + [936].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [936].f5 ∈ [--..--] + [936].[bits 136 to 159] ∈ UNINITIALIZED + [937].f1 ∈ [--..--] + [937].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [937].f3 ∈ [--..--] + [937].[bits 72 to 95] ∈ UNINITIALIZED + [937].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [937].f5 ∈ [--..--] + [937].[bits 136 to 159] ∈ UNINITIALIZED + [938].f1 ∈ [--..--] + [938].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [938].f3 ∈ [--..--] + [938].[bits 72 to 95] ∈ UNINITIALIZED + [938].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [938].f5 ∈ [--..--] + [938].[bits 136 to 159] ∈ UNINITIALIZED + [939].f1 ∈ [--..--] + [939].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [939].f3 ∈ [--..--] + [939].[bits 72 to 95] ∈ UNINITIALIZED + [939].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [939].f5 ∈ [--..--] + [939].[bits 136 to 159] ∈ UNINITIALIZED + [940].f1 ∈ [--..--] + [940].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [940].f3 ∈ [--..--] + [940].[bits 72 to 95] ∈ UNINITIALIZED + [940].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [940].f5 ∈ [--..--] + [940].[bits 136 to 159] ∈ UNINITIALIZED + [941].f1 ∈ [--..--] + [941].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [941].f3 ∈ [--..--] + [941].[bits 72 to 95] ∈ UNINITIALIZED + [941].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [941].f5 ∈ [--..--] + [941].[bits 136 to 159] ∈ UNINITIALIZED + [942].f1 ∈ [--..--] + [942].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [942].f3 ∈ [--..--] + [942].[bits 72 to 95] ∈ UNINITIALIZED + [942].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [942].f5 ∈ [--..--] + [942].[bits 136 to 159] ∈ UNINITIALIZED + [943].f1 ∈ [--..--] + [943].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [943].f3 ∈ [--..--] + [943].[bits 72 to 95] ∈ UNINITIALIZED + [943].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [943].f5 ∈ [--..--] + [943].[bits 136 to 159] ∈ UNINITIALIZED + [944].f1 ∈ [--..--] + [944].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [944].f3 ∈ [--..--] + [944].[bits 72 to 95] ∈ UNINITIALIZED + [944].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [944].f5 ∈ [--..--] + [944].[bits 136 to 159] ∈ UNINITIALIZED + [945].f1 ∈ [--..--] + [945].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [945].f3 ∈ [--..--] + [945].[bits 72 to 95] ∈ UNINITIALIZED + [945].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [945].f5 ∈ [--..--] + [945].[bits 136 to 159] ∈ UNINITIALIZED + [946].f1 ∈ [--..--] + [946].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [946].f3 ∈ [--..--] + [946].[bits 72 to 95] ∈ UNINITIALIZED + [946].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [946].f5 ∈ [--..--] + [946].[bits 136 to 159] ∈ UNINITIALIZED + [947].f1 ∈ [--..--] + [947].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [947].f3 ∈ [--..--] + [947].[bits 72 to 95] ∈ UNINITIALIZED + [947].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [947].f5 ∈ [--..--] + [947].[bits 136 to 159] ∈ UNINITIALIZED + [948].f1 ∈ [--..--] + [948].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [948].f3 ∈ [--..--] + [948].[bits 72 to 95] ∈ UNINITIALIZED + [948].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [948].f5 ∈ [--..--] + [948].[bits 136 to 159] ∈ UNINITIALIZED + [949].f1 ∈ [--..--] + [949].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [949].f3 ∈ [--..--] + [949].[bits 72 to 95] ∈ UNINITIALIZED + [949].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [949].f5 ∈ [--..--] + [949].[bits 136 to 159] ∈ UNINITIALIZED + [950].f1 ∈ [--..--] + [950].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [950].f3 ∈ [--..--] + [950].[bits 72 to 95] ∈ UNINITIALIZED + [950].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [950].f5 ∈ [--..--] + [950].[bits 136 to 159] ∈ UNINITIALIZED + [951].f1 ∈ [--..--] + [951].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [951].f3 ∈ [--..--] + [951].[bits 72 to 95] ∈ UNINITIALIZED + [951].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [951].f5 ∈ [--..--] + [951].[bits 136 to 159] ∈ UNINITIALIZED + [952].f1 ∈ [--..--] + [952].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [952].f3 ∈ [--..--] + [952].[bits 72 to 95] ∈ UNINITIALIZED + [952].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [952].f5 ∈ [--..--] + [952].[bits 136 to 159] ∈ UNINITIALIZED + [953].f1 ∈ [--..--] + [953].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [953].f3 ∈ [--..--] + [953].[bits 72 to 95] ∈ UNINITIALIZED + [953].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [953].f5 ∈ [--..--] + [953].[bits 136 to 159] ∈ UNINITIALIZED + [954].f1 ∈ [--..--] + [954].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [954].f3 ∈ [--..--] + [954].[bits 72 to 95] ∈ UNINITIALIZED + [954].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [954].f5 ∈ [--..--] + [954].[bits 136 to 159] ∈ UNINITIALIZED + [955].f1 ∈ [--..--] + [955].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [955].f3 ∈ [--..--] + [955].[bits 72 to 95] ∈ UNINITIALIZED + [955].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [955].f5 ∈ [--..--] + [955].[bits 136 to 159] ∈ UNINITIALIZED + [956].f1 ∈ [--..--] + [956].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [956].f3 ∈ [--..--] + [956].[bits 72 to 95] ∈ UNINITIALIZED + [956].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [956].f5 ∈ [--..--] + [956].[bits 136 to 159] ∈ UNINITIALIZED + [957].f1 ∈ [--..--] + [957].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [957].f3 ∈ [--..--] + [957].[bits 72 to 95] ∈ UNINITIALIZED + [957].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [957].f5 ∈ [--..--] + [957].[bits 136 to 159] ∈ UNINITIALIZED + [958].f1 ∈ [--..--] + [958].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [958].f3 ∈ [--..--] + [958].[bits 72 to 95] ∈ UNINITIALIZED + [958].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [958].f5 ∈ [--..--] + [958].[bits 136 to 159] ∈ UNINITIALIZED + [959].f1 ∈ [--..--] + [959].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [959].f3 ∈ [--..--] + [959].[bits 72 to 95] ∈ UNINITIALIZED + [959].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [959].f5 ∈ [--..--] + [959].[bits 136 to 159] ∈ UNINITIALIZED + [960].f1 ∈ [--..--] + [960].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [960].f3 ∈ [--..--] + [960].[bits 72 to 95] ∈ UNINITIALIZED + [960].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [960].f5 ∈ [--..--] + [960].[bits 136 to 159] ∈ UNINITIALIZED + [961].f1 ∈ [--..--] + [961].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [961].f3 ∈ [--..--] + [961].[bits 72 to 95] ∈ UNINITIALIZED + [961].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [961].f5 ∈ [--..--] + [961].[bits 136 to 159] ∈ UNINITIALIZED + [962].f1 ∈ [--..--] + [962].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [962].f3 ∈ [--..--] + [962].[bits 72 to 95] ∈ UNINITIALIZED + [962].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [962].f5 ∈ [--..--] + [962].[bits 136 to 159] ∈ UNINITIALIZED + [963].f1 ∈ [--..--] + [963].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [963].f3 ∈ [--..--] + [963].[bits 72 to 95] ∈ UNINITIALIZED + [963].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [963].f5 ∈ [--..--] + [963].[bits 136 to 159] ∈ UNINITIALIZED + [964].f1 ∈ [--..--] + [964].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [964].f3 ∈ [--..--] + [964].[bits 72 to 95] ∈ UNINITIALIZED + [964].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [964].f5 ∈ [--..--] + [964].[bits 136 to 159] ∈ UNINITIALIZED + [965].f1 ∈ [--..--] + [965].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [965].f3 ∈ [--..--] + [965].[bits 72 to 95] ∈ UNINITIALIZED + [965].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [965].f5 ∈ [--..--] + [965].[bits 136 to 159] ∈ UNINITIALIZED + [966].f1 ∈ [--..--] + [966].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [966].f3 ∈ [--..--] + [966].[bits 72 to 95] ∈ UNINITIALIZED + [966].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [966].f5 ∈ [--..--] + [966].[bits 136 to 159] ∈ UNINITIALIZED + [967].f1 ∈ [--..--] + [967].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [967].f3 ∈ [--..--] + [967].[bits 72 to 95] ∈ UNINITIALIZED + [967].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [967].f5 ∈ [--..--] + [967].[bits 136 to 159] ∈ UNINITIALIZED + [968].f1 ∈ [--..--] + [968].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [968].f3 ∈ [--..--] + [968].[bits 72 to 95] ∈ UNINITIALIZED + [968].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [968].f5 ∈ [--..--] + [968].[bits 136 to 159] ∈ UNINITIALIZED + [969].f1 ∈ [--..--] + [969].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [969].f3 ∈ [--..--] + [969].[bits 72 to 95] ∈ UNINITIALIZED + [969].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [969].f5 ∈ [--..--] + [969].[bits 136 to 159] ∈ UNINITIALIZED + [970].f1 ∈ [--..--] + [970].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [970].f3 ∈ [--..--] + [970].[bits 72 to 95] ∈ UNINITIALIZED + [970].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [970].f5 ∈ [--..--] + [970].[bits 136 to 159] ∈ UNINITIALIZED + [971].f1 ∈ [--..--] + [971].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [971].f3 ∈ [--..--] + [971].[bits 72 to 95] ∈ UNINITIALIZED + [971].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [971].f5 ∈ [--..--] + [971].[bits 136 to 159] ∈ UNINITIALIZED + [972].f1 ∈ [--..--] + [972].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [972].f3 ∈ [--..--] + [972].[bits 72 to 95] ∈ UNINITIALIZED + [972].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [972].f5 ∈ [--..--] + [972].[bits 136 to 159] ∈ UNINITIALIZED + [973].f1 ∈ [--..--] + [973].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [973].f3 ∈ [--..--] + [973].[bits 72 to 95] ∈ UNINITIALIZED + [973].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [973].f5 ∈ [--..--] + [973].[bits 136 to 159] ∈ UNINITIALIZED + [974].f1 ∈ [--..--] + [974].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [974].f3 ∈ [--..--] + [974].[bits 72 to 95] ∈ UNINITIALIZED + [974].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [974].f5 ∈ [--..--] + [974].[bits 136 to 159] ∈ UNINITIALIZED + [975].f1 ∈ [--..--] + [975].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [975].f3 ∈ [--..--] + [975].[bits 72 to 95] ∈ UNINITIALIZED + [975].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [975].f5 ∈ [--..--] + [975].[bits 136 to 159] ∈ UNINITIALIZED + [976].f1 ∈ [--..--] + [976].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [976].f3 ∈ [--..--] + [976].[bits 72 to 95] ∈ UNINITIALIZED + [976].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [976].f5 ∈ [--..--] + [976].[bits 136 to 159] ∈ UNINITIALIZED + [977].f1 ∈ [--..--] + [977].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [977].f3 ∈ [--..--] + [977].[bits 72 to 95] ∈ UNINITIALIZED + [977].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [977].f5 ∈ [--..--] + [977].[bits 136 to 159] ∈ UNINITIALIZED + [978].f1 ∈ [--..--] + [978].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [978].f3 ∈ [--..--] + [978].[bits 72 to 95] ∈ UNINITIALIZED + [978].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [978].f5 ∈ [--..--] + [978].[bits 136 to 159] ∈ UNINITIALIZED + [979].f1 ∈ [--..--] + [979].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [979].f3 ∈ [--..--] + [979].[bits 72 to 95] ∈ UNINITIALIZED + [979].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [979].f5 ∈ [--..--] + [979].[bits 136 to 159] ∈ UNINITIALIZED + [980].f1 ∈ [--..--] + [980].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [980].f3 ∈ [--..--] + [980].[bits 72 to 95] ∈ UNINITIALIZED + [980].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [980].f5 ∈ [--..--] + [980].[bits 136 to 159] ∈ UNINITIALIZED + [981].f1 ∈ [--..--] + [981].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [981].f3 ∈ [--..--] + [981].[bits 72 to 95] ∈ UNINITIALIZED + [981].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [981].f5 ∈ [--..--] + [981].[bits 136 to 159] ∈ UNINITIALIZED + [982].f1 ∈ [--..--] + [982].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [982].f3 ∈ [--..--] + [982].[bits 72 to 95] ∈ UNINITIALIZED + [982].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [982].f5 ∈ [--..--] + [982].[bits 136 to 159] ∈ UNINITIALIZED + [983].f1 ∈ [--..--] + [983].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [983].f3 ∈ [--..--] + [983].[bits 72 to 95] ∈ UNINITIALIZED + [983].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [983].f5 ∈ [--..--] + [983].[bits 136 to 159] ∈ UNINITIALIZED + [984].f1 ∈ [--..--] + [984].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [984].f3 ∈ [--..--] + [984].[bits 72 to 95] ∈ UNINITIALIZED + [984].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [984].f5 ∈ [--..--] + [984].[bits 136 to 159] ∈ UNINITIALIZED + [985].f1 ∈ [--..--] + [985].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [985].f3 ∈ [--..--] + [985].[bits 72 to 95] ∈ UNINITIALIZED + [985].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [985].f5 ∈ [--..--] + [985].[bits 136 to 159] ∈ UNINITIALIZED + [986].f1 ∈ [--..--] + [986].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [986].f3 ∈ [--..--] + [986].[bits 72 to 95] ∈ UNINITIALIZED + [986].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [986].f5 ∈ [--..--] + [986].[bits 136 to 159] ∈ UNINITIALIZED + [987].f1 ∈ [--..--] + [987].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [987].f3 ∈ [--..--] + [987].[bits 72 to 95] ∈ UNINITIALIZED + [987].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [987].f5 ∈ [--..--] + [987].[bits 136 to 159] ∈ UNINITIALIZED + [988].f1 ∈ [--..--] + [988].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [988].f3 ∈ [--..--] + [988].[bits 72 to 95] ∈ UNINITIALIZED + [988].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [988].f5 ∈ [--..--] + [988].[bits 136 to 159] ∈ UNINITIALIZED + [989].f1 ∈ [--..--] + [989].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [989].f3 ∈ [--..--] + [989].[bits 72 to 95] ∈ UNINITIALIZED + [989].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [989].f5 ∈ [--..--] + [989].[bits 136 to 159] ∈ UNINITIALIZED + [990].f1 ∈ [--..--] + [990].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [990].f3 ∈ [--..--] + [990].[bits 72 to 95] ∈ UNINITIALIZED + [990].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [990].f5 ∈ [--..--] + [990].[bits 136 to 159] ∈ UNINITIALIZED + [991].f1 ∈ [--..--] + [991].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [991].f3 ∈ [--..--] + [991].[bits 72 to 95] ∈ UNINITIALIZED + [991].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [991].f5 ∈ [--..--] + [991].[bits 136 to 159] ∈ UNINITIALIZED + [992].f1 ∈ [--..--] + [992].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [992].f3 ∈ [--..--] + [992].[bits 72 to 95] ∈ UNINITIALIZED + [992].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [992].f5 ∈ [--..--] + [992].[bits 136 to 159] ∈ UNINITIALIZED + [993].f1 ∈ [--..--] + [993].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [993].f3 ∈ [--..--] + [993].[bits 72 to 95] ∈ UNINITIALIZED + [993].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [993].f5 ∈ [--..--] + [993].[bits 136 to 159] ∈ UNINITIALIZED + [994].f1 ∈ [--..--] + [994].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [994].f3 ∈ [--..--] + [994].[bits 72 to 95] ∈ UNINITIALIZED + [994].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [994].f5 ∈ [--..--] + [994].[bits 136 to 159] ∈ UNINITIALIZED + [995].f1 ∈ [--..--] + [995].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [995].f3 ∈ [--..--] + [995].[bits 72 to 95] ∈ UNINITIALIZED + [995].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [995].f5 ∈ [--..--] + [995].[bits 136 to 159] ∈ UNINITIALIZED + [996].f1 ∈ [--..--] + [996].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [996].f3 ∈ [--..--] + [996].[bits 72 to 95] ∈ UNINITIALIZED + [996].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [996].f5 ∈ [--..--] + [996].[bits 136 to 159] ∈ UNINITIALIZED + [997].f1 ∈ [--..--] + [997].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [997].f3 ∈ [--..--] + [997].[bits 72 to 95] ∈ UNINITIALIZED + [997].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [997].f5 ∈ [--..--] + [997].[bits 136 to 159] ∈ UNINITIALIZED + [998].f1 ∈ [--..--] + [998].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [998].f3 ∈ [--..--] + [998].[bits 72 to 95] ∈ UNINITIALIZED + [998].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [998].f5 ∈ [--..--] + [998].[bits 136 to 159] ∈ UNINITIALIZED + [999].f1 ∈ [--..--] + [999].f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + [999].f3 ∈ [--..--] + [999].[bits 72 to 95] ∈ UNINITIALIZED + [999].f4 ∈ + {{ NULL ; &S_f4_0_t3[0] ; &S_f4_1_t3[0] ; &S_f4_2_t3[0] ; + &S_f4_3_t3[0] }} + [999].f5 ∈ [--..--] + [999].[bits 136 to 159] ∈ UNINITIALIZED + t4[0..4999999] ∈ [--..--] + t5[0] ∈ {{ NULL ; &S_0_t5[0] }} + [1] ∈ {{ NULL ; &S_1_t5[0] }} + [2] ∈ {{ NULL ; &S_2_t5[0] }} + t6[0..4999999]{.f1; .f2} ∈ [-1.79769313486e+308 .. 1.79769313486e+308] + S_f4_0_tcs_s[0..3] ∈ [--..--] + S_f4_1_tcs_s[0..3] ∈ [--..--] + S_f4_2_tcs_s[0..3] ∈ [--..--] + S_f4_3_tcs_s[0..3] ∈ [--..--] + S_0_t1[0..3] ∈ [--..--] + S_1_t1[0..3] ∈ [--..--] + S_2_t1[0..3] ∈ [--..--] + S_3_t1[0..3] ∈ [--..--] + S_f4_0_t3[0..3] ∈ [--..--] + S_f4_1_t3[0..3] ∈ [--..--] + S_f4_2_t3[0..3] ∈ [--..--] + S_f4_3_t3[0..3] ∈ [--..--] + S_0_t5[0..3] ∈ [--..--] + S_1_t5[0..3] ∈ [--..--] + S_2_t5[0..3] ∈ [--..--] +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + diff --git a/tests/value/oracle_symblocs/bigarray.err.oracle b/tests/value/oracle_symblocs/bigarray.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/bigarray.res.oracle b/tests/value/oracle_symblocs/bigarray.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..2474fa18c97031309e0ec0bad21aaa047553f40b --- /dev/null +++ b/tests/value/oracle_symblocs/bigarray.res.oracle @@ -0,0 +1,29 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/bigarray.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + T[0] ∈ {2} + [1] ∈ {3} + [2..8388607] ∈ {0} + S ∈ {{ "uututututututu" }} +tests/value/bigarray.c:7:[value] warning: out of bounds write. assert \valid(S); +tests/value/bigarray.c:7:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +[value] Recording results for main +[value] done for function main +tests/value/bigarray.c:7:[value] assertion 'Value,mem_access' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + __retres ∈ {0} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + __retres +[inout] Inputs for function main: + S diff --git a/tests/value/oracle_symblocs/bitfield.err.oracle b/tests/value/oracle_symblocs/bitfield.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/bitfield.res.oracle b/tests/value/oracle_symblocs/bitfield.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..d705842290e221ece2096fb1df58f33e70099446 --- /dev/null +++ b/tests/value/oracle_symblocs/bitfield.res.oracle @@ -0,0 +1,369 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/bitfield.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + h ∈ {0} + k ∈ {0} + k8 ∈ {0} + kr8 ∈ {0} + ll ∈ {0} + ini.a ∈ {2} + .b ∈ {-7} + .c ∈ {99999} + {.d; .[bits 28 to 31]} ∈ {0} + VV ∈ {55} + q4 ∈ {40000} + X ∈ {0} + x{.f; .sf} ∈ {28349} + us ∈ {56355} + G ∈ {0} + H ∈ {0} + b ∈ {0} + c ∈ {0} + ee ∈ {0} + foo ∈ [--..--] + y ∈ [--..--] +[value] computing for function main_old <- main. + Called from tests/value/bitfield.i:150. +[value] Called Frama_C_show_each({1}) +[value] Called Frama_C_show_each({3}) +tests/value/bitfield.i:120:[value] Assigning imprecise value to v.c. + The imprecision originates from Arithmetic {tests/value/bitfield.i:120} +tests/value/bitfield.i:122:[value] warning: signed overflow. assert -2147483648 ≤ (int)v.d+1; +tests/value/bitfield.i:122:[value] warning: signed overflow. assert (int)v.d+1 ≤ 2147483647; +[value] computing for function f <- main_old <- main. + Called from tests/value/bitfield.i:125. +[value] DUMPING STATE of file tests/value/bitfield.i line 21 + h ∈ {0} + k ∈ {0} + k8 ∈ {0} + kr8 ∈ {0} + ll ∈ {0} + ini.a ∈ {2} + .b ∈ {-7} + .c ∈ {99999} + {.d; .[bits 28 to 31]} ∈ {0} + VV ∈ {0} + q4 ∈ {40000} + X ∈ {7} + x_0 ∈ {7} + x{.f; .sf} ∈ {28349} + us ∈ {56355} + G ∈ {0} + H ∈ {0} + b ∈ {0} + c ∈ {0} + ee ∈ {0} + foo ∈ [--..--] + y ∈ [--..--] + v.a ∈ {0} + .b ∈ {7} + .c ∈ + {{ garbled mix of &{v} (origin: Arithmetic {tests/value/bitfield.i:120}) }} + .[bits 28 to 31] ∈ UNINITIALIZED + .d ∈ {{ &v + {9} }} + l_161{.f0; .f1[bits 0 to 31]} ∈ {-1} + =END OF DUMP== +[value] Recording results for f +[value] Done for function f +tests/value/bitfield.i:126:[value] warning: signed overflow. assert -2147483648 ≤ foo+foo; +tests/value/bitfield.i:126:[value] warning: signed overflow. assert foo+foo ≤ 2147483647; +tests/value/bitfield.i:127:[value] Assigning imprecise value to h.c. + The imprecision originates from Arithmetic {tests/value/bitfield.i:127} +[value] computing for function return_8 <- main_old <- main. + Called from tests/value/bitfield.i:130. +[value] Recording results for return_8 +[value] Done for function return_8 +[value] computing for function g <- main_old <- main. + Called from tests/value/bitfield.i:133. +[value] Recording results for g +[value] Done for function g +tests/value/bitfield.i:135:[value] warning: locals {v} escaping the scope of main_old through h +[value] Recording results for main_old +[value] Done for function main_old +[value] computing for function imprecise_bts_1671 <- main. + Called from tests/value/bitfield.i:151. +tests/value/bitfield.i:69:[value] entering loop for the first time +[value] computing for function leaf <- imprecise_bts_1671 <- main. + Called from tests/value/bitfield.i:70. +tests/value/bitfield.i:70:[kernel] warning: Neither code nor specification for function leaf, generating default assigns from the prototype +[value] using specification for function leaf +[value] Done for function leaf +tests/value/bitfield.i:71:[value] Reading left-value ee. + It contains a garbled mix of {b} because of Misaligned + {tests/value/bitfield.i:70}. +[value] Called Frama_C_show_each({{ garbled mix of &{b} + (origin: Misaligned {tests/value/bitfield.i:70}) }}) +tests/value/bitfield.i:73:[value] Reading left-value ee. + It contains a garbled mix of {b} because of Misaligned + {tests/value/bitfield.i:70}. +[value] Called Frama_C_show_each(.next ∈ + {{ garbled mix of &{b} + (origin: Misaligned {tests/value/bitfield.i:70}) }} + .bitf ∈ {0} + .[bits 65 to 95] ∈ + {{ garbled mix of &{b} + (origin: Misaligned {tests/value/bitfield.i:70}) }}) +tests/value/bitfield.i:74:[value] Assigning imprecise value to c. + The imprecision originates from Misaligned {tests/value/bitfield.i:70} +[value] computing for function leaf <- imprecise_bts_1671 <- main. + Called from tests/value/bitfield.i:70. +[value] Done for function leaf +[value] Called Frama_C_show_each({{ garbled mix of &{b} + (origin: Misaligned {tests/value/bitfield.i:70}) }}) +tests/value/bitfield.i:72:[value] warning: out of bounds write. assert \valid(&c->bitf); +[value] Called Frama_C_show_each({{ garbled mix of &{b} + (origin: Misaligned {tests/value/bitfield.i:70}) }}) +tests/value/bitfield.i:74:[value] warning: out of bounds read. assert \valid_read(&c->next.next); +[value] computing for function leaf <- imprecise_bts_1671 <- main. + Called from tests/value/bitfield.i:70. +[value] Done for function leaf +[value] Recording results for imprecise_bts_1671 +[value] Done for function imprecise_bts_1671 +[value] computing for function logic <- main. + Called from tests/value/bitfield.i:152. +[value] Called Frama_C_show_each(.v0_3 ∈ [--..--] + .v4 ∈ {0} + .v5_31 ∈ [--..--]) +[value] Called Frama_C_show_each(.v0_3 ∈ [--..--] + .v4 ∈ {0} + .v5_31 ∈ [--..--]) +[value] Called Frama_C_show_each({0}) +tests/value/bitfield.i:93:[value] assertion got status valid. +[value] Called Frama_C_show_each([bits 0 to 2] ∈ [--..--] + [bits 3 to 3] ∈ {0} + [bits 4 to 31] ∈ [--..--]) +tests/value/bitfield.i:99:[value] assertion got status valid. +tests/value/bitfield.i:101:[value] warning: accessing uninitialized left-value. assert \initialized(&w.v4); +[value] Recording results for logic +[value] Done for function logic +[value] computing for function eq_bitfields <- main. + Called from tests/value/bitfield.i:153. +[value] DUMPING STATE of file tests/value/bitfield.i line 143 + h.a ∈ {0} + .b ∈ [--..--] + .c ∈ [--..--] or ESCAPINGADDR + {.d; .[bits 28 to 31]} ∈ {0} + k ∈ {0} + k8.a ∈ {0} + .b ∈ {-8} + {.c; .d; .[bits 28 to 31]} ∈ {0} + kr8.a ∈ {0} + .b ∈ {-8} + {.c; .d; .[bits 28 to 31]} ∈ {0} + ll.b ∈ {-25536} + .[bits 16 to 31] ∈ {0} + ini.a ∈ {2} + .b ∈ {-7} + .c ∈ {99999} + {.d; .[bits 28 to 31]} ∈ {0} + VV ∈ {0} + q4 ∈ {40000} + X ∈ {7} + x{.f; .sf} ∈ {28349} + us ∈ {56355} + G ∈ {1} + H ∈ {0} + b ∈ {0} + c ∈ + {{ garbled mix of &{b; ee} + (origin: Misaligned {tests/value/bitfield.i:70}) }} + ee ∈ + {{ garbled mix of &{b} (origin: Misaligned {tests/value/bitfield.i:70}) }} + foo ∈ [--..--] + y.v0_3 ∈ [--..--] + .v4 ∈ {0} + .v5_31 ∈ [--..--] + i ∈ {16; 17} + s.a ∈ {0; 1} + .b ∈ UNINITIALIZED + .c ∈ {16; 17} + {.d; .[bits 28 to 31]} ∈ UNINITIALIZED + =END OF DUMP== +[value] Recording results for eq_bitfields +[value] Done for function eq_bitfields +[value] Recording results for main +[value] done for function main +tests/value/bitfield.i:101:[value] assertion 'Value,initialisation' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function eq_bitfields: + i ∈ [--..--] +[value:final-states] Values at end of function f: + X ∈ {7} +[value:final-states] Values at end of function g: + H ∈ {0} + r ∈ {1} +[value:final-states] Values at end of function imprecise_bts_1671: + b ∈ {0} + c ∈ + {{ garbled mix of &{b; ee} + (origin: Misaligned {tests/value/bitfield.i:70}) }} + ee ∈ + {{ garbled mix of &{b} + (origin: Misaligned {tests/value/bitfield.i:70}) }} +[value:final-states] Values at end of function logic: + y.v0_3 ∈ [--..--] + .v4 ∈ {0} + .v5_31 ∈ [--..--] + w.v0_3 ∈ {1} + {.v4; .v5_31} ∈ UNINITIALIZED +[value:final-states] Values at end of function return_8: + __retres ∈ {8} +[value:final-states] Values at end of function main_old: + h.a ∈ {0} + .b ∈ [--..--] + .c ∈ + {{ garbled mix of &{v} + (origin: Arithmetic {tests/value/bitfield.i:127}) }} + {.d; .[bits 28 to 31]} ∈ {0} + k8.a ∈ {0} + .b ∈ {-8} + {.c; .d; .[bits 28 to 31]} ∈ {0} + kr8.a ∈ {0} + .b ∈ {-8} + {.c; .d; .[bits 28 to 31]} ∈ {0} + ll.b ∈ {-25536} + .[bits 16 to 31] ∈ {0} + VV ∈ {0} + X ∈ {7} + G ∈ {1} + H ∈ {0} + v.a ∈ {0} + .b ∈ {7} + .c ∈ + {{ garbled mix of &{v} + (origin: Arithmetic {tests/value/bitfield.i:120}) }} + .[bits 28 to 31] ∈ UNINITIALIZED + .d ∈ {{ &v + {9} }} + l_161{.f0; .f1[bits 0 to 31]} ∈ {-1} +[value:final-states] Values at end of function main: + h.a ∈ {0} + .b ∈ [--..--] + .c ∈ [--..--] or ESCAPINGADDR + {.d; .[bits 28 to 31]} ∈ {0} + k8.a ∈ {0} + .b ∈ {-8} + {.c; .d; .[bits 28 to 31]} ∈ {0} + kr8.a ∈ {0} + .b ∈ {-8} + {.c; .d; .[bits 28 to 31]} ∈ {0} + ll.b ∈ {-25536} + .[bits 16 to 31] ∈ {0} + VV ∈ {0} + X ∈ {7} + G ∈ {1} + H ∈ {0} + b ∈ {0} + c ∈ + {{ garbled mix of &{b; ee} + (origin: Misaligned {tests/value/bitfield.i:70}) }} + ee ∈ + {{ garbled mix of &{b} + (origin: Misaligned {tests/value/bitfield.i:70}) }} + y.v0_3 ∈ [--..--] + .v4 ∈ {0} + .v5_31 ∈ [--..--] +[from] Computing for function eq_bitfields +[from] Computing for function Frama_C_dump_each <-eq_bitfields +[from] Done for function Frama_C_dump_each +[from] Done for function eq_bitfields +[from] Computing for function f +[from] Done for function f +[from] Computing for function g +[from] Done for function g +[from] Computing for function imprecise_bts_1671 +[from] Computing for function leaf <-imprecise_bts_1671 +[from] Done for function leaf +[from] Done for function imprecise_bts_1671 +[from] Computing for function logic +[from] Done for function logic +[from] Computing for function return_8 +[from] Done for function return_8 +[from] Computing for function main_old +[from] Done for function main_old +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function eq_bitfields: + NO EFFECTS +[from] Function f: + X FROM x_0 +[from] Function g: + H FROM x.sf; us + \result FROM x.f; us +[from] Function leaf: + ee FROM ee (and SELF) +[from] Function imprecise_bts_1671: + b FROM ee{.next.next; {.bitf; .[bits 65 to 95]}}; foo (and SELF) + c FROM ee{.next.next; {.bitf; .[bits 65 to 95]}}; foo + ee{.next.next; {.bitf; .[bits 65 to 95]}} + FROM ee{.next.next; {.bitf; .[bits 65 to 95]}}; foo (and SELF) + .next.prev FROM ee{.next.next; {.bitf; .[bits 65 to 95]}}; foo +[from] Function logic: + y.v4 FROM y.v4 (and SELF) +[from] Function return_8: + \result FROM \nothing +[from] Function main_old: + h.a FROM h.a + .b FROM h{.a; .b}; foo + .c FROM \nothing + k8.b FROM \nothing + kr8.b FROM \nothing + ll.b FROM q4 + VV FROM h.a + X FROM \nothing + G FROM x.f; us + H FROM x.sf; us +[from] Function main: + h.a FROM h.a + .b FROM h{.a; .b}; foo + .c FROM \nothing + k8.b FROM \nothing + kr8.b FROM \nothing + ll.b FROM q4 + VV FROM h.a + X FROM \nothing + G FROM x.f; us + H FROM x.sf; us + b FROM ee{.next.next; {.bitf; .[bits 65 to 95]}}; foo (and SELF) + c FROM ee{.next.next; {.bitf; .[bits 65 to 95]}}; foo + ee{.next.next; {.bitf; .[bits 65 to 95]}} + FROM ee{.next.next; {.bitf; .[bits 65 to 95]}}; foo (and SELF) + .next.prev FROM ee{.next.next; {.bitf; .[bits 65 to 95]}}; foo + y.v4 FROM y.v4 (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function eq_bitfields: + i; s{.a; .c} +[inout] Inputs for function eq_bitfields: + foo +[inout] Out (internal) for function f: + X +[inout] Inputs for function f: + \nothing +[inout] Out (internal) for function g: + H; r +[inout] Inputs for function g: + x; us +[inout] Out (internal) for function imprecise_bts_1671: + b; c; ee +[inout] Inputs for function imprecise_bts_1671: + c; ee; foo +[inout] Out (internal) for function logic: + y.v4; w.v0_3; wc +[inout] Inputs for function logic: + foo; y +[inout] Out (internal) for function return_8: + __retres +[inout] Inputs for function return_8: + \nothing +[inout] Out (internal) for function main_old: + h{.a; .b; .c}; k8.b; kr8.b; ll.b; VV; X; G; H; v{{.a; .b; .c}; .d}; l_161 +[inout] Inputs for function main_old: + h{.a; .b}; VV; q4; x; us; foo +[inout] Out (internal) for function main: + h{.a; .b; .c}; k8.b; kr8.b; ll.b; VV; X; G; H; b; c; ee; y.v4 +[inout] Inputs for function main: + h{.a; .b}; VV; q4; x; us; c; ee; foo; y diff --git a/tests/value/oracle_symblocs/bitfield_assign.err.oracle b/tests/value/oracle_symblocs/bitfield_assign.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/bitfield_assign.res.oracle b/tests/value/oracle_symblocs/bitfield_assign.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..5ffdb1e9dac1c6d1918f30536252e79b12bb58a0 --- /dev/null +++ b/tests/value/oracle_symblocs/bitfield_assign.res.oracle @@ -0,0 +1,47 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/bitfield_assign.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + g_18 ∈ {0} + g_5 ∈ {0} + g_2 ∈ {0} + g_7[0]{.f0; .f1[bits 0 to 6]; .f2[bits 0 to 6]; .f3.f0[bits 0 to 6]} ∈ + {52} + [0]{.f0[bits 7 to 159]; .f1[bits 7 to 159]; .f2[bits 7 to 159]; .f3{.f0[bits 7 to 31]; .f1; .f2; .f3; .[bits 48 to 63]; .[bits 90 to 95]}} ∈ + {0} +[value] Called Frama_C_show_each({21668890}) +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + g_2 ∈ {21668890} + l_8 ∈ {1} + l_16 ∈ {3175785498} + g_7[0]{.f0; .f1[bits 0 to 6]; .f2[bits 0 to 6]; .f3.f0[bits 0 to 6]} ∈ + {52} + [0]{.f0[bits 7 to 63]; .f1[bits 7 to 63]; .f2[bits 7 to 63]; .f3{.f0[bits 7 to 31]; .f1; .[bits 48 to 63]}} ∈ + {0} + [0]{.f0[bits 64 to 89]; .f1[bits 64 to 89]; .f2[bits 64 to 89]; .f3.f2} ∈ + {21668890} + [0]{.f0[bits 90 to 159]; .f1[bits 90 to 159]; .f2[bits 90 to 159]; .f3{.f3; .[bits 90 to 95]}} ∈ + {0} + __retres ∈ {0} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + g_2 FROM g_5; g_2 + g_7[0]{.f0[bits 64 to 89]; .f1[bits 64 to 89]; .f2[bits 64 to 89]; .f3.f2} + FROM g_5 + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + g_2; l_8; l_16; + g_7[0]{.f0[bits 64 to 89]; .f1[bits 64 to 89]; .f2[bits 64 to 89]; .f3.f2}; + __retres +[inout] Inputs for function main: + g_5; g_2; + g_7[0]{.f0[bits 64 to 89]; .f1[bits 64 to 89]; .f2[bits 64 to 89]; .f3.f2} diff --git a/tests/value/oracle_symblocs/bitfield_longlong.err.oracle b/tests/value/oracle_symblocs/bitfield_longlong.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/bitfield_longlong.res.oracle b/tests/value/oracle_symblocs/bitfield_longlong.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..08e4fe2d464ab9d95753388b736b961bad639af9 --- /dev/null +++ b/tests/value/oracle_symblocs/bitfield_longlong.res.oracle @@ -0,0 +1,21 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/bitfield_longlong.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + s50.z ∈ {2} + .[bits 50 to 63] ∈ {0} + s10.z ∈ {2} + .[bits 10 to 31] ∈ {0} + u32.z ∈ {4294967295} + s32.z ∈ {-1} +[value] Called Frama_C_show_each({{ "%zu %zu %zu %zu\n" }}, {8}, {4}, {8}, {4}) +[value] Called Frama_C_show_each({{ "%d %d\n" }}, {1}, {0}) +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + x ∈ {1} + y ∈ {0} + __retres ∈ {0} diff --git a/tests/value/oracle_symblocs/bitfield_receives_result.err.oracle b/tests/value/oracle_symblocs/bitfield_receives_result.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/bitfield_receives_result.res.oracle b/tests/value/oracle_symblocs/bitfield_receives_result.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..b348c64d1ed899715a7a658365bfb5975ef8d2dc --- /dev/null +++ b/tests/value/oracle_symblocs/bitfield_receives_result.res.oracle @@ -0,0 +1,47 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/bitfield_receives_result.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + s ∈ {0} +[value] computing for function f <- main. + Called from tests/value/bitfield_receives_result.i:9. +[value] Recording results for f +[value] Done for function f +[value] DUMPING STATE of file tests/value/bitfield_receives_result.i line 10 + s.b ∈ {-1} + .[bits 31 to 31] ∈ {0} + __retres ∈ UNINITIALIZED + =END OF DUMP== +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + __retres ∈ {-1} +[value:final-states] Values at end of function main: + s.b ∈ {-1} + .[bits 31 to 31] ∈ {0} + __retres ∈ {0} +[from] Computing for function f +[from] Done for function f +[from] Computing for function main +[from] Computing for function Frama_C_dump_each <-main +[from] Done for function Frama_C_dump_each +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + \result FROM \nothing +[from] Function main: + s.b FROM \nothing + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + __retres +[inout] Inputs for function f: + \nothing +[inout] Out (internal) for function main: + s.b; __retres +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/bitwise.err.oracle b/tests/value/oracle_symblocs/bitwise.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/bitwise.res.oracle b/tests/value/oracle_symblocs/bitwise.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..34b0d2928affa5dacf542758e911304df01a3927 --- /dev/null +++ b/tests/value/oracle_symblocs/bitwise.res.oracle @@ -0,0 +1,57 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/bitwise.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + v ∈ [--..--] +[value] computing for function main_and_or_rel <- main. + Called from tests/value/bitwise.i:29. +tests/value/bitwise.i:13:[value] warning: assertion got status unknown. +[value] Recording results for main_and_or_rel +[value] Done for function main_and_or_rel +[value] computing for function main_bitwise <- main. + Called from tests/value/bitwise.i:30. +[value] Recording results for main_bitwise +[value] Done for function main_bitwise +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main_and_or_rel: + x ∈ [20..40] + r1 ∈ [17..63] or UNINITIALIZED + r2 ∈ [20..40] or UNINITIALIZED + r3 ∈ [24..37] or UNINITIALIZED +[value:final-states] Values at end of function main_bitwise: + i ∈ {5} + j ∈ {4294967290} + k ∈ {-6} +[value:final-states] Values at end of function main: + +[from] Computing for function main_and_or_rel +[from] Done for function main_and_or_rel +[from] Computing for function main_bitwise +[from] Done for function main_bitwise +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main_and_or_rel: + NO EFFECTS +[from] Function main_bitwise: + NO EFFECTS +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main_and_or_rel: + x; r1; r2; r3 +[inout] Inputs for function main_and_or_rel: + v +[inout] Out (internal) for function main_bitwise: + i; j; k +[inout] Inputs for function main_bitwise: + \nothing +[inout] Out (internal) for function main: + \nothing +[inout] Inputs for function main: + v diff --git a/tests/value/oracle_symblocs/bitwise_float.err.oracle b/tests/value/oracle_symblocs/bitwise_float.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/bitwise_float.res.oracle b/tests/value/oracle_symblocs/bitwise_float.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..b6f5d241d28643276f6c3abb16815d207c93ec88 --- /dev/null +++ b/tests/value/oracle_symblocs/bitwise_float.res.oracle @@ -0,0 +1,25 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/bitwise_float.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +tests/value/bitwise_float.c:1:[value] warning: function main: precondition got status unknown. +[value] Called Frama_C_show_each_x([1028443341..1084227584]) +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + x ∈ {0; 2} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + \result FROM a +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + x +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/bitwise_or.err.oracle b/tests/value/oracle_symblocs/bitwise_or.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/bitwise_or.res.oracle b/tests/value/oracle_symblocs/bitwise_or.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e109f8a2024c8d1b8355fc27160b1af7bd671a3d --- /dev/null +++ b/tests/value/oracle_symblocs/bitwise_or.res.oracle @@ -0,0 +1,65 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/bitwise_or.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + Frama_C_entropy_source ∈ [--..--] + or1 ∈ {0} + or2 ∈ {0} + or3 ∈ {0} + or4 ∈ {0} + or5 ∈ {0} + and1 ∈ {0} + and2 ∈ {0} + and3 ∈ {0} + and4 ∈ {0} + xor1 ∈ {0} + xor2 ∈ {0} + uand1 ∈ {0} + uand2 ∈ {0} + uand3 ∈ {0} + uand4 ∈ {0} + uand5 ∈ {0} + a ∈ {0} + b ∈ {0} + c ∈ {0} + d ∈ {0} + e ∈ {0} + s ∈ [--..--] +[value] computing for function Frama_C_interval <- main. + Called from tests/value/bitwise_or.c:13. +[value] using specification for function Frama_C_interval +share/libc/__fc_builtin.h:50:[value] function Frama_C_interval: precondition got status valid. +[value] Done for function Frama_C_interval +[value] computing for function Frama_C_interval <- main. + Called from tests/value/bitwise_or.c:14. +[value] Done for function Frama_C_interval +[value] computing for function Frama_C_interval <- main. + Called from tests/value/bitwise_or.c:15. +[value] Done for function Frama_C_interval +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + Frama_C_entropy_source ∈ [--..--] + or1 ∈ [--..--] + or2 ∈ [13..31] + or3 ∈ [--..--] + and1 ∈ [0..17] + and2 ∈ [0..17] + and3 ∈ [0..27] + xor1 ∈ [0..31] + xor2 ∈ [--..--] + uand4 ∈ [8..24] + a ∈ [3..17] + b ∈ [-3..17] + c ∈ [13..27] + i1 ∈ [0..0x1FFFE],0%2 + i2 ∈ [0..0x3FFFC],0%4 + v1 ∈ [0..0x1FFFE],0%2 + v2 ∈ [0..0x3FFFF] + mask07 ∈ {5} + mask0f ∈ {13} + mask1f ∈ {13; 29} + __retres ∈ {0} diff --git a/tests/value/oracle_symblocs/bitwise_pointer.err.oracle b/tests/value/oracle_symblocs/bitwise_pointer.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/bitwise_pointer.res.oracle b/tests/value/oracle_symblocs/bitwise_pointer.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..38604c9b4cb0468fbe333584f0823542732a932e --- /dev/null +++ b/tests/value/oracle_symblocs/bitwise_pointer.res.oracle @@ -0,0 +1,92 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/bitwise_pointer.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + t[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {2} + [3] ∈ {3} + [4] ∈ {4} + [5] ∈ {5} + [6] ∈ {6} + [7] ∈ {7} + [8] ∈ {8} + [9] ∈ {9} + [10..99] ∈ {0} + p ∈ {0} + x ∈ {0} + t1[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {2} + [3] ∈ {3} + [4] ∈ {4} + [5] ∈ {5} + [6] ∈ {6} + [7] ∈ {7} + [8] ∈ {8} + [9] ∈ {9} + [10..99] ∈ {0} + p1 ∈ {0} + x1 ∈ {0} +tests/value/bitwise_pointer.i:18:[value] Assigning imprecise value to p. + The imprecision originates from Arithmetic {tests/value/bitwise_pointer.i:18} +tests/value/bitwise_pointer.i:19:[value] warning: out of bounds write. assert \valid(p); +tests/value/bitwise_pointer.i:22:[value] Assigning imprecise value to p1. + The imprecision originates from Arithmetic {tests/value/bitwise_pointer.i:22} +tests/value/bitwise_pointer.i:23:[value] warning: out of bounds write. assert \valid(p1); +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + t[0] ∈ {0; 5} + [1] ∈ {1; 5} + [2] ∈ {2; 5} + [3] ∈ {3; 5} + [4] ∈ {4; 5} + [5] ∈ {5} + [6] ∈ {5; 6} + [7] ∈ {5; 7} + [8] ∈ {5; 8} + [9] ∈ {5; 9} + [10..99] ∈ {0; 5} + p ∈ {{ &t + [0..99] }} + x ∈ {5} + t1[0] ∈ {0; 5} + [1] ∈ {1; 5} + [2] ∈ {2; 5} + [3] ∈ {3; 5} + [4] ∈ {4; 5} + [5] ∈ {5} + [6] ∈ {5; 6} + [7] ∈ {5; 7} + [8] ∈ {5; 8} + [9] ∈ {5; 9} + [10..99] ∈ {0; 5} + p1 ∈ {{ &t1 + [0..99] }} + x1 ∈ {5} + mask ∈ {7} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + t[0..99] FROM \nothing (and SELF) + p FROM \nothing + x FROM t[0..99] + t1[0..99] FROM \nothing (and SELF) + p1 FROM \nothing + x1 FROM t1[0..99] +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + t[0..99]; p; x; t1[0..99]; p1; x1; mask +[inout] Inputs for function main: + t[0..99]; p; t1[0..99]; p1 +[inout] InOut (internal) for function main: + Operational inputs: + t[0..99]; t1[0..99] + Operational inputs on termination: + t[0..99]; t1[0..99] + Sure outputs: + p; x; p1; x1; mask diff --git a/tests/value/oracle_symblocs/bitwise_reduction.err.oracle b/tests/value/oracle_symblocs/bitwise_reduction.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/bitwise_reduction.res.oracle b/tests/value/oracle_symblocs/bitwise_reduction.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..5043db5c31d7800a9ad92a64dbc5056f1b363e0c --- /dev/null +++ b/tests/value/oracle_symblocs/bitwise_reduction.res.oracle @@ -0,0 +1,59 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/bitwise_reduction.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + v ∈ [--..--] +[value] computing for function main1 <- main. + Called from tests/value/bitwise_reduction.i:33. +tests/value/bitwise_reduction.i:10:[value] warning: assertion got status unknown. +tests/value/bitwise_reduction.i:11:[value] warning: assertion got status unknown. +tests/value/bitwise_reduction.i:14:[value] warning: accessing out of bounds index. assert 0 ≤ i; +tests/value/bitwise_reduction.i:14:[value] warning: accessing out of bounds index. assert i < 2; +[value] Called Frama_C_show_each_then1({1}, {0; 1}) +[value] Called Frama_C_show_each_else1({0; 1}, + {0x3000; 0x3001; 0x3200; 0x3201; 0xF000; + 0xFF00}) +[value] Called Frama_C_show_each_else_then1({0; 1}, + {0x3000; 0x3001; 0x3200; 0x3201; 0xF000; + 0xFF00}) +tests/value/bitwise_reduction.i:23:[value] warning: out of bounds read. assert \valid_read(p); +[value] Called Frama_C_show_each_then2({{ &t + {4} }}, {0; 1}) +[value] Called Frama_C_show_each_else2({{ &t + {0; 4} }}, + {0x3000; 0x3001; 0x3200; 0x3201; 0xF000; + 0xFF00}) +[value] Called Frama_C_show_each_else_then2({0; 1}, + {0x3000; 0x3001; 0x3200; 0x3201; 0xF000; + 0xFF00}) +[value] Recording results for main1 +[value] Done for function main1 +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main1: + t[0] ∈ {0xF000; 0xFF00} + [1] ∈ {0; 1; 0x3000; 0x3001; 0x3200; 0x3201; 0xF000} + i ∈ {0; 1} + p ∈ {{ &t{[0], [1]} }} +[value:final-states] Values at end of function main: + +[from] Computing for function main1 +[from] Done for function main1 +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main1: + NO EFFECTS +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main1: + t[0..1]; i; p +[inout] Inputs for function main1: + v +[inout] Out (internal) for function main: + \nothing +[inout] Inputs for function main: + v diff --git a/tests/value/oracle_symblocs/biz.err.oracle b/tests/value/oracle_symblocs/biz.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/biz.res.oracle b/tests/value/oracle_symblocs/biz.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..01d4b0c2713b975a482cc097ebad8335486bdae3 --- /dev/null +++ b/tests/value/oracle_symblocs/biz.res.oracle @@ -0,0 +1,28 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/biz.i (no preprocessing) +[value] Analyzing a complete application starting at f2 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + p ∈ {0} + q ∈ {0} + G ∈ {0} +[value] Recording results for f2 +[value] done for function f2 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f2: + p ∈ {{ &G + {1} }} + G[bits 0 to 7] ∈ {3} + [bits 8 to 31] ∈ {0} +[from] Computing for function f2 +[from] Done for function f2 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f2: + p FROM \nothing + G[bits 0 to 7] FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f2: + p; G[bits 0 to 7]; tmp +[inout] Inputs for function f2: + p diff --git a/tests/value/oracle_symblocs/bool.err.oracle b/tests/value/oracle_symblocs/bool.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/bool.res.oracle b/tests/value/oracle_symblocs/bool.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..81f25e92c22e0230cb9b2854f888a9e0c44fc073 --- /dev/null +++ b/tests/value/oracle_symblocs/bool.res.oracle @@ -0,0 +1,75 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/bool.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + x ∈ {0} + y ∈ {0} +[value] computing for function printf <- main. + Called from tests/value/bool.i:12. +tests/value/bool.i:12:[kernel] warning: Neither code nor specification for function printf, generating default assigns from the prototype +[value] using specification for function printf +[value] Done for function printf +[value] computing for function printf <- main. + Called from tests/value/bool.i:14. +[value] Done for function printf +[value] computing for function printf <- main. + Called from tests/value/bool.i:16. +[value] Done for function printf +[value] computing for function printf <- main. + Called from tests/value/bool.i:18. +[value] Done for function printf +[value] computing for function printf <- main. + Called from tests/value/bool.i:20. +[value] Done for function printf +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + x ∈ {1} + y ∈ {2} +[from] Computing for function main +[from] Computing for function printf <-main +[from] Done for function printf +tests/value/bool.i:12:[from] warning: variadic call detected. Using only 1 argument(s). +tests/value/bool.i:14:[from] warning: variadic call detected. Using only 1 argument(s). +tests/value/bool.i:16:[from] warning: variadic call detected. Using only 1 argument(s). +tests/value/bool.i:18:[from] warning: variadic call detected. Using only 1 argument(s). +tests/value/bool.i:20:[from] warning: variadic call detected. Using only 1 argument(s). +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function printf: + NO EFFECTS +[from] Function main: + x FROM \nothing + y FROM \nothing + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + x; y +[inout] Inputs for function main: + x; y +/* Generated by Frama-C */ +/*@ assigns \nothing; */ +extern void printf(char const * , ...); + +_Bool x; +int y; +int main(void) +{ + x = (_Bool)0; + printf("%d\n",(int)x); + x = (_Bool)1; + printf("%d\n",(int)x); + y = (int)x + 1; + printf("%d,%d\n",(int)x,y); + x = (_Bool)((int)x + 1 != 0); + printf("%d\n",(int)x); + x = (_Bool)((int)x + 1 != 0); + printf("%d\n",(int)x); + return y; +} + + diff --git a/tests/value/oracle_symblocs/branch.err.oracle b/tests/value/oracle_symblocs/branch.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/branch.res.oracle b/tests/value/oracle_symblocs/branch.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..4ec1e021c3f3dc3813b27d92dde666f3fa0d833f --- /dev/null +++ b/tests/value/oracle_symblocs/branch.res.oracle @@ -0,0 +1,28 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/branch.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + a ∈ {0} + b ∈ {0} + c ∈ {0} + d ∈ {0} + e ∈ {0} +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + NON TERMINATING FUNCTION +[from] Computing for function main +[from] Non-terminating function main (no dependencies) +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NON TERMINATING - NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + a; b +[inout] Inputs for function main: + c diff --git a/tests/value/oracle_symblocs/branch2.err.oracle b/tests/value/oracle_symblocs/branch2.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/branch2.res.oracle b/tests/value/oracle_symblocs/branch2.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..b0e246f5919bf9b3073c3b6bd264959f6314d5a9 --- /dev/null +++ b/tests/value/oracle_symblocs/branch2.res.oracle @@ -0,0 +1,31 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/branch2.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + i ∈ {0} + etat_to ∈ {0} + changepage ∈ {0} + plein ∈ {0} + NumFonct ∈ {0} + NumSsPage ∈ {0} +tests/value/branch2.i:14:[value] entering loop for the first time +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + plein ∈ {1} + NumSsPage ∈ {9} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + plein FROM \nothing + NumSsPage FROM NumSsPage (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + plein; NumSsPage +[inout] Inputs for function main: + changepage; NumSsPage diff --git a/tests/value/oracle_symblocs/broken_loop.err.oracle b/tests/value/oracle_symblocs/broken_loop.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/broken_loop.res.oracle b/tests/value/oracle_symblocs/broken_loop.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..bc6a2acb2832765502fddbda6115ad6755fa5d66 --- /dev/null +++ b/tests/value/oracle_symblocs/broken_loop.res.oracle @@ -0,0 +1,23 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/broken_loop.i (no preprocessing) +[value] Analyzing a complete application starting at loop +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + X ∈ {0} +[value] Recording results for loop +[value] done for function loop +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function loop: + X ∈ {2} +[from] Computing for function loop +[from] Done for function loop +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function loop: + X FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function loop: + X +[inout] Inputs for function loop: + \nothing diff --git a/tests/value/oracle_symblocs/bts0506.0.err.oracle b/tests/value/oracle_symblocs/bts0506.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/bts0506.0.res.oracle b/tests/value/oracle_symblocs/bts0506.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..3ae0e1ef1df8a99ea07be152f7a3c3aa96554a7a --- /dev/null +++ b/tests/value/oracle_symblocs/bts0506.0.res.oracle @@ -0,0 +1,309 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/bts0506.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] computing for function f <- main. + Called from tests/value/bts0506.i:47. +[value] Recording results for f +[value] Done for function f +[value] computing for function main2 <- main. + Called from tests/value/bts0506.i:49. +[value] computing for function f1 <- main2 <- main. + Called from tests/value/bts0506.i:15. +tests/value/bts0506.i:15:[kernel] warning: Neither code nor specification for function f1, generating default assigns from the prototype +[value] using specification for function f1 +[value] Done for function f1 +[value] computing for function f1 <- main2 <- main. + Called from tests/value/bts0506.i:16. +[value] Done for function f1 +[value] computing for function f1 <- main2 <- main. + Called from tests/value/bts0506.i:17. +[value] Done for function f1 +[value] computing for function f1 <- main2 <- main. + Called from tests/value/bts0506.i:18. +[value] Done for function f1 +[value] computing for function f2 <- main2 <- main. + Called from tests/value/bts0506.i:20. +tests/value/bts0506.i:20:[kernel] warning: Neither code nor specification for function f2, generating default assigns from the prototype +[value] using specification for function f2 +[value] Done for function f2 +[value] computing for function f2 <- main2 <- main. + Called from tests/value/bts0506.i:21. +[value] Done for function f2 +[value] computing for function f2 <- main2 <- main. + Called from tests/value/bts0506.i:22. +[value] Done for function f2 +[value] computing for function f3 <- main2 <- main. + Called from tests/value/bts0506.i:24. +tests/value/bts0506.i:24:[kernel] warning: Neither code nor specification for function f3, generating default assigns from the prototype +[value] using specification for function f3 +[value] Done for function f3 +[value] computing for function f3 <- main2 <- main. + Called from tests/value/bts0506.i:25. +[value] Done for function f3 +[value] computing for function f4 <- main2 <- main. + Called from tests/value/bts0506.i:27. +tests/value/bts0506.i:27:[kernel] warning: Neither code nor specification for function f4, generating default assigns from the prototype +[value] using specification for function f4 +[value] Done for function f4 +tests/value/bts0506.i:27:[value] warning: non-finite float value. assert \is_finite(tmp_8); + (tmp_8 from f4()) +[value] computing for function f4 <- main2 <- main. + Called from tests/value/bts0506.i:28. +[value] Done for function f4 +tests/value/bts0506.i:28:[value] warning: non-finite float value. assert \is_finite(tmp_9); + (tmp_9 from f4()) +[value] computing for function f5 <- main2 <- main. + Called from tests/value/bts0506.i:30. +tests/value/bts0506.i:30:[kernel] warning: Neither code nor specification for function f5, generating default assigns from the prototype +[value] using specification for function f5 +[value] Done for function f5 +tests/value/bts0506.i:30:[value] warning: non-finite double value. assert \is_finite(tmp_10); + (tmp_10 from f5()) +tests/value/bts0506.i:30:[value] warning: non-finite float value. assert \is_finite((float)tmp_10); + (tmp_10 from f5()) +[value] computing for function f5 <- main2 <- main. + Called from tests/value/bts0506.i:31. +[value] Done for function f5 +tests/value/bts0506.i:31:[value] warning: non-finite double value. assert \is_finite(tmp_11); + (tmp_11 from f5()) +[value] computing for function f6 <- main2 <- main. + Called from tests/value/bts0506.i:33. +tests/value/bts0506.i:33:[kernel] warning: Neither code nor specification for function f6, generating default assigns from the prototype +[value] using specification for function f6 +[value] Done for function f6 +[value] computing for function f6 <- main2 <- main. + Called from tests/value/bts0506.i:34. +[value] Done for function f6 +[value] computing for function f6 <- main2 <- main. + Called from tests/value/bts0506.i:35. +[value] Done for function f6 +[value] computing for function f7 <- main2 <- main. + Called from tests/value/bts0506.i:37. +tests/value/bts0506.i:37:[kernel] warning: Neither code nor specification for function f7, generating default assigns from the prototype +[value] using specification for function f7 +[value] Done for function f7 +[value] computing for function f7 <- main2 <- main. + Called from tests/value/bts0506.i:38. +[value] Done for function f7 +[value] Recording results for main2 +[value] Done for function main2 +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + __retres ∈ {43} +[value:final-states] Values at end of function main2: + r1 ∈ [--..--] + r2 ∈ [--..--] + r3 ∈ [--..--] + r4 ∈ [--..--] + r5 ∈ [--..--] + r6 ∈ [--..--] + r7 ∈ [--..--] + r8 ∈ [--..--] + r8bis ∈ [--..--] + r9 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + r10 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + r11 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + r12 ∈ [-1.79769313486e+308 .. 1.79769313486e+308] + r13 ∈ {{ NULL + [--..--] ; &alloced_return_f6 + [0..2147483644],0%4 }} + r14 ∈ {{ NULL + [--..--] ; &alloced_return_f6 + [0..2147483644],0%4 }} + r15 ∈ {{ NULL + [--..--] ; &alloced_return_f6 + [0..2147483644],0%4 }} + r16 ∈ {{ NULL + [--..--] ; &alloced_return_f7 + [0..2147483647] }} + r17 ∈ {{ NULL + [--..--] ; &alloced_return_f7 + [0..2147483647] }} +[value:final-states] Values at end of function main: + x ∈ {43} +[from] Computing for function f +[from] Done for function f +[from] Computing for function main2 +[from] Computing for function f1 <-main2 +[from] Done for function f1 +[from] Computing for function f2 <-main2 +[from] Done for function f2 +[from] Computing for function f3 <-main2 +[from] Done for function f3 +[from] Computing for function f4 <-main2 +[from] Done for function f4 +[from] Computing for function f5 <-main2 +[from] Done for function f5 +[from] Computing for function f6 <-main2 +[from] Done for function f6 +[from] Computing for function f7 <-main2 +[from] Done for function f7 +[from] Done for function main2 +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + \result FROM x +[from] Function f1: + \result FROM \nothing +[from] Function f2: + \result FROM \nothing +[from] Function f3: + \result FROM \nothing +[from] Function f4: + \result FROM \nothing +[from] Function f5: + \result FROM \nothing +[from] Function f6: + \result FROM \nothing +[from] Function f7: + \result FROM \nothing +[from] Function main2: + NO EFFECTS +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + __retres +[inout] Inputs for function f: + \nothing +[inout] Out (internal) for function main2: + r1; tmp; r2; tmp_0; r3; tmp_1; r4; tmp_2; r5; tmp_3; r6; tmp_4; r7; + tmp_5; r8; tmp_6; r8bis; tmp_7; r9; tmp_8; r10; tmp_9; r11; tmp_10; + r12; tmp_11; r13; tmp_12; r14; tmp_13; r15; tmp_14; r16; tmp_15; r17; + tmp_16 +[inout] Inputs for function main2: + \nothing +[inout] Out (internal) for function main: + x; tmp +[inout] Inputs for function main: + \nothing +/* Generated by Frama-C */ +/*@ assigns \result; + assigns \result \from \nothing; */ +extern int f1(); + +/*@ assigns \result; + assigns \result \from \nothing; */ +extern long f2(); + +/*@ assigns \result; + assigns \result \from \nothing; */ +extern unsigned int f3(); + +/*@ assigns \result; + assigns \result \from \nothing; */ +extern float f4(); + +/*@ assigns \result; + assigns \result \from \nothing; */ +extern double f5(); + +/*@ assigns \result; + assigns \result \from \nothing; */ +extern int *f6(); + +/*@ assigns \result; + assigns \result \from \nothing; */ +extern void *f7(); + +void main2(void) +{ + long r1; + int tmp; + short r2; + int tmp_0; + int r3; + int tmp_1; + unsigned int r4; + int tmp_2; + long r5; + long tmp_3; + int r6; + long tmp_4; + unsigned long r7; + long tmp_5; + unsigned int r8; + unsigned int tmp_6; + int r8bis; + unsigned int tmp_7; + float r9; + float tmp_8; + double r10; + float tmp_9; + float r11; + double tmp_10; + double r12; + double tmp_11; + void *r13; + int *tmp_12; + int *r14; + int *tmp_13; + char *r15; + int *tmp_14; + void *r16; + void *tmp_15; + int *r17; + void *tmp_16; + tmp = f1(); + r1 = (long)tmp; + tmp_0 = f1(); + r2 = (short)tmp_0; + tmp_1 = f1(); + r3 = tmp_1; + tmp_2 = f1(); + r4 = (unsigned int)tmp_2; + tmp_3 = f2(); + r5 = tmp_3; + tmp_4 = f2(); + r6 = (int)tmp_4; + tmp_5 = f2(); + r7 = (unsigned long)tmp_5; + tmp_6 = f3(); + r8 = tmp_6; + tmp_7 = f3(); + r8bis = (int)tmp_7; + tmp_8 = f4(); + /*@ assert Value: is_nan_or_infinite: \is_finite(tmp_8); */ + r9 = tmp_8; + tmp_9 = f4(); + /*@ assert Value: is_nan_or_infinite: \is_finite(tmp_9); */ + r10 = (double)tmp_9; + tmp_10 = f5(); + /*@ assert Value: is_nan_or_infinite: \is_finite(tmp_10); */ + /*@ assert Value: is_nan_or_infinite: \is_finite((float)tmp_10); */ + r11 = (float)tmp_10; + tmp_11 = f5(); + /*@ assert Value: is_nan_or_infinite: \is_finite(tmp_11); */ + r12 = tmp_11; + tmp_12 = f6(); + r13 = (void *)tmp_12; + tmp_13 = f6(); + r14 = tmp_13; + tmp_14 = f6(); + r15 = (char *)tmp_14; + tmp_15 = f7(); + r16 = tmp_15; + tmp_16 = f7(); + r17 = (int *)tmp_16; + return; +} + +int f(int x) +{ + int __retres; + __retres = x + 1; + return __retres; +} + +void main(void) +{ + short x; + int tmp; + x = (short)4; + { /* sequence */ + tmp = f(42); + x = (short)tmp; + } + main2(); + return; +} + + diff --git a/tests/value/oracle_symblocs/bts0506.1.err.oracle b/tests/value/oracle_symblocs/bts0506.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/bts0506.1.res.oracle b/tests/value/oracle_symblocs/bts0506.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..bd9ed2eb7968270073b2b8fdd4e659f3af3b9e40 --- /dev/null +++ b/tests/value/oracle_symblocs/bts0506.1.res.oracle @@ -0,0 +1,273 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/bts0506.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] computing for function f <- main. + Called from tests/value/bts0506.i:47. +[value] Recording results for f +[value] Done for function f +[value] computing for function main2 <- main. + Called from tests/value/bts0506.i:49. +[value] computing for function f1 <- main2 <- main. + Called from tests/value/bts0506.i:15. +tests/value/bts0506.i:15:[kernel] warning: Neither code nor specification for function f1, generating default assigns from the prototype +[value] using specification for function f1 +[value] Done for function f1 +[value] computing for function f1 <- main2 <- main. + Called from tests/value/bts0506.i:16. +[value] Done for function f1 +[value] computing for function f1 <- main2 <- main. + Called from tests/value/bts0506.i:17. +[value] Done for function f1 +[value] computing for function f1 <- main2 <- main. + Called from tests/value/bts0506.i:18. +[value] Done for function f1 +[value] computing for function f2 <- main2 <- main. + Called from tests/value/bts0506.i:20. +tests/value/bts0506.i:20:[kernel] warning: Neither code nor specification for function f2, generating default assigns from the prototype +[value] using specification for function f2 +[value] Done for function f2 +[value] computing for function f2 <- main2 <- main. + Called from tests/value/bts0506.i:21. +[value] Done for function f2 +[value] computing for function f2 <- main2 <- main. + Called from tests/value/bts0506.i:22. +[value] Done for function f2 +[value] computing for function f3 <- main2 <- main. + Called from tests/value/bts0506.i:24. +tests/value/bts0506.i:24:[kernel] warning: Neither code nor specification for function f3, generating default assigns from the prototype +[value] using specification for function f3 +[value] Done for function f3 +[value] computing for function f3 <- main2 <- main. + Called from tests/value/bts0506.i:25. +[value] Done for function f3 +[value] computing for function f4 <- main2 <- main. + Called from tests/value/bts0506.i:27. +tests/value/bts0506.i:27:[kernel] warning: Neither code nor specification for function f4, generating default assigns from the prototype +[value] using specification for function f4 +[value] Done for function f4 +[value] computing for function f4 <- main2 <- main. + Called from tests/value/bts0506.i:28. +[value] Done for function f4 +tests/value/bts0506.i:28:[kernel] warning: non-finite float value being returned: assert(\is_finite(\returned_value)) +[value] computing for function f5 <- main2 <- main. + Called from tests/value/bts0506.i:30. +tests/value/bts0506.i:30:[kernel] warning: Neither code nor specification for function f5, generating default assigns from the prototype +[value] using specification for function f5 +[value] Done for function f5 +tests/value/bts0506.i:30:[value] warning: non-finite double value. assert \is_finite(tmp_10); + (tmp_10 from f5()) +tests/value/bts0506.i:30:[value] warning: non-finite float value. assert \is_finite((float)tmp_10); + (tmp_10 from f5()) +[value] computing for function f5 <- main2 <- main. + Called from tests/value/bts0506.i:31. +[value] Done for function f5 +[value] computing for function f6 <- main2 <- main. + Called from tests/value/bts0506.i:33. +tests/value/bts0506.i:33:[kernel] warning: Neither code nor specification for function f6, generating default assigns from the prototype +[value] using specification for function f6 +[value] Done for function f6 +[value] computing for function f6 <- main2 <- main. + Called from tests/value/bts0506.i:34. +[value] Done for function f6 +[value] computing for function f6 <- main2 <- main. + Called from tests/value/bts0506.i:35. +[value] Done for function f6 +[value] computing for function f7 <- main2 <- main. + Called from tests/value/bts0506.i:37. +tests/value/bts0506.i:37:[kernel] warning: Neither code nor specification for function f7, generating default assigns from the prototype +[value] using specification for function f7 +[value] Done for function f7 +[value] computing for function f7 <- main2 <- main. + Called from tests/value/bts0506.i:38. +[value] Done for function f7 +[value] Recording results for main2 +[value] Done for function main2 +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + __retres ∈ {43} +[value:final-states] Values at end of function main2: + r1 ∈ [--..--] + r2 ∈ [--..--] + r3 ∈ [--..--] + r4 ∈ [--..--] + r5 ∈ [--..--] + r6 ∈ [--..--] + r7 ∈ [--..--] + r8 ∈ [--..--] + r8bis ∈ [--..--] + r9 ∈ [--..--] + r10 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + r11 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + r12 ∈ [--..--] + r13 ∈ {{ NULL + [--..--] ; &alloced_return_f6 + [0..2147483644],0%4 }} + r14 ∈ {{ NULL + [--..--] ; &alloced_return_f6 + [0..2147483644],0%4 }} + r15 ∈ {{ NULL + [--..--] ; &alloced_return_f6 + [0..2147483644],0%4 }} + r16 ∈ {{ NULL + [--..--] ; &alloced_return_f7 + [0..2147483647] }} + r17 ∈ {{ NULL + [--..--] ; &alloced_return_f7 + [0..2147483647] }} +[value:final-states] Values at end of function main: + x ∈ {43} +[from] Computing for function f +[from] Done for function f +[from] Computing for function main2 +[from] Computing for function f1 <-main2 +[from] Done for function f1 +[from] Computing for function f2 <-main2 +[from] Done for function f2 +[from] Computing for function f3 <-main2 +[from] Done for function f3 +[from] Computing for function f4 <-main2 +[from] Done for function f4 +[from] Computing for function f5 <-main2 +[from] Done for function f5 +[from] Computing for function f6 <-main2 +[from] Done for function f6 +[from] Computing for function f7 <-main2 +[from] Done for function f7 +[from] Done for function main2 +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + \result FROM x +[from] Function f1: + \result FROM \nothing +[from] Function f2: + \result FROM \nothing +[from] Function f3: + \result FROM \nothing +[from] Function f4: + \result FROM \nothing +[from] Function f5: + \result FROM \nothing +[from] Function f6: + \result FROM \nothing +[from] Function f7: + \result FROM \nothing +[from] Function main2: + NO EFFECTS +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + __retres +[inout] Inputs for function f: + \nothing +[inout] Out (internal) for function main2: + r1; r2; tmp_0; r3; r4; tmp_2; r5; r6; r7; tmp_5; r8; r8bis; tmp_7; + r9; r10; r11; tmp_10; r12; r13; r14; r15; r16; r17 +[inout] Inputs for function main2: + \nothing +[inout] Out (internal) for function main: + x; tmp +[inout] Inputs for function main: + \nothing +/* Generated by Frama-C */ +/*@ assigns \result; + assigns \result \from \nothing; */ +extern int f1(); + +/*@ assigns \result; + assigns \result \from \nothing; */ +extern long f2(); + +/*@ assigns \result; + assigns \result \from \nothing; */ +extern unsigned int f3(); + +/*@ assigns \result; + assigns \result \from \nothing; */ +extern float f4(); + +/*@ assigns \result; + assigns \result \from \nothing; */ +extern double f5(); + +/*@ assigns \result; + assigns \result \from \nothing; */ +extern int *f6(); + +/*@ assigns \result; + assigns \result \from \nothing; */ +extern void *f7(); + +void main2(void) +{ + long r1; + short r2; + int tmp_0; + int r3; + unsigned int r4; + int tmp_2; + long r5; + int r6; + unsigned long r7; + long tmp_5; + unsigned int r8; + int r8bis; + unsigned int tmp_7; + float r9; + double r10; + float r11; + double tmp_10; + double r12; + void *r13; + int *r14; + char *r15; + void *r16; + int *r17; + r1 = (long)f1(); + tmp_0 = f1(); + r2 = (short)tmp_0; + r3 = f1(); + tmp_2 = f1(); + r4 = (unsigned int)tmp_2; + r5 = f2(); + r6 = (int)f2(); + tmp_5 = f2(); + r7 = (unsigned long)tmp_5; + r8 = f3(); + tmp_7 = f3(); + r8bis = (int)tmp_7; + r9 = f4(); + r10 = (double)f4(); + tmp_10 = f5(); + /*@ assert Value: is_nan_or_infinite: \is_finite(tmp_10); */ + /*@ assert Value: is_nan_or_infinite: \is_finite((float)tmp_10); */ + r11 = (float)tmp_10; + r12 = f5(); + r13 = (void *)f6(); + r14 = f6(); + r15 = (char *)f6(); + r16 = f7(); + r17 = (int *)f7(); + return; +} + +int f(int x) +{ + int __retres; + __retres = x + 1; + return __retres; +} + +void main(void) +{ + short x; + int tmp; + x = (short)4; + { /* sequence */ + tmp = f(42); + x = (short)tmp; + } + main2(); + return; +} + + diff --git a/tests/value/oracle_symblocs/bts0775.err.oracle b/tests/value/oracle_symblocs/bts0775.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/bts0775.res.oracle b/tests/value/oracle_symblocs/bts0775.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..75936640caeb9219c6c44c509fac3b67f51587c4 --- /dev/null +++ b/tests/value/oracle_symblocs/bts0775.res.oracle @@ -0,0 +1,23 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/bts0775.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + r ∈ {1} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + r +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/bts0858.err.oracle b/tests/value/oracle_symblocs/bts0858.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/bts0858.res.oracle b/tests/value/oracle_symblocs/bts0858.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..ed9014c6cfaba7d27bd3cb39df9b0bf4fdf793fe --- /dev/null +++ b/tests/value/oracle_symblocs/bts0858.res.oracle @@ -0,0 +1,24 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/bts0858.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + tmp ∈ {4294967295} + __retres ∈ {1} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + tmp; __retres +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/bts1306.err.oracle b/tests/value/oracle_symblocs/bts1306.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/bts1306.res.oracle b/tests/value/oracle_symblocs/bts1306.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..8c8e3bf1a84500a606fad329cb5ff90f544ef085 --- /dev/null +++ b/tests/value/oracle_symblocs/bts1306.res.oracle @@ -0,0 +1,72 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/bts1306.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] computing for function g <- main. + Called from tests/value/bts1306.i:9. +tests/value/bts1306.i:5:[value] warning: non-finite double value. assert \is_finite((double)(x*x)); +[value] Recording results for g +[value] Done for function g +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function g: + y ∈ [-1.79769313486e+308 .. 1.79769313486e+308] +[value:final-states] Values at end of function main: + __retres ∈ {0} +/* Generated by Frama-C */ +void g(double x) +{ + double y; + /*@ assert Value: is_nan_or_infinite: \is_finite((double)(x*x)); */ + y = x * x; + return; +} + +int main(double x) +{ + int __retres; + g(x); + __retres = 0; + return __retres; +} + + +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] computing for function g <- main. + Called from tests/value/bts1306.i:9. +tests/value/bts1306.i:5:[value] warning: non-finite double value. assert \is_finite((double)(x*x)); +[value] Recording results for g +[value] Done for function g +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function g: + y ∈ [-1.79769313486e+308 .. 1.79769313486e+308] +[value:final-states] Values at end of function main: + __retres ∈ {0} +/* Generated by Frama-C */ +void g(double x) +{ + double y; + /*@ assert Value: is_nan_or_infinite: \is_finite((double)(x*x)); */ + y = x * x; + return; +} + +int main(double x) +{ + int __retres; + g(x); + __retres = 0; + return __retres; +} + + diff --git a/tests/value/oracle_symblocs/buffer_overflow.0.err.oracle b/tests/value/oracle_symblocs/buffer_overflow.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/buffer_overflow.0.res.oracle b/tests/value/oracle_symblocs/buffer_overflow.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..12d5294b8375b0fe3d85a070424a076d4441fe66 --- /dev/null +++ b/tests/value/oracle_symblocs/buffer_overflow.0.res.oracle @@ -0,0 +1,26 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/buffer_overflow.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +tests/value/buffer_overflow.i:15:[value] entering loop for the first time +tests/value/buffer_overflow.i:18:[value] warning: accessing out of bounds index. assert loop_counter < 10; +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + NON TERMINATING FUNCTION +[from] Computing for function main +[from] Non-terminating function main (no dependencies) +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NON TERMINATING - NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + test_value; loop_counter; buf[1..9] +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/buffer_overflow.1.err.oracle b/tests/value/oracle_symblocs/buffer_overflow.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/buffer_overflow.1.res.oracle b/tests/value/oracle_symblocs/buffer_overflow.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..08cab798e5370257c7fac3d5b26cc51a7e010fa1 --- /dev/null +++ b/tests/value/oracle_symblocs/buffer_overflow.1.res.oracle @@ -0,0 +1,27 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/buffer_overflow.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +tests/value/buffer_overflow.i:18:[value] warning: accessing out of bounds index. assert loop_counter < 10; +tests/value/buffer_overflow.i:18:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +[value] Recording results for main +[value] done for function main +tests/value/buffer_overflow.i:18:[value] assertion 'Value,index_bound' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + NON TERMINATING FUNCTION +[from] Computing for function main +[from] Non-terminating function main (no dependencies) +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NON TERMINATING - NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + test_value; loop_counter; buf[1..9] +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/bug.err.oracle b/tests/value/oracle_symblocs/bug.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/bug.res.oracle b/tests/value/oracle_symblocs/bug.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..6f07f10e0d1192ef846f94619391fd1792e290d3 --- /dev/null +++ b/tests/value/oracle_symblocs/bug.res.oracle @@ -0,0 +1,23 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/bug.i (no preprocessing) +[value] Analyzing a complete application starting at f +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] Recording results for f +[value] done for function f +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + +[from] Computing for function f +[from] Done for function f +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + \nothing +[inout] Inputs for function f: + \nothing diff --git a/tests/value/oracle_symblocs/bug0196.err.oracle b/tests/value/oracle_symblocs/bug0196.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/bug0196.res.oracle b/tests/value/oracle_symblocs/bug0196.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..11687b25994c45b1437413f5e5a0ef371f51229b --- /dev/null +++ b/tests/value/oracle_symblocs/bug0196.res.oracle @@ -0,0 +1,73 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/bug0196.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] computing for function fact <- main. + Called from tests/value/bug0196.c:16. +tests/value/bug0196.c:7:[value] entering loop for the first time +tests/value/bug0196.c:8:[value] assertion got status valid. +tests/value/bug0196.c:11:[value] cannot evaluate ACSL term, \at() on a C label is unsupported +tests/value/bug0196.c:11:[value] warning: assertion got status unknown. +tests/value/bug0196.c:10:[value] warning: signed overflow. assert r*tmp ≤ 2147483647; + (tmp from n--) +[value] Recording results for fact +[value] Done for function fact +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function fact: + n ∈ {0} + r ∈ [1..2147483647] +[value:final-states] Values at end of function main: + +[from] Computing for function fact +[from] Done for function fact +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function fact: + \result FROM n +[from] Function main: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function fact: + n; r; tmp +[inout] Inputs for function fact: + \nothing +[inout] Out (internal) for function main: + tmp +[inout] Inputs for function main: + \nothing +/* Generated by Frama-C */ +int fact(int n) +{ + int r; + r = 1; + while (n > 0) { + int tmp; + /*@ assert n > 0; */ ; + before: + { /* sequence */ + tmp = n; + n --; + /*@ assert Value: signed_overflow: r*tmp ≤ 2147483647; */ + r *= tmp; + } + /*@ assert r ≡ \at(r*n,before); */ ; + } + while_0_break: ; + return r; +} + +int main(void) +{ + int tmp; + tmp = fact(3); + return tmp; +} + + diff --git a/tests/value/oracle_symblocs/bug0223.0.err.oracle b/tests/value/oracle_symblocs/bug0223.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/bug0223.0.res.oracle b/tests/value/oracle_symblocs/bug0223.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..7da840723dd4cd2032ec7df143618b72dbd9c2e7 --- /dev/null +++ b/tests/value/oracle_symblocs/bug0223.0.res.oracle @@ -0,0 +1,65 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/bug0223.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + ch1 ∈ {{ NULL ; &S_ch1[0] }} + ch2 ∈ {{ NULL ; &S_ch2[0] }} + S_ch1[0..1] ∈ [--..--] + S_ch2[0..1] ∈ [--..--] +[value] computing for function F <- main. + Called from tests/value/bug0223.i:33. +tests/value/bug0223.i:33:[kernel] warning: Neither code nor specification for function F, generating default assigns from the prototype +[value] using specification for function F +[value] Done for function F +[value] computing for function F <- main. + Called from tests/value/bug0223.i:34. +[value] Done for function F +[value] computing for function h2 <- main. + Called from tests/value/bug0223.i:35. +[value] computing for function my_strcnmp <- h2 <- main. + Called from tests/value/bug0223.i:16. +tests/value/bug0223.i:16:[kernel] warning: Neither code nor specification for function my_strcnmp, generating default assigns from the prototype +[value] using specification for function my_strcnmp +[value] Done for function my_strcnmp +[value] Recording results for h2 +[value] Done for function h2 +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function h2: + test ∈ {0; 1} +[value:final-states] Values at end of function main: + i ∈ {0} + j ∈ {0; 1} + k ∈ {0} + l ∈ {0; 1} + p ∈ {{ &j }} +[from] Computing for function h2 +[from] Computing for function my_strcnmp <-h2 +[from] Done for function my_strcnmp +[from] Done for function h2 +[from] Computing for function main +[from] Computing for function F <-main +[from] Done for function F +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function F: + \result FROM \nothing +[from] Function my_strcnmp: + \result FROM n +[from] Function h2: + NO EFFECTS +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function h2: + test; tmp +[inout] Inputs for function h2: + ch1; ch2 +[inout] Out (internal) for function main: + i; j; k; l; p; tmp; tmp_0 +[inout] Inputs for function main: + ch1; ch2 diff --git a/tests/value/oracle_symblocs/bug0223.1.err.oracle b/tests/value/oracle_symblocs/bug0223.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/bug0223.1.res.oracle b/tests/value/oracle_symblocs/bug0223.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..7da840723dd4cd2032ec7df143618b72dbd9c2e7 --- /dev/null +++ b/tests/value/oracle_symblocs/bug0223.1.res.oracle @@ -0,0 +1,65 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/bug0223.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + ch1 ∈ {{ NULL ; &S_ch1[0] }} + ch2 ∈ {{ NULL ; &S_ch2[0] }} + S_ch1[0..1] ∈ [--..--] + S_ch2[0..1] ∈ [--..--] +[value] computing for function F <- main. + Called from tests/value/bug0223.i:33. +tests/value/bug0223.i:33:[kernel] warning: Neither code nor specification for function F, generating default assigns from the prototype +[value] using specification for function F +[value] Done for function F +[value] computing for function F <- main. + Called from tests/value/bug0223.i:34. +[value] Done for function F +[value] computing for function h2 <- main. + Called from tests/value/bug0223.i:35. +[value] computing for function my_strcnmp <- h2 <- main. + Called from tests/value/bug0223.i:16. +tests/value/bug0223.i:16:[kernel] warning: Neither code nor specification for function my_strcnmp, generating default assigns from the prototype +[value] using specification for function my_strcnmp +[value] Done for function my_strcnmp +[value] Recording results for h2 +[value] Done for function h2 +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function h2: + test ∈ {0; 1} +[value:final-states] Values at end of function main: + i ∈ {0} + j ∈ {0; 1} + k ∈ {0} + l ∈ {0; 1} + p ∈ {{ &j }} +[from] Computing for function h2 +[from] Computing for function my_strcnmp <-h2 +[from] Done for function my_strcnmp +[from] Done for function h2 +[from] Computing for function main +[from] Computing for function F <-main +[from] Done for function F +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function F: + \result FROM \nothing +[from] Function my_strcnmp: + \result FROM n +[from] Function h2: + NO EFFECTS +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function h2: + test; tmp +[inout] Inputs for function h2: + ch1; ch2 +[inout] Out (internal) for function main: + i; j; k; l; p; tmp; tmp_0 +[inout] Inputs for function main: + ch1; ch2 diff --git a/tests/value/oracle_symblocs/bug0245.err.oracle b/tests/value/oracle_symblocs/bug0245.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/bug0245.res.oracle b/tests/value/oracle_symblocs/bug0245.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..9ac06d94e55af1405703e0dcc39cd76af23e96e7 --- /dev/null +++ b/tests/value/oracle_symblocs/bug0245.res.oracle @@ -0,0 +1,42 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/bug0245.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + R ∈ {0} + p ∈ {0} + S ∈ {0} + q ∈ {0} +tests/value/bug0245.i:20:[value] warning: locals {u} escaping the scope of a block of main through p +tests/value/bug0245.i:20:[value] warning: locals {v} escaping the scope of a block of main through q +tests/value/bug0245.i:23:[value] warning: accessing left-value that contains escaping addresses. + assert ¬\dangling(&p); +tests/value/bug0245.i:24:[value] warning: accessing left-value that contains escaping addresses. + assert ¬\dangling(&q); +[value] Recording results for main +[value] done for function main +tests/value/bug0245.i:23:[value] assertion 'Value,dangling_pointer' got final status invalid. +tests/value/bug0245.i:24:[value] assertion 'Value,dangling_pointer' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + R ∈ {0} + p ∈ ESCAPINGADDR + S ∈ {0} + q ∈ ESCAPINGADDR + a ∈ {2} + i ∈ {2} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + R FROM c (and SELF) + p FROM \nothing + S FROM d (and SELF) + q FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + R; p; S; q; a; i; u; v +[inout] Inputs for function main: + p; q diff --git a/tests/value/oracle_symblocs/bug_023.err.oracle b/tests/value/oracle_symblocs/bug_023.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/bug_023.res.oracle b/tests/value/oracle_symblocs/bug_023.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..fbd66596ce2805a996d669f26517a1af5fee808e --- /dev/null +++ b/tests/value/oracle_symblocs/bug_023.res.oracle @@ -0,0 +1,35 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/bug_023.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + i ∈ {0} + x ∈ {0} +[value] computing for function f <- main. + Called from tests/value/bug_023.i:8. +tests/value/bug_023.i:8:[kernel] warning: Neither code nor specification for function f, generating default assigns from the prototype +[value] using specification for function f +[value] Done for function f +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + i ∈ [--..--] + __retres ∈ {0} +[from] Computing for function main +[from] Computing for function f <-main +[from] Done for function f +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + \result FROM \nothing +[from] Function main: + i FROM i + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + i; tmp; __retres +[inout] Inputs for function main: + i diff --git a/tests/value/oracle_symblocs/bug_0244.err.oracle b/tests/value/oracle_symblocs/bug_0244.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/bug_0244.res.oracle b/tests/value/oracle_symblocs/bug_0244.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..fc3aae490e74eca5482e56fbb913dc6743a67bc5 --- /dev/null +++ b/tests/value/oracle_symblocs/bug_0244.res.oracle @@ -0,0 +1,31 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/bug_0244.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + R ∈ {0} + p ∈ {0} +tests/value/bug_0244.i:7:[value] entering loop for the first time +tests/value/bug_0244.i:10:[value] warning: locals {u} escaping the scope of a block of main through p +tests/value/bug_0244.i:12:[value] warning: accessing left-value that contains escaping addresses. + assert ¬\dangling(&p); +tests/value/bug_0244.i:12:[value] warning: out of bounds read. assert \valid_read(p); +[value] Recording results for main +[value] done for function main +tests/value/bug_0244.i:12:[value] assertion 'Value,mem_access' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + NON TERMINATING FUNCTION +[from] Computing for function main +[from] Non-terminating function main (no dependencies) +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NON TERMINATING - NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + R; p; a; i; u +[inout] Inputs for function main: + p diff --git a/tests/value/oracle_symblocs/call.err.oracle b/tests/value/oracle_symblocs/call.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/call.res.oracle b/tests/value/oracle_symblocs/call.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..6baa080cfc20fb24e1401b20550f35ecb6ee3f0c --- /dev/null +++ b/tests/value/oracle_symblocs/call.res.oracle @@ -0,0 +1,78 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/call.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + p[0..9] ∈ {0} + q[0..9] ∈ {0} + r ∈ {0} + res ∈ {0} + x ∈ {0} +tests/value/call.i:19:[value] warning: out of bounds read. assert \valid_read(v+1); +[value] computing for function leaf_fun_int <- main. + Called from tests/value/call.i:19. +tests/value/call.i:19:[kernel] warning: Neither code nor specification for function leaf_fun_int, generating default assigns from the prototype +[value] using specification for function leaf_fun_int +[value] Done for function leaf_fun_int +tests/value/call.i:20:[value] warning: out of bounds read. assert \valid_read(v+1); +[value] computing for function leaf_fun_charp <- main. + Called from tests/value/call.i:20. +tests/value/call.i:20:[kernel] warning: Neither code nor specification for function leaf_fun_charp, generating default assigns from the prototype +[value] using specification for function leaf_fun_charp +[value] Done for function leaf_fun_charp +tests/value/call.i:23:[value] entering loop for the first time +[value] computing for function f <- main. + Called from tests/value/call.i:39. +[value] Recording results for f +[value] Done for function f +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + res ∈ {177; 188} +[value:final-states] Values at end of function main: + p[0..4] ∈ {0; 1; 2; 3; 4; 5; 6} + [5] ∈ {177} + [6] ∈ {0; 1; 2; 3; 4; 5; 6} + [7..9] ∈ {0} + q[0..4] ∈ {0; 10; 11; 12; 13; 14; 15; 16} + [5] ∈ {188} + [6] ∈ {0; 10; 11; 12; 13; 14; 15; 16} + [7..9] ∈ {0} + res ∈ {177; 188} + lcount ∈ {7} + tmp ∈ {{ &p[0] ; &q[0] }} + S_1_S_v[0..1] ∈ [--..--] +[from] Computing for function f +[from] Done for function f +[from] Computing for function main +[from] Computing for function leaf_fun_int <-main +[from] Done for function leaf_fun_int +[from] Computing for function leaf_fun_charp <-main +[from] Done for function leaf_fun_charp +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + res FROM p[5]; q[5]; t +[from] Function leaf_fun_charp: + S_1_S_v[0..1] FROM S_1_S_v[0..1] (and SELF) +[from] Function leaf_fun_int: + NO EFFECTS +[from] Function main: + p{[0..4]; [6]} FROM \nothing (and SELF) + [5] FROM \nothing + q{[0..4]; [6]} FROM \nothing (and SELF) + [5] FROM \nothing + res FROM c + S_1_S_v[0..1] FROM c; S_1_S_v[0..1] (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + res +[inout] Inputs for function f: + p[5]; q[5] +[inout] Out (internal) for function main: + p[0..6]; q[0..6]; res; lcount; tmp; S_1_S_v[0..1] +[inout] Inputs for function main: + p[5]; q[5]; S_v[1]; S_1_S_v[0..1] diff --git a/tests/value/oracle_symblocs/call_2.err.oracle b/tests/value/oracle_symblocs/call_2.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/call_2.res.oracle b/tests/value/oracle_symblocs/call_2.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..7af0d873f463ec293d27a9856e635683cc6f46a9 --- /dev/null +++ b/tests/value/oracle_symblocs/call_2.res.oracle @@ -0,0 +1,45 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/call_2.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +tests/value/call_2.i:15:[value] warning: non-finite float value. assert \is_finite(f); +tests/value/call_2.i:15:[value] warning: signed overflow. assert -2147483648 ≤ i+j; +tests/value/call_2.i:15:[value] warning: signed overflow. assert i+j ≤ 2147483647; +[value] computing for function ff <- main. + Called from tests/value/call_2.i:15. +[value] Called Frama_C_show_each([-2147483648..2147483647], + [-3.40282346639e+38 .. 3.40282346639e+38], + {1}) +[value] Recording results for ff +[value] Done for function ff +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function ff: + +[value:final-states] Values at end of function main: + f ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + z ∈ {1} or UNINITIALIZED + p ∈ {{ (int *)&f }} +[from] Computing for function ff +[from] Done for function ff +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function ff: + NO EFFECTS +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function ff: + \nothing +[inout] Inputs for function ff: + \nothing +[inout] Out (internal) for function main: + f; z; p +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/call_3.err.oracle b/tests/value/oracle_symblocs/call_3.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/call_3.res.oracle b/tests/value/oracle_symblocs/call_3.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..f9efb7a584ed839ba62b499afef3c87af45b4673 --- /dev/null +++ b/tests/value/oracle_symblocs/call_3.res.oracle @@ -0,0 +1,44 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/call_3.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + GG ∈ {0} +[value] computing for function f <- main. + Called from tests/value/call_3.i:13. +[value] Recording results for f +[value] Done for function f +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + GG ∈ {3} + G ∈ {2} + __retres ∈ {1} +[value:final-states] Values at end of function main: + GG ∈ {77} + lm ∈ {77} + res_f ∈ {1} + __retres ∈ {0} +[from] Computing for function f +[from] Done for function f +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + GG FROM \nothing + \result FROM \nothing +[from] Function main: + GG FROM \nothing + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + GG; G; __retres +[inout] Inputs for function f: + \nothing +[inout] Out (internal) for function main: + GG; lm; res_f; __retres +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/call_alias.0.err.oracle b/tests/value/oracle_symblocs/call_alias.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/call_alias.0.res.oracle b/tests/value/oracle_symblocs/call_alias.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..f1f3294030d3ffb3544b9edf8353de9fae04dbee --- /dev/null +++ b/tests/value/oracle_symblocs/call_alias.0.res.oracle @@ -0,0 +1,53 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/call_alias.i (no preprocessing) +[value] Analyzing a complete application starting at main0 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + X ∈ {0} + c ∈ {0} + u ∈ {0} + v ∈ {0} + w ∈ {0} + G ∈ {0} + H ∈ {0} + I ∈ {0} +[value] computing for function incr <- main0. + Called from tests/value/call_alias.i:23. +[value] Recording results for incr +[value] Done for function incr +[value] Recording results for main0 +[value] done for function main0 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function incr: + G ∈ {1} + H ∈ {1} + __retres ∈ {2} +[value:final-states] Values at end of function main0: + G ∈ {1} + H ∈ {1} + I ∈ {2} +[from] Computing for function incr +[from] Done for function incr +[from] Computing for function main0 +[from] Done for function main0 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function incr: + G FROM G; a + H FROM b; H + \result FROM G; a; b; H +[from] Function main0: + G FROM G + H FROM H + I FROM G; H + \result FROM G; H +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function incr: + G; H; __retres +[inout] Inputs for function incr: + G; H +[inout] Out (internal) for function main0: + G; H; I +[inout] Inputs for function main0: + G; H; I diff --git a/tests/value/oracle_symblocs/call_alias.1.err.oracle b/tests/value/oracle_symblocs/call_alias.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/call_alias.1.res.oracle b/tests/value/oracle_symblocs/call_alias.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..55a8db00d402d39e34ed7b4bb57a49c57155d8b1 --- /dev/null +++ b/tests/value/oracle_symblocs/call_alias.1.res.oracle @@ -0,0 +1,49 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/call_alias.i (no preprocessing) +[value] Analyzing a complete application starting at main1 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + X ∈ {0} + c ∈ {0} + u ∈ {0} + v ∈ {0} + w ∈ {0} + G ∈ {0} + H ∈ {0} + I ∈ {0} +[value] computing for function incr <- main1. + Called from tests/value/call_alias.i:28. +[value] Recording results for incr +[value] Done for function incr +[value] Recording results for main1 +[value] done for function main1 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function incr: + G ∈ {2} + __retres ∈ {4} +[value:final-states] Values at end of function main1: + G ∈ {2} + I ∈ {4} +[from] Computing for function incr +[from] Done for function incr +[from] Computing for function main1 +[from] Done for function main1 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function incr: + G FROM G; a; b + \result FROM G; a; b +[from] Function main1: + G FROM G + I FROM G + \result FROM G +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function incr: + G; __retres +[inout] Inputs for function incr: + G +[inout] Out (internal) for function main1: + G; I +[inout] Inputs for function main1: + G; I diff --git a/tests/value/oracle_symblocs/call_alias.2.err.oracle b/tests/value/oracle_symblocs/call_alias.2.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/call_alias.2.res.oracle b/tests/value/oracle_symblocs/call_alias.2.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..da4e0c9177e012ad775faad6b8d4f26533984999 --- /dev/null +++ b/tests/value/oracle_symblocs/call_alias.2.res.oracle @@ -0,0 +1,45 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/call_alias.i (no preprocessing) +[value] Analyzing a complete application starting at main2 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + X ∈ {0} + c ∈ {0} + u ∈ {0} + v ∈ {0} + w ∈ {0} + G ∈ {0} + H ∈ {0} + I ∈ {0} +[value] computing for function sum <- main2. + Called from tests/value/call_alias.i:33. +[value] Recording results for sum +[value] Done for function sum +[value] Recording results for main2 +[value] done for function main2 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function sum: + __retres ∈ {0} +[value:final-states] Values at end of function main2: + I ∈ {0} +[from] Computing for function sum +[from] Done for function sum +[from] Computing for function main2 +[from] Done for function main2 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function sum: + \result FROM a; b +[from] Function main2: + I FROM G; H + \result FROM G; H +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function sum: + __retres +[inout] Inputs for function sum: + \nothing +[inout] Out (internal) for function main2: + I +[inout] Inputs for function main2: + G; H; I diff --git a/tests/value/oracle_symblocs/call_deep.err.oracle b/tests/value/oracle_symblocs/call_deep.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/call_deep.res.oracle b/tests/value/oracle_symblocs/call_deep.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e604d6c4d838d728fe57a34837ff20def7af6063 --- /dev/null +++ b/tests/value/oracle_symblocs/call_deep.res.oracle @@ -0,0 +1,87 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/call_deep.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + R ∈ {77} + G ∈ {0} + pG ∈ {0} + F0 ∈ {0} + F1 ∈ {0} + H ∈ {0} + XX ∈ {0} + Fmain ∈ {0} +[value] computing for function f1 <- main. + Called from tests/value/call_deep.i:31. +[value] computing for function f0 <- f1 <- main. + Called from tests/value/call_deep.i:17. +[value] Recording results for f0 +[value] Done for function f0 +[value] Recording results for f1 +[value] Done for function f1 +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f0: + G ∈ {77} + F0 ∈ {77} +[value:final-states] Values at end of function f1: + G ∈ {77} + F0 ∈ {77} + F1 ∈ {77} + H ∈ {77} + ph ∈ {{ &G }} + __retres ∈ {77} +[value:final-states] Values at end of function main: + G ∈ {77} + pG ∈ {{ &G }} + F0 ∈ {77} + F1 ∈ {77} + H ∈ {77} + XX ∈ {0} + Fmain ∈ {77} + ph ∈ {{ &G }} + pph ∈ {{ &ph }} + __retres ∈ {0} +[from] Computing for function f0 +[from] Done for function f0 +[from] Computing for function f1 +[from] Done for function f1 +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f0: + G FROM R; p0 + F0 FROM R + \result FROM R +[from] Function f1: + G FROM R; pG + F0 FROM R + F1 FROM R + H FROM R; pp1; ph + ph FROM pG; pp1 + \result FROM R; pG; pp1 +[from] Function main: + G FROM R + pG FROM \nothing + F0 FROM R + F1 FROM R + H FROM R + XX FROM \nothing + Fmain FROM R + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f0: + G; F0 +[inout] Inputs for function f0: + R +[inout] Out (internal) for function f1: + G; F0; F1; H; ph; __retres +[inout] Inputs for function f1: + R; G; pG; ph +[inout] Out (internal) for function main: + G; pG; F0; F1; H; XX; Fmain; ph; pph; __retres +[inout] Inputs for function main: + R; G; pG diff --git a/tests/value/oracle_symblocs/call_multi.err.oracle b/tests/value/oracle_symblocs/call_multi.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/call_multi.res.oracle b/tests/value/oracle_symblocs/call_multi.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..ce20058e2101842cfc314aefcf82d9756a16b071 --- /dev/null +++ b/tests/value/oracle_symblocs/call_multi.res.oracle @@ -0,0 +1,69 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/call_multi.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + G ∈ {0} +[value] computing for function uppol2 <- main. + Called from tests/value/call_multi.c:29. +[value] computing for function printf <- uppol2 <- main. + Called from tests/value/call_multi.c:23. +[value] using specification for function printf +[value] Done for function printf +[value] Recording results for uppol2 +[value] Done for function uppol2 +[value] computing for function uppol2 <- main. + Called from tests/value/call_multi.c:30. +[value] computing for function printf <- uppol2 <- main. + Called from tests/value/call_multi.c:23. +[value] Done for function printf +[value] Recording results for uppol2 +[value] Done for function uppol2 +[value] computing for function uppol2 <- main. + Called from tests/value/call_multi.c:31. +[value] computing for function printf <- uppol2 <- main. + Called from tests/value/call_multi.c:23. +[value] Done for function printf +[value] Recording results for uppol2 +[value] Done for function uppol2 +[value] computing for function uppol2 <- main. + Called from tests/value/call_multi.c:32. +[value] computing for function printf <- uppol2 <- main. + Called from tests/value/call_multi.c:23. +[value] Done for function printf +[value] Recording results for uppol2 +[value] Done for function uppol2 +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function uppol2: + wd2 ∈ {0} + wd4 ∈ {-128; 128} + apl2 ∈ {-128; 128} +[value:final-states] Values at end of function main: + G ∈ {256} +[from] Computing for function uppol2 +[from] Computing for function printf <-uppol2 +[from] Done for function printf +tests/value/call_multi.c:23:[from] warning: variadic call detected. Using only 1 argument(s). +[from] Done for function uppol2 +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function printf: + \result FROM ANYTHING(origin:Unknown) +[from] Function uppol2: + \result FROM al1; al2; plt; plt1; plt2 +[from] Function main: + G FROM G +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function uppol2: + wd2; wd4; apl2 +[inout] Inputs for function uppol2: + \nothing +[inout] Out (internal) for function main: + G; tmp; tmp_0; tmp_1; tmp_2 +[inout] Inputs for function main: + G diff --git a/tests/value/oracle_symblocs/call_simple.err.oracle b/tests/value/oracle_symblocs/call_simple.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/call_simple.res.oracle b/tests/value/oracle_symblocs/call_simple.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..dd752e115c1329238b0924354d1e21a94e235ab4 --- /dev/null +++ b/tests/value/oracle_symblocs/call_simple.res.oracle @@ -0,0 +1,58 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/call_simple.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + X ∈ {0} + c ∈ {0} + u ∈ {0} + v ∈ {0} + w ∈ {0} + G ∈ {0} +[value] computing for function f <- main. + Called from tests/value/call_simple.i:14. +[value] Recording results for f +[value] Done for function f +tests/value/call_simple.i:15:[value] warning: signed overflow. assert ll+1 ≤ 2147483647; +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + X ∈ {68} + u ∈ {0} + a ∈ {0} + i ∈ {{ &u }} +[value:final-states] Values at end of function main: + X ∈ {68} + c ∈ [--..--] + u ∈ {0} + v ∈ {0} + w ∈ {17} + ll ∈ [-2147483647..2147483647] + __retres ∈ {0} +[from] Computing for function f +[from] Done for function f +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + X FROM b; c_0 + u FROM a +[from] Function main: + X FROM G + c FROM ll + u FROM \nothing + v FROM G + w FROM \nothing + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + X; u; a; i +[inout] Inputs for function f: + \nothing +[inout] Out (internal) for function main: + X; c; u; v; w; ll; tmp; __retres +[inout] Inputs for function main: + v; w; G diff --git a/tests/value/oracle_symblocs/case_analysis.0.err.oracle b/tests/value/oracle_symblocs/case_analysis.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/case_analysis.0.res.oracle b/tests/value/oracle_symblocs/case_analysis.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..84f0b3666d779296658268de1c25a45aa0fdf39d --- /dev/null +++ b/tests/value/oracle_symblocs/case_analysis.0.res.oracle @@ -0,0 +1,20 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/case_analysis.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + sq ∈ {0} + s ∈ {0} + rq ∈ {0} + r ∈ {0} +tests/value/case_analysis.i:14:[value] assertion got status valid. +tests/value/case_analysis.i:17:[value] assertion got status valid. +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + sq ∈ [0..100] + s ∈ [-10..10] + rq ∈ [-0.0000000000000000 .. 100.0000000000000000] + r ∈ [-10.0000000000000000 .. 10.0000000000000000] diff --git a/tests/value/oracle_symblocs/case_analysis.1.err.oracle b/tests/value/oracle_symblocs/case_analysis.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/case_analysis.1.res.oracle b/tests/value/oracle_symblocs/case_analysis.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..eb05f0a48636fca2edf971ea95ac48ca591a863b --- /dev/null +++ b/tests/value/oracle_symblocs/case_analysis.1.res.oracle @@ -0,0 +1,21 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/case_analysis.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + sq ∈ {0} + s ∈ {0} + rq ∈ {0} + r ∈ {0} +tests/value/case_analysis.i:14:[value] assertion got status valid. +tests/value/case_analysis.i:17:[value] assertion got status valid. +tests/value/case_analysis.i:17:[value] warning: assertion got status unknown. +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + sq ∈ [0..100] + s ∈ [-10..10] + rq ∈ [-0.0000000000000000 .. 100.0000000000000000] + r ∈ [-10.0000000000000000 .. 10.0000000000000000] diff --git a/tests/value/oracle_symblocs/cast.err.oracle b/tests/value/oracle_symblocs/cast.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/cast.res.oracle b/tests/value/oracle_symblocs/cast.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..93eceaa36521e599129fadb91a337b7d2df3555f --- /dev/null +++ b/tests/value/oracle_symblocs/cast.res.oracle @@ -0,0 +1,148 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/cast.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + G ∈ {0} + H ∈ {0} + K ∈ {0} + L ∈ {0} + i ∈ {0} + b ∈ {0} + I ∈ {0} + c ∈ {0} + d ∈ {0} + e ∈ {0} + uc ∈ {0} + ud ∈ {0} + ll ∈ {0} + gg ∈ {0} + ull ∈ {0} + ugg ∈ {0} +[value] computing for function main1 <- main. + Called from tests/value/cast.i:59. +[value] computing for function any_int_4 <- main1 <- main. + Called from tests/value/cast.i:19. +[value] Recording results for any_int_4 +[value] Done for function any_int_4 +[value] computing for function printf <- main1 <- main. + Called from tests/value/cast.i:32. +tests/value/cast.i:32:[kernel] warning: Neither code nor specification for function printf, generating default assigns from the prototype +[value] using specification for function printf +[value] Done for function printf +[value] Recording results for main1 +[value] Done for function main1 +[value] computing for function main2 <- main. + Called from tests/value/cast.i:60. +tests/value/cast.i:50:[value] entering loop for the first time +[value] computing for function printf <- main2 <- main. + Called from tests/value/cast.i:53. +[value] Done for function printf +[value] computing for function printf <- main2 <- main. + Called from tests/value/cast.i:53. +[value] Done for function printf +[value] computing for function printf <- main2 <- main. + Called from tests/value/cast.i:53. +[value] Done for function printf +[value] computing for function printf <- main2 <- main. + Called from tests/value/cast.i:53. +[value] Done for function printf +[value] computing for function printf <- main2 <- main. + Called from tests/value/cast.i:55. +[value] Done for function printf +[value] Recording results for main2 +[value] Done for function main2 +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function any_int_4: + i_0 ∈ [--..--] + __retres ∈ [-536870912..536870911] +[value:final-states] Values at end of function main1: + G ∈ [0..12] + H ∈ [-536870912..536870911] + K ∈ [-10..20] + L ∈ [-4000..2],0%2 + I ∈ {4294967295} + c ∈ [-10..20] + d ∈ [--..--] + e ∈ [-128..126],0%2 + uc ∈ [--..--] + ull ∈ {1} +[value:final-states] Values at end of function main2: + min ∈ {130} + max ∈ {135} + i_0 ∈ [136..2147483647] + G_0 ∈ {-126; -125; -124; -123; -122; -121} or UNINITIALIZED +[value:final-states] Values at end of function main: + G ∈ [0..12] + H ∈ [-536870912..536870911] + K ∈ [-10..20] + L ∈ [-4000..2],0%2 + I ∈ {4294967295} + c ∈ [-10..20] + d ∈ [--..--] + e ∈ [-128..126],0%2 + uc ∈ [--..--] + ull ∈ {1} +[from] Computing for function any_int_4 +[from] Done for function any_int_4 +[from] Computing for function main1 +[from] Computing for function printf <-main1 +[from] Done for function printf +tests/value/cast.i:32:[from] warning: variadic call detected. Using only 1 argument(s). +[from] Done for function main1 +[from] Computing for function main2 +tests/value/cast.i:53:[from] warning: variadic call detected. Using only 1 argument(s). +tests/value/cast.i:55:[from] warning: variadic call detected. Using only 1 argument(s). +[from] Done for function main2 +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function any_int_4: + \result FROM \nothing +[from] Function printf: + NO EFFECTS +[from] Function main1: + G FROM \nothing + H FROM \nothing + K FROM \nothing + L FROM \nothing + I FROM \nothing + c FROM \nothing + d FROM \nothing + e FROM \nothing + uc FROM \nothing + ull FROM \nothing +[from] Function main2: + NO EFFECTS +[from] Function main: + G FROM \nothing + H FROM \nothing + K FROM \nothing + L FROM \nothing + I FROM \nothing + c FROM \nothing + d FROM \nothing + e FROM \nothing + uc FROM \nothing + ull FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function any_int_4: + i_0; __retres +[inout] Inputs for function any_int_4: + \nothing +[inout] Out (internal) for function main1: + G; H; K; L; I; c; d; e; uc; ull +[inout] Inputs for function main1: + G; H; K; L; I; c +[inout] Out (internal) for function main2: + min; max; i_0; G_0 +[inout] Inputs for function main2: + \nothing +[inout] Out (internal) for function main: + G; H; K; L; I; c; d; e; uc; ull +[inout] Inputs for function main: + G; H; K; L; I; c diff --git a/tests/value/oracle_symblocs/cast1.err.oracle b/tests/value/oracle_symblocs/cast1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/cast1.res.oracle b/tests/value/oracle_symblocs/cast1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..aed46fdb66fa74b9753fce066c034b6bb6df52b1 --- /dev/null +++ b/tests/value/oracle_symblocs/cast1.res.oracle @@ -0,0 +1,39 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/cast1.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + si ∈ {0} + i ∈ {0} + S[0] ∈ {1} + [1..4] ∈ {0} + I[0] ∈ {1} + [1..4] ∈ {0} +tests/value/cast1.i:7:[value] entering loop for the first time +tests/value/cast1.i:8:[value] entering loop for the first time +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + si ∈ {2} + i ∈ {2} + S[0] ∈ {1; 2} + [1..4] ∈ {0} + I[0] ∈ {1; 2} + [1] ∈ {0; 2} + [2..4] ∈ {0} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + si FROM \nothing + i FROM \nothing + S[0] FROM i (and SELF) + I[0..1] FROM \nothing (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + si; i; S[0]; I[0..1] +[inout] Inputs for function main: + si; i diff --git a/tests/value/oracle_symblocs/cast2.err.oracle b/tests/value/oracle_symblocs/cast2.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/cast2.res.oracle b/tests/value/oracle_symblocs/cast2.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..6366c6f3662633390741e40bf6f3ff054236c094 --- /dev/null +++ b/tests/value/oracle_symblocs/cast2.res.oracle @@ -0,0 +1,80 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/cast2.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + G ∈ {255} +[value] computing for function g <- main. + Called from tests/value/cast2.i:28. +[value] computing for function any_int <- g <- main. + Called from tests/value/cast2.i:7. +[value] using specification for function any_int +[value] Done for function any_int +tests/value/cast2.i:9:[value] warning: signed overflow. assert t+1 ≤ 2147483647; +[value] Recording results for g +[value] Done for function g +[value] computing for function h <- main. + Called from tests/value/cast2.i:29. +[value] Recording results for h +[value] Done for function h +[value] computing for function passcast <- main. + Called from tests/value/cast2.i:30. +[value] computing for function any_int <- passcast <- main. + Called from tests/value/cast2.i:20. +[value] Done for function any_int +[value] Called Frama_C_show_each([-128..100]) +tests/value/cast2.i:24:[value] entering loop for the first time +[value] Recording results for passcast +[value] Done for function passcast +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function g: + t ∈ [-2147483647..2147483647] + G_0 ∈ [--..--] +[value:final-states] Values at end of function h: + G ∈ {1} +[value:final-states] Values at end of function passcast: + i ∈ [-128..100] +[value:final-states] Values at end of function main: + G ∈ {1} +[from] Computing for function g +[from] Computing for function any_int <-g +[from] Done for function any_int +[from] Done for function g +[from] Computing for function h +[from] Done for function h +[from] Computing for function passcast +[from] Done for function passcast +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function any_int: + \result FROM \nothing +[from] Function g: + NO EFFECTS +[from] Function h: + G FROM \nothing +[from] Function passcast: + NO EFFECTS +[from] Function main: + G FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function g: + t; G_0 +[inout] Inputs for function g: + \nothing +[inout] Out (internal) for function h: + G +[inout] Inputs for function h: + \nothing +[inout] Out (internal) for function passcast: + i; tmp +[inout] Inputs for function passcast: + \nothing +[inout] Out (internal) for function main: + G +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/cast_axalto.err.oracle b/tests/value/oracle_symblocs/cast_axalto.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/cast_axalto.res.oracle b/tests/value/oracle_symblocs/cast_axalto.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..a4bc0f8b5c5dafa9a4565b745014cf2ed8ec967c --- /dev/null +++ b/tests/value/oracle_symblocs/cast_axalto.res.oracle @@ -0,0 +1,59 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/cast_axalto.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + my_tab ∈ {0} + G[0] ∈ {77} + [1] ∈ {88} + [2] ∈ {99} + [3] ∈ {100} + [4..9] ∈ {0} +[value] computing for function f <- main. + Called from tests/value/cast_axalto.c:26. +[value] Recording results for f +[value] Done for function f +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + p ∈ {{ (my_structure *)&G[1] }} + G[0] ∈ {77} + [1][bits 0 to 7] ∈ {1} + [1][bits 8 to 31]# ∈ {88}%32, bits 8 to 31 + [2] ∈ {99} + [3] ∈ {100} + [4] ∈ {99} + [5..9] ∈ {0} +[value:final-states] Values at end of function main: + my_tab ∈ {{ &G[1] }} + G[0] ∈ {77} + [1][bits 0 to 7] ∈ {1} + [1][bits 8 to 31]# ∈ {88}%32, bits 8 to 31 + [2] ∈ {99} + [3] ∈ {100} + [4] ∈ {99} + [5..9] ∈ {0} + __retres ∈ {1} +[from] Computing for function f +[from] Done for function f +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + G{[1][bits 0 to 7]; [4]} FROM my_tab +[from] Function main: + my_tab FROM \nothing + G{[1][bits 0 to 7]; [4]} FROM \nothing + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + p; G{[1][bits 0 to 7]; [4]} +[inout] Inputs for function f: + my_tab +[inout] Out (internal) for function main: + my_tab; G{[1][bits 0 to 7]; [4]}; __retres +[inout] Inputs for function main: + my_tab diff --git a/tests/value/oracle_symblocs/cast_fun.err.oracle b/tests/value/oracle_symblocs/cast_fun.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/cast_fun.res.oracle b/tests/value/oracle_symblocs/cast_fun.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e6939d5de83e6b5fb656f2f71f46f1ea77f773d0 --- /dev/null +++ b/tests/value/oracle_symblocs/cast_fun.res.oracle @@ -0,0 +1,128 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/cast_fun.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] computing for function f1 <- main. + Called from tests/value/cast_fun.i:58. +[value] using specification for function f1 +tests/value/cast_fun.i:6:[value] warning: no 'assigns \result \from ...' clause specified for function f1 +[value] Done for function f1 +tests/value/cast_fun.i:63:[value] warning: pointer to function with incompatible type. assert \valid_function(p1); +[value] computing for function f2 <- main. + Called from tests/value/cast_fun.i:63. +[value] using specification for function f2 +tests/value/cast_fun.i:8:[value] warning: no 'assigns \result \from ...' clause specified for function f2 +[value] Done for function f2 +[value] computing for function f3 <- main. + Called from tests/value/cast_fun.i:68. +[value] using specification for function f3 +tests/value/cast_fun.i:10:[value] warning: no 'assigns \result \from ...' clause specified for function f3 +[value] Done for function f3 +tests/value/cast_fun.i:73:[value] warning: pointer to function with incompatible type. assert \valid_function(p1); +tests/value/cast_fun.i:78:[value] warning: pointer to function with incompatible type. assert \valid_function(p1); +[value] computing for function f6 <- main. + Called from tests/value/cast_fun.i:83. +[value] using specification for function f6 +[value] Done for function f6 +[value] computing for function f7 <- main. + Called from tests/value/cast_fun.i:88. +[value] using specification for function f7 +[value] Done for function f7 +tests/value/cast_fun.i:93:[value] warning: pointer to function with incompatible type. assert \valid_function(p2); +[value] computing for function f9 <- main. + Called from tests/value/cast_fun.i:98. +[value] using specification for function f9 +[value] Done for function f9 +tests/value/cast_fun.i:103:[value] warning: pointer to function with incompatible type. assert \valid_function(p3); +tests/value/cast_fun.i:108:[value] warning: pointer to function with incompatible type. assert \valid_function(p4); +[value] computing for function f10 <- main. + Called from tests/value/cast_fun.i:113. +[value] using specification for function f10 +[value] Done for function f10 +tests/value/cast_fun.i:118:[value] warning: pointer to function with incompatible type. assert \valid_function(p1); +tests/value/cast_fun.i:123:[value] warning: pointer to function with incompatible type. assert \valid_function(p1); +tests/value/cast_fun.i:128:[value] warning: pointer to function with incompatible type. assert \valid_function(p4); +[value] Recording results for main +[from] Computing for function main +tests/value/cast_fun.i:58:[from] warning: variadic call detected. Using only 0 argument(s). +tests/value/cast_fun.i:63:[from] warning: variadic call detected. Using only 0 argument(s). +tests/value/cast_fun.i:98:[from] warning: variadic call detected. Using only 1 argument(s). +tests/value/cast_fun.i:113:[from] warning: variadic call detected. Using only 0 argument(s). +[from] Done for function main +[value] done for function main +tests/value/cast_fun.i:73:[value] assertion 'Value,function_pointer' got final status invalid. +tests/value/cast_fun.i:78:[value] assertion 'Value,function_pointer' got final status invalid. +tests/value/cast_fun.i:93:[value] assertion 'Value,function_pointer' got final status invalid. +tests/value/cast_fun.i:103:[value] assertion 'Value,function_pointer' got final status invalid. +tests/value/cast_fun.i:108:[value] assertion 'Value,function_pointer' got final status invalid. +tests/value/cast_fun.i:118:[value] assertion 'Value,function_pointer' got final status invalid. +tests/value/cast_fun.i:123:[value] assertion 'Value,function_pointer' got final status invalid. +tests/value/cast_fun.i:128:[value] assertion 'Value,function_pointer' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + p1 ∈ {{ &f1 ; (int (*)(int ))&f2 ; &f3 }} or UNINITIALIZED + p2 ∈ {{ &f6 ; (void (*)(struct s1 ))&f7 }} or UNINITIALIZED + p3 ∈ {{ &f9 }} or UNINITIALIZED + p4 ∈ {{ &f10 }} or UNINITIALIZED + x ∈ [--..--] or UNINITIALIZED + s ∈ {0} +[from] Computing for function main +[from] Computing for function f1 <-main +[from] Done for function f1 +[from] Computing for function f2 <-main +[from] Done for function f2 +[from] Computing for function f3 <-main +[from] Done for function f3 +[from] Computing for function f6 <-main +[from] Done for function f6 +[from] Computing for function f7 <-main +[from] Done for function f7 +[from] Computing for function f9 <-main +[from] Done for function f9 +[from] Computing for function f10 <-main +[from] Done for function f10 +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f1: + \result FROM ANYTHING(origin:Unknown) +[from] Function f10: + NO EFFECTS +[from] Function f2: + \result FROM ANYTHING(origin:Unknown) +[from] Function f3: + \result FROM ANYTHING(origin:Unknown) +[from] Function f6: + NO EFFECTS +[from] Function f7: + NO EFFECTS +[from] Function f9: + NO EFFECTS +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[from] ====== DISPLAYING CALLWISE DEPENDENCIES ====== +[from] call to f1 at tests/value/cast_fun.i:58 (by main): + \result FROM ANYTHING(origin:Unknown) +[from] call to f2 at tests/value/cast_fun.i:63 (by main): + \result FROM ANYTHING(origin:Unknown) +[from] call to f3 at tests/value/cast_fun.i:68 (by main): + \result FROM ANYTHING(origin:Unknown) +[from] call to f6 at tests/value/cast_fun.i:83 (by main): + NO EFFECTS +[from] call to f7 at tests/value/cast_fun.i:88 (by main): + NO EFFECTS +[from] call to f9 at tests/value/cast_fun.i:98 (by main): + NO EFFECTS +[from] call to f10 at tests/value/cast_fun.i:113 (by main): + NO EFFECTS +[from] entry point: + NO EFFECTS +[from] ====== END OF CALLWISE DEPENDENCIES ====== +[inout] Out (internal) for function main: + p1; p2; p3; p4; x; s +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/cast_hetero.err.oracle b/tests/value/oracle_symblocs/cast_hetero.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/cast_hetero.res.oracle b/tests/value/oracle_symblocs/cast_hetero.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..0f33de05bd25891c334ffbc166aa56f2ed5580f3 --- /dev/null +++ b/tests/value/oracle_symblocs/cast_hetero.res.oracle @@ -0,0 +1,45 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/cast_hetero.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + X ∈ {0} + pt ∈ {0} + T[0..9] ∈ {0} +[value] computing for function g <- main. + Called from tests/value/cast_hetero.i:16. +[value] Recording results for g +[value] Done for function g +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function g: + pt ∈ {{ &X }} + T[0] ∈ {1} + [1..9] ∈ {0} +[value:final-states] Values at end of function main: + pt ∈ {{ &X }} + T[0] ∈ {1} + [1..9] ∈ {0} +[from] Computing for function g +[from] Done for function g +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function g: + pt FROM \nothing + T[0] FROM X; c +[from] Function main: + pt FROM \nothing + T[0] FROM X +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function g: + pt; T[0] +[inout] Inputs for function g: + X +[inout] Out (internal) for function main: + pt; T[0] +[inout] Inputs for function main: + X diff --git a/tests/value/oracle_symblocs/cast_return.0.err.oracle b/tests/value/oracle_symblocs/cast_return.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/cast_return.0.res.oracle b/tests/value/oracle_symblocs/cast_return.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..856c7e5b299688944768bb4112403bbaa6fe7c4e --- /dev/null +++ b/tests/value/oracle_symblocs/cast_return.0.res.oracle @@ -0,0 +1,333 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/cast_return.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + i ∈ [--..--] + c ∈ [--..--] +[value] computing for function main1 <- main. + Called from tests/value/cast_return.c:55. +[value] computing for function f <- main1 <- main. + Called from tests/value/cast_return.c:26. +[value] Recording results for f +[value] Done for function f +[value] computing for function g <- main1 <- main. + Called from tests/value/cast_return.c:27. +[value] Recording results for g +[value] Done for function g +tests/value/cast_return.c:27:[kernel] warning: returned value may be uninitialized: assert \initialized(\returned_value) +[value] computing for function h <- main1 <- main. + Called from tests/value/cast_return.c:31. +[value] Recording results for h +[value] Done for function h +tests/value/cast_return.c:31:[value] warning: out of bounds write. assert \valid(*p); +[value] Recording results for main1 +[value] Done for function main1 +[value] computing for function main2 <- main. + Called from tests/value/cast_return.c:56. +[value] computing for function fl1 <- main2 <- main. + Called from tests/value/cast_return.c:50. +[value] Recording results for fl1 +[value] Done for function fl1 +tests/value/cast_return.c:50:[kernel] warning: returned value may be uninitialized: assert \initialized(\returned_value) +[value] computing for function fl2 <- main2 <- main. + Called from tests/value/cast_return.c:51. +[value] Recording results for fl2 +[value] Done for function fl2 +tests/value/cast_return.c:51:[kernel] warning: returned value may be uninitialized: assert \initialized(\returned_value) +[value] Recording results for main2 +[value] Done for function main2 +[value] Recording results for main +[value] done for function main +tests/value/cast_return.c:31:[value] assertion 'Value,mem_access' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + +[value:final-states] Values at end of function fl1: + v[bits 0 to 7] ∈ {1} + [bits 8 to 31] ∈ UNINITIALIZED +[value:final-states] Values at end of function fl2: + v ∈ {1.} or UNINITIALIZED +[value:final-states] Values at end of function g: + x ∈ {1} or UNINITIALIZED +[value:final-states] Values at end of function h: + __retres ∈ {1} +[value:final-states] Values at end of function main1: + +[value:final-states] Values at end of function main2: + d1 ∈ UNINITIALIZED + d2 ∈ {1.} +[value:final-states] Values at end of function main: + +[from] Computing for function f +[from] Done for function f +[from] Computing for function fl1 +[from] Done for function fl1 +[from] Computing for function fl2 +[from] Done for function fl2 +[from] Computing for function g +[from] Done for function g +[from] Computing for function h +[from] Done for function h +[from] Computing for function main1 +[from] Done for function main1 +[from] Computing for function main2 +[from] Done for function main2 +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + \result FROM i +[from] Function fl1: + \result FROM \nothing +[from] Function fl2: + \result FROM c +[from] Function g: + \result FROM c +[from] Function h: + \result FROM \nothing +[from] Function main1: + NO EFFECTS +[from] Function main2: + NO EFFECTS +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + \nothing +[inout] Inputs for function f: + i +[inout] Out (internal) for function fl1: + v[bits 0 to 7] +[inout] Inputs for function fl1: + \nothing +[inout] Out (internal) for function fl2: + v +[inout] Inputs for function fl2: + c +[inout] Out (internal) for function g: + x +[inout] Inputs for function g: + c +[inout] Out (internal) for function h: + __retres +[inout] Inputs for function h: + \nothing +[inout] Out (internal) for function main1: + f_; tmp; v; x; p +[inout] Inputs for function main1: + i; c +[inout] Out (internal) for function main2: + d1; d2 +[inout] Inputs for function main2: + c +[inout] Out (internal) for function main: + \nothing +[inout] Inputs for function main: + i; c +/* Generated by Frama-C */ +extern int i; + +int f(void) +{ + return i; +} + +int volatile c; +int g(void) +{ + int x; + if (c) x = 1; + return x; +} + +char h(void) +{ + char __retres; + __retres = (char)1; + return __retres; +} + +void main1(void) +{ + if (c) { + float f_; + int tmp; + tmp = f(); + f_ = (float)tmp; + } + if (c) { + long long v; + v = (long long)g(); + } + if (c) { + int *x; + int **p; + x = (int *)0; + p = & x; + /*@ assert Value: mem_access: \valid(*p); */ + *(*p) = (int)h(); + } + return; +} + +float fl1(void) +{ + float v; + *((char *)(& v)) = (char)1; + return v; +} + +float fl2(void) +{ + float v; + if (c) v = (float)1; + return v; +} + +void main2(void) +{ + double d1; + double d2; + if (c) d1 = (double)fl1(); + d2 = (double)fl2(); + return; +} + +void main(void) +{ + main1(); + main2(); + return; +} + + +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + i ∈ [--..--] + c ∈ [--..--] +[value] computing for function main1 <- main. + Called from tests/value/cast_return.c:55. +[value] computing for function f <- main1 <- main. + Called from tests/value/cast_return.c:26. +[value] Recording results for f +[value] Done for function f +[value] computing for function g <- main1 <- main. + Called from tests/value/cast_return.c:27. +tests/value/cast_return.c:17:[value] warning: accessing uninitialized left-value. assert \initialized(&x); +[value] Recording results for g +[value] Done for function g +[value] computing for function h <- main1 <- main. + Called from tests/value/cast_return.c:31. +[value] Recording results for h +[value] Done for function h +tests/value/cast_return.c:31:[value] warning: out of bounds write. assert \valid(*p); +[value] Recording results for main1 +[value] Done for function main1 +[value] computing for function main2 <- main. + Called from tests/value/cast_return.c:56. +[value] computing for function fl1 <- main2 <- main. + Called from tests/value/cast_return.c:50. +tests/value/cast_return.c:38:[value] warning: accessing uninitialized left-value. assert \initialized(&v); +[value] Recording results for fl1 +[value] Done for function fl1 +[value] computing for function fl2 <- main2 <- main. + Called from tests/value/cast_return.c:51. +tests/value/cast_return.c:44:[value] warning: accessing uninitialized left-value. assert \initialized(&v); +[value] Recording results for fl2 +[value] Done for function fl2 +[value] Recording results for main2 +[value] Done for function main2 +[value] Recording results for main +[value] done for function main +tests/value/cast_return.c:38:[value] assertion 'Value,initialisation' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + +[value:final-states] Values at end of function fl1: + v[bits 0 to 7] ∈ {1} + [bits 8 to 31] ∈ UNINITIALIZED +[value:final-states] Values at end of function fl2: + v ∈ {1.} or UNINITIALIZED +[value:final-states] Values at end of function g: + x ∈ {1} or UNINITIALIZED +[value:final-states] Values at end of function h: + __retres ∈ {1} +[value:final-states] Values at end of function main1: + +[value:final-states] Values at end of function main2: + d1 ∈ UNINITIALIZED + d2 ∈ {1.} +[value:final-states] Values at end of function main: + +[from] Computing for function f +[from] Done for function f +[from] Computing for function fl1 +[from] Done for function fl1 +[from] Computing for function fl2 +[from] Done for function fl2 +[from] Computing for function g +[from] Done for function g +[from] Computing for function h +[from] Done for function h +[from] Computing for function main1 +[from] Done for function main1 +[from] Computing for function main2 +[from] Done for function main2 +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + \result FROM i +[from] Function fl1: + \result FROM \nothing +[from] Function fl2: + \result FROM c +[from] Function g: + \result FROM c +[from] Function h: + \result FROM \nothing +[from] Function main1: + NO EFFECTS +[from] Function main2: + NO EFFECTS +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + \nothing +[inout] Inputs for function f: + i +[inout] Out (internal) for function fl1: + v[bits 0 to 7] +[inout] Inputs for function fl1: + \nothing +[inout] Out (internal) for function fl2: + v +[inout] Inputs for function fl2: + c +[inout] Out (internal) for function g: + x +[inout] Inputs for function g: + c +[inout] Out (internal) for function h: + __retres +[inout] Inputs for function h: + \nothing +[inout] Out (internal) for function main1: + f_; tmp; v; x; p +[inout] Inputs for function main1: + i; c +[inout] Out (internal) for function main2: + d1; d2 +[inout] Inputs for function main2: + c +[inout] Out (internal) for function main: + \nothing +[inout] Inputs for function main: + i; c diff --git a/tests/value/oracle_symblocs/cast_return.1.err.oracle b/tests/value/oracle_symblocs/cast_return.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/cast_return.1.res.oracle b/tests/value/oracle_symblocs/cast_return.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..99e1a72193c3ac6a7a287f637d8275368bce57b0 --- /dev/null +++ b/tests/value/oracle_symblocs/cast_return.1.res.oracle @@ -0,0 +1,233 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/cast_return.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + i ∈ [--..--] + c ∈ [--..--] +[value] computing for function main1 <- main. + Called from tests/value/cast_return.c:55. +[value] computing for function f <- main1 <- main. + Called from tests/value/cast_return.c:26. +[value] Recording results for f +[value] Done for function f +[value] computing for function g <- main1 <- main. + Called from tests/value/cast_return.c:27. +[value] Recording results for g +[value] Done for function g +tests/value/cast_return.c:27:[value] warning: accessing uninitialized left-value. + assert \initialized(&tmp_0); + (tmp_0 from g()) +[value] computing for function h <- main1 <- main. + Called from tests/value/cast_return.c:31. +[value] Recording results for h +[value] Done for function h +tests/value/cast_return.c:31:[value] warning: out of bounds write. assert \valid(*p); +tests/value/cast_return.c:31:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +[value] Recording results for main1 +[value] Done for function main1 +[value] computing for function main2 <- main. + Called from tests/value/cast_return.c:56. +[value] computing for function fl1 <- main2 <- main. + Called from tests/value/cast_return.c:50. +[value] Recording results for fl1 +[value] Done for function fl1 +tests/value/cast_return.c:50:[value] warning: accessing uninitialized left-value. + assert \initialized(&tmp); + (tmp from fl1()) +[value] computing for function fl2 <- main2 <- main. + Called from tests/value/cast_return.c:51. +[value] Recording results for fl2 +[value] Done for function fl2 +tests/value/cast_return.c:51:[value] warning: accessing uninitialized left-value. + assert \initialized(&tmp_0); + (tmp_0 from fl2()) +[value] Recording results for main2 +[value] Done for function main2 +[value] Recording results for main +[value] done for function main +tests/value/cast_return.c:31:[value] assertion 'Value,mem_access' got final status invalid. +tests/value/cast_return.c:50:[value] assertion 'Value,initialisation' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + +[value:final-states] Values at end of function fl1: + v[bits 0 to 7] ∈ {1} + [bits 8 to 31] ∈ UNINITIALIZED +[value:final-states] Values at end of function fl2: + v ∈ {1.} or UNINITIALIZED +[value:final-states] Values at end of function g: + x ∈ {1} or UNINITIALIZED +[value:final-states] Values at end of function h: + __retres ∈ {1} +[value:final-states] Values at end of function main1: + +[value:final-states] Values at end of function main2: + d1 ∈ UNINITIALIZED + d2 ∈ {1.} +[value:final-states] Values at end of function main: + +[from] Computing for function f +[from] Done for function f +[from] Computing for function fl1 +[from] Done for function fl1 +[from] Computing for function fl2 +[from] Done for function fl2 +[from] Computing for function g +[from] Done for function g +[from] Computing for function h +[from] Done for function h +[from] Computing for function main1 +[from] Done for function main1 +[from] Computing for function main2 +[from] Done for function main2 +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + \result FROM i +[from] Function fl1: + \result FROM \nothing +[from] Function fl2: + \result FROM c +[from] Function g: + \result FROM c +[from] Function h: + \result FROM \nothing +[from] Function main1: + NO EFFECTS +[from] Function main2: + NO EFFECTS +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + \nothing +[inout] Inputs for function f: + i +[inout] Out (internal) for function fl1: + v[bits 0 to 7] +[inout] Inputs for function fl1: + \nothing +[inout] Out (internal) for function fl2: + v +[inout] Inputs for function fl2: + c +[inout] Out (internal) for function g: + x +[inout] Inputs for function g: + c +[inout] Out (internal) for function h: + __retres +[inout] Inputs for function h: + \nothing +[inout] Out (internal) for function main1: + f_; tmp; v; tmp_0; x; p; tmp_1 +[inout] Inputs for function main1: + i; c +[inout] Out (internal) for function main2: + d1; d2; tmp; tmp_0 +[inout] Inputs for function main2: + c +[inout] Out (internal) for function main: + \nothing +[inout] Inputs for function main: + i; c +/* Generated by Frama-C */ +extern int i; + +int f(void) +{ + return i; +} + +int volatile c; +int g(void) +{ + int x; + if (c) x = 1; + return x; +} + +char h(void) +{ + char __retres; + __retres = (char)1; + return __retres; +} + +void main1(void) +{ + if (c) { + float f_; + int tmp; + tmp = f(); + f_ = (float)tmp; + } + if (c) { + long long v; + int tmp_0; + tmp_0 = g(); + /*@ assert Value: initialisation: \initialized(&tmp_0); */ + v = (long long)tmp_0; + } + if (c) { + int *x; + int **p; + char tmp_1; + x = (int *)0; + p = & x; + { /* sequence */ + tmp_1 = h(); + /*@ assert Value: mem_access: \valid(*p); */ + *(*p) = (int)tmp_1; + } + } + return; +} + +float fl1(void) +{ + float v; + *((char *)(& v)) = (char)1; + return v; +} + +float fl2(void) +{ + float v; + if (c) v = (float)1; + return v; +} + +void main2(void) +{ + double d1; + double d2; + float tmp_0; + if (c) { + float tmp; + { /* sequence */ + tmp = fl1(); + /*@ assert Value: initialisation: \initialized(&tmp); */ + d1 = (double)tmp; + } + } + { /* sequence */ + tmp_0 = fl2(); + /*@ assert Value: initialisation: \initialized(&tmp_0); */ + d2 = (double)tmp_0; + } + return; +} + +void main(void) +{ + main1(); + main2(); + return; +} + + diff --git a/tests/value/oracle_symblocs/cert_exp35_c.err.oracle b/tests/value/oracle_symblocs/cert_exp35_c.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/cert_exp35_c.res.oracle b/tests/value/oracle_symblocs/cert_exp35_c.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..492a36b35e261ea56f396fd58fb9e9be7e1ccfa4 --- /dev/null +++ b/tests/value/oracle_symblocs/cert_exp35_c.res.oracle @@ -0,0 +1,52 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/cert_exp35_c.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] computing for function addressee <- main. + Called from tests/value/cert_exp35_c.i:11. +[value] Recording results for addressee +[value] Done for function addressee +[value] computing for function printf <- main. + Called from tests/value/cert_exp35_c.i:11. +tests/value/cert_exp35_c.i:11:[kernel] warning: Neither code nor specification for function printf, generating default assigns from the prototype +[value] using specification for function printf +[value] Done for function printf +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function addressee: + result.a[0] ∈ {119} + .a[1] ∈ {111} + .a[2] ∈ {114} + .a[3] ∈ {108} + .a[4] ∈ {100} + .a[5] ∈ {0} +[value:final-states] Values at end of function main: + __retres ∈ {0} +[from] Computing for function addressee +[from] Done for function addressee +[from] Computing for function main +[from] Computing for function printf <-main +[from] Done for function printf +tests/value/cert_exp35_c.i:11:[from] warning: variadic call detected. Using only 1 argument(s). +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function addressee: + \result FROM \nothing +[from] Function printf: + NO EFFECTS +[from] Function main: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function addressee: + result +[inout] Inputs for function addressee: + \nothing +[inout] Out (internal) for function main: + tmp; __retres +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/changeret.err.oracle b/tests/value/oracle_symblocs/changeret.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/changeret.res.oracle b/tests/value/oracle_symblocs/changeret.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e9bb49d46f30522d6cf0bd5ace539e8d95f40431 --- /dev/null +++ b/tests/value/oracle_symblocs/changeret.res.oracle @@ -0,0 +1,94 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/changeret.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + x ∈ {0} + y ∈ {0} + p ∈ {0} + v ∈ [--..--] +[value] computing for function main1 <- main. + Called from tests/value/changeret.i:31. +[value] computing for function f <- main1 <- main. + Called from tests/value/changeret.i:15. +[value] Recording results for f +[value] Done for function f +[value] Recording results for main1 +[value] Done for function main1 +[value] computing for function main2 <- main. + Called from tests/value/changeret.i:32. +[value] computing for function g <- main2 <- main. + Called from tests/value/changeret.i:27. +tests/value/changeret.i:19:[value] warning: out of bounds read. assert \valid_read(p); +[value] Recording results for g +[value] Done for function g +[value] Recording results for main2 +[value] Done for function main2 +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + p ∈ {{ &y }} + __retres ∈ {1} +[value:final-states] Values at end of function g: + z ∈ {1} + __retres ∈ {1} +[value:final-states] Values at end of function main1: + x ∈ {0} + p ∈ {{ &y }} +[value:final-states] Values at end of function main2: + y ∈ {1} + p ∈ {{ &y }} +[value:final-states] Values at end of function main: + x ∈ {0} + y ∈ {1} + p ∈ {{ &y }} +[from] Computing for function f +[from] Done for function f +[from] Computing for function g +[from] Done for function g +[from] Computing for function main1 +[from] Done for function main1 +[from] Computing for function main2 +[from] Done for function main2 +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + p FROM \nothing + \result FROM \nothing +[from] Function g: + \result FROM \nothing +[from] Function main1: + x FROM \nothing + p FROM \nothing +[from] Function main2: + y FROM v + p FROM v +[from] Function main: + x FROM \nothing + y FROM v + p FROM v +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + p; __retres +[inout] Inputs for function f: + \nothing +[inout] Out (internal) for function g: + z; __retres +[inout] Inputs for function g: + y; p +[inout] Out (internal) for function main1: + x; p +[inout] Inputs for function main1: + p +[inout] Out (internal) for function main2: + y; p +[inout] Inputs for function main2: + y; p; v +[inout] Out (internal) for function main: + x; y; p +[inout] Inputs for function main: + y; p; v diff --git a/tests/value/oracle_symblocs/cmp.err.oracle b/tests/value/oracle_symblocs/cmp.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/cmp.res.oracle b/tests/value/oracle_symblocs/cmp.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..0075a05b951282a297769b22df05fe65836b97e1 --- /dev/null +++ b/tests/value/oracle_symblocs/cmp.res.oracle @@ -0,0 +1,42 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/cmp.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +tests/value/cmp.i:10:[value] warning: accessing out of bounds index. assert 0 ≤ d; +tests/value/cmp.i:10:[value] warning: accessing out of bounds index. assert d < 10; +[value] computing for function cmp <- main. + Called from tests/value/cmp.i:11. +tests/value/cmp.i:4:[value] warning: accessing uninitialized left-value. assert \initialized(s1); +tests/value/cmp.i:4:[value] warning: out of bounds read. assert \valid_read(s1); +[value] Recording results for cmp +[value] Done for function cmp +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function cmp: + __retres ∈ {1} +[value:final-states] Values at end of function main: + T[0..9] ∈ [--..--] or UNINITIALIZED + r ∈ {1} +[from] Computing for function cmp +[from] Done for function cmp +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function cmp: + \result FROM \nothing +[from] Function main: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function cmp: + __retres +[inout] Inputs for function cmp: + T[0..9]; "V1.2"[bits 0 to 7] +[inout] Out (internal) for function main: + T[0..9]; r +[inout] Inputs for function main: + "V1.2"[bits 0 to 7] diff --git a/tests/value/oracle_symblocs/cmp_ptr.0.err.oracle b/tests/value/oracle_symblocs/cmp_ptr.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/cmp_ptr.0.res.oracle b/tests/value/oracle_symblocs/cmp_ptr.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..0877837e1deed513327d4ea67af17c8293b3516c --- /dev/null +++ b/tests/value/oracle_symblocs/cmp_ptr.0.res.oracle @@ -0,0 +1,107 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/cmp_ptr.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + p ∈ {0} + T[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {2} + [3] ∈ {3} + [4] ∈ {4} + [5] ∈ {5} + [6] ∈ {6} + [7] ∈ {7} + [8] ∈ {8} + [9] ∈ {9} + C[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {2} + [3] ∈ {3} + [4] ∈ {4} + [5] ∈ {5} + [6] ∈ {6} + [7] ∈ {7} + [8] ∈ {8} + [9] ∈ {9} + q ∈ {0} + top_p ∈ [--..--] + top_q ∈ [--..--] + x ∈ {0} + y ∈ {0} + z ∈ {0} + t ∈ {0} + r ∈ {0} + ff ∈ {0} +tests/value/cmp_ptr.i:21:[value] warning: pointer comparison. assert \pointer_comparable((void *)p, (void *)(&T[5])); +tests/value/cmp_ptr.i:21:[value] warning: out of bounds write. assert \valid(p); +tests/value/cmp_ptr.i:21:[value] warning: out of bounds write. assert \valid(q); +tests/value/cmp_ptr.i:22:[value] warning: pointer comparison. assert \pointer_comparable((void *)0, (void *)(&y+2)); +tests/value/cmp_ptr.i:24:[value] warning: non-finite float value. assert \is_finite(ff); +tests/value/cmp_ptr.i:24:[value] warning: pointer comparison. assert \pointer_comparable((void *)0, (void *)ff); +tests/value/cmp_ptr.i:28:[value] warning: signed overflow. assert -2147483648 ≤ 1+(int)tmp_0; + (tmp_0 from u?& f:& g) +tests/value/cmp_ptr.i:28:[value] warning: signed overflow. assert 1+(int)tmp_0 ≤ 2147483647; + (tmp_0 from u?& f:& g) +tests/value/cmp_ptr.i:28:[value] warning: pointer comparison. + assert \pointer_comparable((void *)((int)(1+(int)tmp_0)), (void *)0); + (tmp_0 from u?& f:& g) +tests/value/cmp_ptr.i:30:[value] warning: pointer comparison. + assert \pointer_comparable((void *)((int *)T-1), (void *)0); +tests/value/cmp_ptr.i:32:[value] warning: pointer comparison. + assert \pointer_comparable((void (*)())0, (void (*)())(&f+3)); +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + p ∈ {{ &T + [-8589934588..36],0%4 }} + T[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {2} + [3] ∈ {3} + [4] ∈ {4} + [5] ∈ {5; 88} + [6] ∈ {6; 88} + [7] ∈ {7; 88} + [8] ∈ {8; 88} + [9] ∈ {9; 88} + C[0] ∈ {0; 77} + [1] ∈ {1; 77} + [2] ∈ {2; 77} + [3] ∈ {3; 77} + [4] ∈ {4; 77} + [5] ∈ {5; 77} + [6] ∈ {6; 77} + [7] ∈ {7; 77} + [8] ∈ {8; 77} + [9] ∈ {9; 77} + q ∈ {{ &C + [-2147483647..2147483648] }} + x ∈ {0} + y ∈ {0; 1} + z ∈ {0} + t ∈ {0} + r ∈ {0} + ff ∈ {{ &y + {8} }} + __retres ∈ {0} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + p FROM top_p + T[5..9] FROM top_p (and SELF) + C[0..9] FROM top_p; top_q (and SELF) + q FROM top_q + x FROM \nothing + y FROM \nothing + z FROM u + t FROM u + r FROM \nothing + ff FROM \nothing + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + p; T[5..9]; C[0..9]; q; x; y; z; t; r; ff; tmp; tmp_0; __retres +[inout] Inputs for function main: + p; q; top_p; top_q; ff diff --git a/tests/value/oracle_symblocs/cmp_ptr.1.err.oracle b/tests/value/oracle_symblocs/cmp_ptr.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/cmp_ptr.1.res.oracle b/tests/value/oracle_symblocs/cmp_ptr.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..3299e6457df1c6c154b3ccfa4055fd175b1876fb --- /dev/null +++ b/tests/value/oracle_symblocs/cmp_ptr.1.res.oracle @@ -0,0 +1,107 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/cmp_ptr.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + p ∈ {0} + T[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {2} + [3] ∈ {3} + [4] ∈ {4} + [5] ∈ {5} + [6] ∈ {6} + [7] ∈ {7} + [8] ∈ {8} + [9] ∈ {9} + C[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {2} + [3] ∈ {3} + [4] ∈ {4} + [5] ∈ {5} + [6] ∈ {6} + [7] ∈ {7} + [8] ∈ {8} + [9] ∈ {9} + q ∈ {0} + top_p ∈ [--..--] + top_q ∈ [--..--] + x ∈ {0} + y ∈ {0} + z ∈ {0} + t ∈ {0} + r ∈ {0} + ff ∈ {0} +tests/value/cmp_ptr.i:21:[value] warning: pointer comparison. assert \pointer_comparable((void *)p, (void *)(&T[5])); +tests/value/cmp_ptr.i:21:[value] warning: out of bounds write. assert \valid(p); +tests/value/cmp_ptr.i:21:[value] warning: out of bounds write. assert \valid(q); +tests/value/cmp_ptr.i:22:[value] warning: pointer comparison. assert \pointer_comparable((void *)0, (void *)(&y+2)); +tests/value/cmp_ptr.i:24:[value] warning: non-finite float value. assert \is_finite(ff); +tests/value/cmp_ptr.i:24:[value] warning: pointer comparison. assert \pointer_comparable((void *)0, (void *)ff); +tests/value/cmp_ptr.i:28:[value] warning: signed overflow. assert -2147483648 ≤ 1+(int)tmp_0; + (tmp_0 from u?& f:& g) +tests/value/cmp_ptr.i:28:[value] warning: signed overflow. assert 1+(int)tmp_0 ≤ 2147483647; + (tmp_0 from u?& f:& g) +tests/value/cmp_ptr.i:28:[value] warning: pointer comparison. + assert \pointer_comparable((void *)((int)(1+(int)tmp_0)), (void *)0); + (tmp_0 from u?& f:& g) +tests/value/cmp_ptr.i:30:[value] warning: pointer comparison. + assert \pointer_comparable((void *)((int *)T-1), (void *)0); +tests/value/cmp_ptr.i:32:[value] warning: pointer comparison. + assert \pointer_comparable((void (*)())0, (void (*)())(&f+3)); +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + p ∈ {{ &T + [-8589934588..8589934592],0%4 }} + T[0] ∈ {0; 88} + [1] ∈ {1; 88} + [2] ∈ {2; 88} + [3] ∈ {3; 88} + [4] ∈ {4; 88} + [5] ∈ {5; 88} + [6] ∈ {6; 88} + [7] ∈ {7; 88} + [8] ∈ {8; 88} + [9] ∈ {9; 88} + C[0] ∈ {0; 77} + [1] ∈ {1; 77} + [2] ∈ {2; 77} + [3] ∈ {3; 77} + [4] ∈ {4; 77} + [5] ∈ {5; 77} + [6] ∈ {6; 77} + [7] ∈ {7; 77} + [8] ∈ {8; 77} + [9] ∈ {9; 77} + q ∈ {{ &C + [-2147483647..2147483648] }} + x ∈ {0; 1} + y ∈ {0; 1} + z ∈ {0} + t ∈ {0; 1} + r ∈ {0; 1} + ff ∈ {{ &y + {8} }} + __retres ∈ {0} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + p FROM top_p + T[0..9] FROM top_p (and SELF) + C[0..9] FROM top_p; top_q (and SELF) + q FROM top_q + x FROM \nothing + y FROM \nothing + z FROM u + t FROM u + r FROM \nothing + ff FROM \nothing + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + p; T[0..9]; C[0..9]; q; x; y; z; t; r; ff; tmp; tmp_0; __retres +[inout] Inputs for function main: + p; q; top_p; top_q; ff diff --git a/tests/value/oracle_symblocs/cmp_ptr_follow_all_branches.0.err.oracle b/tests/value/oracle_symblocs/cmp_ptr_follow_all_branches.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/cmp_ptr_follow_all_branches.0.res.oracle b/tests/value/oracle_symblocs/cmp_ptr_follow_all_branches.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..23cb2318006338da4640e719370b27ff7b3b0ec8 --- /dev/null +++ b/tests/value/oracle_symblocs/cmp_ptr_follow_all_branches.0.res.oracle @@ -0,0 +1,31 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/cmp_ptr_follow_all_branches.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + a ∈ {0} + p ∈ {{ (char *)&a }} + q ∈ {{ &a }} +tests/value/cmp_ptr_follow_all_branches.i:14:[value] warning: pointer comparison. + assert \pointer_comparable((void *)(p+(unsigned int)((int)(-5))), (void *)p); +[value] Called Frama_C_show_each_2() +tests/value/cmp_ptr_follow_all_branches.i:15:[value] warning: pointer comparison. + assert \pointer_comparable((void *)(q+(unsigned int)((int)(-5))), (void *)q); +[value] Called Frama_C_show_each_4() +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + __retres ∈ {0} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + __retres +[inout] Inputs for function main: + p; q diff --git a/tests/value/oracle_symblocs/cmp_ptr_follow_all_branches.1.err.oracle b/tests/value/oracle_symblocs/cmp_ptr_follow_all_branches.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/cmp_ptr_follow_all_branches.1.res.oracle b/tests/value/oracle_symblocs/cmp_ptr_follow_all_branches.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..028029b522811c14e3930bbeab8ba9efd1ca6e8a --- /dev/null +++ b/tests/value/oracle_symblocs/cmp_ptr_follow_all_branches.1.res.oracle @@ -0,0 +1,33 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/cmp_ptr_follow_all_branches.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + a ∈ {0} + p ∈ {{ (char *)&a }} + q ∈ {{ &a }} +tests/value/cmp_ptr_follow_all_branches.i:14:[value] warning: pointer comparison. + assert \pointer_comparable((void *)(p+(unsigned int)((int)(-5))), (void *)p); +[value] Called Frama_C_show_each_1() +[value] Called Frama_C_show_each_2() +tests/value/cmp_ptr_follow_all_branches.i:15:[value] warning: pointer comparison. + assert \pointer_comparable((void *)(q+(unsigned int)((int)(-5))), (void *)q); +[value] Called Frama_C_show_each_3() +[value] Called Frama_C_show_each_4() +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + __retres ∈ {0} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + __retres +[inout] Inputs for function main: + p; q diff --git a/tests/value/oracle_symblocs/cond.err.oracle b/tests/value/oracle_symblocs/cond.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/cond.res.oracle b/tests/value/oracle_symblocs/cond.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..21c7763985b58e0420558fdc177432d97fee1a52 --- /dev/null +++ b/tests/value/oracle_symblocs/cond.res.oracle @@ -0,0 +1,86 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/cond.i (no preprocessing) +tests/value/cond.i:34:[kernel] warning: Calling undeclared function unknf. Old style K&R code? +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + G ∈ {0} + x ∈ {0} + y ∈ {0} + i ∈ {0} + t[0] ∈ {1} + [1] ∈ {2} + [2] ∈ {3} + [3] ∈ {4} + [4] ∈ {5} + [5] ∈ {6} + [6] ∈ {7} + [7] ∈ {8} + p ∈ {0} + z ∈ {0} + R ∈ {0} +tests/value/cond.i:14:[value] warning: out of bounds read. assert \valid_read(argv); +tests/value/cond.i:14:[value] warning: out of bounds read. assert \valid_read(*argv); +[value] computing for function f <- main. + Called from tests/value/cond.i:20. +[value] Recording results for f +[value] Done for function f +[value] computing for function unknf <- main. + Called from tests/value/cond.i:34. +tests/value/cond.i:34:[kernel] warning: Neither code nor specification for function unknf, generating default assigns from the prototype +[value] using specification for function unknf +[value] Done for function unknf +[value] Called Frama_C_show_each_2({0; 1; 2; 4; 5; 6; 7; 8}) +[value] Called Frama_C_show_each_3([0..8]) +[value] Called Frama_C_show_each_4([0..16],0%2) +[value] Called Frama_C_show_each_5([0..16],0%2) +[value] Called Frama_C_show_each_6({0; 2; 4; 6; 8; 12; 14; 16}) +[value] Called Frama_C_show_each_7([0..16],0%2) +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + +[value:final-states] Values at end of function main: + x ∈ [-128..0] + y ∈ [-10..32767] + i ∈ {1; 2; 3; 4; 5; 6; 7} + p ∈ {{ &t }} + z ∈ {0; 2} + R ∈ {0; 3} + r ∈ {-51} + inRet ∈ {-51} + c ∈ [--..--] + s ∈ [--..--] + u ∈ [0..8] + v ∈ [0..16],0%2 +[from] Computing for function f +[from] Done for function f +[from] Computing for function main +[from] Computing for function unknf <-main +[from] Done for function unknf +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + \result FROM G +[from] Function unknf: + \result FROM \nothing +[from] Function main: + x FROM argv; S_argv[0]; S_0_S_argv[0] (and SELF) + y FROM argc (and SELF) + i FROM argc + p FROM \nothing + z FROM t[1..3]; argc (and SELF) + R FROM t[1..7]; argc (and SELF) + \result FROM G +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + tmp +[inout] Inputs for function f: + G +[inout] Out (internal) for function main: + x; y; i; p; z; R; r; inRet; c; s; tmp; tmp_0; u; tmp_1; v +[inout] Inputs for function main: + G; i; t[1..7]; p; S_argv[0]; S_0_S_argv[0] diff --git a/tests/value/oracle_symblocs/cond2.0.err.oracle b/tests/value/oracle_symblocs/cond2.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/cond2.0.res.oracle b/tests/value/oracle_symblocs/cond2.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..7a95866d9d16cfcd78c60c8ae7ea8ced0e059d66 --- /dev/null +++ b/tests/value/oracle_symblocs/cond2.0.res.oracle @@ -0,0 +1,50 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/cond2.i (no preprocessing) +[value] Analyzing a complete application starting at zero_ou_un_0 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + Gx ∈ [--..--] + Gy ∈ [--..--] + px ∈ {0} + py ∈ {0} + x ∈ {0} + y ∈ {0} + T[0..99] ∈ {0} + r ∈ {0} + s ∈ {0} + t ∈ {0} + u ∈ {0} +tests/value/cond2.i:26:[value] entering loop for the first time +tests/value/cond2.i:26:[value] warning: signed overflow. assert x+2 ≤ 2147483647; +tests/value/cond2.i:27:[value] entering loop for the first time +tests/value/cond2.i:27:[value] warning: signed overflow. assert y+5 ≤ 2147483647; +[value] Recording results for zero_ou_un_0 +[value] done for function zero_ou_un_0 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function zero_ou_un_0: + x ∈ {0; 2} + y ∈ {1; 2} + r ∈ {0; 1} + s ∈ {0; 1} + t ∈ {0; 1} + u ∈ {1} + i ∈ [0..2147483647] +[from] Computing for function zero_ou_un_0 +[from] Done for function zero_ou_un_0 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function zero_ou_un_0: + x FROM Gx + y FROM Gy + r FROM Gx (and SELF) + s FROM Gx; Gy (and SELF) + t FROM Gx; Gy (and SELF) + u FROM Gx +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function zero_ou_un_0: + x; y; r; s; t; u; i +[inout] Out (external) for function zero_ou_un_0: + x; y; r; s; t; u +[inout] Inputs for function zero_ou_un_0: + Gx; Gy; x; y diff --git a/tests/value/oracle_symblocs/cond2.1.err.oracle b/tests/value/oracle_symblocs/cond2.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/cond2.1.res.oracle b/tests/value/oracle_symblocs/cond2.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..6044458fc5ee5bc9005d39dc318c19dee7109a86 --- /dev/null +++ b/tests/value/oracle_symblocs/cond2.1.res.oracle @@ -0,0 +1,149 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/cond2.i (no preprocessing) +[value] Analyzing a complete application starting at un_1 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + Gx ∈ [--..--] + Gy ∈ [--..--] + px ∈ {0} + py ∈ {0} + x ∈ {0} + y ∈ {0} + T[0..99] ∈ {0} + r ∈ {0} + s ∈ {0} + t ∈ {0} + u ∈ {0} +tests/value/cond2.i:52:[value] entering loop for the first time +tests/value/cond2.i:52:[value] warning: signed overflow. assert x+2 ≤ 2147483647; +tests/value/cond2.i:53:[value] entering loop for the first time +tests/value/cond2.i:53:[value] warning: signed overflow. assert y+2 ≤ 2147483647; +tests/value/cond2.i:59:[value] entering loop for the first time +tests/value/cond2.i:59:[value] warning: signed overflow. assert x+4 ≤ 2147483647; +tests/value/cond2.i:60:[value] entering loop for the first time +tests/value/cond2.i:60:[value] warning: signed overflow. assert y+4 ≤ 2147483647; +tests/value/cond2.i:66:[value] entering loop for the first time +tests/value/cond2.i:66:[value] warning: out of bounds write. assert \valid(px); +tests/value/cond2.i:67:[value] entering loop for the first time +tests/value/cond2.i:67:[value] warning: out of bounds write. assert \valid(py); +[value] Recording results for un_1 +[value] done for function un_1 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function un_1: + px ∈ {{ &T + [0..384],0%16 }} + py ∈ {{ &T + [4..388],4%16 }} + x ∈ [0..2147483646],0%2 + y ∈ [1..2147483647],1%2 + T[0..3] ∈ {0} + [4] ∈ {0; 1} + [5] ∈ {0; 2} + [6..7] ∈ {0} + [8] ∈ {0; 1} + [9] ∈ {0; 2} + [10..11] ∈ {0} + [12] ∈ {0; 1} + [13] ∈ {0; 2} + [14..15] ∈ {0} + [16] ∈ {0; 1} + [17] ∈ {0; 2} + [18..19] ∈ {0} + [20] ∈ {0; 1} + [21] ∈ {0; 2} + [22..23] ∈ {0} + [24] ∈ {0; 1} + [25] ∈ {0; 2} + [26..27] ∈ {0} + [28] ∈ {0; 1} + [29] ∈ {0; 2} + [30..31] ∈ {0} + [32] ∈ {0; 1} + [33] ∈ {0; 2} + [34..35] ∈ {0} + [36] ∈ {0; 1} + [37] ∈ {0; 2} + [38..39] ∈ {0} + [40] ∈ {0; 1} + [41] ∈ {0; 2} + [42..43] ∈ {0} + [44] ∈ {0; 1} + [45] ∈ {0; 2} + [46..47] ∈ {0} + [48] ∈ {0; 1} + [49] ∈ {0; 2} + [50..51] ∈ {0} + [52] ∈ {0; 1} + [53] ∈ {0; 2} + [54..55] ∈ {0} + [56] ∈ {0; 1} + [57] ∈ {0; 2} + [58..59] ∈ {0} + [60] ∈ {0; 1} + [61] ∈ {0; 2} + [62..63] ∈ {0} + [64] ∈ {0; 1} + [65] ∈ {0; 2} + [66..67] ∈ {0} + [68] ∈ {0; 1} + [69] ∈ {0; 2} + [70..71] ∈ {0} + [72] ∈ {0; 1} + [73] ∈ {0; 2} + [74..75] ∈ {0} + [76] ∈ {0; 1} + [77] ∈ {0; 2} + [78..79] ∈ {0} + [80] ∈ {0; 1} + [81] ∈ {0; 2} + [82..83] ∈ {0} + [84] ∈ {0; 1} + [85] ∈ {0; 2} + [86..87] ∈ {0} + [88] ∈ {0; 1} + [89] ∈ {0; 2} + [90..91] ∈ {0} + [92] ∈ {0; 1} + [93] ∈ {0; 2} + [94..95] ∈ {0} + [96] ∈ {0; 1} + [97] ∈ {0; 2} + [98..99] ∈ {0} + s ∈ {1} + t ∈ {1} + u ∈ {1} + r_0 ∈ {1} + i ∈ [0..2147483647] +[from] Computing for function un_1 +[from] Done for function un_1 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function un_1: + px FROM Gx + py FROM Gy + x FROM Gx + y FROM Gy + T{[4]; [8]; [12]; [16]; [20]; [24]; [28]; [32]; [36]; [40]; [44]; [48]; + [52]; [56]; [60]; [64]; [68]; [72]; [76]; [80]; [84]; [88]; [92]; [96]} + FROM Gx (and SELF) + {[5]; [9]; [13]; [17]; [21]; [25]; [29]; [33]; [37]; [41]; [45]; [49]; + [53]; [57]; [61]; [65]; [69]; [73]; [77]; [81]; [85]; [89]; [93]; [97]} + FROM Gy (and SELF) + s FROM Gx; Gy + t FROM Gx; Gy + u FROM Gx; Gy + \result FROM Gx; Gy +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function un_1: + px; py; x; y; + T{[4..5]; [8..9]; [12..13]; [16..17]; [20..21]; [24..25]; [28..29]; + [32..33]; [36..37]; [40..41]; [44..45]; [48..49]; [52..53]; [56..57]; + [60..61]; [64..65]; [68..69]; [72..73]; [76..77]; [80..81]; [84..85]; + [88..89]; [92..93]; [96..97]}; s; t; u; r_0; i +[inout] Out (external) for function un_1: + px; py; x; y; + T{[4..5]; [8..9]; [12..13]; [16..17]; [20..21]; [24..25]; [28..29]; + [32..33]; [36..37]; [40..41]; [44..45]; [48..49]; [52..53]; [56..57]; + [60..61]; [64..65]; [68..69]; [72..73]; [76..77]; [80..81]; [84..85]; + [88..89]; [92..93]; [96..97]}; s; t; u +[inout] Inputs for function un_1: + Gx; Gy; px; py; x; y; u diff --git a/tests/value/oracle_symblocs/cond3.err.oracle b/tests/value/oracle_symblocs/cond3.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/cond3.res.oracle b/tests/value/oracle_symblocs/cond3.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e3402fbaf9a7083af0c9331524761a5bf1398064 --- /dev/null +++ b/tests/value/oracle_symblocs/cond3.res.oracle @@ -0,0 +1,28 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/cond3.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + Gx ∈ {0} + r ∈ {0} + x ∈ {0} +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + r ∈ {-1} + x ∈ {1} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + r FROM \nothing + x FROM Gx + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + r; x +[inout] Inputs for function main: + Gx; r; x diff --git a/tests/value/oracle_symblocs/cond_integer_cast_of_float.err.oracle b/tests/value/oracle_symblocs/cond_integer_cast_of_float.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/cond_integer_cast_of_float.res.oracle b/tests/value/oracle_symblocs/cond_integer_cast_of_float.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..2293209fd4262232f42cc5e4bd2dc65d7751ae1a --- /dev/null +++ b/tests/value/oracle_symblocs/cond_integer_cast_of_float.res.oracle @@ -0,0 +1,192 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/cond_integer_cast_of_float.i (no preprocessing) +tests/value/cond_integer_cast_of_float.i:79:[kernel] warning: Floating-point constant 1.17 is not represented exactly. Will use 0x1.2b851eb851eb8p0. See documentation for option -warn-decimal-float +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + b ∈ {0} + f1 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + f3 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + f4 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + d1 ∈ [-1.79769313486e+308 .. 1.79769313486e+308] + d2 ∈ [-1.79769313486e+308 .. 1.79769313486e+308] + i ∈ [--..--] + c ∈ [--..--] +[value] computing for function main1 <- main. + Called from tests/value/cond_integer_cast_of_float.i:121. +tests/value/cond_integer_cast_of_float.i:13:[value] warning: function main1: precondition got status unknown. +[value] Called Frama_C_show_each_float_([2. .. 8.]) +[value] Called Frama_C_show_each_float_([-0. .. 4.99999952316]) +[value] Called Frama_C_show_each_float_([1. .. 8.]) +[value] Called Frama_C_show_each_float_([3. .. 3.99999976158]) +[value] Called Frama_C_show_each_double([2. .. 8.]) +[value] Called Frama_C_show_each_double([-0. .. 5.]) +[value] Called Frama_C_show_each_double([1. .. 8.]) +[value] Called Frama_C_show_each_double([3. .. 4.]) +[value] Called Frama_C_show_each([-0. .. 8.], [0..8]) +[value] Recording results for main1 +[value] Done for function main1 +[value] computing for function main2 <- main. + Called from tests/value/cond_integer_cast_of_float.i:123. +[value] DUMPING STATE of file tests/value/cond_integer_cast_of_float.i line 78 + b ∈ {0} + f1 ∈ [1.17000007629 .. 3.40282346639e+38] + f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + f3 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + f4 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + d1 ∈ [-1.79769313486e+308 .. 1.79769313486e+308] + d2 ∈ [-1.79769313486e+308 .. 1.79769313486e+308] + i ∈ [--..--] + c ∈ [--..--] + =END OF DUMP== +[value] DUMPING STATE of file tests/value/cond_integer_cast_of_float.i line 81 + b ∈ {0} + f1 ∈ [-3.40282346639e+38 .. 1.16999995708] + f2 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + f3 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + f4 ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + d1 ∈ [-1.79769313486e+308 .. 1.79769313486e+308] + d2 ∈ [-1.79769313486e+308 .. 1.79769313486e+308] + i ∈ [--..--] + c ∈ [--..--] + =END OF DUMP== +[value] Called Frama_C_show_each_double([1.16999995708 .. 1.79769313486e+308]) +[value] Called Frama_C_show_each_double([1.17 .. 1.79769313486e+308]) +[value] Recording results for main2 +[value] Done for function main2 +[value] computing for function main3 <- main. + Called from tests/value/cond_integer_cast_of_float.i:125. +tests/value/cond_integer_cast_of_float.i:96:[value] warning: function main3: precondition got status unknown. +tests/value/cond_integer_cast_of_float.i:97:[value] warning: function main3: precondition got status unknown. +tests/value/cond_integer_cast_of_float.i:101:[value] warning: assertion got status unknown. +tests/value/cond_integer_cast_of_float.i:102:[value] warning: assertion got status unknown. +tests/value/cond_integer_cast_of_float.i:103:[value] warning: assertion got status unknown. +tests/value/cond_integer_cast_of_float.i:106:[value] warning: assertion got status unknown. +tests/value/cond_integer_cast_of_float.i:109:[value] warning: assertion got status unknown. +tests/value/cond_integer_cast_of_float.i:112:[value] warning: assertion got status unknown. +tests/value/cond_integer_cast_of_float.i:113:[value] warning: assertion got status unknown. +[value] DUMPING STATE of file tests/value/cond_integer_cast_of_float.i line 115 + b ∈ {0} + f1 ∈ [10.0000009537 .. 3.40282346639e+38] + f2 ∈ [10.0000009537 .. 3.40282346639e+38] + f3 ∈ [10.0000009537 .. 3.40282346639e+38] + f4 ∈ [-1000. .. 1000.] + d1 ∈ [10. .. 1.79769313486e+308] + d2 ∈ [-1000. .. 1000.] + i ∈ [--..--] + c ∈ [--..--] + =END OF DUMP== +[value] Recording results for main3 +[value] Done for function main3 +[value] computing for function main3 <- main. + Called from tests/value/cond_integer_cast_of_float.i:127. +[value] DUMPING STATE of file tests/value/cond_integer_cast_of_float.i line 115 + b ∈ {0} + f1 ∈ [10.0000009537 .. 3.40282346639e+38] + f2 ∈ [10.0000009537 .. 3.40282346639e+38] + f3 ∈ [10.0000009537 .. 3.40282346639e+38] + f4 ∈ [-1000. .. 1000.] + d1 ∈ [10. .. 1.79769313486e+308] + d2 ∈ [-1000. .. 1000.] + i ∈ [--..--] + c ∈ [--..--] + =END OF DUMP== +[value] Recording results for main3 +[value] Done for function main3 +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value] Analyzing a complete application starting at mainbis +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + b ∈ {0} + f1 ∈ [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + f2 ∈ [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + f3 ∈ [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + f4 ∈ [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + d1 ∈ [-0x1.fffffffffffffp1023 .. 0x1.fffffffffffffp1023] + d2 ∈ [-0x1.fffffffffffffp1023 .. 0x1.fffffffffffffp1023] + i ∈ [--..--] + c ∈ [--..--] +[value] computing for function main <- mainbis. + Called from tests/value/cond_integer_cast_of_float.i:132. +[value] computing for function main1 <- main <- mainbis. + Called from tests/value/cond_integer_cast_of_float.i:121. +[value] Called Frama_C_show_each_float_([0x1.0000000000000p1 .. 0x1.0000000000000p3]) +[value] Called Frama_C_show_each_float_([-0x0.0000000000000p-1022 .. 0x1.3ffffe0000000p2]) +[value] Called Frama_C_show_each_float_([0x1.0000000000000p0 .. 0x1.0000000000000p3]) +[value] Called Frama_C_show_each_float_([0x1.8000000000000p1 .. 0x1.fffffe0000000p1]) +[value] Called Frama_C_show_each_double([0x1.0000000000000p1 .. 0x1.0000000000000p3]) +[value] Called Frama_C_show_each_double([-0x0.0000000000000p-1022 .. 0x1.3ffffffffffffp2]) +[value] Called Frama_C_show_each_double([0x1.0000000000000p0 .. 0x1.0000000000000p3]) +[value] Called Frama_C_show_each_double([0x1.8000000000000p1 .. 0x1.fffffffffffffp1]) +[value] Called Frama_C_show_each([-0x0.0000000000000p-1022 .. 0x1.0000000000000p3], + [0..8]) +[value] Recording results for main1 +[value] Done for function main1 +[value] computing for function main2 <- main <- mainbis. + Called from tests/value/cond_integer_cast_of_float.i:123. +[value] DUMPING STATE of file tests/value/cond_integer_cast_of_float.i line 78 + b ∈ {0} + f1 ∈ [0x1.2b85200000000p0 .. 0x1.fffffe0000000p127] + f2 ∈ [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + f3 ∈ [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + f4 ∈ [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + d1 ∈ [-0x1.fffffffffffffp1023 .. 0x1.fffffffffffffp1023] + d2 ∈ [-0x1.fffffffffffffp1023 .. 0x1.fffffffffffffp1023] + i ∈ [--..--] + c ∈ [--..--] + =END OF DUMP== +[value] DUMPING STATE of file tests/value/cond_integer_cast_of_float.i line 81 + b ∈ {0} + f1 ∈ [-0x1.fffffe0000000p127 .. 0x1.2b851e0000000p0] + f2 ∈ [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + f3 ∈ [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + f4 ∈ [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127] + d1 ∈ [-0x1.fffffffffffffp1023 .. 0x1.fffffffffffffp1023] + d2 ∈ [-0x1.fffffffffffffp1023 .. 0x1.fffffffffffffp1023] + i ∈ [--..--] + c ∈ [--..--] + =END OF DUMP== +[value] Called Frama_C_show_each_double([0x1.2b851e0000001p0 .. 0x1.fffffffffffffp1023]) +[value] Called Frama_C_show_each_double([0x1.2b851eb851eb9p0 .. 0x1.fffffffffffffp1023]) +[value] Recording results for main2 +[value] Done for function main2 +[value] computing for function main3 <- main <- mainbis. + Called from tests/value/cond_integer_cast_of_float.i:125. +[value] DUMPING STATE of file tests/value/cond_integer_cast_of_float.i line 115 + b ∈ {0} + f1 ∈ [0x1.4000020000000p3 .. 0x1.fffffe0000000p127] + f2 ∈ [0x1.4000020000000p3 .. 0x1.fffffe0000000p127] + f3 ∈ [0x1.4000020000000p3 .. 0x1.fffffe0000000p127] + f4 ∈ [-0x1.f400000000000p9 .. 0x1.f400000000000p9] + d1 ∈ [0x1.4000000000001p3 .. 0x1.fffffffffffffp1023] + d2 ∈ [-0x1.f400000000000p9 .. 0x1.f400000000000p9] + i ∈ [--..--] + c ∈ [--..--] + =END OF DUMP== +[value] Recording results for main3 +[value] Done for function main3 +[value] computing for function main3 <- main <- mainbis. + Called from tests/value/cond_integer_cast_of_float.i:127. +[value] DUMPING STATE of file tests/value/cond_integer_cast_of_float.i line 115 + b ∈ {0} + f1 ∈ [0x1.4000020000000p3 .. 0x1.fffffe0000000p127] + f2 ∈ [0x1.4000020000000p3 .. 0x1.fffffe0000000p127] + f3 ∈ [0x1.4000020000000p3 .. 0x1.fffffe0000000p127] + f4 ∈ [-0x1.f400000000000p9 .. 0x1.f400000000000p9] + d1 ∈ [0x1.4000000000001p3 .. 0x1.fffffffffffffp1023] + d2 ∈ [-0x1.f400000000000p9 .. 0x1.f400000000000p9] + i ∈ [--..--] + c ∈ [--..--] + =END OF DUMP== +[value] Recording results for main3 +[value] Done for function main3 +[value] Recording results for main +[value] Done for function main +[value] Recording results for mainbis +[value] done for function mainbis +[value] ====== VALUES COMPUTED ====== diff --git a/tests/value/oracle_symblocs/conditional_initializer.err.oracle b/tests/value/oracle_symblocs/conditional_initializer.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/conditional_initializer.res.oracle b/tests/value/oracle_symblocs/conditional_initializer.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..3f078c50039f04cb64cf9374ad401ca33d279d37 --- /dev/null +++ b/tests/value/oracle_symblocs/conditional_initializer.res.oracle @@ -0,0 +1,23 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/conditional_initializer.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + T[0] ∈ {2} +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + \nothing +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/const.err.oracle b/tests/value/oracle_symblocs/const.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/const.res.oracle b/tests/value/oracle_symblocs/const.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..b7e211b51a37e7d24b4d360b3813ed556176bdc7 --- /dev/null +++ b/tests/value/oracle_symblocs/const.res.oracle @@ -0,0 +1,534 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/const.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + G ∈ [--..--] + I ∈ {2} + J ∈ {8} + v ∈ [--..--] + X ∈ {0} + s.i1 ∈ {3} + .i2 ∈ {4} + t[0] ∈ {1} + [1] ∈ {2} + [2] ∈ {3} + [3] ∈ {4} + [4] ∈ {5} + [5] ∈ {6} + [6..9] ∈ {0} +[value] computing for function const_formal <- main. + Called from tests/value/const.i:84. +[value] Called Frama_C_show_each([-2147483648..2147483647]) +[value] Recording results for const_formal +[value] Done for function const_formal +[value] computing for function const_formal <- main. + Called from tests/value/const.i:85. +[value] Called Frama_C_show_each({42}) +[value] Recording results for const_formal +[value] Done for function const_formal +[value] computing for function modify_I <- main. + Called from tests/value/const.i:87. +[value] Called Frama_C_show_each({2}) +[value] computing for function pointer_to_const <- modify_I <- main. + Called from tests/value/const.i:39. +[value] Called Frama_C_show_each({2; 3}) +[value] Called Frama_C_show_each_dead() +[value] Recording results for pointer_to_const +[value] Done for function pointer_to_const +[value] computing for function const_destination <- modify_I <- main. + Called from tests/value/const.i:40. +[value] Called Frama_C_show_each({0; 2; 3}) +[value] Called Frama_C_show_each({{ &I }}) +[value] Recording results for const_destination +[value] Done for function const_destination +[value] Recording results for modify_I +[value] Done for function modify_I +[value] computing for function modify_J <- main. + Called from tests/value/const.i:88. +[value] Called Frama_C_show_each({8}) +[value] computing for function pointer_to_const <- modify_J <- main. + Called from tests/value/const.i:46. +[value] Called Frama_C_show_each({8; 9}) +[value] Called Frama_C_show_each_dead() +[value] Recording results for pointer_to_const +[value] Done for function pointer_to_const +[value] computing for function const_destination <- modify_J <- main. + Called from tests/value/const.i:47. +[value] Called Frama_C_show_each({0; 8; 9}) +[value] Called Frama_C_show_each({{ &J }}) +[value] Recording results for const_destination +[value] Done for function const_destination +[value] Recording results for modify_J +[value] Done for function modify_J +[value] computing for function modify_s <- main. + Called from tests/value/const.i:89. +[value] Called Frama_C_show_each({3}) +[value] computing for function pointer_to_const <- modify_s <- main. + Called from tests/value/const.i:53. +[value] Called Frama_C_show_each({4}) +[value] Called Frama_C_show_each_dead() +[value] Recording results for pointer_to_const +[value] Done for function pointer_to_const +[value] computing for function const_destination <- modify_s <- main. + Called from tests/value/const.i:54. +[value] Called Frama_C_show_each({0; 4}) +[value] Called Frama_C_show_each({{ &s + {4} }}) +[value] Recording results for const_destination +[value] Done for function const_destination +[value] Recording results for modify_s +[value] Done for function modify_s +[value] computing for function modify_t <- main. + Called from tests/value/const.i:90. +[value] Called Frama_C_show_each({6}) +[value] computing for function pointer_to_const <- modify_t <- main. + Called from tests/value/const.i:60. +[value] Called Frama_C_show_each({4}) +[value] Called Frama_C_show_each_dead() +[value] Recording results for pointer_to_const +[value] Done for function pointer_to_const +[value] computing for function const_destination <- modify_t <- main. + Called from tests/value/const.i:61. +[value] Called Frama_C_show_each({3}) +[value] Called Frama_C_show_each({{ &t + {8} }}) +[value] Recording results for const_destination +[value] Done for function const_destination +[value] Recording results for modify_t +[value] Done for function modify_t +[value] computing for function constrain_G <- main. + Called from tests/value/const.i:91. +tests/value/const.i:71:[value] warning: assertion got status unknown. +[value] Called Frama_C_show_each({1; 4}) +[value] Recording results for constrain_G +[value] Done for function constrain_G +[value] computing for function pointer_to_const_logic <- main. + Called from tests/value/const.i:93. +[value] Recording results for pointer_to_const_logic +[value] Done for function pointer_to_const_logic +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function const_destination: + I ∈ {0; 2; 3} + J ∈ {0; 8; 9} + s.i1 ∈ {3; 4} + .i2 ∈ {0; 4} + t[0] ∈ {1} + [1] ∈ {2} + [2] ∈ {0; 3} + [3] ∈ {0; 4} + [4] ∈ {5} + [5] ∈ {6; 7} + [6..9] ∈ {0} +[value:final-states] Values at end of function const_formal: + i ∈ [--..--] +[value:final-states] Values at end of function constrain_G: + r ∈ {3; 5} +[value:final-states] Values at end of function pointer_to_const: + I ∈ {0; 2; 3} + J ∈ {0; 8; 9} + s.i1 ∈ {3; 4} + .i2 ∈ {0; 4} + t[0] ∈ {1} + [1] ∈ {2} + [2] ∈ {3} + [3] ∈ {0; 4} + [4] ∈ {5} + [5] ∈ {6; 7} + [6..9] ∈ {0} +[value:final-states] Values at end of function modify_I: + I ∈ {0; 2; 3} + J ∈ {8} + s.i1 ∈ {3} + .i2 ∈ {4} + t[0] ∈ {1} + [1] ∈ {2} + [2] ∈ {3} + [3] ∈ {4} + [4] ∈ {5} + [5] ∈ {6} + [6..9] ∈ {0} +[value:final-states] Values at end of function modify_J: + I ∈ {0; 2; 3} + J ∈ {0; 8; 9} + s.i1 ∈ {3} + .i2 ∈ {4} + t[0] ∈ {1} + [1] ∈ {2} + [2] ∈ {3} + [3] ∈ {4} + [4] ∈ {5} + [5] ∈ {6} + [6..9] ∈ {0} +[value:final-states] Values at end of function modify_s: + I ∈ {0; 2; 3} + J ∈ {0; 8; 9} + s.i1 ∈ {3; 4} + .i2 ∈ {0; 4} + t[0] ∈ {1} + [1] ∈ {2} + [2] ∈ {3} + [3] ∈ {4} + [4] ∈ {5} + [5] ∈ {6} + [6..9] ∈ {0} +[value:final-states] Values at end of function modify_t: + I ∈ {0; 2; 3} + J ∈ {0; 8; 9} + s.i1 ∈ {3; 4} + .i2 ∈ {0; 4} + t[0] ∈ {1} + [1] ∈ {2} + [2] ∈ {0; 3} + [3] ∈ {0; 4} + [4] ∈ {5} + [5] ∈ {6; 7} + [6..9] ∈ {0} +[value:final-states] Values at end of function pointer_to_const_logic: + J ∈ {0; 8; 9; 12} +[value:final-states] Values at end of function main: + I ∈ {0; 2; 3} + J ∈ {0; 8; 9; 12} + s.i1 ∈ {3; 4} + .i2 ∈ {0; 4} + t[0] ∈ {1} + [1] ∈ {2} + [2] ∈ {0; 3} + [3] ∈ {0; 4} + [4] ∈ {5} + [5] ∈ {6; 7} + [6..9] ∈ {0} +[from] Computing for function const_destination +[from] Done for function const_destination +[from] Computing for function const_formal +[from] Done for function const_formal +[from] Computing for function constrain_G +[from] Done for function constrain_G +[from] Computing for function pointer_to_const +[from] Done for function pointer_to_const +[from] Computing for function modify_I +[from] Done for function modify_I +[from] Computing for function modify_J +[from] Done for function modify_J +[from] Computing for function modify_s +[from] Done for function modify_s +[from] Computing for function modify_t +[from] Done for function modify_t +[from] Computing for function pointer_to_const_logic +[from] Done for function pointer_to_const_logic +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function const_destination: + I FROM p (and SELF) + J FROM p (and SELF) + s.i2 FROM p (and SELF) + t[2] FROM p (and SELF) +[from] Function const_formal: + NO EFFECTS +[from] Function constrain_G: + NO EFFECTS +[from] Function pointer_to_const: + I FROM p (and SELF) + J FROM p (and SELF) + s.i2 FROM p (and SELF) + t[3] FROM p (and SELF) +[from] Function modify_I: + I FROM I; v (and SELF) + J FROM v (and SELF) + s.i2 FROM v (and SELF) + t[2..3] FROM v (and SELF) +[from] Function modify_J: + I FROM v (and SELF) + J FROM J; v (and SELF) + s.i2 FROM v (and SELF) + t[2..3] FROM v (and SELF) +[from] Function modify_s: + I FROM v (and SELF) + J FROM v (and SELF) + s.i1 FROM v; s.i1 (and SELF) + .i2 FROM v (and SELF) + t[2..3] FROM v (and SELF) +[from] Function modify_t: + I FROM v (and SELF) + J FROM v (and SELF) + s.i2 FROM v (and SELF) + t[2..3] FROM v (and SELF) + [5] FROM v; t[5] (and SELF) +[from] Function pointer_to_const_logic: + J FROM v; p (and SELF) +[from] Function main: + I FROM I; v (and SELF) + J FROM J; v (and SELF) + s.i1 FROM v; s.i1 (and SELF) + .i2 FROM v (and SELF) + t[2..3] FROM v (and SELF) + [5] FROM v; t[5] (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function const_destination: + I; J; s.i2; t[2] +[inout] Inputs for function const_destination: + I; J; s.i2; t[2] +[inout] Out (internal) for function const_formal: + i +[inout] Inputs for function const_formal: + v +[inout] Out (internal) for function constrain_G: + r +[inout] Inputs for function constrain_G: + G +[inout] Out (internal) for function pointer_to_const: + I; J; s.i2; t[3] +[inout] Inputs for function pointer_to_const: + I; J; s.i2; t[3] +[inout] Out (internal) for function modify_I: + I; J; s.i2; t[2..3] +[inout] Inputs for function modify_I: + I; J; v; s.i2; t[2..3] +[inout] Out (internal) for function modify_J: + I; J; s.i2; t[2..3] +[inout] Inputs for function modify_J: + I; J; v; s.i2; t[2..3] +[inout] Out (internal) for function modify_s: + I; J; s; t[2..3] +[inout] Inputs for function modify_s: + I; J; v; s; t[2..3] +[inout] Out (internal) for function modify_t: + I; J; s.i2; t{[2..3]; [5]} +[inout] Inputs for function modify_t: + I; J; v; s.i2; t{[2..3]; [5]} +[inout] Out (internal) for function pointer_to_const_logic: + J +[inout] Inputs for function pointer_to_const_logic: + v +[inout] Out (internal) for function main: + I; J; s; t{[2..3]; [5]} +[inout] Inputs for function main: + G; I; J; v; s; t{[2..3]; [5]} +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + G ∈ [--..--] + I ∈ {2} + J ∈ {8} + v ∈ [--..--] + X ∈ {0} + s.i1 ∈ {3} + .i2 ∈ {4} + t[0] ∈ {1} + [1] ∈ {2} + [2] ∈ {3} + [3] ∈ {4} + [4] ∈ {5} + [5] ∈ {6} + [6..9] ∈ {0} +[value] computing for function const_formal <- main. + Called from tests/value/const.i:84. +[value] Called Frama_C_show_each([-2147483648..2147483647]) +tests/value/const.i:21:[value] warning: out of bounds write. assert \valid(&i); +tests/value/const.i:21:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +[value] Recording results for const_formal +[value] Done for function const_formal +[value] computing for function const_formal <- main. + Called from tests/value/const.i:85. +[value] Called Frama_C_show_each({42}) +[value] Recording results for const_formal +[value] Done for function const_formal +[value] computing for function modify_I <- main. + Called from tests/value/const.i:87. +[value] Called Frama_C_show_each({2}) +tests/value/const.i:38:[value] warning: out of bounds write. assert \valid(&I); +tests/value/const.i:38:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +[value] computing for function pointer_to_const <- modify_I <- main. + Called from tests/value/const.i:39. +[value] Called Frama_C_show_each({2}) +tests/value/const.i:26:[value] warning: out of bounds write. assert \valid(p); +tests/value/const.i:26:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +[value] Recording results for pointer_to_const +[value] Done for function pointer_to_const +[value] computing for function const_destination <- modify_I <- main. + Called from tests/value/const.i:40. +[value] Called Frama_C_show_each({2}) +tests/value/const.i:32:[value] warning: out of bounds write. assert \valid(p); +tests/value/const.i:32:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +[value] Recording results for const_destination +[value] Done for function const_destination +[value] Recording results for modify_I +[value] Done for function modify_I +[value] computing for function modify_J <- main. + Called from tests/value/const.i:88. +[value] Called Frama_C_show_each({8}) +[value] computing for function pointer_to_const <- modify_J <- main. + Called from tests/value/const.i:46. +[value] Called Frama_C_show_each({8; 9}) +[value] Recording results for pointer_to_const +[value] Done for function pointer_to_const +[value] computing for function const_destination <- modify_J <- main. + Called from tests/value/const.i:47. +[value] Called Frama_C_show_each({8; 9}) +[value] Called Frama_C_show_each({{ &J }}) +[value] Recording results for const_destination +[value] Done for function const_destination +[value] Recording results for modify_J +[value] Done for function modify_J +[value] computing for function modify_s <- main. + Called from tests/value/const.i:89. +[value] Called Frama_C_show_each({3}) +tests/value/const.i:52:[value] warning: out of bounds write. assert \valid(&s.i1); +tests/value/const.i:52:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +[value] computing for function pointer_to_const <- modify_s <- main. + Called from tests/value/const.i:53. +[value] Called Frama_C_show_each({4}) +[value] Recording results for pointer_to_const +[value] Done for function pointer_to_const +[value] computing for function const_destination <- modify_s <- main. + Called from tests/value/const.i:54. +[value] Called Frama_C_show_each({4}) +[value] Recording results for const_destination +[value] Done for function const_destination +[value] Recording results for modify_s +[value] Done for function modify_s +[value] computing for function modify_t <- main. + Called from tests/value/const.i:90. +[value] Called Frama_C_show_each({6}) +tests/value/const.i:59:[value] warning: out of bounds write. assert \valid(&t[5]); +tests/value/const.i:59:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +[value] computing for function pointer_to_const <- modify_t <- main. + Called from tests/value/const.i:60. +[value] Called Frama_C_show_each({4}) +[value] Recording results for pointer_to_const +[value] Done for function pointer_to_const +[value] computing for function const_destination <- modify_t <- main. + Called from tests/value/const.i:61. +[value] Called Frama_C_show_each({3}) +[value] Recording results for const_destination +[value] Done for function const_destination +[value] Recording results for modify_t +[value] Done for function modify_t +[value] computing for function constrain_G <- main. + Called from tests/value/const.i:91. +[value] Called Frama_C_show_each({1; 4}) +[value] Recording results for constrain_G +[value] Done for function constrain_G +[value] computing for function pointer_to_const_logic <- main. + Called from tests/value/const.i:93. +tests/value/const.i:80:[value] warning: out of bounds write. assert \valid(p); +tests/value/const.i:80:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +[value] Recording results for pointer_to_const_logic +[value] Done for function pointer_to_const_logic +[value] Recording results for main +[value] done for function main +tests/value/const.i:21:[value] assertion 'Value,mem_access' got final status invalid. +tests/value/const.i:26:[value] assertion 'Value,mem_access' got final status invalid. +tests/value/const.i:38:[value] assertion 'Value,mem_access' got final status invalid. +tests/value/const.i:52:[value] assertion 'Value,mem_access' got final status invalid. +tests/value/const.i:59:[value] assertion 'Value,mem_access' got final status invalid. +tests/value/const.i:80:[value] assertion 'Value,mem_access' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function const_destination: + J ∈ {0} +[value:final-states] Values at end of function const_formal: + +[value:final-states] Values at end of function constrain_G: + r ∈ {3; 5} +[value:final-states] Values at end of function pointer_to_const: + NON TERMINATING FUNCTION +[value:final-states] Values at end of function modify_I: + J ∈ {8} +[value:final-states] Values at end of function modify_J: + J ∈ {0; 8; 9} +[value:final-states] Values at end of function modify_s: + J ∈ {0; 8; 9} +[value:final-states] Values at end of function modify_t: + J ∈ {0; 8; 9} +[value:final-states] Values at end of function pointer_to_const_logic: + +[value:final-states] Values at end of function main: + J ∈ {0; 8; 9} +[from] Computing for function const_destination +[from] Done for function const_destination +[from] Computing for function const_formal +[from] Done for function const_formal +[from] Computing for function constrain_G +[from] Done for function constrain_G +[from] Computing for function pointer_to_const +[from] Non-terminating function pointer_to_const (no dependencies) +[from] Done for function pointer_to_const +[from] Computing for function modify_I +[from] Done for function modify_I +[from] Computing for function modify_J +[from] Done for function modify_J +[from] Computing for function modify_s +[from] Done for function modify_s +[from] Computing for function modify_t +[from] Done for function modify_t +[from] Computing for function pointer_to_const_logic +[from] Done for function pointer_to_const_logic +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function const_destination: + J FROM p +[from] Function const_formal: + NO EFFECTS +[from] Function constrain_G: + NO EFFECTS +[from] Function pointer_to_const: + NON TERMINATING - NO EFFECTS +[from] Function modify_I: + J FROM v (and SELF) +[from] Function modify_J: + J FROM J; v (and SELF) +[from] Function modify_s: + J FROM v (and SELF) +[from] Function modify_t: + J FROM v (and SELF) +[from] Function pointer_to_const_logic: + J FROM v; p (and SELF) +[from] Function main: + J FROM J; v (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function const_destination: + J +[inout] Inputs for function const_destination: + I; J; s.i2; t[2] +[inout] Out (internal) for function const_formal: + \nothing +[inout] Inputs for function const_formal: + v +[inout] Out (internal) for function constrain_G: + r +[inout] Inputs for function constrain_G: + G +[inout] Out (internal) for function pointer_to_const: + \nothing +[inout] Inputs for function pointer_to_const: + I; J; s.i2; t[3] +[inout] Out (internal) for function modify_I: + J +[inout] Inputs for function modify_I: + I; J; v; s.i2; t[2..3] +[inout] Out (internal) for function modify_J: + J +[inout] Inputs for function modify_J: + I; J; v; s.i2; t[2..3] +[inout] Out (internal) for function modify_s: + J +[inout] Inputs for function modify_s: + I; J; v; s; t[2..3] +[inout] Out (internal) for function modify_t: + J +[inout] Inputs for function modify_t: + I; J; v; s.i2; t{[2..3]; [5]} +[inout] Out (internal) for function pointer_to_const_logic: + \nothing +[inout] Inputs for function pointer_to_const_logic: + v +[inout] Out (internal) for function main: + J +[inout] Inputs for function main: + G; I; J; v; s; t{[2..3]; [5]} diff --git a/tests/value/oracle_symblocs/const2.err.oracle b/tests/value/oracle_symblocs/const2.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/const2.res.oracle b/tests/value/oracle_symblocs/const2.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..63222883e639695a782b8e9d05121bbb539dfbfc --- /dev/null +++ b/tests/value/oracle_symblocs/const2.res.oracle @@ -0,0 +1,28 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/const2.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + T[0].a ∈ {1} + [0].[bits 8 to 31] ∈ {0} + [0].b ∈ {2} + [1].a ∈ {3} + [1].[bits 8 to 31] ∈ {0} + [1].b ∈ {4} +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + __retres ∈ {2} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + \result FROM T[0].b +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + __retres +[inout] Inputs for function main: + T[0].b diff --git a/tests/value/oracle_symblocs/const_syntax.err.oracle b/tests/value/oracle_symblocs/const_syntax.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/const_syntax.res.oracle b/tests/value/oracle_symblocs/const_syntax.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..eb37aa8c2703cea5dba6f293d31315b5a999c076 --- /dev/null +++ b/tests/value/oracle_symblocs/const_syntax.res.oracle @@ -0,0 +1,25 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/const_syntax.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + INSTRU_N_00_01_001_CRC___1525983317999999999994352352523523993424999 + ∈ {0} +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + INSTRU_N_00_01_001_CRC___1525983317999999999994352352523523993425000 + ∈ {0} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + INSTRU_N_00_01_001_CRC___1525983317999999999994352352523523993425000 +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/const_typedef.err.oracle b/tests/value/oracle_symblocs/const_typedef.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/const_typedef.res.oracle b/tests/value/oracle_symblocs/const_typedef.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..f40b0a64515781e3c6236d8dcce455276c8836fd --- /dev/null +++ b/tests/value/oracle_symblocs/const_typedef.res.oracle @@ -0,0 +1,84 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/const_typedef.i (no preprocessing) +/* Generated by Frama-C */ +typedef int INT[3][3]; +typedef int INT3[2][7]; +struct __anonstruct_ts_1 { + int s1 ; + int s2 ; +}; +typedef struct __anonstruct_ts_1 ts; +typedef int INT4[7]; +INT const __attribute__((__BLA__)) x1 = {{1, 2, 3}, {4, 5, 6}, {7}}; +INT const __attribute__((__BLA__)) x1bis; +int const ( __attribute__((__BLA__)) x2)[3][3] = {{1, 2, 3}, {4, 5, 6}, {7}}; +INT3 const __attribute__((__BLA__)) x3 = {{1, 2, 3, 4, 5, 6, 7}}; +ts const __attribute__((__BLA__)) s[3] = + {{.s1 = 1, .s2 = 2}, {.s1 = 3, .s2 = 4}, {.s1 = 5, .s2 = 0}}; +INT4 const y1 = {0, 1, 2, 3, 4}; +int const y2[5] = {1, 2, 3, 4, 5}; +int const y3[7]; + +int const y3[7] = {1, 2}; +int main(void) +{ + int __retres; + __retres = 0; + return __retres; +} + + +[value] Analyzing an incomplete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + x1[0][0] ∈ {1} + [0][1] ∈ {2} + [0][2] ∈ {3} + [1][0] ∈ {4} + [1][1] ∈ {5} + [1][2] ∈ {6} + [2][0] ∈ {7} + [2][1..2] ∈ {0} + x1bis[0..2][0..2] ∈ {0} + x2[0][0] ∈ {1} + [0][1] ∈ {2} + [0][2] ∈ {3} + [1][0] ∈ {4} + [1][1] ∈ {5} + [1][2] ∈ {6} + [2][0] ∈ {7} + [2][1..2] ∈ {0} + x3[0][0] ∈ {1} + [0][1] ∈ {2} + [0][2] ∈ {3} + [0][3] ∈ {4} + [0][4] ∈ {5} + [0][5] ∈ {6} + [0][6] ∈ {7} + [1][0..6] ∈ {0} + s[0].s1 ∈ {1} + [0].s2 ∈ {2} + [1].s1 ∈ {3} + [1].s2 ∈ {4} + [2].s1 ∈ {5} + [2].s2 ∈ {0} + y1[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {2} + [3] ∈ {3} + [4] ∈ {4} + [5..6] ∈ {0} + y2[0] ∈ {1} + [1] ∈ {2} + [2] ∈ {3} + [3] ∈ {4} + [4] ∈ {5} + y3[0] ∈ {1} + [1] ∈ {2} + [2..6] ∈ {0} +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + __retres ∈ {0} diff --git a/tests/value/oracle_symblocs/constarraystructlibentry.err.oracle b/tests/value/oracle_symblocs/constarraystructlibentry.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/constarraystructlibentry.res.oracle b/tests/value/oracle_symblocs/constarraystructlibentry.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..4247799b7a96314e8b0b1ce0d8aa631fb0d45f1f --- /dev/null +++ b/tests/value/oracle_symblocs/constarraystructlibentry.res.oracle @@ -0,0 +1,169 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/constarraystructlibentry.i (no preprocessing) +[value] Analyzing an incomplete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + t[0] ∈ {1} + [1] ∈ {2} + [2] ∈ {3} + [3] ∈ {4} + [4] ∈ {5} + t2[0][0] ∈ {1} + [0][1] ∈ {2} + [0][2] ∈ {3} + [1][0] ∈ {4} + [1][1] ∈ {5} + [1][2] ∈ {6} + [2][0] ∈ {7} + [2][1] ∈ {8} + [2][2] ∈ {9} + t3[0][0] ∈ {10} + [0][1] ∈ {20} + [0][2] ∈ {30} + [1][0] ∈ {40} + [1][1] ∈ {50} + [1][2] ∈ {60} + [2][0] ∈ {70} + [2][1] ∈ {80} + [2][2] ∈ {90} + t4[0] ∈ {1} + [1] ∈ {2} + [2] ∈ {3} + [3] ∈ {4} + [4] ∈ {5} + [5] ∈ {6} + [6] ∈ {7} + [7] ∈ {8} + [8] ∈ {9} + [9] ∈ {10} + [10..11] ∈ {0} + t5[0].f1 ∈ [--..--] + [0].f2 ∈ {2} + [1].f1 ∈ [--..--] + [1].f2 ∈ {0} + [2].f1 ∈ [--..--] + [2].f2 ∈ {6} + [3].f1 ∈ [--..--] + [3].f2 ∈ {8} + [4].f1 ∈ [--..--] + [4].f2 ∈ {10} + [5].f1 ∈ [--..--] + [5].f2 ∈ {0} + [6].f1 ∈ [--..--] + [6].f2 ∈ {0} + t6[0].f0 ∈ [--..--] + [0].f2 ∈ {2} + {[0].[bits 40 to 63]; [1].f0} ∈ [--..--] + [1].f2 ∈ {4} + {[1].[bits 40 to 63]; [2].f0} ∈ [--..--] + [2].f2 ∈ {6} + {[2].[bits 40 to 63]; [3].f0} ∈ [--..--] + [3].f2 ∈ {8} + {[3].[bits 40 to 63]; [4].f0} ∈ [--..--] + [4].f2 ∈ {10} + {[4].[bits 40 to 63]; [5].f0} ∈ [--..--] + [5].f2 ∈ {0} + [5].[bits 40 to 63] ∈ [--..--] + t7[0..4] ∈ [--..--] + t8[0] ∈ {1} + [1] ∈ {2} + [2..4] ∈ {0} + s1 ∈ {0} + s2 ∈ {0} + s3.a{.b; .c} ∈ {0} + {.a.[bits 40 to 63]; .c; .[bits 72 to 95]} ∈ [--..--] +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + x ∈ {{ &t7[0] }} +[value] Analyzing an incomplete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + t[0] ∈ {1} + [1] ∈ {2} + [2] ∈ {3} + [3] ∈ {4} + [4] ∈ {5} + t2[0][0] ∈ {1} + [0][1] ∈ {2} + [0][2] ∈ {3} + [1][0] ∈ {4} + [1][1] ∈ {5} + [1][2] ∈ {6} + [2][0] ∈ {7} + [2][1] ∈ {8} + [2][2] ∈ {9} + t3[0][0] ∈ {10} + [0][1] ∈ {20} + [0][2] ∈ {30} + [1][0] ∈ {40} + [1][1] ∈ {50} + [1][2] ∈ {60} + [2][0] ∈ {70} + [2][1] ∈ {80} + [2][2] ∈ {90} + t4[0] ∈ {1} + [1] ∈ {2} + [2] ∈ {3} + [3] ∈ {4} + [4] ∈ {5} + [5] ∈ {6} + [6] ∈ {7} + [7] ∈ {8} + [8] ∈ {9} + [9] ∈ {10} + [10..11] ∈ {0} + t5[0].f1 ∈ [--..--] + [0].f2 ∈ {2} + [1].f1 ∈ [--..--] + [1].f2 ∈ {0} + [2].f1 ∈ [--..--] + [2].f2 ∈ {6} + [3].f1 ∈ [--..--] + [3].f2 ∈ {8} + [4].f1 ∈ [--..--] + [4].f2 ∈ {10} + [5].f1 ∈ [--..--] + [5].f2 ∈ {0} + [6].f1 ∈ [--..--] + [6].f2 ∈ {0} + t6[0].f0 ∈ [--..--] + [0].f2 ∈ {2} + [0].[bits 40 to 63] ∈ UNINITIALIZED + [1].f0 ∈ [--..--] + [1].f2 ∈ {4} + [1].[bits 40 to 63] ∈ UNINITIALIZED + [2].f0 ∈ [--..--] + [2].f2 ∈ {6} + [2].[bits 40 to 63] ∈ UNINITIALIZED + [3].f0 ∈ [--..--] + [3].f2 ∈ {8} + [3].[bits 40 to 63] ∈ UNINITIALIZED + [4].f0 ∈ [--..--] + [4].f2 ∈ {10} + [4].[bits 40 to 63] ∈ UNINITIALIZED + [5].f0 ∈ [--..--] + [5].f2 ∈ {0} + [5].[bits 40 to 63] ∈ UNINITIALIZED + t7[0..4] ∈ [--..--] + t8[0] ∈ {1} + [1] ∈ {2} + [2..4] ∈ {0} + s1{.b; .c} ∈ {0} + .[bits 40 to 63] ∈ UNINITIALIZED + s2.a{.b; .c} ∈ {0} + .a.[bits 40 to 63] ∈ UNINITIALIZED + .c ∈ {0} + .[bits 72 to 95] ∈ UNINITIALIZED + s3.a{.b; .c} ∈ {0} + .a.[bits 40 to 63] ∈ UNINITIALIZED + .c ∈ [--..--] + .[bits 72 to 95] ∈ UNINITIALIZED +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + x ∈ {{ &t7[0] }} diff --git a/tests/value/oracle_symblocs/context_free.err.oracle b/tests/value/oracle_symblocs/context_free.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/context_free.res.oracle b/tests/value/oracle_symblocs/context_free.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..f183473ab755eada2c34885a47e31c7760882117 --- /dev/null +++ b/tests/value/oracle_symblocs/context_free.res.oracle @@ -0,0 +1,167 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/context_free.i (no preprocessing) +[value] Analyzing an incomplete application starting at f +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + a ∈ [--..--] + b ∈ [--..--] + c ∈ [--..--] + vol ∈ [--..--] + star_p ∈ [--..--] + star_w___500 ∈ [--..--] + s{.s1; .s2} ∈ [--..--] + .sp ∈ {{ NULL ; &S_sp_s[0] }} + .sg ∈ {0} + t{.s1; .s2} ∈ [--..--] + .sp ∈ {{ NULL ; &S_sp_t[0] }} + .sg ∈ {0} + tt.ss1{.s1; .s2} ∈ [--..--] + .ss1.sp ∈ {{ NULL ; &S_sp_ss1_tt[0] }} + .ss1.sg ∈ {0} + .ss2 ∈ [--..--] + u[0..11] ∈ [--..--] + v[0..11][0..2] ∈ [--..--] + w[0] ∈ {{ NULL ; &S_0_w[0] }} + [1] ∈ {{ NULL ; &S_1_w[0] }} + [2..11] ∈ {{ NULL ; &S_0_w[0] ; &S_1_w[0] }} + ts[0]{.s1; .s2} ∈ [--..--] + [0].sp ∈ {{ NULL ; &S_sp_0_ts[0] }} + [0].sg ∈ {0} + [1]{.s1; .s2} ∈ [--..--] + [1].sp ∈ {{ NULL ; &S_sp_1_ts[0] }} + [1].sg ∈ {0} + [2]{.s1; .s2} ∈ [--..--] + [2].sp ∈ {{ NULL ; &S_sp_0_ts[0] ; &S_sp_1_ts[0] }} + [2].sg ∈ {0} + [3]{.s1; .s2} ∈ [--..--] + [3].sp ∈ {{ NULL ; &S_sp_0_ts[0] ; &S_sp_1_ts[0] }} + [3].sg ∈ {0} + [4]{.s1; .s2} ∈ [--..--] + [4].sp ∈ {{ NULL ; &S_sp_0_ts[0] ; &S_sp_1_ts[0] }} + [4].sg ∈ {0} + [5]{.s1; .s2} ∈ [--..--] + [5].sp ∈ {{ NULL ; &S_sp_0_ts[0] ; &S_sp_1_ts[0] }} + [5].sg ∈ {0} + [6]{.s1; .s2} ∈ [--..--] + [6].sp ∈ {{ NULL ; &S_sp_0_ts[0] ; &S_sp_1_ts[0] }} + [6].sg ∈ {0} + [7]{.s1; .s2} ∈ [--..--] + [7].sp ∈ {{ NULL ; &S_sp_0_ts[0] ; &S_sp_1_ts[0] }} + [7].sg ∈ {0} + [8]{.s1; .s2} ∈ [--..--] + [8].sp ∈ {{ NULL ; &S_sp_0_ts[0] ; &S_sp_1_ts[0] }} + [8].sg ∈ {0} + [9]{.s1; .s2} ∈ [--..--] + [9].sp ∈ {{ NULL ; &S_sp_0_ts[0] ; &S_sp_1_ts[0] }} + [9].sg ∈ {0} + uu ∈ {{ garbled mix of &{WELL_uu} (origin: Well) }} + uuu ∈ [--..--] + c_int ∈ [--..--] + svoid.f1 ∈ [--..--] + .p ∈ {{ garbled mix of &{S_p_svoid} (origin: Well) }} + qvoid ∈ {{ garbled mix of &{S_qvoid} (origin: Well) }} + S_sp_s[0..1] ∈ [--..--] + S_sp_t[0..1] ∈ [--..--] + S_sp_ss1_tt[0..1] ∈ [--..--] + S_0_w[0..1] ∈ [--..--] + S_1_w[0..1] ∈ [--..--] + S_sp_0_ts[0..1] ∈ [--..--] + S_sp_1_ts[0..1] ∈ [--..--] + WELL_uu[bits 0 to ..] ∈ {{ garbled mix of &{WELL_uu} (origin: Well) }} + S_p_svoid[bits 0 to ..] ∈ + {{ garbled mix of &{S_p_svoid} (origin: Well) }} + S_qvoid[bits 0 to ..] ∈ {{ garbled mix of &{S_qvoid} (origin: Well) }} +tests/value/context_free.i:46:[value] warning: out of bounds write. assert \valid(p); +tests/value/context_free.i:51:[value] Assigning imprecise value to vv. + The imprecision originates from Well +tests/value/context_free.i:52:[value] warning: out of bounds write. assert \valid(vvv); +tests/value/context_free.i:52:[value] Assigning imprecise value to *vvv (pointing to S_vvv with offsets {0}). + The imprecision originates from Well +tests/value/context_free.i:54:[value] Assigning imprecise value to uu.u1. + The imprecision originates from Well +tests/value/context_free.i:56:[value] warning: out of bounds write. assert \valid(ta+1); +tests/value/context_free.i:58:[value] Assigning imprecise value to pvoid. + The imprecision originates from Well +tests/value/context_free.i:59:[value] warning: out of bounds write. assert \valid(pvoid); +tests/value/context_free.i:60:[value] Assigning imprecise value to pvoid. + The imprecision originates from Well +tests/value/context_free.i:61:[value] warning: out of bounds write. assert \valid(pvoid); +tests/value/context_free.i:61:[value] Assigning imprecise value to *pvoid + (pointing to S_qvoid with offsets [0..34359738360],0%8). + The imprecision originates from Arithmetic {tests/value/context_free.i:61} +tests/value/context_free.i:62:[value] warning: pointer to function with incompatible type. assert \valid_function(g); +tests/value/context_free.i:64:[value] warning: locals {pvoid} escaping the scope of f through S_qvoid +[value] Recording results for f +[value] done for function f +tests/value/context_free.i:62:[value] assertion 'Value,function_pointer' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + a ∈ [--..--] + b ∈ [--..--] + t.s1 ∈ [--..--] + .s2 ∈ {3} + .sp ∈ {{ NULL ; &S_sp_t[0] }} + .sg ∈ {0} + tt.ss1{.s1; .s2} ∈ [--..--] + .ss1.sp ∈ {{ NULL ; &S_sp_ss1_tt[0] }} + .ss1.sg ∈ {0} + .ss2 ∈ [--..--] + u[0] ∈ [--..--] + [1] ∈ {2} + [2..11] ∈ [--..--] + v[0][0] ∈ {5} + {[0][1..2]; [1..11][0..2]} ∈ [--..--] + w[0] ∈ {{ NULL ; &S_0_w[0] }} + [1] ∈ {{ NULL ; &S_1_w[0] }} + [2..3] ∈ {{ NULL ; &S_0_w[0] ; &S_1_w[0] }} + [4] ∈ {{ &a }} + [5..11] ∈ {{ NULL ; &S_0_w[0] ; &S_1_w[0] }} + ts[0]{.s1; .s2} ∈ [--..--] + [0].sp ∈ {{ NULL ; &S_sp_0_ts[0] }} + [0].sg ∈ {0} + [1]{.s1; .s2} ∈ [--..--] + [1].sp ∈ {{ NULL ; &S_sp_1_ts[0] }} + [1].sg ∈ {0} + [2]{.s1; .s2} ∈ [--..--] + [2].sp ∈ {{ NULL ; &S_sp_0_ts[0] ; &S_sp_1_ts[0] }} + [2].sg ∈ {0} + [3]{.s1; .s2} ∈ [--..--] + [3].sp ∈ {{ NULL ; &S_sp_0_ts[0] ; &S_sp_1_ts[0] }} + [3].sg ∈ {0} + [4]{.s1; .s2} ∈ [--..--] + [4].sp ∈ {{ NULL ; &S_sp_0_ts[0] ; &S_sp_1_ts[0] }} + [4].sg ∈ {0} + [5]{.s1; .s2} ∈ [--..--] + [5].sp ∈ {{ NULL ; &S_sp_0_ts[0] ; &S_sp_1_ts[0] }} + [5].sg ∈ {0} + [6]{.s1; .s2} ∈ [--..--] + [6].sp ∈ {{ NULL ; &S_sp_0_ts[0] ; &S_sp_1_ts[0] }} + [6].sg ∈ {0} + [7]{.s1; .s2} ∈ [--..--] + [7].sp ∈ {{ NULL ; &S_sp_0_ts[0] ; &S_sp_1_ts[0] }} + [7].sg ∈ {0} + [8]{.s1; .s2} ∈ [--..--] + [8].sp ∈ {{ NULL ; &S_sp_0_ts[0] ; &S_sp_1_ts[0] }} + [8].sg ∈ {0} + [9]{.s1; .s2} ∈ [--..--] + [9].sp ∈ {{ NULL ; &S_sp_0_ts[0] ; &S_sp_1_ts[0] }} + [9].sg ∈ {0} + uu ∈ {{ garbled mix of &{WELL_uu} (origin: Well) }} + uuu ∈ [--..--] + c_int ∈ [--..--] + p ∈ {{ &S_p[0] }} + vv ∈ {{ garbled mix of &{S_vv} (origin: Well) }} + ta ∈ {{ &S_ta[0] }} + pvoid ∈ {{ &S_qvoid + [0..4294967295] }} + S_p_svoid[bits 0 to ..] ∈ + {{ garbled mix of &{S_p_svoid} (origin: Well) }} + S_qvoid[bits 0 to ..] ∈ + {{ garbled mix of &{pvoid; S_qvoid} (origin: Well) }} + S_ta[0] ∈ [--..--] + [1] ∈ {3} + [2..4] ∈ [--..--] + S_vvv[0] ∈ {{ garbled mix of &{S_0_S_vvv} (origin: Well) }} + [1] ∈ {{ garbled mix of &{S_1_S_vvv} (origin: Well) }} + S_p[0] ∈ {{ NULL ; &S_0_S_p[0] }} + [1] ∈ {{ NULL ; &S_1_S_p[0] }} diff --git a/tests/value/oracle_symblocs/context_free_simple.err.oracle b/tests/value/oracle_symblocs/context_free_simple.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/context_free_simple.res.oracle b/tests/value/oracle_symblocs/context_free_simple.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..f917abea2b2324901ac45cd8b7b55360842ccb3a --- /dev/null +++ b/tests/value/oracle_symblocs/context_free_simple.res.oracle @@ -0,0 +1,39 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/context_free_simple.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + z ∈ {1} +[value] computing for function f <- main. + Called from tests/value/context_free_simple.i:12. +[value] Recording results for f +[value] Done for function f +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + z ∈ {5} + __retres ∈ {4} +[value:final-states] Values at end of function main: + z ∈ {5} +[from] Computing for function f +[from] Done for function f +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + z FROM x; y + \result FROM y +[from] Function main: + z FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + z; __retres +[inout] Inputs for function f: + \nothing +[inout] Out (internal) for function main: + z +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/context_width.err.oracle b/tests/value/oracle_symblocs/context_width.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/context_width.res.oracle b/tests/value/oracle_symblocs/context_width.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..a3749768a60b5035b04fed80a61cfd1391e86f3c --- /dev/null +++ b/tests/value/oracle_symblocs/context_width.res.oracle @@ -0,0 +1,112 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/context_width.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + a ∈ {0} +tests/value/context_width.i:10:[value] warning: pointer comparison. assert \pointer_comparable((void *)(p+2), (void *)0); +tests/value/context_width.i:12:[value] warning: pointer comparison. assert \pointer_comparable((void *)(p+1), (void *)(&a)); +tests/value/context_width.i:15:[value] warning: out of bounds write. assert \valid(p+1); +tests/value/context_width.i:16:[value] warning: out of bounds write. assert \valid(p+2); +tests/value/context_width.i:17:[value] warning: assertion got status invalid (stopping propagation). +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + S_p[0] ∈ {1} + [1] ∈ {2} + [2] ∈ {3} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + S_p[0..2] FROM p (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + S_p[0..2] +[inout] Inputs for function main: + \nothing +/* Generated by Frama-C */ +int a; +void main(int *p) +{ + if (! (p == (int *)0)) { + if (! (p + 1 == (int *)0)) + /*@ assert + Value: ptr_comparison: + \pointer_comparable((void *)(p+2), (void *)0); + */ + if (! (p + 2 == (int *)0)) ; + /*@ assert + Value: ptr_comparison: + \pointer_comparable((void *)(p+1), (void *)(&a)); + */ + if (p + 1 == & a) ; + *p = 1; + /*@ assert Value: mem_access: \valid(p+1); */ + *(p + 1) = 2; + /*@ assert Value: mem_access: \valid(p+2); */ + *(p + 2) = 3; + } + else + /*@ assert \false; */ ; + return; +} + + +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + a ∈ {0} +tests/value/context_width.i:10:[value] warning: pointer comparison. assert \pointer_comparable((void *)(p+2), (void *)0); +tests/value/context_width.i:12:[value] warning: pointer comparison. assert \pointer_comparable((void *)(p+1), (void *)(&a)); +tests/value/context_width.i:15:[value] warning: out of bounds write. assert \valid(p+1); +tests/value/context_width.i:15:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +[value] Recording results for main +[value] done for function main +tests/value/context_width.i:15:[value] assertion 'Value,mem_access' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + NON TERMINATING FUNCTION +[from] Computing for function main +[from] Non-terminating function main (no dependencies) +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NON TERMINATING - NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + S_p_0[0] +[inout] Inputs for function main: + \nothing +/* Generated by Frama-C */ +int a; +void main(int *p) +{ + if (! (p == (int *)0)) { + if (! (p + 1 == (int *)0)) + /*@ assert + Value: ptr_comparison: + \pointer_comparable((void *)(p+2), (void *)0); + */ + if (! (p + 2 == (int *)0)) ; + /*@ assert + Value: ptr_comparison: + \pointer_comparable((void *)(p+1), (void *)(&a)); + */ + if (p + 1 == & a) ; + *p = 1; + /*@ assert Value: mem_access: \valid(p+1); */ + *(p + 1) = 2; + *(p + 2) = 3; + } + else + /*@ assert \false; */ ; + return; +} + + diff --git a/tests/value/oracle_symblocs/control.err.oracle b/tests/value/oracle_symblocs/control.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/control.res.oracle b/tests/value/oracle_symblocs/control.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..4702eabecf2abed38e562eb04e6a887f1ee7f4cb --- /dev/null +++ b/tests/value/oracle_symblocs/control.res.oracle @@ -0,0 +1,29 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/control.i (no preprocessing) +[value] Analyzing a complete application starting at f +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + x ∈ {0} + y ∈ {0} + c ∈ {0} + d ∈ {0} +tests/value/control.i:11:[value] entering loop for the first time +tests/value/control.i:14:[value] warning: signed overflow. assert x+1 ≤ 2147483647; +[value] Recording results for f +[value] done for function f +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + x ∈ [0..2147483647] + i ∈ {4} +[from] Computing for function f +[from] Done for function f +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + x FROM x (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + x; i +[inout] Inputs for function f: + x; c diff --git a/tests/value/oracle_symblocs/conversion.err.oracle b/tests/value/oracle_symblocs/conversion.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/conversion.res.oracle b/tests/value/oracle_symblocs/conversion.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..efb6fbc23c540e919a238f33ebaf8b8a6f89bb60 --- /dev/null +++ b/tests/value/oracle_symblocs/conversion.res.oracle @@ -0,0 +1,95 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/conversion.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + v ∈ [--..--] +[value] DUMPING STATE of file tests/value/conversion.i line 10 + v ∈ [--..--] + x ∈ {1} + y ∈ UNINITIALIZED + f ∈ {1.40129846432e-45} + l ∈ UNINITIALIZED + =END OF DUMP== +tests/value/conversion.i:13:[value] warning: assertion 'ASSUME' got status unknown. +[value] DUMPING STATE of file tests/value/conversion.i line 15 + v ∈ [--..--] + x ∈ [0..1120000000] + y ∈ UNINITIALIZED + f ∈ [0. .. 96.921875] + l ∈ UNINITIALIZED + =END OF DUMP== +tests/value/conversion.i:18:[value] warning: assertion 'ASSUME' got status unknown. +tests/value/conversion.i:19:[value] warning: non-finite float value. assert \is_finite(*((float *)(&x))); +[value] DUMPING STATE of file tests/value/conversion.i line 20 + v ∈ [--..--] + x ∈ [-10..10] + y ∈ UNINITIALIZED + f ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + l ∈ UNINITIALIZED + =END OF DUMP== +tests/value/conversion.i:23:[value] warning: assertion 'ASSUME' got status unknown. +[value] DUMPING STATE of file tests/value/conversion.i line 25 + v ∈ [--..--] + x ∈ [-10..10] + y ∈ [-10..10] + f ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + l ∈ UNINITIALIZED + =END OF DUMP== +tests/value/conversion.i:28:[value] warning: assertion 'ASSUME' got status unknown. +[value] DUMPING STATE of file tests/value/conversion.i line 30 + v ∈ [--..--] + x ∈ [1077936128..1084227584] + y ∈ [-10..10] + f ∈ [3. .. 5.] + l ∈ UNINITIALIZED + =END OF DUMP== +tests/value/conversion.i:33:[value] warning: non-finite float value. assert \is_finite(*((float *)(&x))); +[value] DUMPING STATE of file tests/value/conversion.i line 34 + v ∈ [--..--] + x ∈ {{ (int)&x }} + y ∈ [-10..10] + f ∈ {{ (float)&x }} + l ∈ UNINITIALIZED + =END OF DUMP== +[value] DUMPING STATE of file tests/value/conversion.i line 39 + v ∈ [--..--] + x[bits 0 to 15] ∈ {1} + [bits 16 to 31] ∈ {2} + y ∈ [-10..10] + f[bits 0 to 15] ∈ {1} + [bits 16 to 31] ∈ {2} + l ∈ UNINITIALIZED + =END OF DUMP== +tests/value/conversion.i:44:[value] warning: assertion 'ASSUME' got status unknown. +[value] DUMPING STATE of file tests/value/conversion.i line 47 + v ∈ [--..--] + x[bits 0 to 15] ∈ {1} + [bits 16 to 31] ∈ {2} + y ∈ [-10..10] + f ∈ [7.00649232162e-45 .. 2.10194769649e-44] or UNINITIALIZED + l ∈ [5..15] or UNINITIALIZED + =END OF DUMP== +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + x[bits 0 to 15] ∈ {1} + [bits 16 to 31] ∈ {2} + y ∈ [-10..10] + f ∈ [7.00649232162e-45 .. 2.10194769649e-44] or UNINITIALIZED + l ∈ [5..15] or UNINITIALIZED +[from] Computing for function main +[from] Computing for function Frama_C_dump_each <-main +[from] Done for function Frama_C_dump_each +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + x; y; f; l +[inout] Inputs for function main: + v diff --git a/tests/value/oracle_symblocs/copy_paste.err.oracle b/tests/value/oracle_symblocs/copy_paste.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/copy_paste.res.oracle b/tests/value/oracle_symblocs/copy_paste.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..ba665f443e14a1249dd832352891cb3761c1ebfe --- /dev/null +++ b/tests/value/oracle_symblocs/copy_paste.res.oracle @@ -0,0 +1,38 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/copy_paste.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + t[0..11] ∈ {0} + G ∈ {0} +tests/value/copy_paste.i:8:[value] warning: accessing out of bounds index. assert 0 ≤ j; +tests/value/copy_paste.i:8:[value] warning: accessing out of bounds index. assert j < 12; +tests/value/copy_paste.i:9:[value] warning: out of bounds read. assert \valid_read((int *)l); +[value] Recording results for main +[value] done for function main +tests/value/copy_paste.i:8:[value] assertion 'Value,index_bound' got final status valid. +tests/value/copy_paste.i:9:[value] assertion 'Value,mem_access' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + t[0..2] ∈ {0} + [3] ∈ {0; 3; 4} + [4] ∈ {4} + [5..11] ∈ {0} + G ∈ [--..--] + l ∈ [--..--] + i ∈ {3; 4} + j ∈ {4} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + t[3] FROM c (and SELF) + [4] FROM c + G FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + t[3..4]; G; l; i; tmp; j; tmp_0 +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/copy_paste_hidden_by_dummy_cast.err.oracle b/tests/value/oracle_symblocs/copy_paste_hidden_by_dummy_cast.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/copy_paste_hidden_by_dummy_cast.res.oracle b/tests/value/oracle_symblocs/copy_paste_hidden_by_dummy_cast.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e2428c541370c114091ee7acf1e981a84906c956 --- /dev/null +++ b/tests/value/oracle_symblocs/copy_paste_hidden_by_dummy_cast.res.oracle @@ -0,0 +1,23 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/copy_paste_hidden_by_dummy_cast.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + A4O1_Ci_sNO_ERREUR_ANO ∈ {0} +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + Rl_sErreurAno ∈ {0} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + Rl_sErreurAno +[inout] Inputs for function main: + A4O1_Ci_sNO_ERREUR_ANO diff --git a/tests/value/oracle_symblocs/copy_stdin.err.oracle b/tests/value/oracle_symblocs/copy_stdin.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/copy_stdin.res.oracle b/tests/value/oracle_symblocs/copy_stdin.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..d8551a275ede2bb9f196c4f285478fabccd84886 --- /dev/null +++ b/tests/value/oracle_symblocs/copy_stdin.res.oracle @@ -0,0 +1,34 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/copy_stdin.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] computing for function leaf <- main. + Called from tests/value/copy_stdin.i:4. +tests/value/copy_stdin.i:4:[kernel] warning: Neither code nor specification for function leaf, generating default assigns from the prototype +[value] using specification for function leaf +[value] Done for function leaf +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + stdin ∈ + {{ NULL + [--..--] ; &alloced_return_leaf + [0..2147483644],0%4 }} + toto ∈ {{ NULL + [--..--] ; &alloced_return_leaf + [0..2147483644],0%4 }} +[from] Computing for function main +[from] Computing for function leaf <-main +[from] Done for function leaf +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function leaf: + \result FROM \nothing +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + stdin; toto +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/dangling.err.oracle b/tests/value/oracle_symblocs/dangling.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/dangling.res.oracle b/tests/value/oracle_symblocs/dangling.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..0712b7c6f74792513585434953187b6a0da658ab --- /dev/null +++ b/tests/value/oracle_symblocs/dangling.res.oracle @@ -0,0 +1,33 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/dangling.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + v ∈ [--..--] +tests/value/dangling.i:9:[value] warning: locals {v_0} escaping the scope of a block of main through x +tests/value/dangling.i:15:[value] warning: assertion got status unknown. +tests/value/dangling.i:16:[value] assertion got status valid. +tests/value/dangling.i:19:[value] warning: accessing left-value that contains escaping addresses. + assert ¬\dangling(&x); +tests/value/dangling.i:23:[value] warning: assertion got status unknown. +tests/value/dangling.i:24:[value] warning: accessing left-value that contains escaping addresses. + assert ¬\dangling(&x); +[value] Recording results for main +[value] done for function main +tests/value/dangling.i:24:[value] assertion 'Value,dangling_pointer' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + x ∈ {{ &y }} or ESCAPINGADDR + y ∈ {1} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + x; y; i; j; j_0 +[inout] Inputs for function main: + v diff --git a/tests/value/oracle_symblocs/dataflow_order.err.oracle b/tests/value/oracle_symblocs/dataflow_order.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/dataflow_order.res.oracle b/tests/value/oracle_symblocs/dataflow_order.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..b0206b845290d4995d00c0b2c1a9b8f999ebd18d --- /dev/null +++ b/tests/value/oracle_symblocs/dataflow_order.res.oracle @@ -0,0 +1,138 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/dataflow_order.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + c ∈ [--..--] + j ∈ {0} + k ∈ {0} +tests/value/dataflow_order.i:17:[value] entering loop for the first time +[value] Called Frama_C_show_each_1({0}, {0}) +[value] Called Frama_C_show_each_then({1}, {0}) +[value] computing for function f <- main. + Called from tests/value/dataflow_order.i:22. +[value] Recording results for f +[value] Done for function f +[value] Called Frama_C_show_each_else({1}, {0}) +[value] computing for function g <- main. + Called from tests/value/dataflow_order.i:25. +[value] Recording results for g +[value] Done for function g +[value] Called Frama_C_show_each_1({0; 1}, {0; 1}) +[value] Called Frama_C_show_each_then({1; 2}, {0; 1}) +[value] computing for function f <- main. + Called from tests/value/dataflow_order.i:22. +[value] Recording results for f +[value] Done for function f +[value] Called Frama_C_show_each_else({1; 2}, {0; 1}) +[value] computing for function g <- main. + Called from tests/value/dataflow_order.i:25. +[value] Recording results for g +[value] Done for function g +[value] Called Frama_C_show_each_1({0; 1; 2}, {0; 1; 2}) +[value] Called Frama_C_show_each_then({1; 2; 3}, {0; 1; 2}) +[value] computing for function f <- main. + Called from tests/value/dataflow_order.i:22. +[value] Recording results for f +[value] Done for function f +[value] Called Frama_C_show_each_else({1; 2; 3}, {0; 1; 2}) +[value] computing for function g <- main. + Called from tests/value/dataflow_order.i:25. +[value] Recording results for g +[value] Done for function g +[value] Called Frama_C_show_each_1([0..64999], {0; 1; 2; 3}) +[value] Called Frama_C_show_each_then([1..65000], {0; 1; 2; 3}) +[value] computing for function f <- main. + Called from tests/value/dataflow_order.i:22. +[value] Recording results for f +[value] Done for function f +[value] Called Frama_C_show_each_else([1..65000], {0; 1; 2; 3}) +[value] computing for function g <- main. + Called from tests/value/dataflow_order.i:25. +[value] Recording results for g +[value] Done for function g +[value] Called Frama_C_show_each_1([0..64999], {0; 1; 2; 3; 4}) +[value] Called Frama_C_show_each_then([1..65000], {0; 1; 2; 3; 4}) +[value] computing for function f <- main. + Called from tests/value/dataflow_order.i:22. +[value] Recording results for f +[value] Done for function f +[value] Called Frama_C_show_each_else([1..65000], {0; 1; 2; 3; 4}) +[value] computing for function g <- main. + Called from tests/value/dataflow_order.i:25. +[value] Recording results for g +[value] Done for function g +[value] Called Frama_C_show_each_1([0..64999], [0..2147483647]) +[value] Called Frama_C_show_each_then([1..65000], [0..2147483647]) +[value] computing for function f <- main. + Called from tests/value/dataflow_order.i:22. +[value] Recording results for f +[value] Done for function f +[value] Called Frama_C_show_each_else([1..65000], [0..2147483647]) +[value] computing for function g <- main. + Called from tests/value/dataflow_order.i:25. +[value] Recording results for g +[value] Done for function g +[value] Called Frama_C_show_each_1([0..64999], [0..2147483648]) +[value] Called Frama_C_show_each_then([1..65000], [0..2147483648]) +[value] computing for function f <- main. + Called from tests/value/dataflow_order.i:22. +[value] Recording results for f +[value] Done for function f +[value] Called Frama_C_show_each_else([1..65000], [0..2147483648]) +[value] computing for function g <- main. + Called from tests/value/dataflow_order.i:25. +[value] Recording results for g +[value] Done for function g +[value] Called Frama_C_show_each_1([0..64999], [0..4294967295]) +[value] Called Frama_C_show_each_then([1..65000], [0..4294967295]) +[value] computing for function f <- main. + Called from tests/value/dataflow_order.i:22. +[value] Recording results for f +[value] Done for function f +[value] Called Frama_C_show_each_else([1..65000], [0..4294967295]) +[value] computing for function g <- main. + Called from tests/value/dataflow_order.i:25. +[value] Recording results for g +[value] Done for function g +[value] Called Frama_C_show_each_end() +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + j ∈ [--..--] +[value:final-states] Values at end of function g: + k ∈ [--..--] +[value:final-states] Values at end of function main: + j ∈ [--..--] + k ∈ [--..--] + i ∈ {65000} +[from] Computing for function f +[from] Done for function f +[from] Computing for function g +[from] Done for function g +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + j FROM j +[from] Function g: + k FROM k +[from] Function main: + j FROM c; j (and SELF) + k FROM c; k (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + j +[inout] Inputs for function f: + j +[inout] Out (internal) for function g: + k +[inout] Inputs for function g: + k +[inout] Out (internal) for function main: + j; k; i +[inout] Inputs for function main: + c; j; k diff --git a/tests/value/oracle_symblocs/dead_code.err.oracle b/tests/value/oracle_symblocs/dead_code.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/dead_code.res.oracle b/tests/value/oracle_symblocs/dead_code.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..2619d6d360e2223931d2621319c1e85c71bd3099 --- /dev/null +++ b/tests/value/oracle_symblocs/dead_code.res.oracle @@ -0,0 +1,25 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/dead_code.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + i ∈ {1} + j ∈ {17} + l ∈ {17} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + i; j; l +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/dead_code2.err.oracle b/tests/value/oracle_symblocs/dead_code2.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/dead_code2.res.oracle b/tests/value/oracle_symblocs/dead_code2.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..72981fac3a41bf5cc14020ec2068ebce8ebb5bc0 --- /dev/null +++ b/tests/value/oracle_symblocs/dead_code2.res.oracle @@ -0,0 +1,25 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/dead_code2.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + G ∈ {0} +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + G ∈ {0} + i ∈ {1} + l ∈ {17} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + G FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + G; i; l +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/dead_inout.err.oracle b/tests/value/oracle_symblocs/dead_inout.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/dead_inout.res.oracle b/tests/value/oracle_symblocs/dead_inout.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..4a27a568fb2e07cf03bb2b83800109df422fae63 --- /dev/null +++ b/tests/value/oracle_symblocs/dead_inout.res.oracle @@ -0,0 +1,100 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/dead_inout.i (no preprocessing) +[value] Analyzing a complete application starting at main_all +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + a ∈ {0} + b ∈ {0} +[value] computing for function main <- main_all. + Called from tests/value/dead_inout.i:40. +[value] computing for function f <- main <- main_all. + Called from tests/value/dead_inout.i:18. +[value] Recording results for f +[value] Done for function f +[value] computing for function g <- main <- main_all. + Called from tests/value/dead_inout.i:19. +[value] Recording results for g +[value] Done for function g +[value] Recording results for main +[value] Done for function main +[value] computing for function main2 <- main_all. + Called from tests/value/dead_inout.i:41. +[value] computing for function f2 <- main2 <- main_all. + Called from tests/value/dead_inout.i:33. +[value] Recording results for f2 +[value] Done for function f2 +[value] computing for function f2 <- main2 <- main_all. + Called from tests/value/dead_inout.i:34. +[value] Recording results for f2 +[value] Done for function f2 +[value] Recording results for main2 +[value] Done for function main2 +[value] Recording results for main_all +[value] done for function main_all +[inout] Out (internal) for function f: + a +[inout] Inputs for function f: + b +[inout] InOut (internal) for function f: + Operational inputs: + b + Operational inputs on termination: + b + Sure outputs: + a +[inout] Out (internal) for function f2: + x; y +[inout] Inputs for function f2: + \nothing +[inout] InOut (internal) for function f2: + Operational inputs: + v; p; q + Operational inputs on termination: + v; p; q + Sure outputs: + \nothing +[inout] Out (internal) for function g: + x +[inout] Inputs for function g: + \nothing +[inout] InOut (internal) for function g: + Operational inputs: + \nothing + Operational inputs on termination: + \nothing + Sure outputs: + x +[inout] Out (internal) for function main: + a +[inout] Inputs for function main: + b +[inout] InOut (internal) for function main: + Operational inputs: + b + Operational inputs on termination: + b + Sure outputs: + a +[inout] Out (internal) for function main2: + x; y +[inout] Inputs for function main2: + \nothing +[inout] InOut (internal) for function main2: + Operational inputs: + \nothing + Operational inputs on termination: + \nothing + Sure outputs: + x; y +[inout] Out (internal) for function main_all: + a +[inout] Inputs for function main_all: + b +[inout] InOut (internal) for function main_all: + Operational inputs: + b + Operational inputs on termination: + b + Sure outputs: + a diff --git a/tests/value/oracle_symblocs/dead_statuses.err.oracle b/tests/value/oracle_symblocs/dead_statuses.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/dead_statuses.res.oracle b/tests/value/oracle_symblocs/dead_statuses.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..c8a32d2c6f52f324efc44ec262ff11a19dccaf91 --- /dev/null +++ b/tests/value/oracle_symblocs/dead_statuses.res.oracle @@ -0,0 +1,132 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/dead_statuses.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] computing for function f <- main. + Called from tests/value/dead_statuses.i:9. +[value] using specification for function f +tests/value/dead_statuses.i:5:[value] function f: precondition got status valid. +[value] Done for function f +[value] computing for function f <- main. + Called from tests/value/dead_statuses.i:11. +[value] Done for function f +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + +[from] Computing for function main +[from] Computing for function f <-main +[from] Done for function f +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + NO EFFECTS +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + \nothing +[inout] Inputs for function main: + \nothing +[report] Computing properties status... + +-------------------------------------------------------------------------------- +--- Properties of Function 'Frama_C_bzero' +-------------------------------------------------------------------------------- + +[ Extern ] Post-condition (file share/libc/__fc_builtin_for_normalization.i, line 32) + Unverifiable but considered Valid. +[ Extern ] Assigns (file share/libc/__fc_builtin_for_normalization.i, line 31) + Unverifiable but considered Valid. +[ Extern ] Froms (file share/libc/__fc_builtin_for_normalization.i, line 31) + Unverifiable but considered Valid. +[ Valid ] Default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'f' +-------------------------------------------------------------------------------- + +[ Valid ] Pre-condition (file tests/value/dead_statuses.i, line 5) + by Call Preconditions. +[ Extern ] Assigns nothing + Unverifiable but considered Valid. +[ Valid ] Default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'main' +-------------------------------------------------------------------------------- + +[ Dead ] Post-condition for 'Frama_C_implicit_init' (file tests/value/dead_statuses.i, line 14) at block + Locally valid, but unreachable. + By Frama-C kernel because: + - Unreachable block (after it) + By Value because: + - Unreachable block (after it) +[ Dead ] Post-condition for 'Frama_C_implicit_init' (file tests/value/dead_statuses.i, line 14) at block + Locally valid, but unreachable. + By Frama-C kernel because: + - Unreachable block (after it) + By Value because: + - Unreachable block (after it) +[ Dead ] Pre-condition (file tests/value/dead_statuses.i, line 18) at instruction (file tests/value/dead_statuses.i, line 19) + Locally valid, but unreachable. + By Value because: + - Unreachable instruction (file tests/value/dead_statuses.i, line 19) +[ Dead ] Assigns for 'Frama_C_implicit_init' (file tests/value/dead_statuses.i, line 14) at block + Locally valid, but unreachable. + By Frama-C kernel because: + - Unreachable block (after it) + By Value because: + - Unreachable block (after it) +[ Dead ] Assertion (file tests/value/dead_statuses.i, line 15) + Locally valid, but unreachable. + By Value because: + - Unreachable program point (file tests/value/dead_statuses.i, line 15) +[ Dead ] Invariant (file tests/value/dead_statuses.i, line 16) + Locally valid, but unreachable. + By Value because: + - Unreachable loop (file tests/value/dead_statuses.i, line 17) +[ Dead ] Behavior 'Frama_C_implicit_init' at block + Locally valid, but unreachable. + By Frama-C kernel because: + - Unreachable block (after it) +[ Valid ] Default behavior at instruction (file tests/value/dead_statuses.i, line 19) + by Frama-C kernel. +[Unreachable] Unreachable call 'f' (file tests/value/dead_statuses.i, line 13) + by Value. +[Unreachable] Unreachable block (after it) + by Value. +[Unreachable] Unreachable program point (file tests/value/dead_statuses.i, line 15) + by Value. +[Unreachable] Unreachable loop (file tests/value/dead_statuses.i, line 17) + by Value. +[Unreachable] Unreachable instruction (file tests/value/dead_statuses.i, line 19) + by Value. +[ Valid ] Instance of 'Pre-condition (file tests/value/dead_statuses.i, line 5)' at call 'f' (file tests/value/dead_statuses.i, line 9) + + by Value. +[ Valid ] Instance of 'Pre-condition (file tests/value/dead_statuses.i, line 5)' at call 'f' (file tests/value/dead_statuses.i, line 11) + + by Value. +[ Dead ] Instance of 'Pre-condition (file tests/value/dead_statuses.i, line 5)' at call 'f' (file tests/value/dead_statuses.i, line 13) + + Locally valid, but unreachable. + By Value because: + - Unreachable call 'f' (file tests/value/dead_statuses.i, line 13) + +-------------------------------------------------------------------------------- +--- Status Report Summary +-------------------------------------------------------------------------------- + 6 Completely validated + 4 Considered valid + 8 Dead properties + 5 Unreachable + 23 Total +-------------------------------------------------------------------------------- diff --git a/tests/value/oracle_symblocs/deep_conditionals.err.oracle b/tests/value/oracle_symblocs/deep_conditionals.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/deep_conditionals.res.oracle b/tests/value/oracle_symblocs/deep_conditionals.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..ff65f73092107685d6db914f2b295e4f9776bf24 --- /dev/null +++ b/tests/value/oracle_symblocs/deep_conditionals.res.oracle @@ -0,0 +1,24 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/deep_conditionals.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + X ∈ {33} + Y ∈ {77} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + X; Y; tmp +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/degeneration2.err.oracle b/tests/value/oracle_symblocs/degeneration2.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/degeneration2.res.oracle b/tests/value/oracle_symblocs/degeneration2.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..9a66b60f4aac9d24f55b18acd5f459f0fd7051f4 --- /dev/null +++ b/tests/value/oracle_symblocs/degeneration2.res.oracle @@ -0,0 +1,39 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/degeneration2.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + v ∈ [--..--] +tests/value/degeneration2.i:14:[value] warning: accessing uninitialized left-value. assert \initialized(&A); +tests/value/degeneration2.i:14:[value] warning: signed overflow. assert -2147483648 ≤ -((int)A); +tests/value/degeneration2.i:14:[value] warning: signed overflow. assert -((int)A) ≤ 2147483647; +tests/value/degeneration2.i:14:[value] Assigning imprecise value to A. + The imprecision originates from Arithmetic {tests/value/degeneration2.i:14} +tests/value/degeneration2.i:16:[value] entering loop for the first time +tests/value/degeneration2.i:17:[value] warning: accessing uninitialized left-value. assert \initialized((int *)A); +tests/value/degeneration2.i:17:[value] warning: out of bounds read. assert \valid_read((int *)A); +tests/value/degeneration2.i:25:[value] warning: accessing uninitialized left-value. assert \initialized(&offset_uninit); +[value] Recording results for main +[value] done for function main +tests/value/degeneration2.i:25:[value] assertion 'Value,initialisation' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + A ∈ + {{ garbled mix of &{B; C; D; E} + (origin: Arithmetic {tests/value/degeneration2.i:14}) }} + B ∈ {{ (void *)&C }} or UNINITIALIZED + C ∈ {{ (void *)&D }} or UNINITIALIZED + D ∈ {{ (void *)&E }} or UNINITIALIZED + x ∈ [0..10] +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + A; B; C; D; x; tmp; tmp_0; vv +[inout] Inputs for function main: + v diff --git a/tests/value/oracle_symblocs/deps.0.err.oracle b/tests/value/oracle_symblocs/deps.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/deps.0.res.oracle b/tests/value/oracle_symblocs/deps.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..a25f013689cc79617eb441d9b09a8a1eb2d763de --- /dev/null +++ b/tests/value/oracle_symblocs/deps.0.res.oracle @@ -0,0 +1,23 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/deps.i (no preprocessing) +[value] Analyzing a complete application starting at f +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] Recording results for f +[value] done for function f +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + b ∈ [--..--] +[from] Computing for function f +[from] Done for function f +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + b +[inout] Inputs for function f: + \nothing diff --git a/tests/value/oracle_symblocs/deps.1.err.oracle b/tests/value/oracle_symblocs/deps.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/deps.1.res.oracle b/tests/value/oracle_symblocs/deps.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..c5f3a7538fc2b2e8b43d1a5c5cfd83fb9618f369 --- /dev/null +++ b/tests/value/oracle_symblocs/deps.1.res.oracle @@ -0,0 +1,31 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/deps.i (no preprocessing) +[value] Analyzing a complete application starting at fonc1 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +tests/value/deps.i:17:[value] warning: signed overflow. assert -2147483648 ≤ a+b; +tests/value/deps.i:17:[value] warning: signed overflow. assert a+b ≤ 2147483647; +tests/value/deps.i:24:[value] warning: signed overflow. assert -2147483648 ≤ w+v2.x; +tests/value/deps.i:24:[value] warning: signed overflow. assert w+v2.x ≤ 2147483647; +tests/value/deps.i:24:[value] warning: signed overflow. assert -2147483648 ≤ (int)(w+v2.x)+v3.x; +tests/value/deps.i:24:[value] warning: signed overflow. assert (int)(w+v2.x)+v3.x ≤ 2147483647; +[value] Recording results for fonc1 +[value] done for function fonc1 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function fonc1: + w ∈ [--..--] + v1.x ∈ [--..--] + .y ∈ UNINITIALIZED +[from] Computing for function fonc1 +[from] Done for function fonc1 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function fonc1: + \result FROM a; b +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function fonc1: + w; v1.x; v2.x; v3.x +[inout] Inputs for function fonc1: + \nothing diff --git a/tests/value/oracle_symblocs/deps.2.err.oracle b/tests/value/oracle_symblocs/deps.2.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/deps.2.res.oracle b/tests/value/oracle_symblocs/deps.2.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..1d578989af743bca280d6fd0259f16aee3cef450 --- /dev/null +++ b/tests/value/oracle_symblocs/deps.2.res.oracle @@ -0,0 +1,27 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/deps.i (no preprocessing) +[value] Analyzing a complete application starting at fonc2 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +tests/value/deps.i:32:[value] warning: signed overflow. assert -2147483648 ≤ a+b; +tests/value/deps.i:32:[value] warning: signed overflow. assert a+b ≤ 2147483647; +[value] Recording results for fonc2 +[value] done for function fonc2 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function fonc2: + w ∈ [--..--] + v1.x ∈ [--..--] + .y ∈ UNINITIALIZED +[from] Computing for function fonc2 +[from] Done for function fonc2 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function fonc2: + \result FROM a; b +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function fonc2: + w; v1.x +[inout] Inputs for function fonc2: + \nothing diff --git a/tests/value/oracle_symblocs/deps_addr.err.oracle b/tests/value/oracle_symblocs/deps_addr.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/deps_addr.res.oracle b/tests/value/oracle_symblocs/deps_addr.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..a2f08d027b1aef9432c8572413d509377cc34b51 --- /dev/null +++ b/tests/value/oracle_symblocs/deps_addr.res.oracle @@ -0,0 +1,27 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/deps_addr.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + t ∈ {0} + a ∈ {0} + tt[0..4][0..4] ∈ {0} +tests/value/deps_addr.i:6:[value] warning: out of bounds read. assert \valid_read(t+(int)(&a)); +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + NON TERMINATING FUNCTION +[from] Computing for function main +[from] Non-terminating function main (no dependencies) +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NON TERMINATING - NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + __retres +[inout] Inputs for function main: + t diff --git a/tests/value/oracle_symblocs/deps_compose.err.oracle b/tests/value/oracle_symblocs/deps_compose.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/deps_compose.res.oracle b/tests/value/oracle_symblocs/deps_compose.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..ecd556c9cddae7ce37399cf5df25ba696ab593ee --- /dev/null +++ b/tests/value/oracle_symblocs/deps_compose.res.oracle @@ -0,0 +1,86 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/deps_compose.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + c ∈ {1} + z ∈ {0} + x1 ∈ {0} + y1 ∈ {0} + x2 ∈ {0} + y2 ∈ {0} + x3 ∈ {0} + y3 ∈ {0} + x4 ∈ {0} + y4 ∈ {0} + x5 ∈ {0} + y5 ∈ {0} + x6 ∈ {0} + y6 ∈ {0} +[value] computing for function f <- main. + Called from tests/value/deps_compose.i:17. +[value] Recording results for f +[value] Done for function f +[value] computing for function f <- main. + Called from tests/value/deps_compose.i:26. +[value] Recording results for f +[value] Done for function f +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + x1 ∈ {0} + x2 ∈ {0} + x3 ∈ {0} + x4 ∈ {0} + x5 ∈ {0} + x6 ∈ {0} +[value:final-states] Values at end of function main: + x1 ∈ {0} + y1 ∈ {0} + x2 ∈ {0} + y2 ∈ {0} + x3 ∈ {0} + y3 ∈ {0} + x4 ∈ {0} + y4 ∈ {0} + x5 ∈ {0} + y5 ∈ {0} + x6 ∈ {0} + y6 ∈ {0} +[from] Computing for function f +[from] Done for function f +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + x1 FROM c; y1 + x2 FROM c; y2 + x3 FROM c; y3 + x4 FROM c; y4 + x5 FROM c; y5 + x6 FROM c; y6 +[from] Function main: + x1 FROM c; z + y1 FROM z + x2 FROM c; z + y2 FROM z + x3 FROM c; z + y3 FROM z + x4 FROM c; z + y4 FROM z + x5 FROM c; z + y5 FROM z + x6 FROM c; z + y6 FROM z +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + x1; x2; x3; x4; x5; x6 +[inout] Inputs for function f: + c; y1; y2; y3; y4; y5; y6 +[inout] Out (internal) for function main: + x1; y1; x2; y2; x3; y3; x4; y4; x5; y5; x6; y6 +[inout] Inputs for function main: + c; z; y1; y2; y3; y4; y5; y6 diff --git a/tests/value/oracle_symblocs/deps_local.err.oracle b/tests/value/oracle_symblocs/deps_local.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/deps_local.res.oracle b/tests/value/oracle_symblocs/deps_local.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..d240ca5a06dd7990cdb72500a0faf655eb163e9c --- /dev/null +++ b/tests/value/oracle_symblocs/deps_local.res.oracle @@ -0,0 +1,75 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/deps_local.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + G ∈ {0} + H ∈ {0} +[value] computing for function f <- main. + Called from tests/value/deps_local.i:22. +[value] computing for function h <- f <- main. + Called from tests/value/deps_local.i:17. +[value] Recording results for h +[value] Done for function h +[value] Recording results for f +[value] Done for function f +[value] computing for function g <- main. + Called from tests/value/deps_local.i:23. +[value] computing for function h <- g <- main. + Called from tests/value/deps_local.i:11. +[value] Recording results for h +[value] Done for function h +[value] Recording results for g +[value] Done for function g +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function h: + ga ∈ {0} + fa ∈ {0} +[value:final-states] Values at end of function f: + fa ∈ {0} + __retres ∈ {0} +[value:final-states] Values at end of function g: + ga ∈ {0} + __retres ∈ {0} +[value:final-states] Values at end of function main: + __retres ∈ {0} +[from] Computing for function h +[from] Done for function h +[from] Computing for function f +[from] Done for function f +[from] Computing for function g +[from] Done for function g +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function h: + ga FROM H; argh (and SELF) + fa FROM H; argh (and SELF) + \result FROM H +[from] Function f: + \result FROM \nothing +[from] Function g: + \result FROM \nothing +[from] Function main: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function h: + ga; fa +[inout] Inputs for function h: + H +[inout] Out (internal) for function f: + fa; __retres +[inout] Inputs for function f: + H +[inout] Out (internal) for function g: + ga; __retres +[inout] Inputs for function g: + H +[inout] Out (internal) for function main: + __retres +[inout] Inputs for function main: + H diff --git a/tests/value/oracle_symblocs/deps_mixed.err.oracle b/tests/value/oracle_symblocs/deps_mixed.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/deps_mixed.res.oracle b/tests/value/oracle_symblocs/deps_mixed.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..92a5f94bd128494ddfbd07f377c7e8bd13f4aa61 --- /dev/null +++ b/tests/value/oracle_symblocs/deps_mixed.res.oracle @@ -0,0 +1,74 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/deps_mixed.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + p ∈ {0} + q ∈ {0} + a ∈ {0} + b ∈ {0} + r ∈ {2} + s ∈ {0} + v ∈ [--..--] + t[0] ∈ {{ &f }} + [1] ∈ {{ &g }} +tests/value/deps_mixed.i:20:[value] warning: out of bounds read. assert \valid_read(p+(int)q); +tests/value/deps_mixed.i:22:[value] warning: accessing out of bounds index. assert 0 ≤ i0; +tests/value/deps_mixed.i:22:[value] warning: accessing out of bounds index. assert i0 < 2; +[value] computing for function g <- main. + Called from tests/value/deps_mixed.i:22. +[value] Recording results for g +[value] Done for function g +[value] computing for function f <- main. + Called from tests/value/deps_mixed.i:22. +[value] Recording results for f +[value] Done for function f +tests/value/deps_mixed.i:24:[value] Assigning imprecise value to __retres. + The imprecision originates from Arithmetic {tests/value/deps_mixed.i:24} +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + +[value:final-states] Values at end of function g: + +[value:final-states] Values at end of function main: + p ∈ {{ NULL + {3} ; &a }} + q ∈ {{ NULL + {2} ; &b }} + r ∈ {2} + s ∈ [--..--] + __retres ∈ + {{ garbled mix of &{a; b} + (origin: Arithmetic {tests/value/deps_mixed.i:24}) }} +[from] Computing for function f +[from] Done for function f +[from] Computing for function g +[from] Done for function g +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + \result FROM x +[from] Function g: + \result FROM y +[from] Function main: + p FROM c + q FROM d + r FROM v; c; d (and SELF) + s FROM t[0..1]; i0; i1; i2 + \result FROM c; d +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + \nothing +[inout] Inputs for function f: + \nothing +[inout] Out (internal) for function g: + \nothing +[inout] Inputs for function g: + \nothing +[inout] Out (internal) for function main: + p; q; r; s; __retres +[inout] Inputs for function main: + p; q; v; t[0..1] diff --git a/tests/value/oracle_symblocs/deps_unitialized_locals.err.oracle b/tests/value/oracle_symblocs/deps_unitialized_locals.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/deps_unitialized_locals.res.oracle b/tests/value/oracle_symblocs/deps_unitialized_locals.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e18a574834b644795a89dc679ee998b378cee621 --- /dev/null +++ b/tests/value/oracle_symblocs/deps_unitialized_locals.res.oracle @@ -0,0 +1,104 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/deps_unitialized_locals.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + maybe ∈ [--..--] + v1 ∈ {0} + v2 ∈ {0} + v ∈ {0} +[value] computing for function f <- main. + Called from tests/value/deps_unitialized_locals.i:33. +[value] Recording results for f +[from] Computing for function f +[from] Done for function f +[value] Done for function f +[value] computing for function g <- main. + Called from tests/value/deps_unitialized_locals.i:36. +[value] Recording results for g +[from] Computing for function g +[from] Done for function g +[value] Done for function g +[value] computing for function h <- main. + Called from tests/value/deps_unitialized_locals.i:39. +[value] Recording results for h +[from] Computing for function h +[from] Done for function h +[value] Done for function h +[value] Recording results for main +[from] Computing for function main +[from] Done for function main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + v1.ts ∈ {1} + .[bits 16 to 31] ∈ UNINITIALIZED + .ti ∈ {2} + ty.ts ∈ {1} + .[bits 16 to 31] ∈ UNINITIALIZED + .ti ∈ {2} +[value:final-states] Values at end of function g: + v ∈ {1} or UNINITIALIZED + i ∈ {1} or UNINITIALIZED +[value:final-states] Values at end of function h: + v ∈ {1} + i ∈ {1} +[value:final-states] Values at end of function main: + v1.ts ∈ {1} + .[bits 16 to 31] ∈ UNINITIALIZED + .ti ∈ {2} + v2.ts ∈ {1} + .[bits 16 to 31] ∈ UNINITIALIZED + .ti ∈ {2} + v ∈ {1} + x ∈ {1} +[from] Computing for function f +[from] Done for function f +[from] Computing for function g +[from] Done for function g +[from] Computing for function h +[from] Done for function h +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + v1 FROM \nothing +[from] Function g: + v FROM maybe +[from] Function h: + v FROM maybe; i +[from] Function main: + v1 FROM \nothing + v2 FROM \nothing + v FROM maybe +[from] ====== END OF DEPENDENCIES ====== +[from] ====== DISPLAYING CALLWISE DEPENDENCIES ====== +[from] call to f at tests/value/deps_unitialized_locals.i:33 (by main): + v1 FROM \nothing +[from] call to g at tests/value/deps_unitialized_locals.i:36 (by main): + v FROM maybe +[from] call to h at tests/value/deps_unitialized_locals.i:39 (by main): + v FROM maybe; i +[from] entry point: + v1 FROM \nothing + v2 FROM \nothing + v FROM maybe +[from] ====== END OF CALLWISE DEPENDENCIES ====== +[inout] Out (internal) for function f: + v1; ty{.ts; .ti} +[inout] Inputs for function f: + \nothing +[inout] Out (internal) for function g: + v; i +[inout] Inputs for function g: + maybe +[inout] Out (internal) for function h: + v; i +[inout] Inputs for function h: + maybe +[inout] Out (internal) for function main: + v1; v2; v; x +[inout] Inputs for function main: + maybe; v1 diff --git a/tests/value/oracle_symblocs/deref.err.oracle b/tests/value/oracle_symblocs/deref.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/deref.res.oracle b/tests/value/oracle_symblocs/deref.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..458c6dcb993dfa749dbc22087325659ed9b47259 --- /dev/null +++ b/tests/value/oracle_symblocs/deref.res.oracle @@ -0,0 +1,30 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/deref.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + a ∈ {0} + b ∈ {0} + c ∈ {0} + d ∈ {0} + e ∈ {0} + p ∈ {0} + t[0..9] ∈ {0} +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + p ∈ {{ &a }} + i ∈ {0} + __retres ∈ {0} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + p FROM \nothing + \result FROM a; b; c; d; t[0] +[from] ====== END OF DEPENDENCIES ====== +[inout] Derefs for function main: + a; d diff --git a/tests/value/oracle_symblocs/disjoint_status.err.oracle b/tests/value/oracle_symblocs/disjoint_status.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/disjoint_status.res.oracle b/tests/value/oracle_symblocs/disjoint_status.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..c65e52119db650813642860d8191e6339fdc40b7 --- /dev/null +++ b/tests/value/oracle_symblocs/disjoint_status.res.oracle @@ -0,0 +1,92 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/disjoint_status.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + x ∈ {0} +tests/value/disjoint_status.i:13:[value] warning: function main: precondition got status unknown. +tests/value/disjoint_status.i:14:[value] warning: function main: precondition got status unknown. +[value] computing for function f <- main. + Called from tests/value/disjoint_status.i:18. +tests/value/disjoint_status.i:6:[value] function f: precondition 'ReqTrue' got status valid. +tests/value/disjoint_status.i:8:[value] warning: assertion 'A1' got status invalid (stopping propagation). +[value] Recording results for f +[value] Done for function f +tests/value/disjoint_status.i:19:[value] warning: assertion got status unknown. +[value] computing for function f <- main. + Called from tests/value/disjoint_status.i:20. +tests/value/disjoint_status.i:8:[value] assertion 'A1' got status valid. +tests/value/disjoint_status.i:9:[value] assertion 'A2' got status valid. +tests/value/disjoint_status.i:6:[value] function f: postcondition 'PostTrue' got status valid. +[value] Recording results for f +[value] Done for function f +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + x ∈ {0} +[value:final-states] Values at end of function main: + x ∈ {0} +[from] Computing for function f +[from] Done for function f +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + x FROM c; d +[from] Function main: + x FROM c; d +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + x +[inout] Inputs for function f: + \nothing +[inout] Out (internal) for function main: + x +[inout] Inputs for function main: + \nothing +[report] Computing properties status... + +-------------------------------------------------------------------------------- +--- Properties of Function 'f' +-------------------------------------------------------------------------------- + +[ Valid ] Post-condition 'PostTrue' + by Value. +[ Valid ] Pre-condition 'ReqTrue' + by Call Preconditions. +[ - ] Assertion 'A1' (file tests/value/disjoint_status.i, line 8) + tried with Value. +[ Valid ] Assertion 'A2' (file tests/value/disjoint_status.i, line 9) + by Value. +[ Valid ] Default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'main' +-------------------------------------------------------------------------------- + +[ - ] Pre-condition (file tests/value/disjoint_status.i, line 13) + tried with Value. +[ - ] Pre-condition (file tests/value/disjoint_status.i, line 14) + tried with Value. +[ - ] Assertion (file tests/value/disjoint_status.i, line 19) + tried with Value. +[ Valid ] Default behavior + by Frama-C kernel. +[ Valid ] Instance of 'Pre-condition 'ReqTrue'' at call 'f' (file tests/value/disjoint_status.i, line 18) + + by Value. +[ Valid ] Instance of 'Pre-condition 'ReqTrue'' at call 'f' (file tests/value/disjoint_status.i, line 20) + + by Value. + +-------------------------------------------------------------------------------- +--- Status Report Summary +-------------------------------------------------------------------------------- + 7 Completely validated + 4 To be validated + 11 Total +-------------------------------------------------------------------------------- diff --git a/tests/value/oracle_symblocs/div.0.err.oracle b/tests/value/oracle_symblocs/div.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/div.0.res.oracle b/tests/value/oracle_symblocs/div.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..0a406329a244119225db3d554b30fc9320a4fecb --- /dev/null +++ b/tests/value/oracle_symblocs/div.0.res.oracle @@ -0,0 +1,111 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/div.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + X ∈ {0} + Y ∈ {0} + Z1 ∈ {0} + Z2 ∈ {0} + T ∈ {0} + U1 ∈ {0} + U2 ∈ {0} + V ∈ {0} + W1 ∈ {0} + W2 ∈ {0} + a ∈ {0} + b ∈ {0} + d1 ∈ {0} + d2 ∈ {0} + d0 ∈ {0} + e ∈ {0} + t[0] ∈ {1} + [1] ∈ {2} + [2] ∈ {3} + [3..4] ∈ {0} + p ∈ {0} +tests/value/div.i:14:[value] entering loop for the first time +tests/value/div.i:14:[value] warning: signed overflow. assert c+1 ≤ 2147483647; +tests/value/div.i:17:[value] warning: signed overflow. assert c+2 ≤ 2147483647; +tests/value/div.i:17:[value] warning: signed overflow. assert -2147483648 ≤ X-1; +tests/value/div.i:16:[value] warning: signed overflow. assert X+1 ≤ 2147483647; +tests/value/div.i:32:[value] warning: division by zero. assert Z2 ≢ 0; +tests/value/div.i:33:[value] warning: division by zero. assert Z2 ≢ 0; +tests/value/div.i:33:[value] warning: signed overflow. assert -2147483648 ≤ (int)(&Z2)/Z2; +tests/value/div.i:33:[value] warning: signed overflow. assert (int)(&Z2)/Z2 ≤ 2147483647; +tests/value/div.i:33:[value] Assigning imprecise value to b. + The imprecision originates from Arithmetic {tests/value/div.i:33} +tests/value/div.i:34:[value] warning: division by zero. assert (int)(&X+2) ≢ 0; +tests/value/div.i:34:[value] warning: pointer comparison. assert \pointer_comparable((void *)0, (void *)(&X+2)); +tests/value/div.i:34:[value] warning: signed overflow. assert -2147483648 ≤ 100/(int)(&X+2); +tests/value/div.i:34:[value] warning: signed overflow. assert 100/(int)(&X+2) ≤ 2147483647; +tests/value/div.i:34:[value] Assigning imprecise value to d2. + The imprecision originates from Arithmetic {tests/value/div.i:34} +tests/value/div.i:35:[value] warning: signed overflow. assert -2147483648 ≤ 100/(int)(&X+1); +tests/value/div.i:35:[value] warning: signed overflow. assert 100/(int)(&X+1) ≤ 2147483647; +tests/value/div.i:35:[value] Assigning imprecise value to d1. + The imprecision originates from Arithmetic {tests/value/div.i:35} +tests/value/div.i:36:[value] warning: signed overflow. assert -2147483648 ≤ 100/(int)(&X); +tests/value/div.i:36:[value] warning: signed overflow. assert 100/(int)(&X) ≤ 2147483647; +tests/value/div.i:36:[value] Assigning imprecise value to d0. + The imprecision originates from Arithmetic {tests/value/div.i:36} +tests/value/div.i:37:[value] warning: signed overflow. assert -2147483648 ≤ -((int)(&X)); +tests/value/div.i:37:[value] warning: signed overflow. assert -((int)(&X)) ≤ 2147483647; +tests/value/div.i:37:[value] Assigning imprecise value to e. + The imprecision originates from Arithmetic {tests/value/div.i:37} +[value] Recording results for main +[value] done for function main +tests/value/div.i:34:[value] assertion 'Value,division_by_zero' got final status valid. +[scope:rm_asserts] removing 1 assertion(s) +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + X ∈ [--..--] + Y ∈ [-126..333],9%27 + Z1 ∈ [-42..111],3%9 + Z2 ∈ [-25..66] + T ∈ [34..493],7%27 + U1 ∈ [11..164],2%9 + U2 ∈ [6..98] + V ∈ [-125..334],10%27 + W1 ∈ [-41..111] + W2 ∈ [-25..66] + a ∈ [-40000..40000] + b ∈ + {{ garbled mix of &{Z2} (origin: Arithmetic {tests/value/div.i:33}) }} + d1 ∈ + {{ garbled mix of &{X} (origin: Arithmetic {tests/value/div.i:35}) }} + d2 ∈ + {{ garbled mix of &{X} (origin: Arithmetic {tests/value/div.i:34}) }} + d0 ∈ + {{ garbled mix of &{X} (origin: Arithmetic {tests/value/div.i:36}) }} + e ∈ {{ garbled mix of &{X} (origin: Arithmetic {tests/value/div.i:37}) }} + p ∈ {{ &t[3] }} + c ∈ [--..--] +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + X FROM X (and SELF) + Y FROM X + Z1 FROM X + Z2 FROM X + T FROM X + U1 FROM X + U2 FROM X + V FROM X + W1 FROM X + W2 FROM X + a FROM X + b FROM X + d1 FROM \nothing + d2 FROM \nothing + d0 FROM \nothing + e FROM \nothing + p FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + X; Y; Z1; Z2; T; U1; U2; V; W1; W2; a; b; d1; d2; d0; e; p; c +[inout] Inputs for function main: + X; Y; Z2; T; V diff --git a/tests/value/oracle_symblocs/div.1.err.oracle b/tests/value/oracle_symblocs/div.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/div.1.res.oracle b/tests/value/oracle_symblocs/div.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..5a7ece3822ce34d7189df1beb39fd41c8b650296 --- /dev/null +++ b/tests/value/oracle_symblocs/div.1.res.oracle @@ -0,0 +1,105 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/div.i (no preprocessing) +[rte] annotating function main +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + X ∈ {0} + Y ∈ {0} + Z1 ∈ {0} + Z2 ∈ {0} + T ∈ {0} + U1 ∈ {0} + U2 ∈ {0} + V ∈ {0} + W1 ∈ {0} + W2 ∈ {0} + a ∈ {0} + b ∈ {0} + d1 ∈ {0} + d2 ∈ {0} + d0 ∈ {0} + e ∈ {0} + t[0] ∈ {1} + [1] ∈ {2} + [2] ∈ {3} + [3..4] ∈ {0} + p ∈ {0} +tests/value/div.i:14:[value] entering loop for the first time +tests/value/div.i:14:[value] warning: assertion 'rte,signed_overflow' got status unknown. +tests/value/div.i:14:[value] warning: signed overflow. assert c+1 ≤ 2147483647; +tests/value/div.i:16:[value] assertion 'rte,signed_overflow' got status valid. +tests/value/div.i:17:[value] warning: assertion 'rte,signed_overflow' got status unknown. +tests/value/div.i:17:[value] warning: signed overflow. assert c+2 ≤ 2147483647; +tests/value/div.i:17:[value] assertion 'rte,signed_overflow' got status valid. +tests/value/div.i:17:[value] warning: assertion 'rte,signed_overflow' got status unknown. +tests/value/div.i:17:[value] warning: signed overflow. assert -2147483648 ≤ X-1; +tests/value/div.i:16:[value] warning: assertion 'rte,signed_overflow' got status unknown. +tests/value/div.i:16:[value] warning: signed overflow. assert X+1 ≤ 2147483647; +tests/value/div.i:22:[value] assertion 'rte,signed_overflow' got status valid. +tests/value/div.i:25:[value] assertion 'rte,signed_overflow' got status valid. +tests/value/div.i:28:[value] assertion 'rte,signed_overflow' got status valid. +tests/value/div.i:32:[value] warning: assertion 'rte,division_by_zero' got status unknown. +tests/value/div.i:32:[value] warning: division by zero. assert Z2 ≢ 0; +tests/value/div.i:33:[value] warning: assertion 'rte,division_by_zero' got status unknown. +tests/value/div.i:33:[value] warning: assertion 'rte,signed_overflow' got status unknown. +tests/value/div.i:33:[value] warning: division by zero. assert Z2 ≢ 0; +tests/value/div.i:33:[value] warning: signed overflow. assert -2147483648 ≤ (int)(&Z2)/Z2; +tests/value/div.i:33:[value] warning: signed overflow. assert (int)(&Z2)/Z2 ≤ 2147483647; +tests/value/div.i:33:[value] Assigning imprecise value to b. + The imprecision originates from Arithmetic {tests/value/div.i:33} +tests/value/div.i:34:[value] assertion 'rte,division_by_zero' got status valid. +tests/value/div.i:34:[value] warning: division by zero. assert (int)(&X+2) ≢ 0; +tests/value/div.i:34:[value] warning: pointer comparison. assert \pointer_comparable((void *)0, (void *)(&X+2)); +tests/value/div.i:34:[value] warning: signed overflow. assert -2147483648 ≤ 100/(int)(&X+2); +tests/value/div.i:34:[value] warning: signed overflow. assert 100/(int)(&X+2) ≤ 2147483647; +tests/value/div.i:34:[value] Assigning imprecise value to d2. + The imprecision originates from Arithmetic {tests/value/div.i:34} +tests/value/div.i:35:[value] assertion 'rte,division_by_zero' got status valid. +tests/value/div.i:35:[value] warning: signed overflow. assert -2147483648 ≤ 100/(int)(&X+1); +tests/value/div.i:35:[value] warning: signed overflow. assert 100/(int)(&X+1) ≤ 2147483647; +tests/value/div.i:35:[value] Assigning imprecise value to d1. + The imprecision originates from Arithmetic {tests/value/div.i:35} +tests/value/div.i:36:[value] assertion 'rte,division_by_zero' got status valid. +tests/value/div.i:36:[value] warning: signed overflow. assert -2147483648 ≤ 100/(int)(&X); +tests/value/div.i:36:[value] warning: signed overflow. assert 100/(int)(&X) ≤ 2147483647; +tests/value/div.i:36:[value] Assigning imprecise value to d0. + The imprecision originates from Arithmetic {tests/value/div.i:36} +tests/value/div.i:37:[value] warning: assertion 'rte,signed_overflow' got status unknown. +tests/value/div.i:37:[value] warning: signed overflow. assert -2147483648 ≤ -((int)(&X)); +tests/value/div.i:37:[value] warning: signed overflow. assert -((int)(&X)) ≤ 2147483647; +tests/value/div.i:37:[value] Assigning imprecise value to e. + The imprecision originates from Arithmetic {tests/value/div.i:37} +[value] Recording results for main +[value] done for function main +tests/value/div.i:22:[value] assertion 'rte,signed_overflow' got final status valid. +tests/value/div.i:25:[value] assertion 'rte,signed_overflow' got final status valid. +tests/value/div.i:28:[value] assertion 'rte,signed_overflow' got final status valid. +tests/value/div.i:34:[value] assertion 'rte,division_by_zero' got final status valid. +tests/value/div.i:35:[value] assertion 'rte,division_by_zero' got final status valid. +tests/value/div.i:36:[value] assertion 'rte,division_by_zero' got final status valid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + X ∈ [--..--] + Y ∈ [-126..333],9%27 + Z1 ∈ [-42..111],3%9 + Z2 ∈ [-25..66] + T ∈ [34..493],7%27 + U1 ∈ [11..164],2%9 + U2 ∈ [6..98] + V ∈ [-125..334],10%27 + W1 ∈ [-41..111] + W2 ∈ [-25..66] + a ∈ [-40000..40000] + b ∈ + {{ garbled mix of &{Z2} (origin: Arithmetic {tests/value/div.i:33}) }} + d1 ∈ + {{ garbled mix of &{X} (origin: Arithmetic {tests/value/div.i:35}) }} + d2 ∈ + {{ garbled mix of &{X} (origin: Arithmetic {tests/value/div.i:34}) }} + d0 ∈ + {{ garbled mix of &{X} (origin: Arithmetic {tests/value/div.i:36}) }} + e ∈ {{ garbled mix of &{X} (origin: Arithmetic {tests/value/div.i:37}) }} + p ∈ {{ &t[3] }} + c ∈ [--..--] diff --git a/tests/value/oracle_symblocs/div_strange.err.oracle b/tests/value/oracle_symblocs/div_strange.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/div_strange.res.oracle b/tests/value/oracle_symblocs/div_strange.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..313dbae9a825d1ee085b560b3012b0a9b5936014 --- /dev/null +++ b/tests/value/oracle_symblocs/div_strange.res.oracle @@ -0,0 +1,25 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/div_strange.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] Called Frama_C_show_each_F({1073741823}) +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + x ∈ {1073741823} + __retres ∈ {0} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + x; __retres +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/divneg.err.oracle b/tests/value/oracle_symblocs/divneg.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/divneg.res.oracle b/tests/value/oracle_symblocs/divneg.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e136b8775816e11f09dfe8c7bceb1720f989f003 --- /dev/null +++ b/tests/value/oracle_symblocs/divneg.res.oracle @@ -0,0 +1,83 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/divneg.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + i ∈ [--..--] + r0 ∈ {0} + r1 ∈ {6} + r2 ∈ {-8} + r6 ∈ {0} + r7 ∈ {0} + r8 ∈ {0} + r9 ∈ {0} + rn1 ∈ {5} + rn2 ∈ {0} + rn3 ∈ {0} + rn4 ∈ {-3} + rn5 ∈ {0} + vic ∈ {0} +[value] Called Frama_C_show_each([-185..-5],4%9, [1..61],1%3) +[value] DUMPING STATE of file tests/value/divneg.i line 42 + i ∈ [-100..100] + r0 ∈ [-100..100],0%5 + r1 ∈ [1..96],1%5 + r2 ∈ [-98..-3],2%5 + r6 ∈ {0} + r7 ∈ [-100..100] + r8 ∈ [-100..100] + r9 ∈ {0} + rn1 ∈ [-99..99],1%2 + rn2 ∈ [-100..100],0%2 + rn3 ∈ [-100..100],0%2 + rn4 ∈ [-99..99],1%2 + rn5 ∈ [-100..100] + vic ∈ {0} + c ∈ [-185..-5],4%9 + rc ∈ [-176..-14],4%18 or UNINITIALIZED + __retres ∈ UNINITIALIZED + =END OF DUMP== +[value] Called Frama_C_show_each_should({-1}) +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + r0 ∈ [-100..100],0%5 + r1 ∈ [1..96],1%5 + r2 ∈ [-98..-3],2%5 + r7 ∈ [-100..100] + r8 ∈ [-100..100] + rn1 ∈ [-99..99],1%2 + rn2 ∈ [-100..100],0%2 + rn3 ∈ [-100..100],0%2 + rn4 ∈ [-99..99],1%2 + rn5 ∈ [-100..100] + vic ∈ {4294967295} + c ∈ [5..185],5%9 + rc ∈ [14..176],14%18 + __retres ∈ {0} +[from] Computing for function main +[from] Computing for function Frama_C_dump_each <-main +[from] Done for function Frama_C_dump_each +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + r0 FROM i (and SELF) + r1 FROM i (and SELF) + r2 FROM i (and SELF) + r7 FROM i (and SELF) + r8 FROM i (and SELF) + rn1 FROM i (and SELF) + rn2 FROM i (and SELF) + rn3 FROM i (and SELF) + rn4 FROM i (and SELF) + rn5 FROM i (and SELF) + vic FROM \nothing + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + r0; r1; r2; r7; r8; rn1; rn2; rn3; rn4; rn5; vic; c; rc; __retres +[inout] Inputs for function main: + i; vic diff --git a/tests/value/oracle_symblocs/downcast.err.oracle b/tests/value/oracle_symblocs/downcast.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/downcast.res.oracle b/tests/value/oracle_symblocs/downcast.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..f8f369627ac7ebf3e120d6a87cd62ebf2e959fdd --- /dev/null +++ b/tests/value/oracle_symblocs/downcast.res.oracle @@ -0,0 +1,1705 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/downcast.i (no preprocessing) +[value] Analyzing an incomplete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + sx ∈ [--..--] + sy ∈ [--..--] + sz ∈ [--..--] + uc ∈ [--..--] + x ∈ [--..--] + ux ∈ [--..--] + uy ∈ [--..--] + uz ∈ [--..--] + s ∈ [--..--] + v ∈ [--..--] +[value] computing for function main1 <- main. + Called from tests/value/downcast.i:142. +tests/value/downcast.i:19:[value] warning: signed downcast. assert -128 ≤ (int)sx+(int)sy; +tests/value/downcast.i:19:[value] warning: signed downcast. assert (int)sx+(int)sy ≤ 127; +tests/value/downcast.i:22:[value] warning: signed downcast. assert uy+uz ≤ 2147483647; +[value] Recording results for main1 +[value] Done for function main1 +[value] computing for function main2_bitfield <- main. + Called from tests/value/downcast.i:143. +tests/value/downcast.i:32:[value] warning: signed downcast. assert i ≤ 15; +[value] Recording results for main2_bitfield +[value] Done for function main2_bitfield +[value] computing for function main3_reduction <- main. + Called from tests/value/downcast.i:144. +tests/value/downcast.i:38:[value] warning: signed downcast. assert -128 ≤ x_0; +tests/value/downcast.i:38:[value] warning: signed downcast. assert x_0 ≤ 127; +[value] Recording results for main3_reduction +[value] Done for function main3_reduction +[value] computing for function main4_pointer <- main. + Called from tests/value/downcast.i:145. +tests/value/downcast.i:48:[value] warning: signed downcast. assert p ≤ 2147483647; +[value] Recording results for main4_pointer +[value] Done for function main4_pointer +[value] computing for function main5_wrap_signed <- main. + Called from tests/value/downcast.i:146. +tests/value/downcast.i:54:[value] warning: assertion 'ASSUME' got status unknown. +tests/value/downcast.i:55:[value] assertion got status valid. +tests/value/downcast.i:58:[value] warning: signed downcast. assert y ≤ 2147483647; +[value] Called Frama_C_show_each([100000..2147483647], + [100145..2147483647], + [100145..2147483647]) +tests/value/downcast.i:60:[value] assertion got status valid. +[value] Recording results for main5_wrap_signed +[value] Done for function main5_wrap_signed +[value] computing for function main6_val_warn_converted_signed <- main. + Called from tests/value/downcast.i:147. +tests/value/downcast.i:67:[value] warning: signed downcast. assert 65300u ≤ 32767; +tests/value/downcast.i:78:[value] warning: signed downcast. assert e_0 ≤ 32767; +tests/value/downcast.i:83:[value] warning: signed downcast. assert e_1 ≤ 32767; +[value] Recording results for main6_val_warn_converted_signed +[value] Done for function main6_val_warn_converted_signed +[value] computing for function main7_signed_upcast <- main. + Called from tests/value/downcast.i:148. +[value] Recording results for main7_signed_upcast +[value] Done for function main7_signed_upcast +[value] computing for function main8_bitfields <- main. + Called from tests/value/downcast.i:149. +tests/value/downcast.i:104:[value] warning: signed downcast. assert S.i1 ≤ 31; +tests/value/downcast.i:105:[value] warning: signed downcast. assert S.i1 ≤ 127; +tests/value/downcast.i:109:[value] warning: signed downcast. assert S.i1 ≤ 31; +tests/value/downcast.i:110:[value] warning: signed downcast. assert S.i1 ≤ 127; +tests/value/downcast.i:114:[value] warning: signed downcast. assert S.i1 ≤ 31; +[value] Recording results for main8_bitfields +[value] Done for function main8_bitfields +[value] computing for function main9_bitfield <- main. + Called from tests/value/downcast.i:150. +tests/value/downcast.i:123:[value] warning: signed downcast. assert bf.a ≤ 1023; +tests/value/downcast.i:127:[value] warning: signed downcast. assert bf.a ≤ 127; +[value] Recording results for main9_bitfield +[value] Done for function main9_bitfield +[value] computing for function main10_loop <- main. + Called from tests/value/downcast.i:151. +tests/value/downcast.i:135:[value] entering loop for the first time +tests/value/downcast.i:137:[value] warning: signed downcast. assert bf.b ≤ 127; +[value] Recording results for main10_loop +[value] Done for function main10_loop +[value] Recording results for main +[value] done for function main +tests/value/downcast.i:32:[value] assertion 'Value,signed_downcast' got final status invalid. +tests/value/downcast.i:67:[value] assertion 'Value,signed_downcast' got final status invalid. +tests/value/downcast.i:78:[value] assertion 'Value,signed_downcast' got final status invalid. +tests/value/downcast.i:83:[value] assertion 'Value,signed_downcast' got final status invalid. +tests/value/downcast.i:104:[value] assertion 'Value,signed_downcast' got final status invalid. +tests/value/downcast.i:105:[value] assertion 'Value,signed_downcast' got final status invalid. +tests/value/downcast.i:109:[value] assertion 'Value,signed_downcast' got final status invalid. +tests/value/downcast.i:110:[value] assertion 'Value,signed_downcast' got final status invalid. +tests/value/downcast.i:114:[value] assertion 'Value,signed_downcast' got final status invalid. +tests/value/downcast.i:123:[value] assertion 'Value,signed_downcast' got final status invalid. +tests/value/downcast.i:127:[value] assertion 'Value,signed_downcast' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main1: + sz ∈ [--..--] + uc ∈ [--..--] + x ∈ [0..2147483647] + ux ∈ [--..--] + s ∈ [--..--] +[value:final-states] Values at end of function main10_loop: + c ∈ [0..127] or UNINITIALIZED + bf.b ∈ [--..--] or UNINITIALIZED + .[bits 10 to 31] ∈ UNINITIALIZED + k ∈ {10} +[value:final-states] Values at end of function main2_bitfield: + i ∈ {117} + j ∈ {254} + ss.i ∈ UNINITIALIZED + .j ∈ {30} or UNINITIALIZED + .[bits 10 to 31] ∈ UNINITIALIZED +[value:final-states] Values at end of function main3_reduction: + x_0 ∈ [-128..127] + c ∈ [--..--] + y ∈ [--..--] + d ∈ [--..--] +[value:final-states] Values at end of function main4_pointer: + p ∈ {{ (long long)&x_0 }} + q ∈ {{ (unsigned int)&x_0 }} + r ∈ {{ (int)&x_0 }} +[value:final-states] Values at end of function main5_wrap_signed: + x_0 ∈ [100000..2147483647] + y ∈ [100145..2147483647] + z ∈ [100145..2147483647] +[value:final-states] Values at end of function main6_val_warn_converted_signed: + +[value:final-states] Values at end of function main7_signed_upcast: + c ∈ {240} + i ∈ {240} +[value:final-states] Values at end of function main8_bitfields: + S.i1 ∈ {65} + {.i2; .[bits 24 to 31]} ∈ UNINITIALIZED + c ∈ {65} or UNINITIALIZED +[value:final-states] Values at end of function main9_bitfield: + bf.a ∈ {1648} + .[bits 11 to 31] ∈ UNINITIALIZED + c ∈ UNINITIALIZED +[value:final-states] Values at end of function main: + sz ∈ [--..--] + uc ∈ [--..--] + x ∈ [0..2147483647] + ux ∈ [--..--] + s ∈ [--..--] +[from] Computing for function main1 +[from] Done for function main1 +[from] Computing for function main10_loop +[from] Done for function main10_loop +[from] Computing for function main2_bitfield +[from] Done for function main2_bitfield +[from] Computing for function main3_reduction +[from] Done for function main3_reduction +[from] Computing for function main4_pointer +[from] Done for function main4_pointer +[from] Computing for function main5_wrap_signed +[from] Done for function main5_wrap_signed +[from] Computing for function main6_val_warn_converted_signed +[from] Done for function main6_val_warn_converted_signed +[from] Computing for function main7_signed_upcast +[from] Done for function main7_signed_upcast +[from] Computing for function main8_bitfields +[from] Done for function main8_bitfields +[from] Computing for function main9_bitfield +[from] Done for function main9_bitfield +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main1: + sz FROM sx; sy + uc FROM x + x FROM uy; uz + ux FROM uy; uz + s FROM uy; uz +[from] Function main10_loop: + NO EFFECTS +[from] Function main2_bitfield: + NO EFFECTS +[from] Function main3_reduction: + NO EFFECTS +[from] Function main4_pointer: + NO EFFECTS +[from] Function main5_wrap_signed: + NO EFFECTS +[from] Function main6_val_warn_converted_signed: + NO EFFECTS +[from] Function main7_signed_upcast: + NO EFFECTS +[from] Function main8_bitfields: + NO EFFECTS +[from] Function main9_bitfield: + NO EFFECTS +[from] Function main: + sz FROM sx; sy + uc FROM x + x FROM uy; uz + ux FROM uy; uz + s FROM uy; uz +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main1: + sz; uc; x; ux; s +[inout] Inputs for function main1: + sx; sy; x; uy; uz +[inout] Out (internal) for function main10_loop: + c; bf.b; k +[inout] Inputs for function main10_loop: + v +[inout] Out (internal) for function main2_bitfield: + i; j; ss{.i; .j} +[inout] Inputs for function main2_bitfield: + v +[inout] Out (internal) for function main3_reduction: + x_0; c; y; d +[inout] Inputs for function main3_reduction: + v +[inout] Out (internal) for function main4_pointer: + p; q; r +[inout] Inputs for function main4_pointer: + \nothing +[inout] Out (internal) for function main5_wrap_signed: + x_0; y; z +[inout] Inputs for function main5_wrap_signed: + v +[inout] Out (internal) for function main6_val_warn_converted_signed: + s_0; u; e; b; e_0; b_0; e_1; b_1 +[inout] Inputs for function main6_val_warn_converted_signed: + v +[inout] Out (internal) for function main7_signed_upcast: + c; i +[inout] Inputs for function main7_signed_upcast: + \nothing +[inout] Out (internal) for function main8_bitfields: + S{.i1; .i2}; c +[inout] Inputs for function main8_bitfields: + v +[inout] Out (internal) for function main9_bitfield: + bf.a; signed_a; c +[inout] Inputs for function main9_bitfield: + v +[inout] Out (internal) for function main: + sz; uc; x; ux; s +[inout] Inputs for function main: + sx; sy; x; uy; uz; v +[report] Computing properties status... + +-------------------------------------------------------------------------------- +--- Properties of Function 'main1' +-------------------------------------------------------------------------------- + +[ - ] Assertion 'Value,signed_downcast' (file tests/value/downcast.i, line 19) + tried with Value. +[ - ] Assertion 'Value,signed_downcast' (file tests/value/downcast.i, line 19) + tried with Value. +[ - ] Assertion 'Value,signed_downcast' (file tests/value/downcast.i, line 22) + tried with Value. + +-------------------------------------------------------------------------------- +--- Properties of Function 'main2_bitfield' +-------------------------------------------------------------------------------- + +[ Alarm ] Assertion 'Value,signed_downcast' (file tests/value/downcast.i, line 32) + By Value, with pending: + - Unreachable instruction (file tests/value/downcast.i, line 32) + +-------------------------------------------------------------------------------- +--- Properties of Function 'main3_reduction' +-------------------------------------------------------------------------------- + +[ - ] Assertion 'Value,signed_downcast' (file tests/value/downcast.i, line 38) + tried with Value. +[ - ] Assertion 'Value,signed_downcast' (file tests/value/downcast.i, line 38) + tried with Value. + +-------------------------------------------------------------------------------- +--- Properties of Function 'main4_pointer' +-------------------------------------------------------------------------------- + +[ - ] Assertion 'Value,signed_downcast' (file tests/value/downcast.i, line 48) + tried with Value. + +-------------------------------------------------------------------------------- +--- Properties of Function 'main5_wrap_signed' +-------------------------------------------------------------------------------- + +[ - ] Assertion 'ASSUME' (file tests/value/downcast.i, line 54) + tried with Value. +[ Valid ] Assertion (file tests/value/downcast.i, line 55) + by Value. +[ Valid ] Assertion (file tests/value/downcast.i, line 60) + by Value. +[ - ] Assertion 'Value,signed_downcast' (file tests/value/downcast.i, line 58) + tried with Value. + +-------------------------------------------------------------------------------- +--- Properties of Function 'main6_val_warn_converted_signed' +-------------------------------------------------------------------------------- + +[ Alarm ] Assertion 'Value,signed_downcast' (file tests/value/downcast.i, line 67) + By Value, with pending: + - Unreachable instruction (file tests/value/downcast.i, line 67) +[ Alarm ] Assertion 'Value,signed_downcast' (file tests/value/downcast.i, line 78) + By Value, with pending: + - Unreachable instruction (file tests/value/downcast.i, line 78) +[ Alarm ] Assertion 'Value,signed_downcast' (file tests/value/downcast.i, line 83) + By Value, with pending: + - Unreachable instruction (file tests/value/downcast.i, line 83) + +-------------------------------------------------------------------------------- +--- Properties of Function 'main8_bitfields' +-------------------------------------------------------------------------------- + +[ Alarm ] Assertion 'Value,signed_downcast' (file tests/value/downcast.i, line 104) + By Value, with pending: + - Unreachable instruction (file tests/value/downcast.i, line 104) +[ Alarm ] Assertion 'Value,signed_downcast' (file tests/value/downcast.i, line 105) + By Value, with pending: + - Unreachable instruction (file tests/value/downcast.i, line 105) +[ Alarm ] Assertion 'Value,signed_downcast' (file tests/value/downcast.i, line 109) + By Value, with pending: + - Unreachable instruction (file tests/value/downcast.i, line 109) +[ Alarm ] Assertion 'Value,signed_downcast' (file tests/value/downcast.i, line 110) + By Value, with pending: + - Unreachable instruction (file tests/value/downcast.i, line 110) +[ Alarm ] Assertion 'Value,signed_downcast' (file tests/value/downcast.i, line 114) + By Value, with pending: + - Unreachable instruction (file tests/value/downcast.i, line 114) + +-------------------------------------------------------------------------------- +--- Properties of Function 'main9_bitfield' +-------------------------------------------------------------------------------- + +[ Dead ] Assertion (file tests/value/downcast.i, line 124) + Locally valid, but unreachable. + By Value because: + - Unreachable program point (file tests/value/downcast.i, line 124) +[ Alarm ] Assertion 'Value,signed_downcast' (file tests/value/downcast.i, line 123) + By Value, with pending: + - Unreachable instruction (file tests/value/downcast.i, line 123) +[ Alarm ] Assertion 'Value,signed_downcast' (file tests/value/downcast.i, line 127) + By Value, with pending: + - Unreachable instruction (file tests/value/downcast.i, line 127) +[Unreachable] Unreachable program point (file tests/value/downcast.i, line 124) + by Value. + +-------------------------------------------------------------------------------- +--- Properties of Function 'main10_loop' +-------------------------------------------------------------------------------- + +[ - ] Assertion 'Value,signed_downcast' (file tests/value/downcast.i, line 137) + tried with Value. + +-------------------------------------------------------------------------------- +--- Status Report Summary +-------------------------------------------------------------------------------- + 2 Completely validated + 9 To be validated + 11 Alarms emitted + 1 Dead property + 1 Unreachable + 24 Total +-------------------------------------------------------------------------------- +/* Generated by Frama-C */ +struct s { + int i : 5 ; + unsigned int j : 5 ; +}; +struct bitf { + unsigned int i1 : 18 ; + int i2 : 6 ; +}; +struct __anonstruct_bf_1 { + unsigned int a : 11 ; +}; +struct __anonstruct_bf_2 { + unsigned int b : 10 ; +}; +signed char sx; +signed char sy; +signed char sz; +unsigned char uc; +int x; +unsigned int ux; +unsigned int uy; +unsigned int uz; +unsigned short s; +int volatile v; +void main1(void) +{ + /*@ assert Value: signed_downcast: -128 ≤ (int)sx+(int)sy; */ + /*@ assert Value: signed_downcast: (int)sx+(int)sy ≤ 127; */ + sz = (signed char)((int)sx + (int)sy); + uc = (unsigned char)((int)sx + (int)sy); + uc = (unsigned char)x; + /*@ assert Value: signed_downcast: uy+uz ≤ 2147483647; */ + x = (int)(uy + uz); + ux = uy + uz; + s = (unsigned short)(uy + uz); + return; +} + +void main2_bitfield(void) +{ + int i; + unsigned int j; + struct s ss; + i = 117; + j = (unsigned int)254; + if (v) + /*@ assert Value: signed_downcast: i ≤ 15; */ + ss.i = (int)i; + if (v) ss.j = (unsigned int)j; + return; +} + +void main3_reduction(void) +{ + int x_0; + char c; + unsigned int y; + unsigned char d; + x_0 = v; + /*@ assert Value: signed_downcast: -128 ≤ x_0; */ + /*@ assert Value: signed_downcast: x_0 ≤ 127; */ + c = (char)x_0; + y = (unsigned int)v; + d = (unsigned char)y; + return; +} + +void main4_pointer(void) +{ + int x_0; + long long p; + unsigned int q; + int r; + p = (long long)(& x_0); + q = (unsigned int)p; + /*@ assert Value: signed_downcast: p ≤ 2147483647; */ + r = (int)p; + return; +} + +/*@ assigns \result; + assigns \result \from \nothing; */ +extern int ( /* missing proto */ Frama_C_show_each)(); + +void main5_wrap_signed(void) +{ + int x_0; + unsigned int y; + int z; + x_0 = v; + /*@ assert ASSUME: x_0 ≥ 100000; */ ; + /*@ assert x_0 > 0x7FFFFFFF-145 ∨ x_0 ≤ 0x7FFFFFFF-145; */ ; + y = (unsigned int)x_0; + y += (unsigned int)145; + /*@ assert Value: signed_downcast: y ≤ 2147483647; */ + z = (int)y; + Frama_C_show_each(x_0,y,z); + /*@ assert z ≥ 100000+145 ∨ z ≤ (int)(0x7FFFFFFF+145); */ ; + return; +} + +void main6_val_warn_converted_signed(void) +{ + if (v) { + short s_0; + /*@ assert Value: signed_downcast: 65300u ≤ 32767; */ + s_0 = (short)65300u; + } + if (v) { + unsigned short u; + u = (unsigned short)65300u; + } + if (v) { + unsigned long e; + short b; + e = (unsigned long)17; + b = (short)e; + } + if (v) { + unsigned long e_0; + short b_0; + e_0 = (unsigned long)(-12); + /*@ assert Value: signed_downcast: e_0 ≤ 32767; */ + b_0 = (short)e_0; + } + if (v) { + unsigned int e_1; + short b_1; + e_1 = (unsigned int)(-64000); + /*@ assert Value: signed_downcast: e_1 ≤ 32767; */ + b_1 = (short)e_1; + } + return; +} + +void main7_signed_upcast(void) +{ + unsigned char c; + int i; + c = (unsigned char)240; + i = (int)c; + return; +} + +void main8_bitfields(void) +{ + struct bitf S; + signed char c; + S.i1 = (unsigned int)0x3FFFF; + if (v) + /*@ assert Value: signed_downcast: S.i1 ≤ 31; */ + S.i2 = (int)S.i1; + if (v) + /*@ assert Value: signed_downcast: S.i1 ≤ 127; */ + c = (signed char)S.i1; + S.i1 = (unsigned int)257u; + if (v) + /*@ assert Value: signed_downcast: S.i1 ≤ 31; */ + S.i2 = (int)S.i1; + if (v) + /*@ assert Value: signed_downcast: S.i1 ≤ 127; */ + c = (signed char)S.i1; + S.i1 = (unsigned int)65u; + if (v) + /*@ assert Value: signed_downcast: S.i1 ≤ 31; */ + S.i2 = (int)S.i1; + if (v) c = (signed char)S.i1; + return; +} + +void main9_bitfield(void) +{ + struct __anonstruct_bf_1 bf; + signed char c; + bf.a = (unsigned int)1648; + if (v) { + int signed_a; + /*@ assert Value: signed_downcast: bf.a ≤ 1023; */ + signed_a = (int)((int)bf.a); + /*@ assert signed_a ≡ -400; */ ; + } + if (v) + /*@ assert Value: signed_downcast: bf.a ≤ 127; */ + c = (signed char)bf.a; + return; +} + +void main10_loop(void) +{ + signed char c; + struct __anonstruct_bf_2 bf; + int k; + k = 0; + while (k < 10) { + bf.b = (unsigned int)v; + if (v) + /*@ assert Value: signed_downcast: bf.b ≤ 127; */ + c = (signed char)bf.b; + k ++; + } + return; +} + +void main(void) +{ + main1(); + main2_bitfield(); + main3_reduction(); + main4_pointer(); + main5_wrap_signed(); + main6_val_warn_converted_signed(); + main7_signed_upcast(); + main8_bitfields(); + main9_bitfield(); + main10_loop(); + return; +} + + +[value] Analyzing an incomplete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + sx ∈ [--..--] + sy ∈ [--..--] + sz ∈ [--..--] + uc ∈ [--..--] + x ∈ [--..--] + ux ∈ [--..--] + uy ∈ [--..--] + uz ∈ [--..--] + s ∈ [--..--] + v ∈ [--..--] +[value] computing for function main1 <- main. + Called from tests/value/downcast.i:142. +tests/value/downcast.i:20:[value] warning: unsigned downcast. assert 0 ≤ (int)sx+(int)sy; +tests/value/downcast.i:21:[value] warning: unsigned downcast. assert 0 ≤ x; +tests/value/downcast.i:21:[value] warning: unsigned downcast. assert x ≤ 255; +tests/value/downcast.i:24:[value] warning: unsigned downcast. assert uy+uz ≤ 65535; +[value] Recording results for main1 +[value] Done for function main1 +[value] computing for function main2_bitfield <- main. + Called from tests/value/downcast.i:143. +tests/value/downcast.i:33:[value] warning: unsigned downcast. assert j ≤ 31; +[value] Recording results for main2_bitfield +[value] Done for function main2_bitfield +[value] computing for function main3_reduction <- main. + Called from tests/value/downcast.i:144. +tests/value/downcast.i:40:[value] warning: unsigned downcast. assert 0 ≤ v; +tests/value/downcast.i:41:[value] warning: unsigned downcast. assert y ≤ 255; +[value] Recording results for main3_reduction +[value] Done for function main3_reduction +[value] computing for function main4_pointer <- main. + Called from tests/value/downcast.i:145. +[value] Recording results for main4_pointer +[value] Done for function main4_pointer +[value] computing for function main5_wrap_signed <- main. + Called from tests/value/downcast.i:146. +[value] Called Frama_C_show_each([100000..2147483647], + [100145..2147483792], + [-2147483648..2147483647]) +tests/value/downcast.i:60:[value] warning: assertion got status unknown. +[value] Recording results for main5_wrap_signed +[value] Done for function main5_wrap_signed +[value] computing for function main6_val_warn_converted_signed <- main. + Called from tests/value/downcast.i:147. +tests/value/downcast.i:77:[value] warning: unsigned downcast. assert 0 ≤ -12; +tests/value/downcast.i:82:[value] warning: unsigned downcast. assert 0 ≤ -64000; +[value] Recording results for main6_val_warn_converted_signed +[value] Done for function main6_val_warn_converted_signed +[value] computing for function main7_signed_upcast <- main. + Called from tests/value/downcast.i:148. +[value] Recording results for main7_signed_upcast +[value] Done for function main7_signed_upcast +[value] computing for function main8_bitfields <- main. + Called from tests/value/downcast.i:149. +[value] Recording results for main8_bitfields +[value] Done for function main8_bitfields +[value] computing for function main9_bitfield <- main. + Called from tests/value/downcast.i:150. +tests/value/downcast.i:124:[value] assertion got status valid. +[value] Recording results for main9_bitfield +[value] Done for function main9_bitfield +[value] computing for function main10_loop <- main. + Called from tests/value/downcast.i:151. +tests/value/downcast.i:136:[value] warning: unsigned downcast. assert 0 ≤ v; +tests/value/downcast.i:136:[value] warning: unsigned downcast. assert v ≤ 1023; +[value] Recording results for main10_loop +[value] Done for function main10_loop +[value] Recording results for main +[value] done for function main +tests/value/downcast.i:33:[value] assertion 'Value,unsigned_downcast' got final status invalid. +tests/value/downcast.i:77:[value] assertion 'Value,unsigned_downcast' got final status invalid. +tests/value/downcast.i:82:[value] assertion 'Value,unsigned_downcast' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main1: + sz ∈ [--..--] + uc ∈ [--..--] + x ∈ [--..--] + ux ∈ [--..--] + s ∈ [--..--] +[value:final-states] Values at end of function main10_loop: + c ∈ [--..--] or UNINITIALIZED + bf.b ∈ [--..--] or UNINITIALIZED + .[bits 10 to 31] ∈ UNINITIALIZED + k ∈ {10} +[value:final-states] Values at end of function main2_bitfield: + i ∈ {117} + j ∈ {254} + ss.i ∈ {-11} or UNINITIALIZED + {.j; .[bits 10 to 31]} ∈ UNINITIALIZED +[value:final-states] Values at end of function main3_reduction: + x_0 ∈ [--..--] + c ∈ [--..--] + y ∈ [0..255] + d ∈ [--..--] +[value:final-states] Values at end of function main4_pointer: + p ∈ {{ (long long)&x_0 }} + q ∈ {{ (unsigned int)&x_0 }} + r ∈ {{ (int)&x_0 }} +[value:final-states] Values at end of function main5_wrap_signed: + x_0 ∈ [100000..2147483647] + y ∈ [100145..2147483792] + z ∈ [--..--] +[value:final-states] Values at end of function main6_val_warn_converted_signed: + +[value:final-states] Values at end of function main7_signed_upcast: + c ∈ {240} + i ∈ {240} +[value:final-states] Values at end of function main8_bitfields: + S.i1 ∈ {65} + .i2 ∈ {-1; 1} or UNINITIALIZED + .[bits 24 to 31] ∈ UNINITIALIZED + c ∈ {-1; 1; 65} or UNINITIALIZED +[value:final-states] Values at end of function main9_bitfield: + bf.a ∈ {1648} + .[bits 11 to 31] ∈ UNINITIALIZED + c ∈ {112} or UNINITIALIZED +[value:final-states] Values at end of function main: + sz ∈ [--..--] + uc ∈ [--..--] + x ∈ [--..--] + ux ∈ [--..--] + s ∈ [--..--] +[from] Computing for function main1 +[from] Done for function main1 +[from] Computing for function main10_loop +[from] Done for function main10_loop +[from] Computing for function main2_bitfield +[from] Done for function main2_bitfield +[from] Computing for function main3_reduction +[from] Done for function main3_reduction +[from] Computing for function main4_pointer +[from] Done for function main4_pointer +[from] Computing for function main5_wrap_signed +[from] Done for function main5_wrap_signed +[from] Computing for function main6_val_warn_converted_signed +[from] Done for function main6_val_warn_converted_signed +[from] Computing for function main7_signed_upcast +[from] Done for function main7_signed_upcast +[from] Computing for function main8_bitfields +[from] Done for function main8_bitfields +[from] Computing for function main9_bitfield +[from] Done for function main9_bitfield +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main1: + sz FROM sx; sy + uc FROM x + x FROM uy; uz + ux FROM uy; uz + s FROM uy; uz +[from] Function main10_loop: + NO EFFECTS +[from] Function main2_bitfield: + NO EFFECTS +[from] Function main3_reduction: + NO EFFECTS +[from] Function main4_pointer: + NO EFFECTS +[from] Function main5_wrap_signed: + NO EFFECTS +[from] Function main6_val_warn_converted_signed: + NO EFFECTS +[from] Function main7_signed_upcast: + NO EFFECTS +[from] Function main8_bitfields: + NO EFFECTS +[from] Function main9_bitfield: + NO EFFECTS +[from] Function main: + sz FROM sx; sy + uc FROM x + x FROM uy; uz + ux FROM uy; uz + s FROM uy; uz +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main1: + sz; uc; x; ux; s +[inout] Inputs for function main1: + sx; sy; x; uy; uz +[inout] Out (internal) for function main10_loop: + c; bf.b; k +[inout] Inputs for function main10_loop: + v +[inout] Out (internal) for function main2_bitfield: + i; j; ss{.i; .j} +[inout] Inputs for function main2_bitfield: + v +[inout] Out (internal) for function main3_reduction: + x_0; c; y; d +[inout] Inputs for function main3_reduction: + v +[inout] Out (internal) for function main4_pointer: + p; q; r +[inout] Inputs for function main4_pointer: + \nothing +[inout] Out (internal) for function main5_wrap_signed: + x_0; y; z +[inout] Inputs for function main5_wrap_signed: + v +[inout] Out (internal) for function main6_val_warn_converted_signed: + s_0; u; e; b; e_0; e_1 +[inout] Inputs for function main6_val_warn_converted_signed: + v +[inout] Out (internal) for function main7_signed_upcast: + c; i +[inout] Inputs for function main7_signed_upcast: + \nothing +[inout] Out (internal) for function main8_bitfields: + S{.i1; .i2}; c +[inout] Inputs for function main8_bitfields: + v +[inout] Out (internal) for function main9_bitfield: + bf.a; signed_a; c +[inout] Inputs for function main9_bitfield: + v +[inout] Out (internal) for function main: + sz; uc; x; ux; s +[inout] Inputs for function main: + sx; sy; x; uy; uz; v +[report] Computing properties status... + +-------------------------------------------------------------------------------- +--- Properties of Function 'main1' +-------------------------------------------------------------------------------- + +[ - ] Assertion 'Value,unsigned_downcast' (file tests/value/downcast.i, line 20) + tried with Value. +[ - ] Assertion 'Value,unsigned_downcast' (file tests/value/downcast.i, line 21) + tried with Value. +[ - ] Assertion 'Value,unsigned_downcast' (file tests/value/downcast.i, line 21) + tried with Value. +[ - ] Assertion 'Value,unsigned_downcast' (file tests/value/downcast.i, line 24) + tried with Value. + +-------------------------------------------------------------------------------- +--- Properties of Function 'main2_bitfield' +-------------------------------------------------------------------------------- + +[ Alarm ] Assertion 'Value,unsigned_downcast' (file tests/value/downcast.i, line 33) + By Value, with pending: + - Unreachable instruction (file tests/value/downcast.i, line 33) + +-------------------------------------------------------------------------------- +--- Properties of Function 'main3_reduction' +-------------------------------------------------------------------------------- + +[ - ] Assertion 'Value,unsigned_downcast' (file tests/value/downcast.i, line 40) + tried with Value. +[ - ] Assertion 'Value,unsigned_downcast' (file tests/value/downcast.i, line 41) + tried with Value. + +-------------------------------------------------------------------------------- +--- Properties of Function 'main5_wrap_signed' +-------------------------------------------------------------------------------- + +[ - ] Assertion 'ASSUME' (file tests/value/downcast.i, line 54) + tried with Value. +[ Valid ] Assertion (file tests/value/downcast.i, line 55) + by Value. +[ - ] Assertion (file tests/value/downcast.i, line 60) + tried with Value. + +-------------------------------------------------------------------------------- +--- Properties of Function 'main6_val_warn_converted_signed' +-------------------------------------------------------------------------------- + +[ Alarm ] Assertion 'Value,unsigned_downcast' (file tests/value/downcast.i, line 77) + By Value, with pending: + - Unreachable instruction (file tests/value/downcast.i, line 77) +[ Alarm ] Assertion 'Value,unsigned_downcast' (file tests/value/downcast.i, line 82) + By Value, with pending: + - Unreachable instruction (file tests/value/downcast.i, line 82) + +-------------------------------------------------------------------------------- +--- Properties of Function 'main9_bitfield' +-------------------------------------------------------------------------------- + +[ Valid ] Assertion (file tests/value/downcast.i, line 124) + by Value. + +-------------------------------------------------------------------------------- +--- Properties of Function 'main10_loop' +-------------------------------------------------------------------------------- + +[ - ] Assertion 'Value,unsigned_downcast' (file tests/value/downcast.i, line 136) + tried with Value. +[ - ] Assertion 'Value,unsigned_downcast' (file tests/value/downcast.i, line 136) + tried with Value. + +-------------------------------------------------------------------------------- +--- Status Report Summary +-------------------------------------------------------------------------------- + 2 Completely validated + 10 To be validated + 3 Alarms emitted + 15 Total +-------------------------------------------------------------------------------- +/* Generated by Frama-C */ +struct s { + int i : 5 ; + unsigned int j : 5 ; +}; +struct bitf { + unsigned int i1 : 18 ; + int i2 : 6 ; +}; +struct __anonstruct_bf_1 { + unsigned int a : 11 ; +}; +struct __anonstruct_bf_2 { + unsigned int b : 10 ; +}; +signed char sx; +signed char sy; +signed char sz; +unsigned char uc; +int x; +unsigned int ux; +unsigned int uy; +unsigned int uz; +unsigned short s; +int volatile v; +void main1(void) +{ + sz = (signed char)((int)sx + (int)sy); + /*@ assert Value: unsigned_downcast: 0 ≤ (int)sx+(int)sy; */ + uc = (unsigned char)((int)sx + (int)sy); + /*@ assert Value: unsigned_downcast: 0 ≤ x; */ + /*@ assert Value: unsigned_downcast: x ≤ 255; */ + uc = (unsigned char)x; + x = (int)(uy + uz); + ux = uy + uz; + /*@ assert Value: unsigned_downcast: uy+uz ≤ 65535; */ + s = (unsigned short)(uy + uz); + return; +} + +void main2_bitfield(void) +{ + int i; + unsigned int j; + struct s ss; + i = 117; + j = (unsigned int)254; + if (v) + ss.i = (int)i; + if (v) + /*@ assert Value: unsigned_downcast: j ≤ 31; */ + ss.j = (unsigned int)j; + return; +} + +void main3_reduction(void) +{ + int x_0; + char c; + unsigned int y; + unsigned char d; + x_0 = v; + c = (char)x_0; + /*@ assert Value: unsigned_downcast: 0 ≤ v; */ + y = (unsigned int)v; + /*@ assert Value: unsigned_downcast: y ≤ 255; */ + d = (unsigned char)y; + return; +} + +void main4_pointer(void) +{ + int x_0; + long long p; + unsigned int q; + int r; + p = (long long)(& x_0); + q = (unsigned int)p; + r = (int)p; + return; +} + +/*@ assigns \result; + assigns \result \from \nothing; */ +extern int ( /* missing proto */ Frama_C_show_each)(); + +void main5_wrap_signed(void) +{ + int x_0; + unsigned int y; + int z; + x_0 = v; + /*@ assert ASSUME: x_0 ≥ 100000; */ ; + /*@ assert x_0 > 0x7FFFFFFF-145 ∨ x_0 ≤ 0x7FFFFFFF-145; */ ; + y = (unsigned int)x_0; + y += (unsigned int)145; + z = (int)y; + Frama_C_show_each(x_0,y,z); + /*@ assert z ≥ 100000+145 ∨ z ≤ (int)(0x7FFFFFFF+145); */ ; + return; +} + +void main6_val_warn_converted_signed(void) +{ + if (v) { + short s_0; + s_0 = (short)65300u; + } + if (v) { + unsigned short u; + u = (unsigned short)65300u; + } + if (v) { + unsigned long e; + short b; + e = (unsigned long)17; + b = (short)e; + } + if (v) { + unsigned long e_0; + short b_0; + /*@ assert Value: unsigned_downcast: 0 ≤ -12; */ + e_0 = (unsigned long)(-12); + b_0 = (short)e_0; + } + if (v) { + unsigned int e_1; + short b_1; + /*@ assert Value: unsigned_downcast: 0 ≤ -64000; */ + e_1 = (unsigned int)(-64000); + b_1 = (short)e_1; + } + return; +} + +void main7_signed_upcast(void) +{ + unsigned char c; + int i; + c = (unsigned char)240; + i = (int)c; + return; +} + +void main8_bitfields(void) +{ + struct bitf S; + signed char c; + S.i1 = (unsigned int)0x3FFFF; + if (v) + S.i2 = (int)S.i1; + if (v) + c = (signed char)S.i1; + S.i1 = (unsigned int)257u; + if (v) + S.i2 = (int)S.i1; + if (v) + c = (signed char)S.i1; + S.i1 = (unsigned int)65u; + if (v) + S.i2 = (int)S.i1; + if (v) c = (signed char)S.i1; + return; +} + +void main9_bitfield(void) +{ + struct __anonstruct_bf_1 bf; + signed char c; + bf.a = (unsigned int)1648; + if (v) { + int signed_a; + signed_a = (int)((int)bf.a); + /*@ assert signed_a ≡ -400; */ ; + } + if (v) + c = (signed char)bf.a; + return; +} + +void main10_loop(void) +{ + signed char c; + struct __anonstruct_bf_2 bf; + int k; + k = 0; + while (k < 10) { + /*@ assert Value: unsigned_downcast: 0 ≤ v; */ + /*@ assert Value: unsigned_downcast: v ≤ 1023; */ + bf.b = (unsigned int)v; + if (v) + c = (signed char)bf.b; + k ++; + } + return; +} + +void main(void) +{ + main1(); + main2_bitfield(); + main3_reduction(); + main4_pointer(); + main5_wrap_signed(); + main6_val_warn_converted_signed(); + main7_signed_upcast(); + main8_bitfields(); + main9_bitfield(); + main10_loop(); + return; +} + + +[value] Analyzing an incomplete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + sx ∈ [--..--] + sy ∈ [--..--] + sz ∈ [--..--] + uc ∈ [--..--] + x ∈ [--..--] + ux ∈ [--..--] + uy ∈ [--..--] + uz ∈ [--..--] + s ∈ [--..--] + v ∈ [--..--] +[value] computing for function main1 <- main. + Called from tests/value/downcast.i:142. +tests/value/downcast.i:19:[value] warning: signed downcast. assert -128 ≤ (int)sx+(int)sy; +tests/value/downcast.i:19:[value] warning: signed downcast. assert (int)sx+(int)sy ≤ 127; +[value] Recording results for main1 +[value] Done for function main1 +[value] computing for function main2_bitfield <- main. + Called from tests/value/downcast.i:143. +tests/value/downcast.i:32:[value] warning: signed downcast. assert i ≤ 15; +[value] Recording results for main2_bitfield +[value] Done for function main2_bitfield +[value] computing for function main3_reduction <- main. + Called from tests/value/downcast.i:144. +tests/value/downcast.i:38:[value] warning: signed downcast. assert -128 ≤ x_0; +tests/value/downcast.i:38:[value] warning: signed downcast. assert x_0 ≤ 127; +[value] Recording results for main3_reduction +[value] Done for function main3_reduction +[value] computing for function main4_pointer <- main. + Called from tests/value/downcast.i:145. +tests/value/downcast.i:48:[value] warning: signed downcast. assert p ≤ 2147483647; +[value] Recording results for main4_pointer +[value] Done for function main4_pointer +[value] computing for function main5_wrap_signed <- main. + Called from tests/value/downcast.i:146. +[value] Called Frama_C_show_each([100000..2147483647], + [100145..2147483792], + [-2147483648..2147483647]) +[value] Recording results for main5_wrap_signed +[value] Done for function main5_wrap_signed +[value] computing for function main6_val_warn_converted_signed <- main. + Called from tests/value/downcast.i:147. +tests/value/downcast.i:67:[value] warning: signed downcast. assert (int)65300u ≤ 32767; +tests/value/downcast.i:83:[value] warning: signed downcast. assert -32768 ≤ (int)e_1; +[value] Recording results for main6_val_warn_converted_signed +[value] Done for function main6_val_warn_converted_signed +[value] computing for function main7_signed_upcast <- main. + Called from tests/value/downcast.i:148. +[value] Recording results for main7_signed_upcast +[value] Done for function main7_signed_upcast +[value] computing for function main8_bitfields <- main. + Called from tests/value/downcast.i:149. +tests/value/downcast.i:109:[value] warning: signed downcast. assert (int)S.i1 ≤ 31; +tests/value/downcast.i:110:[value] warning: signed downcast. assert (int)S.i1 ≤ 127; +tests/value/downcast.i:114:[value] warning: signed downcast. assert (int)S.i1 ≤ 31; +[value] Recording results for main8_bitfields +[value] Done for function main8_bitfields +[value] computing for function main9_bitfield <- main. + Called from tests/value/downcast.i:150. +tests/value/downcast.i:127:[value] warning: signed downcast. assert -128 ≤ (int)bf.a; +[value] Recording results for main9_bitfield +[value] Done for function main9_bitfield +[value] computing for function main10_loop <- main. + Called from tests/value/downcast.i:151. +tests/value/downcast.i:137:[value] warning: signed downcast. assert -128 ≤ (int)bf.b; +tests/value/downcast.i:137:[value] warning: signed downcast. assert (int)bf.b ≤ 127; +[value] Recording results for main10_loop +[value] Done for function main10_loop +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main1: + sz ∈ [--..--] + uc ∈ [--..--] + x ∈ [--..--] + ux ∈ [--..--] + s ∈ [--..--] +[value:final-states] Values at end of function main10_loop: + c ∈ [--..--] or UNINITIALIZED + bf.b ∈ [--..--] or UNINITIALIZED + .[bits 10 to 31] ∈ UNINITIALIZED + k ∈ {10} +[value:final-states] Values at end of function main2_bitfield: + i ∈ {117} + j ∈ {254} + ss.i ∈ UNINITIALIZED + .j ∈ {30} or UNINITIALIZED + .[bits 10 to 31] ∈ UNINITIALIZED +[value:final-states] Values at end of function main3_reduction: + x_0 ∈ [-128..127] + c ∈ [--..--] + y ∈ [--..--] + d ∈ [--..--] +[value:final-states] Values at end of function main4_pointer: + p ∈ {{ (long long)&x_0 }} + q ∈ {{ (unsigned int)&x_0 }} + r ∈ {{ (int)&x_0 }} +[value:final-states] Values at end of function main5_wrap_signed: + x_0 ∈ [100000..2147483647] + y ∈ [100145..2147483792] + z ∈ [--..--] +[value:final-states] Values at end of function main6_val_warn_converted_signed: + +[value:final-states] Values at end of function main7_signed_upcast: + c ∈ {240} + i ∈ {240} +[value:final-states] Values at end of function main8_bitfields: + S.i1 ∈ {65} + .i2 ∈ {-1} or UNINITIALIZED + .[bits 24 to 31] ∈ UNINITIALIZED + c ∈ {-1; 65} or UNINITIALIZED +[value:final-states] Values at end of function main9_bitfield: + bf.a ∈ {1648} + .[bits 11 to 31] ∈ UNINITIALIZED + c ∈ UNINITIALIZED +[value:final-states] Values at end of function main: + sz ∈ [--..--] + uc ∈ [--..--] + x ∈ [--..--] + ux ∈ [--..--] + s ∈ [--..--] +[from] Computing for function main1 +[from] Done for function main1 +[from] Computing for function main10_loop +[from] Done for function main10_loop +[from] Computing for function main2_bitfield +[from] Done for function main2_bitfield +[from] Computing for function main3_reduction +[from] Done for function main3_reduction +[from] Computing for function main4_pointer +[from] Done for function main4_pointer +[from] Computing for function main5_wrap_signed +[from] Done for function main5_wrap_signed +[from] Computing for function main6_val_warn_converted_signed +[from] Done for function main6_val_warn_converted_signed +[from] Computing for function main7_signed_upcast +[from] Done for function main7_signed_upcast +[from] Computing for function main8_bitfields +[from] Done for function main8_bitfields +[from] Computing for function main9_bitfield +[from] Done for function main9_bitfield +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main1: + sz FROM sx; sy + uc FROM x + x FROM uy; uz + ux FROM uy; uz + s FROM uy; uz +[from] Function main10_loop: + NO EFFECTS +[from] Function main2_bitfield: + NO EFFECTS +[from] Function main3_reduction: + NO EFFECTS +[from] Function main4_pointer: + NO EFFECTS +[from] Function main5_wrap_signed: + NO EFFECTS +[from] Function main6_val_warn_converted_signed: + NO EFFECTS +[from] Function main7_signed_upcast: + NO EFFECTS +[from] Function main8_bitfields: + NO EFFECTS +[from] Function main9_bitfield: + NO EFFECTS +[from] Function main: + sz FROM sx; sy + uc FROM x + x FROM uy; uz + ux FROM uy; uz + s FROM uy; uz +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main1: + sz; uc; x; ux; s +[inout] Inputs for function main1: + sx; sy; x; uy; uz +[inout] Out (internal) for function main10_loop: + c; bf.b; k +[inout] Inputs for function main10_loop: + v +[inout] Out (internal) for function main2_bitfield: + i; j; ss{.i; .j} +[inout] Inputs for function main2_bitfield: + v +[inout] Out (internal) for function main3_reduction: + x_0; c; y; d +[inout] Inputs for function main3_reduction: + v +[inout] Out (internal) for function main4_pointer: + p; q; r +[inout] Inputs for function main4_pointer: + \nothing +[inout] Out (internal) for function main5_wrap_signed: + x_0; y; z +[inout] Inputs for function main5_wrap_signed: + v +[inout] Out (internal) for function main6_val_warn_converted_signed: + s_0; u; e; b; e_0; b_0; e_1; b_1 +[inout] Inputs for function main6_val_warn_converted_signed: + v +[inout] Out (internal) for function main7_signed_upcast: + c; i +[inout] Inputs for function main7_signed_upcast: + \nothing +[inout] Out (internal) for function main8_bitfields: + S{.i1; .i2}; c +[inout] Inputs for function main8_bitfields: + v +[inout] Out (internal) for function main9_bitfield: + bf.a; signed_a; c +[inout] Inputs for function main9_bitfield: + v +[inout] Out (internal) for function main: + sz; uc; x; ux; s +[inout] Inputs for function main: + sx; sy; x; uy; uz; v +[report] Computing properties status... + +-------------------------------------------------------------------------------- +--- Properties of Function 'main1' +-------------------------------------------------------------------------------- + +[ - ] Assertion 'Value,signed_downcast' (file tests/value/downcast.i, line 19) + tried with Value. +[ - ] Assertion 'Value,signed_downcast' (file tests/value/downcast.i, line 19) + tried with Value. + +-------------------------------------------------------------------------------- +--- Properties of Function 'main2_bitfield' +-------------------------------------------------------------------------------- + +[ Alarm ] Assertion 'Value,signed_downcast' (file tests/value/downcast.i, line 32) + By Value, with pending: + - Unreachable instruction (file tests/value/downcast.i, line 32) + +-------------------------------------------------------------------------------- +--- Properties of Function 'main3_reduction' +-------------------------------------------------------------------------------- + +[ - ] Assertion 'Value,signed_downcast' (file tests/value/downcast.i, line 38) + tried with Value. +[ - ] Assertion 'Value,signed_downcast' (file tests/value/downcast.i, line 38) + tried with Value. + +-------------------------------------------------------------------------------- +--- Properties of Function 'main4_pointer' +-------------------------------------------------------------------------------- + +[ - ] Assertion 'Value,signed_downcast' (file tests/value/downcast.i, line 48) + tried with Value. + +-------------------------------------------------------------------------------- +--- Properties of Function 'main5_wrap_signed' +-------------------------------------------------------------------------------- + +[ - ] Assertion 'ASSUME' (file tests/value/downcast.i, line 54) + tried with Value. +[ Valid ] Assertion (file tests/value/downcast.i, line 55) + by Value. +[ - ] Assertion (file tests/value/downcast.i, line 60) + tried with Value. + +-------------------------------------------------------------------------------- +--- Properties of Function 'main6_val_warn_converted_signed' +-------------------------------------------------------------------------------- + +[ Alarm ] Assertion 'Value,signed_downcast' (file tests/value/downcast.i, line 67) + By Value, with pending: + - Unreachable instruction (file tests/value/downcast.i, line 67) +[ Alarm ] Assertion 'Value,signed_downcast' (file tests/value/downcast.i, line 83) + By Value, with pending: + - Unreachable instruction (file tests/value/downcast.i, line 83) + +-------------------------------------------------------------------------------- +--- Properties of Function 'main8_bitfields' +-------------------------------------------------------------------------------- + +[ Alarm ] Assertion 'Value,signed_downcast' (file tests/value/downcast.i, line 109) + By Value, with pending: + - Unreachable instruction (file tests/value/downcast.i, line 109) +[ Alarm ] Assertion 'Value,signed_downcast' (file tests/value/downcast.i, line 110) + By Value, with pending: + - Unreachable instruction (file tests/value/downcast.i, line 110) +[ Alarm ] Assertion 'Value,signed_downcast' (file tests/value/downcast.i, line 114) + By Value, with pending: + - Unreachable instruction (file tests/value/downcast.i, line 114) + +-------------------------------------------------------------------------------- +--- Properties of Function 'main9_bitfield' +-------------------------------------------------------------------------------- + +[ Valid ] Assertion (file tests/value/downcast.i, line 124) + by Value. +[ Alarm ] Assertion 'Value,signed_downcast' (file tests/value/downcast.i, line 127) + By Value, with pending: + - Unreachable instruction (file tests/value/downcast.i, line 127) + +-------------------------------------------------------------------------------- +--- Properties of Function 'main10_loop' +-------------------------------------------------------------------------------- + +[ - ] Assertion 'Value,signed_downcast' (file tests/value/downcast.i, line 137) + tried with Value. +[ - ] Assertion 'Value,signed_downcast' (file tests/value/downcast.i, line 137) + tried with Value. + +-------------------------------------------------------------------------------- +--- Status Report Summary +-------------------------------------------------------------------------------- + 2 Completely validated + 9 To be validated + 7 Alarms emitted + 18 Total +-------------------------------------------------------------------------------- +/* Generated by Frama-C */ +struct s { + int i : 5 ; + unsigned int j : 5 ; +}; +struct bitf { + unsigned int i1 : 18 ; + int i2 : 6 ; +}; +struct __anonstruct_bf_1 { + unsigned int a : 11 ; +}; +struct __anonstruct_bf_2 { + unsigned int b : 10 ; +}; +signed char sx; +signed char sy; +signed char sz; +unsigned char uc; +int x; +unsigned int ux; +unsigned int uy; +unsigned int uz; +unsigned short s; +int volatile v; +void main1(void) +{ + /*@ assert Value: signed_downcast: -128 ≤ (int)sx+(int)sy; */ + /*@ assert Value: signed_downcast: (int)sx+(int)sy ≤ 127; */ + sz = (signed char)((int)sx + (int)sy); + uc = (unsigned char)((int)sx + (int)sy); + uc = (unsigned char)x; + x = (int)(uy + uz); + ux = uy + uz; + s = (unsigned short)(uy + uz); + return; +} + +void main2_bitfield(void) +{ + int i; + unsigned int j; + struct s ss; + i = 117; + j = (unsigned int)254; + if (v) + /*@ assert Value: signed_downcast: i ≤ 15; */ + ss.i = (int)i; + if (v) + ss.j = (unsigned int)j; + return; +} + +void main3_reduction(void) +{ + int x_0; + char c; + unsigned int y; + unsigned char d; + x_0 = v; + /*@ assert Value: signed_downcast: -128 ≤ x_0; */ + /*@ assert Value: signed_downcast: x_0 ≤ 127; */ + c = (char)x_0; + y = (unsigned int)v; + d = (unsigned char)y; + return; +} + +void main4_pointer(void) +{ + int x_0; + long long p; + unsigned int q; + int r; + p = (long long)(& x_0); + q = (unsigned int)p; + /*@ assert Value: signed_downcast: p ≤ 2147483647; */ + r = (int)p; + return; +} + +/*@ assigns \result; + assigns \result \from \nothing; */ +extern int ( /* missing proto */ Frama_C_show_each)(); + +void main5_wrap_signed(void) +{ + int x_0; + unsigned int y; + int z; + x_0 = v; + /*@ assert ASSUME: x_0 ≥ 100000; */ ; + /*@ assert x_0 > 0x7FFFFFFF-145 ∨ x_0 ≤ 0x7FFFFFFF-145; */ ; + y = (unsigned int)x_0; + y += (unsigned int)145; + z = (int)y; + Frama_C_show_each(x_0,y,z); + /*@ assert z ≥ 100000+145 ∨ z ≤ (int)(0x7FFFFFFF+145); */ ; + return; +} + +void main6_val_warn_converted_signed(void) +{ + if (v) { + short s_0; + /*@ assert Value: signed_downcast: (int)65300u ≤ 32767; */ + s_0 = (short)65300u; + } + if (v) { + unsigned short u; + u = (unsigned short)65300u; + } + if (v) { + unsigned long e; + short b; + e = (unsigned long)17; + b = (short)e; + } + if (v) { + unsigned long e_0; + short b_0; + e_0 = (unsigned long)(-12); + b_0 = (short)e_0; + } + if (v) { + unsigned int e_1; + short b_1; + e_1 = (unsigned int)(-64000); + /*@ assert Value: signed_downcast: -32768 ≤ (int)e_1; */ + b_1 = (short)e_1; + } + return; +} + +void main7_signed_upcast(void) +{ + unsigned char c; + int i; + c = (unsigned char)240; + i = (int)c; + return; +} + +void main8_bitfields(void) +{ + struct bitf S; + signed char c; + S.i1 = (unsigned int)0x3FFFF; + if (v) + S.i2 = (int)S.i1; + if (v) + c = (signed char)S.i1; + S.i1 = (unsigned int)257u; + if (v) + /*@ assert Value: signed_downcast: (int)S.i1 ≤ 31; */ + S.i2 = (int)S.i1; + if (v) + /*@ assert Value: signed_downcast: (int)S.i1 ≤ 127; */ + c = (signed char)S.i1; + S.i1 = (unsigned int)65u; + if (v) + /*@ assert Value: signed_downcast: (int)S.i1 ≤ 31; */ + S.i2 = (int)S.i1; + if (v) c = (signed char)S.i1; + return; +} + +void main9_bitfield(void) +{ + struct __anonstruct_bf_1 bf; + signed char c; + bf.a = (unsigned int)1648; + if (v) { + int signed_a; + signed_a = (int)((int)bf.a); + /*@ assert signed_a ≡ -400; */ ; + } + if (v) + /*@ assert Value: signed_downcast: -128 ≤ (int)bf.a; */ + c = (signed char)bf.a; + return; +} + +void main10_loop(void) +{ + signed char c; + struct __anonstruct_bf_2 bf; + int k; + k = 0; + while (k < 10) { + bf.b = (unsigned int)v; + if (v) + /*@ assert Value: signed_downcast: -128 ≤ (int)bf.b; */ + /*@ assert Value: signed_downcast: (int)bf.b ≤ 127; */ + c = (signed char)bf.b; + k ++; + } + return; +} + +void main(void) +{ + main1(); + main2_bitfield(); + main3_reduction(); + main4_pointer(); + main5_wrap_signed(); + main6_val_warn_converted_signed(); + main7_signed_upcast(); + main8_bitfields(); + main9_bitfield(); + main10_loop(); + return; +} + + +[value] Analyzing an incomplete application starting at main5_wrap_signed +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + sx ∈ [--..--] + sy ∈ [--..--] + sz ∈ [--..--] + uc ∈ [--..--] + x ∈ [--..--] + ux ∈ [--..--] + uy ∈ [--..--] + uz ∈ [--..--] + s ∈ [--..--] + v ∈ [--..--] +[value] Called Frama_C_show_each([2147483503..2147483647], + [2147483648..2147483792], + [-2147483648..-2147483504]) +[value] Called Frama_C_show_each([100000..2147483502], + [100145..2147483647], + [100145..2147483647]) +[value] Recording results for main5_wrap_signed +[value] done for function main5_wrap_signed +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main5_wrap_signed: + x_0 ∈ [100000..2147483647] + y ∈ [100145..2147483792] + z ∈ [--..--] +[from] Computing for function main5_wrap_signed +[from] Done for function main5_wrap_signed +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main5_wrap_signed: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main5_wrap_signed: + x_0; y; z +[inout] Inputs for function main5_wrap_signed: + v +[report] Computing properties status... + +-------------------------------------------------------------------------------- +--- Properties of Function 'main5_wrap_signed' +-------------------------------------------------------------------------------- + +[ - ] Assertion 'ASSUME' (file tests/value/downcast.i, line 54) + tried with Value (v2). +[ Valid ] Assertion (file tests/value/downcast.i, line 55) + by Value (v2). +[ Valid ] Assertion (file tests/value/downcast.i, line 60) + by Value (v2). + +-------------------------------------------------------------------------------- +--- Properties of Function 'main9_bitfield' +-------------------------------------------------------------------------------- + +[ Dead ] Assertion (file tests/value/downcast.i, line 124) + Locally valid, but unreachable. + By Value (v2) because: + - Unreachable program point (file tests/value/downcast.i, line 124) +[Unreachable] Unreachable program point (file tests/value/downcast.i, line 124) + by Value (v2). + +-------------------------------------------------------------------------------- +--- Status Report Summary +-------------------------------------------------------------------------------- + 2 Completely validated + 1 To be validated + 1 Dead property + 1 Unreachable + 5 Total +-------------------------------------------------------------------------------- diff --git a/tests/value/oracle_symblocs/dur.err.oracle b/tests/value/oracle_symblocs/dur.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/dur.res.oracle b/tests/value/oracle_symblocs/dur.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e1199cb4a2b54fbc9d8d1696e48204ddebd29ee3 --- /dev/null +++ b/tests/value/oracle_symblocs/dur.res.oracle @@ -0,0 +1,329 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/dur.i (no preprocessing) +[value] Analyzing a complete application starting at F2 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + G1 ∈ {0} + G2 ∈ {0} + G3 ∈ [--..--] + G4{.M6; .M7; .M8; .M9; .M10; .M11; .M12; .M13; .M14; .M15; .M16; .M17; .M18; .M19; .M20; .M21; .M22; .M23; .M24; .M25; .M26[0..25]; .M27[0..12]; .M28[0..2]; .M29; .M30; .M31; .M32; .M33; .M34; .M35; .M36; .M37; .M38; .M39; .M40; .M41; .M42; .M43; .M44; .M45; .M46; .M47; .M48; .M49; .M50; .M51; .M52; .M53; .M54; .M55; .M56; .M57; .M58; .M59; .M60; .M61; .M62; .M63; .M64[0..26]; .M65[0..26]; .M66[0..47]; .M67[0..47]; .M68[0..47]; .M69[0..47]; .M70[0..47]; .M71[0..47]; .M72[0..47]; .M73[0..47]; .M74[0..9]} ∈ + [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + G5{.M75; .[bits 16 to 31]} ∈ [--..--] + .M76[0].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[0]{.M2; .M3} ∈ [--..--] + .M76[1].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[1]{.M2; .M3} ∈ [--..--] + .M76[2].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[2]{.M2; .M3} ∈ [--..--] + .M76[3].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[3]{.M2; .M3} ∈ [--..--] + .M76[4].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[4]{.M2; .M3} ∈ [--..--] + .M76[5].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[5]{.M2; .M3} ∈ [--..--] + .M76[6].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[6]{.M2; .M3} ∈ [--..--] + .M76[7].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[7]{.M2; .M3} ∈ [--..--] + .M76[8].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[8]{.M2; .M3} ∈ [--..--] + .M76[9].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[9]{.M2; .M3} ∈ [--..--] + .M76[10].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[10]{.M2; .M3} ∈ [--..--] + .M76[11].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[11]{.M2; .M3} ∈ [--..--] + .M76[12].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[12]{.M2; .M3} ∈ [--..--] + .M76[13].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[13]{.M2; .M3} ∈ [--..--] + .M76[14].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[14]{.M2; .M3} ∈ [--..--] + .M76[15].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[15]{.M2; .M3} ∈ [--..--] + .M76[16].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[16]{.M2; .M3} ∈ [--..--] + .M76[17].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[17]{.M2; .M3} ∈ [--..--] + .M76[18].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[18]{.M2; .M3} ∈ [--..--] + .M76[19].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[19]{.M2; .M3} ∈ [--..--] + .M76[20].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[20]{.M2; .M3} ∈ [--..--] + .M76[21].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[21]{.M2; .M3} ∈ [--..--] + .M76[22].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[22]{.M2; .M3} ∈ [--..--] + .M76[23].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[23]{.M2; .M3} ∈ [--..--] + .M76[24].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[24]{.M2; .M3} ∈ [--..--] + .M76[25].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[25]{.M2; .M3} ∈ [--..--] + .M76[26].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[26]{.M2; .M3} ∈ [--..--] + .M76[27].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[27]{.M2; .M3} ∈ [--..--] + .M76[28].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[28]{.M2; .M3} ∈ [--..--] + .M76[29].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[29]{.M2; .M3} ∈ [--..--] + .M76[30].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[30]{.M2; .M3} ∈ [--..--] + .M76[31].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[31]{.M2; .M3} ∈ [--..--] + .M76[32].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[32]{.M2; .M3} ∈ [--..--] + .M76[33].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[33]{.M2; .M3} ∈ [--..--] + .M76[34].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[34]{.M2; .M3} ∈ [--..--] + .M76[35].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[35]{.M2; .M3} ∈ [--..--] + .M76[36].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[36]{.M2; .M3} ∈ [--..--] + .M76[37].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[37]{.M2; .M3} ∈ [--..--] + .M76[38].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[38]{.M2; .M3} ∈ [--..--] + .M76[39].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[39]{.M2; .M3} ∈ [--..--] + .M76[40].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[40]{.M2; .M3} ∈ [--..--] + .M76[41].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[41]{.M2; .M3} ∈ [--..--] + .M76[42].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[42]{.M2; .M3} ∈ [--..--] + .M76[43].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[43]{.M2; .M3} ∈ [--..--] + .M76[44].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[44]{.M2; .M3} ∈ [--..--] + .M76[45].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[45]{.M2; .M3} ∈ [--..--] + .M76[46].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[46]{.M2; .M3} ∈ [--..--] + .M76[47].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[47]{.M2; .M3} ∈ [--..--] + .M76[48].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[48]{.M2; .M3} ∈ [--..--] + .M76[49].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[49]{.M2; .M3} ∈ [--..--] + .M76[50].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[50]{.M2; .M3} ∈ [--..--] + .M76[51].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[51]{.M2; .M3} ∈ [--..--] + .M76[52].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[52]{.M2; .M3} ∈ [--..--] + .M77.M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M77{.M2; .M3} ∈ [--..--] + .M78.M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M78{.M2; .M3} ∈ [--..--] + .M79.M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M79{.M2; .M3} ∈ [--..--] + .M80.M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M80{.M2; .M3} ∈ [--..--] + .M81.M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M81{.M2; .M3} ∈ [--..--] + .M82.M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M82{.M2; .M3} ∈ [--..--] + .M83.M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M83{.M2; .M3} ∈ [--..--] + .M84.M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M84{.M2; .M3} ∈ [--..--] + .M85.M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M85{.M2; .M3} ∈ [--..--] + .M86.M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M86{.M2; .M3} ∈ [--..--] + .M87.M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M87{.M2; .M3} ∈ [--..--] + .M88.M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M88{.M2; .M3} ∈ [--..--] + .M89.M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + {.M89{.M2; .M3}; .M90[0..3]; .M91} ∈ [--..--] + .M92[0].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M92[0]{.M2; .M3} ∈ [--..--] + .M92[1].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M92[1]{.M2; .M3} ∈ [--..--] + .M92[2].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M92[2]{.M2; .M3} ∈ [--..--] + .M92[3].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M92[3]{.M2; .M3} ∈ [--..--] + .M92[4].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M92[4]{.M2; .M3} ∈ [--..--] + .M92[5].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + {.M92[5]{.M2; .M3}; .M93[0..4]} ∈ [--..--] + G6 ∈ [--..--] + G7[0..160] ∈ [--..--] +tests/value/dur.i:167:[value] entering loop for the first time +[value] Recording results for F2 +[value] done for function F2 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function F2: + G5.M75 ∈ [0..255] + .[bits 16 to 31] ∈ [--..--] + .M76[0].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[0]{.M2; .M3} ∈ [--..--] + .M76[1].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[1]{.M2; .M3} ∈ [--..--] + .M76[2].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[2]{.M2; .M3} ∈ [--..--] + .M76[3].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[3]{.M2; .M3} ∈ [--..--] + .M76[4].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[4]{.M2; .M3} ∈ [--..--] + .M76[5].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[5]{.M2; .M3} ∈ [--..--] + .M76[6].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[6]{.M2; .M3} ∈ [--..--] + .M76[7].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[7]{.M2; .M3} ∈ [--..--] + .M76[8].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[8]{.M2; .M3} ∈ [--..--] + .M76[9].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[9]{.M2; .M3} ∈ [--..--] + .M76[10].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[10]{.M2; .M3} ∈ [--..--] + .M76[11].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[11]{.M2; .M3} ∈ [--..--] + .M76[12].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[12]{.M2; .M3} ∈ [--..--] + .M76[13].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[13]{.M2; .M3} ∈ [--..--] + .M76[14].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[14]{.M2; .M3} ∈ [--..--] + .M76[15].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[15]{.M2; .M3} ∈ [--..--] + .M76[16].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[16]{.M2; .M3} ∈ [--..--] + .M76[17].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[17]{.M2; .M3} ∈ [--..--] + .M76[18].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[18]{.M2; .M3} ∈ [--..--] + .M76[19].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[19]{.M2; .M3} ∈ [--..--] + .M76[20].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[20]{.M2; .M3} ∈ [--..--] + .M76[21].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[21]{.M2; .M3} ∈ [--..--] + .M76[22].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[22]{.M2; .M3} ∈ [--..--] + .M76[23].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[23]{.M2; .M3} ∈ [--..--] + .M76[24].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[24]{.M2; .M3} ∈ [--..--] + .M76[25].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[25]{.M2; .M3} ∈ [--..--] + .M76[26].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[26]{.M2; .M3} ∈ [--..--] + .M76[27].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[27]{.M2; .M3} ∈ [--..--] + .M76[28].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[28]{.M2; .M3} ∈ [--..--] + .M76[29].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[29]{.M2; .M3} ∈ [--..--] + .M76[30].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[30]{.M2; .M3} ∈ [--..--] + .M76[31].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[31]{.M2; .M3} ∈ [--..--] + .M76[32].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[32]{.M2; .M3} ∈ [--..--] + .M76[33].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[33]{.M2; .M3} ∈ [--..--] + .M76[34].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[34]{.M2; .M3} ∈ [--..--] + .M76[35].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[35]{.M2; .M3} ∈ [--..--] + .M76[36].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[36]{.M2; .M3} ∈ [--..--] + .M76[37].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[37]{.M2; .M3} ∈ [--..--] + .M76[38].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[38]{.M2; .M3} ∈ [--..--] + .M76[39].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[39]{.M2; .M3} ∈ [--..--] + .M76[40].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[40]{.M2; .M3} ∈ [--..--] + .M76[41].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[41]{.M2; .M3} ∈ [--..--] + .M76[42].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[42]{.M2; .M3} ∈ [--..--] + .M76[43].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[43]{.M2; .M3} ∈ [--..--] + .M76[44].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[44]{.M2; .M3} ∈ [--..--] + .M76[45].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[45]{.M2; .M3} ∈ [--..--] + .M76[46].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[46]{.M2; .M3} ∈ [--..--] + .M76[47].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[47]{.M2; .M3} ∈ [--..--] + .M76[48].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[48]{.M2; .M3} ∈ [--..--] + .M76[49].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[49]{.M2; .M3} ∈ [--..--] + .M76[50].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[50]{.M2; .M3} ∈ [--..--] + .M76[51].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[51]{.M2; .M3} ∈ [--..--] + .M76[52].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M76[52]{.M2; .M3} ∈ [--..--] + .M77.M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M77{.M2; .M3} ∈ [--..--] + .M78.M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M78{.M2; .M3} ∈ [--..--] + .M79.M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M79{.M2; .M3} ∈ [--..--] + .M80.M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M80{.M2; .M3} ∈ [--..--] + .M81.M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M81{.M2; .M3} ∈ [--..--] + .M82.M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M82{.M2; .M3} ∈ [--..--] + .M83.M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M83{.M2; .M3} ∈ [--..--] + .M84.M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M84{.M2; .M3} ∈ [--..--] + .M85.M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M85{.M2; .M3} ∈ [--..--] + .M86.M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M86{.M2; .M3} ∈ [--..--] + .M87.M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M87{.M2; .M3} ∈ [--..--] + .M88.M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M88{.M2; .M3} ∈ [--..--] + .M89.M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + {.M89{.M2; .M3}; .M90[0..3]; .M91} ∈ [--..--] + .M92[0].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M92[0]{.M2; .M3} ∈ [--..--] + .M92[1].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M92[1]{.M2; .M3} ∈ [--..--] + .M92[2].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M92[2]{.M2; .M3} ∈ [--..--] + .M92[3].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M92[3]{.M2; .M3} ∈ [--..--] + .M92[4].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + .M92[4]{.M2; .M3} ∈ [--..--] + .M92[5].M1 ∈ [-1.9999998807907104*2^127 .. 1.9999998807907104*2^127] + {.M92[5]{.M2; .M3}; .M93[0..4]} ∈ [--..--] + V5 ∈ {4} or UNINITIALIZED + V6 ∈ [--..--] or UNINITIALIZED + V7 ∈ [0..65532],0%2 or UNINITIALIZED +[from] Computing for function F2 +[from] Done for function F2 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function F2: + G5.M75 FROM G3 + {.M90[0].M4; .M90[1].M4; .M90[2].M4; .M90[3].M4} + FROM G1; G2; V8 (and SELF) + {.M90[0].M5; .M90[1].M5; .M90[2].M5; .M90[3].M5} FROM G2; V8 (and SELF) + .M91.M4 FROM G6{.M96[0]; .M97[0]}; V8 (and SELF) + .M91.M5 FROM G6.M97[0]; V8 (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function F2: + G5{.M75; {.M90[0..3]; .M91}}; V5; V6; V7 +[inout] Inputs for function F2: + G1; G2; G3; G5{.M90[0].M4; .M90[1].M4; .M90[2].M4; .M90[3].M4}; + G6{.M96[0]; .M97[0]} diff --git a/tests/value/oracle_symblocs/empty_base.0.err.oracle b/tests/value/oracle_symblocs/empty_base.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/empty_base.0.res.oracle b/tests/value/oracle_symblocs/empty_base.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..ff0423057b58b7b90290ef45b764315f365ffa7e --- /dev/null +++ b/tests/value/oracle_symblocs/empty_base.0.res.oracle @@ -0,0 +1,9 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/empty_base.c (with preprocessing) +tests/value/empty_base.c:62:[kernel] user error: variable `c' has initializer but incomplete type +tests/value/empty_base.c:66:[kernel] warning: Too many initializers for structure +tests/value/empty_base.c:74:[kernel] user error: field z is declared with incomplete type struct foo_0 +tests/value/empty_base.c:79:[kernel] user error: field f1 is declared with incomplete type struct f1_0 +[kernel] user error: stopping on file "tests/value/empty_base.c" that has errors. Add + '-kernel-msg-key pp' for preprocessing command. +[kernel] Frama-C aborted: invalid user input. diff --git a/tests/value/oracle_symblocs/empty_base.1.err.oracle b/tests/value/oracle_symblocs/empty_base.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/empty_base.1.res.oracle b/tests/value/oracle_symblocs/empty_base.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..67ea3e1f9ababecf07ba56ae310ec0b08feaf819 --- /dev/null +++ b/tests/value/oracle_symblocs/empty_base.1.res.oracle @@ -0,0 +1,6 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/empty_base.c (with preprocessing) +[kernel] user error: empty initializers only allowed for GCC/MSVC +[kernel] user error: stopping on file "tests/value/empty_base.c" that has errors. Add + '-kernel-msg-key pp' for preprocessing command. +[kernel] Frama-C aborted: invalid user input. diff --git a/tests/value/oracle_symblocs/empty_struct.0.err.oracle b/tests/value/oracle_symblocs/empty_struct.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/empty_struct.0.res.oracle b/tests/value/oracle_symblocs/empty_struct.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..94388f5bea39c2812178f50f9c803da89cea5b12 --- /dev/null +++ b/tests/value/oracle_symblocs/empty_struct.0.res.oracle @@ -0,0 +1,44 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/empty_struct.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + s2 ∈ {0} +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + p ∈ {{ (void *)&s }} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + p +[inout] Inputs for function main: + \nothing +[value] Analyzing an incomplete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + s2 ∈ [--..--] +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + p ∈ {{ (void *)&s }} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + p +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/empty_struct.1.err.oracle b/tests/value/oracle_symblocs/empty_struct.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/empty_struct.1.res.oracle b/tests/value/oracle_symblocs/empty_struct.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..b0ad12c5f217c760c866ed4be67f93e320b93fdc --- /dev/null +++ b/tests/value/oracle_symblocs/empty_struct.1.res.oracle @@ -0,0 +1,23 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/empty_struct.c (with preprocessing) +[value] Analyzing an incomplete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + s2 ∈ [--..--] +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + p ∈ {{ (void *)&s }} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + p +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/empty_struct.2.err.oracle b/tests/value/oracle_symblocs/empty_struct.2.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/empty_struct.2.res.oracle b/tests/value/oracle_symblocs/empty_struct.2.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..b0ad12c5f217c760c866ed4be67f93e320b93fdc --- /dev/null +++ b/tests/value/oracle_symblocs/empty_struct.2.res.oracle @@ -0,0 +1,23 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/empty_struct.c (with preprocessing) +[value] Analyzing an incomplete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + s2 ∈ [--..--] +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + p ∈ {{ (void *)&s }} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + p +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/empty_struct.3.err.oracle b/tests/value/oracle_symblocs/empty_struct.3.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/empty_struct.3.res.oracle b/tests/value/oracle_symblocs/empty_struct.3.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e5de4f39fdcd29160b71f67f1f55c171b7a2ba58 --- /dev/null +++ b/tests/value/oracle_symblocs/empty_struct.3.res.oracle @@ -0,0 +1,7 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/empty_struct.c (with preprocessing) +[value] Analyzing an incomplete application starting at main +[value] Computing initial state +tests/value/empty_struct.c:19:[value] user error: empty structs are unsupported (type 'struct s', location s) + in C99 (only allowed as GCC/MSVC extension). Aborting. +[kernel] Plug-in value aborted: invalid user input. diff --git a/tests/value/oracle_symblocs/empty_struct2.err.oracle b/tests/value/oracle_symblocs/empty_struct2.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/empty_struct2.res.oracle b/tests/value/oracle_symblocs/empty_struct2.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..94d86df34e886618549af642f26df72b13d9e765 --- /dev/null +++ b/tests/value/oracle_symblocs/empty_struct2.res.oracle @@ -0,0 +1,94 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/empty_struct2.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + nondet ∈ [--..--] +tests/value/empty_struct2.c:40:[value] assertion got status valid. +[value] Called Frama_C_show_each_global_empty(∅) +[value] Called Frama_C_show_each_e1(∅) +[value] computing for function memcpy <- main. + Called from tests/value/empty_struct2.c:44. +[value] using specification for function memcpy +share/libc/string.h:59:[value] function memcpy: precondition 'valid_dst' got status valid. +share/libc/string.h:60:[value] function memcpy: precondition 'valid_src' got status valid. +share/libc/string.h:61:[value] function memcpy: precondition got status valid. +tests/value/empty_struct2.c:44:[value] cannot evaluate ACSL term, unsupported ACSL construct: logic functions or predicates +[value] Done for function memcpy +[value] computing for function memcpy <- main. + Called from tests/value/empty_struct2.c:49. +tests/value/empty_struct2.c:49:[value] cannot evaluate ACSL term, unsupported ACSL construct: logic functions or predicates +[value] Done for function memcpy +[value] Called Frama_C_show_each_c2([--..--]) +[value] Called Frama_C_show_each_c2_e(∅) +[value] computing for function f <- main. + Called from tests/value/empty_struct2.c:52. +tests/value/empty_struct2.c:27:[value] warning: accessing uninitialized left-value. assert \initialized(&s.b); +tests/value/empty_struct2.c:27:[value] warning: signed overflow. assert s.b+10 ≤ 2147483647; +tests/value/empty_struct2.c:28:[value] warning: accessing uninitialized left-value. assert \initialized(&s.a); +tests/value/empty_struct2.c:28:[value] warning: signed overflow. assert -2147483648 ≤ s.a-3; +[value] Recording results for f +[value] Done for function f +[value] Called Frama_C_show_each_res(.a ∈ [-2147483638..2147483647] + .b ∈ [-2147483648..2147483644]) +tests/value/empty_struct2.c:58:[value] assertion got status valid. +[value] computing for function ret_empty <- main. + Called from tests/value/empty_struct2.c:60. +[value] using specification for function ret_empty +[value] Done for function ret_empty +[value] computing for function ret_ptr_empty <- main. + Called from tests/value/empty_struct2.c:61. +tests/value/empty_struct2.c:61:[kernel] warning: Neither code nor specification for function ret_ptr_empty, generating default assigns from the prototype +[value] using specification for function ret_ptr_empty +[value] Done for function ret_ptr_empty +tests/value/empty_struct2.c:62:[value] warning: out of bounds read. assert \valid_read(ptr_ret); +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + res.a ∈ [-2147483638..2147483647] + .b ∈ [-2147483648..2147483644] +[value:final-states] Values at end of function main: + c1.a ∈ {42} + .b ∈ {77} + c2 ∈ [--..--] or UNINITIALIZED + res.a ∈ [-2147483638..2147483647] + .b ∈ [-2147483648..2147483644] + cb.i ∈ {91} + ce.ch ∈ {90} + p ∈ {{ (struct empty *)&cb }} + ptr_ret ∈ {{ &alloced_return_ret_ptr_empty + [0..2147483647] }} + __retres ∈ {0} +[from] Computing for function f +[from] Done for function f +[from] Computing for function main +[from] Computing for function memcpy <-main +[from] Done for function memcpy +[from] Computing for function ret_empty <-main +[from] Done for function ret_empty +[from] Computing for function ret_ptr_empty <-main +[from] Done for function ret_ptr_empty +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + \result FROM s +[from] Function memcpy: + c2 FROM c1 (and SELF) + \result FROM dest +[from] Function ret_empty: + \result FROM \nothing +[from] Function ret_ptr_empty: + \result FROM \nothing +[from] Function main: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + res +[inout] Inputs for function f: + nondet +[inout] Out (internal) for function main: + c1; c2; res; cb; ce; p; ptr_ret; __retres +[inout] Inputs for function main: + nondet diff --git a/tests/value/oracle_symblocs/empty_union.err.oracle b/tests/value/oracle_symblocs/empty_union.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/empty_union.res.oracle b/tests/value/oracle_symblocs/empty_union.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..051dc2721080fffd9ddbfb8c397e48089c2c64e1 --- /dev/null +++ b/tests/value/oracle_symblocs/empty_union.res.oracle @@ -0,0 +1,104 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/empty_union.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +tests/value/empty_union.c:59:[value] warning: during initialization of variable 'f1', size of type 'int []' cannot be + computed (Size of array without number of elements.) +tests/value/empty_union.c:59:[kernel] imprecise size for variable f1 (Size of array without number of elements.) +[value] Initial state computed +[value:initial-state] Values of globals at initialization + nondet ∈ [--..--] + array_of_comp[0]{.a; .e{}; .b} ∈ {17} + f1[bits 0 to ..] ∈ {0} or UNINITIALIZED + f2.data[0] ∈ {1} + .data[1..2] ∈ {0} +tests/value/empty_union.c:75:[value] assertion got status valid. +tests/value/empty_union.c:76:[value] assertion got status valid. +[value] Called Frama_C_show_each_global_empty(∅) +[value] Called Frama_C_show_each_e1(∅) +[value] computing for function memcpy <- main. + Called from tests/value/empty_union.c:80. +[value] using specification for function memcpy +share/libc/string.h:59:[value] function memcpy: precondition 'valid_dst' got status valid. +share/libc/string.h:60:[value] function memcpy: precondition 'valid_src' got status valid. +share/libc/string.h:61:[value] function memcpy: precondition got status valid. +tests/value/empty_union.c:80:[value] cannot evaluate ACSL term, unsupported ACSL construct: logic functions or predicates +[value] Done for function memcpy +[value] computing for function memcpy <- main. + Called from tests/value/empty_union.c:85. +tests/value/empty_union.c:85:[value] cannot evaluate ACSL term, unsupported ACSL construct: logic functions or predicates +[value] Done for function memcpy +[value] Called Frama_C_show_each_c2([--..--]) +[value] Called Frama_C_show_each_c2_e(∅) +[value] computing for function f <- main. + Called from tests/value/empty_union.c:88. +[value] Recording results for f +[value] Done for function f +[value] computing for function copy_empty <- main. + Called from tests/value/empty_union.c:89. +tests/value/empty_union.c:37:[value] function copy_empty: postcondition got status valid. +[value] Recording results for copy_empty +[value] Done for function copy_empty +[value] Called Frama_C_show_each_res({74}) +[value] computing for function gcc_zero_length_examples <- main. + Called from tests/value/empty_union.c:102. +[value] Recording results for gcc_zero_length_examples +[value] Done for function gcc_zero_length_examples +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function copy_empty: + +[value:final-states] Values at end of function f: + res{.a; .e{}; .b} ∈ {74} +[value:final-states] Values at end of function gcc_zero_length_examples: + +[value:final-states] Values at end of function main: + c1{.a; .e{}; .b} ∈ {77} + c2 ∈ [--..--] or UNINITIALIZED + res{.a; .e{}; .b} ∈ {74} + cb{.s{}; .i} ∈ {91} + ce{.ch; .ss{}} ∈ {90} + p ∈ {{ (union empty *)&cb }} + pc ∈ {{ &empty_init_array[0] }} + __retres ∈ {0} +[from] Computing for function copy_empty +[from] Done for function copy_empty +[from] Computing for function f +[from] Done for function f +[from] Computing for function gcc_zero_length_examples +[from] Done for function gcc_zero_length_examples +[from] Computing for function main +[from] Computing for function memcpy <-main +[from] Done for function memcpy +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function copy_empty: + NO EFFECTS +[from] Function f: + \result FROM s +[from] Function gcc_zero_length_examples: + NO EFFECTS +[from] Function memcpy: + c2 FROM c1 (and SELF) + \result FROM dest +[from] Function main: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function copy_empty: + \nothing +[inout] Inputs for function copy_empty: + \nothing +[inout] Out (internal) for function f: + res +[inout] Inputs for function f: + nondet +[inout] Out (internal) for function gcc_zero_length_examples: + \nothing +[inout] Inputs for function gcc_zero_length_examples: + \nothing +[inout] Out (internal) for function main: + c1; c2; res; cb; ce; p; pc; __retres +[inout] Inputs for function main: + nondet diff --git a/tests/value/oracle_symblocs/endian.err.oracle b/tests/value/oracle_symblocs/endian.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/endian.res.oracle b/tests/value/oracle_symblocs/endian.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..082066c38377ec7e99cae5319c91fc82c5db84f7 --- /dev/null +++ b/tests/value/oracle_symblocs/endian.res.oracle @@ -0,0 +1,56 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/endian.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + v1 ∈ {0} + UU ∈ {0} + b0 ∈ {0} + b1 ∈ {0} + b2 ∈ {0} + b3 ∈ {0} + f ∈ {0} + G0 ∈ {0} + G1 ∈ {0} + G2 ∈ {0} + G3 ∈ {0} + G{.f0; .f1[bits 0 to 15]; .f2[bits 0 to 15]; .f3[bits 0 to 15]} ∈ {65532} + {.f0[bits 16 to 31]; .f1[bits 16 to 31]; .f2[bits 16 to 31]; .f3[bits 16 to 31]} ∈ + {0} +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + b0 ∈ {1} + b1 ∈ {2} + b2 ∈ {3} + b3 ∈ {255} + f ∈ {4278387200} + G0 ∈ {65532} + G1[bits 0 to 15] ∈ {65532} + [bits 16 to 31] ∈ {0} + G2 ∈ {-4} + G3# ∈ {65532}%16, bits 0 to 7 + data0{.full[bits 0 to 7]; .part.a} ∈ {0} + {.full[bits 8 to 31]#; .part{.b#; .c#; .d#}} ∈ + {4278387201}%32, bits 8 to 31 +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + b0 FROM \nothing + b1 FROM \nothing + b2 FROM \nothing + b3 FROM \nothing + f FROM \nothing + G0 FROM G{.f0; .f1[bits 0 to 15]; .f2[bits 0 to 15]; .f3[bits 0 to 15]} + G1 FROM G + G2 FROM G{.f0[bits 0 to 4]; .f1[bits 0 to 4]; .f2; .f3[bits 0 to 4]} + G3 FROM G{.f0[bits 0 to 7]; .f1[bits 0 to 7]; .f2[bits 0 to 7]; .f3} +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + b0; b1; b2; b3; f; G0; G1; G2; G3; data0 +[inout] Inputs for function main: + G diff --git a/tests/value/oracle_symblocs/enum.err.oracle b/tests/value/oracle_symblocs/enum.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/enum.res.oracle b/tests/value/oracle_symblocs/enum.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..0a4a20ae2381febe501bd104cde656e4004c77ea --- /dev/null +++ b/tests/value/oracle_symblocs/enum.res.oracle @@ -0,0 +1,41 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/enum.i (no preprocessing) +[value] Analyzing a complete application starting at f +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + t[0] ∈ {1} + [1..2] ∈ {0} + u[0] ∈ {2} + [1..2] ∈ {0} +[value] Call to builtin bzero(({{ (unsigned char *)&i }},{12})) +tests/value/enum.i:16:[value] entering loop for the first time +tests/value/enum.i:20:[value] assertion got status valid. +[value] Recording results for f +[value] done for function f +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + t[0] ∈ {1} + [1] ∈ {0} + [2] ∈ {42} + u[0] ∈ {2} + [1] ∈ {0} + [2] ∈ {36} + i[0..1] ∈ {0; 1} + [2] ∈ {0} + j ∈ {2} + k ∈ {0} +[from] Computing for function f +[from] Computing for function Frama_C_bzero <-f +[from] Done for function Frama_C_bzero +[from] Done for function f +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + t[2] FROM \nothing + u[2] FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + t[2]; u[2]; i[0..2]; j; k +[inout] Inputs for function f: + \nothing diff --git a/tests/value/oracle_symblocs/enum2.err.oracle b/tests/value/oracle_symblocs/enum2.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/enum2.res.oracle b/tests/value/oracle_symblocs/enum2.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..6aa91f6cc229a646029aa04a6745279a27359355 --- /dev/null +++ b/tests/value/oracle_symblocs/enum2.res.oracle @@ -0,0 +1,87 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/enum2.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + must_be_one ∈ {0} + must_be_zero ∈ {0} +[value] computing for function enum1_sgn1_inf_sgn0 <- main. + Called from tests/value/enum2.c:33. +[value] computing for function printf <- enum1_sgn1_inf_sgn0 <- main. + Called from tests/value/enum2.c:27. +[value] using specification for function printf +[value] Done for function printf +[value] Recording results for enum1_sgn1_inf_sgn0 +[value] Done for function enum1_sgn1_inf_sgn0 +[value] computing for function enum1_sgn1_positif <- main. + Called from tests/value/enum2.c:34. +[value] computing for function f <- enum1_sgn1_positif <- main. + Called from tests/value/enum2.c:21. +[value] Recording results for f +[value] Done for function f +[value] computing for function printf <- enum1_sgn1_positif <- main. + Called from tests/value/enum2.c:22. +[value] Done for function printf +[value] Recording results for enum1_sgn1_positif +[value] Done for function enum1_sgn1_positif +[value] computing for function printf <- main. + Called from tests/value/enum2.c:35. +[value] Done for function printf +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + y ∈ {2557891634} +[value:final-states] Values at end of function enum1_sgn1_inf_sgn0: + res ∈ {0} +[value:final-states] Values at end of function enum1_sgn1_positif: + res ∈ {1} +[value:final-states] Values at end of function main: + must_be_one ∈ {1} + must_be_zero ∈ {0} + res ∈ {8} +[from] Computing for function f +[from] Done for function f +[from] Computing for function enum1_sgn1_inf_sgn0 +[from] Computing for function printf <-enum1_sgn1_inf_sgn0 +[from] Done for function printf +tests/value/enum2.c:27:[from] warning: variadic call detected. Using only 1 argument(s). +[from] Done for function enum1_sgn1_inf_sgn0 +[from] Computing for function enum1_sgn1_positif +tests/value/enum2.c:22:[from] warning: variadic call detected. Using only 1 argument(s). +[from] Done for function enum1_sgn1_positif +[from] Computing for function main +tests/value/enum2.c:35:[from] warning: variadic call detected. Using only 1 argument(s). +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + \result FROM x +[from] Function printf: + \result FROM \nothing +[from] Function enum1_sgn1_inf_sgn0: + \result FROM \nothing +[from] Function enum1_sgn1_positif: + \result FROM \nothing +[from] Function main: + must_be_one FROM \nothing + must_be_zero FROM \nothing + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + y +[inout] Inputs for function f: + \nothing +[inout] Out (internal) for function enum1_sgn1_inf_sgn0: + res +[inout] Inputs for function enum1_sgn1_inf_sgn0: + \nothing +[inout] Out (internal) for function enum1_sgn1_positif: + res; tmp +[inout] Inputs for function enum1_sgn1_positif: + \nothing +[inout] Out (internal) for function main: + must_be_one; must_be_zero; res +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/eval_separated.err.oracle b/tests/value/oracle_symblocs/eval_separated.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/eval_separated.res.oracle b/tests/value/oracle_symblocs/eval_separated.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..9bed5cd193275303c28060753f7b13d26abc592b --- /dev/null +++ b/tests/value/oracle_symblocs/eval_separated.res.oracle @@ -0,0 +1,64 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/eval_separated.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + x ∈ {0} + y ∈ {0} + t1[0..5] ∈ {0} + t2[0..5] ∈ {0} +tests/value/eval_separated.c:5:[value] assertion got status valid. +tests/value/eval_separated.c:6:[value] assertion got status valid. +tests/value/eval_separated.c:8:[value] assertion got status valid. +tests/value/eval_separated.c:9:[value] assertion got status valid. +tests/value/eval_separated.c:11:[value] warning: signed overflow. assert -2147483648 ≤ (int)(&q)+(int)(&q); +tests/value/eval_separated.c:11:[value] warning: signed overflow. assert (int)(&q)+(int)(&q) ≤ 2147483647; +tests/value/eval_separated.c:11:[value] Assigning imprecise value to q. + The imprecision originates from Arithmetic {tests/value/eval_separated.c:11} +tests/value/eval_separated.c:12:[value] warning: signed overflow. assert -2147483648 ≤ (int)(&r)+(int)(&r); +tests/value/eval_separated.c:12:[value] warning: signed overflow. assert (int)(&r)+(int)(&r) ≤ 2147483647; +tests/value/eval_separated.c:12:[value] Assigning imprecise value to r. + The imprecision originates from Arithmetic {tests/value/eval_separated.c:12} +tests/value/eval_separated.c:13:[value] warning: assertion got status unknown. +tests/value/eval_separated.c:14:[value] warning: assertion got status unknown. +tests/value/eval_separated.c:15:[value] warning: assertion got status unknown. +tests/value/eval_separated.c:17:[value] assertion got status valid. +tests/value/eval_separated.c:18:[value] assertion got status valid. +tests/value/eval_separated.c:20:[value] assertion got status valid. +tests/value/eval_separated.c:21:[value] assertion got status valid. +tests/value/eval_separated.c:23:[value] assertion got status valid. +tests/value/eval_separated.c:24:[value] assertion got status valid. +tests/value/eval_separated.c:26:[value] assertion got status valid. +tests/value/eval_separated.c:27:[value] assertion got status valid. +tests/value/eval_separated.c:28:[value] assertion got status valid. +tests/value/eval_separated.c:30:[value] assertion got status valid. +tests/value/eval_separated.c:31:[value] assertion got status valid. +tests/value/eval_separated.c:33:[value] assertion got status valid. +tests/value/eval_separated.c:36:[value] assertion got status valid. +tests/value/eval_separated.c:38:[value] assertion got status valid. +tests/value/eval_separated.c:41:[value] assertion got status valid. +tests/value/eval_separated.c:43:[value] warning: assertion got status unknown. +tests/value/eval_separated.c:45:[value] warning: assertion got status unknown. +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + p ∈ {{ &t1 + [-8589934592..8589934588],0%4 }} + q ∈ + {{ garbled mix of &{q} + (origin: Arithmetic {tests/value/eval_separated.c:11}) }} + r ∈ + {{ garbled mix of &{r} + (origin: Arithmetic {tests/value/eval_separated.c:12}) }} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + p; q; r +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/extern.err.oracle b/tests/value/oracle_symblocs/extern.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/extern.res.oracle b/tests/value/oracle_symblocs/extern.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..d81049f06694768ce04c31e06b4d1e1c2d72fc99 --- /dev/null +++ b/tests/value/oracle_symblocs/extern.res.oracle @@ -0,0 +1,45 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/extern.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +tests/value/extern.i:4:[kernel] imprecise size for variable T3 (Size of array without number of elements.) +tests/value/extern.i:4:[value] warning: during initialization of variable 'T3', size of type 'int []' cannot be + computed (Size of array without number of elements.) +tests/value/extern.i:5:[kernel] imprecise size for variable T4 (Size of array without number of elements.) +tests/value/extern.i:5:[value] warning: during initialization of variable 'T4', size of type 'int const []' cannot be + computed (Size of array without number of elements.) +tests/value/extern.i:14:[value] no size specified for array, assuming 0 +[value] Initial state computed +[value:initial-state] Values of globals at initialization + T1 ∈ [--..--] + T2 ∈ [--..--] + T3[0..1073741823] ∈ [--..--] or UNINITIALIZED + T4[0..1073741823] ∈ [--..--] or UNINITIALIZED + T5[0..2] ∈ [--..--] + T6[0..2] ∈ [--..--] + c ∈ [--..--] + s ∈ [--..--] +tests/value/extern.i:19:[value] warning: out of bounds read. assert \valid_read(&T3[3]); +tests/value/extern.i:20:[value] warning: out of bounds write. assert \valid(&T2); +tests/value/extern.i:20:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +tests/value/extern.i:22:[value] warning: out of bounds write. assert \valid(&T2); +tests/value/extern.i:22:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +[value] Recording results for main +[value] done for function main +tests/value/extern.i:20:[value] assertion 'Value,mem_access' got final status invalid. +tests/value/extern.i:22:[value] assertion 'Value,mem_access' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + NON TERMINATING FUNCTION +[from] Computing for function main +[from] Non-terminating function main (no dependencies) +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NON TERMINATING - NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + T1 +[inout] Inputs for function main: + T3[3]; T4[3]; T5[1]; T6[1]; c diff --git a/tests/value/oracle_symblocs/f1.err.oracle b/tests/value/oracle_symblocs/f1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/f1.res.oracle b/tests/value/oracle_symblocs/f1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..dc97ab23c9e65b4c0c9a759a351bd7fde299d9c1 --- /dev/null +++ b/tests/value/oracle_symblocs/f1.res.oracle @@ -0,0 +1,32 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/f1.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] computing for function f <- main. + Called from tests/value/f1.i:5. +tests/value/f1.i:5:[kernel] warning: Neither code nor specification for function f, generating default assigns from the prototype +[value] using specification for function f +[value] Done for function f +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + +[from] Computing for function main +[from] Computing for function f <-main +[from] Done for function f +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + \result FROM x +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + \nothing +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/f2.err.oracle b/tests/value/oracle_symblocs/f2.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/f2.res.oracle b/tests/value/oracle_symblocs/f2.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..6bd1b847b8b7e41a52933382a0e3ece9052df115 --- /dev/null +++ b/tests/value/oracle_symblocs/f2.res.oracle @@ -0,0 +1,23 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/f2.i (no preprocessing) +[value] Analyzing a complete application starting at f +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] Recording results for f +[value] done for function f +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + __retres ∈ {0} +[from] Computing for function f +[from] Done for function f +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + __retres +[inout] Inputs for function f: + \nothing diff --git a/tests/value/oracle_symblocs/false.err.oracle b/tests/value/oracle_symblocs/false.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/false.res.oracle b/tests/value/oracle_symblocs/false.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..d648a3cf7e65d310a4f31e198b0614fa0022792c --- /dev/null +++ b/tests/value/oracle_symblocs/false.res.oracle @@ -0,0 +1,51 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/false.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] computing for function f <- main. + Called from tests/value/false.i:18. +tests/value/false.i:18:[kernel] warning: No code nor implicit assigns clause for function f, generating default assigns from the prototype +[value] using specification for function f +tests/value/false.i:5:[value] warning: function f: precondition got status invalid. +tests/value/false.i:6:[value] function f: no state left in which to evaluate precondition, status not computed. +tests/value/false.i:7:[value] function f: no state left in which to evaluate precondition, status not computed. +[value] Done for function f +[value] computing for function g <- main. + Called from tests/value/false.i:19. +tests/value/false.i:10:[value] warning: function g: postcondition got status invalid. +tests/value/false.i:11:[value] function g: no state left in which to evaluate postcondition, status not computed. +[value] Recording results for g +[value] Done for function g +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function g: + +[value:final-states] Values at end of function main: + i ∈ {0} +[from] Computing for function g +[from] Done for function g +[from] Computing for function main +[from] Computing for function f <-main +[from] Done for function f +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + NO EFFECTS +[from] Function g: + \result FROM i +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function g: + \nothing +[inout] Inputs for function g: + \nothing +[inout] Out (internal) for function main: + i +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/fam_sizeof.err.oracle b/tests/value/oracle_symblocs/fam_sizeof.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/fam_sizeof.res.oracle b/tests/value/oracle_symblocs/fam_sizeof.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..797fc76c84d9b6616637b9172a935e6895aa4947 --- /dev/null +++ b/tests/value/oracle_symblocs/fam_sizeof.res.oracle @@ -0,0 +1,34 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/fam_sizeof.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + fam ∈ {0} + nested ∈ {0} + fam2 ∈ {0} + gcc_fam ∈ {0} +tests/value/fam_sizeof.i:44:[value] assertion got status valid. +tests/value/fam_sizeof.i:48:[value] assertion got status valid. +tests/value/fam_sizeof.i:50:[value] assertion got status valid. +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + z1 ∈ {4} + z2 ∈ {20} + z3 ∈ {12} + z4 ∈ {16} + z5 ∈ {0} + __retres ∈ {0} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + z1; z2; z3; z4; z5; __retres +[inout] Inputs for function main: + fam; nested; fam2 diff --git a/tests/value/oracle_symblocs/find_ivaltop.err.oracle b/tests/value/oracle_symblocs/find_ivaltop.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/find_ivaltop.res.oracle b/tests/value/oracle_symblocs/find_ivaltop.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..dc34aef57f545e321afd3c419205188c7b5b0dbf --- /dev/null +++ b/tests/value/oracle_symblocs/find_ivaltop.res.oracle @@ -0,0 +1,45 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/find_ivaltop.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + t[0] ∈ {1} + [1] ∈ {2} + [2] ∈ {3} + [3] ∈ {4} + [4] ∈ {5} + [5] ∈ {6} + [6] ∈ {7} + [7] ∈ {8} + [8] ∈ {9} + [9] ∈ {0} + [10] ∈ {1} + [11] ∈ {2} + [12] ∈ {3} + [13] ∈ {4} + [14] ∈ {5} + [15] ∈ {6} + [16] ∈ {7} + [17] ∈ {8} + [18] ∈ {9} + [19] ∈ {0} +tests/value/find_ivaltop.i:6:[value] entering loop for the first time +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + i ∈ {8} + j ∈ {0; 1; 2; 3; 4; 5; 6; 7} + X ∈ {1; 2; 3; 4; 5; 6; 7; 8} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + \result FROM t[0..7] +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + i; j; X +[inout] Inputs for function main: + t[0..7] diff --git a/tests/value/oracle_symblocs/folding.err.oracle b/tests/value/oracle_symblocs/folding.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/folding.res.oracle b/tests/value/oracle_symblocs/folding.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..c8868c43919db8098c46e9492ac58218c10994a9 --- /dev/null +++ b/tests/value/oracle_symblocs/folding.res.oracle @@ -0,0 +1,77 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/folding.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] computing for function g <- main. + Called from tests/value/folding.i:23. +[value] computing for function f <- g <- main. + Called from tests/value/folding.i:11. +[value] Recording results for f +[value] Done for function f +[value] Recording results for g +[value] Done for function g +[value] computing for function foo <- main. + Called from tests/value/folding.i:24. +[value] Recording results for foo +[value] Done for function foo +[value] computing for function foo <- main. + Called from tests/value/folding.i:24. +[value] Recording results for foo +[value] Done for function foo +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + +[value:final-states] Values at end of function foo: + unknown ∈ [--..--] + __retres ∈ {8; 9; 779} +[value:final-states] Values at end of function g: + pfct ∈ {{ &f }} + un ∈ {1} + p ∈ {{ &deux }} + deux ∈ {2} + trois ∈ {5} +[value:final-states] Values at end of function main: + a ∈ {17; 18; 787; 788} + b ∈ {4} + c ∈ {33; 34; 803; 804} + __retres ∈ {37; 38; 807; 808} +[from] Computing for function f +[from] Done for function f +[from] Computing for function foo +[from] Done for function foo +[from] Computing for function g +[from] Done for function g +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + \result FROM x +[from] Function foo: + \result FROM x; y +[from] Function g: + \result FROM \nothing +[from] Function main: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + \nothing +[inout] Inputs for function f: + \nothing +[inout] Out (internal) for function foo: + unknown; __retres +[inout] Inputs for function foo: + \nothing +[inout] Out (internal) for function g: + pfct; un; p; deux; trois; tmp +[inout] Inputs for function g: + \nothing +[inout] Out (internal) for function main: + a; b; c; tmp; tmp_0; __retres +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/for_loops.0.err.oracle b/tests/value/oracle_symblocs/for_loops.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/for_loops.0.res.oracle b/tests/value/oracle_symblocs/for_loops.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..0b3805bae6b6023500e88f77ac09225a5657d1c1 --- /dev/null +++ b/tests/value/oracle_symblocs/for_loops.0.res.oracle @@ -0,0 +1,45 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/for_loops.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + Frama_C_entropy_source ∈ [--..--] + x ∈ {0} +[value] computing for function Frama_C_interval <- main. + Called from tests/value/for_loops.c:24. +[value] using specification for function Frama_C_interval +share/libc/__fc_builtin.h:50:[value] function Frama_C_interval: precondition got status valid. +[value] Done for function Frama_C_interval +tests/value/for_loops.c:27:[value] entering loop for the first time +tests/value/for_loops.c:29:[value] entering loop for the first time +[value] Called Frama_C_show_each_F({0}) +[value] Called Frama_C_show_each_F({0; 1}) +[value] Called Frama_C_show_each_F({0; 1; 2}) +[value] Called Frama_C_show_each_F([0..2147483647]) +tests/value/for_loops.c:27:[value] warning: signed overflow. assert j+1 ≤ 2147483647; +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + Frama_C_entropy_source ∈ [--..--] + j ∈ [1..2147483647] + nSelectors ∈ [0..2147483646] + w ∈ {0} + v ∈ {0} +[from] Computing for function main +[from] Computing for function Frama_C_interval <-main +[from] Done for function Frama_C_interval +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function Frama_C_interval: + Frama_C_entropy_source FROM Frama_C_entropy_source (and SELF) + \result FROM Frama_C_entropy_source; min; max +[from] Function main: + Frama_C_entropy_source FROM Frama_C_entropy_source (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + Frama_C_entropy_source; j; nSelectors; w; v +[inout] Inputs for function main: + Frama_C_entropy_source diff --git a/tests/value/oracle_symblocs/for_loops.1.err.oracle b/tests/value/oracle_symblocs/for_loops.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/for_loops.1.res.oracle b/tests/value/oracle_symblocs/for_loops.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..853e91173adc89a527ab685afbb74b78c93bc006 --- /dev/null +++ b/tests/value/oracle_symblocs/for_loops.1.res.oracle @@ -0,0 +1,64 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/for_loops.c (with preprocessing) +[value] Analyzing a complete application starting at main_2 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + Frama_C_entropy_source ∈ [--..--] + x ∈ {0} +[value] computing for function Frama_C_interval <- main_2. + Called from tests/value/for_loops.c:13. +[value] using specification for function Frama_C_interval +share/libc/__fc_builtin.h:50:[value] function Frama_C_interval: precondition got status valid. +[value] Done for function Frama_C_interval +tests/value/for_loops.c:16:[value] entering loop for the first time +[value] computing for function Frama_C_interval <- main_2. + Called from tests/value/for_loops.c:16. +[value] Done for function Frama_C_interval +[value] Called Frama_C_show_each_F({0; 1}) +[value] computing for function Frama_C_interval <- main_2. + Called from tests/value/for_loops.c:16. +[value] Done for function Frama_C_interval +[value] Called Frama_C_show_each_F({0; 1; 2}) +[value] computing for function Frama_C_interval <- main_2. + Called from tests/value/for_loops.c:16. +[value] Done for function Frama_C_interval +[value] Called Frama_C_show_each_F({0; 1; 2; 3}) +[value] computing for function Frama_C_interval <- main_2. + Called from tests/value/for_loops.c:16. +[value] Done for function Frama_C_interval +[value] Called Frama_C_show_each_F({0; 1; 2; 3; 4}) +[value] computing for function Frama_C_interval <- main_2. + Called from tests/value/for_loops.c:16. +[value] Done for function Frama_C_interval +[value] Called Frama_C_show_each_F({0; 1; 2; 3; 4; 5}) +[value] computing for function Frama_C_interval <- main_2. + Called from tests/value/for_loops.c:16. +[value] Done for function Frama_C_interval +tests/value/for_loops.c:16:[value] warning: signed overflow. assert w+1 ≤ 2147483647; +[value] Called Frama_C_show_each_F([0..2147483647]) +[value] Recording results for main_2 +[value] done for function main_2 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main_2: + Frama_C_entropy_source ∈ [--..--] + j ∈ [0..2147483647] + nSelectors ∈ [0..100] + w ∈ [0..2147483647] + v ∈ {0} +[from] Computing for function main_2 +[from] Computing for function Frama_C_interval <-main_2 +[from] Done for function Frama_C_interval +[from] Done for function main_2 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function Frama_C_interval: + Frama_C_entropy_source FROM Frama_C_entropy_source (and SELF) + \result FROM Frama_C_entropy_source; min; max +[from] Function main_2: + Frama_C_entropy_source FROM Frama_C_entropy_source (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main_2: + Frama_C_entropy_source; j; nSelectors; w; v; tmp_0 +[inout] Inputs for function main_2: + Frama_C_entropy_source diff --git a/tests/value/oracle_symblocs/for_loops.2.err.oracle b/tests/value/oracle_symblocs/for_loops.2.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/for_loops.2.res.oracle b/tests/value/oracle_symblocs/for_loops.2.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..a9b2783604912f798f10c47df7bfb92a5139e57e --- /dev/null +++ b/tests/value/oracle_symblocs/for_loops.2.res.oracle @@ -0,0 +1,61 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/for_loops.c (with preprocessing) +[value] Analyzing a complete application starting at main_3 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + Frama_C_entropy_source ∈ [--..--] + x ∈ {0} +[value] computing for function Frama_C_interval <- main_3. + Called from tests/value/for_loops.c:37. +[value] using specification for function Frama_C_interval +share/libc/__fc_builtin.h:50:[value] function Frama_C_interval: precondition got status valid. +[value] Done for function Frama_C_interval +[value] DUMPING STATE of file tests/value/for_loops.c line 39 + Frama_C_entropy_source ∈ [--..--] + x ∈ {0} + j ∈ UNINITIALIZED + T[0..999] ∈ UNINITIALIZED + nSelectors ∈ [0..1000] + w ∈ {0} + =END OF DUMP== +tests/value/for_loops.c:40:[value] entering loop for the first time +[value] DUMPING STATE of file tests/value/for_loops.c line 41 + Frama_C_entropy_source ∈ [--..--] + x ∈ {0} + j ∈ [0..1000] + T[0..999] ∈ {1} or UNINITIALIZED + nSelectors ∈ [0..1000] + w ∈ {0} + =END OF DUMP== +tests/value/for_loops.c:42:[value] entering loop for the first time +tests/value/for_loops.c:42:[value] warning: accessing uninitialized left-value. assert \initialized(&T[j]); +tests/value/for_loops.c:42:[value] warning: signed overflow. assert w+T[j] ≤ 2147483647; +[value] Called Frama_C_show_each([0..2147483647]) +[value] Recording results for main_3 +[value] done for function main_3 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main_3: + Frama_C_entropy_source ∈ [--..--] + j ∈ [0..1000] + T[0..999] ∈ {1} or UNINITIALIZED + nSelectors ∈ [0..1000] + w ∈ [0..2147483647] +[from] Computing for function main_3 +[from] Computing for function Frama_C_interval <-main_3 +[from] Done for function Frama_C_interval +[from] Computing for function Frama_C_dump_each <-main_3 +[from] Done for function Frama_C_dump_each +[from] Done for function main_3 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function Frama_C_interval: + Frama_C_entropy_source FROM Frama_C_entropy_source (and SELF) + \result FROM Frama_C_entropy_source; min; max +[from] Function main_3: + Frama_C_entropy_source FROM Frama_C_entropy_source (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main_3: + Frama_C_entropy_source; j; T[0..999]; nSelectors; w +[inout] Inputs for function main_3: + Frama_C_entropy_source diff --git a/tests/value/oracle_symblocs/for_loops.3.err.oracle b/tests/value/oracle_symblocs/for_loops.3.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/for_loops.3.res.oracle b/tests/value/oracle_symblocs/for_loops.3.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..c6432089f7767aa5f886ed080a1f5c91cddd9078 --- /dev/null +++ b/tests/value/oracle_symblocs/for_loops.3.res.oracle @@ -0,0 +1,31 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/for_loops.c (with preprocessing) +[value] Analyzing a complete application starting at main_4 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + Frama_C_entropy_source ∈ [--..--] + x ∈ {0} +tests/value/for_loops.c:50:[value] entering loop for the first time +tests/value/for_loops.c:52:[value] entering loop for the first time +[value] Called Frama_C_show_each_F({0}, {0}) +[value] Called Frama_C_show_each_F({0; 1}, [0..2147483647]) +[value] Called Frama_C_show_each_F({0; 1; 2}, [0..2147483647]) +[value] Called Frama_C_show_each_F({0; 1; 2; 3; 4; 5}, [0..2147483647]) +[value] Recording results for main_4 +[value] done for function main_4 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main_4: + j ∈ {6} + v ∈ [0..2147483647] +[from] Computing for function main_4 +[from] Done for function main_4 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main_4: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main_4: + j; v +[inout] Inputs for function main_4: + \nothing diff --git a/tests/value/oracle_symblocs/forall.err.oracle b/tests/value/oracle_symblocs/forall.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/forall.res.oracle b/tests/value/oracle_symblocs/forall.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..fbce3849193e672f13042127265928941b9e0363 --- /dev/null +++ b/tests/value/oracle_symblocs/forall.res.oracle @@ -0,0 +1,39 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/forall.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + t[0..9] ∈ {0} + j ∈ [--..--] +tests/value/forall.i:9:[value] warning: function main: precondition got status unknown. +tests/value/forall.i:11:[value] assertion got status valid. +tests/value/forall.i:12:[value] warning: assertion got status unknown. +tests/value/forall.i:13:[value] assertion got status valid. +tests/value/forall.i:15:[value] warning: assertion got status unknown. +tests/value/forall.i:16:[value] warning: assertion got status unknown. +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + t[0] ∈ {0} + [1] ∈ {2} + [2..9] ∈ {0} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + t[1] FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + t[1] +[inout] Inputs for function main: + \nothing +[inout] InOut (internal) for function main: + Operational inputs: + \nothing + Operational inputs on termination: + \nothing + Sure outputs: + t[1] diff --git a/tests/value/oracle_symblocs/fptr.0.err.oracle b/tests/value/oracle_symblocs/fptr.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/fptr.0.res.oracle b/tests/value/oracle_symblocs/fptr.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..c4166c2e79bff627ad5ed33cfe50f9dc9448c164 --- /dev/null +++ b/tests/value/oracle_symblocs/fptr.0.res.oracle @@ -0,0 +1,160 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/fptr.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + R ∈ {77} + X ∈ {77} + XH ∈ {0} + XHH ∈ {0} + GLOBAL[0..9] ∈ {0} + G ∈ {0} + TA ∈ {0} +[value] computing for function retshort <- main. + Called from tests/value/fptr.i:42. +[value] Recording results for retshort +[value] Done for function retshort +[value] computing for function retint <- main. + Called from tests/value/fptr.i:43. +[value] Recording results for retint +[value] Done for function retint +tests/value/fptr.i:44:[value] warning: pointer to function with incompatible type. + assert \valid_function((int (*)())(&retshort)); +tests/value/fptr.i:45:[value] warning: pointer to function with incompatible type. + assert \valid_function((short (*)())(&retint)); +tests/value/fptr.i:50:[value] entering loop for the first time +[value] Called Frama_C_show_each_F({{ &h }}) +[value] computing for function f <- main. + Called from tests/value/fptr.i:52. +[value] computing for function h <- f <- main. + Called from tests/value/fptr.i:9. +[value] Recording results for h +[value] Done for function h +[value] Recording results for f +[value] Done for function f +[value] Called Frama_C_show_each_F({{ &h ; &hh }}) +[value] computing for function f <- main. + Called from tests/value/fptr.i:52. +[value] computing for function hh <- f <- main. + Called from tests/value/fptr.i:9. +[value] Recording results for hh +[value] Done for function hh +[value] computing for function h <- f <- main. + Called from tests/value/fptr.i:9. +[value] Recording results for h +[value] Done for function h +[value] Recording results for f +[value] Done for function f +[value] Called Frama_C_show_each_F({{ NULL ; &h ; &hh }}) +[value] computing for function f <- main. + Called from tests/value/fptr.i:52. +tests/value/fptr.i:9:[value] warning: pointer to function with incompatible type. assert \valid_function(ptr); +[value] computing for function hh <- f <- main. + Called from tests/value/fptr.i:9. +[value] Recording results for hh +[value] Done for function hh +[value] computing for function h <- f <- main. + Called from tests/value/fptr.i:9. +[value] Recording results for h +[value] Done for function h +[value] Recording results for f +[value] Done for function f +tests/value/fptr.i:56:[value] warning: division by zero. assert (int)(c&64) ≢ 0; +[value] computing for function hh <- main. + Called from tests/value/fptr.i:56. +[value] Recording results for hh +[value] Done for function hh +[value] computing for function h <- main. + Called from tests/value/fptr.i:56. +[value] Recording results for h +[value] Done for function h +[value] Recording results for main +[value] done for function main +tests/value/fptr.i:44:[value] assertion 'Value,function_pointer' got final status invalid. +tests/value/fptr.i:45:[value] assertion 'Value,function_pointer' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function h: + X ∈ {0; 1} + XH ∈ {0; 1} +[value:final-states] Values at end of function hh: + X ∈ {0; 2} + XHH ∈ {0; 1} +[value:final-states] Values at end of function f: + R ∈ {1; 2} + X ∈ {1; 2} + XH ∈ {0; 1} + XHH ∈ {0; 1} +[value:final-states] Values at end of function retint: + __retres ∈ {42} +[value:final-states] Values at end of function retshort: + __retres ∈ {12} +[value:final-states] Values at end of function main: + R ∈ {1; 2; 77} + X ∈ {0; 1; 2; 77} + XH ∈ {0; 1} + XHH ∈ {0; 1} + GLOBAL[0] ∈ {{ &h }} + [1] ∈ {{ &hh }} + [2..9] ∈ {0} + G ∈ {0; 1; 2} + TA ∈ {0} + in ∈ {12} or UNINITIALIZED + pin ∈ UNINITIALIZED + sh ∈ {42} or UNINITIALIZED + psh ∈ UNINITIALIZED + i ∈ {3} + p ∈ {{ &h ; &hh }} +[from] Computing for function h +[from] Done for function h +[from] Computing for function hh +[from] Done for function hh +[from] Computing for function f +[from] Done for function f +[from] Computing for function retint +[from] Done for function retint +[from] Computing for function retshort +[from] Done for function retshort +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function h: + X FROM y + XH FROM y + \result FROM y +[from] Function hh: + X FROM y + XHH FROM y + \result FROM y +[from] Function f: + R FROM ptr + X FROM ptr + XH FROM ptr (and SELF) + XHH FROM ptr (and SELF) + \result FROM ptr +[from] Function retint: + \result FROM \nothing +[from] Function retshort: + \result FROM \nothing +[from] Function main: + R FROM GLOBAL[2] (and SELF) + X FROM GLOBAL[2]; c (and SELF) + XH FROM GLOBAL[2]; c (and SELF) + XHH FROM GLOBAL[2]; c (and SELF) + GLOBAL[0..1] FROM \nothing + G FROM GLOBAL[2] (and SELF) + TA FROM c (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function h: + X; XH +[inout] Out (internal) for function hh: + X; XHH +[inout] Out (internal) for function f: + R; X; XH; XHH +[inout] Out (internal) for function retint: + __retres +[inout] Out (internal) for function retshort: + __retres +[inout] Out (internal) for function main: + R; X; XH; XHH; GLOBAL[0..1]; G; TA; in; pin; sh; psh; tmp; i; p; tmp_0 diff --git a/tests/value/oracle_symblocs/fptr.1.err.oracle b/tests/value/oracle_symblocs/fptr.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/fptr.1.res.oracle b/tests/value/oracle_symblocs/fptr.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..1e823dc1b39eb3bdc0fa7651d67c0b54ba1eb5b7 --- /dev/null +++ b/tests/value/oracle_symblocs/fptr.1.res.oracle @@ -0,0 +1,116 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/fptr.i (no preprocessing) +[value] Analyzing a complete application starting at main_uninit +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + R ∈ {77} + X ∈ {77} + XH ∈ {0} + XHH ∈ {0} + GLOBAL[0..9] ∈ {0} + G ∈ {0} + TA ∈ {0} +tests/value/fptr.i:66:[value] entering loop for the first time +[value] Called Frama_C_show_each_F({{ &h }}) +[value] computing for function f <- main_uninit. + Called from tests/value/fptr.i:68. +[value] computing for function h <- f <- main_uninit. + Called from tests/value/fptr.i:9. +[value] Recording results for h +[value] Done for function h +[value] Recording results for f +[value] Done for function f +[value] Called Frama_C_show_each_F({{ &h ; &hh }}) +[value] computing for function f <- main_uninit. + Called from tests/value/fptr.i:68. +[value] computing for function hh <- f <- main_uninit. + Called from tests/value/fptr.i:9. +[value] Recording results for hh +[value] Done for function hh +[value] computing for function h <- f <- main_uninit. + Called from tests/value/fptr.i:9. +[value] Recording results for h +[value] Done for function h +[value] Recording results for f +[value] Done for function f +[value] Called Frama_C_show_each_F({{ NULL + [0..4294967295] ; &h ; &hh }}) +[value] computing for function f <- main_uninit. + Called from tests/value/fptr.i:68. +tests/value/fptr.i:9:[value] warning: pointer to function with incompatible type. assert \valid_function(ptr); +[value] computing for function hh <- f <- main_uninit. + Called from tests/value/fptr.i:9. +[value] Recording results for hh +[value] Done for function hh +[value] computing for function h <- f <- main_uninit. + Called from tests/value/fptr.i:9. +[value] Recording results for h +[value] Done for function h +[value] Recording results for f +[value] Done for function f +[value] Recording results for main_uninit +[value] done for function main_uninit +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function h: + X ∈ {1} + XH ∈ {1} +[value:final-states] Values at end of function hh: + X ∈ {2} + XHH ∈ {1} +[value:final-states] Values at end of function f: + R ∈ {1; 2} + X ∈ {1; 2} + XH ∈ {0; 1} + XHH ∈ {0; 1} +[value:final-states] Values at end of function main_uninit: + R ∈ {1; 2; 77} + X ∈ {1; 2; 77} + XH ∈ {0; 1} + XHH ∈ {0; 1} + GLOBAL[0] ∈ {{ &h }} + [1] ∈ {{ &hh }} + [2] ∈ [--..--] + [3..9] ∈ {0} + G ∈ {0; 1; 2} + i ∈ {3} + j ∈ [--..--] +[from] Computing for function h +[from] Done for function h +[from] Computing for function hh +[from] Done for function hh +[from] Computing for function f +[from] Done for function f +[from] Computing for function main_uninit +[from] Done for function main_uninit +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function h: + X FROM y + XH FROM y + \result FROM y +[from] Function hh: + X FROM y + XHH FROM y + \result FROM y +[from] Function f: + R FROM ptr + X FROM ptr + XH FROM ptr (and SELF) + XHH FROM ptr (and SELF) + \result FROM ptr +[from] Function main_uninit: + R FROM \nothing (and SELF) + X FROM \nothing (and SELF) + XH FROM \nothing (and SELF) + XHH FROM \nothing (and SELF) + GLOBAL[0..2] FROM \nothing + G FROM \nothing (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function h: + X; XH +[inout] Out (internal) for function hh: + X; XHH +[inout] Out (internal) for function f: + R; X; XH; XHH +[inout] Out (internal) for function main_uninit: + R; X; XH; XHH; GLOBAL[0..2]; G; i; j diff --git a/tests/value/oracle_symblocs/from1.err.oracle b/tests/value/oracle_symblocs/from1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/from1.res.oracle b/tests/value/oracle_symblocs/from1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..883cb73715bb46623a101bbc969017b5cdfc6220 --- /dev/null +++ b/tests/value/oracle_symblocs/from1.res.oracle @@ -0,0 +1,63 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/from1.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + G ∈ {0} + cx ∈ {0} + cy ∈ {0} + cz ∈ {0} + sx ∈ {0} + sy ∈ {0} + s ∈ {0} +[value] computing for function f <- main. + Called from tests/value/from1.i:23. +[value] Recording results for f +[value] Done for function f +[value] computing for function sf <- main. + Called from tests/value/from1.i:25. +[value] Recording results for sf +[value] Done for function sf +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + cy ∈ {0} +[value:final-states] Values at end of function sf: + __retres ∈ {0} +[value:final-states] Values at end of function main: + G ∈ [--..--] + cx ∈ {0} + cy ∈ {0} + s_0 ∈ {0} +[from] Computing for function f +[from] Done for function f +[from] Computing for function sf +[from] Done for function sf +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + cy FROM cx +[from] Function sf: + \result FROM ps; s_0.a +[from] Function main: + G FROM x; y (and SELF) + cx FROM cz + cy FROM cz + \result FROM sx +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + cy +[inout] Inputs for function f: + cx +[inout] Out (internal) for function sf: + __retres +[inout] Inputs for function sf: + s_0.a +[inout] Out (internal) for function main: + G; cx; cy; s_0; tmp +[inout] Inputs for function main: + cx; cz; sx; sy diff --git a/tests/value/oracle_symblocs/from_call.0.err.oracle b/tests/value/oracle_symblocs/from_call.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/from_call.0.res.oracle b/tests/value/oracle_symblocs/from_call.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e9ebcc35baa28278a34cbf885b0ba14c386ca346 --- /dev/null +++ b/tests/value/oracle_symblocs/from_call.0.res.oracle @@ -0,0 +1,347 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/from_call.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + a ∈ {0} + b ∈ {0} + c ∈ {0} + d ∈ {0} + x ∈ {0} + y ∈ {0} + z ∈ {0} + t ∈ {0} + A1 ∈ {0} + A2 ∈ {0} + A3 ∈ {0} + A4 ∈ {0} + A5 ∈ {0} + A6 ∈ {0} + A7 ∈ {0} + A8 ∈ {0} + R1 ∈ {0} + R2 ∈ {0} + R3 ∈ {0} + S1 ∈ {0} + S2 ∈ {0} + S3 ∈ {0} + T0 ∈ {0} + T1 ∈ {0} + T2 ∈ {0} + tab[0..4] ∈ {0} + AA ∈ {0} + AR ∈ {0} + AS ∈ {0} + At[0] ∈ {{ (int)&AA }} + [1] ∈ {0} + Ar[0] ∈ {{ (int)&AA }} + [1] ∈ {0} + Ap ∈ {{ &At[0] }} + previous ∈ {{ &a }} +[value] computing for function f <- main. + Called from tests/value/from_call.i:81. +[value] computing for function h <- f <- main. + Called from tests/value/from_call.i:20. +tests/value/from_call.i:20:[kernel] warning: Neither code nor specification for function h, generating default assigns from the prototype +[value] using specification for function h +[value] Done for function h +[value] computing for function g <- f <- main. + Called from tests/value/from_call.i:20. +[value] Recording results for g +[from] Computing for function g +[from] Done for function g +[value] Done for function g +[value] Recording results for f +[from] Computing for function f +[from] Done for function f +[value] Done for function f +[value] computing for function f <- main. + Called from tests/value/from_call.i:82. +[value] computing for function h <- f <- main. + Called from tests/value/from_call.i:20. +[value] Done for function h +[value] computing for function g <- f <- main. + Called from tests/value/from_call.i:20. +[value] Recording results for g +[from] Computing for function g +[from] Done for function g +[value] Done for function g +[value] Recording results for f +[from] Computing for function f +[from] Done for function f +[value] Done for function f +[value] computing for function f <- main. + Called from tests/value/from_call.i:82. +[value] computing for function h <- f <- main. + Called from tests/value/from_call.i:20. +[value] Done for function h +[value] computing for function g <- f <- main. + Called from tests/value/from_call.i:20. +[value] Recording results for g +[from] Computing for function g +[from] Done for function g +[value] Done for function g +[value] Recording results for f +[from] Computing for function f +[from] Done for function f +[value] Done for function f +tests/value/from_call.i:82:[value] warning: signed overflow. + assert -2147483648 ≤ tmp+tmp_0; + (tmp from f(& c), tmp_0 from f(& d)) +tests/value/from_call.i:82:[value] warning: signed overflow. + assert tmp+tmp_0 ≤ 2147483647; + (tmp from f(& c), tmp_0 from f(& d)) +[value] computing for function dispatcher <- main. + Called from tests/value/from_call.i:83. +[value] Recording results for dispatcher +[from] Computing for function dispatcher +[from] Done for function dispatcher +[value] Done for function dispatcher +[value] computing for function dispatcher <- main. + Called from tests/value/from_call.i:84. +[value] Recording results for dispatcher +[from] Computing for function dispatcher +[from] Done for function dispatcher +[value] Done for function dispatcher +[value] computing for function dispatcher <- main. + Called from tests/value/from_call.i:85. +[value] Recording results for dispatcher +[from] Computing for function dispatcher +[from] Done for function dispatcher +[value] Done for function dispatcher +[value] computing for function call_dispatcher2_1 <- main. + Called from tests/value/from_call.i:86. +[value] computing for function dispatcher2 <- call_dispatcher2_1 <- main. + Called from tests/value/from_call.i:49. +[value] computing for function return_A1 <- dispatcher2 <- call_dispatcher2_1 <- main. + Called from tests/value/from_call.i:44. +[value] Recording results for return_A1 +[from] Computing for function return_A1 +[from] Done for function return_A1 +[value] Done for function return_A1 +[value] Recording results for dispatcher2 +[from] Computing for function dispatcher2 +[from] Done for function dispatcher2 +[value] Done for function dispatcher2 +[value] Recording results for call_dispatcher2_1 +[from] Computing for function call_dispatcher2_1 +[from] Done for function call_dispatcher2_1 +[value] Done for function call_dispatcher2_1 +[value] computing for function call_dispatcher2_0 <- main. + Called from tests/value/from_call.i:87. +[value] computing for function dispatcher2 <- call_dispatcher2_0 <- main. + Called from tests/value/from_call.i:54. +[value] computing for function return_A2 <- dispatcher2 <- call_dispatcher2_0 <- main. + Called from tests/value/from_call.i:44. +[value] Recording results for return_A2 +[from] Computing for function return_A2 +[from] Done for function return_A2 +[value] Done for function return_A2 +[value] Recording results for dispatcher2 +[from] Computing for function dispatcher2 +[from] Done for function dispatcher2 +[value] Done for function dispatcher2 +[value] Recording results for call_dispatcher2_0 +[from] Computing for function call_dispatcher2_0 +[from] Done for function call_dispatcher2_0 +[value] Done for function call_dispatcher2_0 +[value] computing for function call_dispatcher2 <- main. + Called from tests/value/from_call.i:88. +[value] computing for function dispatcher2 <- call_dispatcher2 <- main. + Called from tests/value/from_call.i:59. +[value] computing for function return_A1 <- dispatcher2 <- call_dispatcher2 <- main. + Called from tests/value/from_call.i:44. +[value] Recording results for return_A1 +[from] Computing for function return_A1 +[from] Done for function return_A1 +[value] Done for function return_A1 +[value] computing for function return_A2 <- dispatcher2 <- call_dispatcher2 <- main. + Called from tests/value/from_call.i:44. +[value] Recording results for return_A2 +[from] Computing for function return_A2 +[from] Done for function return_A2 +[value] Done for function return_A2 +[value] Recording results for dispatcher2 +[from] Computing for function dispatcher2 +[from] Done for function dispatcher2 +[value] Done for function dispatcher2 +[value] Recording results for call_dispatcher2 +[from] Computing for function call_dispatcher2 +[from] Done for function call_dispatcher2 +[value] Done for function call_dispatcher2 +[value] computing for function access_tab <- main. + Called from tests/value/from_call.i:92. +[value] Recording results for access_tab +[from] Computing for function access_tab +[from] Done for function access_tab +[value] Done for function access_tab +[value] computing for function access_tab <- main. + Called from tests/value/from_call.i:93. +[value] Recording results for access_tab +[from] Computing for function access_tab +[from] Done for function access_tab +[value] Done for function access_tab +[value] computing for function access_tab <- main. + Called from tests/value/from_call.i:94. +[value] Recording results for access_tab +[from] Computing for function access_tab +[from] Done for function access_tab +[value] Done for function access_tab +[value] computing for function unavailable_f <- main. + Called from tests/value/from_call.i:96. +[value] using specification for function unavailable_f +[value] Done for function unavailable_f +[value] Recording results for main +[from] Computing for function main +[from] Done for function main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function access_tab: + __retres ∈ {0} +[value:final-states] Values at end of function dispatcher: + +[value:final-states] Values at end of function g: + __retres ∈ [--..--] +[value:final-states] Values at end of function f: + b ∈ {0} + c ∈ {0} + d ∈ {0} + previous ∈ {{ &b ; &c ; &d }} +[value:final-states] Values at end of function return_A1: + +[value:final-states] Values at end of function return_A2: + +[value:final-states] Values at end of function dispatcher2: + +[value:final-states] Values at end of function call_dispatcher2: + +[value:final-states] Values at end of function call_dispatcher2_0: + +[value:final-states] Values at end of function call_dispatcher2_1: + +[value:final-states] Values at end of function main: + b ∈ {0} + c ∈ {0} + d ∈ {0} + y ∈ [--..--] + z ∈ [--..--] + R1 ∈ {0} + R2 ∈ {0} + R3 ∈ {0} + S1 ∈ {0} + S2 ∈ {0} + S3 ∈ {0} + T0 ∈ {0} + T1 ∈ {0} + T2 ∈ {0} + tab[0..4] ∈ {0} + AR ∈ + {{ garbled mix of &{AA} + (origin: Library function {tests/value/from_call.i:96}) }} + AS ∈ + {{ garbled mix of &{AA} + (origin: Library function {tests/value/from_call.i:96}) }} + previous ∈ {{ &d }} +[from] ====== DISPLAYING CALLWISE DEPENDENCIES ====== +[from] call to g at tests/value/from_call.i:20 (by f): + \result FROM t; w +[from] call to h at tests/value/from_call.i:20 (by f): + \result FROM \nothing +[from] call to return_A1 at tests/value/from_call.i:44 (by dispatcher2): + \result FROM A1 +[from] call to return_A2 at tests/value/from_call.i:44 (by dispatcher2): + \result FROM A2 +[from] call to dispatcher2 at tests/value/from_call.i:59 (by call_dispatcher2): + \result FROM A1; A2; c_0 +[from] call to dispatcher2 at tests/value/from_call.i:54 (by call_dispatcher2_0): + \result FROM A2; c_0 +[from] call to dispatcher2 at tests/value/from_call.i:49 (by call_dispatcher2_1): + \result FROM A1; c_0 +[from] call to f at tests/value/from_call.i:81 (by main): + b FROM a; p; previous + previous FROM p + \result FROM a; t; p; previous +[from] call to f at tests/value/from_call.i:82 (by main): + c FROM b; p; previous + previous FROM p + \result FROM b; t; p; previous +[from] call to f at tests/value/from_call.i:82 (by main): + d FROM c; p; previous + previous FROM p + \result FROM c; t; p; previous +[from] call to dispatcher at tests/value/from_call.i:83 (by main): + \result FROM c_0; y_0 +[from] call to dispatcher at tests/value/from_call.i:84 (by main): + \result FROM c_0; z_0 +[from] call to dispatcher at tests/value/from_call.i:85 (by main): + \result FROM c_0; y_0; z_0 +[from] call to call_dispatcher2_1 at tests/value/from_call.i:86 (by main): + \result FROM A1 +[from] call to call_dispatcher2_0 at tests/value/from_call.i:87 (by main): + \result FROM A2 +[from] call to call_dispatcher2 at tests/value/from_call.i:88 (by main): + \result FROM A1; A2; r +[from] call to access_tab at tests/value/from_call.i:92 (by main): + \result FROM tab[0]; ind +[from] call to access_tab at tests/value/from_call.i:93 (by main): + \result FROM tab[1]; ind +[from] call to access_tab at tests/value/from_call.i:94 (by main): + \result FROM tab[2]; ind +[from] call to unavailable_f at tests/value/from_call.i:96 (by main): + AR FROM At[0..1] + AS FROM Ar[0..1] +[from] entry point: + b FROM a; previous + c FROM a; previous + d FROM a; previous + y FROM a; t; previous + z FROM a; t; previous + R1 FROM A1 + R2 FROM A4 + R3 FROM A4; A5; r + S1 FROM A1 + S2 FROM A2 + S3 FROM A1; A2; r + T0 FROM A1 + T1 FROM A2; A3 + T2 FROM A4 + tab[0] FROM A1 + [1] FROM A2; A3 + [2] FROM A4 + AR FROM At[0..1] + AS FROM Ar[0..1] + previous FROM \nothing +[from] ====== END OF CALLWISE DEPENDENCIES ====== +[users] ====== DISPLAYING USERS ====== + f: g h + dispatcher2: return_A1 return_A2 + call_dispatcher2: return_A1 return_A2 dispatcher2 + call_dispatcher2_0: return_A2 dispatcher2 + call_dispatcher2_1: return_A1 dispatcher2 + main: g h f dispatcher return_A1 return_A2 dispatcher2 call_dispatcher2_1 + call_dispatcher2_0 call_dispatcher2 access_tab unavailable_f + ====== END OF USERS ========== +[inout] Inputs for function access_tab: + tab[0..2] +[inout] Inputs for function dispatcher: + \nothing +[inout] Inputs for function g: + t +[inout] Inputs for function f: + a; b; c; d; x; t; previous +[inout] Inputs for function return_A1: + A1 +[inout] Inputs for function return_A2: + A2 +[inout] Inputs for function dispatcher2: + A1; A2 +[inout] Inputs for function call_dispatcher2: + A1; A2 +[inout] Inputs for function call_dispatcher2_0: + A1; A2 +[inout] Inputs for function call_dispatcher2_1: + A1; A2 +[inout] Inputs for function main: + a; b; c; d; x; t; A1; A2; A3; A4; A5; A6; A7; tab[0..2]; At[0..1]; + Ar[0..1]; previous diff --git a/tests/value/oracle_symblocs/from_call.1.err.oracle b/tests/value/oracle_symblocs/from_call.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/from_call.1.res.oracle b/tests/value/oracle_symblocs/from_call.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..a4d443ad410fcb7e3bc2f55086eddc80e52aaf80 --- /dev/null +++ b/tests/value/oracle_symblocs/from_call.1.res.oracle @@ -0,0 +1,231 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/from_call.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + a ∈ {0} + b ∈ {0} + c ∈ {0} + d ∈ {0} + x ∈ {0} + y ∈ {0} + z ∈ {0} + t ∈ {0} + A1 ∈ {0} + A2 ∈ {0} + A3 ∈ {0} + A4 ∈ {0} + A5 ∈ {0} + A6 ∈ {0} + A7 ∈ {0} + A8 ∈ {0} + R1 ∈ {0} + R2 ∈ {0} + R3 ∈ {0} + S1 ∈ {0} + S2 ∈ {0} + S3 ∈ {0} + T0 ∈ {0} + T1 ∈ {0} + T2 ∈ {0} + tab[0..4] ∈ {0} + AA ∈ {0} + AR ∈ {0} + AS ∈ {0} + At[0] ∈ {{ (int)&AA }} + [1] ∈ {0} + Ar[0] ∈ {{ (int)&AA }} + [1] ∈ {0} + Ap ∈ {{ &At[0] }} + previous ∈ {{ &a }} +[value] computing for function f <- main. + Called from tests/value/from_call.i:81. +[value] computing for function h <- f <- main. + Called from tests/value/from_call.i:20. +tests/value/from_call.i:20:[kernel] warning: Neither code nor specification for function h, generating default assigns from the prototype +[value] using specification for function h +[value] Done for function h +[value] computing for function g <- f <- main. + Called from tests/value/from_call.i:20. +[value] Recording results for g +[value] Done for function g +[value] Recording results for f +[value] Done for function f +[value] computing for function f <- main. + Called from tests/value/from_call.i:82. +[value] computing for function h <- f <- main. + Called from tests/value/from_call.i:20. +[value] Done for function h +[value] computing for function g <- f <- main. + Called from tests/value/from_call.i:20. +[value] Recording results for g +[value] Done for function g +[value] Recording results for f +[value] Done for function f +[value] computing for function f <- main. + Called from tests/value/from_call.i:82. +[value] computing for function h <- f <- main. + Called from tests/value/from_call.i:20. +[value] Done for function h +[value] computing for function g <- f <- main. + Called from tests/value/from_call.i:20. +[value] Recording results for g +[value] Done for function g +[value] Recording results for f +[value] Done for function f +tests/value/from_call.i:82:[value] warning: signed overflow. + assert -2147483648 ≤ tmp+tmp_0; + (tmp from f(& c), tmp_0 from f(& d)) +tests/value/from_call.i:82:[value] warning: signed overflow. + assert tmp+tmp_0 ≤ 2147483647; + (tmp from f(& c), tmp_0 from f(& d)) +[value] computing for function dispatcher <- main. + Called from tests/value/from_call.i:83. +[value] Recording results for dispatcher +[value] Done for function dispatcher +[value] computing for function dispatcher <- main. + Called from tests/value/from_call.i:84. +[value] Recording results for dispatcher +[value] Done for function dispatcher +[value] computing for function dispatcher <- main. + Called from tests/value/from_call.i:85. +[value] Recording results for dispatcher +[value] Done for function dispatcher +[value] computing for function call_dispatcher2_1 <- main. + Called from tests/value/from_call.i:86. +[value] computing for function dispatcher2 <- call_dispatcher2_1 <- main. + Called from tests/value/from_call.i:49. +[value] computing for function return_A1 <- dispatcher2 <- call_dispatcher2_1 <- main. + Called from tests/value/from_call.i:44. +[value] Recording results for return_A1 +[value] Done for function return_A1 +[value] Recording results for dispatcher2 +[value] Done for function dispatcher2 +[value] Recording results for call_dispatcher2_1 +[value] Done for function call_dispatcher2_1 +[value] computing for function call_dispatcher2_0 <- main. + Called from tests/value/from_call.i:87. +[value] computing for function dispatcher2 <- call_dispatcher2_0 <- main. + Called from tests/value/from_call.i:54. +[value] computing for function return_A2 <- dispatcher2 <- call_dispatcher2_0 <- main. + Called from tests/value/from_call.i:44. +[value] Recording results for return_A2 +[value] Done for function return_A2 +[value] Recording results for dispatcher2 +[value] Done for function dispatcher2 +[value] Recording results for call_dispatcher2_0 +[value] Done for function call_dispatcher2_0 +[value] computing for function call_dispatcher2 <- main. + Called from tests/value/from_call.i:88. +[value] computing for function dispatcher2 <- call_dispatcher2 <- main. + Called from tests/value/from_call.i:59. +[value] computing for function return_A1 <- dispatcher2 <- call_dispatcher2 <- main. + Called from tests/value/from_call.i:44. +[value] Recording results for return_A1 +[value] Done for function return_A1 +[value] computing for function return_A2 <- dispatcher2 <- call_dispatcher2 <- main. + Called from tests/value/from_call.i:44. +[value] Recording results for return_A2 +[value] Done for function return_A2 +[value] Recording results for dispatcher2 +[value] Done for function dispatcher2 +[value] Recording results for call_dispatcher2 +[value] Done for function call_dispatcher2 +[value] computing for function access_tab <- main. + Called from tests/value/from_call.i:92. +[value] Recording results for access_tab +[value] Done for function access_tab +[value] computing for function access_tab <- main. + Called from tests/value/from_call.i:93. +[value] Recording results for access_tab +[value] Done for function access_tab +[value] computing for function access_tab <- main. + Called from tests/value/from_call.i:94. +[value] Recording results for access_tab +[value] Done for function access_tab +[value] computing for function unavailable_f <- main. + Called from tests/value/from_call.i:96. +[value] using specification for function unavailable_f +[value] Done for function unavailable_f +[value] Recording results for main +[value] done for function main +[from] Computing for function access_tab +[from] Done for function access_tab +[from] Computing for function dispatcher +[from] Done for function dispatcher +[from] Computing for function g +[from] Done for function g +[from] Computing for function f +[from] Computing for function h <-f +[from] Done for function h +[from] Done for function f +[from] Computing for function return_A1 +[from] Done for function return_A1 +[from] Computing for function return_A2 +[from] Done for function return_A2 +[from] Computing for function dispatcher2 +[from] Done for function dispatcher2 +[from] Computing for function call_dispatcher2 +[from] Done for function call_dispatcher2 +[from] Computing for function call_dispatcher2_0 +[from] Done for function call_dispatcher2_0 +[from] Computing for function call_dispatcher2_1 +[from] Done for function call_dispatcher2_1 +[from] Computing for function main +[from] Computing for function unavailable_f <-main +[from] Done for function unavailable_f +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function access_tab: + \result FROM indirect: ind; direct: tab[0..2] +[from] Function dispatcher: + \result FROM indirect: c_0; direct: y_0; z_0 +[from] Function g: + \result FROM direct: t; w +[from] Function h: + \result FROM \nothing +[from] Function f: + b FROM indirect: p; previous; direct: a; b; c (and SELF) + c FROM indirect: p; previous; direct: a; b; c (and SELF) + d FROM indirect: p; previous; direct: a; b; c (and SELF) + previous FROM direct: p + \result FROM indirect: p; previous; direct: a; b; c; d; t +[from] Function return_A1: + \result FROM direct: A1 +[from] Function return_A2: + \result FROM direct: A2 +[from] Function dispatcher2: + \result FROM indirect: c_0; direct: A1; A2 +[from] Function call_dispatcher2: + \result FROM indirect: r; direct: A1; A2 +[from] Function call_dispatcher2_0: + \result FROM direct: A1; A2 +[from] Function call_dispatcher2_1: + \result FROM direct: A1; A2 +[from] Function unavailable_f: + AR FROM direct: At[0..1] + AS FROM direct: Ar[0..1] +[from] Function main: + b FROM indirect: previous; direct: a; b; c (and SELF) + c FROM indirect: previous; direct: a; b; c (and SELF) + d FROM indirect: previous; direct: a; b; c (and SELF) + y FROM indirect: previous; direct: a; b; c; d; t + z FROM indirect: previous; direct: a; b; c; d; t + R1 FROM direct: A1; A2 + R2 FROM direct: A3; A4 + R3 FROM indirect: r; direct: A4; A5 + S1 FROM direct: A1; A2 + S2 FROM direct: A1; A2 + S3 FROM indirect: r; direct: A1; A2 + T0 FROM direct: A1; A2; A3; A4 + T1 FROM direct: A1; A2; A3; A4 + T2 FROM direct: A1; A2; A3; A4 + tab[0] FROM direct: A1 + [1] FROM direct: A2; A3 + [2] FROM direct: A4 + AR FROM direct: At[0..1] + AS FROM direct: Ar[0..1] + previous FROM \nothing +[from] ====== END OF DEPENDENCIES ====== diff --git a/tests/value/oracle_symblocs/from_global.err.oracle b/tests/value/oracle_symblocs/from_global.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/from_global.res.oracle b/tests/value/oracle_symblocs/from_global.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..fedbb11a970e9f2e67c11c0aca52ca2588c6bee4 --- /dev/null +++ b/tests/value/oracle_symblocs/from_global.res.oracle @@ -0,0 +1,50 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/from_global.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + A ∈ {0} + B ∈ {0} + C ∈ {0} + D ∈ {0} + E ∈ {0} +[value] computing for function f <- main. + Called from tests/value/from_global.i:13. +[value] Recording results for f +[value] Done for function f +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + B ∈ {0} + C ∈ {0} +[value:final-states] Values at end of function main: + A ∈ {0} + B ∈ {0} + C ∈ {0} + __retres ∈ {0} +[from] Computing for function f +[from] Done for function f +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + B FROM A + C FROM x + \result FROM x +[from] Function main: + A FROM D + B FROM D + C FROM E + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + B; C +[inout] Inputs for function f: + A; C +[inout] Out (internal) for function main: + A; B; C; __retres +[inout] Inputs for function main: + A; C; D; E diff --git a/tests/value/oracle_symblocs/from_ind.err.oracle b/tests/value/oracle_symblocs/from_ind.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/from_ind.res.oracle b/tests/value/oracle_symblocs/from_ind.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..6016a0eef251b97fccb876281828babb476e8da2 --- /dev/null +++ b/tests/value/oracle_symblocs/from_ind.res.oracle @@ -0,0 +1,27 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/from_ind.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + a[0..3] ∈ {0} + p ∈ {{ &a[0] }} + r ∈ {0} +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + r ∈ {0} + __retres ∈ {0} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + r FROM indirect: p; direct: a[1] + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + r; __retres +[inout] Inputs for function main: + a[1]; p diff --git a/tests/value/oracle_symblocs/from_pb.0.err.oracle b/tests/value/oracle_symblocs/from_pb.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/from_pb.0.res.oracle b/tests/value/oracle_symblocs/from_pb.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..eeee252095ca6c0392409644a7f7326961cf9a2d --- /dev/null +++ b/tests/value/oracle_symblocs/from_pb.0.res.oracle @@ -0,0 +1,29 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/from_pb.i (no preprocessing) +[value] Analyzing a complete application starting at main0 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + k ∈ {0} + i ∈ {0} + j ∈ {0} + x ∈ {0} + c ∈ {0} + d ∈ {0} + T[0..9] ∈ {0} +[value] Recording results for main0 +[value] done for function main0 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main0: + x ∈ {0} +[from] Computing for function main0 +[from] Done for function main0 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main0: + x FROM k; j +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main0: + x +[inout] Inputs for function main0: + k; j diff --git a/tests/value/oracle_symblocs/from_pb.1.err.oracle b/tests/value/oracle_symblocs/from_pb.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/from_pb.1.res.oracle b/tests/value/oracle_symblocs/from_pb.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..4496ae64e00b53f3bb36ae0124589040a7d1ce61 --- /dev/null +++ b/tests/value/oracle_symblocs/from_pb.1.res.oracle @@ -0,0 +1,29 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/from_pb.i (no preprocessing) +[value] Analyzing a complete application starting at main1 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + k ∈ {0} + i ∈ {0} + j ∈ {0} + x ∈ {0} + c ∈ {0} + d ∈ {0} + T[0..9] ∈ {0} +[value] Recording results for main1 +[value] done for function main1 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main1: + x ∈ {0} +[from] Computing for function main1 +[from] Done for function main1 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main1: + x FROM k; j +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main1: + x +[inout] Inputs for function main1: + k; j diff --git a/tests/value/oracle_symblocs/from_pb.2.err.oracle b/tests/value/oracle_symblocs/from_pb.2.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/from_pb.2.res.oracle b/tests/value/oracle_symblocs/from_pb.2.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..5b9d94492e2cb89740b8347abdb988d697c69c9c --- /dev/null +++ b/tests/value/oracle_symblocs/from_pb.2.res.oracle @@ -0,0 +1,29 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/from_pb.i (no preprocessing) +[value] Analyzing a complete application starting at main2 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + k ∈ {0} + i ∈ {0} + j ∈ {0} + x ∈ {0} + c ∈ {0} + d ∈ {0} + T[0..9] ∈ {0} +[value] Recording results for main2 +[value] done for function main2 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main2: + x ∈ {0} +[from] Computing for function main2 +[from] Done for function main2 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main2: + x FROM k; j +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main2: + x +[inout] Inputs for function main2: + k; j diff --git a/tests/value/oracle_symblocs/from_pb.3.err.oracle b/tests/value/oracle_symblocs/from_pb.3.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/from_pb.3.res.oracle b/tests/value/oracle_symblocs/from_pb.3.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..30a4843c6e2716647fe2ff72635cd0b865feb222 --- /dev/null +++ b/tests/value/oracle_symblocs/from_pb.3.res.oracle @@ -0,0 +1,30 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/from_pb.i (no preprocessing) +[value] Analyzing a complete application starting at main3 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + k ∈ {0} + i ∈ {0} + j ∈ {0} + x ∈ {0} + c ∈ {0} + d ∈ {0} + T[0..9] ∈ {0} +[value] Recording results for main3 +[value] done for function main3 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main3: + T[0..9] ∈ {0} + p ∈ {{ &T + {1} }} +[from] Computing for function main3 +[from] Done for function main3 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main3: + T[1] FROM x; c +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main3: + T[1]; p +[inout] Inputs for function main3: + x; c diff --git a/tests/value/oracle_symblocs/from_pb.4.err.oracle b/tests/value/oracle_symblocs/from_pb.4.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/from_pb.4.res.oracle b/tests/value/oracle_symblocs/from_pb.4.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..95122d216276994143f155e0a55662f9c58edf4e --- /dev/null +++ b/tests/value/oracle_symblocs/from_pb.4.res.oracle @@ -0,0 +1,29 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/from_pb.i (no preprocessing) +[value] Analyzing a complete application starting at main4 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + k ∈ {0} + i ∈ {0} + j ∈ {0} + x ∈ {0} + c ∈ {0} + d ∈ {0} + T[0..9] ∈ {0} +[value] Recording results for main4 +[value] done for function main4 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main4: + T[0..9] ∈ {0} +[from] Computing for function main4 +[from] Done for function main4 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main4: + T[0] FROM k; c +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main4: + T[0] +[inout] Inputs for function main4: + k; c diff --git a/tests/value/oracle_symblocs/from_pb.5.err.oracle b/tests/value/oracle_symblocs/from_pb.5.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/from_pb.5.res.oracle b/tests/value/oracle_symblocs/from_pb.5.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..00ae187f29adb3b217248ed2c385c72ec9bc2d69 --- /dev/null +++ b/tests/value/oracle_symblocs/from_pb.5.res.oracle @@ -0,0 +1,30 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/from_pb.i (no preprocessing) +[value] Analyzing a complete application starting at main4bis +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + k ∈ {0} + i ∈ {0} + j ∈ {0} + x ∈ {0} + c ∈ {0} + d ∈ {0} + T[0..9] ∈ {0} +[value] Recording results for main4bis +[value] done for function main4bis +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main4bis: + T[0..9] ∈ {0} +[from] Computing for function main4bis +[from] Done for function main4bis +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main4bis: + T[0] FROM i; c + [2] FROM j; c +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main4bis: + T{[0]; [2]} +[inout] Inputs for function main4bis: + i; j; c diff --git a/tests/value/oracle_symblocs/from_pb.6.err.oracle b/tests/value/oracle_symblocs/from_pb.6.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/from_pb.6.res.oracle b/tests/value/oracle_symblocs/from_pb.6.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..5f5da01c45786af36d8457e09f8cf1ac7a2c4bb3 --- /dev/null +++ b/tests/value/oracle_symblocs/from_pb.6.res.oracle @@ -0,0 +1,29 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/from_pb.i (no preprocessing) +[value] Analyzing a complete application starting at main5 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + k ∈ {0} + i ∈ {0} + j ∈ {0} + x ∈ {0} + c ∈ {0} + d ∈ {0} + T[0..9] ∈ {0} +[value] Recording results for main5 +[value] done for function main5 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main5: + T[0..9] ∈ {0} +[from] Computing for function main5 +[from] Done for function main5 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main5: + T[0] FROM k; c +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main5: + T[0] +[inout] Inputs for function main5: + k; c diff --git a/tests/value/oracle_symblocs/from_pb.7.err.oracle b/tests/value/oracle_symblocs/from_pb.7.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/from_pb.7.res.oracle b/tests/value/oracle_symblocs/from_pb.7.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..2fc59c7ffbf9d193b5b3a86f59e40f8a8648fe19 --- /dev/null +++ b/tests/value/oracle_symblocs/from_pb.7.res.oracle @@ -0,0 +1,30 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/from_pb.i (no preprocessing) +[value] Analyzing a complete application starting at main5bis +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + k ∈ {0} + i ∈ {0} + j ∈ {0} + x ∈ {0} + c ∈ {0} + d ∈ {0} + T[0..9] ∈ {0} +[value] Recording results for main5bis +[value] done for function main5bis +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main5bis: + T[0..9] ∈ {0} +[from] Computing for function main5bis +[from] Done for function main5bis +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main5bis: + T[0] FROM i; c + [1] FROM j; c +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main5bis: + T[0..1] +[inout] Inputs for function main5bis: + i; j; c diff --git a/tests/value/oracle_symblocs/from_ptr.0.err.oracle b/tests/value/oracle_symblocs/from_ptr.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/from_ptr.0.res.oracle b/tests/value/oracle_symblocs/from_ptr.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..fa6ef20956aaff3956231716078c364d0eda38d4 --- /dev/null +++ b/tests/value/oracle_symblocs/from_ptr.0.res.oracle @@ -0,0 +1,41 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/from_ptr.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + i ∈ {0} + j ∈ {0} + x ∈ {0} + k ∈ {0} + l ∈ {0} + m ∈ {0} + n ∈ {0} + d ∈ {0} + a ∈ {0} + b ∈ {0} + p[0..9][0..9][0..9] ∈ {0} + q ∈ {0} +tests/value/from_ptr.i:17:[value] warning: out of bounds write. assert \valid((int *)i); +tests/value/from_ptr.i:17:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +[value] Recording results for main +[value] done for function main +tests/value/from_ptr.i:17:[value] assertion 'Value,mem_access' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + i ∈ {{ (long)&p[10] }} + d ∈ {0} + q ∈ {{ &b }} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + i FROM \nothing + d FROM b; c + q FROM c +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + i; d; q +[inout] Inputs for function main: + i; a; b; q diff --git a/tests/value/oracle_symblocs/from_ptr.1.err.oracle b/tests/value/oracle_symblocs/from_ptr.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/from_ptr.1.res.oracle b/tests/value/oracle_symblocs/from_ptr.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..2eb1e5b63734ef77ca12dd064b7822a6c8ba206c --- /dev/null +++ b/tests/value/oracle_symblocs/from_ptr.1.res.oracle @@ -0,0 +1,40 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/from_ptr.i (no preprocessing) +[value] Analyzing a complete application starting at main1 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + i ∈ {0} + j ∈ {0} + x ∈ {0} + k ∈ {0} + l ∈ {0} + m ∈ {0} + n ∈ {0} + d ∈ {0} + a ∈ {0} + b ∈ {0} + p[0..9][0..9][0..9] ∈ {0} + q ∈ {0} +[value] Recording results for main1 +[value] done for function main1 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main1: + i ∈ {{ (long)&p }} + d ∈ {0} + p[0..9][0..9][0..9] ∈ {0} + q ∈ {{ &a ; &b }} +[from] Computing for function main1 +[from] Done for function main1 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main1: + i FROM \nothing + d FROM a; b; c + p[0][0][0] FROM a; c (and SELF) + q FROM c +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main1: + i; d; p[0][0][0]; q +[inout] Inputs for function main1: + i; a; b; q diff --git a/tests/value/oracle_symblocs/from_ptr2.err.oracle b/tests/value/oracle_symblocs/from_ptr2.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/from_ptr2.res.oracle b/tests/value/oracle_symblocs/from_ptr2.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..5c8a80a047aa312090fd9d452d1dfac9362123c3 --- /dev/null +++ b/tests/value/oracle_symblocs/from_ptr2.res.oracle @@ -0,0 +1,37 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/from_ptr2.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] computing for function f <- main. + Called from tests/value/from_ptr2.i:7. +[value] Recording results for f +[value] Done for function f +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + __retres ∈ [--..--] +[value:final-states] Values at end of function main: + s ∈ [--..--] +[from] Computing for function f +[from] Done for function f +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + \result FROM ps; s.a +[from] Function main: + \result FROM x +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + __retres +[inout] Inputs for function f: + s.a +[inout] Out (internal) for function main: + s; tmp +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/from_res_2.err.oracle b/tests/value/oracle_symblocs/from_res_2.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/from_res_2.res.oracle b/tests/value/oracle_symblocs/from_res_2.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..09fa3810baf9cc84636f211e55ea6ad7f031ddf3 --- /dev/null +++ b/tests/value/oracle_symblocs/from_res_2.res.oracle @@ -0,0 +1,104 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/from_res_2.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + G ∈ {0} + A ∈ {0} + B ∈ {0} + C ∈ {0} + x1 ∈ {0} + x2 ∈ {0} + x3 ∈ {0} + y1 ∈ {0} + y2 ∈ {0} + y3 ∈ {0} +[value] computing for function f <- main. + Called from tests/value/from_res_2.i:26. +[value] Recording results for f +[value] Done for function f +[value] computing for function g1 <- main. + Called from tests/value/from_res_2.i:30. +[value] Recording results for g1 +[value] Done for function g1 +[value] computing for function g2 <- main. + Called from tests/value/from_res_2.i:34. +[value] Recording results for g2 +[value] Done for function g2 +[value] computing for function g3 <- main. + Called from tests/value/from_res_2.i:38. +[value] Recording results for g3 +[value] Done for function g3 +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + __retres ∈ {3} +[value:final-states] Values at end of function g1: + +[value:final-states] Values at end of function g2: + +[value:final-states] Values at end of function g3: + +[value:final-states] Values at end of function main: + G ∈ {3} + x1 ∈ {0} + x2 ∈ {0} + x3 ∈ {0} + y1 ∈ {0} + y2 ∈ {0} + y3 ∈ {0} + p ∈ {{ &G }} +[from] Computing for function f +[from] Done for function f +[from] Computing for function g1 +[from] Done for function g1 +[from] Computing for function g2 +[from] Done for function g2 +[from] Computing for function g3 +[from] Done for function g3 +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + \result FROM left; right +[from] Function g1: + \result FROM x1 +[from] Function g2: + \result FROM x2 +[from] Function g3: + \result FROM x3 +[from] Function main: + G FROM G + x1.a FROM A + .c FROM C + x2.a FROM A + .b FROM B + x3.b FROM B + .c FROM C + y1 FROM A; C; x1.b + y2 FROM A; B; x2.c + y3 FROM B; C; x3.a +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + __retres +[inout] Inputs for function f: + \nothing +[inout] Out (internal) for function g1: + \nothing +[inout] Inputs for function g1: + x1 +[inout] Out (internal) for function g2: + \nothing +[inout] Inputs for function g2: + x2 +[inout] Out (internal) for function g3: + \nothing +[inout] Inputs for function g3: + x3 +[inout] Out (internal) for function main: + G; x1{.a; .c}; x2{.a; .b}; x3{.b; .c}; y1; y2; y3; p +[inout] Inputs for function main: + G; A; B; C; x1; x2; x3 diff --git a/tests/value/oracle_symblocs/from_termin.err.oracle b/tests/value/oracle_symblocs/from_termin.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/from_termin.res.oracle b/tests/value/oracle_symblocs/from_termin.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..860caeeaee244a2706fcf0dee025e4c184bde6cf --- /dev/null +++ b/tests/value/oracle_symblocs/from_termin.res.oracle @@ -0,0 +1,28 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/from_termin.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + b ∈ {0} + c ∈ {0} + d ∈ {0} + e ∈ {0} +tests/value/from_termin.i:8:[value] entering loop for the first time +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + b ∈ {0} + d ∈ {0} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + b FROM c +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + b; d +[inout] Inputs for function main: + c; e diff --git a/tests/value/oracle_symblocs/fun_ptr.0.err.oracle b/tests/value/oracle_symblocs/fun_ptr.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/fun_ptr.0.res.oracle b/tests/value/oracle_symblocs/fun_ptr.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..a64d4f525b9c22108ab612421154c362b049a830 --- /dev/null +++ b/tests/value/oracle_symblocs/fun_ptr.0.res.oracle @@ -0,0 +1,198 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/fun_ptr.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + t[0] ∈ {{ (long long)&f }} + [1] ∈ {{ (long long)&g }} + R1 ∈ {0} + R2 ∈ {0} + R3 ∈ {0} + v ∈ [--..--] +[value] computing for function test1 <- main. + Called from tests/value/fun_ptr.i:78. +tests/value/fun_ptr.i:28:[value] warning: pointer to function with incompatible type. + assert \valid_function((int (*)(int ))t[nd]); +[value] computing for function f <- test1 <- main. + Called from tests/value/fun_ptr.i:28. +[value] Recording results for f +[value] Done for function f +[value] Recording results for test1 +[value] Done for function test1 +[value] computing for function test2 <- main. + Called from tests/value/fun_ptr.i:79. +tests/value/fun_ptr.i:33:[value] warning: pointer to function with incompatible type. + assert \valid_function((int (*)(int , int ))t[nd]); +[value] computing for function g <- test2 <- main. + Called from tests/value/fun_ptr.i:33. +[value] Recording results for g +[value] Done for function g +[value] computing for function f <- test2 <- main. + Called from tests/value/fun_ptr.i:33. +[value] Recording results for f +[value] Done for function f +[value] Recording results for test2 +[value] Done for function test2 +[value] computing for function test3 <- main. + Called from tests/value/fun_ptr.i:80. +tests/value/fun_ptr.i:38:[value] warning: pointer to function with incompatible type. + assert \valid_function((double (*)(int ))t[nd]); +[value] Recording results for test3 +[value] Done for function test3 +tests/value/fun_ptr.i:83:[value] warning: Function type must match type at call site: assert(function type matches) +tests/value/fun_ptr.i:85:[value] warning: Function type must match type at call site: assert(function type matches) +[value] computing for function h <- main. + Called from tests/value/fun_ptr.i:87. +[value] Recording results for h +[value] Done for function h +[value] computing for function test_benign <- main. + Called from tests/value/fun_ptr.i:89. +tests/value/fun_ptr.i:56:[value] warning: pointer to function with incompatible type. assert \valid_function(p); +[value] computing for function benign <- test_benign <- main. + Called from tests/value/fun_ptr.i:56. +[value] Recording results for benign +[value] Done for function benign +[value] Recording results for test_benign +[value] Done for function test_benign +[value] computing for function test_too_much_benign <- main. + Called from tests/value/fun_ptr.i:90. +tests/value/fun_ptr.i:70:[value] warning: pointer to function with incompatible type. assert \valid_function(p); +[value] computing for function too_much <- test_too_much_benign <- main. + Called from tests/value/fun_ptr.i:70. +[value] Recording results for too_much +[value] Done for function too_much +tests/value/fun_ptr.i:73:[value] warning: pointer to function with incompatible type. assert \valid_function(p); +[value] Recording results for test_too_much_benign +[value] Done for function test_too_much_benign +[value] Recording results for main +[value] done for function main +tests/value/fun_ptr.i:38:[value] assertion 'Value,function_pointer' got final status invalid. +tests/value/fun_ptr.i:73:[value] assertion 'Value,function_pointer' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function benign: + q ∈ {{ &x }} + k ∈ {-2147483648} + x ∈ {-2147483648} +[value:final-states] Values at end of function f: + __retres ∈ {4} +[value:final-states] Values at end of function g: + __retres ∈ {7} +[value:final-states] Values at end of function h: + __retres ∈ {3.} +[value:final-states] Values at end of function test1: + R1 ∈ {4} +[value:final-states] Values at end of function test2: + R2 ∈ {4; 7} +[value:final-states] Values at end of function test3: + NON TERMINATING FUNCTION +[value:final-states] Values at end of function test_benign: + x ∈ {-2147483648} + p ∈ {{ (void (*)(long , short *))&benign }} +[value:final-states] Values at end of function too_much: + j ∈ {1} +[value:final-states] Values at end of function test_too_much_benign: + p ∈ {{ (void (*)(int , int ))&too_much }} +[value:final-states] Values at end of function main: + R1 ∈ {4} + R2 ∈ {4; 7} + R3 ∈ {0} + ph ∈ {{ &h }} + __retres ∈ {0} +[from] Computing for function benign +[from] Done for function benign +[from] Computing for function f +[from] Done for function f +[from] Computing for function g +[from] Done for function g +[from] Computing for function h +[from] Done for function h +[from] Computing for function test1 +[from] Done for function test1 +[from] Computing for function test2 +tests/value/fun_ptr.i:33:[from] warning: variadic call detected. Using only 1 argument(s). +[from] Done for function test2 +[from] Computing for function test3 +[from] Non-terminating function test3 (no dependencies) +[from] Done for function test3 +[from] Computing for function test_benign +[from] Done for function test_benign +[from] Computing for function too_much +[from] Done for function too_much +[from] Computing for function test_too_much_benign +tests/value/fun_ptr.i:70:[from] warning: variadic call detected. Using only 1 argument(s). +[from] Done for function test_too_much_benign +[from] Computing for function main +tests/value/fun_ptr.i:85:[from] warning: variadic call detected. Using only 0 argument(s). +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function benign: + x FROM j; p +[from] Function f: + \result FROM x +[from] Function g: + \result FROM x; y +[from] Function h: + \result FROM a; b +[from] Function test1: + R1 FROM t[0..1]; nd +[from] Function test2: + R2 FROM t[0..1]; nd +[from] Function test3: + NON TERMINATING - NO EFFECTS +[from] Function test_benign: + NO EFFECTS +[from] Function too_much: + NO EFFECTS +[from] Function test_too_much_benign: + NO EFFECTS +[from] Function main: + R1 FROM t[0..1]; v + R2 FROM t[0..1]; v + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function benign: + q; k; x +[inout] Inputs for function benign: + \nothing +[inout] Out (internal) for function f: + __retres +[inout] Inputs for function f: + \nothing +[inout] Out (internal) for function g: + __retres +[inout] Inputs for function g: + \nothing +[inout] Out (internal) for function h: + __retres +[inout] Inputs for function h: + \nothing +[inout] Out (internal) for function test1: + R1 +[inout] Inputs for function test1: + t[0..1] +[inout] Out (internal) for function test2: + R2 +[inout] Inputs for function test2: + t[0..1] +[inout] Out (internal) for function test3: + R3 +[inout] Inputs for function test3: + t[0..1] +[inout] Out (internal) for function test_benign: + x; p +[inout] Inputs for function test_benign: + \nothing +[inout] Out (internal) for function too_much: + j +[inout] Inputs for function too_much: + \nothing +[inout] Out (internal) for function test_too_much_benign: + p +[inout] Inputs for function test_too_much_benign: + v +[inout] Out (internal) for function main: + R1; R2; R3; ph; __retres +[inout] Inputs for function main: + t[0..1]; v diff --git a/tests/value/oracle_symblocs/fun_ptr.1.err.oracle b/tests/value/oracle_symblocs/fun_ptr.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/fun_ptr.1.res.oracle b/tests/value/oracle_symblocs/fun_ptr.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..b818469156c0c5a5b43543e234c1b6b9a40d3375 --- /dev/null +++ b/tests/value/oracle_symblocs/fun_ptr.1.res.oracle @@ -0,0 +1,198 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/fun_ptr.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + t[0] ∈ {{ (__int64)&f }} + [1] ∈ {{ (__int64)&g }} + R1 ∈ {0} + R2 ∈ {0} + R3 ∈ {0} + v ∈ [--..--] +[value] computing for function test1 <- main. + Called from tests/value/fun_ptr.i:78. +tests/value/fun_ptr.i:28:[value] warning: pointer to function with incompatible type. + assert \valid_function((int (*)(int ))t[nd]); +[value] computing for function f <- test1 <- main. + Called from tests/value/fun_ptr.i:28. +[value] Recording results for f +[value] Done for function f +[value] Recording results for test1 +[value] Done for function test1 +[value] computing for function test2 <- main. + Called from tests/value/fun_ptr.i:79. +tests/value/fun_ptr.i:33:[value] warning: pointer to function with incompatible type. + assert \valid_function((int (*)(int , int ))t[nd]); +[value] computing for function g <- test2 <- main. + Called from tests/value/fun_ptr.i:33. +[value] Recording results for g +[value] Done for function g +[value] computing for function f <- test2 <- main. + Called from tests/value/fun_ptr.i:33. +[value] Recording results for f +[value] Done for function f +[value] Recording results for test2 +[value] Done for function test2 +[value] computing for function test3 <- main. + Called from tests/value/fun_ptr.i:80. +tests/value/fun_ptr.i:38:[value] warning: pointer to function with incompatible type. + assert \valid_function((double (*)(int ))t[nd]); +[value] Recording results for test3 +[value] Done for function test3 +tests/value/fun_ptr.i:83:[value] warning: Function type must match type at call site: assert(function type matches) +tests/value/fun_ptr.i:85:[value] warning: Function type must match type at call site: assert(function type matches) +[value] computing for function h <- main. + Called from tests/value/fun_ptr.i:87. +[value] Recording results for h +[value] Done for function h +[value] computing for function test_benign <- main. + Called from tests/value/fun_ptr.i:89. +tests/value/fun_ptr.i:56:[value] warning: pointer to function with incompatible type. assert \valid_function(p); +[value] computing for function benign <- test_benign <- main. + Called from tests/value/fun_ptr.i:56. +[value] Recording results for benign +[value] Done for function benign +[value] Recording results for test_benign +[value] Done for function test_benign +[value] computing for function test_too_much_benign <- main. + Called from tests/value/fun_ptr.i:90. +tests/value/fun_ptr.i:70:[value] warning: pointer to function with incompatible type. assert \valid_function(p); +[value] computing for function too_much <- test_too_much_benign <- main. + Called from tests/value/fun_ptr.i:70. +[value] Recording results for too_much +[value] Done for function too_much +tests/value/fun_ptr.i:73:[value] warning: pointer to function with incompatible type. assert \valid_function(p); +[value] Recording results for test_too_much_benign +[value] Done for function test_too_much_benign +[value] Recording results for main +[value] done for function main +tests/value/fun_ptr.i:38:[value] assertion 'Value,function_pointer' got final status invalid. +tests/value/fun_ptr.i:73:[value] assertion 'Value,function_pointer' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function benign: + q ∈ {{ &x }} + k ∈ {-2147483648} + x ∈ {-2147483648} +[value:final-states] Values at end of function f: + __retres ∈ {4} +[value:final-states] Values at end of function g: + __retres ∈ {7} +[value:final-states] Values at end of function h: + __retres ∈ {3.} +[value:final-states] Values at end of function test1: + R1 ∈ {4} +[value:final-states] Values at end of function test2: + R2 ∈ {4; 7} +[value:final-states] Values at end of function test3: + NON TERMINATING FUNCTION +[value:final-states] Values at end of function test_benign: + x ∈ {-2147483648} + p ∈ {{ (void (*)(long , short *))&benign }} +[value:final-states] Values at end of function too_much: + j ∈ {1} +[value:final-states] Values at end of function test_too_much_benign: + p ∈ {{ (void (*)(int , int ))&too_much }} +[value:final-states] Values at end of function main: + R1 ∈ {4} + R2 ∈ {4; 7} + R3 ∈ {0} + ph ∈ {{ &h }} + __retres ∈ {0} +[from] Computing for function benign +[from] Done for function benign +[from] Computing for function f +[from] Done for function f +[from] Computing for function g +[from] Done for function g +[from] Computing for function h +[from] Done for function h +[from] Computing for function test1 +[from] Done for function test1 +[from] Computing for function test2 +tests/value/fun_ptr.i:33:[from] warning: variadic call detected. Using only 1 argument(s). +[from] Done for function test2 +[from] Computing for function test3 +[from] Non-terminating function test3 (no dependencies) +[from] Done for function test3 +[from] Computing for function test_benign +[from] Done for function test_benign +[from] Computing for function too_much +[from] Done for function too_much +[from] Computing for function test_too_much_benign +tests/value/fun_ptr.i:70:[from] warning: variadic call detected. Using only 1 argument(s). +[from] Done for function test_too_much_benign +[from] Computing for function main +tests/value/fun_ptr.i:85:[from] warning: variadic call detected. Using only 0 argument(s). +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function benign: + x FROM j; p +[from] Function f: + \result FROM x +[from] Function g: + \result FROM x; y +[from] Function h: + \result FROM a; b +[from] Function test1: + R1 FROM t[0..1]; nd +[from] Function test2: + R2 FROM t[0..1]; nd +[from] Function test3: + NON TERMINATING - NO EFFECTS +[from] Function test_benign: + NO EFFECTS +[from] Function too_much: + NO EFFECTS +[from] Function test_too_much_benign: + NO EFFECTS +[from] Function main: + R1 FROM t[0..1]; v + R2 FROM t[0..1]; v + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function benign: + q; k; x +[inout] Inputs for function benign: + \nothing +[inout] Out (internal) for function f: + __retres +[inout] Inputs for function f: + \nothing +[inout] Out (internal) for function g: + __retres +[inout] Inputs for function g: + \nothing +[inout] Out (internal) for function h: + __retres +[inout] Inputs for function h: + \nothing +[inout] Out (internal) for function test1: + R1 +[inout] Inputs for function test1: + t[0..1] +[inout] Out (internal) for function test2: + R2 +[inout] Inputs for function test2: + t[0..1] +[inout] Out (internal) for function test3: + R3 +[inout] Inputs for function test3: + t[0..1] +[inout] Out (internal) for function test_benign: + x; p +[inout] Inputs for function test_benign: + \nothing +[inout] Out (internal) for function too_much: + j +[inout] Inputs for function too_much: + \nothing +[inout] Out (internal) for function test_too_much_benign: + p +[inout] Inputs for function test_too_much_benign: + v +[inout] Out (internal) for function main: + R1; R2; R3; ph; __retres +[inout] Inputs for function main: + t[0..1]; v diff --git a/tests/value/oracle_symblocs/function_return_serial_casts.err.oracle b/tests/value/oracle_symblocs/function_return_serial_casts.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/function_return_serial_casts.res.oracle b/tests/value/oracle_symblocs/function_return_serial_casts.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..151bd1d0a0ba4af0925fa6e2c23cddfc6209c862 --- /dev/null +++ b/tests/value/oracle_symblocs/function_return_serial_casts.res.oracle @@ -0,0 +1,60 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/function_return_serial_casts.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + x ∈ {-10} + y ∈ {0} + z ∈ {0} + t ∈ {0} +[value] computing for function f <- main. + Called from tests/value/function_return_serial_casts.i:17. +[value] Recording results for f +[value] Done for function f +[value] computing for function g <- main. + Called from tests/value/function_return_serial_casts.i:18. +[value] Recording results for g +[value] Done for function g +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + __retres ∈ {65526} +[value:final-states] Values at end of function g: + l ∈ {-10} +[value:final-states] Values at end of function main: + y ∈ {65526} + z ∈ {65526} + t ∈ {65526} + __retres ∈ {0} +[from] Computing for function f +[from] Done for function f +[from] Computing for function g +[from] Done for function g +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + \result FROM x +[from] Function g: + \result FROM x +[from] Function main: + y FROM x + z FROM x + t FROM x + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + __retres +[inout] Inputs for function f: + x +[inout] Out (internal) for function g: + l +[inout] Inputs for function g: + x +[inout] Out (internal) for function main: + y; z; t; __retres +[inout] Inputs for function main: + x diff --git a/tests/value/oracle_symblocs/g1.err.oracle b/tests/value/oracle_symblocs/g1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/g1.res.oracle b/tests/value/oracle_symblocs/g1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..632e1b01ac03816cb4415724a70854c4e7cfef21 --- /dev/null +++ b/tests/value/oracle_symblocs/g1.res.oracle @@ -0,0 +1,23 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/g1.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + G ∈ {1} +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + \nothing +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/garbled_init.err.oracle b/tests/value/oracle_symblocs/garbled_init.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/garbled_init.res.oracle b/tests/value/oracle_symblocs/garbled_init.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..0377915aa6bfe8ce3d8f9b7c0f3e0c0edc10c7b7 --- /dev/null +++ b/tests/value/oracle_symblocs/garbled_init.res.oracle @@ -0,0 +1,24 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/garbled_init.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + PTR ∈ {0} + G ∈ {{ &PTR + {-4278190080} }} +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + PTR ∈ {1} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + PTR FROM G +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + PTR +[inout] Inputs for function main: + G diff --git a/tests/value/oracle_symblocs/ghost.err.oracle b/tests/value/oracle_symblocs/ghost.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/ghost.res.oracle b/tests/value/oracle_symblocs/ghost.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..abcee6b7671843cb4600b07e332d14cf452a375c --- /dev/null +++ b/tests/value/oracle_symblocs/ghost.res.oracle @@ -0,0 +1,31 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/ghost.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + G ∈ {0} + GHOST ∈ {0} + H ∈ {0} +tests/value/ghost.i:16:[value] entering loop for the first time +tests/value/ghost.i:17:[value] warning: signed overflow. assert G+1 ≤ 2147483647; +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + G ∈ [0..2147483647] + GHOST ∈ {0} + i ∈ {11} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + G FROM \nothing + GHOST FROM \nothing + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + G; GHOST; i; j +[inout] Inputs for function main: + G diff --git a/tests/value/oracle_symblocs/global_bug.err.oracle b/tests/value/oracle_symblocs/global_bug.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/global_bug.res.oracle b/tests/value/oracle_symblocs/global_bug.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..ad036c9eabb81f6455c26fcd06f1ec52a60e17bc --- /dev/null +++ b/tests/value/oracle_symblocs/global_bug.res.oracle @@ -0,0 +1,38 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/global_bug.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +tests/value/global_bug.i:6:[value] warning: invalid RHS operand for shift. assert 0 ≤ 63 < 32; +tests/value/global_bug.i:7:[value] Evaluation of initializer '99 << 63' failed +[value] Initial state computed +[value:initial-state] Values of globals at initialization + NOT ACCESSIBLE +[value] Value analysis not started because globals initialization is not computable. +[value] ====== VALUES COMPUTED ====== +[from] Computing for function main +[from] Non-terminating function main (no dependencies) +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NON TERMINATING - NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + \nothing +[inout] Inputs for function main: + \nothing +[report] Computing properties status... + +-------------------------------------------------------------------------------- +--- Properties of Function 'main' +-------------------------------------------------------------------------------- + +[ Bug ] Assertion 'Value,shift' (file tests/value/global_bug.i, line 7) + by Value. + +-------------------------------------------------------------------------------- +--- Status Report Summary +-------------------------------------------------------------------------------- + 1 Bugs found + 1 Total +-------------------------------------------------------------------------------- diff --git a/tests/value/oracle_symblocs/goto.err.oracle b/tests/value/oracle_symblocs/goto.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/goto.res.oracle b/tests/value/oracle_symblocs/goto.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e584f305debcaaa503677da645d11f16cc3e3145 --- /dev/null +++ b/tests/value/oracle_symblocs/goto.res.oracle @@ -0,0 +1,39 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/goto.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] computing for function stop <- main. + Called from tests/value/goto.i:10. +[value] Recording results for stop +[value] Done for function stop +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function stop: + NON TERMINATING FUNCTION +[value:final-states] Values at end of function main: + c ∈ [--..--] + __retres ∈ {0} +[from] Computing for function stop +[from] Non-terminating function stop (no dependencies) +[from] Done for function stop +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function stop: + NON TERMINATING - NO EFFECTS +[from] Function main: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function stop: + \nothing +[inout] Inputs for function stop: + \nothing +[inout] Out (internal) for function main: + c; __retres +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/if.0.err.oracle b/tests/value/oracle_symblocs/if.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/if.0.res.oracle b/tests/value/oracle_symblocs/if.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..2b75dee3434d08b9ff6992defc49d2535e599d83 --- /dev/null +++ b/tests/value/oracle_symblocs/if.0.res.oracle @@ -0,0 +1,30 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/if.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + G ∈ {0} + H ∈ {0} + J ∈ {0} + p ∈ {0} + q ∈ {0} + t[0..99] ∈ {0} +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + p ∈ {{ &t[0] }} + q ∈ {{ &t[0] }} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + p FROM G + q FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + p; q +[inout] Inputs for function main: + G; p diff --git a/tests/value/oracle_symblocs/if.1.err.oracle b/tests/value/oracle_symblocs/if.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/if.1.res.oracle b/tests/value/oracle_symblocs/if.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..a54cd31ab7ba191a1e6244eb95eb5036e8887f11 --- /dev/null +++ b/tests/value/oracle_symblocs/if.1.res.oracle @@ -0,0 +1,26 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/if.i (no preprocessing) +[value] Analyzing a complete application starting at main6 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + G ∈ {0} + H ∈ {0} + J ∈ {0} + p ∈ {0} + q ∈ {0} + t[0..99] ∈ {0} +[value] Recording results for main6 +[value] done for function main6 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main6: + G ∈ {0} + __retres ∈ {1} +[from] Computing for function main6 +[from] Done for function main6 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main6: + G FROM \nothing + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== diff --git a/tests/value/oracle_symblocs/if2.err.oracle b/tests/value/oracle_symblocs/if2.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/if2.res.oracle b/tests/value/oracle_symblocs/if2.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..ec60801979f0baebd0f28bd787179ebb9788e310 --- /dev/null +++ b/tests/value/oracle_symblocs/if2.res.oracle @@ -0,0 +1,75 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/if2.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + G2 ∈ {0} + G3 ∈ {75} + G4 ∈ {0} + R ∈ {0} + v ∈ [--..--] + G1 ∈ {0} +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + G3 ∈ {0} + R ∈ {4; 10; 11} + b ∈ {1} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + G3 FROM G4 + R FROM R; v +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + G3; R; b +[inout] Inputs for function main: + G4; R; v; G1 +/* Generated by Frama-C */ +enum __anonenum_T1_t_1 { + E1 = 0, + E2 = 0x0001, + E3 = 0x0002, + E4 = 0x0004, + E5 = 0x0008, + E6 = 0x0010, + E7 = 0x0020 +}; +typedef enum __anonenum_T1_t_1 T1_t; +enum Bool { + FALSE = 0, + TRUE = 2 +}; +static T1_t G1; +T1_t G2 = E1; +int G3 = 75; +int G4; +int R; +int volatile v; +void main(void) +{ + enum Bool b; + if ((unsigned int)E6 == G1) G2 = G1; + if (0 == G4) G3 = G4; + if (v) + if (E1) R = 5; else R = 6; + if (v) + if (! E1) R = 6; else R = 5; + if (v) + if (E5) R = 7; else R = 5; + if (v) + if (! E5) R = 5; else R = 7; + b = FALSE; + if (! b) R += ! b; + b = TRUE; + if (b) R = (int)((unsigned int)R + b); + b = (enum Bool)1; + if (b) R = (int)((unsigned int)R + b); + return; +} + + diff --git a/tests/value/oracle_symblocs/ilevel.err.oracle b/tests/value/oracle_symblocs/ilevel.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/ilevel.res.oracle b/tests/value/oracle_symblocs/ilevel.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..d2d5295e70a824d60ffd3633368c7cce9e41903c --- /dev/null +++ b/tests/value/oracle_symblocs/ilevel.res.oracle @@ -0,0 +1,104 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/ilevel.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + v ∈ [--..--] + i ∈ {0} + j ∈ {0} + k ∈ {0} + l ∈ {0} +tests/value/ilevel.i:9:[value] entering loop for the first time +tests/value/ilevel.i:12:[value] entering loop for the first time +tests/value/ilevel.i:20:[value] warning: assertion got status unknown. +tests/value/ilevel.i:22:[value] warning: assertion got status unknown. +[value] Called Frama_C_show_each([0..9]) +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + i ∈ {0; 1; 2; 3; 4; 5; 6; 7} + j ∈ [0..16] + k ∈ [0..15] + l ∈ [0..9] + __retres ∈ [0..47] +[slicing] slicing requests in progress... +[slicing] making slicing project 'Slicing'... +[slicing] interpreting slicing requests from the command line... +[pdg] computing for function main +[from] Computing for function Frama_C_show_each +[from] Done for function Frama_C_show_each +[pdg] done for function main +[slicing] applying all slicing requests... +[slicing] applying 0 actions... +[slicing] applying all slicing requests... +[slicing] applying 1 actions... +[slicing] applying actions: 1/1... +[slicing] exporting project to 'Slicing export'... +[slicing] applying all slicing requests... +[slicing] applying 0 actions... +[sparecode] remove unused global declarations from project 'Slicing export tmp' +[sparecode] removed unused global declarations in new project 'Slicing export' +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + v ∈ [--..--] + i ∈ {0} + j ∈ {0} + k ∈ {0} + l ∈ {0} +tests/value/ilevel.i:9:[value] entering loop for the first time +tests/value/ilevel.i:12:[value] entering loop for the first time +tests/value/ilevel.i:26:[value] warning: signed overflow. assert (int)((int)(i+j)+k)+l ≤ 2147483647; +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + i ∈ {0; 1; 2; 3; 4; 5; 6; 7} + j ∈ [0..16] + k ∈ {0; 1; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15} + l ∈ [--..--] + __retres ∈ [--..--] +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + v ∈ [--..--] + i ∈ {0} + j ∈ {0} + k ∈ {0} + l ∈ {0} +[value] Called Frama_C_show_each({0; 1; 2; 3; 4; 6; 7; 8; 9}) +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + i ∈ {0; 1; 2; 3; 4; 5; 6; 7} + j ∈ {0; 1; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16} + k ∈ {0; 1; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15} + l ∈ {0; 1; 2; 3; 4; 6; 7; 8; 9} + __retres ∈ [0..47] +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + v ∈ [--..--] + i ∈ {0} + j ∈ {0} + k ∈ {0} + l ∈ {0} +[value] Called Frama_C_show_each({0; 1; 2; 3; 4; 6; 7; 8; 9}) +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + i ∈ {0; 1; 2; 3; 4; 5; 6; 7} + j ∈ {0; 1; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16} + k ∈ {0; 1; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15} + l ∈ {0; 1; 2; 3; 4; 6; 7; 8; 9} + __retres ∈ + {0; 1; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16; 17; 18; + 19; 20; 21; 22; 23; 24; 25; 26; 27; 28; 29; 30; 31; 32; 33; 34; + 35; 36; 37; 38; 39; 40; 41; 42; 43; 44; 45; 46; 47} diff --git a/tests/value/oracle_symblocs/implies.err.oracle b/tests/value/oracle_symblocs/implies.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/implies.res.oracle b/tests/value/oracle_symblocs/implies.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..352368bc57ef8dd334a80f913883539ba03616c1 --- /dev/null +++ b/tests/value/oracle_symblocs/implies.res.oracle @@ -0,0 +1,28 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/implies.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + A ∈ {0} + B ∈ {0} +tests/value/implies.i:6:[value] warning: assertion got status unknown. +tests/value/implies.i:8:[value] warning: assertion got status unknown. +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + A ∈ {1} + __retres ∈ {1} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + A FROM d + \result FROM c +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + A; __retres +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/imprecise_invalid_write.err.oracle b/tests/value/oracle_symblocs/imprecise_invalid_write.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/imprecise_invalid_write.res.oracle b/tests/value/oracle_symblocs/imprecise_invalid_write.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..692195bdcb5a0359781e8e44b1b5b026149a83f4 --- /dev/null +++ b/tests/value/oracle_symblocs/imprecise_invalid_write.res.oracle @@ -0,0 +1,87 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/imprecise_invalid_write.i (no preprocessing) +tests/value/imprecise_invalid_write.i:5:[kernel] warning: Body of function main1 falls-through. Adding a return statement +tests/value/imprecise_invalid_write.i:10:[kernel] warning: Body of function main2 falls-through. Adding a return statement +tests/value/imprecise_invalid_write.i:17:[kernel] warning: Body of function main3 falls-through. Adding a return statement +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + x ∈ {0} + s ∈ {{ "abc" }} +[value] computing for function main1 <- main. + Called from tests/value/imprecise_invalid_write.i:22. +tests/value/imprecise_invalid_write.i:5:[value] warning: out of bounds write. assert \valid((int *)c); +tests/value/imprecise_invalid_write.i:5:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +[value] Recording results for main1 +[value] Done for function main1 +[value] computing for function main2 <- main. + Called from tests/value/imprecise_invalid_write.i:25. +tests/value/imprecise_invalid_write.i:9:[value] Assigning imprecise value to p. + The imprecision originates from Arithmetic + {tests/value/imprecise_invalid_write.i:9} +tests/value/imprecise_invalid_write.i:10:[value] warning: out of bounds write. assert \valid(p); +tests/value/imprecise_invalid_write.i:10:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +[value] Recording results for main2 +[value] Done for function main2 +[value] computing for function main3 <- main. + Called from tests/value/imprecise_invalid_write.i:28. +tests/value/imprecise_invalid_write.i:16:[value] Assigning imprecise value to p. + The imprecision originates from Arithmetic + {tests/value/imprecise_invalid_write.i:16} +tests/value/imprecise_invalid_write.i:17:[value] warning: out of bounds write. assert \valid(p); +tests/value/imprecise_invalid_write.i:17:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +[value] Recording results for main3 +[value] Done for function main3 +[value] Recording results for main +[value] done for function main +tests/value/imprecise_invalid_write.i:5:[value] assertion 'Value,mem_access' got final status invalid. +tests/value/imprecise_invalid_write.i:10:[value] assertion 'Value,mem_access' got final status invalid. +tests/value/imprecise_invalid_write.i:17:[value] assertion 'Value,mem_access' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main1: + NON TERMINATING FUNCTION +[value:final-states] Values at end of function main2: + NON TERMINATING FUNCTION +[value:final-states] Values at end of function main3: + NON TERMINATING FUNCTION +[value:final-states] Values at end of function main: + +[from] Computing for function main1 +[from] Non-terminating function main1 (no dependencies) +[from] Done for function main1 +[from] Computing for function main2 +[from] Non-terminating function main2 (no dependencies) +[from] Done for function main2 +[from] Computing for function main3 +[from] Non-terminating function main3 (no dependencies) +[from] Done for function main3 +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main1: + NON TERMINATING - NO EFFECTS +[from] Function main2: + NON TERMINATING - NO EFFECTS +[from] Function main3: + NON TERMINATING - NO EFFECTS +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main1: + \nothing +[inout] Inputs for function main1: + x +[inout] Out (internal) for function main2: + p +[inout] Inputs for function main2: + \nothing +[inout] Out (internal) for function main3: + p +[inout] Inputs for function main3: + s +[inout] Out (internal) for function main: + \nothing +[inout] Inputs for function main: + x; s diff --git a/tests/value/oracle_symblocs/incorrect_reduce_expr.err.oracle b/tests/value/oracle_symblocs/incorrect_reduce_expr.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/incorrect_reduce_expr.res.oracle b/tests/value/oracle_symblocs/incorrect_reduce_expr.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..0051978ac0da09799a01222bc6f02f3c90bc6303 --- /dev/null +++ b/tests/value/oracle_symblocs/incorrect_reduce_expr.res.oracle @@ -0,0 +1,17 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/incorrect_reduce_expr.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + NULL[rbits 256 to 295] ∈ [--..--] + t[0..4] ∈ {0} + p ∈ {0} + x ∈ {0} +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + NULL[rbits 256 to 295] ∈ [--..--] + p ∈ {32; 36} + x ∈ {13} diff --git a/tests/value/oracle_symblocs/ineq.err.oracle b/tests/value/oracle_symblocs/ineq.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/ineq.res.oracle b/tests/value/oracle_symblocs/ineq.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e4f71c9b5664f2499d9f75a3a868303cd4c52eec --- /dev/null +++ b/tests/value/oracle_symblocs/ineq.res.oracle @@ -0,0 +1,58 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/ineq.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + G[0..9] ∈ {0} + g ∈ {0} + h ∈ {0} + i ∈ {0} + j ∈ {0} + k ∈ {1} + l ∈ {1} + m ∈ {-1} + n ∈ {-1} +[value] computing for function any_int <- main. + Called from tests/value/ineq.c:6. +tests/value/ineq.c:6:[kernel] warning: Neither code nor specification for function any_int, generating default assigns from the prototype +[value] using specification for function any_int +[value] Done for function any_int +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + G[0] ∈ {0; 7} + [1..9] ∈ {0} + g ∈ [0..2147483647] + h ∈ [-2147483648..0] + i ∈ [0..2147483647] + j ∈ [-2147483648..0] + k ∈ [1..2147483647] + l ∈ [1..2147483647] + m ∈ [-2147483648..-1] + n ∈ [-2147483648..-1] + x ∈ [--..--] +[from] Computing for function main +[from] Computing for function any_int <-main +[from] Done for function any_int +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function any_int: + \result FROM \nothing +[from] Function main: + G[0] FROM \nothing + g FROM \nothing (and SELF) + h FROM \nothing (and SELF) + i FROM \nothing (and SELF) + j FROM \nothing (and SELF) + k FROM \nothing (and SELF) + l FROM \nothing (and SELF) + m FROM \nothing (and SELF) + n FROM \nothing (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + G[0]; g; h; i; j; k; l; m; n; x +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/infinite.err.oracle b/tests/value/oracle_symblocs/infinite.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/infinite.res.oracle b/tests/value/oracle_symblocs/infinite.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..91163289d7a0672beb4263fe170e1f8f4b3d53b2 --- /dev/null +++ b/tests/value/oracle_symblocs/infinite.res.oracle @@ -0,0 +1,34 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/infinite.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + G ∈ {0} +tests/value/infinite.i:6:[value] entering loop for the first time +[value] computing for function pause <- main. + Called from tests/value/infinite.i:9. +tests/value/infinite.i:9:[kernel] warning: Neither code nor specification for function pause, generating default assigns from the prototype +[value] using specification for function pause +[value] Done for function pause +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + NON TERMINATING FUNCTION +[from] Computing for function main +[from] Computing for function pause <-main +[from] Done for function pause +[from] Non-terminating function main (no dependencies) +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function pause: + NO EFFECTS +[from] Function main: + NON TERMINATING - NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + G +[inout] Inputs for function main: + G diff --git a/tests/value/oracle_symblocs/init.0.err.oracle b/tests/value/oracle_symblocs/init.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/init.0.res.oracle b/tests/value/oracle_symblocs/init.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..aed4056b01701ef8c800ced85946b8935f66ea16 --- /dev/null +++ b/tests/value/oracle_symblocs/init.0.res.oracle @@ -0,0 +1,53 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/init.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + S[0] ∈ {49} + [1] ∈ {50} + [2] ∈ {51} + [3] ∈ {52} + [4] ∈ {53} + v1 ∈ {0} + TS[0].x ∈ {1} + [0].y ∈ {3} + [0].name[0] ∈ {175304776} + {[0].name[1..9]; [1..28]} ∈ {0} + v2 ∈ {0} + C ∈ {0} + PC[0] ∈ {108} + [1] ∈ {107} + [2] ∈ {106} + [3] ∈ {108} + [4] ∈ {106} + [5] ∈ {0} + T2[0].x2 ∈ {1} + [0].y2 ∈ {2} + [0].[bits 48 to 63] ∈ {0} + [0].ptr ∈ {{ &PC[0] }} + [1].x2 ∈ {1} + [1].y2 ∈ {2} + {[1]{.ptr; .[bits 48 to 63]}; [2..49]} ∈ {0} + T[0] ∈ {1} + [1..9] ∈ {0} + U[0] ∈ {3} + [1] ∈ {4} + x ∈ {8} + y ∈ {40} +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + __retres ∈ {8} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + __retres +[inout] Inputs for function main: + U[0..1] diff --git a/tests/value/oracle_symblocs/init.1.err.oracle b/tests/value/oracle_symblocs/init.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/init.1.res.oracle b/tests/value/oracle_symblocs/init.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..07e61cb7008a6c55d304bedbe539e6366be14981 --- /dev/null +++ b/tests/value/oracle_symblocs/init.1.res.oracle @@ -0,0 +1,153 @@ +[value] warning: This option is deprecated. Use -val-initialization-padding-globals instead +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/init.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + S[0] ∈ {49} + [1] ∈ {50} + [2] ∈ {51} + [3] ∈ {52} + [4] ∈ {53} + v1 ∈ {0} + TS[0].x ∈ {1} + [0].y ∈ {3} + [0].name[0] ∈ {175304776} + {[0].name[1..9]; [1..28]} ∈ {0} + v2{.x2; .y2} ∈ {0} + .[bits 48 to 63] ∈ UNINITIALIZED + .ptr ∈ {0} + C ∈ {0} + PC[0] ∈ {108} + [1] ∈ {107} + [2] ∈ {106} + [3] ∈ {108} + [4] ∈ {106} + [5] ∈ {0} + T2[0].x2 ∈ {1} + [0].y2 ∈ {2} + [0].[bits 48 to 63] ∈ UNINITIALIZED + [0].ptr ∈ {{ &PC[0] }} + [1].x2 ∈ {1} + [1].y2 ∈ {2} + [1].[bits 48 to 63] ∈ UNINITIALIZED + {[1].ptr; [2]{.x2; .y2}} ∈ {0} + [2].[bits 48 to 63] ∈ UNINITIALIZED + {[2].ptr; [3]{.x2; .y2}} ∈ {0} + [3].[bits 48 to 63] ∈ UNINITIALIZED + {[3].ptr; [4]{.x2; .y2}} ∈ {0} + [4].[bits 48 to 63] ∈ UNINITIALIZED + {[4].ptr; [5]{.x2; .y2}} ∈ {0} + [5].[bits 48 to 63] ∈ UNINITIALIZED + {[5].ptr; [6]{.x2; .y2}} ∈ {0} + [6].[bits 48 to 63] ∈ UNINITIALIZED + {[6].ptr; [7]{.x2; .y2}} ∈ {0} + [7].[bits 48 to 63] ∈ UNINITIALIZED + {[7].ptr; [8]{.x2; .y2}} ∈ {0} + [8].[bits 48 to 63] ∈ UNINITIALIZED + {[8].ptr; [9]{.x2; .y2}} ∈ {0} + [9].[bits 48 to 63] ∈ UNINITIALIZED + {[9].ptr; [10]{.x2; .y2}} ∈ {0} + [10].[bits 48 to 63] ∈ UNINITIALIZED + {[10].ptr; [11]{.x2; .y2}} ∈ {0} + [11].[bits 48 to 63] ∈ UNINITIALIZED + {[11].ptr; [12]{.x2; .y2}} ∈ {0} + [12].[bits 48 to 63] ∈ UNINITIALIZED + {[12].ptr; [13]{.x2; .y2}} ∈ {0} + [13].[bits 48 to 63] ∈ UNINITIALIZED + {[13].ptr; [14]{.x2; .y2}} ∈ {0} + [14].[bits 48 to 63] ∈ UNINITIALIZED + {[14].ptr; [15]{.x2; .y2}} ∈ {0} + [15].[bits 48 to 63] ∈ UNINITIALIZED + {[15].ptr; [16]{.x2; .y2}} ∈ {0} + [16].[bits 48 to 63] ∈ UNINITIALIZED + {[16].ptr; [17]{.x2; .y2}} ∈ {0} + [17].[bits 48 to 63] ∈ UNINITIALIZED + {[17].ptr; [18]{.x2; .y2}} ∈ {0} + [18].[bits 48 to 63] ∈ UNINITIALIZED + {[18].ptr; [19]{.x2; .y2}} ∈ {0} + [19].[bits 48 to 63] ∈ UNINITIALIZED + {[19].ptr; [20]{.x2; .y2}} ∈ {0} + [20].[bits 48 to 63] ∈ UNINITIALIZED + {[20].ptr; [21]{.x2; .y2}} ∈ {0} + [21].[bits 48 to 63] ∈ UNINITIALIZED + {[21].ptr; [22]{.x2; .y2}} ∈ {0} + [22].[bits 48 to 63] ∈ UNINITIALIZED + {[22].ptr; [23]{.x2; .y2}} ∈ {0} + [23].[bits 48 to 63] ∈ UNINITIALIZED + {[23].ptr; [24]{.x2; .y2}} ∈ {0} + [24].[bits 48 to 63] ∈ UNINITIALIZED + {[24].ptr; [25]{.x2; .y2}} ∈ {0} + [25].[bits 48 to 63] ∈ UNINITIALIZED + {[25].ptr; [26]{.x2; .y2}} ∈ {0} + [26].[bits 48 to 63] ∈ UNINITIALIZED + {[26].ptr; [27]{.x2; .y2}} ∈ {0} + [27].[bits 48 to 63] ∈ UNINITIALIZED + {[27].ptr; [28]{.x2; .y2}} ∈ {0} + [28].[bits 48 to 63] ∈ UNINITIALIZED + {[28].ptr; [29]{.x2; .y2}} ∈ {0} + [29].[bits 48 to 63] ∈ UNINITIALIZED + {[29].ptr; [30]{.x2; .y2}} ∈ {0} + [30].[bits 48 to 63] ∈ UNINITIALIZED + {[30].ptr; [31]{.x2; .y2}} ∈ {0} + [31].[bits 48 to 63] ∈ UNINITIALIZED + {[31].ptr; [32]{.x2; .y2}} ∈ {0} + [32].[bits 48 to 63] ∈ UNINITIALIZED + {[32].ptr; [33]{.x2; .y2}} ∈ {0} + [33].[bits 48 to 63] ∈ UNINITIALIZED + {[33].ptr; [34]{.x2; .y2}} ∈ {0} + [34].[bits 48 to 63] ∈ UNINITIALIZED + {[34].ptr; [35]{.x2; .y2}} ∈ {0} + [35].[bits 48 to 63] ∈ UNINITIALIZED + {[35].ptr; [36]{.x2; .y2}} ∈ {0} + [36].[bits 48 to 63] ∈ UNINITIALIZED + {[36].ptr; [37]{.x2; .y2}} ∈ {0} + [37].[bits 48 to 63] ∈ UNINITIALIZED + {[37].ptr; [38]{.x2; .y2}} ∈ {0} + [38].[bits 48 to 63] ∈ UNINITIALIZED + {[38].ptr; [39]{.x2; .y2}} ∈ {0} + [39].[bits 48 to 63] ∈ UNINITIALIZED + {[39].ptr; [40]{.x2; .y2}} ∈ {0} + [40].[bits 48 to 63] ∈ UNINITIALIZED + {[40].ptr; [41]{.x2; .y2}} ∈ {0} + [41].[bits 48 to 63] ∈ UNINITIALIZED + {[41].ptr; [42]{.x2; .y2}} ∈ {0} + [42].[bits 48 to 63] ∈ UNINITIALIZED + {[42].ptr; [43]{.x2; .y2}} ∈ {0} + [43].[bits 48 to 63] ∈ UNINITIALIZED + {[43].ptr; [44]{.x2; .y2}} ∈ {0} + [44].[bits 48 to 63] ∈ UNINITIALIZED + {[44].ptr; [45]{.x2; .y2}} ∈ {0} + [45].[bits 48 to 63] ∈ UNINITIALIZED + {[45].ptr; [46]{.x2; .y2}} ∈ {0} + [46].[bits 48 to 63] ∈ UNINITIALIZED + {[46].ptr; [47]{.x2; .y2}} ∈ {0} + [47].[bits 48 to 63] ∈ UNINITIALIZED + {[47].ptr; [48]{.x2; .y2}} ∈ {0} + [48].[bits 48 to 63] ∈ UNINITIALIZED + {[48].ptr; [49]{.x2; .y2}} ∈ {0} + [49].[bits 48 to 63] ∈ UNINITIALIZED + [49].ptr ∈ {0} + T[0] ∈ {1} + [1..9] ∈ {0} + U[0] ∈ {3} + [1] ∈ {4} + x ∈ {8} + y ∈ {40} +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + __retres ∈ {8} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + __retres +[inout] Inputs for function main: + U[0..1] diff --git a/tests/value/oracle_symblocs/init_const_guard.err.oracle b/tests/value/oracle_symblocs/init_const_guard.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/init_const_guard.res.oracle b/tests/value/oracle_symblocs/init_const_guard.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..0c0b1411d7c1e440dd16736b522617e7b1497aaf --- /dev/null +++ b/tests/value/oracle_symblocs/init_const_guard.res.oracle @@ -0,0 +1,275 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/init_const_guard.i (no preprocessing) +[value] Analyzing a complete application starting at f +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + x ∈ {0} + q ∈ {{ &x }} + p ∈ {{ &x }} + v ∈ [--..--] +tests/value/init_const_guard.i:14:[value] function f: postcondition 'Const' got status valid. +tests/value/init_const_guard.i:15:[value] function f: postcondition 'Pointed_Valid' got status valid. +tests/value/init_const_guard.i:16:[value] function f: postcondition 'Q_ReadOnly' got status valid. +tests/value/init_const_guard.i:17:[value] function f: postcondition 'Q_NotWrite' got status valid. +[value] Recording results for f +[value] done for function f +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + __retres ∈ {0} +[from] Computing for function f +[from] Done for function f +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + __retres +[inout] Inputs for function f: + \nothing +[report] Computing properties status... + +-------------------------------------------------------------------------------- +--- Properties of Function 'f' +-------------------------------------------------------------------------------- + +[ Valid ] Post-condition 'Const' + by Value. +[ Valid ] Post-condition 'Pointed_Valid' + by Value. +[ Valid ] Post-condition 'Q_ReadOnly' + by Value. +[ Valid ] Post-condition 'Q_NotWrite' + by Value. +[ Valid ] Default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'g' +-------------------------------------------------------------------------------- + +[ Dead ] Assertion 'Read' (file tests/value/init_const_guard.i, line 32) + Locally valid, but unreachable. + By Value because: + - Unreachable program point (file tests/value/init_const_guard.i, line 32) +[ Dead ] Assertion 'Guard_against_Const' (file tests/value/init_const_guard.i, line 33) + Locally valid, but unreachable. + By Value because: + - Unreachable program point (file tests/value/init_const_guard.i, line 33) +[Unreachable] Unreachable program point (file tests/value/init_const_guard.i, line 32) + by Value. +[Unreachable] Unreachable program point (file tests/value/init_const_guard.i, line 33) + by Value. + +-------------------------------------------------------------------------------- +--- Status Report Summary +-------------------------------------------------------------------------------- + 5 Completely validated + 2 Dead properties + 2 Unreachable + 9 Total +-------------------------------------------------------------------------------- +[value] Analyzing a complete application starting at g +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + x ∈ {0} + q ∈ {{ &x }} + p ∈ {{ &x }} + v ∈ [--..--] +tests/value/init_const_guard.i:32:[value] assertion 'Read' got status valid. +tests/value/init_const_guard.i:33:[value] assertion 'Guard_against_Const' got status valid. +tests/value/init_const_guard.i:35:[value] warning: out of bounds write. assert \valid(p); +tests/value/init_const_guard.i:35:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +tests/value/init_const_guard.i:27:[value] function g: postcondition 'P_not_Const' got status valid. +[value] Recording results for g +[value] done for function g +tests/value/init_const_guard.i:35:[value] assertion 'Value,mem_access' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function g: + p ∈ {{ &x }} +[from] Computing for function g +[from] Done for function g +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function g: + x FROM v (and SELF) + p FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function g: + p +[inout] Inputs for function g: + p; v +[report] Computing properties status... + +-------------------------------------------------------------------------------- +--- Properties of Function 'f' +-------------------------------------------------------------------------------- + +[ Partial ] Default behavior + By Frama-C kernel, with pending: + - Post-condition 'Const' + - Post-condition 'Pointed_Valid' + - Post-condition 'Q_ReadOnly' + - Post-condition 'Q_NotWrite' + +-------------------------------------------------------------------------------- +--- Properties of Function 'g' +-------------------------------------------------------------------------------- + +[ Valid ] Post-condition 'P_not_Const' + by Value. +[ Valid ] Assertion 'Read' (file tests/value/init_const_guard.i, line 32) + by Value. +[ Valid ] Assertion 'Guard_against_Const' (file tests/value/init_const_guard.i, line 33) + by Value. +[ Alarm ] Assertion 'Value,mem_access' (file tests/value/init_const_guard.i, line 35) + By Value, with pending: + - Unreachable instruction (file tests/value/init_const_guard.i, line 35) +[ Valid ] Default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Status Report Summary +-------------------------------------------------------------------------------- + 4 Completely validated + 1 Locally validated + 1 Alarm emitted + 6 Total +-------------------------------------------------------------------------------- +[value] Analyzing an incomplete application starting at f +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + x ∈ [--..--] + q ∈ {{ &x }} + p ∈ {{ NULL ; &S_p[0] }} + v ∈ [--..--] + S_p[0..1] ∈ [--..--] +[value] Recording results for f +[value] done for function f +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + __retres ∈ {0} +[from] Computing for function f +[from] Done for function f +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + __retres +[inout] Inputs for function f: + \nothing +[report] Computing properties status... + +-------------------------------------------------------------------------------- +--- Properties of Function 'f' +-------------------------------------------------------------------------------- + +[ Valid ] Post-condition 'Const' + by Value. +[ Valid ] Post-condition 'Pointed_Valid' + by Value. +[ Valid ] Post-condition 'Q_ReadOnly' + by Value. +[ Valid ] Post-condition 'Q_NotWrite' + by Value. +[ Valid ] Default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'g' +-------------------------------------------------------------------------------- + +[ Dead ] Assertion 'Read' (file tests/value/init_const_guard.i, line 32) + Locally valid, but unreachable. + By Value because: + - Unreachable program point (file tests/value/init_const_guard.i, line 32) +[ Dead ] Assertion 'Guard_against_Const' (file tests/value/init_const_guard.i, line 33) + Locally valid, but unreachable. + By Value because: + - Unreachable program point (file tests/value/init_const_guard.i, line 33) +[ Partial ] Default behavior + By Frama-C kernel, with pending: + - Post-condition 'P_not_Const' +[Unreachable] Unreachable program point (file tests/value/init_const_guard.i, line 32) + by Value. +[Unreachable] Unreachable program point (file tests/value/init_const_guard.i, line 33) + by Value. + +-------------------------------------------------------------------------------- +--- Status Report Summary +-------------------------------------------------------------------------------- + 5 Completely validated + 1 Locally validated + 2 Dead properties + 2 Unreachable + 10 Total +-------------------------------------------------------------------------------- +[value] Analyzing an incomplete application starting at g +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + x ∈ [--..--] + q ∈ {{ &x }} + p ∈ {{ NULL ; &S_p[0] }} + v ∈ [--..--] + S_p[0..1] ∈ [--..--] +tests/value/init_const_guard.i:35:[value] warning: out of bounds write. assert \valid(p); +[value] Recording results for g +[value] done for function g +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function g: + p ∈ {{ &x }} +[from] Computing for function g +[from] Done for function g +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function g: + x FROM v (and SELF) + p FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function g: + p +[inout] Inputs for function g: + p; v +[report] Computing properties status... + +-------------------------------------------------------------------------------- +--- Properties of Function 'f' +-------------------------------------------------------------------------------- + +[ Partial ] Default behavior + By Frama-C kernel, with pending: + - Post-condition 'Const' + - Post-condition 'Pointed_Valid' + - Post-condition 'Q_ReadOnly' + - Post-condition 'Q_NotWrite' + +-------------------------------------------------------------------------------- +--- Properties of Function 'g' +-------------------------------------------------------------------------------- + +[ Valid ] Post-condition 'P_not_Const' + by Value. +[ Valid ] Assertion 'Read' (file tests/value/init_const_guard.i, line 32) + by Value. +[ Valid ] Assertion 'Guard_against_Const' (file tests/value/init_const_guard.i, line 33) + by Value. +[ Alarm ] Assertion 'Value,mem_access' (file tests/value/init_const_guard.i, line 35) + By Value, with pending: + - Unreachable instruction (file tests/value/init_const_guard.i, line 35) +[ Valid ] Default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Status Report Summary +-------------------------------------------------------------------------------- + 4 Completely validated + 1 Locally validated + 1 Alarm emitted + 6 Total +-------------------------------------------------------------------------------- diff --git a/tests/value/oracle_symblocs/initialized.err.oracle b/tests/value/oracle_symblocs/initialized.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/initialized.res.oracle b/tests/value/oracle_symblocs/initialized.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..a5d79b83b8bc55e39ce1568b0b698fe3a45ec4fe --- /dev/null +++ b/tests/value/oracle_symblocs/initialized.res.oracle @@ -0,0 +1,337 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/initialized.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + Frama_C_entropy_source ∈ [--..--] + b1 ∈ [--..--] + b2 ∈ [--..--] + b3 ∈ [--..--] + b4 ∈ [--..--] + b5 ∈ [--..--] + b6 ∈ [--..--] + rand ∈ [--..--] + v1 ∈ {0} + i6 ∈ [--..--] +[value] computing for function g1 <- main. + Called from tests/value/initialized.c:153. +tests/value/initialized.c:19:[value] entering loop for the first time +tests/value/initialized.c:21:[value] warning: assertion got status unknown. +tests/value/initialized.c:22:[value] warning: assertion got status unknown. +[value] computing for function Frama_C_interval <- g1 <- main. + Called from tests/value/initialized.c:24. +[value] using specification for function Frama_C_interval +share/libc/__fc_builtin.h:50:[value] function Frama_C_interval: precondition got status valid. +[value] Done for function Frama_C_interval +[value] computing for function Frama_C_interval <- g1 <- main. + Called from tests/value/initialized.c:25. +[value] Done for function Frama_C_interval +tests/value/initialized.c:26:[value] warning: assertion got status unknown. +[value] computing for function Frama_C_interval <- g1 <- main. + Called from tests/value/initialized.c:28. +[value] Done for function Frama_C_interval +[value] computing for function Frama_C_interval <- g1 <- main. + Called from tests/value/initialized.c:29. +[value] Done for function Frama_C_interval +tests/value/initialized.c:30:[value] warning: assertion got status unknown. +[value] computing for function Frama_C_interval <- g1 <- main. + Called from tests/value/initialized.c:32. +[value] Done for function Frama_C_interval +[value] computing for function Frama_C_interval <- g1 <- main. + Called from tests/value/initialized.c:33. +[value] Done for function Frama_C_interval +tests/value/initialized.c:34:[value] assertion got status valid. +[value] computing for function Frama_C_interval <- g1 <- main. + Called from tests/value/initialized.c:36. +[value] Done for function Frama_C_interval +[value] computing for function Frama_C_interval <- g1 <- main. + Called from tests/value/initialized.c:37. +[value] Done for function Frama_C_interval +tests/value/initialized.c:38:[value] warning: assertion got status unknown. +[value] Recording results for g1 +[value] Done for function g1 +[value] computing for function g2 <- main. + Called from tests/value/initialized.c:154. +tests/value/initialized.c:50:[value] warning: signed overflow. assert -2147483648 ≤ (int)(&b4)+(int)(&b4); +tests/value/initialized.c:50:[value] warning: signed overflow. assert (int)(&b4)+(int)(&b4) ≤ 2147483647; +tests/value/initialized.c:50:[value] Assigning imprecise value to t[6]. + The imprecision originates from Arithmetic {tests/value/initialized.c:50} +tests/value/initialized.c:51:[value] Assigning imprecise value to t[7]. + The imprecision originates from Arithmetic {tests/value/initialized.c:50} +[value] DUMPING STATE of file tests/value/initialized.c line 63 + Frama_C_entropy_source ∈ [--..--] + b1 ∈ [--..--] + b2 ∈ [--..--] + b3 ∈ [--..--] + b4 ∈ [--..--] + b5 ∈ [--..--] + b6 ∈ [--..--] + rand ∈ [--..--] + t[0..1] ∈ {0x11223344} or UNINITIALIZED + [2..3] ∈ {0x55667788} or UNINITIALIZED + [4..5] ∈ {0x12345678; 0x23456789} or UNINITIALIZED + [6..7] ∈ + {{ garbled mix of &{b4} + (origin: Arithmetic {tests/value/initialized.c:50}) }} or UNINITIALIZED + [8..9] ∈ {1; 2} or UNINITIALIZED + [10][bits 0 to 23] ∈ {0} or UNINITIALIZED + {[10][bits 24 to 31]#; [11][bits 0 to 23]#} ∈ + {0x11111111} or UNINITIALIZED + {[11][bits 24 to 31]; [12][bits 0 to 23]} ∈ {0} or UNINITIALIZED + {[12][bits 24 to 31]#; [13][bits 0 to 23]#} ∈ + {0x11111111; 0x22222222} or UNINITIALIZED + [13][bits 24 to 31] ∈ {0} or UNINITIALIZED + p_0 ∈ UNINITIALIZED + v1 ∈ {0} + i6 ∈ [--..--] + __retres ∈ UNINITIALIZED + =END OF DUMP== +tests/value/initialized.c:66:[value] warning: assertion got status unknown. +[value] DUMPING STATE of file tests/value/initialized.c line 68 + Frama_C_entropy_source ∈ [--..--] + b1 ∈ [--..--] + b2 ∈ [--..--] + b3 ∈ [--..--] + b4 ∈ [--..--] + b5 ∈ [--..--] + b6 ∈ [--..--] + rand ∈ [--..--] + t{[0]; [1][bits 0 to 23]#} ∈ + {0x11223344} or UNINITIALIZED repeated %32, bits 0 to 55 + [1][bits 24 to 31]# ∈ {0x11223344}%32, bits 24 to 31 + [2][bits 0 to 23]# ∈ {0x55667788}%32, bits 0 to 23 + [bits 88 to 127]# ∈ + {0x55667788} or UNINITIALIZED repeated %32, bits 24 to 63 + [4..5] ∈ {0x12345678; 0x23456789} or UNINITIALIZED + [6..7] ∈ + {{ garbled mix of &{b4} + (origin: Arithmetic {tests/value/initialized.c:50}) }} or UNINITIALIZED + [8..9] ∈ {1; 2} or UNINITIALIZED + [10][bits 0 to 23] ∈ {0} or UNINITIALIZED + {[10][bits 24 to 31]#; [11][bits 0 to 23]#} ∈ + {0x11111111} or UNINITIALIZED + {[11][bits 24 to 31]; [12][bits 0 to 23]} ∈ {0} or UNINITIALIZED + {[12][bits 24 to 31]#; [13][bits 0 to 23]#} ∈ + {0x11111111; 0x22222222} or UNINITIALIZED + [13][bits 24 to 31] ∈ {0} or UNINITIALIZED + p_0 ∈ {{ &t + {7} }} + v1 ∈ {0} + i6 ∈ [--..--] + __retres ∈ UNINITIALIZED + =END OF DUMP== +[value] Called Frama_C_show_each([bits 0 to 7]# ∈ {0x11223344}%32, bits 24 to 31 + [bits 8 to 31]# ∈ {0x55667788}%32, bits 0 to 23 + This amounts to: {0x66778811}) +tests/value/initialized.c:72:[value] warning: assertion got status unknown. +tests/value/initialized.c:74:[value] warning: assertion got status unknown. +tests/value/initialized.c:76:[value] warning: assertion got status unknown. +tests/value/initialized.c:78:[value] warning: assertion got status unknown. +tests/value/initialized.c:80:[value] warning: assertion got status unknown. +[value] Recording results for g2 +[value] Done for function g2 +[value] computing for function g3 <- main. + Called from tests/value/initialized.c:155. +tests/value/initialized.c:89:[value] warning: assertion got status unknown. +tests/value/initialized.c:93:[value] warning: accessing uninitialized left-value. assert \initialized(&r2); +tests/value/initialized.c:96:[value] warning: accessing uninitialized left-value. assert \initialized(&x3); +[value] computing for function f <- g3 <- main. + Called from tests/value/initialized.c:98. +tests/value/initialized.c:11:[value] entering loop for the first time +tests/value/initialized.c:8:[value] warning: function f: postcondition got status unknown. +[value] Recording results for f +[value] Done for function f +[value] computing for function f <- g3 <- main. + Called from tests/value/initialized.c:99. +[value] Recording results for f +[value] Done for function f +[value] Recording results for g3 +[value] Done for function g3 +[value] computing for function g4 <- main. + Called from tests/value/initialized.c:156. +tests/value/initialized.c:104:[value] warning: accessing uninitialized left-value. assert \initialized(&y); +[value] Recording results for g4 +[value] Done for function g4 +[value] computing for function g5 <- main. + Called from tests/value/initialized.c:157. +[value] computing for function wrong_assigns <- g5 <- main. + Called from tests/value/initialized.c:127. +[value] using specification for function wrong_assigns +tests/value/initialized.c:114:[value] warning: function wrong_assigns: this postcondition evaluates to false in this + context. If it is valid, either a precondition was not verified for this + call, or some assigns/from clauses are incomplete (or incorrect). +[value] Done for function wrong_assigns +tests/value/initialized.c:130:[value] assertion got status valid. +tests/value/initialized.c:131:[value] assertion got status valid. +tests/value/initialized.c:133:[value] warning: assertion got status unknown. +[value] Recording results for g5 +[value] Done for function g5 +[value] computing for function g6 <- main. + Called from tests/value/initialized.c:158. +tests/value/initialized.c:143:[value] warning: assertion got status unknown. +tests/value/initialized.c:144:[value] warning: assertion got status unknown. +tests/value/initialized.c:145:[value] warning: assertion got status unknown. +tests/value/initialized.c:146:[value] assertion got status valid. +tests/value/initialized.c:147:[value] warning: assertion got status unknown. +tests/value/initialized.c:148:[value] assertion got status valid. +[value] Recording results for g6 +[value] Done for function g6 +[value] Recording results for main +[value] done for function main +tests/value/initialized.c:93:[value] assertion 'Value,initialisation' got final status invalid. +tests/value/initialized.c:104:[value] assertion 'Value,initialisation' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + t1[0] ∈ UNINITIALIZED + [1..2] ∈ {1; 2} or UNINITIALIZED + [3..4] ∈ UNINITIALIZED + t2[0] ∈ UNINITIALIZED + [1..248] ∈ [1..248] or UNINITIALIZED + [249] ∈ UNINITIALIZED +[value:final-states] Values at end of function g1: + Frama_C_entropy_source ∈ [--..--] + t1[0..19] ∈ {1} + t2[0..3] ∈ {2} or UNINITIALIZED + [4..19] ∈ {2} + t3[0..5] ∈ {3} or UNINITIALIZED + [6..12] ∈ {3} + [13..19] ∈ {3} or UNINITIALIZED + t4[0..6] ∈ {4} or UNINITIALIZED + [7] ∈ {4} + [8..19] ∈ {4} or UNINITIALIZED + t5[0..19] ∈ {5} or UNINITIALIZED + t6[0..19] ∈ {6} or UNINITIALIZED + i ∈ {7; 8; 9} + j ∈ {4; 5; 6; 7} +[value:final-states] Values at end of function g2: + t{[0]; [1][bits 0 to 23]#} ∈ + {0x11223344} or UNINITIALIZED repeated %32, bits 0 to 55 + [1][bits 24 to 31]# ∈ {0x11223344}%32, bits 24 to 31 + [2][bits 0 to 23]# ∈ {0x55667788}%32, bits 0 to 23 + [bits 88 to 119]# ∈ + {0x55667788} or UNINITIALIZED repeated %32, bits 24 to 55 + [3][bits 24 to 31]# ∈ {0x55667788}%32, bits 24 to 31 + [4..5] ∈ {0x12345678; 0x23456789} or UNINITIALIZED + [6][bits 0 to 23] ∈ + {{ garbled mix of &{b4} + (origin: Arithmetic {tests/value/initialized.c:50}) }} + {[6][bits 24 to 31]; [7]} ∈ + {{ garbled mix of &{b4} + (origin: Arithmetic {tests/value/initialized.c:50}) }} or UNINITIALIZED + [8] ∈ {1; 2} or UNINITIALIZED + [9] ∈ {1; 2} + [10][bits 0 to 23] ∈ {0} or UNINITIALIZED + [10][bits 24 to 31]# ∈ {0x11111111} or UNINITIALIZED%32, bits 0 to 7 + [11][bits 0 to 23]# ∈ {0x11111111}%32, bits 8 to 31 + [11][bits 24 to 31] ∈ {0} + [12][bits 0 to 23] ∈ {0} or UNINITIALIZED + {[12][bits 24 to 31]#; [13][bits 0 to 23]#} ∈ + {0x11111111; 0x22222222} or UNINITIALIZED + [13][bits 24 to 31] ∈ {0} + p_0 ∈ {{ &t + {7} }} +[value:final-states] Values at end of function g3: + r1 ∈ {2} + x1 ∈ {1} + x2 ∈ UNINITIALIZED + x3 ∈ {1} + r3 ∈ {2} + t1[0] ∈ UNINITIALIZED + [1..2] ∈ {1; 2} + [3..4] ∈ UNINITIALIZED + t2[0] ∈ UNINITIALIZED + [1..248] ∈ [1..248] + [249] ∈ UNINITIALIZED +[value:final-states] Values at end of function g4: + NON TERMINATING FUNCTION +[value:final-states] Values at end of function g6: + i6 ∈ UNINITIALIZED +[value:final-states] Values at end of function g5: + v ∈ UNINITIALIZED + p ∈ {{ &v1 ; &v2 }} +[value:final-states] Values at end of function main: + Frama_C_entropy_source ∈ [--..--] + i6 ∈ UNINITIALIZED + __retres ∈ {0} +[from] Computing for function f +[from] Done for function f +[from] Computing for function g1 +[from] Computing for function Frama_C_interval <-g1 +[from] Done for function Frama_C_interval +[from] Done for function g1 +[from] Computing for function g2 +[from] Computing for function Frama_C_dump_each <-g2 +[from] Done for function Frama_C_dump_each +[from] Done for function g2 +[from] Computing for function g3 +[from] Done for function g3 +[from] Computing for function g4 +[from] Non-terminating function g4 (no dependencies) +[from] Done for function g4 +[from] Computing for function g6 +[from] Done for function g6 +[from] Computing for function g5 +[from] Computing for function wrong_assigns <-g5 +[from] Done for function wrong_assigns +[from] Done for function g5 +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function Frama_C_interval: + Frama_C_entropy_source FROM Frama_C_entropy_source (and SELF) + \result FROM Frama_C_entropy_source; min; max +[from] Function f: + t1[1..4] FROM m; t; n (and SELF) + t2[1..248] FROM m; t; n (and SELF) +[from] Function g1: + Frama_C_entropy_source FROM Frama_C_entropy_source (and SELF) +[from] Function g2: + NO EFFECTS +[from] Function g3: + NO EFFECTS +[from] Function g4: + NON TERMINATING - NO EFFECTS +[from] Function g6: + i6 FROM rand (and SELF) +[from] Function wrong_assigns: + v{.a; .b} FROM \nothing +[from] Function g5: + NO EFFECTS +[from] Function main: + Frama_C_entropy_source FROM Frama_C_entropy_source (and SELF) + i6 FROM rand (and SELF) + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + i; t1[1..4]; t2[1..248] +[inout] Inputs for function f: + \nothing +[inout] Out (internal) for function g1: + Frama_C_entropy_source; t1[0..19]; t2[0..19]; t3[0..19]; t4[0..19]; + t5[0..19]; t6[0..19]; i; j; i_0 +[inout] Inputs for function g1: + Frama_C_entropy_source; rand +[inout] Out (internal) for function g2: + t[0..13]; p; p_0 +[inout] Inputs for function g2: + b4; b5 +[inout] Out (internal) for function g3: + r1; x1; x2; x3; r3; t1[1..2]; t2[1..248] +[inout] Inputs for function g3: + b1; b2; b3; b6 +[inout] Out (internal) for function g4: + x +[inout] Inputs for function g4: + \nothing +[inout] Out (internal) for function g6: + i6 +[inout] Inputs for function g6: + rand +[inout] Out (internal) for function g5: + v{.a; .b}; p; tmp +[inout] Inputs for function g5: + rand +[inout] Out (internal) for function main: + Frama_C_entropy_source; i6; __retres +[inout] Inputs for function main: + Frama_C_entropy_source; b1; b2; b3; b4; b5; b6; rand diff --git a/tests/value/oracle_symblocs/initialized_copy.0.err.oracle b/tests/value/oracle_symblocs/initialized_copy.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/initialized_copy.0.res.oracle b/tests/value/oracle_symblocs/initialized_copy.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..12359e3a53addee04890cc6c2b7f4a57f1abd0b9 --- /dev/null +++ b/tests/value/oracle_symblocs/initialized_copy.0.res.oracle @@ -0,0 +1,173 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/initialized_copy.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + w[0..9] ∈ {0} + v ∈ [--..--] +tests/value/initialized_copy.i:29:[value] warning: accessing uninitialized left-value. assert \initialized(&b); +tests/value/initialized_copy.i:37:[value] warning: accessing uninitialized left-value. assert \initialized(&b_0); +[value] DUMPING STATE of file tests/value/initialized_copy.i line 38 + w[0..9] ∈ {0} + v ∈ [--..--] + b_0 ∈ {1} + a_0 ∈ {1} + __retres ∈ UNINITIALIZED + =END OF DUMP== +tests/value/initialized_copy.i:47:[value] warning: accessing uninitialized left-value. assert \initialized(&c); +tests/value/initialized_copy.i:64:[value] warning: accessing uninitialized left-value. assert \initialized(&c_0); +[value] DUMPING STATE of file tests/value/initialized_copy.i line 65 + w[0..9] ∈ {0} + v ∈ [--..--] + c_0 ∈ {67305985} + p_0 ∈ {{ &c_0 + {3} }} + a_2 ∈ {67305985} + __retres ∈ UNINITIALIZED + =END OF DUMP== +[value] Called Frama_C_show_each(.c ∈ {1} + .[bits 8 to 31] ∈ UNINITIALIZED + .i ∈ {5}) +[value] Called Frama_C_show_each({{ }}) +[value] Called Frama_C_show_each(.i1 ∈ {1} + .i2 ∈ UNINITIALIZED) +tests/value/initialized_copy.i:90:[value] warning: assertion got status unknown. +tests/value/initialized_copy.i:92:[value] warning: accessing uninitialized left-value. assert \initialized(&v_0[i]); +tests/value/initialized_copy.i:98:[value] warning: assertion got status unknown. +tests/value/initialized_copy.i:101:[value] warning: accessing uninitialized left-value. assert \initialized(&v_1[i_0]); +[value] DUMPING STATE of file tests/value/initialized_copy.i line 102 + w[0..9] ∈ {0} + v ∈ [--..--] + i_0 ∈ [0..9] + t_0[0..9] ∈ {1} or UNINITIALIZED + v_1[0] ∈ UNINITIALIZED + [1] ∈ {1} + [2..9] ∈ UNINITIALIZED + __retres ∈ UNINITIALIZED + =END OF DUMP== +tests/value/initialized_copy.i:108:[value] warning: assertion got status unknown. +tests/value/initialized_copy.i:111:[value] warning: accessing uninitialized left-value. assert \initialized(&v_2[i_1]); +[value] DUMPING STATE of file tests/value/initialized_copy.i line 112 + w[0..9] ∈ {0; 12} + v ∈ [--..--] + i_1 ∈ [0..9] + v_2[0] ∈ UNINITIALIZED + [1] ∈ {12} + [2..9] ∈ UNINITIALIZED + __retres ∈ UNINITIALIZED + =END OF DUMP== +tests/value/initialized_copy.i:117:[value] warning: accessing uninitialized left-value. assert \initialized(&a_3); +tests/value/initialized_copy.i:124:[value] warning: accessing uninitialized left-value. assert \initialized(&a_4); +tests/value/initialized_copy.i:129:[value] warning: accessing uninitialized left-value. assert \initialized(&a_5); +tests/value/initialized_copy.i:135:[value] warning: accessing uninitialized left-value. assert \initialized(&a_6); +tests/value/initialized_copy.i:143:[value] warning: accessing uninitialized left-value. assert \initialized(&a_7); +[value] computing for function f <- main. + Called from tests/value/initialized_copy.i:143. +[value] Recording results for f +[value] Done for function f +[value] DUMPING STATE of file tests/value/initialized_copy.i line 144 + w[0..9] ∈ {0; 12} + v ∈ [--..--] + a_7 ∈ {1} + __retres ∈ UNINITIALIZED + =END OF DUMP== +tests/value/initialized_copy.i:151:[value] warning: accessing uninitialized left-value. assert \initialized(&a_8); +[value] computing for function g <- main. + Called from tests/value/initialized_copy.i:151. +tests/value/initialized_copy.i:151:[kernel] warning: Neither code nor specification for function g, generating default assigns from the prototype +[value] using specification for function g +[value] Done for function g +[value] DUMPING STATE of file tests/value/initialized_copy.i line 152 + w[0..9] ∈ {0; 12} + v ∈ [--..--] + a_8 ∈ {1} + __retres ∈ UNINITIALIZED + =END OF DUMP== +[value] Recording results for main +[value] done for function main +tests/value/initialized_copy.i:29:[value] assertion 'Value,initialisation' got final status invalid. +tests/value/initialized_copy.i:47:[value] assertion 'Value,initialisation' got final status invalid. +tests/value/initialized_copy.i:92:[value] assertion 'Value,initialisation' got final status invalid. +tests/value/initialized_copy.i:117:[value] assertion 'Value,initialisation' got final status invalid. +tests/value/initialized_copy.i:129:[value] assertion 'Value,initialisation' got final status invalid. +tests/value/initialized_copy.i:135:[value] assertion 'Value,initialisation' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + +[value:final-states] Values at end of function main: + w[0..9] ∈ {0; 12} + __retres ∈ {0; 8} +[from] Computing for function f +[from] Done for function f +[from] Computing for function main +[from] Computing for function Frama_C_dump_each <-main +[from] Done for function Frama_C_dump_each +[from] Computing for function g <-main +[from] Done for function g +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + NO EFFECTS +[from] Function g: + NO EFFECTS +[from] Function main: + w[0..9] FROM v (and SELF) + \result FROM v +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + \nothing +[inout] Inputs for function f: + \nothing +[inout] Out (internal) for function main: + w[0..9]; a; b_0; a_0; c[bits 0 to 7]; p; a_1; c_0; p_0; a_2; s1{.c; .i}; + s2; sv1; sv1_0; sv2_0.i1; i; t[0..9]; i_0; t_0[0..9]; v_1[1]; i_1; + v_2[1]; a_4; a_7; a_8; __retres +[inout] Inputs for function main: + v +[value] Analyzing a complete application starting at main2 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + w[0..9] ∈ {0} + v ∈ [--..--] +tests/value/initialized_copy.i:160:[value] warning: accessing uninitialized left-value. assert \initialized(&x); +[value] Recording results for main2 +[value] done for function main2 +tests/value/initialized_copy.i:160:[value] assertion 'Value,initialisation' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main2: + +[from] Computing for function main2 +[from] Done for function main2 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main2: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main2: + \nothing +[inout] Inputs for function main2: + \nothing +[value] Analyzing a complete application starting at main2 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + w[0..9] ∈ {0} + v ∈ [--..--] +[value] Recording results for main2 +[value] done for function main2 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main2: + +[from] Computing for function main2 +[from] Done for function main2 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main2: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main2: + \nothing +[inout] Inputs for function main2: + \nothing diff --git a/tests/value/oracle_symblocs/initialized_copy.1.err.oracle b/tests/value/oracle_symblocs/initialized_copy.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/initialized_copy.1.res.oracle b/tests/value/oracle_symblocs/initialized_copy.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..2cf64afb009d68413e6f293c9be6cb7af4e5dc73 --- /dev/null +++ b/tests/value/oracle_symblocs/initialized_copy.1.res.oracle @@ -0,0 +1,125 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/initialized_copy.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + w[0..9] ∈ {0} + v ∈ [--..--] +[value] Called Frama_C_show_each_unreached() +[value] DUMPING STATE of file tests/value/initialized_copy.i line 38 + w[0..9] ∈ {0} + v ∈ [--..--] + b_0 ∈ {1} or UNINITIALIZED + a_0 ∈ {1} or UNINITIALIZED + __retres ∈ UNINITIALIZED + =END OF DUMP== +[value] Called Frama_C_show_each_unreached() +[value] DUMPING STATE of file tests/value/initialized_copy.i line 65 + w[0..9] ∈ {0} + v ∈ [--..--] + c_0[bits 0 to 7] ∈ {1} or UNINITIALIZED + [bits 8 to 15] ∈ {2} + [bits 16 to 23] ∈ {3} + [bits 24 to 31] ∈ {4} + p_0 ∈ {{ &c_0 + {3} }} + a_2[bits 0 to 7] ∈ {1} or UNINITIALIZED + [bits 8 to 15] ∈ {2} + [bits 16 to 23] ∈ {3} + [bits 24 to 31] ∈ {4} + __retres ∈ UNINITIALIZED + =END OF DUMP== +[value] Called Frama_C_show_each(.c ∈ {1} + .[bits 8 to 31] ∈ UNINITIALIZED + .i ∈ {5}) +[value] Called Frama_C_show_each({{ }}) +[value] Called Frama_C_show_each(.i1 ∈ {1} + .i2 ∈ UNINITIALIZED) +tests/value/initialized_copy.i:90:[value] warning: assertion got status unknown. +[value] Called Frama_C_show_each_unreached() +tests/value/initialized_copy.i:98:[value] warning: assertion got status unknown. +[value] DUMPING STATE of file tests/value/initialized_copy.i line 102 + w[0..9] ∈ {0} + v ∈ [--..--] + i_0 ∈ [0..9] + t_0[0..9] ∈ {1} or UNINITIALIZED + v_1[0] ∈ UNINITIALIZED + [1] ∈ {1} + [2..9] ∈ UNINITIALIZED + __retres ∈ UNINITIALIZED + =END OF DUMP== +tests/value/initialized_copy.i:108:[value] warning: assertion got status unknown. +[value] DUMPING STATE of file tests/value/initialized_copy.i line 112 + w[0..9] ∈ {0; 12} or UNINITIALIZED + v ∈ [--..--] + i_1 ∈ [0..9] + v_2[0] ∈ UNINITIALIZED + [1] ∈ {12} + [2..9] ∈ UNINITIALIZED + __retres ∈ UNINITIALIZED + =END OF DUMP== +[value] computing for function f <- main. + Called from tests/value/initialized_copy.i:129. +[value] Recording results for f +[value] Done for function f +[value] Called Frama_C_show_each_unreached() +tests/value/initialized_copy.i:135:[value] warning: accessing uninitialized left-value. assert \initialized(&a_6); +[value] computing for function f <- main. + Called from tests/value/initialized_copy.i:143. +[value] Recording results for f +[value] Done for function f +[value] DUMPING STATE of file tests/value/initialized_copy.i line 144 + w[0..9] ∈ {0; 12} or UNINITIALIZED + v ∈ [--..--] + a_7 ∈ {1} or UNINITIALIZED + __retres ∈ UNINITIALIZED + =END OF DUMP== +tests/value/initialized_copy.i:151:[value] warning: accessing uninitialized left-value. assert \initialized(&a_8); +[value] computing for function g <- main. + Called from tests/value/initialized_copy.i:151. +tests/value/initialized_copy.i:151:[kernel] warning: Neither code nor specification for function g, generating default assigns from the prototype +[value] using specification for function g +[value] Done for function g +[value] DUMPING STATE of file tests/value/initialized_copy.i line 152 + w[0..9] ∈ {0; 12} or UNINITIALIZED + v ∈ [--..--] + a_8 ∈ {1} + __retres ∈ UNINITIALIZED + =END OF DUMP== +[value] Recording results for main +[value] done for function main +tests/value/initialized_copy.i:135:[value] assertion 'Value,initialisation' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + +[value:final-states] Values at end of function main: + w[0..9] ∈ {0; 12} or UNINITIALIZED + __retres ∈ {0; 8} or UNINITIALIZED +[from] Computing for function f +[from] Done for function f +[from] Computing for function main +[from] Computing for function Frama_C_dump_each <-main +[from] Done for function Frama_C_dump_each +[from] Computing for function g <-main +[from] Done for function g +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + NO EFFECTS +[from] Function g: + NO EFFECTS +[from] Function main: + w[0..9] FROM v (and SELF) + \result FROM v +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + \nothing +[inout] Inputs for function f: + \nothing +[inout] Out (internal) for function main: + w[0..9]; a; b_0; a_0; c[bits 0 to 7]; p; a_1; c_0; p_0; a_2; s1{.c; .i}; + s2; sv1; sv1_0; sv2_0.i1; i; t[0..9]; i_0; t_0[0..9]; v_1[1]; i_1; + v_2[1]; a_4; a_7; a_8; __retres +[inout] Inputs for function main: + v diff --git a/tests/value/oracle_symblocs/inout.0.err.oracle b/tests/value/oracle_symblocs/inout.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/inout.0.res.oracle b/tests/value/oracle_symblocs/inout.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..d852038d744613fd340ca9b12cb546df8c92d38c --- /dev/null +++ b/tests/value/oracle_symblocs/inout.0.res.oracle @@ -0,0 +1,47 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/inout.i (no preprocessing) +[value] Analyzing a complete application starting at inout_11_0 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + Xt ∈ {0} + Xs ∈ {0} + Xs_I ∈ {0} + Ys ∈ {0} + Ys_I ∈ {0} + Z ∈ {0} + I ∈ {0} + I_size ∈ {8} + Itab[0] ∈ {-40} + [1] ∈ {-25} + [2] ∈ {-15} + [3] ∈ {-5} + [4] ∈ {5} + [5] ∈ {15} + [6] ∈ {25} + [7] ∈ {40} + I5_nt ∈ {0} +tests/value/inout.i:16:[value] warning: signed overflow. assert -2147483648 ≤ i1+i2; +tests/value/inout.i:16:[value] warning: signed overflow. assert i1+i2 ≤ 2147483647; +tests/value/inout.i:18:[value] warning: out of bounds write. assert \valid(i); +[value] Recording results for inout_11_0 +[value] done for function inout_11_0 +[from] Computing for function inout_11_0 +[from] Done for function inout_11_0 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function inout_11_0: + Xt FROM I + Xs FROM i1 + Xs_I FROM Xs_I + Ys FROM i1; i2 + Z FROM i + S_i[0] FROM i +[from] ====== END OF DEPENDENCIES ====== +[inout] InOut (internal) for function inout_11_0: + Operational inputs: + Xs_I; I; i1; i2; i + Operational inputs on termination: + Xs_I; I; i1; i2; i + Sure outputs: + Xt; Xs; Xs_I; Ys; Z; S_i[0] diff --git a/tests/value/oracle_symblocs/inout.1.err.oracle b/tests/value/oracle_symblocs/inout.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/inout.1.res.oracle b/tests/value/oracle_symblocs/inout.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..6d631b1f6eed0b229c3b33c879f420fcb8cf0da0 --- /dev/null +++ b/tests/value/oracle_symblocs/inout.1.res.oracle @@ -0,0 +1,42 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/inout.i (no preprocessing) +[value] Analyzing a complete application starting at inout_11_3 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + Xt ∈ {0} + Xs ∈ {0} + Xs_I ∈ {0} + Ys ∈ {0} + Ys_I ∈ {0} + Z ∈ {0} + I ∈ {0} + I_size ∈ {8} + Itab[0] ∈ {-40} + [1] ∈ {-25} + [2] ∈ {-15} + [3] ∈ {-5} + [4] ∈ {5} + [5] ∈ {15} + [6] ∈ {25} + [7] ∈ {40} + I5_nt ∈ {0} +tests/value/inout.i:37:[value] entering loop for the first time +[value] Recording results for inout_11_3 +[value] done for function inout_11_3 +[from] Computing for function inout_11_3 +[from] Done for function inout_11_3 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function inout_11_3: + Xs FROM i1 + Z FROM I_size; Itab{[0]; [7]}; i2 (and SELF) + \result FROM I_size; Itab[0..7]; i2 +[from] ====== END OF DEPENDENCIES ====== +[inout] InOut (internal) for function inout_11_3: + Operational inputs: + I_size; Itab[0..7]; i1; i2; r + Operational inputs on termination: + I_size; Itab[0..7]; i1; i2; r + Sure outputs: + Xs; es diff --git a/tests/value/oracle_symblocs/inout.2.err.oracle b/tests/value/oracle_symblocs/inout.2.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/inout.2.res.oracle b/tests/value/oracle_symblocs/inout.2.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..b7e7bad5f99295f2e63ae869eb6b955f69f6154e --- /dev/null +++ b/tests/value/oracle_symblocs/inout.2.res.oracle @@ -0,0 +1,41 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/inout.i (no preprocessing) +[value] Analyzing a complete application starting at never_terminate +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + Xt ∈ {0} + Xs ∈ {0} + Xs_I ∈ {0} + Ys ∈ {0} + Ys_I ∈ {0} + Z ∈ {0} + I ∈ {0} + I_size ∈ {8} + Itab[0] ∈ {-40} + [1] ∈ {-25} + [2] ∈ {-15} + [3] ∈ {-5} + [4] ∈ {5} + [5] ∈ {15} + [6] ∈ {25} + [7] ∈ {40} + I5_nt ∈ {0} +tests/value/inout.i:50:[value] entering loop for the first time +[value] Recording results for never_terminate +[value] done for function never_terminate +[from] Computing for function never_terminate +[from] Non-terminating function never_terminate (no dependencies) +[from] Done for function never_terminate +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function never_terminate: + NON TERMINATING - NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] InOut (internal) for function never_terminate: + Operational inputs: + i1_nt; i2_nt; i3_nt + Operational inputs on termination: + \nothing + Sure outputs: + ANYTHING(origin:Unknown) diff --git a/tests/value/oracle_symblocs/inout.3.err.oracle b/tests/value/oracle_symblocs/inout.3.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/inout.3.res.oracle b/tests/value/oracle_symblocs/inout.3.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..5497c9df29566e25fe5705153ab198a667e10e06 --- /dev/null +++ b/tests/value/oracle_symblocs/inout.3.res.oracle @@ -0,0 +1,40 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/inout.i (no preprocessing) +[value] Analyzing a complete application starting at may_not_terminate +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + Xt ∈ {0} + Xs ∈ {0} + Xs_I ∈ {0} + Ys ∈ {0} + Ys_I ∈ {0} + Z ∈ {0} + I ∈ {0} + I_size ∈ {8} + Itab[0] ∈ {-40} + [1] ∈ {-25} + [2] ∈ {-15} + [3] ∈ {-5} + [4] ∈ {5} + [5] ∈ {15} + [6] ∈ {25} + [7] ∈ {40} + I5_nt ∈ {0} +tests/value/inout.i:60:[value] entering loop for the first time +[value] Recording results for may_not_terminate +[value] done for function may_not_terminate +[from] Computing for function may_not_terminate +[from] Done for function may_not_terminate +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function may_not_terminate: + Xs FROM i3 +[from] ====== END OF DEPENDENCIES ====== +[inout] InOut (internal) for function may_not_terminate: + Operational inputs: + I5_nt; i1; i2; i3; i4; i5_nt + Operational inputs on termination: + i1; i2; i3; i4 + Sure outputs: + Xs; es diff --git a/tests/value/oracle_symblocs/inout.4.err.oracle b/tests/value/oracle_symblocs/inout.4.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/inout.4.res.oracle b/tests/value/oracle_symblocs/inout.4.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..27dd3450b411588fef40a77ca16d249c77063d5c --- /dev/null +++ b/tests/value/oracle_symblocs/inout.4.res.oracle @@ -0,0 +1,55 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/inout.i (no preprocessing) +[value] Analyzing a complete application starting at call_may_not_terminate +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + Xt ∈ {0} + Xs ∈ {0} + Xs_I ∈ {0} + Ys ∈ {0} + Ys_I ∈ {0} + Z ∈ {0} + I ∈ {0} + I_size ∈ {8} + Itab[0] ∈ {-40} + [1] ∈ {-25} + [2] ∈ {-15} + [3] ∈ {-5} + [4] ∈ {5} + [5] ∈ {15} + [6] ∈ {25} + [7] ∈ {40} + I5_nt ∈ {0} +[value] computing for function may_not_terminate <- call_may_not_terminate. + Called from tests/value/inout.i:68. +tests/value/inout.i:60:[value] entering loop for the first time +[value] Recording results for may_not_terminate +[value] Done for function may_not_terminate +[value] Recording results for call_may_not_terminate +[value] done for function call_may_not_terminate +[from] Computing for function may_not_terminate +[from] Done for function may_not_terminate +[from] Computing for function call_may_not_terminate +[from] Done for function call_may_not_terminate +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function may_not_terminate: + Xs FROM i3 +[from] Function call_may_not_terminate: + Xs FROM j3 +[from] ====== END OF DEPENDENCIES ====== +[inout] InOut (internal) for function may_not_terminate: + Operational inputs: + I5_nt; i1; i2; i3; i4; i5_nt + Operational inputs on termination: + i1; i2; i3; i4 + Sure outputs: + Xs; es +[inout] InOut (internal) for function call_may_not_terminate: + Operational inputs: + I5_nt; j1; j2; j3; j4; j5; c1; c2 + Operational inputs on termination: + j1; j2; j3; j4; j5; c1; c2 + Sure outputs: + Xs diff --git a/tests/value/oracle_symblocs/inout_diff.err.oracle b/tests/value/oracle_symblocs/inout_diff.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/inout_diff.res.oracle b/tests/value/oracle_symblocs/inout_diff.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..d4b5a5814c0e9c8f5af5d36c236b697317d97115 --- /dev/null +++ b/tests/value/oracle_symblocs/inout_diff.res.oracle @@ -0,0 +1,95 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/inout_diff.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + t[0..49] ∈ {0} + u[0..49] ∈ {0} + x ∈ {0} +tests/value/inout_diff.i:11:[value] entering loop for the first time +tests/value/inout_diff.i:18:[value] warning: accessing out of bounds index. assert c < 50; +tests/value/inout_diff.i:20:[value] warning: accessing out of bounds index. assert (int)(c+1) < 50; +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + t[0..1] ∈ {1} + [2..4] ∈ {0} + [5..6] ∈ {1} + [7..9] ∈ {0} + [10..11] ∈ {1} + [12..14] ∈ {0} + [15..16] ∈ {1} + [17..19] ∈ {0} + [20..21] ∈ {1} + [22..24] ∈ {0} + [25..26] ∈ {1} + [27..29] ∈ {0} + [30..31] ∈ {1} + [32..34] ∈ {0} + [35..36] ∈ {1} + [37..39] ∈ {0} + [40..41] ∈ {1} + [42..44] ∈ {0} + [45..46] ∈ {1} + [47..49] ∈ {0} + u[0] ∈ {1} + [1..4] ∈ {0} + [5] ∈ {1} + [6..9] ∈ {0} + [10] ∈ {1} + [11..14] ∈ {0} + [15] ∈ {1} + [16..19] ∈ {0} + [20] ∈ {1} + [21..24] ∈ {0} + [25] ∈ {1} + [26..29] ∈ {0} + [30] ∈ {1} + [31..34] ∈ {0} + [35] ∈ {1} + [36..39] ∈ {0} + [40] ∈ {1} + [41..44] ∈ {0} + [45] ∈ {1} + [46..49] ∈ {0} + x ∈ {0; 1; 2; 3} + c ∈ {0; 7; 14; 21; 28; 35; 42} + i ∈ {50} + __retres ∈ {0} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + t{[0..1]; [5..6]; [10..11]; [15..16]; [20..21]; [25..26]; [30..31]; + [35..36]; [40..41]; [45..46]} + FROM \nothing + u{[0]; [5]; [10]; [15]; [20]; [25]; [30]; [35]; [40]; [45]} FROM \nothing + x FROM t{[7]; [14]; [28]; [42]; [49]}; + u{[1]; [7..8]; [14]; [21..22]; [28..29]; [36]; [42..43]; [49]}; + c + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + t{[0..1]; [5..6]; [10..11]; [15..16]; [20..21]; [25..26]; [30..31]; + [35..36]; [40..41]; [45..46]}; + u{[0]; [5]; [10]; [15]; [20]; [25]; [30]; [35]; [40]; [45]}; x; c; + i; __retres +[inout] Inputs for function main: + t{[0]; [7]; [14]; [21]; [28]; [35]; [42]; [49]}; + u{[0..1]; [7..8]; [14..15]; [21..22]; [28..29]; [35..36]; [42..43]; [49]}; + x +[inout] InOut (internal) for function main: + Operational inputs: + t{[7]; [14]; [28]; [42]; [49]}; + u{[1]; [7..8]; [14]; [21..22]; [28..29]; [36]; [42..43]; [49]}; c + Operational inputs on termination: + t{[7]; [14]; [28]; [42]; [49]}; + u{[1]; [7..8]; [14]; [21..22]; [28..29]; [36]; [42..43]; [49]}; c + Sure outputs: + t{[0..1]; [5..6]; [10..11]; [15..16]; [20..21]; [25..26]; [30..31]; + [35..36]; [40..41]; [45..46]}; + u{[0]; [5]; [10]; [15]; [20]; [25]; [30]; [35]; [40]; [45]}; x; c; + i; __retres diff --git a/tests/value/oracle_symblocs/inout_formals.err.oracle b/tests/value/oracle_symblocs/inout_formals.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/inout_formals.res.oracle b/tests/value/oracle_symblocs/inout_formals.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..7a480519876ba5abf813815dae2489a14030301a --- /dev/null +++ b/tests/value/oracle_symblocs/inout_formals.res.oracle @@ -0,0 +1,28 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/inout_formals.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + x ∈ {0} + y ∈ {0} +tests/value/inout_formals.i:7:[value] warning: out of bounds write. assert \valid(i); +[value] Called Frama_C_show_each({{ &S_i }}) +[value] Recording results for main +[value] done for function main +[inout] InOut (internal) for function main: + Operational inputs: + x; y; i + Operational inputs on termination: + x; y; i + Sure outputs: + S_i[0] +[inout] InOut (with formals) for function main: + Operational inputs: + x; y; i + Operational inputs on termination: + x; y; i + Sure outputs: + S_i[0] +[inout] Inputs (with formals) for function main: + x; y; i; S_i[0] diff --git a/tests/value/oracle_symblocs/inout_on_alarms.err.oracle b/tests/value/oracle_symblocs/inout_on_alarms.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/inout_on_alarms.res.oracle b/tests/value/oracle_symblocs/inout_on_alarms.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..9187855a2da4241afd7e0edc97eab5b4a3553df3 --- /dev/null +++ b/tests/value/oracle_symblocs/inout_on_alarms.res.oracle @@ -0,0 +1,114 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/inout_on_alarms.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + i ∈ {0} + t[0..9] ∈ {0} + p ∈ {0} + S[0..9] ∈ {0} + c ∈ [--..--] +[value] computing for function f <- main. + Called from tests/value/inout_on_alarms.i:37. +tests/value/inout_on_alarms.i:17:[value] warning: accessing out of bounds index. assert p->i < 10; +tests/value/inout_on_alarms.i:17:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +[value] Recording results for f +[value] Done for function f +[value] computing for function g <- main. + Called from tests/value/inout_on_alarms.i:40. +tests/value/inout_on_alarms.i:21:[value] warning: accessing out of bounds index. assert i < 10; +tests/value/inout_on_alarms.i:21:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +[value] Recording results for g +[value] Done for function g +[value] computing for function h <- main. + Called from tests/value/inout_on_alarms.i:44. +tests/value/inout_on_alarms.i:26:[value] warning: accessing uninitialized left-value. assert \initialized(q); +[value] Recording results for h +[value] Done for function h +[value] Recording results for main +[value] done for function main +tests/value/inout_on_alarms.i:17:[value] assertion 'Value,index_bound' got final status invalid. +tests/value/inout_on_alarms.i:21:[value] assertion 'Value,index_bound' got final status invalid. +tests/value/inout_on_alarms.i:26:[value] assertion 'Value,initialisation' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + NON TERMINATING FUNCTION +[value:final-states] Values at end of function g: + NON TERMINATING FUNCTION +[value:final-states] Values at end of function h: + NON TERMINATING FUNCTION +[value:final-states] Values at end of function main: + i ∈ {12} + p ∈ {{ &S[8] }} + S[0..7] ∈ {0} + [8].i ∈ {12} + [9] ∈ {0} +[from] Computing for function f +[from] Non-terminating function f (no dependencies) +[from] Done for function f +[from] Computing for function g +[from] Non-terminating function g (no dependencies) +[from] Done for function g +[from] Computing for function h +[from] Non-terminating function h (no dependencies) +[from] Done for function h +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + NON TERMINATING - NO EFFECTS +[from] Function g: + NON TERMINATING - NO EFFECTS +[from] Function h: + NON TERMINATING - NO EFFECTS +[from] Function main: + i FROM \nothing + p FROM \nothing + S[8] FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + \nothing +[inout] Inputs for function f: + p; S[8] +[inout] InOut (internal) for function f: + Operational inputs: + p; S[8] + Operational inputs on termination: + \nothing + Sure outputs: + ANYTHING(origin:Unknown) +[inout] Out (internal) for function g: + \nothing +[inout] Inputs for function g: + i +[inout] InOut (internal) for function g: + Operational inputs: + i + Operational inputs on termination: + \nothing + Sure outputs: + ANYTHING(origin:Unknown) +[inout] Out (internal) for function h: + \nothing +[inout] Inputs for function h: + z +[inout] InOut (internal) for function h: + Operational inputs: + q; z + Operational inputs on termination: + \nothing + Sure outputs: + ANYTHING(origin:Unknown) +[inout] Out (internal) for function main: + i; p; S[8] +[inout] Inputs for function main: + i; p; S[8]; c +[inout] InOut (internal) for function main: + Operational inputs: + c; z + Operational inputs on termination: + c + Sure outputs: + i; p; S[8] diff --git a/tests/value/oracle_symblocs/inout_proto.err.oracle b/tests/value/oracle_symblocs/inout_proto.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/inout_proto.res.oracle b/tests/value/oracle_symblocs/inout_proto.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..d2f4c94f41ee8298664bf45a3516cc70d164c057 --- /dev/null +++ b/tests/value/oracle_symblocs/inout_proto.res.oracle @@ -0,0 +1,147 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/inout_proto.i (no preprocessing) +[value] Analyzing a complete application starting at main_main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + a ∈ {0} + b ∈ {0} + c ∈ {0} + t[0..9] ∈ {0} + u[0..19] ∈ {0} +[value] computing for function main <- main_main. + Called from tests/value/inout_proto.i:54. +[value] computing for function SendBuffer <- main <- main_main. + Called from tests/value/inout_proto.i:19. +[value] using specification for function SendBuffer +[value] Done for function SendBuffer +[value] Recording results for main +[value] Done for function main +[value] computing for function main2 <- main_main. + Called from tests/value/inout_proto.i:55. +[value] computing for function f <- main2 <- main_main. + Called from tests/value/inout_proto.i:46. +[value] using specification for function f +[value] Done for function f +[value] computing for function g1 <- main2 <- main_main. + Called from tests/value/inout_proto.i:47. +[value] computing for function g <- g1 <- main2 <- main_main. + Called from tests/value/inout_proto.i:34. +[value] using specification for function g +[value] Done for function g +[value] Recording results for g1 +[value] Done for function g1 +[value] computing for function g2 <- main2 <- main_main. + Called from tests/value/inout_proto.i:48. +[value] computing for function g <- g2 <- main2 <- main_main. + Called from tests/value/inout_proto.i:38. +[value] Done for function g +[value] Recording results for g2 +[value] Done for function g2 +[value] computing for function g3 <- main2 <- main_main. + Called from tests/value/inout_proto.i:50. +[value] computing for function g <- g3 <- main2 <- main_main. + Called from tests/value/inout_proto.i:42. +[value] Done for function g +[value] Recording results for g3 +[value] Done for function g3 +[value] Recording results for main2 +[value] Done for function main2 +[value] Recording results for main_main +[value] done for function main_main +[inout] InOut (internal) for function g1: + Operational inputs: + t[6..7] + Operational inputs on termination: + t[6..7] + Sure outputs: + t[3..5] +[inout] InOut (with formals) for function g1: + Operational inputs: + t[6..7] + Operational inputs on termination: + t[6..7] + Sure outputs: + t[3..5] +[inout] Inputs (with formals) for function g1: + t[6..7] +[inout] InOut (internal) for function g2: + Operational inputs: + t[3..4] + Operational inputs on termination: + t[3..4] + Sure outputs: + t[0..2] +[inout] InOut (with formals) for function g2: + Operational inputs: + t[3..4] + Operational inputs on termination: + t[3..4] + Sure outputs: + t[0..2] +[inout] Inputs (with formals) for function g2: + t[3..4] +[inout] InOut (internal) for function g3: + Operational inputs: + u[8..10]; p + Operational inputs on termination: + u[8..10]; p + Sure outputs: + \nothing +[inout] InOut (with formals) for function g3: + Operational inputs: + u[8..10]; p + Operational inputs on termination: + u[8..10]; p + Sure outputs: + \nothing +[inout] Inputs (with formals) for function g3: + u[8..10]; p +[inout] InOut (internal) for function main: + Operational inputs: + length; msg + Operational inputs on termination: + length; msg + Sure outputs: + ret +[inout] InOut (with formals) for function main: + Operational inputs: + msg + Operational inputs on termination: + msg + Sure outputs: + \nothing +[inout] Inputs (with formals) for function main: + msg +[inout] InOut (internal) for function main2: + Operational inputs: + b; t[6..7]; u[8..10]; i + Operational inputs on termination: + b; t[6..7]; u[8..10]; i + Sure outputs: + a; c; t[0..5] +[inout] InOut (with formals) for function main2: + Operational inputs: + b; t[6..7]; u[8..10]; i + Operational inputs on termination: + b; t[6..7]; u[8..10]; i + Sure outputs: + a; c; t[0..5] +[inout] Inputs (with formals) for function main2: + b; t{[3..4]; [6..7]}; u[8..10]; i +[inout] InOut (internal) for function main_main: + Operational inputs: + length; b; t[6..7]; u[8..10]; msg; i + Operational inputs on termination: + length; b; t[6..7]; u[8..10]; msg; i + Sure outputs: + a; c; t[0..5] +[inout] InOut (with formals) for function main_main: + Operational inputs: + b; t[6..7]; u[8..10]; msg; i + Operational inputs on termination: + b; t[6..7]; u[8..10]; msg; i + Sure outputs: + a; c; t[0..5] +[inout] Inputs (with formals) for function main_main: + b; t{[3..4]; [6..7]}; u[8..10]; msg; i diff --git a/tests/value/oracle_symblocs/input.err.oracle b/tests/value/oracle_symblocs/input.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/input.res.oracle b/tests/value/oracle_symblocs/input.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..791e9f8ea9ca11567e781f160694ea71e8821aa3 --- /dev/null +++ b/tests/value/oracle_symblocs/input.res.oracle @@ -0,0 +1,34 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/input.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + a ∈ {0} + b ∈ {0} +[value] computing for function f <- main. + Called from tests/value/input.i:7. +tests/value/input.i:7:[kernel] warning: Neither code nor specification for function f, generating default assigns from the prototype +[value] using specification for function f +[value] Done for function f +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + +[from] Computing for function main +[from] Computing for function f <-main +[from] Done for function f +tests/value/input.i:7:[from] warning: variadic call detected. Using only 1 argument(s). +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + \result FROM x +[from] Function main: + \result FROM a +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + tmp +[inout] Inputs for function main: + a; b diff --git a/tests/value/oracle_symblocs/integers.err.oracle b/tests/value/oracle_symblocs/integers.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/integers.res.oracle b/tests/value/oracle_symblocs/integers.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..ad67bb4b1da33f207bea015d905730694aa9c8f1 --- /dev/null +++ b/tests/value/oracle_symblocs/integers.res.oracle @@ -0,0 +1,33 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/integers.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + bin ∈ {0} + hex ∈ {0} + oct ∈ {0} + dec ∈ {0} +tests/value/integers.i:7:[value] assertion got status valid. +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + bin ∈ {84} + hex ∈ {84} + oct ∈ {84} + dec ∈ {42} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + bin FROM \nothing + hex FROM \nothing + oct FROM \nothing + dec FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + bin; hex; oct; dec +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/interpol.err.oracle b/tests/value/oracle_symblocs/interpol.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/interpol.res.oracle b/tests/value/oracle_symblocs/interpol.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..ef2a3a64930957774067a4c82eb2c703bb4efe02 --- /dev/null +++ b/tests/value/oracle_symblocs/interpol.res.oracle @@ -0,0 +1,37 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/interpol.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + t[0] ∈ {1} + [1] ∈ {2} + [2] ∈ {4} + [3] ∈ {8} + [4] ∈ {16} + [5] ∈ {32} + [6] ∈ {64} + [7] ∈ {128} +tests/value/interpol.c:10:[value] entering loop for the first time +[value] Called Frama_C_show_each_ok({0}, {-1}) +[value] Called Frama_C_show_each_ok({0; 1}, {-2; -1}) +[value] Called Frama_C_show_each_ok({0; 1; 2}, {-4; -2; -1}) +[value] Called Frama_C_show_each_ok({0; 1; 2; 3; 4; 5; 6}, + {-64; -32; -16; -8; -4; -2; -1}) +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + d ∈ {-64; -32; -16; -8; -4; -2; -1} or UNINITIALIZED + i ∈ {7} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + d; i +[inout] Inputs for function main: + t[0..7] diff --git a/tests/value/oracle_symblocs/invalid_loc_return.err.oracle b/tests/value/oracle_symblocs/invalid_loc_return.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/invalid_loc_return.res.oracle b/tests/value/oracle_symblocs/invalid_loc_return.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..73ced69e58e50a4d95e63ccd72006fc869f2f5ad --- /dev/null +++ b/tests/value/oracle_symblocs/invalid_loc_return.res.oracle @@ -0,0 +1,110 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/invalid_loc_return.i (no preprocessing) +[value] Analyzing a complete application starting at main1 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + c ∈ [--..--] +[value] computing for function main <- main1. + Called from tests/value/invalid_loc_return.i:21. +[value] computing for function foo <- main <- main1. + Called from tests/value/invalid_loc_return.i:17. +[value] Recording results for foo +[value] Done for function foo +tests/value/invalid_loc_return.i:17:[value] warning: accessing uninitialized left-value. assert \initialized(&p); +[value] Recording results for main +[value] Done for function main +[value] Recording results for main1 +[value] done for function main1 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function foo: + __retres ∈ {1} +[value:final-states] Values at end of function main: + x ∈ {1} + p ∈ {{ &q }} + q ∈ {{ &x }} +[value:final-states] Values at end of function main1: + +[from] Computing for function foo +[from] Done for function foo +[from] Computing for function main +[from] Done for function main +[from] Computing for function main1 +[from] Done for function main1 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function foo: + \result FROM \nothing +[from] Function main: + NO EFFECTS +[from] Function main1: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function foo: + __retres +[inout] Inputs for function foo: + \nothing +[inout] Out (internal) for function main: + x; p; q +[inout] Inputs for function main: + c +[inout] Out (internal) for function main1: + \nothing +[inout] Inputs for function main1: + c +[value] Analyzing a complete application starting at main2 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + c ∈ [--..--] +[value] computing for function main <- main2. + Called from tests/value/invalid_loc_return.i:25. +[value] computing for function foo <- main <- main2. + Called from tests/value/invalid_loc_return.i:17. +[value] Recording results for foo +[value] Done for function foo +tests/value/invalid_loc_return.i:17:[value] warning: accessing uninitialized left-value. assert \initialized(&p); +[value] computing for function foo <- main <- main2. + Called from tests/value/invalid_loc_return.i:17. +[value] Recording results for foo +[value] Done for function foo +[value] Recording results for main +[value] Done for function main +[value] Recording results for main2 +[value] done for function main2 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function foo: + __retres ∈ {1} +[value:final-states] Values at end of function main: + x ∈ {1} + p ∈ {{ &q }} + q ∈ {{ &x }} +[value:final-states] Values at end of function main2: + +[from] Computing for function foo +[from] Done for function foo +[from] Computing for function main +[from] Done for function main +[from] Computing for function main2 +[from] Done for function main2 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function foo: + \result FROM \nothing +[from] Function main: + NO EFFECTS +[from] Function main2: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function foo: + __retres +[inout] Inputs for function foo: + \nothing +[inout] Out (internal) for function main: + x; p; q +[inout] Inputs for function main: + c +[inout] Out (internal) for function main2: + \nothing +[inout] Inputs for function main2: + c diff --git a/tests/value/oracle_symblocs/invalid_lval_arg.err.oracle b/tests/value/oracle_symblocs/invalid_lval_arg.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/invalid_lval_arg.res.oracle b/tests/value/oracle_symblocs/invalid_lval_arg.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..caf804edca9ec843ba4cb9a35634ba8e6b2b51c4 --- /dev/null +++ b/tests/value/oracle_symblocs/invalid_lval_arg.res.oracle @@ -0,0 +1,37 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/invalid_lval_arg.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + X ∈ {0} + p ∈ {0} +tests/value/invalid_lval_arg.i:15:[value] warning: out of bounds read. assert \valid_read((int **)0); +tests/value/invalid_lval_arg.i:17:[value] warning: out of bounds read. assert \valid_read((int **)0); +tests/value/invalid_lval_arg.i:19:[value] warning: out of bounds read. assert \valid_read((int **)0); +[value] Recording results for main +[value] done for function main +tests/value/invalid_lval_arg.i:15:[value] assertion 'Value,mem_access' got final status invalid. +tests/value/invalid_lval_arg.i:17:[value] assertion 'Value,mem_access' got final status invalid. +tests/value/invalid_lval_arg.i:19:[value] assertion 'Value,mem_access' got final status invalid. +[value] ====== VALUES COMPUTED ====== +tests/value/invalid_lval_arg.i:15:[kernel] warning: Neither code nor specification for function f, generating default assigns from the prototype +[value:final-states] Values at end of function main: + NON TERMINATING FUNCTION +[from] Computing for function main +[from] Computing for function f <-main +[from] Done for function f +[from] Computing for function g <-main +[from] Non-terminating function g (no dependencies) +[from] Done for function g +[from] Non-terminating function main (no dependencies) +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NON TERMINATING - NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + p +[inout] Inputs for function main: + p diff --git a/tests/value/oracle_symblocs/inversion.err.oracle b/tests/value/oracle_symblocs/inversion.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/inversion.res.oracle b/tests/value/oracle_symblocs/inversion.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..5e35e4ef9d6f67a5558489f6b3ad754ac2308faa --- /dev/null +++ b/tests/value/oracle_symblocs/inversion.res.oracle @@ -0,0 +1,57 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/inversion.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + x ∈ {0} + y ∈ {0} + z ∈ {0} + pz ∈ {{ &z }} + px ∈ {{ &x }} + py ∈ {{ &y }} + X ∈ {0} + pX ∈ {0} + t[0] ∈ {0} + [1].ok ∈ {1} + [1].p ∈ {{ &pz }} + [2].ok ∈ {1} + [2].p ∈ {{ &py }} + [3..4] ∈ {0} + t2[0..1] ∈ {0} + [2].ok ∈ {1} + [2].p ∈ {{ &px }} + [3..4] ∈ {0} + ii[0..1] ∈ {0} +tests/value/inversion.i:23:[value] entering loop for the first time +tests/value/inversion.i:30:[value] entering loop for the first time +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + x ∈ {0; 2} + y ∈ {0; 1; 2} + z ∈ {0; 1; 2} + X ∈ {0; 1; 2; 3; 4} + pX ∈ {{ NULL ; &X }} + ii[0] ∈ {0} + [1] ∈ {5} + i ∈ {5} + k ∈ [--..--] +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + x FROM px; t2{[0].ok; [1].ok; {[2]; [3].ok}; [4].ok} (and SELF) + y FROM pz; py; t{[0].ok; {[1..2]; [3].ok}; [4].ok} (and SELF) + z FROM pz; py; t{[0].ok; {[1..2]; [3].ok}; [4].ok} (and SELF) + X FROM \nothing (and SELF) + pX FROM \nothing + ii[1] FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + x; y; z; X; pX; ii[1]; i; k +[inout] Inputs for function main: + pz; px; py; t{[0].ok; {[1..2]; [3].ok}; [4].ok}; + t2{[0].ok; [1].ok; {[2]; [3].ok}; [4].ok}; ii[1] diff --git a/tests/value/oracle_symblocs/inversion2.err.oracle b/tests/value/oracle_symblocs/inversion2.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/inversion2.res.oracle b/tests/value/oracle_symblocs/inversion2.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..1186f31bdd2db436bbd766c21d697a66d6a00c0a --- /dev/null +++ b/tests/value/oracle_symblocs/inversion2.res.oracle @@ -0,0 +1,70 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/inversion2.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + T[0] ∈ {3} + [1] ∈ {1} + [2] ∈ {2} + TT[0][0..2] ∈ {3} + [0][3..4] ∈ {0} + [1][0] ∈ {1} + [1][1..4] ∈ {0} + [2][0..1] ∈ {2} + [2][2..4] ∈ {0} + G ∈ {99} +tests/value/inversion2.i:10:[value] entering loop for the first time +tests/value/inversion2.i:11:[value] entering loop for the first time +tests/value/inversion2.i:12:[value] warning: division by zero. assert TT[i][j] ≢ 0; +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + G ∈ [5..99],1%2 + i ∈ {3} + j ∈ {1; 2; 3; 4; 77} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + G FROM T[0..2]; TT{[0][0..2]; [1][0..2]; [2][0..2]} (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + G; i; j +[inout] Inputs for function main: + T[0..2]; TT{[0][0..2]; [1][0..2]; [2][0..2]} +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + T[0] ∈ {3} + [1] ∈ {1} + [2] ∈ {2} + TT[0][0..2] ∈ {3} + [0][3..4] ∈ {0} + [1][0] ∈ {1} + [1][1..4] ∈ {0} + [2][0..1] ∈ {2} + [2][2..4] ∈ {0} + G ∈ {99} +tests/value/inversion2.i:12:[value] warning: division by zero. assert TT[i][j] ≢ 0; +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + G ∈ {5; 7; 15; 99} + i ∈ {3} + j ∈ {1; 2; 3; 77} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + G FROM T[0..2]; TT{[0][0..2]; [1][0..2]; [2][0..2]} (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + G; i; j +[inout] Inputs for function main: + T[0..2]; TT{[0][0..2]; [1][0..2]; [2][0..2]} diff --git a/tests/value/oracle_symblocs/jacques.err.oracle b/tests/value/oracle_symblocs/jacques.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/jacques.res.oracle b/tests/value/oracle_symblocs/jacques.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..1d9889e0ec8a22689fd19353bfd605a36a467387 --- /dev/null +++ b/tests/value/oracle_symblocs/jacques.res.oracle @@ -0,0 +1,61 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/jacques.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + t[0..3] ∈ {0} + p ∈ {0} + q ∈ {0} + A ∈ {0} + B ∈ {0} + C ∈ {0} +[value] Called Frama_C_show_each_f({{ NULL ; &S_pp }}) +tests/value/jacques.i:23:[value] warning: assertion got status unknown. +[value] Called Frama_C_show_each_f({{ &S_pp }}) +tests/value/jacques.i:29:[value] assertion got status valid. +[value] computing for function f <- main. + Called from tests/value/jacques.i:36. +[value] Recording results for f +[value] Done for function f +[value] computing for function f <- main. + Called from tests/value/jacques.i:40. +[value] Recording results for f +[value] Done for function f +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + A ∈ {4; 5} + B ∈ {5} +[value:final-states] Values at end of function main: + p ∈ {{ &A }} + q ∈ {{ &A }} + A ∈ {5} + B ∈ {5} + S_pp[0] ∈ {5} + [1] ∈ [--..--] +[from] Computing for function f +[from] Done for function f +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + A FROM p; q + B FROM q (and SELF) +[from] Function main: + p FROM \nothing + q FROM \nothing + A FROM \nothing + B FROM \nothing + S_pp[0] FROM pp +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + A; B +[inout] Inputs for function f: + p; q +[inout] Out (internal) for function main: + p; q; A; B; S_pp[0] +[inout] Inputs for function main: + p; q diff --git a/tests/value/oracle_symblocs/join_misaligned.err.oracle b/tests/value/oracle_symblocs/join_misaligned.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/join_misaligned.res.oracle b/tests/value/oracle_symblocs/join_misaligned.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..45b64a80d1a5b81316fd56dd88b13f26428d5325 --- /dev/null +++ b/tests/value/oracle_symblocs/join_misaligned.res.oracle @@ -0,0 +1,84 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/join_misaligned.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + t[0..4] ∈ {0} + u[0..4] ∈ {1} + v[0..2] ∈ {0x22222222} + [3..6] ∈ {1} + w[0..6] ∈ {0} + x[0..4] ∈ {0} + y[0..2] ∈ {0x22222222} + [3..6] ∈ {1} + z[0..4] ∈ {255} + a ∈ {0} + va ∈ [--..--] +[value] Recording results for main +[value] done for function main +[value] warning: Garbled mix generated during analysis: + {{ garbled mix of &{t} (origin: Merge {tests/value/join_misaligned.i:42}) }} + {{ garbled mix of &{u} (origin: Merge {tests/value/join_misaligned.i:42}) }} +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + t{[0]; [1][bits 0 to 15]} ∈ {0} + [1][bits 16 to 23] ∈ {97; 98} + {[1][bits 24 to 31]; [2..4]} ∈ {0} + u{[0]; [1][bits 0 to 15]#} ∈ {1} repeated %32, bits 0 to 47 + [1][bits 16 to 23] ∈ {99; 100} + [bits 56 to 159]# ∈ {1} repeated %32, bits 24 to 127 + v{[0]; [1][bits 0 to 15]#} ∈ {0x22222222} repeated %32, bits 0 to 47 + [1][bits 16 to 23] ∈ {34; 68} + [1][bits 24 to 31] ∈ {68; 85} + [2][bits 0 to 7] ∈ {34; 85} + [2][bits 8 to 31]# ∈ {0x22222222}%32, bits 8 to 31 + [3..6] ∈ {1} + w{[0]; [1][bits 0 to 15]} ∈ {0} + [1][bits 16 to 23]# ∈ {0; 57}%16, bits 0 to 7 + [1][bits 24 to 31] ∈ {0; 59} + [2][bits 0 to 7]# ∈ {0; 59}%16, bits 8 to 15 + {[2][bits 8 to 31]; [3..6]} ∈ {0} + x[0] ∈ {0; 1} + [1] ∈ {0} + [2] ∈ {0; 1} + [3..4] ∈ {0} + y{[0]; [1][bits 0 to 15]#} ∈ {0x22222222} repeated %32, bits 0 to 47 + [1][bits 16 to 23] ∈ + {{ garbled mix of &{t} + (origin: Merge {tests/value/join_misaligned.i:42}) }} + {[1][bits 24 to 31]; [2][bits 0 to 15]} ∈ + {{ garbled mix of &{t; u} + (origin: Merge {tests/value/join_misaligned.i:42}) }} + [2][bits 16 to 23] ∈ + {{ garbled mix of &{u} + (origin: Merge {tests/value/join_misaligned.i:42}) }} + [2][bits 24 to 31]# ∈ {0x22222222}%32, bits 24 to 31 + [3..6] ∈ {1} + z[0..2] ∈ {255} + [bits 24 to 39] ∈ {0x1111; 0xFFFF} + a ∈ [0xFFF..0xFFFFFFFF],0xFFF%0x1000 +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + t[1][bits 16 to 23] FROM c + u[1][bits 16 to 23] FROM c + v{[1][bits 16 to 23]; [2][bits 0 to 7]} FROM c (and SELF) + [1][bits 24 to 31] FROM c + w{[1][bits 16 to 23]; [2][bits 0 to 7]} FROM c (and SELF) + [1][bits 24 to 31] FROM c + x[0..2] FROM c (and SELF) + y{[1][bits 16 to 23]; [2][bits 16 to 23]} FROM c (and SELF) + {[1][bits 24 to 31]; [2][bits 0 to 15]} FROM c + z[3..4] FROM c (and SELF) + a FROM va; c +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + t[1][bits 16 to 23]; u[1][bits 16 to 23]; + v{[1][bits 16 to 31]; [2][bits 0 to 7]}; + w{[1][bits 16 to 31]; [2][bits 0 to 7]}; x[0..2]; + y{[1][bits 16 to 31]; [2][bits 0 to 23]}; z[3..4]; a +[inout] Inputs for function main: + a; va diff --git a/tests/value/oracle_symblocs/label.err.oracle b/tests/value/oracle_symblocs/label.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/label.res.oracle b/tests/value/oracle_symblocs/label.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..0c75b52875e2617960bc64b975be6e889ff52c44 --- /dev/null +++ b/tests/value/oracle_symblocs/label.res.oracle @@ -0,0 +1,46 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/label.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + a ∈ {0} + b ∈ {0} + d ∈ {0} + e ∈ {0} + i ∈ {0} + p ∈ {0} + q ∈ {0} +tests/value/label.i:18:[value] Assigning imprecise value to *((char *)(& p) + i) + (pointing to p with offsets {0; 8}). + The imprecision originates from Merge {tests/value/label.i:18} +tests/value/label.i:18:[value] Assigning imprecise value to *((char *)(& p) + i) + (pointing to p with offsets {0; 8; 16}). + The imprecision originates from Merge {tests/value/label.i:18} +tests/value/label.i:18:[value] Assigning imprecise value to *((char *)(& p) + i) + (pointing to p with offsets {0; 8; 16; 24}). + The imprecision originates from Merge {tests/value/label.i:18} +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + a ∈ {{ &d + {4} }} + b ∈ {1; 2} + i ∈ {4} + p ∈ {{ garbled mix of &{a; b} (origin: Merge {tests/value/label.i:18}) }} + q ∈ {{ &a }} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + a FROM \nothing + b FROM c + i FROM i + p FROM i; c + q FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + a; b; i; p; q +[inout] Inputs for function main: + i; p; q diff --git a/tests/value/oracle_symblocs/lazy.0.err.oracle b/tests/value/oracle_symblocs/lazy.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/lazy.0.res.oracle b/tests/value/oracle_symblocs/lazy.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..b5607d716685efd64b316f1f5fb696b9dea1a104 --- /dev/null +++ b/tests/value/oracle_symblocs/lazy.0.res.oracle @@ -0,0 +1,42 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/lazy.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + a ∈ {-1} + b ∈ {0} + d ∈ {0} + q ∈ {0} + r ∈ {0} + s ∈ {0} + t ∈ {0} +tests/value/lazy.i:11:[value] warning: pointer comparison. assert \pointer_comparable((void *)0, (void *)q); +tests/value/lazy.i:14:[value] warning: pointer comparison. assert \pointer_comparable((void *)0, (void *)s); +tests/value/lazy.i:19:[value] warning: pointer comparison. assert \pointer_comparable((void *)0, (void *)(&a+2)); +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + a ∈ {6} + b ∈ {1} + q ∈ {{ &a + {-4; 0} }} + r ∈ {{ &a + {-4; 0} }} + s ∈ {{ &a + {-4; 0} }} + S_p[0..1] ∈ [--..--] +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + a FROM \nothing + b FROM \nothing + q FROM c + r FROM c (and SELF) + s FROM d_0 + S_p[0] FROM p; S_p[0] (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + a; b; q; r; s; S_p[0] +[inout] Inputs for function main: + a; q; s; S_p[0] diff --git a/tests/value/oracle_symblocs/lazy.1.err.oracle b/tests/value/oracle_symblocs/lazy.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/lazy.1.res.oracle b/tests/value/oracle_symblocs/lazy.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..4939ef54d13463ec2a1e0e3a000ede2e8fefddfa --- /dev/null +++ b/tests/value/oracle_symblocs/lazy.1.res.oracle @@ -0,0 +1,44 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/lazy.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + a ∈ {-1} + b ∈ {0} + d ∈ {0} + q ∈ {0} + r ∈ {0} + s ∈ {0} + t ∈ {0} +tests/value/lazy.i:11:[value] warning: pointer comparison. assert \pointer_comparable((void *)0, (void *)q); +tests/value/lazy.i:14:[value] warning: pointer comparison. assert \pointer_comparable((void *)0, (void *)s); +tests/value/lazy.i:19:[value] warning: pointer comparison. assert \pointer_comparable((void *)0, (void *)(&a+2)); +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + a ∈ {2; 6} + b ∈ {1} + q ∈ {{ &a + {-4; 0} }} + r ∈ {{ NULL ; &a + {-4; 0} }} + s ∈ {{ &a + {-4; 0} }} + t ∈ {{ NULL ; &a + {-4} }} + S_p[0..1] ∈ [--..--] +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + a FROM \nothing + b FROM \nothing + q FROM c + r FROM c (and SELF) + s FROM d_0 + t FROM d_0 (and SELF) + S_p[0] FROM p; S_p[0] (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + a; b; q; r; s; t; S_p[0] +[inout] Inputs for function main: + a; q; s; S_p[0] diff --git a/tests/value/oracle_symblocs/leaf.err.oracle b/tests/value/oracle_symblocs/leaf.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/leaf.res.oracle b/tests/value/oracle_symblocs/leaf.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..af150458ebac9dcc0f0257af20307eb17f191be1 --- /dev/null +++ b/tests/value/oracle_symblocs/leaf.res.oracle @@ -0,0 +1,243 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/leaf.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + T[0] ∈ {1} + [1..29] ∈ {0} + cv1 ∈ {10} + cv2 ∈ {20} + cv3 ∈ {30} + st_star_cint_1.p ∈ {{ &cv1 }} + st_star_cint_2.p ∈ {{ &cv2 }} + st_star_cint_3.p ∈ {{ &cv3 }} + v1 ∈ {10} + v2 ∈ {20} + v3 ∈ {30} + st_star_int_1.p ∈ {{ &v1 }} + st_star_int_2.p ∈ {{ &v2 }} + st_star_int_3.p ∈ {{ &v3 }} + st_tab3_int_1.t[0] ∈ {10} + .t[1] ∈ {11} + .t[2] ∈ {12} + st_tab3_int_2.t[0] ∈ {20} + .t[1] ∈ {21} + .t[2] ∈ {22} + st_tab3_int_3.t[0] ∈ {30} + .t[1] ∈ {31} + .t[2] ∈ {32} +[value] computing for function f_int_int <- main. + Called from tests/value/leaf.i:41. +tests/value/leaf.i:41:[kernel] warning: Neither code nor specification for function f_int_int, generating default assigns from the prototype +[value] using specification for function f_int_int +[value] Done for function f_int_int +[value] computing for function f_int_star_int <- main. + Called from tests/value/leaf.i:43. +tests/value/leaf.i:43:[kernel] warning: Neither code nor specification for function f_int_star_int, generating default assigns from the prototype +[value] using specification for function f_int_star_int +[value] Done for function f_int_star_int +tests/value/leaf.i:44:[value] warning: out of bounds read. assert \valid_read(p); +[value] Called Frama_C_show_each_F([-2147483648..2147483647]) +[value] Called Frama_C_show_each_F({5}) +[value] computing for function f_int_star_int_star_int <- main. + Called from tests/value/leaf.i:48. +tests/value/leaf.i:48:[kernel] warning: Neither code nor specification for function f_int_star_int_star_int, generating default assigns from the prototype +[value] using specification for function f_int_star_int_star_int +[value] Done for function f_int_star_int_star_int +tests/value/leaf.i:49:[value] warning: out of bounds read. assert \valid_read(pp); +tests/value/leaf.i:49:[value] Reading left-value *pp. + The location is {{ alloced_return_f_int_star_int_star_int -> [0..17179869152],0%32 }}. + It contains a garbled mix of {alloced_return_f_int_star_int_star_int} + because of Library function {tests/value/leaf.i:48}. +[value] Called Frama_C_show_each_G({{ garbled mix of &{alloced_return_f_int_star_int_star_int} + (origin: Library function {tests/value/leaf.i:48}) }}) +tests/value/leaf.i:50:[value] warning: out of bounds read. assert \valid_read(*pp); +tests/value/leaf.i:50:[value] Reading left-value *(*pp). + The location is {{ alloced_return_f_int_star_int_star_int -> [0..34359738336],0%8 }}. + It contains a garbled mix of {alloced_return_f_int_star_int_star_int} + because of Library function {tests/value/leaf.i:48}. +[value] Called Frama_C_show_each_F({{ garbled mix of &{alloced_return_f_int_star_int_star_int} + (origin: Library function {tests/value/leaf.i:48}) }}) +tests/value/leaf.i:52:[value] Reading left-value *pp. + The location is {{ alloced_return_f_int_star_int_star_int -> [0..17179869152],0%32 }}. + It contains a garbled mix of {alloced_return_f_int_star_int_star_int} + because of Library function {tests/value/leaf.i:48}. +[value] Called Frama_C_show_each_G({{ garbled mix of &{alloced_return_f_int_star_int_star_int} + (origin: Library function {tests/value/leaf.i:48}) }}) +tests/value/leaf.i:53:[value] warning: out of bounds read. assert \valid_read(*pp); +tests/value/leaf.i:53:[value] Reading left-value *(*pp). + The location is {{ alloced_return_f_int_star_int_star_int -> [0..34359738336],0%8 }}. + It contains a garbled mix of {alloced_return_f_int_star_int_star_int} + because of Library function {tests/value/leaf.i:48}. +[value] Called Frama_C_show_each_F({{ garbled mix of &{alloced_return_f_int_star_int_star_int} + (origin: Library function {tests/value/leaf.i:48}) }}) +[value] computing for function f_star_int_cint <- main. + Called from tests/value/leaf.i:55. +tests/value/leaf.i:55:[kernel] warning: Neither code nor specification for function f_star_int_cint, generating default assigns from the prototype +[value] using specification for function f_star_int_cint +[value] Done for function f_star_int_cint +[value] computing for function f_star_int_int <- main. + Called from tests/value/leaf.i:57. +tests/value/leaf.i:57:[kernel] warning: Neither code nor specification for function f_star_int_int, generating default assigns from the prototype +[value] using specification for function f_star_int_int +[value] Done for function f_star_int_int +[value] computing for function f_tab3_int_int <- main. + Called from tests/value/leaf.i:58. +tests/value/leaf.i:58:[kernel] warning: Neither code nor specification for function f_tab3_int_int, generating default assigns from the prototype +[value] using specification for function f_tab3_int_int +[value] Done for function f_tab3_int_int +[value] computing for function f_tab_int_int <- main. + Called from tests/value/leaf.i:59. +tests/value/leaf.i:59:[kernel] warning: Neither code nor specification for function f_tab_int_int, generating default assigns from the prototype +[value] using specification for function f_tab_int_int +[value] Done for function f_tab_int_int +[value] computing for function f_st_star_cint_st_star_cint <- main. + Called from tests/value/leaf.i:61. +tests/value/leaf.i:61:[kernel] warning: Neither code nor specification for function f_st_star_cint_st_star_cint, generating default assigns from the prototype +[value] using specification for function f_st_star_cint_st_star_cint +[value] Done for function f_st_star_cint_st_star_cint +[value] computing for function f_st_star_int_st_star_int <- main. + Called from tests/value/leaf.i:62. +tests/value/leaf.i:62:[kernel] warning: Neither code nor specification for function f_st_star_int_st_star_int, generating default assigns from the prototype +[value] using specification for function f_st_star_int_st_star_int +[value] Done for function f_st_star_int_st_star_int +[value] computing for function f_st_tab3_int_st_tab3_int <- main. + Called from tests/value/leaf.i:63. +tests/value/leaf.i:63:[kernel] warning: Neither code nor specification for function f_st_tab3_int_st_tab3_int, generating default assigns from the prototype +[value] using specification for function f_st_tab3_int_st_tab3_int +[value] Done for function f_st_tab3_int_st_tab3_int +[value] computing for function f_star_st_star_cint_int <- main. + Called from tests/value/leaf.i:65. +tests/value/leaf.i:65:[kernel] warning: Neither code nor specification for function f_star_st_star_cint_int, generating default assigns from the prototype +[value] using specification for function f_star_st_star_cint_int +[value] Done for function f_star_st_star_cint_int +[value] computing for function f_star_st_star_int_int <- main. + Called from tests/value/leaf.i:66. +tests/value/leaf.i:66:[kernel] warning: Neither code nor specification for function f_star_st_star_int_int, generating default assigns from the prototype +[value] using specification for function f_star_st_star_int_int +[value] Done for function f_star_st_star_int_int +[value] computing for function f_star_st_tab3_int_int <- main. + Called from tests/value/leaf.i:67. +tests/value/leaf.i:67:[kernel] warning: Neither code nor specification for function f_star_st_tab3_int_int, generating default assigns from the prototype +[value] using specification for function f_star_st_tab3_int_int +[value] Done for function f_star_st_tab3_int_int +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + T[0] ∈ [--..--] + [1] ∈ {0} + [2] ∈ [--..--] + [3] ∈ {0} + [4] ∈ [--..--] + [5] ∈ {0} + [6..8] ∈ [--..--] + [9] ∈ {0} + [10] ∈ [--..--] + [11..29] ∈ {0} + st_star_cint_1 ∈ + {{ garbled mix of &{cv2; + alloced_return_f_st_star_cint_st_star_cint} + (origin: Library function {tests/value/leaf.i:61}) }} + st_star_cint_3 ∈ + {{ garbled mix of &{cv3} + (origin: Library function {tests/value/leaf.i:65}) }} + st_star_int_1 ∈ + {{ garbled mix of &{v2; + alloced_return_f_st_star_int_st_star_int} + (origin: Library function {tests/value/leaf.i:62}) }} + st_star_int_3 ∈ + {{ garbled mix of &{v3} + (origin: Library function {tests/value/leaf.i:66}) }} + st_tab3_int_1 ∈ [--..--] + st_tab3_int_3 ∈ [--..--] + p ∈ {{ &alloced_return_f_int_star_int + [0..2147483644],0%4 }} + pp ∈ {{ &alloced_return_f_int_star_int_star_int + [0..2147483644],0%4 }} + alloced_return_f_int_star_int[bits 0 to ..] ∈ [--..--] +[from] Computing for function main +[from] Computing for function f_int_int <-main +[from] Done for function f_int_int +[from] Computing for function f_int_star_int <-main +[from] Done for function f_int_star_int +[from] Computing for function f_int_star_int_star_int <-main +[from] Done for function f_int_star_int_star_int +[from] Computing for function f_star_int_cint <-main +[from] Done for function f_star_int_cint +[from] Computing for function f_star_int_int <-main +[from] Done for function f_star_int_int +[from] Computing for function f_tab3_int_int <-main +[from] Done for function f_tab3_int_int +[from] Computing for function f_tab_int_int <-main +[from] Done for function f_tab_int_int +[from] Computing for function f_st_star_cint_st_star_cint <-main +[from] Done for function f_st_star_cint_st_star_cint +[from] Computing for function f_st_star_int_st_star_int <-main +[from] Done for function f_st_star_int_st_star_int +[from] Computing for function f_st_tab3_int_st_tab3_int <-main +[from] Done for function f_st_tab3_int_st_tab3_int +[from] Computing for function f_star_st_star_cint_int <-main +[from] Done for function f_star_st_star_cint_int +[from] Computing for function f_star_st_star_int_int <-main +[from] Done for function f_star_st_star_int_int +[from] Computing for function f_star_st_tab3_int_int <-main +[from] Done for function f_star_st_tab3_int_int +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f_int_int: + \result FROM x +[from] Function f_int_star_int: + \result FROM x +[from] Function f_int_star_int_star_int: + \result FROM x +[from] Function f_st_star_cint_st_star_cint: + \result FROM s +[from] Function f_st_star_int_st_star_int: + \result FROM s +[from] Function f_st_tab3_int_st_tab3_int: + \result FROM s +[from] Function f_star_int_cint: + \result FROM T[3] +[from] Function f_star_int_int: + T[4] FROM T[4] (and SELF) + \result FROM T[4] +[from] Function f_star_st_star_cint_int: + st_star_cint_3 FROM st_star_cint_3 (and SELF) + \result FROM st_star_cint_3 +[from] Function f_star_st_star_int_int: + st_star_int_3 FROM st_star_int_3 (and SELF) + \result FROM st_star_int_3 +[from] Function f_star_st_tab3_int_int: + st_tab3_int_3 FROM st_tab3_int_3 (and SELF) + \result FROM st_tab3_int_3 +[from] Function f_tab3_int_int: + T[6..8] FROM T[6..8] (and SELF) + \result FROM T[6..8] +[from] Function f_tab_int_int: + T[10] FROM T[10] (and SELF) + \result FROM T[10] +[from] Function main: + T[0] FROM \nothing + [2] FROM T[3] + [4] FROM T[4] (and SELF) + [6..8] FROM T[6..8] (and SELF) + [10] FROM T[10] (and SELF) + st_star_cint_1 FROM st_star_cint_2 + st_star_cint_3 FROM st_star_cint_3 (and SELF) + st_star_int_1 FROM st_star_int_2 + st_star_int_3 FROM st_star_int_3 (and SELF) + st_tab3_int_1 FROM st_tab3_int_2 + st_tab3_int_3 FROM st_tab3_int_3 (and SELF) + alloced_return_f_int_star_int[bits 0 to 17179869183] + FROM \nothing (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + T{[0]; [2]; [4]; [6..8]; [10]}; st_star_cint_1; st_star_cint_3; + st_star_int_1; st_star_int_3; st_tab3_int_1; st_tab3_int_3; p; pp; + alloced_return_f_int_star_int[bits 0 to 17179869183] +[inout] Inputs for function main: + T{[3..4]; [6..8]; [10]}; st_star_cint_2; st_star_cint_3; st_star_int_2; + st_star_int_3; st_tab3_int_2; st_tab3_int_3; + alloced_return_f_int_star_int[bits 0 to 17179869183]; + alloced_return_f_int_star_int_star_int[bits 0 to ..] diff --git a/tests/value/oracle_symblocs/leaf2.err.oracle b/tests/value/oracle_symblocs/leaf2.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/leaf2.res.oracle b/tests/value/oracle_symblocs/leaf2.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..4883eb88ad5646a9898585fc7a1f28a953bd05f2 --- /dev/null +++ b/tests/value/oracle_symblocs/leaf2.res.oracle @@ -0,0 +1,43 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/leaf2.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + G ∈ {0} + H ∈ {0} + I ∈ {0} +[value] computing for function f <- main. + Called from tests/value/leaf2.i:6. +tests/value/leaf2.i:6:[kernel] warning: Neither code nor specification for function f, generating default assigns from the prototype +[value] using specification for function f +[value] Done for function f +tests/value/leaf2.i:7:[value] warning: pointer comparison. + assert \pointer_comparable((void *)G, (void *)((int)(-1))); +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + G ∈ + {{ garbled mix of &{I} + (origin: Library function {tests/value/leaf2.i:6}) }} + H ∈ + {{ garbled mix of &{I} + (origin: Library function {tests/value/leaf2.i:6}) }} +[from] Computing for function main +[from] Computing for function f <-main +[from] Done for function f +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + H FROM q; i; H (and SELF) + \result FROM q; i; H +[from] Function main: + G FROM H + H FROM H (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + G; H +[inout] Inputs for function main: + G; H diff --git a/tests/value/oracle_symblocs/leaf_spec.0.err.oracle b/tests/value/oracle_symblocs/leaf_spec.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/leaf_spec.0.res.oracle b/tests/value/oracle_symblocs/leaf_spec.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..1b0311f3eb9ccb7155f7e87dc574ec5bc852624e --- /dev/null +++ b/tests/value/oracle_symblocs/leaf_spec.0.res.oracle @@ -0,0 +1,69 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/leaf_spec.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] computing for function f1 <- main. + Called from tests/value/leaf_spec.i:19. +tests/value/leaf_spec.i:19:[kernel] warning: Neither code nor specification for function f1, generating default assigns from the prototype +[value] using specification for function f1 +[value] Done for function f1 +[value] computing for function g <- main. + Called from tests/value/leaf_spec.i:20. +tests/value/leaf_spec.i:20:[kernel] warning: Neither code nor specification for function g, generating default assigns from the prototype +[value] using specification for function g +[value] Done for function g +[value] computing for function h <- main. + Called from tests/value/leaf_spec.i:21. +tests/value/leaf_spec.i:21:[kernel] warning: Neither code nor specification for function h, generating default assigns from the prototype +[value] using specification for function h +[value] Done for function h +[value] computing for function k <- main. + Called from tests/value/leaf_spec.i:22. +tests/value/leaf_spec.i:22:[kernel] warning: Neither code nor specification for function k, generating default assigns from the prototype +[value] using specification for function k +tests/value/leaf_spec.i:22:[value] warning: Completely invalid destination for assigns clause *l. Ignoring. +[value] Done for function k +[value] computing for function k0 <- main. + Called from tests/value/leaf_spec.i:22. +tests/value/leaf_spec.i:22:[kernel] warning: Neither code nor specification for function k0, generating default assigns from the prototype +[value] using specification for function k0 +[value] Done for function k0 +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + +[from] Computing for function main +[from] Computing for function f1 <-main +[from] Done for function f1 +[from] Computing for function g <-main +[from] Done for function g +[from] Computing for function h <-main +[from] Done for function h +[from] Computing for function k <-main +[from] Done for function k +[from] Computing for function k0 <-main +[from] Done for function k0 +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f1: + NO EFFECTS +[from] Function g: + \result FROM x +[from] Function h: + \result FROM y +[from] Function k: + \result FROM \nothing +[from] Function k0: + \result FROM \nothing +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + \nothing +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/leaf_spec.1.err.oracle b/tests/value/oracle_symblocs/leaf_spec.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/leaf_spec.1.res.oracle b/tests/value/oracle_symblocs/leaf_spec.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..8a97133b84b843ba90178a94e3594ae472445dcb --- /dev/null +++ b/tests/value/oracle_symblocs/leaf_spec.1.res.oracle @@ -0,0 +1,34 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/leaf_spec.i (no preprocessing) +[value] Analyzing a complete application starting at main1 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] computing for function f <- main1. + Called from tests/value/leaf_spec.i:27. +tests/value/leaf_spec.i:27:[kernel] warning: Neither code nor specification for function f, generating default assigns from the prototype +[value] using specification for function f +tests/value/leaf_spec.i:27:[value] warning: Completely invalid destination for assigns clause *x. Ignoring. +tests/value/leaf_spec.i:27:[value] warning: Completely invalid destination for assigns clause *y. Ignoring. +[value] Done for function f +[value] Recording results for main1 +[value] done for function main1 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main1: + +[from] Computing for function main1 +[from] Computing for function f <-main1 +[from] Done for function f +[from] Done for function main1 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + NO EFFECTS +[from] Function main1: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main1: + \nothing +[inout] Inputs for function main1: + \nothing diff --git a/tests/value/oracle_symblocs/library.err.oracle b/tests/value/oracle_symblocs/library.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/library.res.oracle b/tests/value/oracle_symblocs/library.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..b8ef859703aa48be297f61d2ef99fe197f390da3 --- /dev/null +++ b/tests/value/oracle_symblocs/library.res.oracle @@ -0,0 +1,492 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/library.i (no preprocessing) +[value] Analyzing an incomplete application starting at main +[value] Computing initial state +tests/value/library.i:44:[value] warning: during initialization of variable 'ss', size of type 'struct ss' cannot be + computed (abstract type 'struct ss') +[value] Initial state computed +[value:initial-state] Values of globals at initialization + G ∈ {{ NULL ; &S_G[0] }} + v ∈ [--..--] + G0 ∈ [--..--] + G1 ∈ {{ NULL ; &S_G1[0] }} + f ∈ {0} + s ∈ {0} + ss.p[0] ∈ {{ NULL ; (struct ss *)&S_0_p_ss }} + .p[1] ∈ {{ NULL ; (struct ss *)&S_1_p_ss }} + .p[2..7] ∈ {{ NULL ; (struct ss *)&S_0_p_ss ; (struct ss *)&S_1_p_ss }} + .q ∈ {{ NULL ; &S_q_ss[0] }} + ff ∈ {0} + s_bitfield.bf1 ∈ [--..--] + .[bits 5 to 15] ∈ UNINITIALIZED + .control ∈ [--..--] + .[bits 30 to 31] ∈ UNINITIALIZED + S_G[0] ∈ {{ NULL ; &S_0_S_G[0] }} + [1] ∈ {{ NULL ; &S_1_S_G[0] }} + S_0_S_G[0] ∈ {{ NULL ; &S_0_S_0_S_G[0] }} + [1] ∈ {{ NULL ; &S_1_S_0_S_G[0] }} + S_0_S_0_S_G[0] ∈ {{ NULL ; &S_0_S_0_S_0_S_G[0] }} + [1] ∈ {{ NULL ; &S_1_S_0_S_0_S_G[0] }} + S_0_S_0_S_0_S_G[0..1] ∈ [--..--] + S_1_S_0_S_0_S_G[0..1] ∈ [--..--] + S_1_S_0_S_G[0] ∈ {{ NULL ; &S_0_S_1_S_0_S_G[0] }} + [1] ∈ {{ NULL ; &S_1_S_1_S_0_S_G[0] }} + S_0_S_1_S_0_S_G[0..1] ∈ [--..--] + S_1_S_1_S_0_S_G[0..1] ∈ [--..--] + S_1_S_G[0] ∈ {{ NULL ; &S_0_S_1_S_G[0] }} + [1] ∈ {{ NULL ; &S_1_S_1_S_G[0] }} + S_0_S_1_S_G[0] ∈ {{ NULL ; &S_0_S_0_S_1_S_G[0] }} + [1] ∈ {{ NULL ; &S_1_S_0_S_1_S_G[0] }} + S_0_S_0_S_1_S_G[0..1] ∈ [--..--] + S_1_S_0_S_1_S_G[0..1] ∈ [--..--] + S_1_S_1_S_G[0] ∈ {{ NULL ; &S_0_S_1_S_1_S_G[0] }} + [1] ∈ {{ NULL ; &S_1_S_1_S_1_S_G[0] }} + S_0_S_1_S_1_S_G[0..1] ∈ [--..--] + S_1_S_1_S_1_S_G[0..1] ∈ [--..--] + S_G1[0..1] ∈ [--..--] + S_0_p_ss[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + S_1_p_ss[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + S_q_ss[0][0] ∈ {{ NULL ; (struct ss *)&S_0_0_S_q_ss }} + [0][1] ∈ {{ NULL ; (struct ss *)&S_1_0_S_q_ss }} + [0][2..7] ∈ + {{ NULL ; (struct ss *)&S_0_0_S_q_ss ; (struct ss *)&S_1_0_S_q_ss }} + [1][0] ∈ {{ NULL ; (struct ss *)&S_0_1_S_q_ss }} + [1][1] ∈ {{ NULL ; (struct ss *)&S_1_1_S_q_ss }} + [1][2..7] ∈ + {{ NULL ; (struct ss *)&S_0_1_S_q_ss ; (struct ss *)&S_1_1_S_q_ss }} + S_0_0_S_q_ss[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + S_1_0_S_q_ss[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + S_0_1_S_q_ss[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + S_1_1_S_q_ss[bits 0 to ..] ∈ [--..--] or UNINITIALIZED +[value] computing for function f_int <- main. + Called from tests/value/library.i:17. +tests/value/library.i:17:[kernel] warning: Neither code nor specification for function f_int, generating default assigns from the prototype +[value] using specification for function f_int +[value] Done for function f_int +[value] computing for function f_star_int <- main. + Called from tests/value/library.i:18. +tests/value/library.i:18:[kernel] warning: Neither code nor specification for function f_star_int, generating default assigns from the prototype +[value] using specification for function f_star_int +[value] Done for function f_star_int +tests/value/library.i:19:[value] warning: out of bounds write. assert \valid(G1); +tests/value/library.i:20:[value] warning: out of bounds read. assert \valid_read(G); +tests/value/library.i:20:[value] warning: out of bounds read. assert \valid_read(*G); +tests/value/library.i:20:[value] warning: out of bounds read. assert \valid_read(*(*G)); +tests/value/library.i:20:[value] warning: out of bounds write. assert \valid(*(*(*G))); +[value] computing for function gen <- main. + Called from tests/value/library.i:24. +tests/value/library.i:24:[kernel] warning: Neither code nor specification for function gen, generating default assigns from the prototype +[value] using specification for function gen +[value] Done for function gen +tests/value/library.i:25:[value] warning: pointer to function with incompatible type. assert \valid_function(f); +tests/value/library.i:26:[value] warning: pointer to function with incompatible type. assert \valid_function(g); +tests/value/library.i:27:[value] warning: pointer to function with incompatible type. assert \valid_function(h); +[value] computing for function alloced_return_gen <- main. + Called from tests/value/library.i:27. +tests/value/library.i:27:[kernel] warning: Neither code nor specification for function alloced_return_gen, generating default assigns from the prototype +[value] using specification for function alloced_return_gen +[value] Done for function alloced_return_gen +[value] computing for function i <- main. + Called from tests/value/library.i:28. +tests/value/library.i:28:[kernel] warning: Neither code nor specification for function i, generating default assigns from the prototype +[value] using specification for function i +[value] Done for function i +tests/value/library.i:29:[value] warning: out of bounds read. assert \valid_read(pf); +[value] computing for function k <- main. + Called from tests/value/library.i:32. +tests/value/library.i:32:[kernel] warning: Neither code nor specification for function k, generating default assigns from the prototype +[value] using specification for function k +[value] Done for function k +tests/value/library.i:33:[value] warning: out of bounds write. assert \valid(pd); +[value] Recording results for main +[value] done for function main +tests/value/library.i:25:[value] assertion 'Value,function_pointer' got final status invalid. +tests/value/library.i:26:[value] assertion 'Value,function_pointer' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + G0 ∈ [--..--] + G1 ∈ {{ &alloced_return_f_star_int + [0..2147483644],0%4 }} + x ∈ [--..--] + y ∈ {4} + h ∈ {{ &alloced_return_gen }} + z3 ∈ [--..--] + pf ∈ {{ &alloced_return_i + [0..2147483644],0%4 }} + vf ∈ [-3.40282346639e+38 .. 3.40282346639e+38] + pd ∈ {{ &alloced_return_k + [0..2147483640],0%8 }} + S_0_S_0_S_0_S_G[0] ∈ {1} + [1] ∈ [--..--] + alloced_return_f_star_int[bits 0 to ..] ∈ [--..--] + alloced_return_i[bits 0 to ..]# ∈ + [-3.40282346639e+38 .. 3.40282346639e+38] repeated %32 + alloced_return_k[bits 0 to ..]# ∈ + [-1.79769313486e+308 .. 1.79769313486e+308] repeated %64 +[from] Computing for function main +[from] Computing for function f_int <-main +[from] Done for function f_int +[from] Computing for function f_star_int <-main +[from] Done for function f_star_int +[from] Computing for function gen <-main +[from] Done for function gen +[from] Computing for function alloced_return_gen <-main +[from] Done for function alloced_return_gen +[from] Computing for function i <-main +[from] Done for function i +[from] Computing for function k <-main +[from] Done for function k +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function alloced_return_gen: + x FROM x; y (and SELF) + \result FROM x; y +[from] Function f_int: + \result FROM x +[from] Function f_star_int: + \result FROM x +[from] Function gen: + \result FROM \nothing +[from] Function i: + \result FROM \nothing +[from] Function k: + \result FROM \nothing +[from] Function main: + G0 FROM \nothing + G1 FROM \nothing + S_0_S_0_S_0_S_G[0] FROM G; S_G[0]; S_0_S_G[0]; S_0_S_0_S_G[0] + alloced_return_f_star_int[bits 0 to 17179869183] FROM \nothing (and SELF) + alloced_return_i[bits 0 to 17179869183] + FROM alloced_return_i[bits 0 to 17179869183] (and SELF) + alloced_return_k[bits 0 to 17179869183] FROM \nothing (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + G0; G1; x; y; h; z1; z2; z3; pf; vf; pd; S_0_S_0_S_0_S_G[0]; + alloced_return_f_star_int[bits 0 to 17179869183]; + alloced_return_i[bits 0 to 17179869183]; + alloced_return_k[bits 0 to 17179869183] +[inout] Inputs for function main: + G; v; G1; f; S_G[0]; S_0_S_G[0]; S_0_S_0_S_G[0]; + alloced_return_i[bits 0 to 17179869183] +[value] Analyzing an incomplete application starting at main2 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + G ∈ {{ NULL ; &S_G[0] }} + v ∈ [--..--] + G0 ∈ [--..--] + G1 ∈ {{ NULL ; &S_G1[0] }} + f ∈ {0} + s ∈ {0} + ss.p[0] ∈ {{ NULL ; (struct ss *)&S_0_p_ss }} + .p[1] ∈ {{ NULL ; (struct ss *)&S_1_p_ss }} + .p[2..7] ∈ {{ NULL ; (struct ss *)&S_0_p_ss ; (struct ss *)&S_1_p_ss }} + .q ∈ {{ NULL ; &S_q_ss[0] }} + ff ∈ {0} + s_bitfield.bf1 ∈ [--..--] + .[bits 5 to 15] ∈ UNINITIALIZED + .control ∈ [--..--] + .[bits 30 to 31] ∈ UNINITIALIZED + S_G[0] ∈ {{ NULL ; &S_0_S_G[0] }} + [1] ∈ {{ NULL ; &S_1_S_G[0] }} + S_0_S_G[0] ∈ {{ NULL ; &S_0_S_0_S_G[0] }} + [1] ∈ {{ NULL ; &S_1_S_0_S_G[0] }} + S_0_S_0_S_G[0] ∈ {{ NULL ; &S_0_S_0_S_0_S_G[0] }} + [1] ∈ {{ NULL ; &S_1_S_0_S_0_S_G[0] }} + S_0_S_0_S_0_S_G[0..1] ∈ [--..--] + S_1_S_0_S_0_S_G[0..1] ∈ [--..--] + S_1_S_0_S_G[0] ∈ {{ NULL ; &S_0_S_1_S_0_S_G[0] }} + [1] ∈ {{ NULL ; &S_1_S_1_S_0_S_G[0] }} + S_0_S_1_S_0_S_G[0..1] ∈ [--..--] + S_1_S_1_S_0_S_G[0..1] ∈ [--..--] + S_1_S_G[0] ∈ {{ NULL ; &S_0_S_1_S_G[0] }} + [1] ∈ {{ NULL ; &S_1_S_1_S_G[0] }} + S_0_S_1_S_G[0] ∈ {{ NULL ; &S_0_S_0_S_1_S_G[0] }} + [1] ∈ {{ NULL ; &S_1_S_0_S_1_S_G[0] }} + S_0_S_0_S_1_S_G[0..1] ∈ [--..--] + S_1_S_0_S_1_S_G[0..1] ∈ [--..--] + S_1_S_1_S_G[0] ∈ {{ NULL ; &S_0_S_1_S_1_S_G[0] }} + [1] ∈ {{ NULL ; &S_1_S_1_S_1_S_G[0] }} + S_0_S_1_S_1_S_G[0..1] ∈ [--..--] + S_1_S_1_S_1_S_G[0..1] ∈ [--..--] + S_G1[0..1] ∈ [--..--] + S_0_p_ss[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + S_1_p_ss[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + S_q_ss[0][0] ∈ {{ NULL ; (struct ss *)&S_0_0_S_q_ss }} + [0][1] ∈ {{ NULL ; (struct ss *)&S_1_0_S_q_ss }} + [0][2..7] ∈ + {{ NULL ; (struct ss *)&S_0_0_S_q_ss ; (struct ss *)&S_1_0_S_q_ss }} + [1][0] ∈ {{ NULL ; (struct ss *)&S_0_1_S_q_ss }} + [1][1] ∈ {{ NULL ; (struct ss *)&S_1_1_S_q_ss }} + [1][2..7] ∈ + {{ NULL ; (struct ss *)&S_0_1_S_q_ss ; (struct ss *)&S_1_1_S_q_ss }} + S_0_0_S_q_ss[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + S_1_0_S_q_ss[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + S_0_1_S_q_ss[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + S_1_1_S_q_ss[bits 0 to ..] ∈ [--..--] or UNINITIALIZED +tests/value/library.i:56:[value] warning: assertion 'Unknown' got status unknown. +tests/value/library.i:57:[value] assertion got status valid. +tests/value/library.i:58:[value] assertion got status valid. +tests/value/library.i:60:[value] warning: assertion 'Unknown' got status unknown. +[value] Called Frama_C_show_each_reached_1() +tests/value/library.i:64:[value] warning: assertion 'Unknown' got status unknown. +[value] Called Frama_C_show_each_reached_2() +tests/value/library.i:68:[value] warning: assertion 'Unknown_Invalid' got status invalid (stopping propagation). +[value] Recording results for main2 +[value] done for function main2 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main2: + +[from] Computing for function main2 +[from] Done for function main2 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main2: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main2: + \nothing +[inout] Inputs for function main2: + v +[value] Analyzing an incomplete application starting at main2 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + G ∈ {{ NULL ; &S_G_0[0] }} + v ∈ [--..--] + G0 ∈ [--..--] + G1 ∈ {{ NULL ; &S_G1_0[0] }} + f ∈ {0} + s ∈ {0} + ss.p[0] ∈ {{ NULL ; (struct ss *)&S_0_p_ss_0 }} + .p[1] ∈ {{ NULL ; (struct ss *)&S_1_p_ss_0 }} + .p[2] ∈ {{ NULL ; (struct ss *)&S_2_p_ss }} + .p[3] ∈ {{ NULL ; (struct ss *)&S_3_p_ss }} + .p[4..7] ∈ + {{ NULL ; (struct ss *)&S_0_p_ss_0 ; (struct ss *)&S_1_p_ss_0 ; + (struct ss *)&S_2_p_ss ; (struct ss *)&S_3_p_ss }} + .q ∈ {{ NULL ; &S_q_ss_0[0] }} + ff ∈ {0} + s_bitfield.bf1 ∈ [--..--] + .[bits 5 to 15] ∈ UNINITIALIZED + .control ∈ [--..--] + .[bits 30 to 31] ∈ UNINITIALIZED + S_G_0[0] ∈ {{ NULL ; &S_0_S_G_0[0] }} + [1] ∈ {{ NULL ; &S_1_S_G_0[0] }} + [2] ∈ {{ NULL ; &S_2_S_G_0[0] }} + [3] ∈ {{ NULL ; &S_3_S_G_0[0] }} + S_0_S_G_0[0] ∈ {{ NULL ; &S_0_S_0_S_G_0[0] }} + [1] ∈ {{ NULL ; &S_1_S_0_S_G_0[0] }} + [2] ∈ {{ NULL ; &S_2_S_0_S_G_0[0] }} + [3] ∈ {{ NULL ; &S_3_S_0_S_G_0[0] }} + S_0_S_0_S_G_0[0] ∈ {{ NULL ; &S_0_S_0_S_0_S_G_0[0] }} + [1] ∈ {{ NULL ; &S_1_S_0_S_0_S_G_0[0] }} + [2] ∈ {{ NULL ; &S_2_S_0_S_0_S_G_0[0] }} + [3] ∈ {{ NULL ; &S_3_S_0_S_0_S_G_0[0] }} + S_0_S_0_S_0_S_G_0[0..3] ∈ [--..--] + S_1_S_0_S_0_S_G_0[0..3] ∈ [--..--] + S_2_S_0_S_0_S_G_0[0..3] ∈ [--..--] + S_3_S_0_S_0_S_G_0[0..3] ∈ [--..--] + S_1_S_0_S_G_0[0] ∈ {{ NULL ; &S_0_S_1_S_0_S_G_0[0] }} + [1] ∈ {{ NULL ; &S_1_S_1_S_0_S_G_0[0] }} + [2] ∈ {{ NULL ; &S_2_S_1_S_0_S_G_0[0] }} + [3] ∈ {{ NULL ; &S_3_S_1_S_0_S_G_0[0] }} + S_0_S_1_S_0_S_G_0[0..3] ∈ [--..--] + S_1_S_1_S_0_S_G_0[0..3] ∈ [--..--] + S_2_S_1_S_0_S_G_0[0..3] ∈ [--..--] + S_3_S_1_S_0_S_G_0[0..3] ∈ [--..--] + S_2_S_0_S_G_0[0] ∈ {{ NULL ; &S_0_S_2_S_0_S_G_0[0] }} + [1] ∈ {{ NULL ; &S_1_S_2_S_0_S_G_0[0] }} + [2] ∈ {{ NULL ; &S_2_S_2_S_0_S_G_0[0] }} + [3] ∈ {{ NULL ; &S_3_S_2_S_0_S_G_0[0] }} + S_0_S_2_S_0_S_G_0[0..3] ∈ [--..--] + S_1_S_2_S_0_S_G_0[0..3] ∈ [--..--] + S_2_S_2_S_0_S_G_0[0..3] ∈ [--..--] + S_3_S_2_S_0_S_G_0[0..3] ∈ [--..--] + S_3_S_0_S_G_0[0] ∈ {{ NULL ; &S_0_S_3_S_0_S_G_0[0] }} + [1] ∈ {{ NULL ; &S_1_S_3_S_0_S_G_0[0] }} + [2] ∈ {{ NULL ; &S_2_S_3_S_0_S_G_0[0] }} + [3] ∈ {{ NULL ; &S_3_S_3_S_0_S_G_0[0] }} + S_0_S_3_S_0_S_G_0[0..3] ∈ [--..--] + S_1_S_3_S_0_S_G_0[0..3] ∈ [--..--] + S_2_S_3_S_0_S_G_0[0..3] ∈ [--..--] + S_3_S_3_S_0_S_G_0[0..3] ∈ [--..--] + S_1_S_G_0[0] ∈ {{ NULL ; &S_0_S_1_S_G_0[0] }} + [1] ∈ {{ NULL ; &S_1_S_1_S_G_0[0] }} + [2] ∈ {{ NULL ; &S_2_S_1_S_G_0[0] }} + [3] ∈ {{ NULL ; &S_3_S_1_S_G_0[0] }} + S_0_S_1_S_G_0[0] ∈ {{ NULL ; &S_0_S_0_S_1_S_G_0[0] }} + [1] ∈ {{ NULL ; &S_1_S_0_S_1_S_G_0[0] }} + [2] ∈ {{ NULL ; &S_2_S_0_S_1_S_G_0[0] }} + [3] ∈ {{ NULL ; &S_3_S_0_S_1_S_G_0[0] }} + S_0_S_0_S_1_S_G_0[0..3] ∈ [--..--] + S_1_S_0_S_1_S_G_0[0..3] ∈ [--..--] + S_2_S_0_S_1_S_G_0[0..3] ∈ [--..--] + S_3_S_0_S_1_S_G_0[0..3] ∈ [--..--] + S_1_S_1_S_G_0[0] ∈ {{ NULL ; &S_0_S_1_S_1_S_G_0[0] }} + [1] ∈ {{ NULL ; &S_1_S_1_S_1_S_G_0[0] }} + [2] ∈ {{ NULL ; &S_2_S_1_S_1_S_G_0[0] }} + [3] ∈ {{ NULL ; &S_3_S_1_S_1_S_G_0[0] }} + S_0_S_1_S_1_S_G_0[0..3] ∈ [--..--] + S_1_S_1_S_1_S_G_0[0..3] ∈ [--..--] + S_2_S_1_S_1_S_G_0[0..3] ∈ [--..--] + S_3_S_1_S_1_S_G_0[0..3] ∈ [--..--] + S_2_S_1_S_G_0[0] ∈ {{ NULL ; &S_0_S_2_S_1_S_G_0[0] }} + [1] ∈ {{ NULL ; &S_1_S_2_S_1_S_G_0[0] }} + [2] ∈ {{ NULL ; &S_2_S_2_S_1_S_G_0[0] }} + [3] ∈ {{ NULL ; &S_3_S_2_S_1_S_G_0[0] }} + S_0_S_2_S_1_S_G_0[0..3] ∈ [--..--] + S_1_S_2_S_1_S_G_0[0..3] ∈ [--..--] + S_2_S_2_S_1_S_G_0[0..3] ∈ [--..--] + S_3_S_2_S_1_S_G_0[0..3] ∈ [--..--] + S_3_S_1_S_G_0[0] ∈ {{ NULL ; &S_0_S_3_S_1_S_G_0[0] }} + [1] ∈ {{ NULL ; &S_1_S_3_S_1_S_G_0[0] }} + [2] ∈ {{ NULL ; &S_2_S_3_S_1_S_G_0[0] }} + [3] ∈ {{ NULL ; &S_3_S_3_S_1_S_G_0[0] }} + S_0_S_3_S_1_S_G_0[0..3] ∈ [--..--] + S_1_S_3_S_1_S_G_0[0..3] ∈ [--..--] + S_2_S_3_S_1_S_G_0[0..3] ∈ [--..--] + S_3_S_3_S_1_S_G_0[0..3] ∈ [--..--] + S_2_S_G_0[0] ∈ {{ NULL ; &S_0_S_2_S_G_0[0] }} + [1] ∈ {{ NULL ; &S_1_S_2_S_G_0[0] }} + [2] ∈ {{ NULL ; &S_2_S_2_S_G_0[0] }} + [3] ∈ {{ NULL ; &S_3_S_2_S_G_0[0] }} + S_0_S_2_S_G_0[0] ∈ {{ NULL ; &S_0_S_0_S_2_S_G_0[0] }} + [1] ∈ {{ NULL ; &S_1_S_0_S_2_S_G_0[0] }} + [2] ∈ {{ NULL ; &S_2_S_0_S_2_S_G_0[0] }} + [3] ∈ {{ NULL ; &S_3_S_0_S_2_S_G_0[0] }} + S_0_S_0_S_2_S_G_0[0..3] ∈ [--..--] + S_1_S_0_S_2_S_G_0[0..3] ∈ [--..--] + S_2_S_0_S_2_S_G_0[0..3] ∈ [--..--] + S_3_S_0_S_2_S_G_0[0..3] ∈ [--..--] + S_1_S_2_S_G_0[0] ∈ {{ NULL ; &S_0_S_1_S_2_S_G_0[0] }} + [1] ∈ {{ NULL ; &S_1_S_1_S_2_S_G_0[0] }} + [2] ∈ {{ NULL ; &S_2_S_1_S_2_S_G_0[0] }} + [3] ∈ {{ NULL ; &S_3_S_1_S_2_S_G_0[0] }} + S_0_S_1_S_2_S_G_0[0..3] ∈ [--..--] + S_1_S_1_S_2_S_G_0[0..3] ∈ [--..--] + S_2_S_1_S_2_S_G_0[0..3] ∈ [--..--] + S_3_S_1_S_2_S_G_0[0..3] ∈ [--..--] + S_2_S_2_S_G_0[0] ∈ {{ NULL ; &S_0_S_2_S_2_S_G_0[0] }} + [1] ∈ {{ NULL ; &S_1_S_2_S_2_S_G_0[0] }} + [2] ∈ {{ NULL ; &S_2_S_2_S_2_S_G_0[0] }} + [3] ∈ {{ NULL ; &S_3_S_2_S_2_S_G_0[0] }} + S_0_S_2_S_2_S_G_0[0..3] ∈ [--..--] + S_1_S_2_S_2_S_G_0[0..3] ∈ [--..--] + S_2_S_2_S_2_S_G_0[0..3] ∈ [--..--] + S_3_S_2_S_2_S_G_0[0..3] ∈ [--..--] + S_3_S_2_S_G_0[0] ∈ {{ NULL ; &S_0_S_3_S_2_S_G_0[0] }} + [1] ∈ {{ NULL ; &S_1_S_3_S_2_S_G_0[0] }} + [2] ∈ {{ NULL ; &S_2_S_3_S_2_S_G_0[0] }} + [3] ∈ {{ NULL ; &S_3_S_3_S_2_S_G_0[0] }} + S_0_S_3_S_2_S_G_0[0..3] ∈ [--..--] + S_1_S_3_S_2_S_G_0[0..3] ∈ [--..--] + S_2_S_3_S_2_S_G_0[0..3] ∈ [--..--] + S_3_S_3_S_2_S_G_0[0..3] ∈ [--..--] + S_3_S_G_0[0] ∈ {{ NULL ; &S_0_S_3_S_G_0[0] }} + [1] ∈ {{ NULL ; &S_1_S_3_S_G_0[0] }} + [2] ∈ {{ NULL ; &S_2_S_3_S_G_0[0] }} + [3] ∈ {{ NULL ; &S_3_S_3_S_G_0[0] }} + S_0_S_3_S_G_0[0] ∈ {{ NULL ; &S_0_S_0_S_3_S_G_0[0] }} + [1] ∈ {{ NULL ; &S_1_S_0_S_3_S_G_0[0] }} + [2] ∈ {{ NULL ; &S_2_S_0_S_3_S_G_0[0] }} + [3] ∈ {{ NULL ; &S_3_S_0_S_3_S_G_0[0] }} + S_0_S_0_S_3_S_G_0[0..3] ∈ [--..--] + S_1_S_0_S_3_S_G_0[0..3] ∈ [--..--] + S_2_S_0_S_3_S_G_0[0..3] ∈ [--..--] + S_3_S_0_S_3_S_G_0[0..3] ∈ [--..--] + S_1_S_3_S_G_0[0] ∈ {{ NULL ; &S_0_S_1_S_3_S_G_0[0] }} + [1] ∈ {{ NULL ; &S_1_S_1_S_3_S_G_0[0] }} + [2] ∈ {{ NULL ; &S_2_S_1_S_3_S_G_0[0] }} + [3] ∈ {{ NULL ; &S_3_S_1_S_3_S_G_0[0] }} + S_0_S_1_S_3_S_G_0[0..3] ∈ [--..--] + S_1_S_1_S_3_S_G_0[0..3] ∈ [--..--] + S_2_S_1_S_3_S_G_0[0..3] ∈ [--..--] + S_3_S_1_S_3_S_G_0[0..3] ∈ [--..--] + S_2_S_3_S_G_0[0] ∈ {{ NULL ; &S_0_S_2_S_3_S_G_0[0] }} + [1] ∈ {{ NULL ; &S_1_S_2_S_3_S_G_0[0] }} + [2] ∈ {{ NULL ; &S_2_S_2_S_3_S_G_0[0] }} + [3] ∈ {{ NULL ; &S_3_S_2_S_3_S_G_0[0] }} + S_0_S_2_S_3_S_G_0[0..3] ∈ [--..--] + S_1_S_2_S_3_S_G_0[0..3] ∈ [--..--] + S_2_S_2_S_3_S_G_0[0..3] ∈ [--..--] + S_3_S_2_S_3_S_G_0[0..3] ∈ [--..--] + S_3_S_3_S_G_0[0] ∈ {{ NULL ; &S_0_S_3_S_3_S_G_0[0] }} + [1] ∈ {{ NULL ; &S_1_S_3_S_3_S_G_0[0] }} + [2] ∈ {{ NULL ; &S_2_S_3_S_3_S_G_0[0] }} + [3] ∈ {{ NULL ; &S_3_S_3_S_3_S_G_0[0] }} + S_0_S_3_S_3_S_G_0[0..3] ∈ [--..--] + S_1_S_3_S_3_S_G_0[0..3] ∈ [--..--] + S_2_S_3_S_3_S_G_0[0..3] ∈ [--..--] + S_3_S_3_S_3_S_G_0[0..3] ∈ [--..--] + S_G1_0[0..3] ∈ [--..--] + S_0_p_ss_0[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + S_1_p_ss_0[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + S_2_p_ss[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + S_3_p_ss[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + S_q_ss_0[0][0] ∈ {{ NULL ; (struct ss *)&S_0_0_S_q_ss_0 }} + [0][1] ∈ {{ NULL ; (struct ss *)&S_1_0_S_q_ss_0 }} + [0][2] ∈ {{ NULL ; (struct ss *)&S_2_0_S_q_ss_0 }} + [0][3] ∈ {{ NULL ; (struct ss *)&S_3_0_S_q_ss_0 }} + [0][4..7] ∈ + {{ NULL ; (struct ss *)&S_0_0_S_q_ss_0 ; + (struct ss *)&S_1_0_S_q_ss_0 ; (struct ss *)&S_2_0_S_q_ss_0 ; + (struct ss *)&S_3_0_S_q_ss_0 }} + [1][0] ∈ {{ NULL ; (struct ss *)&S_0_1_S_q_ss_0 }} + [1][1] ∈ {{ NULL ; (struct ss *)&S_1_1_S_q_ss_0 }} + [1][2] ∈ {{ NULL ; (struct ss *)&S_2_1_S_q_ss_0 }} + [1][3] ∈ {{ NULL ; (struct ss *)&S_3_1_S_q_ss_0 }} + [1][4..7] ∈ + {{ NULL ; (struct ss *)&S_0_1_S_q_ss_0 ; + (struct ss *)&S_1_1_S_q_ss_0 ; (struct ss *)&S_2_1_S_q_ss_0 ; + (struct ss *)&S_3_1_S_q_ss_0 }} + [2][0] ∈ {{ NULL ; (struct ss *)&S_0_2_S_q_ss_0 }} + [2][1] ∈ {{ NULL ; (struct ss *)&S_1_2_S_q_ss_0 }} + [2][2] ∈ {{ NULL ; (struct ss *)&S_2_2_S_q_ss_0 }} + [2][3] ∈ {{ NULL ; (struct ss *)&S_3_2_S_q_ss_0 }} + [2][4..7] ∈ + {{ NULL ; (struct ss *)&S_0_2_S_q_ss_0 ; + (struct ss *)&S_1_2_S_q_ss_0 ; (struct ss *)&S_2_2_S_q_ss_0 ; + (struct ss *)&S_3_2_S_q_ss_0 }} + [3][0] ∈ {{ NULL ; (struct ss *)&S_0_3_S_q_ss_0 }} + [3][1] ∈ {{ NULL ; (struct ss *)&S_1_3_S_q_ss_0 }} + [3][2] ∈ {{ NULL ; (struct ss *)&S_2_3_S_q_ss_0 }} + [3][3] ∈ {{ NULL ; (struct ss *)&S_3_3_S_q_ss_0 }} + [3][4..7] ∈ + {{ NULL ; (struct ss *)&S_0_3_S_q_ss_0 ; + (struct ss *)&S_1_3_S_q_ss_0 ; (struct ss *)&S_2_3_S_q_ss_0 ; + (struct ss *)&S_3_3_S_q_ss_0 }} + S_0_0_S_q_ss_0[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + S_1_0_S_q_ss_0[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + S_2_0_S_q_ss_0[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + S_3_0_S_q_ss_0[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + S_0_1_S_q_ss_0[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + S_1_1_S_q_ss_0[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + S_2_1_S_q_ss_0[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + S_3_1_S_q_ss_0[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + S_0_2_S_q_ss_0[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + S_1_2_S_q_ss_0[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + S_2_2_S_q_ss_0[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + S_3_2_S_q_ss_0[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + S_0_3_S_q_ss_0[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + S_1_3_S_q_ss_0[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + S_2_3_S_q_ss_0[bits 0 to ..] ∈ [--..--] or UNINITIALIZED + S_3_3_S_q_ss_0[bits 0 to ..] ∈ [--..--] or UNINITIALIZED +[value] Called Frama_C_show_each_reached_1() +[value] Called Frama_C_show_each_reached_2() +tests/value/library.i:68:[value] warning: assertion 'Unknown_Invalid' got status unknown. +[value] Called Frama_C_show_each_reached_3() +[value] Recording results for main2 +[value] done for function main2 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main2: + +[from] Computing for function main2 +[from] Done for function main2 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main2: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main2: + \nothing +[inout] Inputs for function main2: + v diff --git a/tests/value/oracle_symblocs/library_precond.err.oracle b/tests/value/oracle_symblocs/library_precond.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/library_precond.res.oracle b/tests/value/oracle_symblocs/library_precond.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..56650356ba51ba344886c7d903c389ac795089da --- /dev/null +++ b/tests/value/oracle_symblocs/library_precond.res.oracle @@ -0,0 +1,33 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/library_precond.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] computing for function mxml <- main. + Called from tests/value/library_precond.i:9. +[value] using specification for function mxml +tests/value/library_precond.i:3:[value] warning: function mxml: precondition got status invalid. +[value] Done for function mxml +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + NON TERMINATING FUNCTION +[from] Computing for function main +[from] Computing for function mxml <-main +[from] Done for function mxml +[from] Non-terminating function main (no dependencies) +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function mxml: + \result FROM ANYTHING(origin:Unknown) +[from] Function main: + NON TERMINATING - NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + p; a +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/limits.err.oracle b/tests/value/oracle_symblocs/limits.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/limits.res.oracle b/tests/value/oracle_symblocs/limits.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..b19eebfd8f62603f4e8fc1b1a085bc9249cde87c --- /dev/null +++ b/tests/value/oracle_symblocs/limits.res.oracle @@ -0,0 +1,35 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/limits.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + cl ∈ {0} + cu ∈ {0} + ucu ∈ {0} + il ∈ {0} + iu ∈ {0} + uiu ∈ {0} + ll ∈ {0} + lu ∈ {0} + ulu ∈ {0} + lll ∈ {0} + llu ∈ {0} + ullu ∈ {0} +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + cl ∈ {-128} + cu ∈ {127} + ucu ∈ {255} + il ∈ {-2147483648} + iu ∈ {2147483647} + uiu ∈ {-1} + ll ∈ {-2147483648} + lu ∈ {2147483647} + ulu ∈ {4294967295} + lll ∈ {-9223372036854775808} + llu ∈ {9223372036854775807} + ullu ∈ {18446744073709551615} + __retres ∈ {0} diff --git a/tests/value/oracle_symblocs/local.err.oracle b/tests/value/oracle_symblocs/local.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/local.res.oracle b/tests/value/oracle_symblocs/local.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..a9c42496641556a5671c8484c82748b1e0d2e765 --- /dev/null +++ b/tests/value/oracle_symblocs/local.res.oracle @@ -0,0 +1,121 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/local.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + X ∈ {0} + Y ∈ {0} + Z ∈ {0} + T ∈ {0} + U ∈ {0} + V ∈ {0} +[value] computing for function f <- main. + Called from tests/value/local.i:33. +tests/value/local.i:7:[value] warning: locals {b} escaping the scope of f through \result +tests/value/local.i:7:[value] warning: locals {a} escaping the scope of f through X +[value] Recording results for f +[value] Done for function f +[value] computing for function g <- main. + Called from tests/value/local.i:34. +[value] computing for function f <- g <- main. + Called from tests/value/local.i:13. +[value] Recording results for f +[value] Done for function f +tests/value/local.i:15:[value] warning: locals {d} escaping the scope of g through \result +tests/value/local.i:15:[value] warning: locals {d} escaping the scope of g through U +[value] Recording results for g +[value] Done for function g +[value] DUMPING STATE of file tests/value/local.i line 35 + X ∈ ESCAPINGADDR + Y ∈ ESCAPINGADDR + Z ∈ ESCAPINGADDR + T ∈ ESCAPINGADDR + U ∈ ESCAPINGADDR + V ∈ {0} + e ∈ UNINITIALIZED + =END OF DUMP== +[value] computing for function h <- main. + Called from tests/value/local.i:36. +[value] Recording results for h +[value] Done for function h +[value] computing for function i <- main. + Called from tests/value/local.i:37. +[value] Recording results for i +[value] Done for function i +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + X ∈ {{ &a }} + __retres ∈ {{ &b }} +[value:final-states] Values at end of function g: + X ∈ ESCAPINGADDR + T ∈ ESCAPINGADDR + U ∈ {{ &d }} or ESCAPINGADDR + d ∈ [--..--] +[value:final-states] Values at end of function h: + __retres ∈ {{ &e + {4} }} +[value:final-states] Values at end of function i: + x ∈ {{ &local }} +[value:final-states] Values at end of function main: + X ∈ ESCAPINGADDR + Y ∈ ESCAPINGADDR + Z ∈ ESCAPINGADDR + T ∈ ESCAPINGADDR + U ∈ ESCAPINGADDR + V ∈ {{ &e + {4} }} +[from] Computing for function f +[from] Done for function f +[from] Computing for function g +[from] Done for function g +[from] Computing for function h +[from] Done for function h +[from] Computing for function i +[from] Done for function i +[from] Computing for function main +[from] Computing for function Frama_C_dump_each <-main +[from] Done for function Frama_C_dump_each +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + X FROM \nothing + \result FROM \nothing +[from] Function g: + X FROM \nothing + T FROM \nothing + U FROM \nothing + \result FROM \nothing +[from] Function h: + \result FROM x +[from] Function i: + NO EFFECTS +[from] Function main: + X FROM \nothing + Y FROM \nothing + Z FROM \nothing + T FROM \nothing + U FROM \nothing + V FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + X; __retres +[inout] Inputs for function f: + \nothing +[inout] Out (internal) for function g: + X; T; U; d +[inout] Inputs for function g: + T; U +[inout] Out (internal) for function h: + __retres +[inout] Inputs for function h: + \nothing +[inout] Out (internal) for function i: + x +[inout] Inputs for function i: + \nothing +[inout] Out (internal) for function main: + X; Y; Z; T; U; V +[inout] Inputs for function main: + T; U diff --git a/tests/value/oracle_symblocs/local_cleanup.err.oracle b/tests/value/oracle_symblocs/local_cleanup.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/local_cleanup.res.oracle b/tests/value/oracle_symblocs/local_cleanup.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..82a52f7c2fc64d0f762c245d9b0f9b65ba84812c --- /dev/null +++ b/tests/value/oracle_symblocs/local_cleanup.res.oracle @@ -0,0 +1,61 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/local_cleanup.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] computing for function f <- main. + Called from tests/value/local_cleanup.c:16. +[value] Recording results for f +[value] Done for function f +[value] computing for function g <- main. + Called from tests/value/local_cleanup.c:17. +[value] computing for function f <- g <- main. + Called from tests/value/local_cleanup.c:11. +[value] Recording results for f +[value] Done for function f +[value] Recording results for g +[value] Done for function g +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + t[0] ∈ UNINITIALIZED + [1] ∈ {12} + lmain[0] ∈ UNINITIALIZED + [1] ∈ {12} +[value:final-states] Values at end of function g: + t[0] ∈ UNINITIALIZED + [1] ∈ {12} +[value:final-states] Values at end of function main: + lmain[0] ∈ UNINITIALIZED + [1] ∈ {12} +[from] Computing for function f +[from] Done for function f +[from] Computing for function g +[from] Done for function g +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + t[1] FROM p (and SELF) + lmain[1] FROM p (and SELF) +[from] Function g: + lmain[1] FROM \nothing (and SELF) +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + t[1]; lmain[1] +[inout] Inputs for function f: + \nothing +[inout] Out (internal) for function g: + t[1] +[inout] Inputs for function g: + \nothing +[inout] Out (internal) for function main: + lmain[1] +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/local_slevel.err.oracle b/tests/value/oracle_symblocs/local_slevel.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/local_slevel.res.oracle b/tests/value/oracle_symblocs/local_slevel.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..66889335241f00e0a10e83dcb93dd437a0639f92 --- /dev/null +++ b/tests/value/oracle_symblocs/local_slevel.res.oracle @@ -0,0 +1,529 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/local_slevel.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + p ∈ {0} + t[0..99] ∈ {0} + vol ∈ [--..--] +[value] computing for function main1 <- main. + Called from tests/value/local_slevel.i:47. +tests/value/local_slevel.i:10:[value] entering loop for the first time +[value] Called Frama_C_show_each({-1}, {0}, {0}) +[value] Called Frama_C_show_each({1}, {1}, {0; 1}) +[value] Called Frama_C_show_each({-1}, {0}, {0; 1}) +[value] Called Frama_C_show_each({1}, {1}, {0; 1; 2}) +[value] Called Frama_C_show_each({-1}, {0; 2}, {0; 1; 2}) +[value] Called Frama_C_show_each({1}, [1..79],1%2, {0; 1; 2; 3}) +[value] Called Frama_C_show_each({-1}, [0..78],0%2, {0; 1; 2; 3}) +[value] Called Frama_C_show_each({1}, [1..79],1%2, {0; 1; 2; 3; 4}) +[value] Called Frama_C_show_each({-1}, [0..78],0%2, {0; 1; 2; 3; 4}) +[value] Called Frama_C_show_each({1}, [1..79],1%2, [0..2147483647]) +[value] Called Frama_C_show_each({-1}, [0..78],0%2, [0..2147483647]) +[value] Called Frama_C_show_each({1}, [1..79],1%2, [0..2147483648]) +[value] Called Frama_C_show_each({-1}, [0..78],0%2, [0..2147483648]) +[value] Called Frama_C_show_each({1}, [1..79],1%2, [0..4294967295]) +[value] Called Frama_C_show_each({-1}, [0..78],0%2, [0..4294967295]) +[value] Recording results for main1 +[value] Done for function main1 +[value] computing for function main2 <- main. + Called from tests/value/local_slevel.i:48. +[value] Called Frama_C_show_each({0}) +[value] Called Frama_C_show_each({1}) +[value] Called Frama_C_show_each({2}) +[value] Called Frama_C_show_each({3}) +[value] Called Frama_C_show_each({4}) +[value] Called Frama_C_show_each({5}) +[value] Called Frama_C_show_each({6}) +[value] Called Frama_C_show_each({7}) +[value] Called Frama_C_show_each({8}) +[value] Called Frama_C_show_each({9}) +[value] Called Frama_C_show_each({10}) +[value] Called Frama_C_show_each({11}) +[value] Called Frama_C_show_each({12}) +[value] Called Frama_C_show_each({13}) +[value] Called Frama_C_show_each({14}) +[value] Called Frama_C_show_each({15}) +[value] Called Frama_C_show_each({16}) +[value] Called Frama_C_show_each({17}) +[value] Called Frama_C_show_each({18}) +[value] Called Frama_C_show_each({19}) +[value] Called Frama_C_show_each({20}) +[value] Called Frama_C_show_each({21}) +[value] Called Frama_C_show_each({22}) +[value] Called Frama_C_show_each({23}) +[value] Called Frama_C_show_each({24}) +[value] Called Frama_C_show_each({25}) +[value] Called Frama_C_show_each({26}) +[value] Called Frama_C_show_each({27}) +[value] Called Frama_C_show_each({28}) +[value] Called Frama_C_show_each({29}) +[value] Called Frama_C_show_each({30}) +[value] Called Frama_C_show_each({31}) +[value] Called Frama_C_show_each({32}) +[value] Called Frama_C_show_each({33}) +[value] Called Frama_C_show_each({34}) +[value] Called Frama_C_show_each({35}) +[value] Called Frama_C_show_each({36}) +[value] Called Frama_C_show_each({37}) +[value] Called Frama_C_show_each({38}) +[value] Called Frama_C_show_each({39}) +[value] Called Frama_C_show_each({40}) +[value] Called Frama_C_show_each({41}) +[value] Called Frama_C_show_each({42}) +[value] Called Frama_C_show_each({43}) +[value] Called Frama_C_show_each({44}) +[value] Called Frama_C_show_each({45}) +[value] Called Frama_C_show_each({46}) +[value] Called Frama_C_show_each({47}) +[value] Called Frama_C_show_each({48}) +[value] Called Frama_C_show_each({49}) +[value] Semantic level unrolling superposing up to 100 states +[value] Called Frama_C_show_each({50}) +[value] Called Frama_C_show_each({51}) +[value] Called Frama_C_show_each({52}) +[value] Called Frama_C_show_each({53}) +[value] Called Frama_C_show_each({54}) +[value] Called Frama_C_show_each({55}) +[value] Called Frama_C_show_each({56}) +[value] Called Frama_C_show_each({57}) +[value] Called Frama_C_show_each({58}) +[value] Called Frama_C_show_each({59}) +[value] Called Frama_C_show_each({60}) +[value] Called Frama_C_show_each({61}) +[value] Called Frama_C_show_each({62}) +[value] Called Frama_C_show_each({63}) +[value] Called Frama_C_show_each({64}) +[value] Called Frama_C_show_each({65}) +[value] Called Frama_C_show_each({66}) +[value] Called Frama_C_show_each({67}) +[value] Called Frama_C_show_each({68}) +[value] Called Frama_C_show_each({69}) +[value] Called Frama_C_show_each({70}) +[value] Called Frama_C_show_each({71}) +[value] Called Frama_C_show_each({72}) +[value] Called Frama_C_show_each({73}) +[value] Called Frama_C_show_each({74}) +[value] Called Frama_C_show_each({75}) +[value] Called Frama_C_show_each({76}) +[value] Called Frama_C_show_each({77}) +[value] Called Frama_C_show_each({78}) +[value] Called Frama_C_show_each({79}) +[value] Called Frama_C_show_each({80}) +[value] Called Frama_C_show_each({81}) +[value] Called Frama_C_show_each({82}) +[value] Called Frama_C_show_each({83}) +[value] Called Frama_C_show_each({84}) +[value] Called Frama_C_show_each({85}) +[value] Called Frama_C_show_each({86}) +[value] Called Frama_C_show_each({87}) +[value] Called Frama_C_show_each({88}) +[value] Called Frama_C_show_each({89}) +[value] Called Frama_C_show_each({90}) +[value] Called Frama_C_show_each({91}) +[value] Called Frama_C_show_each({92}) +[value] Called Frama_C_show_each({93}) +[value] Called Frama_C_show_each({94}) +[value] Called Frama_C_show_each({95}) +[value] Called Frama_C_show_each({96}) +[value] Called Frama_C_show_each({97}) +[value] Called Frama_C_show_each({98}) +[value] Called Frama_C_show_each({99}) +[value] Semantic level unrolling superposing up to 200 states +[value] Recording results for main2 +[value] Done for function main2 +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main1: + v ∈ {1} or UNINITIALIZED + r ∈ [--..--] +[value:final-states] Values at end of function main2: + t[0..99] ∈ [-1073741823..2147483647] + i ∈ {100} +[value:final-states] Values at end of function main: + t[0..99] ∈ [-1073741823..2147483647] +[from] Computing for function main1 +[from] Done for function main1 +[from] Computing for function main2 +[from] Done for function main2 +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main1: + NO EFFECTS +[from] Function main2: + t[0..99] FROM vol (and SELF) +[from] Function main: + t[0..99] FROM vol (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main1: + v; r; i +[inout] Inputs for function main1: + \nothing +[inout] Out (internal) for function main2: + t[0..99]; i; n +[inout] Inputs for function main2: + vol +[inout] Out (internal) for function main: + t[0..99] +[inout] Inputs for function main: + vol +/* Generated by Frama-C */ +int *p; +/*@ assigns \result; + assigns \result \from \nothing; */ +extern int ( /* missing proto */ Frama_C_show_each)(); + +void main1(void) +{ + int v; + unsigned int r; + r = (unsigned int)0; + { + int i; + i = 0; + while (i < 80) { + /*@ ensures \true; + slevel 50; + assigns v; */ + if (i % 2) v = 1; else v = -1; + Frama_C_show_each(v,i,r); + v *= v; + r += (unsigned int)(2 / (v + 1)); + /*@ slevel default; */ ; + i ++; + } + } + return; +} + +void g(void) +{ + int i; + i = 0; + if (! (i < 5)) goto unrolling_2_loop; + i ++; + unrolling_3_loop: ; + /*@ loop pragma UNROLL 1; + loop pragma UNROLL "done", 1; */ + while (i < 5) i ++; + unrolling_2_loop: ; + return; +} + +int t[100]; +int volatile vol; +void main2(void) +{ + int i; + i = 0; + while (i < 100) { + { + int n; + Frama_C_show_each(i); + n = vol; + if (n >= 3) t[i] = n; else t[i] = (n + (1 << 30)) + 1; + /*@ slevel merge; */ ; + } + i ++; + } + return; +} + +void main(void) +{ + main1(); + main2(); + return; +} + + +[scf] beginning constant propagation +/* Generated by Frama-C */ +int *p; +/*@ assigns \result; + assigns \result \from \nothing; */ +extern int ( /* missing proto */ Frama_C_show_each)(); + +void main1(void) +{ + int v; + unsigned int r; + r = 0U; + { + int i; + i = 0; + while (i < 80) { + /*@ ensures \true; + slevel 50; + assigns v; */ + if (i % 2) v = 1; else v = -1; + Frama_C_show_each(v,i,r); + v *= v; + r ++; + /*@ slevel default; */ ; + i ++; + } + } + return; +} + +void g(void) +{ + int i; + i = 0; + if (! (i < 5)) goto unrolling_2_loop; + i ++; + unrolling_3_loop: ; + /*@ loop pragma UNROLL 1; + loop pragma UNROLL "done", 1; */ + while (i < 5) i ++; + unrolling_2_loop: ; + return; +} + +int t[100]; +int volatile vol; +void main2(void) +{ + int i; + i = 0; + while (i < 100) { + { + int n; + Frama_C_show_each(i); + n = vol; + if (n >= 3) t[i] = n; else t[i] = (n + 1073741824) + 1; + /*@ slevel merge; */ ; + } + i ++; + } + return; +} + +void main(void) +{ + main1(); + main2(); + return; +} + + +[scf] constant propagation done +/* Generated by Frama-C */ +int *p; +/*@ assigns \result; + assigns \result \from \nothing; */ +extern int ( /* missing proto */ Frama_C_show_each)(); + +void main1(void) +{ + int v; + unsigned int r; + r = (unsigned int)0; + { + int i; + i = 0; + while (i < 80) { + /*@ ensures \true; + slevel 50; + assigns v; */ + if (i % 2) v = 1; else v = -1; + Frama_C_show_each(v,i,r); + v *= v; + r += (unsigned int)(2 / (v + 1)); + /*@ slevel default; */ ; + i ++; + } + } + return; +} + +void g(void) +{ + int i; + i = 0; + if (! (i < 5)) goto unrolling_2_loop; + i ++; + unrolling_3_loop: ; + /*@ loop pragma UNROLL 1; + loop pragma UNROLL "done", 1; */ + while (i < 5) i ++; + unrolling_2_loop: ; + return; +} + +int t[100]; +int volatile vol; +void main2(void) +{ + int i; + i = 0; + while (i < 100) { + { + int n; + Frama_C_show_each(i); + n = vol; + if (n >= 3) t[i] = n; else t[i] = (n + (1 << 30)) + 1; + /*@ slevel merge; */ ; + } + i ++; + } + return; +} + +void main(void) +{ + main1(); + main2(); + return; +} + + +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + p ∈ {0} + t[0..99] ∈ {0} + vol ∈ [--..--] +[value] computing for function main1 <- main. + Called from tests/value/local_slevel.i:47. +tests/value/local_slevel.i:10:[value] entering loop for the first time +[value] Called Frama_C_show_each({-1}, {0}, {0}) +[value] Called Frama_C_show_each({1}, {1}, {0; 1}) +[value] Called Frama_C_show_each({-1}, {0}, {0; 1}) +[value] Called Frama_C_show_each({1}, {1}, {0; 1; 2}) +[value] Called Frama_C_show_each({-1}, {0; 2}, {0; 1; 2}) +[value] Called Frama_C_show_each({1}, [1..79],1%2, {0; 1; 2; 3}) +[value] Called Frama_C_show_each({-1}, [0..78],0%2, {0; 1; 2; 3}) +[value] Called Frama_C_show_each({1}, [1..79],1%2, {0; 1; 2; 3; 4}) +[value] Called Frama_C_show_each({-1}, [0..78],0%2, {0; 1; 2; 3; 4}) +[value] Called Frama_C_show_each({1}, [1..79],1%2, [0..2147483647]) +[value] Called Frama_C_show_each({-1}, [0..78],0%2, [0..2147483647]) +[value] Called Frama_C_show_each({1}, [1..79],1%2, [0..2147483648]) +[value] Called Frama_C_show_each({-1}, [0..78],0%2, [0..2147483648]) +[value] Called Frama_C_show_each({1}, [1..79],1%2, [0..4294967295]) +[value] Called Frama_C_show_each({-1}, [0..78],0%2, [0..4294967295]) +[value] Recording results for main1 +[value] Done for function main1 +[value] computing for function main2 <- main. + Called from tests/value/local_slevel.i:48. +[value] Called Frama_C_show_each({0}) +[value] Called Frama_C_show_each({1}) +[value] Called Frama_C_show_each({2}) +[value] Called Frama_C_show_each({3}) +[value] Called Frama_C_show_each({4}) +[value] Called Frama_C_show_each({5}) +[value] Called Frama_C_show_each({6}) +[value] Called Frama_C_show_each({7}) +[value] Called Frama_C_show_each({8}) +[value] Called Frama_C_show_each({9}) +[value] Called Frama_C_show_each({10}) +[value] Called Frama_C_show_each({11}) +[value] Called Frama_C_show_each({12}) +[value] Called Frama_C_show_each({13}) +[value] Called Frama_C_show_each({14}) +[value] Called Frama_C_show_each({15}) +[value] Called Frama_C_show_each({16}) +[value] Called Frama_C_show_each({17}) +[value] Called Frama_C_show_each({18}) +[value] Called Frama_C_show_each({19}) +[value] Called Frama_C_show_each({20}) +[value] Called Frama_C_show_each({21}) +[value] Called Frama_C_show_each({22}) +[value] Called Frama_C_show_each({23}) +[value] Called Frama_C_show_each({24}) +[value] Called Frama_C_show_each({25}) +[value] Called Frama_C_show_each({26}) +[value] Called Frama_C_show_each({27}) +[value] Called Frama_C_show_each({28}) +[value] Called Frama_C_show_each({29}) +[value] Called Frama_C_show_each({30}) +[value] Called Frama_C_show_each({31}) +[value] Called Frama_C_show_each({32}) +[value] Called Frama_C_show_each({33}) +[value] Called Frama_C_show_each({34}) +[value] Called Frama_C_show_each({35}) +[value] Called Frama_C_show_each({36}) +[value] Called Frama_C_show_each({37}) +[value] Called Frama_C_show_each({38}) +[value] Called Frama_C_show_each({39}) +[value] Called Frama_C_show_each({40}) +[value] Called Frama_C_show_each({41}) +[value] Called Frama_C_show_each({42}) +[value] Called Frama_C_show_each({43}) +[value] Called Frama_C_show_each({44}) +[value] Called Frama_C_show_each({45}) +[value] Called Frama_C_show_each({46}) +[value] Called Frama_C_show_each({47}) +[value] Called Frama_C_show_each({48}) +[value] Called Frama_C_show_each({49}) +[value] Semantic level unrolling superposing up to 100 states +[value] Called Frama_C_show_each({50}) +[value] Called Frama_C_show_each({51}) +[value] Called Frama_C_show_each({52}) +[value] Called Frama_C_show_each({53}) +[value] Called Frama_C_show_each({54}) +[value] Called Frama_C_show_each({55}) +[value] Called Frama_C_show_each({56}) +[value] Called Frama_C_show_each({57}) +[value] Called Frama_C_show_each({58}) +[value] Called Frama_C_show_each({59}) +[value] Called Frama_C_show_each({60}) +[value] Called Frama_C_show_each({61}) +[value] Called Frama_C_show_each({62}) +[value] Called Frama_C_show_each({63}) +[value] Called Frama_C_show_each({64}) +[value] Called Frama_C_show_each({65}) +[value] Called Frama_C_show_each({66}) +[value] Called Frama_C_show_each({67}) +[value] Called Frama_C_show_each({68}) +[value] Called Frama_C_show_each({69}) +[value] Called Frama_C_show_each({70}) +[value] Called Frama_C_show_each({71}) +[value] Called Frama_C_show_each({72}) +[value] Called Frama_C_show_each({73}) +[value] Called Frama_C_show_each({74}) +[value] Called Frama_C_show_each({75}) +[value] Called Frama_C_show_each({76}) +[value] Called Frama_C_show_each({77}) +[value] Called Frama_C_show_each({78}) +[value] Called Frama_C_show_each({79}) +[value] Called Frama_C_show_each({80}) +[value] Called Frama_C_show_each({81}) +[value] Called Frama_C_show_each({82}) +[value] Called Frama_C_show_each({83}) +[value] Called Frama_C_show_each({84}) +[value] Called Frama_C_show_each({85}) +[value] Called Frama_C_show_each({86}) +[value] Called Frama_C_show_each({87}) +[value] Called Frama_C_show_each({88}) +[value] Called Frama_C_show_each({89}) +[value] Called Frama_C_show_each({90}) +[value] Called Frama_C_show_each({91}) +[value] Called Frama_C_show_each({92}) +[value] Called Frama_C_show_each({93}) +[value] Called Frama_C_show_each({94}) +[value] Called Frama_C_show_each({95}) +[value] Called Frama_C_show_each({96}) +[value] Called Frama_C_show_each({97}) +[value] Called Frama_C_show_each({98}) +[value] Called Frama_C_show_each({99}) +[value] Semantic level unrolling superposing up to 200 states +[value] Recording results for main2 +[value] Done for function main2 +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main1: + v ∈ {1} or UNINITIALIZED + r ∈ [--..--] +[value:final-states] Values at end of function main2: + t[0..99] ∈ [-1073741823..2147483647] + i ∈ {100} +[value:final-states] Values at end of function main: + t[0..99] ∈ [-1073741823..2147483647] diff --git a/tests/value/oracle_symblocs/local_variables.err.oracle b/tests/value/oracle_symblocs/local_variables.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/local_variables.res.oracle b/tests/value/oracle_symblocs/local_variables.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..bb3aeffbaf8e2f27d5b212b526a3c41d7062d1ab --- /dev/null +++ b/tests/value/oracle_symblocs/local_variables.res.oracle @@ -0,0 +1,138 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/local_variables.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + A ∈ {0} + B ∈ {0} + C ∈ {0} + D ∈ {0} + R ∈ {0} + S ∈ {0} +[value] computing for function u <- main. + Called from tests/value/local_variables.i:30. +[value] computing for function w <- u <- main. + Called from tests/value/local_variables.i:11. +[value] computing for function unkn <- w <- u <- main. + Called from tests/value/local_variables.i:24. +tests/value/local_variables.i:24:[kernel] warning: Neither code nor specification for function unkn, generating default assigns from the prototype +[value] using specification for function unkn +[value] Done for function unkn +[value] Recording results for w +[value] Done for function w +[value] Recording results for u +[value] Done for function u +[value] computing for function v <- main. + Called from tests/value/local_variables.i:31. +[value] computing for function w <- v <- main. + Called from tests/value/local_variables.i:18. +[value] computing for function unkn <- w <- v <- main. + Called from tests/value/local_variables.i:24. +[value] Done for function unkn +[value] Recording results for w +[value] Done for function w +[value] Recording results for v +[value] Done for function v +tests/value/local_variables.i:35:[value] warning: locals {x} escaping the scope of a block of main through p +tests/value/local_variables.i:43:[value] entering loop for the first time +tests/value/local_variables.i:47:[value] warning: accessing left-value that contains escaping addresses. + assert ¬\dangling(&p); +tests/value/local_variables.i:47:[value] warning: out of bounds read. assert \valid_read(p); +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function w: + B ∈ {0} + wu ∈ {0} + wv ∈ {0} + __retres ∈ {0} +[value:final-states] Values at end of function u: + B ∈ {0} + ru ∈ {0} + wu ∈ {0} +[value:final-states] Values at end of function v: + B ∈ {0} + rv ∈ {0} + wv ∈ {0} +[value:final-states] Values at end of function main: + B ∈ {0} + R ∈ {0} + S ∈ {0} + p ∈ {{ &S_p[0] }} + __retres ∈ [--..--] +[from] Computing for function w +[from] Computing for function unkn <-w +[from] Done for function unkn +[from] Done for function w +[from] Computing for function u +[from] Done for function u +[from] Computing for function v +[from] Done for function v +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function unkn: + \result FROM \nothing +[from] Function w: + B FROM ru; rv; pr (and SELF) + wu FROM A; pw (and SELF) + wv FROM A; pw (and SELF) + \result FROM ru; rv; pr +[from] Function u: + B FROM C (and SELF) + \result FROM C +[from] Function v: + B FROM D (and SELF) + \result FROM D +[from] Function main: + B FROM C; D (and SELF) + R FROM C + S FROM D + \result FROM c; p; S_p[0] +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function w: + B; wu; wv; tmp; __retres +[inout] Inputs for function w: + A; ru; rv +[inout] InOut (internal) for function w: + Operational inputs: + A; ru; rv; pr; pw + Operational inputs on termination: + A; ru; rv; pr; pw + Sure outputs: + tmp; __retres +[inout] Out (internal) for function u: + B; ru; wu; tmp +[inout] Inputs for function u: + A; C +[inout] InOut (internal) for function u: + Operational inputs: + A; C + Operational inputs on termination: + A; C + Sure outputs: + ru; wu; tmp +[inout] Out (internal) for function v: + B; rv; wv; tmp +[inout] Inputs for function v: + A; D +[inout] InOut (internal) for function v: + Operational inputs: + A; D + Operational inputs on termination: + A; D + Sure outputs: + rv; wv; tmp +[inout] Out (internal) for function main: + B; R; S; p; x; y; z; t; i; a; __retres +[inout] Inputs for function main: + A; C; D; S_p[0] +[inout] InOut (internal) for function main: + Operational inputs: + A; C; D; c; p; S_p[0] + Operational inputs on termination: + A; C; D; c; p; S_p[0] + Sure outputs: + R; S; y; z; t; i; __retres diff --git a/tests/value/oracle_symblocs/lock.err.oracle b/tests/value/oracle_symblocs/lock.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/lock.res.oracle b/tests/value/oracle_symblocs/lock.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..0aff38815e8c071563ed3d8b698e96fcb019ee53 --- /dev/null +++ b/tests/value/oracle_symblocs/lock.res.oracle @@ -0,0 +1,47 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/lock.i (no preprocessing) +[value] Analyzing a complete application starting at locks0_good +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + ghost_loctable[0..99] ∈ {0} + pmutex ∈ {0} +tests/value/lock.i:48:[value] warning: function locks0_good: precondition got status unknown. +[value] computing for function acquire_lock <- locks0_good. + Called from tests/value/lock.i:51. +[value] using specification for function acquire_lock +tests/value/lock.i:19:[value] warning: function acquire_lock: precondition got status unknown. +tests/value/lock.i:21:[value] warning: no \from part for clause 'assigns ghost_loctable[0 .. 99];' of + function acquire_lock +[value] Done for function acquire_lock +[value] computing for function release_lock <- locks0_good. + Called from tests/value/lock.i:52. +[value] using specification for function release_lock +tests/value/lock.i:27:[value] warning: function release_lock: precondition got status unknown. +tests/value/lock.i:29:[value] warning: no \from part for clause 'assigns ghost_loctable[..];' of + function release_lock +[value] Done for function release_lock +[value] Recording results for locks0_good +[value] done for function locks0_good +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function locks0_good: + ghost_loctable[0..99] ∈ [--..--] +[from] Computing for function locks0_good +[from] Computing for function acquire_lock <-locks0_good +[from] Done for function acquire_lock +[from] Computing for function release_lock <-locks0_good +[from] Done for function release_lock +[from] Done for function locks0_good +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function acquire_lock: + ghost_loctable[0..99] FROM ANYTHING(origin:Unknown) (and SELF) +[from] Function release_lock: + ghost_loctable[0..99] FROM ANYTHING(origin:Unknown) (and SELF) +[from] Function locks0_good: + ghost_loctable[0..99] FROM ANYTHING(origin:Unknown) (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function locks0_good: + ghost_loctable[0..99] +[inout] Inputs for function locks0_good: + ANYTHING(origin:Unknown) diff --git a/tests/value/oracle_symblocs/logic.err.oracle b/tests/value/oracle_symblocs/logic.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/logic.res.oracle b/tests/value/oracle_symblocs/logic.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..794171a4a605155a43d65c5b9304f3551f9871ef --- /dev/null +++ b/tests/value/oracle_symblocs/logic.res.oracle @@ -0,0 +1,188 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/logic.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + t[0..9] ∈ {0} + u[0..10] ∈ {0} + s1 ∈ {0} + s2 ∈ {0} + s3[0..9] ∈ {0} + x ∈ {0} + v ∈ [--..--] +[value] computing for function eq_tsets <- main. + Called from tests/value/logic.c:115. +tests/value/logic.c:7:[value] cannot evaluate ACSL term, unsupported ACSL construct: == operation on non-supported type set<_#2> +tests/value/logic.c:7:[value] warning: assertion got status unknown. +tests/value/logic.c:9:[value] assertion got status valid. +tests/value/logic.c:10:[value] warning: assertion got status unknown. +tests/value/logic.c:11:[value] warning: assertion got status unknown. +tests/value/logic.c:12:[value] warning: assertion got status unknown. +tests/value/logic.c:13:[value] warning: assertion got status unknown. +tests/value/logic.c:14:[value] assertion got status valid. +tests/value/logic.c:15:[value] warning: assertion got status unknown. +tests/value/logic.c:16:[value] warning: assertion got status unknown. +tests/value/logic.c:17:[value] assertion got status valid. +tests/value/logic.c:19:[value] assertion got status valid. +tests/value/logic.c:21:[value] assertion got status valid. +tests/value/logic.c:23:[value] assertion got status valid. +tests/value/logic.c:24:[value] warning: assertion got status unknown. +tests/value/logic.c:25:[value] assertion got status valid. +tests/value/logic.c:26:[value] warning: assertion got status unknown. +tests/value/logic.c:29:[value] warning: assertion got status unknown. +tests/value/logic.c:30:[value] warning: assertion got status unknown. +tests/value/logic.c:31:[value] warning: assertion got status unknown. +tests/value/logic.c:32:[value] assertion got status valid. +tests/value/logic.c:34:[value] assertion got status valid. +tests/value/logic.c:35:[value] assertion got status valid. +tests/value/logic.c:36:[value] warning: assertion got status unknown. +tests/value/logic.c:38:[value] cannot evaluate ACSL term, unsupported ACSL construct: == operation on non-supported type struct ts +tests/value/logic.c:38:[value] warning: assertion got status unknown. +tests/value/logic.c:39:[value] cannot evaluate ACSL term, unsupported ACSL construct: != operation on non-supported type int [10] +tests/value/logic.c:39:[value] warning: assertion got status unknown. +tests/value/logic.c:41:[value] assertion got status valid. +tests/value/logic.c:42:[value] assertion got status valid. +tests/value/logic.c:43:[value] assertion got status valid. +tests/value/logic.c:45:[value] assertion got status valid. +tests/value/logic.c:47:[value] cannot evaluate ACSL term, unsupported ACSL construct: set intersection +tests/value/logic.c:47:[value] warning: assertion got status unknown. +[value] Recording results for eq_tsets +[value] Done for function eq_tsets +[value] computing for function eq_char <- main. + Called from tests/value/logic.c:116. +[value] Called Frama_C_show_each({-126}) +tests/value/logic.c:54:[value] assertion got status valid. +tests/value/logic.c:55:[value] assertion got status valid. +[value] Recording results for eq_char +[value] Done for function eq_char +[value] computing for function casts <- main. + Called from tests/value/logic.c:117. +tests/value/logic.c:59:[value] assertion got status valid. +tests/value/logic.c:60:[value] assertion got status valid. +[value] Recording results for casts +[value] Done for function casts +[value] computing for function empty_tset <- main. + Called from tests/value/logic.c:118. +[value] computing for function f_empty_tset <- empty_tset <- main. + Called from tests/value/logic.c:70. +[value] using specification for function f_empty_tset +tests/value/logic.c:63:[value] function f_empty_tset: precondition 'r1' got status valid. +tests/value/logic.c:64:[value] function f_empty_tset: precondition 'r2' got status valid. +[value] Done for function f_empty_tset +tests/value/logic.c:71:[value] assertion got status valid. +[value] Recording results for empty_tset +[value] Done for function empty_tset +[value] computing for function reduce_by_equal <- main. + Called from tests/value/logic.c:119. +tests/value/logic.c:76:[value] warning: accessing out of bounds index. assert 0 ≤ v; +tests/value/logic.c:76:[value] warning: accessing out of bounds index. assert v < 10; +tests/value/logic.c:77:[value] warning: assertion got status unknown. +tests/value/logic.c:78:[value] warning: assertion got status unknown. +[value] Recording results for reduce_by_equal +[value] Done for function reduce_by_equal +[value] computing for function alarms <- main. + Called from tests/value/logic.c:120. +tests/value/logic.c:86:[value] warning: assertion 'ASSUME' got status unknown. +tests/value/logic.c:88:[value] warning: assertion 'UNK' got status unknown. +[value] Called Frama_C_show_each({-1; 1}) +tests/value/logic.c:90:[value] warning: assertion 'UNK' got status unknown. +[value] Called Frama_C_show_each({-1; 1}) +tests/value/logic.c:93:[value] warning: assertion 'ASSUME' got status unknown. +tests/value/logic.c:94:[value] assertion 'OK' got status valid. +[value] Called Frama_C_show_each({1}) +tests/value/logic.c:96:[value] assertion 'OK' got status valid. +[value] Called Frama_C_show_each({1}) +tests/value/logic.c:101:[value] warning: assertion 'ASSUME' got status unknown. +tests/value/logic.c:102:[value] warning: assertion 'UNK' got status unknown. +[value] Called Frama_C_show_each({0; 1}) +tests/value/logic.c:104:[value] warning: assertion 'UNK' got status unknown. +[value] Called Frama_C_show_each({0; 1}) +tests/value/logic.c:107:[value] warning: assertion 'ASSUME' got status unknown. +tests/value/logic.c:108:[value] assertion 'OK' got status valid. +[value] Called Frama_C_show_each({1}) +tests/value/logic.c:110:[value] assertion 'OK' got status valid. +[value] Called Frama_C_show_each({1}) +[value] Recording results for alarms +[value] Done for function alarms +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function alarms: + x_0 ∈ {1} +[value:final-states] Values at end of function casts: + +[value:final-states] Values at end of function eq_char: + c ∈ {-126} +[value:final-states] Values at end of function eq_tsets: + +[value:final-states] Values at end of function empty_tset: + T[0] ∈ {2} +[value:final-states] Values at end of function reduce_by_equal: + a[0..8] ∈ {1} + [9] ∈ [--..--] +[value:final-states] Values at end of function main: + +[from] Computing for function alarms +[from] Done for function alarms +[from] Computing for function casts +[from] Done for function casts +[from] Computing for function eq_char +[from] Done for function eq_char +[from] Computing for function eq_tsets +[from] Done for function eq_tsets +[from] Computing for function empty_tset +[from] Computing for function f_empty_tset <-empty_tset +[from] Done for function f_empty_tset +[from] Done for function empty_tset +[from] Computing for function reduce_by_equal +[from] Done for function reduce_by_equal +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function alarms: + NO EFFECTS +[from] Function casts: + NO EFFECTS +[from] Function eq_char: + NO EFFECTS +[from] Function eq_tsets: + NO EFFECTS +[from] Function f_empty_tset: + NO EFFECTS +[from] Function empty_tset: + NO EFFECTS +[from] Function reduce_by_equal: + NO EFFECTS +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function alarms: + x_0 +[inout] Inputs for function alarms: + v +[inout] Out (internal) for function casts: + \nothing +[inout] Inputs for function casts: + \nothing +[inout] Out (internal) for function eq_char: + c +[inout] Inputs for function eq_char: + \nothing +[inout] Out (internal) for function eq_tsets: + \nothing +[inout] Inputs for function eq_tsets: + \nothing +[inout] Out (internal) for function empty_tset: + T[0] +[inout] Inputs for function empty_tset: + \nothing +[inout] Out (internal) for function reduce_by_equal: + a[0..9] +[inout] Inputs for function reduce_by_equal: + v +[inout] Out (internal) for function main: + \nothing +[inout] Inputs for function main: + v diff --git a/tests/value/oracle_symblocs/logic_ptr_cast.err.oracle b/tests/value/oracle_symblocs/logic_ptr_cast.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/logic_ptr_cast.res.oracle b/tests/value/oracle_symblocs/logic_ptr_cast.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..d8c0756ee421a1c90af1fab3c050240c56069013 --- /dev/null +++ b/tests/value/oracle_symblocs/logic_ptr_cast.res.oracle @@ -0,0 +1,38 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/logic_ptr_cast.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + p ∈ {0} + t[0..89] ∈ {0} +tests/value/logic_ptr_cast.i:8:[value] Assigning imprecise value to p. + The imprecision originates from Arithmetic {tests/value/logic_ptr_cast.i:8} +tests/value/logic_ptr_cast.i:9:[value] warning: assertion got status unknown. +[value] Called Frama_C_show_each({{ &t + {0; 1; 2; 3; 4; 5; 6; 7} }}) +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +/* Generated by Frama-C */ +int *p; +int t[90]; +extern int ( /* missing proto */ Frama_C_show_each)(); + +int main(void) +{ + int __retres; + p = (int *)(((unsigned long)(t) + (unsigned long)7) & ~ 7UL); + /*@ + assert + p ≡ (int *)t ∨ p ≡ (int *)((char *)((int *)t)+1) ∨ + p ≡ (int *)((char *)((int *)t)+2) ∨ p ≡ (int *)((char *)((int *)t)+3) ∨ + p ≡ (int *)((char *)((int *)t)+4) ∨ p ≡ (int *)((char *)((int *)t)+5) ∨ + p ≡ (int *)((char *)((int *)t)+6) ∨ p ≡ (int *)((char *)((int *)t)+7); + */ + ; + Frama_C_show_each(p); + __retres = 0; + return __retres; +} + + diff --git a/tests/value/oracle_symblocs/logicdeps.err.oracle b/tests/value/oracle_symblocs/logicdeps.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/logicdeps.res.oracle b/tests/value/oracle_symblocs/logicdeps.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..69ceb1afd995329857d8a92a12dd42fa277ab394 --- /dev/null +++ b/tests/value/oracle_symblocs/logicdeps.res.oracle @@ -0,0 +1,106 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/logicdeps.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + t[0..49] ∈ {0} + p ∈ {0} + y ∈ [--..--] + z ∈ [--..--] +tests/value/logicdeps.i:19:[value] warning: assertion got status unknown. +tests/value/logicdeps.i:20:[value] warning: assertion got status unknown. +[value] computing for function g <- main. + Called from tests/value/logicdeps.i:23. +[value] computing for function f <- g <- main. + Called from tests/value/logicdeps.i:13. +[value] using specification for function f +[value] Done for function f +[value] Recording results for g +[from] Computing for function g +[from] Done for function g +[value] Done for function g +[value] computing for function g <- main. + Called from tests/value/logicdeps.i:24. +[value] computing for function f <- g <- main. + Called from tests/value/logicdeps.i:13. +[value] Done for function f +[value] Recording results for g +[from] Computing for function g +[from] Done for function g +[value] Done for function g +tests/value/logicdeps.i:25:[value] Reusing old results for call to g +tests/value/logicdeps.i:27:[value] assertion got status valid. +[value] computing for function g <- main. + Called from tests/value/logicdeps.i:30. +[value] computing for function f <- g <- main. + Called from tests/value/logicdeps.i:13. +[value] Done for function f +[value] Recording results for g +[from] Computing for function g +[from] Done for function g +[value] Done for function g +[value] computing for function g <- main. + Called from tests/value/logicdeps.i:31. +[value] computing for function f <- g <- main. + Called from tests/value/logicdeps.i:13. +[value] Done for function f +[value] Recording results for g +[from] Computing for function g +[from] Done for function g +[value] Done for function g +tests/value/logicdeps.i:32:[value] Reusing old results for call to g +[value] Recording results for main +[from] Computing for function main +[from] Done for function main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function g: + t[0..19] ∈ {0} + [20..40] ∈ [--..--] + [41..49] ∈ {0} +[value:final-states] Values at end of function main: + t[0..19] ∈ {0} + [20..40] ∈ [--..--] + [41..49] ∈ {0} + p ∈ {{ &z }} +[from] ====== DISPLAYING CALLWISE DEPENDENCIES ====== +[from] call to f at tests/value/logicdeps.i:13 (by g): + t[20..40] FROM t[0..20] (and SELF) +[from] call to g at tests/value/logicdeps.i:23 (by main): + t[20] FROM t[0..10] + [21..30] FROM t[0..10] (and SELF) +[from] call to g at tests/value/logicdeps.i:24 (by main): + t[20] FROM t[0..10] + [21..30] FROM t[0..10] (and SELF) +[from] call to g at tests/value/logicdeps.i:25 (by main): + t[20] FROM t[0..10] + [21..30] FROM t[0..10] (and SELF) +[from] call to g at tests/value/logicdeps.i:30 (by main): + t{[20]; [36..40]} FROM t[0..20] (and SELF) + [21..35] FROM t[0..20] +[from] call to g at tests/value/logicdeps.i:31 (by main): + t{[20]; [36..40]} FROM t[0..20] (and SELF) + [21..35] FROM t[0..20] +[from] call to g at tests/value/logicdeps.i:32 (by main): + t{[20]; [36..40]} FROM t[0..20] (and SELF) + [21..35] FROM t[0..20] +[from] entry point: + t[20..35] FROM t[0..19] + [36..40] FROM t[0..19] (and SELF) + p FROM \nothing +[from] ====== END OF CALLWISE DEPENDENCIES ====== +[inout] InOut (internal) for function g: + Operational inputs: + t[0..20]; p; y; z + Operational inputs on termination: + t[0..20]; p; y; z + Sure outputs: + \nothing +[inout] InOut (internal) for function main: + Operational inputs: + t[0..19]; y; z + Operational inputs on termination: + t[0..19]; y; z + Sure outputs: + t[20..35]; p diff --git a/tests/value/oracle_symblocs/long.err.oracle b/tests/value/oracle_symblocs/long.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/long.res.oracle b/tests/value/oracle_symblocs/long.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..97957a769d5be944a7da24750f6640f9868a5066 --- /dev/null +++ b/tests/value/oracle_symblocs/long.res.oracle @@ -0,0 +1,55 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/long.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + i ∈ {0} + j ∈ {0} + k ∈ {0} +tests/value/long.i:11:[value] entering loop for the first time +[value] computing for function f <- main. + Called from tests/value/long.i:12. +tests/value/long.i:6:[value] entering loop for the first time +[value] Recording results for f +[value] Done for function f +[value] computing for function f <- main. + Called from tests/value/long.i:12. +[value] Recording results for f +[value] Done for function f +[value] computing for function f <- main. + Called from tests/value/long.i:12. +[value] Recording results for f +[value] Done for function f +[value] computing for function f <- main. + Called from tests/value/long.i:12. +[value] Recording results for f +[value] Done for function f +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + i ∈ {1000} +[value:final-states] Values at end of function main: + i ∈ {0; 1000} + j ∈ {1000} +[from] Computing for function f +[from] Done for function f +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + i FROM \nothing +[from] Function main: + i FROM \nothing (and SELF) + j FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + i +[inout] Inputs for function f: + i +[inout] Out (internal) for function main: + i; j +[inout] Inputs for function main: + i; j diff --git a/tests/value/oracle_symblocs/long_const.0.err.oracle b/tests/value/oracle_symblocs/long_const.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/long_const.0.res.oracle b/tests/value/oracle_symblocs/long_const.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..5af3488cbda6fc4852ffc29d219dc836295fdf5b --- /dev/null +++ b/tests/value/oracle_symblocs/long_const.0.res.oracle @@ -0,0 +1,66 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/long_const.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] Called Frama_C_show_each_f({4}, {18446603611099103232}, {0}) +[value] computing for function div64 <- main. + Called from tests/value/long_const.i:37. +tests/value/long_const.i:11:[value] warning: function div64: precondition got status unknown. +tests/value/long_const.i:12:[value] warning: function div64: precondition got status unknown. +[value] computing for function LL_ABS <- div64 <- main. + Called from tests/value/long_const.i:24. +[value] Recording results for LL_ABS +[value] Done for function LL_ABS +[value] computing for function LL_ABS <- div64 <- main. + Called from tests/value/long_const.i:25. +[value] Recording results for LL_ABS +[value] Done for function LL_ABS +[value] Called Frama_C_show_each([-9223372036854775807..9223372036854775807], + [0..9223372036854775807], + [-9223372036854775807..9223372036854775807], + [0..9223372036854775807]) +[value] Recording results for div64 +[value] Done for function div64 +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function LL_ABS: + +[value:final-states] Values at end of function div64: + loc_num ∈ [0..9223372036854775807] + loc_den ∈ [0..9223372036854775807] + signe_negatif ∈ {-9223372036854775808; 0} + __retres ∈ {0} +[value:final-states] Values at end of function main: + i ∈ {18446603611099103232} + j ∈ {0} +[from] Computing for function LL_ABS +[from] Done for function LL_ABS +[from] Computing for function div64 +[from] Done for function div64 +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function LL_ABS: + \result FROM a +[from] Function div64: + \result FROM \nothing +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function LL_ABS: + tmp +[inout] Inputs for function LL_ABS: + \nothing +[inout] Out (internal) for function div64: + loc_num; loc_den; signe_negatif; __retres +[inout] Inputs for function div64: + \nothing +[inout] Out (internal) for function main: + i; j +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/long_const.1.err.oracle b/tests/value/oracle_symblocs/long_const.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/long_const.1.res.oracle b/tests/value/oracle_symblocs/long_const.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..5af3488cbda6fc4852ffc29d219dc836295fdf5b --- /dev/null +++ b/tests/value/oracle_symblocs/long_const.1.res.oracle @@ -0,0 +1,66 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/long_const.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] Called Frama_C_show_each_f({4}, {18446603611099103232}, {0}) +[value] computing for function div64 <- main. + Called from tests/value/long_const.i:37. +tests/value/long_const.i:11:[value] warning: function div64: precondition got status unknown. +tests/value/long_const.i:12:[value] warning: function div64: precondition got status unknown. +[value] computing for function LL_ABS <- div64 <- main. + Called from tests/value/long_const.i:24. +[value] Recording results for LL_ABS +[value] Done for function LL_ABS +[value] computing for function LL_ABS <- div64 <- main. + Called from tests/value/long_const.i:25. +[value] Recording results for LL_ABS +[value] Done for function LL_ABS +[value] Called Frama_C_show_each([-9223372036854775807..9223372036854775807], + [0..9223372036854775807], + [-9223372036854775807..9223372036854775807], + [0..9223372036854775807]) +[value] Recording results for div64 +[value] Done for function div64 +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function LL_ABS: + +[value:final-states] Values at end of function div64: + loc_num ∈ [0..9223372036854775807] + loc_den ∈ [0..9223372036854775807] + signe_negatif ∈ {-9223372036854775808; 0} + __retres ∈ {0} +[value:final-states] Values at end of function main: + i ∈ {18446603611099103232} + j ∈ {0} +[from] Computing for function LL_ABS +[from] Done for function LL_ABS +[from] Computing for function div64 +[from] Done for function div64 +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function LL_ABS: + \result FROM a +[from] Function div64: + \result FROM \nothing +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function LL_ABS: + tmp +[inout] Inputs for function LL_ABS: + \nothing +[inout] Out (internal) for function div64: + loc_num; loc_den; signe_negatif; __retres +[inout] Inputs for function div64: + \nothing +[inout] Out (internal) for function main: + i; j +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/loop.err.oracle b/tests/value/oracle_symblocs/loop.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/loop.res.oracle b/tests/value/oracle_symblocs/loop.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..aee0e36117bdd2eb86ee2e1a601f003bafb75572 --- /dev/null +++ b/tests/value/oracle_symblocs/loop.res.oracle @@ -0,0 +1,39 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/loop.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + i ∈ {0} + j ∈ {0} + k ∈ {0} + n ∈ {0} + r ∈ {0} + G ∈ {0} +tests/value/loop.i:7:[value] entering loop for the first time +[value] Called Frama_C_show_each_F({0}) +[value] Called Frama_C_show_each_F({0; 2}) +[value] Called Frama_C_show_each_F({0; 2; 4}) +[value] Called Frama_C_show_each_F([0..48],0%2) +[value] Called Frama_C_show_each_F([0..48],0%2) +[value] Called Frama_C_show_each_F([0..48],0%2) +tests/value/loop.i:9:[value] warning: signed overflow. assert i_0+r ≤ 2147483647; +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + n ∈ {50} + r ∈ [0..2147483646],0%2 + i_0 ∈ [50..2147483646],0%2 +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + n FROM \nothing + r FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + n; r; i_0 +[inout] Inputs for function main: + n; r diff --git a/tests/value/oracle_symblocs/loop1.err.oracle b/tests/value/oracle_symblocs/loop1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/loop1.res.oracle b/tests/value/oracle_symblocs/loop1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..2e5e55c3f6b57285587eb35a7c5e88012ee1de5a --- /dev/null +++ b/tests/value/oracle_symblocs/loop1.res.oracle @@ -0,0 +1,62 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/loop1.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + U[0] ∈ {1} + [1] ∈ {2} + [2..99] ∈ {0} + NULL_GLOBAL_LOOSING_BITS_ONE_BY_ONE ∈ {0} +[value] computing for function main1 <- main. + Called from tests/value/loop1.i:22. +tests/value/loop1.i:5:[value] entering loop for the first time +[value] Recording results for main1 +[value] Done for function main1 +[value] computing for function main2 <- main. + Called from tests/value/loop1.i:23. +tests/value/loop1.i:14:[value] entering loop for the first time +tests/value/loop1.i:16:[value] warning: accessing out of bounds index. assert i < 100; +[value] Recording results for main2 +[value] Done for function main2 +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main1: + U[0] ∈ {1; 7} + [1] ∈ {2; 7} + [2..99] ∈ {0; 7} + i ∈ {100} +[value:final-states] Values at end of function main2: + NON TERMINATING FUNCTION +[value:final-states] Values at end of function main: + NON TERMINATING FUNCTION +[from] Computing for function main1 +[from] Done for function main1 +[from] Computing for function main2 +[from] Non-terminating function main2 (no dependencies) +[from] Done for function main2 +[from] Computing for function main +[from] Non-terminating function main (no dependencies) +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main1: + U[0..99] FROM \nothing (and SELF) +[from] Function main2: + NON TERMINATING - NO EFFECTS +[from] Function main: + NON TERMINATING - NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main1: + U[0..99]; i +[inout] Inputs for function main1: + \nothing +[inout] Out (internal) for function main2: + U[0..99]; i +[inout] Inputs for function main2: + \nothing +[inout] Out (internal) for function main: + U[0..99] +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/loop2.err.oracle b/tests/value/oracle_symblocs/loop2.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/loop2.res.oracle b/tests/value/oracle_symblocs/loop2.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..052ce6d2b5a7436582fea1325a80571acbee77a3 --- /dev/null +++ b/tests/value/oracle_symblocs/loop2.res.oracle @@ -0,0 +1,44 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/loop2.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + i ∈ {0} + j ∈ {0} + k ∈ {0} + l ∈ {0} + n ∈ {0} + r ∈ {0} + G[0..4] ∈ {0} + Reg5 ∈ {0} +tests/value/loop2.i:8:[value] entering loop for the first time +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + i ∈ {5} + n ∈ {5} + G[0].a ∈ {0; 55; 56; 57; 58; 59} + [0].b ∈ {0; 57; 58; 59; 60; 61} + [1].a ∈ {0; 55; 56; 57; 58; 59} + [1].b ∈ {0; 57; 58; 59; 60; 61} + [2].a ∈ {0; 55; 56; 57; 58; 59} + [2].b ∈ {0; 57; 58; 59; 60; 61} + [3].a ∈ {0; 55; 56; 57; 58; 59} + [3].b ∈ {0; 57; 58; 59; 60; 61} + [4].a ∈ {0; 55; 56; 57; 58; 59} + [4].b ∈ {0; 57; 58; 59; 60; 61} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + i FROM \nothing + n FROM \nothing + G[0..4] FROM \nothing (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + i; n; G[0..4] +[inout] Inputs for function main: + i; n diff --git a/tests/value/oracle_symblocs/loop3.err.oracle b/tests/value/oracle_symblocs/loop3.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/loop3.res.oracle b/tests/value/oracle_symblocs/loop3.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..a7b818473106840af4c94dd95a485fceba1657a1 --- /dev/null +++ b/tests/value/oracle_symblocs/loop3.res.oracle @@ -0,0 +1,41 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/loop3.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + i ∈ {0} + j ∈ {0} + k ∈ {0} +[value] computing for function any_int <- main. + Called from tests/value/loop3.c:8. +[value] using specification for function any_int +[value] Done for function any_int +tests/value/loop3.c:11:[value] entering loop for the first time +tests/value/loop3.c:11:[value] warning: signed overflow. assert j+3 ≤ 2147483647; +tests/value/loop3.c:11:[value] warning: signed overflow. assert k+8 ≤ 2147483647; +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + i ∈ {100} + j ∈ [0..2147483646],0%3 + k ∈ [0..2147483640],0%8 + b ∈ [--..--] +[from] Computing for function main +[from] Computing for function any_int <-main +[from] Done for function any_int +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function any_int: + \result FROM \nothing +[from] Function main: + i FROM \nothing + j FROM \nothing + k FROM k (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + i; j; k; b +[inout] Inputs for function main: + i; j; k diff --git a/tests/value/oracle_symblocs/loop_array.err.oracle b/tests/value/oracle_symblocs/loop_array.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/loop_array.res.oracle b/tests/value/oracle_symblocs/loop_array.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..d47a0afb25ef31935d3a13c6bdd23d2786799c2b --- /dev/null +++ b/tests/value/oracle_symblocs/loop_array.res.oracle @@ -0,0 +1,35 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/loop_array.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + T[0..9999] ∈ {0} + U[0..9999] ∈ {0} +tests/value/loop_array.i:5:[value] entering loop for the first time +tests/value/loop_array.i:8:[value] entering loop for the first time +tests/value/loop_array.i:12:[value] entering loop for the first time +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + T[0..4] ∈ {0; 2} + [5] ∈ {0} + [6..9999] ∈ {0; 7} + U[0..199] ∈ {0} + [200] ∈ {-1; 0} + [201..9999] ∈ {0} + i ∈ {400} + j ∈ {10000} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + T{[0..4]; [6..9999]} FROM \nothing (and SELF) + U[0..1000] FROM \nothing (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + T{[0..4]; [6..9999]}; U[0..1000]; i; j +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/loop_join.err.oracle b/tests/value/oracle_symblocs/loop_join.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/loop_join.res.oracle b/tests/value/oracle_symblocs/loop_join.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..db48b9c75b05bb351e100516ad898a2eb5425834 --- /dev/null +++ b/tests/value/oracle_symblocs/loop_join.res.oracle @@ -0,0 +1,27 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/loop_join.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + U[0..9999] ∈ {0} +tests/value/loop_join.i:5:[value] entering loop for the first time +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + U[0..199] ∈ {0} + [200] ∈ {-1; 0} + [201..9999] ∈ {0} + i ∈ {400} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + U[0..1000] FROM \nothing (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + U[0..1000]; i +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/loop_long.err.oracle b/tests/value/oracle_symblocs/loop_long.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/loop_long.res.oracle b/tests/value/oracle_symblocs/loop_long.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..098a0e11f47f3f2b3b16ede36d1879d02bf5b1df --- /dev/null +++ b/tests/value/oracle_symblocs/loop_long.res.oracle @@ -0,0 +1,27 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/loop_long.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + T[0..368199] ∈ {0} +tests/value/loop_long.i:5:[value] entering loop for the first time +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + T[0..367] ∈ {0; 33} + [368..368199] ∈ {0} + i ∈ {368} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + T[0..367] FROM \nothing (and SELF) + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + T[0..367]; i +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/loop_no_var.err.oracle b/tests/value/oracle_symblocs/loop_no_var.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/loop_no_var.res.oracle b/tests/value/oracle_symblocs/loop_no_var.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..1b2b3f5e4214ef4e4484b15811b927b263c8f508 --- /dev/null +++ b/tests/value/oracle_symblocs/loop_no_var.res.oracle @@ -0,0 +1,25 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/loop_no_var.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +tests/value/loop_no_var.i:3:[value] entering loop for the first time +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + NON TERMINATING FUNCTION +[from] Computing for function main +[from] Non-terminating function main (no dependencies) +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NON TERMINATING - NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + \nothing +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/loop_simple.err.oracle b/tests/value/oracle_symblocs/loop_simple.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/loop_simple.res.oracle b/tests/value/oracle_symblocs/loop_simple.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..af4e532888438000b5643b704edcfe3fefe77f92 --- /dev/null +++ b/tests/value/oracle_symblocs/loop_simple.res.oracle @@ -0,0 +1,41 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/loop_simple.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + i ∈ {0} + j ∈ {0} + k ∈ {0} + n ∈ {0} + r ∈ {0} +tests/value/loop_simple.i:24:[value] entering loop for the first time +tests/value/loop_simple.i:25:[value] entering loop for the first time +tests/value/loop_simple.i:26:[value] entering loop for the first time +tests/value/loop_simple.i:27:[value] warning: signed overflow. assert (int)((int)(i+j)+k)+r ≤ 2147483647; +tests/value/loop_simple.i:27:[value] warning: signed overflow. assert (int)((int)((int)(i+j)+k)+r)+1 ≤ 2147483647; +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + i ∈ {2} + j ∈ {0; 2} + k ∈ {0; 2} + n ∈ {2} + r ∈ [0..2147483647] +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + i FROM \nothing + j FROM \nothing (and SELF) + k FROM \nothing + n FROM \nothing + r FROM \nothing + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + i; j; k; n; r +[inout] Inputs for function main: + i; j; k; n; r diff --git a/tests/value/oracle_symblocs/loop_test.0.err.oracle b/tests/value/oracle_symblocs/loop_test.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/loop_test.0.res.oracle b/tests/value/oracle_symblocs/loop_test.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..84e22bdca8dbbc1f9921141b1973270161f43838 --- /dev/null +++ b/tests/value/oracle_symblocs/loop_test.0.res.oracle @@ -0,0 +1,110 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/loop_test.i (no preprocessing) +[value] Analyzing a complete application starting at test_onzes +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + r0 ∈ {0} + r1 ∈ {0} + r2 ∈ {0} + r3 ∈ {0} + r4 ∈ {0} + r5 ∈ {0} + r6 ∈ {0} + r7 ∈ {0} + r8 ∈ {0} + r9 ∈ {0} + c0 ∈ {0} + c1 ∈ {0} + c2 ∈ {0} + c3 ∈ {0} + c4 ∈ {0} + c5 ∈ {0} + c6 ∈ {0} + c7 ∈ {0} + c8 ∈ {0} + c9 ∈ {0} +[value] computing for function onze_0 <- test_onzes. + Called from tests/value/loop_test.i:43. +tests/value/loop_test.i:9:[value] entering loop for the first time +[value] Recording results for onze_0 +[value] Done for function onze_0 +[value] computing for function onze_1 <- test_onzes. + Called from tests/value/loop_test.i:44. +tests/value/loop_test.i:12:[value] entering loop for the first time +[value] Recording results for onze_1 +[value] Done for function onze_1 +[value] computing for function onze_2 <- test_onzes. + Called from tests/value/loop_test.i:45. +tests/value/loop_test.i:15:[value] entering loop for the first time +[value] Recording results for onze_2 +[value] Done for function onze_2 +[value] computing for function onze_3 <- test_onzes. + Called from tests/value/loop_test.i:46. +tests/value/loop_test.i:18:[value] entering loop for the first time +[value] Recording results for onze_3 +[value] Done for function onze_3 +[value] computing for function onze_4 <- test_onzes. + Called from tests/value/loop_test.i:47. +tests/value/loop_test.i:21:[value] entering loop for the first time +[value] Recording results for onze_4 +[value] Done for function onze_4 +[value] computing for function onze_5 <- test_onzes. + Called from tests/value/loop_test.i:48. +tests/value/loop_test.i:25:[value] entering loop for the first time +[value] Recording results for onze_5 +[value] Done for function onze_5 +[value] computing for function onze_6 <- test_onzes. + Called from tests/value/loop_test.i:49. +tests/value/loop_test.i:28:[value] entering loop for the first time +[value] Recording results for onze_6 +[value] Done for function onze_6 +[value] computing for function onze_7 <- test_onzes. + Called from tests/value/loop_test.i:50. +tests/value/loop_test.i:31:[value] entering loop for the first time +[value] Recording results for onze_7 +[value] Done for function onze_7 +[value] computing for function onze_8 <- test_onzes. + Called from tests/value/loop_test.i:51. +tests/value/loop_test.i:34:[value] entering loop for the first time +[value] Recording results for onze_8 +[value] Done for function onze_8 +[value] computing for function onze_9 <- test_onzes. + Called from tests/value/loop_test.i:52. +tests/value/loop_test.i:37:[value] entering loop for the first time +[value] Recording results for onze_9 +[value] Done for function onze_9 +[value] Recording results for test_onzes +[value] done for function test_onzes +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function onze_0: + onze ∈ {11} +[value:final-states] Values at end of function onze_1: + onze ∈ {11} +[value:final-states] Values at end of function onze_2: + onze ∈ {11} +[value:final-states] Values at end of function onze_3: + onze ∈ {11} +[value:final-states] Values at end of function onze_4: + onze ∈ {11} +[value:final-states] Values at end of function onze_5: + onze ∈ {11} +[value:final-states] Values at end of function onze_6: + onze ∈ {11} +[value:final-states] Values at end of function onze_7: + onze ∈ {11} +[value:final-states] Values at end of function onze_8: + onze ∈ {11} +[value:final-states] Values at end of function onze_9: + onze ∈ {11} +[value:final-states] Values at end of function test_onzes: + r0 ∈ {11} + r1 ∈ {11} + r2 ∈ {11} + r3 ∈ {11} + r4 ∈ {11} + r5 ∈ {11} + r6 ∈ {11} + r7 ∈ {11} + r8 ∈ {11} + r9 ∈ {11} diff --git a/tests/value/oracle_symblocs/loop_test.1.err.oracle b/tests/value/oracle_symblocs/loop_test.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/loop_test.1.res.oracle b/tests/value/oracle_symblocs/loop_test.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..66e2f70f6ef0f743feafdcc124fd31f8b8c155a6 --- /dev/null +++ b/tests/value/oracle_symblocs/loop_test.1.res.oracle @@ -0,0 +1,110 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/loop_test.i (no preprocessing) +[value] Analyzing a complete application starting at test_cent_onzes +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + r0 ∈ {0} + r1 ∈ {0} + r2 ∈ {0} + r3 ∈ {0} + r4 ∈ {0} + r5 ∈ {0} + r6 ∈ {0} + r7 ∈ {0} + r8 ∈ {0} + r9 ∈ {0} + c0 ∈ {0} + c1 ∈ {0} + c2 ∈ {0} + c3 ∈ {0} + c4 ∈ {0} + c5 ∈ {0} + c6 ∈ {0} + c7 ∈ {0} + c8 ∈ {0} + c9 ∈ {0} +[value] computing for function cent_onze_0 <- test_cent_onzes. + Called from tests/value/loop_test.i:101. +tests/value/loop_test.i:57:[value] entering loop for the first time +[value] Recording results for cent_onze_0 +[value] Done for function cent_onze_0 +[value] computing for function cent_onze_1 <- test_cent_onzes. + Called from tests/value/loop_test.i:102. +tests/value/loop_test.i:60:[value] entering loop for the first time +[value] Recording results for cent_onze_1 +[value] Done for function cent_onze_1 +[value] computing for function cent_onze_2 <- test_cent_onzes. + Called from tests/value/loop_test.i:103. +tests/value/loop_test.i:64:[value] entering loop for the first time +[value] Recording results for cent_onze_2 +[value] Done for function cent_onze_2 +[value] computing for function cent_onze_3 <- test_cent_onzes. + Called from tests/value/loop_test.i:104. +tests/value/loop_test.i:68:[value] entering loop for the first time +[value] Recording results for cent_onze_3 +[value] Done for function cent_onze_3 +[value] computing for function cent_onze_4 <- test_cent_onzes. + Called from tests/value/loop_test.i:105. +tests/value/loop_test.i:72:[value] entering loop for the first time +[value] Recording results for cent_onze_4 +[value] Done for function cent_onze_4 +[value] computing for function cent_onze_5 <- test_cent_onzes. + Called from tests/value/loop_test.i:106. +tests/value/loop_test.i:77:[value] entering loop for the first time +[value] Recording results for cent_onze_5 +[value] Done for function cent_onze_5 +[value] computing for function cent_onze_6 <- test_cent_onzes. + Called from tests/value/loop_test.i:107. +tests/value/loop_test.i:80:[value] entering loop for the first time +[value] Recording results for cent_onze_6 +[value] Done for function cent_onze_6 +[value] computing for function cent_onze_7 <- test_cent_onzes. + Called from tests/value/loop_test.i:108. +tests/value/loop_test.i:84:[value] entering loop for the first time +[value] Recording results for cent_onze_7 +[value] Done for function cent_onze_7 +[value] computing for function cent_onze_8 <- test_cent_onzes. + Called from tests/value/loop_test.i:109. +tests/value/loop_test.i:88:[value] entering loop for the first time +[value] Recording results for cent_onze_8 +[value] Done for function cent_onze_8 +[value] computing for function cent_onze_9 <- test_cent_onzes. + Called from tests/value/loop_test.i:110. +tests/value/loop_test.i:92:[value] entering loop for the first time +[value] Recording results for cent_onze_9 +[value] Done for function cent_onze_9 +[value] Recording results for test_cent_onzes +[value] done for function test_cent_onzes +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function cent_onze_0: + cent_onze ∈ {111} +[value:final-states] Values at end of function cent_onze_1: + cent_onze ∈ {111} +[value:final-states] Values at end of function cent_onze_2: + cent_onze ∈ {111} +[value:final-states] Values at end of function cent_onze_3: + cent_onze ∈ {111} +[value:final-states] Values at end of function cent_onze_4: + cent_onze ∈ {111} +[value:final-states] Values at end of function cent_onze_5: + cent_onze ∈ {111} +[value:final-states] Values at end of function cent_onze_6: + cent_onze ∈ {111} +[value:final-states] Values at end of function cent_onze_7: + cent_onze ∈ {111} +[value:final-states] Values at end of function cent_onze_8: + cent_onze ∈ {111} +[value:final-states] Values at end of function cent_onze_9: + cent_onze ∈ {111} +[value:final-states] Values at end of function test_cent_onzes: + c0 ∈ {111} + c1 ∈ {111} + c2 ∈ {111} + c3 ∈ {111} + c4 ∈ {111} + c5 ∈ {111} + c6 ∈ {111} + c7 ∈ {111} + c8 ∈ {111} + c9 ∈ {111} diff --git a/tests/value/oracle_symblocs/loop_wvar.0.err.oracle b/tests/value/oracle_symblocs/loop_wvar.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/loop_wvar.0.res.oracle b/tests/value/oracle_symblocs/loop_wvar.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..4e581a3d66623a72b8ea161442cacfa4ce666b20 --- /dev/null +++ b/tests/value/oracle_symblocs/loop_wvar.0.res.oracle @@ -0,0 +1,31 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/loop_wvar.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +tests/value/loop_wvar.i:16:[value] entering loop for the first time +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + n ∈ {13} + i ∈ [13..2147483647] + j ∈ [7..55],3%4 or UNINITIALIZED +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/loop_wvar.i (no preprocessing) +tests/value/loop_wvar.i:38:[kernel] warning: invalid pragma '12'. Ignoring loop annotation +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +tests/value/loop_wvar.i:16:[value] entering loop for the first time +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + n ∈ {13} + i ∈ {13} + j ∈ [7..55],3%4 or UNINITIALIZED diff --git a/tests/value/oracle_symblocs/loop_wvar.1.err.oracle b/tests/value/oracle_symblocs/loop_wvar.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/loop_wvar.1.res.oracle b/tests/value/oracle_symblocs/loop_wvar.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..eb311185e423bd2bfbbe4a1bf3dfde01f52aae98 --- /dev/null +++ b/tests/value/oracle_symblocs/loop_wvar.1.res.oracle @@ -0,0 +1,40 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/loop_wvar.i (no preprocessing) +tests/value/loop_wvar.i:38:[kernel] warning: invalid pragma '12'. Ignoring loop annotation +[value] Analyzing a complete application starting at main3 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] computing for function main_unhelpful <- main3. + Called from tests/value/loop_wvar.i:84. +tests/value/loop_wvar.i:52:[value] entering loop for the first time +tests/value/loop_wvar.i:57:[value] warning: signed overflow. assert next+1 ≤ 2147483647; +[value] Recording results for main_unhelpful +[value] Done for function main_unhelpful +[value] computing for function main_multiple_hints <- main3. + Called from tests/value/loop_wvar.i:85. +tests/value/loop_wvar.i:69:[value] entering loop for the first time +[value] Called Frama_C_show_each({0}, {0}, {0}) +[value] Called Frama_C_show_each({0; 1}, {0; 1}, {0; 1}) +[value] Called Frama_C_show_each({0; 1; 2}, {0; 1; 2}, {0; 1; 2}) +[value] Called Frama_C_show_each([0..9], {0; 1; 2; 3}, {0; 1; 2; 3}) +[value] Called Frama_C_show_each([0..9], {0; 1; 2; 3; 4}, {0; 1; 2; 3; 4}) +[value] Called Frama_C_show_each([0..9], [0..17], [0..11]) +[value] Called Frama_C_show_each([0..9], [0..18], [0..12]) +[value] Recording results for main_multiple_hints +[value] Done for function main_multiple_hints +[value] Recording results for main3 +[value] done for function main3 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main_multiple_hints: + maxj ∈ {17} + maxk ∈ {11} + j ∈ [0..18] + k ∈ [0..12] +[value:final-states] Values at end of function main_unhelpful: + max ∈ {25} + next ∈ [0..2147483647] + i ∈ {30} +[value:final-states] Values at end of function main3: + diff --git a/tests/value/oracle_symblocs/loop_wvar.2.err.oracle b/tests/value/oracle_symblocs/loop_wvar.2.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/loop_wvar.2.res.oracle b/tests/value/oracle_symblocs/loop_wvar.2.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..cf7e717addcf989a23e1ab487a62606175036c54 --- /dev/null +++ b/tests/value/oracle_symblocs/loop_wvar.2.res.oracle @@ -0,0 +1,16 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/loop_wvar.i (no preprocessing) +tests/value/loop_wvar.i:38:[kernel] warning: invalid pragma '12'. Ignoring loop annotation +[value] Analyzing a complete application starting at main_err1 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +tests/value/loop_wvar.i:27:[value] entering loop for the first time +[value] Recording results for main_err1 +[value] done for function main_err1 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main_err1: + n ∈ {13} + i ∈ {13} + j ∈ [7..55],3%4 or UNINITIALIZED diff --git a/tests/value/oracle_symblocs/loop_wvar.3.err.oracle b/tests/value/oracle_symblocs/loop_wvar.3.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/loop_wvar.3.res.oracle b/tests/value/oracle_symblocs/loop_wvar.3.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..abd0fc395ffd021675ab2a06fdf203e6a6ef330a --- /dev/null +++ b/tests/value/oracle_symblocs/loop_wvar.3.res.oracle @@ -0,0 +1,16 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/loop_wvar.i (no preprocessing) +tests/value/loop_wvar.i:38:[kernel] warning: invalid pragma '12'. Ignoring loop annotation +[value] Analyzing a complete application starting at main_err2 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +tests/value/loop_wvar.i:39:[value] entering loop for the first time +[value] Recording results for main_err2 +[value] done for function main_err2 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main_err2: + n ∈ {13} + i ∈ [13..2147483647] + j ∈ [7..55],3%4 or UNINITIALIZED diff --git a/tests/value/oracle_symblocs/loopfun.err.oracle b/tests/value/oracle_symblocs/loopfun.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/loopfun.res.oracle b/tests/value/oracle_symblocs/loopfun.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..be377b109764c7b65a785ceb9fe4c6599eeecebe --- /dev/null +++ b/tests/value/oracle_symblocs/loopfun.res.oracle @@ -0,0 +1,65 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/loopfun.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + a ∈ {7} +[value] computing for function test <- main. + Called from tests/value/loopfun.i:14. +[value] Recording results for test +[value] Done for function test +[value] computing for function test <- main. + Called from tests/value/loopfun.i:14. +[value] Recording results for test +[value] Done for function test +[value] computing for function test <- main. + Called from tests/value/loopfun.i:16. +[value] Recording results for test +[value] Done for function test +[value] Called Frama_C_show_each_t({5}) +[value] computing for function test <- main. + Called from tests/value/loopfun.i:14. +[value] Recording results for test +[value] Done for function test +[value] computing for function test <- main. + Called from tests/value/loopfun.i:14. +[value] Recording results for test +[value] Done for function test +[value] computing for function test <- main. + Called from tests/value/loopfun.i:16. +[value] Recording results for test +[value] Done for function test +[value] Called Frama_C_show_each_t({2}) +[value] computing for function test <- main. + Called from tests/value/loopfun.i:14. +[value] Recording results for test +[value] Done for function test +[value] computing for function test <- main. + Called from tests/value/loopfun.i:14. +[value] Recording results for test +[value] Done for function test +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[from] Computing for function test +[from] Done for function test +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function test: + FROMTOP + \result FROM ANYTHING(origin:Unknown) +[from] Function main: + FROMTOP + \result FROM ANYTHING(origin:Unknown) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function test: + tmp; a +[inout] Inputs for function test: + a +[inout] Out (internal) for function main: + ANYTHING(origin:Unknown) +[inout] Inputs for function main: + ANYTHING(origin:Unknown) diff --git a/tests/value/oracle_symblocs/loopinv.err.oracle b/tests/value/oracle_symblocs/loopinv.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/loopinv.res.oracle b/tests/value/oracle_symblocs/loopinv.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..35e8d67c3e5a4bbc103f3dfc1c38bce6f01541b8 --- /dev/null +++ b/tests/value/oracle_symblocs/loopinv.res.oracle @@ -0,0 +1,169 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/loopinv.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] computing for function main1 <- main. + Called from tests/value/loopinv.c:51. +[value] computing for function init <- main1 <- main. + Called from tests/value/loopinv.c:22. +tests/value/loopinv.c:5:[value] function init: precondition got status valid. +tests/value/loopinv.c:6:[value] function init: precondition got status valid. +tests/value/loopinv.c:9:[value] loop invariant got status valid. +tests/value/loopinv.c:10:[value] entering loop for the first time +[value] Recording results for init +[value] Done for function init +[value] computing for function init <- main1 <- main. + Called from tests/value/loopinv.c:25. +[value] Recording results for init +[value] Done for function init +[value] Recording results for main1 +[value] Done for function main1 +[value] computing for function main2 <- main. + Called from tests/value/loopinv.c:52. +tests/value/loopinv.c:32:[value] loop invariant got status valid. +tests/value/loopinv.c:33:[value] loop invariant got status valid. +tests/value/loopinv.c:32:[value] warning: loop invariant got status invalid (stopping propagation). +[value] Recording results for main2 +[value] Done for function main2 +[value] computing for function main3 <- main. + Called from tests/value/loopinv.c:53. +tests/value/loopinv.c:42:[value] loop invariant got status valid. +tests/value/loopinv.c:43:[value] entering loop for the first time +[value] Called Frama_C_show_each({0}, {0}) +[value] Called Frama_C_show_each({0; 1}, {0; 1}) +tests/value/loopinv.c:42:[value] warning: loop invariant got status unknown. +[value] Called Frama_C_show_each({0; 1; 2}, {0; 1; 2}) +[value] Called Frama_C_show_each({0; 1; 2; 3; 4; 5}, {0; 1; 2; 3}) +[value] Called Frama_C_show_each({0; 1; 2; 3; 4; 5; 6}, {0; 1; 2; 3; 4}) +[value] Called Frama_C_show_each([0..9], {0; 1; 2; 3; 4; 5}) +[value] Called Frama_C_show_each([0..10], {0; 1; 2; 3; 4; 5; 6}) +[value] Called Frama_C_show_each([0..13], {0; 1; 2; 3; 4; 5; 6; 7}) +[value] Called Frama_C_show_each([0..14], [0..8]) +[value] Called Frama_C_show_each([0..17], [0..9]) +[value] Called Frama_C_show_each([0..18], [0..10]) +[value] Called Frama_C_show_each([0..21], [0..11]) +[value] Called Frama_C_show_each([0..22], [0..12]) +[value] Called Frama_C_show_each([0..25], [0..13]) +[value] Called Frama_C_show_each([0..26], [0..14]) +[value] Called Frama_C_show_each([0..29], [0..15]) +[value] Called Frama_C_show_each([0..30], [0..16]) +[value] Called Frama_C_show_each([0..33], [0..17]) +[value] Called Frama_C_show_each([0..34], [0..18]) +[value] Called Frama_C_show_each([0..37], [0..19]) +[value] Called Frama_C_show_each([0..38], [0..20]) +[value] Called Frama_C_show_each([0..41], [0..21]) +[value] Called Frama_C_show_each([0..42], [0..22]) +[value] Called Frama_C_show_each([0..45], [0..23]) +[value] Called Frama_C_show_each([0..46], [0..24]) +[value] Called Frama_C_show_each([0..49], [0..25]) +[value] Called Frama_C_show_each([0..50], [0..26]) +[value] Called Frama_C_show_each([0..53], [0..27]) +[value] Called Frama_C_show_each([0..54], [0..28]) +[value] Called Frama_C_show_each([0..57], [0..29]) +[value] Called Frama_C_show_each([0..58], [0..30]) +[value] Called Frama_C_show_each([0..61], [0..31]) +[value] Called Frama_C_show_each([0..62], [0..32]) +[value] Called Frama_C_show_each([0..65], [0..33]) +[value] Called Frama_C_show_each([0..66], [0..34]) +[value] Called Frama_C_show_each([0..69], [0..35]) +[value] Called Frama_C_show_each([0..70], [0..36]) +[value] Called Frama_C_show_each([0..73], [0..37]) +[value] Called Frama_C_show_each([0..74], [0..38]) +[value] Called Frama_C_show_each([0..77], [0..39]) +[value] Called Frama_C_show_each([0..78], [0..40]) +[value] Called Frama_C_show_each([0..81], [0..41]) +[value] Called Frama_C_show_each([0..82], [0..42]) +[value] Called Frama_C_show_each([0..85], [0..43]) +[value] Called Frama_C_show_each([0..86], [0..44]) +[value] Called Frama_C_show_each([0..89], [0..45]) +[value] Called Frama_C_show_each([0..90], [0..46]) +[value] Called Frama_C_show_each([0..93], [0..47]) +[value] Called Frama_C_show_each([0..94], [0..48]) +[value] Called Frama_C_show_each([0..97], [0..49]) +[value] Called Frama_C_show_each([0..98], [0..50]) +[value] Called Frama_C_show_each([0..99], [0..51]) +[value] Called Frama_C_show_each([0..99], [0..52]) +tests/value/loopinv.c:45:[value] warning: signed overflow. assert j+1 ≤ 2147483647; +[value] Called Frama_C_show_each([0..99], [0..2147483647]) +[value] Recording results for main3 +[value] Done for function main3 +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function init: + p ∈ {{ &t1 + [4..284],0%4 ; &t2 + [4..40],0%4 }} + t1[0] ∈ UNINITIALIZED + [1..71] ∈ {1} or UNINITIALIZED + t2[0] ∈ UNINITIALIZED + [1..10] ∈ {1} or UNINITIALIZED +[value:final-states] Values at end of function main1: + t1[0] ∈ UNINITIALIZED + [1..71] ∈ {1} or UNINITIALIZED + t2[0] ∈ UNINITIALIZED + [1..10] ∈ {1} or UNINITIALIZED +[value:final-states] Values at end of function main2: + NON TERMINATING FUNCTION +[value:final-states] Values at end of function main3: + j ∈ [0..2147483647] +[value:final-states] Values at end of function main: + +[report] Computing properties status... + +-------------------------------------------------------------------------------- +--- Properties of Function 'init' +-------------------------------------------------------------------------------- + +[ Valid ] Pre-condition (file tests/value/loopinv.c, line 5) + by Call Preconditions. +[ Valid ] Pre-condition (file tests/value/loopinv.c, line 6) + by Call Preconditions. +[ Valid ] Invariant (file tests/value/loopinv.c, line 9) + by Value. +[ Valid ] Default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'main1' +-------------------------------------------------------------------------------- + +[ Valid ] Instance of 'Pre-condition (file tests/value/loopinv.c, line 5)' at call 'init' (file tests/value/loopinv.c, line 22) + + by Value. +[ Valid ] Instance of 'Pre-condition (file tests/value/loopinv.c, line 6)' at call 'init' (file tests/value/loopinv.c, line 22) + + by Value. +[ Valid ] Instance of 'Pre-condition (file tests/value/loopinv.c, line 5)' at call 'init' (file tests/value/loopinv.c, line 25) + + by Value. +[ Valid ] Instance of 'Pre-condition (file tests/value/loopinv.c, line 6)' at call 'init' (file tests/value/loopinv.c, line 25) + + by Value. + +-------------------------------------------------------------------------------- +--- Properties of Function 'main2' +-------------------------------------------------------------------------------- + +[ - ] Invariant (file tests/value/loopinv.c, line 32) + tried with Value. +[ Valid ] Invariant (file tests/value/loopinv.c, line 33) + by Value. + +-------------------------------------------------------------------------------- +--- Properties of Function 'main3' +-------------------------------------------------------------------------------- + +[ - ] Invariant (file tests/value/loopinv.c, line 42) + tried with Value. +[ - ] Assertion 'Value,signed_overflow' (file tests/value/loopinv.c, line 45) + tried with Value. + +-------------------------------------------------------------------------------- +--- Status Report Summary +-------------------------------------------------------------------------------- + 9 Completely validated + 3 To be validated + 12 Total +-------------------------------------------------------------------------------- diff --git a/tests/value/oracle_symblocs/machdep.err.oracle b/tests/value/oracle_symblocs/machdep.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/machdep.res.oracle b/tests/value/oracle_symblocs/machdep.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..832d1e38b0faef8b36face46f7223bfa8149ad46 --- /dev/null +++ b/tests/value/oracle_symblocs/machdep.res.oracle @@ -0,0 +1,66 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/machdep.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] computing for function test1 <- main. + Called from tests/value/machdep.c:25. +[value] Recording results for test1 +[value] Done for function test1 +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function test1: + u ∈ {18446744073709551615} + w ∈ {4294967295} + q ∈ {4294967295} + c1 ∈ {0} + c2 ∈ {0} +[value:final-states] Values at end of function main: + +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/machdep.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] computing for function test1 <- main. + Called from tests/value/machdep.c:25. +[value] Recording results for test1 +[value] Done for function test1 +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function test1: + u ∈ {18446744073709551615} + w ∈ {18446744073709551615} + q ∈ {18446744073709551615} + c1 ∈ {1} + c2 ∈ {1} +[value:final-states] Values at end of function main: + +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/machdep.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] computing for function test1 <- main. + Called from tests/value/machdep.c:25. +[value] Recording results for test1 +[value] Done for function test1 +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function test1: + u ∈ {18446744073709551615} + w ∈ {4294967295} + q ∈ {4294967295} + c1 ∈ {0} + c2 ∈ {0} +[value:final-states] Values at end of function main: + diff --git a/tests/value/oracle_symblocs/max_pointed.err.oracle b/tests/value/oracle_symblocs/max_pointed.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/max_pointed.res.oracle b/tests/value/oracle_symblocs/max_pointed.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..427bc0724736fd5fc0632ca9a21cb1ce764854cd --- /dev/null +++ b/tests/value/oracle_symblocs/max_pointed.res.oracle @@ -0,0 +1,28 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/max_pointed.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + rand ∈ [--..--] +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + a ∈ {42.} + b ∈ {11.} + min ∈ {11.} + max ∈ {42.} + p ∈ {{ &a ; &b }} + q ∈ {{ &a ; &b }} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + a; b; min; max; p; tmp; q; tmp_0 +[inout] Inputs for function main: + rand diff --git a/tests/value/oracle_symblocs/memexec.err.oracle b/tests/value/oracle_symblocs/memexec.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/memexec.res.oracle b/tests/value/oracle_symblocs/memexec.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..af8527f13f4671e22c439f15a5e0f2aad58efd71 --- /dev/null +++ b/tests/value/oracle_symblocs/memexec.res.oracle @@ -0,0 +1,400 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/memexec.c (with preprocessing) +[rte] annotating function fbug +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + x1 ∈ {0} + y1 ∈ {0} + z1 ∈ {0} + c ∈ [--..--] + p ∈ {0} + i ∈ {0} + t[0..9] ∈ {0} + ps ∈ {0} + S[0..9] ∈ {0} + g_f5_1 ∈ {0} + g_f5_2 ∈ {0} + two_fields ∈ {0} +[value] computing for function f1 <- main. + Called from tests/value/memexec.c:154. +[value] computing for function f11 <- f1 <- main. + Called from tests/value/memexec.c:12. +[value] Recording results for f11 +[value] Done for function f11 +tests/value/memexec.c:13:[value] Reusing old results for call to f11 +tests/value/memexec.c:14:[value] Reusing old results for call to f11 +tests/value/memexec.c:16:[value] Reusing old results for call to f11 +tests/value/memexec.c:18:[value] Reusing old results for call to f11 +tests/value/memexec.c:20:[value] Reusing old results for call to f11 +tests/value/memexec.c:21:[value] Reusing old results for call to f11 +[value] Recording results for f1 +[value] Done for function f1 +[value] computing for function f2 <- main. + Called from tests/value/memexec.c:155. +[value] Recording results for f2 +[value] Done for function f2 +[value] computing for function f3 <- main. + Called from tests/value/memexec.c:156. +[value] Recording results for f3 +[value] Done for function f3 +[value] computing for function bug <- main. + Called from tests/value/memexec.c:157. +[value] computing for function fbug <- bug <- main. + Called from tests/value/memexec.c:40. +tests/value/memexec.c:33:[value] warning: assertion 'rte,mem_access' got status invalid (stopping propagation). +[value] Recording results for fbug +[value] Done for function fbug +[value] computing for function fbug <- bug <- main. + Called from tests/value/memexec.c:42. +tests/value/memexec.c:33:[value] assertion 'rte,mem_access' got status valid. +[value] Recording results for fbug +[value] Done for function fbug +tests/value/memexec.c:43:[value] warning: locals {x} escaping the scope of bug through p +[value] Recording results for bug +[value] Done for function bug +[value] computing for function f4 <- main. + Called from tests/value/memexec.c:158. +[value] computing for function f4_2 <- f4 <- main. + Called from tests/value/memexec.c:84. +[value] computing for function f4_11 <- f4_2 <- f4 <- main. + Called from tests/value/memexec.c:74. +tests/value/memexec.c:59:[value] warning: accessing out of bounds index. assert ps->i < 10; +tests/value/memexec.c:59:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +[value] Recording results for f4_11 +[value] Done for function f4_11 +[value] computing for function f4_12 <- f4_2 <- f4 <- main. + Called from tests/value/memexec.c:76. +tests/value/memexec.c:63:[value] warning: accessing out of bounds index. assert i < 10; +tests/value/memexec.c:63:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +[value] Recording results for f4_12 +[value] Done for function f4_12 +[value] Recording results for f4_2 +[value] Done for function f4_2 +[value] computing for function f4_2 <- f4 <- main. + Called from tests/value/memexec.c:87. +[value] computing for function f4_11 <- f4_2 <- f4 <- main. + Called from tests/value/memexec.c:74. +[value] Recording results for f4_11 +[value] Done for function f4_11 +[value] computing for function f4_12 <- f4_2 <- f4 <- main. + Called from tests/value/memexec.c:76. +[value] Recording results for f4_12 +[value] Done for function f4_12 +[value] Recording results for f4_2 +[value] Done for function f4_2 +[value] Recording results for f4 +[value] Done for function f4 +[value] computing for function f5 <- main. + Called from tests/value/memexec.c:159. +[value] computing for function f5_aux <- f5 <- main. + Called from tests/value/memexec.c:107. +tests/value/memexec.c:94:[value] warning: assertion got status unknown. +tests/value/memexec.c:96:[value] warning: assertion got status unknown. +tests/value/memexec.c:98:[value] entering loop for the first time +[value] Recording results for f5_aux +[value] Done for function f5_aux +[value] Called Frama_C_show_each_f5([9..2147483647], + [-2147483648..6], + [-2147483648..7]) +tests/value/memexec.c:113:[value] Reusing old results for call to f5_aux +[value] Called Frama_C_show_each_f5([9..2147483647], + [-2147483648..2147483647], + [-2147483648..7]) +[value] Recording results for f5 +[value] Done for function f5 +[value] computing for function f6 <- main. + Called from tests/value/memexec.c:160. +[value] computing for function f6_1 <- f6 <- main. + Called from tests/value/memexec.c:123. +[value] Recording results for f6_1 +[value] Done for function f6_1 +[value] computing for function f6_1 <- f6 <- main. + Called from tests/value/memexec.c:126. +[value] Recording results for f6_1 +[value] Done for function f6_1 +[value] Recording results for f6 +[value] Done for function f6 +[value] computing for function f7 <- main. + Called from tests/value/memexec.c:161. +[value] computing for function f7_1 <- f7 <- main. + Called from tests/value/memexec.c:136. +[value] Recording results for f7_1 +[value] Done for function f7_1 +tests/value/memexec.c:137:[value] Reusing old results for call to f7_1 +[value] Recording results for f7 +[value] Done for function f7 +[value] computing for function f8 <- main. + Called from tests/value/memexec.c:162. +[value] computing for function f8_1 <- f8 <- main. + Called from tests/value/memexec.c:147. +tests/value/memexec.c:141:[value] warning: accessing uninitialized left-value. assert \initialized(q); +[value] Recording results for f8_1 +[value] Done for function f8_1 +[value] computing for function f8_1 <- f8 <- main. + Called from tests/value/memexec.c:149. +[value] Recording results for f8_1 +[value] Done for function f8_1 +tests/value/memexec.c:150:[value] Reusing old results for call to f8_1 +[value] Recording results for f8 +[value] Done for function f8 +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f11: + x1 ∈ {1} +[value:final-states] Values at end of function f1: + x1 ∈ {1} +[value:final-states] Values at end of function f2: + +[value:final-states] Values at end of function f3: + +[value:final-states] Values at end of function f4_11: + t[0..5] ∈ {0} + [6] ∈ {1} + [7..9] ∈ {0} +[value:final-states] Values at end of function f4_12: + t[0..1] ∈ {0} + [2] ∈ {3} + [3..4] ∈ {0} + [5] ∈ {2} + [6..9] ∈ {0} +[value:final-states] Values at end of function f4_2: + i ∈ {5} + t[0..1] ∈ {0} + [2] ∈ {0; 3} + [3..4] ∈ {0} + [5] ∈ {0; 2} + [6] ∈ {0; 1} + [7..9] ∈ {0} + ps ∈ {{ &S[8] }} + S[0..7] ∈ {0} + [8].i ∈ {6} + [9] ∈ {0} +[value:final-states] Values at end of function f4: + i ∈ {0; 5} + t[0..1] ∈ {0} + [2] ∈ {0; 3} + [3..4] ∈ {0} + [5] ∈ {0; 2} + [6] ∈ {0; 1} + [7..9] ∈ {0} + ps ∈ {{ NULL ; &S[8] }} + S[0..7] ∈ {0} + [8].i ∈ {0; 6} + [9] ∈ {0} + n ∈ {6; 12} +[value:final-states] Values at end of function f5_aux: + v ∈ [--..--] +[value:final-states] Values at end of function f5: + g_f5_1 ∈ [--..--] + g_f5_2 ∈ [-2147483648..7] + arg ∈ [9..2147483647] +[value:final-states] Values at end of function f6_1: + two_fields.x ∈ {1} + .y ∈ {2; 3} +[value:final-states] Values at end of function f6: + two_fields.x ∈ {1} + .y ∈ {3} +[value:final-states] Values at end of function f7_1: + x{.x; .y} ∈ {1} +[value:final-states] Values at end of function f7: + x{.x; .y} ∈ {1} +[value:final-states] Values at end of function f8_1: + q ∈ {0} +[value:final-states] Values at end of function f8: + x ∈ {1} +[value:final-states] Values at end of function fbug: + __retres ∈ {1} +[value:final-states] Values at end of function bug: + p ∈ {{ &x }} + x ∈ {1} +[value:final-states] Values at end of function main: + x1 ∈ {1} + p ∈ ESCAPINGADDR + i ∈ {0; 5} + t[0..1] ∈ {0} + [2] ∈ {0; 3} + [3..4] ∈ {0} + [5] ∈ {0; 2} + [6] ∈ {0; 1} + [7..9] ∈ {0} + ps ∈ {{ NULL ; &S[8] }} + S[0..7] ∈ {0} + [8].i ∈ {0; 6} + [9] ∈ {0} + g_f5_1 ∈ [--..--] + g_f5_2 ∈ [-2147483648..7] + two_fields.x ∈ {1} + .y ∈ {3} +[from] Computing for function f11 +[from] Done for function f11 +[from] Computing for function f1 +[from] Done for function f1 +[from] Computing for function f2 +[from] Done for function f2 +[from] Computing for function f3 +[from] Done for function f3 +[from] Computing for function f4_11 +[from] Done for function f4_11 +[from] Computing for function f4_12 +[from] Done for function f4_12 +[from] Computing for function f4_2 +[from] Done for function f4_2 +[from] Computing for function f4 +[from] Done for function f4 +[from] Computing for function f5_aux +[from] Done for function f5_aux +[from] Computing for function f5 +[from] Done for function f5 +[from] Computing for function f6_1 +[from] Done for function f6_1 +[from] Computing for function f6 +[from] Done for function f6 +[from] Computing for function f7_1 +[from] Done for function f7_1 +[from] Computing for function f7 +[from] Done for function f7 +[from] Computing for function f8_1 +[from] Done for function f8_1 +[from] Computing for function f8 +[from] Done for function f8 +[from] Computing for function fbug +[from] Done for function fbug +[from] Computing for function bug +[from] Done for function bug +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f11: + x1 FROM \nothing +[from] Function f1: + x1 FROM \nothing +[from] Function f2: + NO EFFECTS +[from] Function f3: + NO EFFECTS +[from] Function f4_11: + t[6] FROM ps; S[8] +[from] Function f4_12: + t{[2]; [5]} FROM i +[from] Function f4_2: + i FROM v; n + t{[2]; [5..6]} FROM c; v; n (and SELF) + ps FROM \nothing + S[8] FROM v; n +[from] Function f4: + i FROM c (and SELF) + t{[2]; [5..6]} FROM c (and SELF) + ps FROM c (and SELF) + S[8] FROM c (and SELF) +[from] Function f5_aux: + NO EFFECTS +[from] Function f5: + g_f5_1 FROM c + g_f5_2 FROM c +[from] Function f6_1: + two_fields.x FROM \nothing +[from] Function f6: + two_fields FROM \nothing +[from] Function f7_1: + x FROM p_0 +[from] Function f7: + NO EFFECTS +[from] Function f8_1: + NO EFFECTS +[from] Function f8: + NO EFFECTS +[from] Function fbug: + \result FROM p; x +[from] Function bug: + p FROM \nothing +[from] Function main: + x1 FROM \nothing + p FROM \nothing + i FROM c (and SELF) + t{[2]; [5..6]} FROM c (and SELF) + ps FROM c (and SELF) + S[8] FROM c (and SELF) + g_f5_1 FROM c + g_f5_2 FROM c + two_fields FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f11: + x1 +[inout] Inputs for function f11: + \nothing +[inout] Out (internal) for function f1: + x1 +[inout] Inputs for function f1: + \nothing +[inout] Out (internal) for function f2: + \nothing +[inout] Inputs for function f2: + \nothing +[inout] Out (internal) for function f3: + \nothing +[inout] Inputs for function f3: + \nothing +[inout] Out (internal) for function f4_11: + t[6] +[inout] Inputs for function f4_11: + ps; S[8] +[inout] Out (internal) for function f4_12: + t{[2]; [5]} +[inout] Inputs for function f4_12: + i +[inout] Out (internal) for function f4_2: + i; t{[2]; [5..6]}; ps; S[8] +[inout] Inputs for function f4_2: + c; i; ps; S[8]; n +[inout] Out (internal) for function f4: + i; t{[2]; [5..6]}; ps; S[8]; n +[inout] Inputs for function f4: + c; i; ps; S[8] +[inout] Out (internal) for function f5_aux: + v +[inout] Inputs for function f5_aux: + g_f5_2 +[inout] Out (internal) for function f5: + g_f5_1; g_f5_2; arg +[inout] Inputs for function f5: + c; g_f5_1; g_f5_2 +[inout] Out (internal) for function f6_1: + two_fields.x +[inout] Inputs for function f6_1: + \nothing +[inout] Out (internal) for function f6: + two_fields +[inout] Inputs for function f6: + \nothing +[inout] Out (internal) for function f7_1: + x +[inout] Inputs for function f7_1: + \nothing +[inout] Out (internal) for function f7: + x +[inout] Inputs for function f7: + \nothing +[inout] Out (internal) for function f8_1: + q +[inout] Inputs for function f8_1: + x +[inout] Out (internal) for function f8: + x +[inout] Inputs for function f8: + c +[inout] Out (internal) for function fbug: + __retres +[inout] Inputs for function fbug: + p; x +[inout] Out (internal) for function bug: + p; x +[inout] Inputs for function bug: + c; p +[inout] Out (internal) for function main: + x1; p; i; t{[2]; [5..6]}; ps; S[8]; g_f5_1; g_f5_2; two_fields +[inout] Inputs for function main: + c; p; i; ps; S[8]; g_f5_1; g_f5_2 diff --git a/tests/value/oracle_symblocs/merge_bits.err.oracle b/tests/value/oracle_symblocs/merge_bits.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/merge_bits.res.oracle b/tests/value/oracle_symblocs/merge_bits.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..9504ec153502f2c06b1ff098227f04a389efe7c8 --- /dev/null +++ b/tests/value/oracle_symblocs/merge_bits.res.oracle @@ -0,0 +1,59 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/merge_bits.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + T[0] ∈ {1} + [1..3] ∈ {0} + [4] ∈ {1} + [5] ∈ {2} + [6] ∈ {3} + [7] ∈ {4} + [8] ∈ {5} + [9] ∈ {0} + [10..12] ∈ {1} +[value] Called Frama_C_show_each_F([bits 0 to 7] ∈ {1} + [bits 8 to 31] ∈ {0} + This amounts to: {1}) +[value] Called Frama_C_show_each_F([bits 0 to 23] ∈ {0} + [bits 24 to 31] ∈ {1} + This amounts to: {16777216}) +[value] Called Frama_C_show_each_F([bits 0 to 7] ∈ {1} + [bits 8 to 15] ∈ {2} + [bits 16 to 23] ∈ {3} + [bits 24 to 31] ∈ {4} + This amounts to: {67305985}) +[value] Called Frama_C_show_each_F([bits 0 to 7] ∈ {0} + [bits 8 to 31]# ∈ {1} repeated %8 + This amounts to: {16843008}) +[value] Called Frama_C_show_each_F([bits 0 to 7] ∈ {1} + [bits 8 to 15] ∈ {0} + [bits 16 to 31]# ∈ + {-1879048176}%32, bits 0 to 15 + This amounts to: {1048577}) +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + T[0] ∈ {1} + [1] ∈ {0} + [bits 16 to 47] ∈ {-1879048176} + [6] ∈ {3} + [7] ∈ {4} + [8] ∈ {5} + [9] ∈ {0} + [10..12] ∈ {1} + __retres ∈ {0} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + T[2..5] FROM \nothing + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + T[2..5]; __retres +[inout] Inputs for function main: + T{[0..7]; [9..12]} diff --git a/tests/value/oracle_symblocs/mini_pointrer.err.oracle b/tests/value/oracle_symblocs/mini_pointrer.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/mini_pointrer.res.oracle b/tests/value/oracle_symblocs/mini_pointrer.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..011c0c7fa2618942bc7feb3ba85f01d7497b8e17 --- /dev/null +++ b/tests/value/oracle_symblocs/mini_pointrer.res.oracle @@ -0,0 +1,36 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/mini_pointrer.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + T[0..1] ∈ {0} + ppp ∈ {0} + pp[0..1] ∈ {0} + p ∈ {0} +tests/value/mini_pointrer.i:6:[value] warning: accessing out of bounds index. assert 0 ≤ c1; +tests/value/mini_pointrer.i:6:[value] warning: accessing out of bounds index. assert c1 < 2; +tests/value/mini_pointrer.i:8:[value] warning: out of bounds read. assert \valid_read(ppp); +tests/value/mini_pointrer.i:8:[value] warning: out of bounds write. assert \valid(*ppp); +tests/value/mini_pointrer.i:10:[value] warning: accessing out of bounds index. assert c2 < 2; +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + T[0..1] ∈ {0; 4; 9} + ppp ∈ {{ (int **)&pp }} + pp[0] ∈ {{ (int)&T{[0], [1]} }} + [1] ∈ {{ NULL ; (int)&T{[0], [1]} }} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + T[0..1] FROM pp[0]; c1; c2 (and SELF) + ppp FROM c2 + pp[0..1] FROM c1 (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + T[0..1]; ppp; pp[0..1] +[inout] Inputs for function main: + ppp; pp[0] diff --git a/tests/value/oracle_symblocs/misaligned_tabs.err.oracle b/tests/value/oracle_symblocs/misaligned_tabs.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/misaligned_tabs.res.oracle b/tests/value/oracle_symblocs/misaligned_tabs.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..04fea32432113195d4d3a734fdff8303d25c9cd6 --- /dev/null +++ b/tests/value/oracle_symblocs/misaligned_tabs.res.oracle @@ -0,0 +1,109 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/misaligned_tabs.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + T[0..299] ∈ {0} + S1{.i1; .i2} ∈ {4369} + {.c1; .c2} ∈ {17} + {.i3; .i4} ∈ {4369} + S2{.i1; .i2} ∈ {4369} + {.c1; .c2} ∈ {17} + {.i3; .i4} ∈ {4369} + S3{.i1; .i2} ∈ {4369} + {.c1; .c2} ∈ {17} + {.i3; .i4} ∈ {4369} + S4{.i1; .i2} ∈ {4369} + {.c1; .c2} ∈ {17} + {.i3; .i4} ∈ {4369} +[value] computing for function misaligned_struct <- main. + Called from tests/value/misaligned_tabs.i:58. +[value] Called Frama_C_show_each_1({1}) +[value] Called Frama_C_show_each_2({1}) +[value] Called Frama_C_show_each_3({1}) +[value] Called Frama_C_show_each_4({1}) +[value] Called Frama_C_show_each_5({1}) +[value] Called Frama_C_show_each_6({1}) +[value] Called Frama_C_show_each_7({1}) +[value] Called Frama_C_show_each_8({1}) +[value] Called Frama_C_show_each_9({1}) +[value] Called Frama_C_show_each_a({1}) +[value] Called Frama_C_show_each_b({1}) +[value] Called Frama_C_show_each_c({1}) +[value] Called Frama_C_show_each_d({1}) +[value] Called Frama_C_show_each_e({1}) +[value] Called Frama_C_show_each_f({1}) +[value] Recording results for misaligned_struct +[value] Done for function misaligned_struct +[value] Called Frama_C_show_each_g({1}) +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function misaligned_struct: + S1.i1[bits 0 to 7] ∈ {17} + {.i1[bits 8 to 15]#; .i2} ∈ {4369} repeated %16, bits 8 to 31 + {.c1; .c2} ∈ {17} + {.i3; .i4} ∈ {4369} + S2.i1# ∈ {17} repeated %8 + .i2 ∈ {4369} + {.c1; .c2} ∈ {17} + {.i3; .i4} ∈ {4369} + S3.i1[bits 0 to 7]# ∈ {4369}%16, bits 0 to 7 + {.i1[bits 8 to 15]; .i2#; .c1; .c2; .i3#; .i4[bits 0 to 7]} ∈ + {17} repeated %8 + .i4[bits 8 to 15]# ∈ {4369}%16, bits 8 to 15 + S4{.i1#; .i2#} ∈ {17} repeated %8 + {.c1#; .c2#} ∈ {4369}%32, bits 0 to 15 + {.i3#; .i4#} ∈ {17} repeated %8 +[value:final-states] Values at end of function main: + T[0]# ∈ {1; 2}%32, bits 0 to 7 + [1]# ∈ {1; 2}%32, bits 8 to 15 + [bits 16 to 95]# ∈ {1; 2} repeated %32, bits 16 to 95 + [12..299] ∈ {0} + S1.i1[bits 0 to 7] ∈ {17} + {.i1[bits 8 to 15]#; .i2} ∈ {4369} repeated %16, bits 8 to 31 + {.c1; .c2} ∈ {17} + {.i3; .i4} ∈ {4369} + S2.i1# ∈ {17} repeated %8 + .i2 ∈ {4369} + {.c1; .c2} ∈ {17} + {.i3; .i4} ∈ {4369} + S3.i1[bits 0 to 7]# ∈ {4369}%16, bits 0 to 7 + {.i1[bits 8 to 15]; .i2#; .c1; .c2; .i3#; .i4[bits 0 to 7]} ∈ + {17} repeated %8 + .i4[bits 8 to 15]# ∈ {4369}%16, bits 8 to 15 + S4{.i1#; .i2#} ∈ {17} repeated %8 + {.c1#; .c2#} ∈ {4369}%32, bits 0 to 15 + {.i3#; .i4#} ∈ {17} repeated %8 +[from] Computing for function misaligned_struct +[from] Done for function misaligned_struct +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function misaligned_struct: + S1.i1[bits 0 to 7] FROM \nothing + S2.i1 FROM \nothing + S3{{.i1[bits 8 to 15]; .i2}; {.i3; .i4[bits 0 to 7]}} FROM \nothing + S4 FROM \nothing +[from] Function main: + T{[0]; [2..3]} FROM c1 + {[1]; [4..11]} FROM c2 + S1.i1[bits 0 to 7] FROM \nothing + S2.i1 FROM \nothing + S3{{.i1[bits 8 to 15]; .i2}; {.i3; .i4[bits 0 to 7]}} FROM \nothing + S4 FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function misaligned_struct: + S1.i1[bits 0 to 7]; S2.i1; + S3{{.i1[bits 8 to 15]; .i2}; {.i3; .i4[bits 0 to 7]}}; S4 +[inout] Inputs for function misaligned_struct: + S1{.i1; .i2; .c1; .c2}; S2{{.i1; .i2}; .c2}; S3{{.i1; .i2; .c1}; .i3}; + S4{.i1; .i2; .c1; .c2; .i3} +[inout] Out (internal) for function main: + T[0..11]; S1.i1[bits 0 to 7]; S2.i1; + S3{{.i1[bits 8 to 15]; .i2}; {.i3; .i4[bits 0 to 7]}}; S4 +[inout] Inputs for function main: + T[4..7]; S1{.i1; .i2; .c1; .c2}; S2{{.i1; .i2}; .c2}; + S3{{.i1; .i2; .c1}; .i3}; S4{.i1; .i2; .c1; .c2; .i3} diff --git a/tests/value/oracle_symblocs/mixed_val.err.oracle b/tests/value/oracle_symblocs/mixed_val.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/mixed_val.res.oracle b/tests/value/oracle_symblocs/mixed_val.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..860e70824fb48e18e4744585383dd39934a50437 --- /dev/null +++ b/tests/value/oracle_symblocs/mixed_val.res.oracle @@ -0,0 +1,36 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/mixed_val.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + T[0] ∈ {97} + [1..9] ∈ {0} + a ∈ {0} + b ∈ {0} + c ∈ {0} + d ∈ {0} + e ∈ {0} +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + T[0]# ∈ {128073}%32, bits 0 to 15 + [1..9] ∈ {0} + a ∈ {128073} + d ∈ {128073} + __retres ∈ {0} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + T[0] FROM c + a FROM c + d FROM e + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + T[0]; a; d; __retres +[inout] Inputs for function main: + a[bits 0 to 15]; c; e diff --git a/tests/value/oracle_symblocs/modifies.err.oracle b/tests/value/oracle_symblocs/modifies.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/modifies.res.oracle b/tests/value/oracle_symblocs/modifies.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..7b98bc294c4f7f1f7e9e38e25282de8788d1612b --- /dev/null +++ b/tests/value/oracle_symblocs/modifies.res.oracle @@ -0,0 +1,38 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/modifies.i (no preprocessing) +[value] Analyzing an incomplete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + TAB[0..9] ∈ [--..--] + G ∈ [--..--] + H ∈ [--..--] + J ∈ [--..--] +tests/value/modifies.i:8:[value] warning: signed overflow. assert J+1 ≤ 2147483647; +tests/value/modifies.i:8:[value] warning: signed overflow. assert -2147483648 ≤ TAB[4]-1; +tests/value/modifies.i:11:[value] warning: signed overflow. assert TAB[1]+1 ≤ 2147483647; +tests/value/modifies.i:11:[value] warning: signed overflow. assert TAB[6]+1 ≤ 2147483647; +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + TAB[0..9] ∈ [--..--] + G ∈ [--..--] + H ∈ {0; 1; 3} + J ∈ [--..--] +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + TAB[1] FROM TAB[1]; G; H; J (and SELF) + [4] FROM TAB[4]; H (and SELF) + [6] FROM TAB[6]; G; H; J (and SELF) + G FROM H; J (and SELF) + H FROM G; H; J (and SELF) + J FROM H; J (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + TAB{[1]; [4]; [6]}; G; H; J +[inout] Inputs for function main: + TAB{[1]; [4]; [6]}; G; H; J diff --git a/tests/value/oracle_symblocs/modulo.err.oracle b/tests/value/oracle_symblocs/modulo.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/modulo.res.oracle b/tests/value/oracle_symblocs/modulo.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..7aa433109094c1304a859a2bb3f7a7e1eb87895d --- /dev/null +++ b/tests/value/oracle_symblocs/modulo.res.oracle @@ -0,0 +1,289 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/modulo.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + A ∈ {0} + B ∈ {0} + C ∈ {0} + D ∈ {0} + E ∈ {0} + F ∈ {0} + G ∈ {0} + H ∈ {0} + I ∈ {0} + J ∈ {0} + K ∈ {0} + L ∈ {0} + M ∈ {0} + N ∈ {0} + O ∈ {0} + P ∈ {0} + Q ∈ {0} + R ∈ {0} + v ∈ [--..--] + a ∈ [--..--] + b ∈ [--..--] + i2 ∈ [--..--] +[value] computing for function pgcd1 <- main. + Called from tests/value/modulo.i:151. +tests/value/modulo.i:34:[value] warning: function pgcd1: precondition got status unknown. +tests/value/modulo.i:37:[value] loop invariant got status valid. +tests/value/modulo.i:38:[value] loop invariant got status valid. +[value] Called Frama_C_show_each_1([1..10], [1..10], [0..9]) +[value] Called Frama_C_show_each_1({0}, [1..10], {0}) +[value] Called Frama_C_show_each_1([-10..-1], [1..10], [-9..0]) +[value] Called Frama_C_show_each_1([1..10], [-10..-1], [0..9]) +[value] Called Frama_C_show_each_1({0}, [-10..-1], {0}) +[value] Called Frama_C_show_each_1([-10..-1], [-10..-1], [-9..0]) +[value] Recording results for pgcd1 +[value] Done for function pgcd1 +[value] computing for function pgcd2 <- main. + Called from tests/value/modulo.i:152. +tests/value/modulo.i:47:[value] warning: function pgcd2: precondition got status unknown. +tests/value/modulo.i:50:[value] loop invariant got status valid. +[value] Called Frama_C_show_each_2([-10..10], [1..10], [-9..9]) +[value] Called Frama_C_show_each_2([-10..10], [-10..-1], [-9..9]) +[value] Recording results for pgcd2 +[value] Done for function pgcd2 +[value] computing for function pgcd3 <- main. + Called from tests/value/modulo.i:153. +tests/value/modulo.i:59:[value] warning: function pgcd3: precondition got status unknown. +tests/value/modulo.i:63:[value] warning: division by zero. assert b_0 ≢ 0; +[value] Called Frama_C_show_each_3([-10..10], [-10..10], [-9..9]) +[value] Recording results for pgcd3 +[value] Done for function pgcd3 +[value] computing for function main2 <- main. + Called from tests/value/modulo.i:155. +tests/value/modulo.i:9:[value] warning: signed overflow. assert -2147483648 ≤ 4*i; +tests/value/modulo.i:9:[value] warning: signed overflow. assert 4*i ≤ 2147483647; +tests/value/modulo.i:10:[value] warning: signed overflow. assert -2147483648 ≤ 4*i; +tests/value/modulo.i:10:[value] warning: signed overflow. assert 4*i ≤ 2147483647; +tests/value/modulo.i:11:[value] warning: assertion got status unknown. +tests/value/modulo.i:13:[value] warning: assertion got status unknown. +tests/value/modulo.i:27:[value] warning: division by zero. assert G ≢ 0; +tests/value/modulo.i:29:[value] warning: division by zero. assert L ≢ 0; +[value] Recording results for main2 +[value] Done for function main2 +[value] computing for function simultaneous_congruences <- main. + Called from tests/value/modulo.i:156. +tests/value/modulo.i:76:[value] warning: assertion got status unknown. +tests/value/modulo.i:95:[value] entering loop for the first time +tests/value/modulo.i:82:[value] entering loop for the first time +[value] Recording results for simultaneous_congruences +[value] Done for function simultaneous_congruences +[value] computing for function shift_modulo <- main. + Called from tests/value/modulo.i:157. +tests/value/modulo.i:100:[value] warning: assertion got status unknown. +tests/value/modulo.i:103:[value] warning: signed overflow. assert (int)((int)(i*12)+5)<<25 ≤ 2147483647; +tests/value/modulo.i:104:[value] warning: signed overflow. assert (int)((int)(i*13)+7)<<25 ≤ 2147483647; +[value] Recording results for shift_modulo +[value] Done for function shift_modulo +[value] computing for function extract_bits_modulo <- main. + Called from tests/value/modulo.i:158. +tests/value/modulo.i:109:[value] warning: assertion got status unknown. +[value] Recording results for extract_bits_modulo +[value] Done for function extract_bits_modulo +[value] computing for function pos_rem <- main. + Called from tests/value/modulo.i:159. +tests/value/modulo.i:137:[value] warning: assertion got status unknown. +tests/value/modulo.i:142:[value] warning: assertion got status unknown. +tests/value/modulo.i:146:[value] warning: assertion got status unknown. +[value] Recording results for pos_rem +[value] Done for function pos_rem +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function extract_bits_modulo: + i ∈ [0..10] + aa1 ∈ [1291..32011],1291%3072 + ptr1 ∈ {{ (unsigned char *)&aa1 }} + m1 ∈ {11} + n1 ∈ [5..125],1%4 + aa2 ∈ [1294..32124] + ptr2 ∈ {{ (unsigned char *)&aa2 }} + m2 ∈ [0..255] + n2 ∈ [5..125] + aa3 ∈ [1296..32126] + ptr3 ∈ {{ (unsigned char *)&aa3 }} + m3 ∈ [0..255] + n3 ∈ [5..125] + aa4 ∈ [16..126],5%11 + ptr4 ∈ {{ (unsigned char *)&aa4 }} + m4 ∈ [16..126] + n4 ∈ {0} +[value:final-states] Values at end of function main2: + A ∈ {0} + B ∈ {-3; 1} + C ∈ {1} + D ∈ {1; 4; 7; 10} + E ∈ {-11; -8; -5; -2; 1; 4; 7; 10} + F ∈ {5} + G ∈ [0..12] + H ∈ [0..100] + I ∈ [101..301],1%2 + J ∈ [-201..299],4%5 + K ∈ {-6; -1; 4; 9} + L ∈ [-9..9] + M ∈ {-6; -2; -1; 0; 1; 2; 4; 9} + N ∈ [-299..299] + O ∈ [0..11] + P ∈ {0} + Q ∈ [-8..8] + i ∈ [0..100] +[value:final-states] Values at end of function pgcd1: + a_0 ∈ [-10..10] + b_0 ∈ {0} +[value:final-states] Values at end of function pgcd2: + a_0 ∈ [-10..10] + b_0 ∈ {0} +[value:final-states] Values at end of function pgcd3: + a_0 ∈ [-10..10] + b_0 ∈ {0} +[value:final-states] Values at end of function pos_rem: + n ∈ [-1..72] + j ∈ [-128..127] + k ∈ [0..135] + l ∈ [-128..127] +[value:final-states] Values at end of function shift_modulo: + i ∈ [0..10] + r ∈ [20..500],20%48 + s ∈ [5..125],5%12 + q ∈ {5; 17; 29; 41; 53} + t ∈ {7; 20; 33; 46; 59} +[value:final-states] Values at end of function simultaneous_congruences: + n1 ∈ [98..436207493],98%195 + n2 ∈ [98..436207493],98%195 + n3 ∈ [98..436207493],98%195 + m1 ∈ [7..134217735],3%4 + m2 ∈ [10..201326602],4%6 + o1 ∈ [11..268435451],11%24 + o2 ∈ [11..268435451],11%24 + o3 ∈ [11..268435451],11%24 +[value:final-states] Values at end of function main: + A ∈ {0} + B ∈ {-3; 1} + C ∈ {1} + D ∈ {1; 4; 7; 10} + E ∈ {-11; -8; -5; -2; 1; 4; 7; 10} + F ∈ {5} + G ∈ [0..12] + H ∈ [0..100] + I ∈ [101..301],1%2 + J ∈ [-201..299],4%5 + K ∈ {-6; -1; 4; 9} + L ∈ [-9..9] + M ∈ {-6; -2; -1; 0; 1; 2; 4; 9} + N ∈ [-299..299] + O ∈ [0..11] + P ∈ {0} + Q ∈ [-8..8] +[from] Computing for function extract_bits_modulo +[from] Done for function extract_bits_modulo +[from] Computing for function main2 +[from] Done for function main2 +[from] Computing for function pgcd1 +[from] Done for function pgcd1 +[from] Computing for function pgcd2 +[from] Done for function pgcd2 +[from] Computing for function pgcd3 +[from] Done for function pgcd3 +[from] Computing for function pos_rem +[from] Done for function pos_rem +[from] Computing for function shift_modulo +[from] Done for function shift_modulo +[from] Computing for function simultaneous_congruences +[from] Done for function simultaneous_congruences +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function extract_bits_modulo: + NO EFFECTS +[from] Function main2: + A FROM v + B FROM v + C FROM v + D FROM v + E FROM v + F FROM v + G FROM v + H FROM v + I FROM v + J FROM v + K FROM v + L FROM v + M FROM v + N FROM v + O FROM v + P FROM v + Q FROM v +[from] Function pgcd1: + \result FROM x; y +[from] Function pgcd2: + \result FROM x; y +[from] Function pgcd3: + \result FROM x; y +[from] Function pos_rem: + NO EFFECTS +[from] Function shift_modulo: + NO EFFECTS +[from] Function simultaneous_congruences: + NO EFFECTS +[from] Function main: + A FROM v + B FROM v + C FROM v + D FROM v + E FROM v + F FROM v + G FROM v + H FROM v + I FROM v + J FROM v + K FROM v + L FROM v + M FROM v + N FROM v + O FROM v + P FROM v + Q FROM v +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function extract_bits_modulo: + i; aa1; ptr1; m1; n1; aa2; ptr2; m2; n2; aa3; ptr3; m3; n3; aa4; ptr4; + m4; n4 +[inout] Inputs for function extract_bits_modulo: + v +[inout] Out (internal) for function main2: + A; B; C; D; E; F; G; H; I; J; K; L; M; N; O; P; Q; i +[inout] Inputs for function main2: + A; D; G; I; J; K; L; v +[inout] Out (internal) for function pgcd1: + a_0; b_0; tmp +[inout] Inputs for function pgcd1: + \nothing +[inout] Out (internal) for function pgcd2: + a_0; b_0; tmp +[inout] Inputs for function pgcd2: + \nothing +[inout] Out (internal) for function pgcd3: + a_0; b_0; tmp +[inout] Inputs for function pgcd3: + \nothing +[inout] Out (internal) for function pos_rem: + n; j; k; l +[inout] Inputs for function pos_rem: + v +[inout] Out (internal) for function shift_modulo: + i; r; s; q; t +[inout] Inputs for function shift_modulo: + v +[inout] Out (internal) for function simultaneous_congruences: + n1; n2; n3; m1; m2; o1; o2; o3 +[inout] Inputs for function simultaneous_congruences: + i2 +[inout] Out (internal) for function main: + A; B; C; D; E; F; G; H; I; J; K; L; M; N; O; P; Q +[inout] Inputs for function main: + A; D; G; I; J; K; L; v; a; b; i2 diff --git a/tests/value/oracle_symblocs/multi_access.err.oracle b/tests/value/oracle_symblocs/multi_access.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/multi_access.res.oracle b/tests/value/oracle_symblocs/multi_access.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..03c6758c5b72db5b9318bf6d9db5471ec00b5b2c --- /dev/null +++ b/tests/value/oracle_symblocs/multi_access.res.oracle @@ -0,0 +1,24 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/multi_access.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + s{.a; .b} ∈ {2} + __retres ∈ {0} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + s; __retres +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/narrow_behaviors.err.oracle b/tests/value/oracle_symblocs/narrow_behaviors.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/narrow_behaviors.res.oracle b/tests/value/oracle_symblocs/narrow_behaviors.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..b0be2bb6ddde21627f1dbce6b7e85b3355523a38 --- /dev/null +++ b/tests/value/oracle_symblocs/narrow_behaviors.res.oracle @@ -0,0 +1,97 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/narrow_behaviors.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + nondet ∈ [--..--] +[value] computing for function f1 <- main. + Called from tests/value/narrow_behaviors.i:56. +[value] using specification for function f1 +[value] Done for function f1 +[value] DUMPING STATE of file tests/value/narrow_behaviors.i line 56 + nondet ∈ [--..--] + p{.x; .y} ∈ {1; 2} + q ∈ UNINITIALIZED + __retres ∈ UNINITIALIZED + =END OF DUMP== +[value] computing for function f2 <- main. + Called from tests/value/narrow_behaviors.i:57. +[value] using specification for function f2 +[value] Done for function f2 +[value] DUMPING STATE of file tests/value/narrow_behaviors.i line 57 + nondet ∈ [--..--] + p{.x; .y} ∈ {1; 2} + q{.x; .y} ∈ {1; 2} + __retres ∈ UNINITIALIZED + =END OF DUMP== +tests/value/narrow_behaviors.i:61:[value] warning: assertion got status unknown. +[value] computing for function f1 <- main. + Called from tests/value/narrow_behaviors.i:62. +tests/value/narrow_behaviors.i:62:[value] function f1, behavior a: assumes got status invalid; behavior not evaluated. +tests/value/narrow_behaviors.i:62:[value] function f1, behavior d: assumes got status invalid; behavior not evaluated. +[value] Done for function f1 +[value] computing for function f1 <- main. + Called from tests/value/narrow_behaviors.i:62. +tests/value/narrow_behaviors.i:62:[value] function f1, behavior b: assumes got status invalid; behavior not evaluated. +tests/value/narrow_behaviors.i:62:[value] function f1, behavior c: assumes got status invalid; behavior not evaluated. +[value] Done for function f1 +[value] DUMPING STATE of file tests/value/narrow_behaviors.i line 62 + nondet ∈ {0} + r{.x; .y} ∈ {1} + s ∈ UNINITIALIZED + __retres ∈ UNINITIALIZED + =END OF DUMP== +[value] DUMPING STATE of file tests/value/narrow_behaviors.i line 62 + nondet ∈ {1} + r{.x; .y} ∈ {2} + s ∈ UNINITIALIZED + __retres ∈ UNINITIALIZED + =END OF DUMP== +[value] computing for function f2 <- main. + Called from tests/value/narrow_behaviors.i:63. +tests/value/narrow_behaviors.i:63:[value] function f2, behavior b: assumes got status invalid; behavior not evaluated. +tests/value/narrow_behaviors.i:63:[value] function f2, behavior c: assumes got status invalid; behavior not evaluated. +[value] Done for function f2 +[value] computing for function f2 <- main. + Called from tests/value/narrow_behaviors.i:63. +tests/value/narrow_behaviors.i:63:[value] function f2, behavior a: assumes got status invalid; behavior not evaluated. +tests/value/narrow_behaviors.i:63:[value] function f2, behavior d: assumes got status invalid; behavior not evaluated. +tests/value/narrow_behaviors.i:39:[value] warning: function f2, behavior b: this postcondition evaluates to false in this + context. If it is valid, either a precondition was not verified for this + call, or some assigns/from clauses are incomplete (or incorrect). +tests/value/narrow_behaviors.i:40:[value] function f2, behavior b: no state left in which to evaluate postcondition, status not computed. +[value] Done for function f2 +[value] DUMPING STATE of file tests/value/narrow_behaviors.i line 63 + nondet ∈ {0} + r{.x; .y} ∈ {1} + s.x ∈ {1; 2} + .y ∈ {1} + __retres ∈ UNINITIALIZED + =END OF DUMP== +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + __retres ∈ {0} +[from] Computing for function main +[from] Computing for function f1 <-main +[from] Done for function f1 +[from] Computing for function Frama_C_dump_each <-main +[from] Done for function Frama_C_dump_each +[from] Computing for function f2 <-main +[from] Done for function f2 +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f1: + \result FROM nondet +[from] Function f2: + \result FROM nondet +[from] Function main: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + p; q; r; s; __retres +[inout] Inputs for function main: + nondet diff --git a/tests/value/oracle_symblocs/nested_struct_init.err.oracle b/tests/value/oracle_symblocs/nested_struct_init.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/nested_struct_init.res.oracle b/tests/value/oracle_symblocs/nested_struct_init.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..bc0b2fac6b54a73d9ef847e013d299f1a8bc1683 --- /dev/null +++ b/tests/value/oracle_symblocs/nested_struct_init.res.oracle @@ -0,0 +1,331 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/nested_struct_init.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + g_3.f0 ∈ {-1} + .[bits 8 to 15] ∈ {0} + .f1 ∈ {19284} + .f2 ∈ {6} + .f3 ∈ {7} + .f4 ∈ {-1} + .[bits 120 to 127] ∈ {0} + .f5 ∈ {1} + .f6 ∈ {-10} + .[bits 176 to 191] ∈ {0} + .f7 ∈ {1732606355} + .f8 ∈ {15485} + .[bits 240 to 255] ∈ {0} + g_8.f0.f0 ∈ {-43} + .f0.[bits 8 to 15] ∈ {0} + .f0.f1 ∈ {-10} + .f0{.f2; .[bits 48 to 63]} ∈ {0} + .f0.f3 ∈ {-1878325119} + .f0.f4 ∈ {218} + .f0.[bits 104 to 127] ∈ {0} + .f0.f5.f0 ∈ {-37} + .f0.f5.[bits 8 to 15] ∈ {0} + .f0.f5.f1 ∈ {-31637} + .f0.f5.f2 ∈ {1} + .f0.f5.f3 ∈ {65529} + .f0.f5.f4 ∈ {-13} + .f0.f5.[bits 120 to 127] ∈ {0} + .f0.f5.f5 ∈ {-66898258} + .f0.f5.f6 ∈ {6} + .f0.f5.[bits 176 to 191] ∈ {0} + .f0.f5.f7 ∈ {1390716594} + .f0.f5.f8 ∈ {20144} + .f0.f5.[bits 240 to 255] ∈ {0} + .f0.f6 ∈ {1257091918934088959} + .f0.f7 ∈ {-100} + .f0.[bits 456 to 463] ∈ {0} + .f0.f8 ∈ {-1} + .f1 ∈ {372666747} + .f2 ∈ {4294967292} + .f3 ∈ {4} + .f4.f0 ∈ {-29} + .f4.[bits 8 to 15] ∈ {0} + .f4.f1 ∈ {-4900} + .f4.f2 ∈ {-1010372691391514597} + .f4.f3 ∈ {63392} + .f4.f4 ∈ {124} + .f4{.f5; .[bits 120 to 127]} ∈ {0} + .f4.f6 ∈ {-22659} + .f4.[bits 176 to 191] ∈ {0} + .f4.f7 ∈ {2143805241} + .f4.f8 ∈ {15450} + .f4.[bits 240 to 255] ∈ {0} + .f5.f0 ∈ {-1593529130} + .f5.f1 ∈ {168} + .f5.[bits 40 to 63] ∈ {0} + .f6 ∈ {-83} + .f7 ∈ {8} + .[bits 944 to 959] ∈ {0} +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + __retres ∈ {0} +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + g_3.f0 ∈ {-1} + .[bits 8 to 15] ∈ UNINITIALIZED + .f1 ∈ {19284} + .f2 ∈ {6} + .f3 ∈ {7} + .f4 ∈ {-1} + .[bits 120 to 127] ∈ UNINITIALIZED + .f5 ∈ {1} + .f6 ∈ {-10} + .[bits 176 to 191] ∈ UNINITIALIZED + .f7 ∈ {1732606355} + .f8 ∈ {15485} + .[bits 240 to 255] ∈ UNINITIALIZED + g_8.f0.f0 ∈ {-43} + .f0.[bits 8 to 15] ∈ UNINITIALIZED + .f0.f1 ∈ {-10} + .f0.f2 ∈ {0} + .f0.[bits 48 to 63] ∈ UNINITIALIZED + .f0.f3 ∈ {-1878325119} + .f0.f4 ∈ {218} + .f0.[bits 104 to 127] ∈ UNINITIALIZED + .f0.f5.f0 ∈ {-37} + .f0.f5.[bits 8 to 15] ∈ UNINITIALIZED + .f0.f5.f1 ∈ {-31637} + .f0.f5.f2 ∈ {1} + .f0.f5.f3 ∈ {65529} + .f0.f5.f4 ∈ {-13} + .f0.f5.[bits 120 to 127] ∈ UNINITIALIZED + .f0.f5.f5 ∈ {-66898258} + .f0.f5.f6 ∈ {6} + .f0.f5.[bits 176 to 191] ∈ UNINITIALIZED + .f0.f5.f7 ∈ {1390716594} + .f0.f5.f8 ∈ {20144} + .f0.f5.[bits 240 to 255] ∈ UNINITIALIZED + .f0.f6 ∈ {1257091918934088959} + .f0.f7 ∈ {-100} + .f0.[bits 456 to 463] ∈ UNINITIALIZED + .f0.f8 ∈ {-1} + .f1 ∈ {372666747} + .f2 ∈ {4294967292} + .f3 ∈ {4} + .f4.f0 ∈ {-29} + .f4.[bits 8 to 15] ∈ UNINITIALIZED + .f4.f1 ∈ {-4900} + .f4.f2 ∈ {-1010372691391514597} + .f4.f3 ∈ {63392} + .f4.f4 ∈ {124} + .f4.[bits 120 to 127] ∈ UNINITIALIZED + .f4.f5 ∈ {0} + .f4.f6 ∈ {-22659} + .f4.[bits 176 to 191] ∈ UNINITIALIZED + .f4.f7 ∈ {2143805241} + .f4.f8 ∈ {15450} + .f4.[bits 240 to 255] ∈ UNINITIALIZED + .f5.f0 ∈ {-1593529130} + .f5.f1 ∈ {168} + .f5.[bits 40 to 63] ∈ UNINITIALIZED + .f6 ∈ {-83} + .f7 ∈ {8} + .[bits 944 to 959] ∈ UNINITIALIZED +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + __retres ∈ {0} +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + g_3.f0 ∈ {-1} + .[bits 8 to 15] ∈ {0} or UNINITIALIZED + .f1 ∈ {19284} + .f2 ∈ {6} + .f3 ∈ {7} + .f4 ∈ {-1} + .[bits 120 to 127] ∈ {0} or UNINITIALIZED + .f5 ∈ {1} + .f6 ∈ {-10} + .[bits 176 to 191] ∈ {0} or UNINITIALIZED + .f7 ∈ {1732606355} + .f8 ∈ {15485} + .[bits 240 to 255] ∈ {0} or UNINITIALIZED + g_8.f0.f0 ∈ {-43} + .f0.[bits 8 to 15] ∈ {0} or UNINITIALIZED + .f0.f1 ∈ {-10} + .f0.f2 ∈ {0} + .f0.[bits 48 to 63] ∈ {0} or UNINITIALIZED + .f0.f3 ∈ {-1878325119} + .f0.f4 ∈ {218} + .f0.[bits 104 to 127] ∈ {0} or UNINITIALIZED + .f0.f5.f0 ∈ {-37} + .f0.f5.[bits 8 to 15] ∈ {0} or UNINITIALIZED + .f0.f5.f1 ∈ {-31637} + .f0.f5.f2 ∈ {1} + .f0.f5.f3 ∈ {65529} + .f0.f5.f4 ∈ {-13} + .f0.f5.[bits 120 to 127] ∈ {0} or UNINITIALIZED + .f0.f5.f5 ∈ {-66898258} + .f0.f5.f6 ∈ {6} + .f0.f5.[bits 176 to 191] ∈ {0} or UNINITIALIZED + .f0.f5.f7 ∈ {1390716594} + .f0.f5.f8 ∈ {20144} + .f0.f5.[bits 240 to 255] ∈ {0} or UNINITIALIZED + .f0.f6 ∈ {1257091918934088959} + .f0.f7 ∈ {-100} + .f0.[bits 456 to 463] ∈ {0} or UNINITIALIZED + .f0.f8 ∈ {-1} + .f1 ∈ {372666747} + .f2 ∈ {4294967292} + .f3 ∈ {4} + .f4.f0 ∈ {-29} + .f4.[bits 8 to 15] ∈ {0} or UNINITIALIZED + .f4.f1 ∈ {-4900} + .f4.f2 ∈ {-1010372691391514597} + .f4.f3 ∈ {63392} + .f4.f4 ∈ {124} + .f4.[bits 120 to 127] ∈ {0} or UNINITIALIZED + .f4.f5 ∈ {0} + .f4.f6 ∈ {-22659} + .f4.[bits 176 to 191] ∈ {0} or UNINITIALIZED + .f4.f7 ∈ {2143805241} + .f4.f8 ∈ {15450} + .f4.[bits 240 to 255] ∈ {0} or UNINITIALIZED + .f5.f0 ∈ {-1593529130} + .f5.f1 ∈ {168} + .f5.[bits 40 to 63] ∈ {0} or UNINITIALIZED + .f6 ∈ {-83} + .f7 ∈ {8} + .[bits 944 to 959] ∈ {0} or UNINITIALIZED +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + __retres ∈ {0} +[value] Analyzing an incomplete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + g_3.f0 ∈ [--..--] + .[bits 8 to 15] ∈ [--..--] or UNINITIALIZED + {.f1; .f2; .f3; .f4} ∈ [--..--] + .[bits 120 to 127] ∈ [--..--] or UNINITIALIZED + {.f5; .f6} ∈ [--..--] + .[bits 176 to 191] ∈ [--..--] or UNINITIALIZED + {.f7; .f8} ∈ [--..--] + .[bits 240 to 255] ∈ [--..--] or UNINITIALIZED + g_8.f0.f0 ∈ [--..--] + .f0.[bits 8 to 15] ∈ [--..--] or UNINITIALIZED + .f0.f1 ∈ {-10} + .f0.f2 ∈ [--..--] + .f0.[bits 48 to 63] ∈ [--..--] or UNINITIALIZED + .f0{.f3; .f4} ∈ [--..--] + .f0.[bits 104 to 127] ∈ [--..--] or UNINITIALIZED + .f0.f5.f0 ∈ [--..--] + .f0.f5.[bits 8 to 15] ∈ [--..--] or UNINITIALIZED + .f0.f5{.f1; .f2; .f3; .f4} ∈ [--..--] + .f0.f5.[bits 120 to 127] ∈ [--..--] or UNINITIALIZED + .f0.f5{.f5; .f6} ∈ [--..--] + .f0.f5.[bits 176 to 191] ∈ [--..--] or UNINITIALIZED + .f0.f5{.f7; .f8} ∈ [--..--] + .f0.f5.[bits 240 to 255] ∈ [--..--] or UNINITIALIZED + .f0{.f6; .f7} ∈ [--..--] + .f0.[bits 456 to 463] ∈ [--..--] or UNINITIALIZED + .f0.f8 ∈ [--..--] + .f1 ∈ {372666747} + .f2 ∈ {4294967292} + {.f3; .f4.f0} ∈ [--..--] + .f4.[bits 8 to 15] ∈ [--..--] or UNINITIALIZED + .f4{.f1; .f2; .f3; .f4} ∈ [--..--] + .f4.[bits 120 to 127] ∈ [--..--] or UNINITIALIZED + .f4{.f5; .f6} ∈ [--..--] + .f4.[bits 176 to 191] ∈ [--..--] or UNINITIALIZED + .f4{.f7; .f8} ∈ [--..--] + .f4.[bits 240 to 255] ∈ [--..--] or UNINITIALIZED + .f5.f0 ∈ {-1593529130} + .f5.f1 ∈ {168} + .f5.[bits 40 to 63] ∈ [--..--] or UNINITIALIZED + .f6 ∈ [--..--] + .f7 ∈ {8} + .[bits 944 to 959] ∈ [--..--] or UNINITIALIZED +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + __retres ∈ {0} +[value] Analyzing an incomplete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + g_3.f0 ∈ [--..--] + .[bits 8 to 15] ∈ UNINITIALIZED + {.f1; .f2; .f3; .f4} ∈ [--..--] + .[bits 120 to 127] ∈ UNINITIALIZED + {.f5; .f6} ∈ [--..--] + .[bits 176 to 191] ∈ UNINITIALIZED + {.f7; .f8} ∈ [--..--] + .[bits 240 to 255] ∈ UNINITIALIZED + g_8.f0.f0 ∈ [--..--] + .f0.[bits 8 to 15] ∈ UNINITIALIZED + .f0.f1 ∈ {-10} + .f0.f2 ∈ [--..--] + .f0.[bits 48 to 63] ∈ UNINITIALIZED + .f0{.f3; .f4} ∈ [--..--] + .f0.[bits 104 to 127] ∈ UNINITIALIZED + .f0.f5.f0 ∈ [--..--] + .f0.f5.[bits 8 to 15] ∈ UNINITIALIZED + .f0.f5{.f1; .f2; .f3; .f4} ∈ [--..--] + .f0.f5.[bits 120 to 127] ∈ UNINITIALIZED + .f0.f5{.f5; .f6} ∈ [--..--] + .f0.f5.[bits 176 to 191] ∈ UNINITIALIZED + .f0.f5{.f7; .f8} ∈ [--..--] + .f0.f5.[bits 240 to 255] ∈ UNINITIALIZED + .f0{.f6; .f7} ∈ [--..--] + .f0.[bits 456 to 463] ∈ UNINITIALIZED + .f0.f8 ∈ [--..--] + .f1 ∈ {372666747} + .f2 ∈ {4294967292} + {.f3; .f4.f0} ∈ [--..--] + .f4.[bits 8 to 15] ∈ UNINITIALIZED + .f4{.f1; .f2; .f3; .f4} ∈ [--..--] + .f4.[bits 120 to 127] ∈ UNINITIALIZED + .f4{.f5; .f6} ∈ [--..--] + .f4.[bits 176 to 191] ∈ UNINITIALIZED + .f4{.f7; .f8} ∈ [--..--] + .f4.[bits 240 to 255] ∈ UNINITIALIZED + .f5.f0 ∈ {-1593529130} + .f5.f1 ∈ {168} + .f5.[bits 40 to 63] ∈ UNINITIALIZED + .f6 ∈ [--..--] + .f7 ∈ {8} + .[bits 944 to 959] ∈ UNINITIALIZED +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + __retres ∈ {0} +[value] Analyzing an incomplete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + g_3 ∈ [--..--] + g_8.f0{.f0; .[bits 8 to 15]} ∈ [--..--] + .f0.f1 ∈ {-10} + .f0{.f2; .f3; .f4; .f5; .f6; .f7; .f8; .[bits 48 to 63]; .[bits 104 to 127]; .[bits 456 to 463]} ∈ + [--..--] + .f1 ∈ {372666747} + .f2 ∈ {4294967292} + {.f3; .f4} ∈ [--..--] + .f5.f0 ∈ {-1593529130} + .f5.f1 ∈ {168} + {.f5.[bits 40 to 63]; .f6} ∈ [--..--] + .f7 ∈ {8} + .[bits 944 to 959] ∈ [--..--] +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + __retres ∈ {0} diff --git a/tests/value/oracle_symblocs/no_results.err.oracle b/tests/value/oracle_symblocs/no_results.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/no_results.res.oracle b/tests/value/oracle_symblocs/no_results.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..f9ea6f431ea199a65e858de5605277a278d36505 --- /dev/null +++ b/tests/value/oracle_symblocs/no_results.res.oracle @@ -0,0 +1,6109 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/no_results.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + t[0..2999] ∈ {0} +[value] computing for function init <- main. + Called from tests/value/no_results.c:19. +[value] Semantic level unrolling superposing up to 100 states +[value] Semantic level unrolling superposing up to 200 states +[value] Semantic level unrolling superposing up to 300 states +[value] Semantic level unrolling superposing up to 400 states +[value] Semantic level unrolling superposing up to 500 states +[value] Semantic level unrolling superposing up to 600 states +[value] Semantic level unrolling superposing up to 700 states +[value] Semantic level unrolling superposing up to 800 states +[value] Semantic level unrolling superposing up to 900 states +[value] Semantic level unrolling superposing up to 1000 states +[value] Semantic level unrolling superposing up to 1100 states +[value] Semantic level unrolling superposing up to 1200 states +[value] Semantic level unrolling superposing up to 1300 states +[value] Semantic level unrolling superposing up to 1400 states +[value] Semantic level unrolling superposing up to 1500 states +[value] Semantic level unrolling superposing up to 1600 states +[value] Semantic level unrolling superposing up to 1700 states +[value] Semantic level unrolling superposing up to 1800 states +[value] Semantic level unrolling superposing up to 1900 states +[value] Semantic level unrolling superposing up to 2000 states +[value] Semantic level unrolling superposing up to 2100 states +[value] Semantic level unrolling superposing up to 2200 states +[value] Semantic level unrolling superposing up to 2300 states +[value] Semantic level unrolling superposing up to 2400 states +[value] Semantic level unrolling superposing up to 2500 states +[value] Semantic level unrolling superposing up to 2600 states +[value] Semantic level unrolling superposing up to 2700 states +[value] Semantic level unrolling superposing up to 2800 states +[value] Semantic level unrolling superposing up to 2900 states +[value] Semantic level unrolling superposing up to 3000 states +[value] Recording results for init +[value] Done for function init +[value] computing for function f <- main. + Called from tests/value/no_results.c:20. +[value] Recording results for f +[from] Computing for function f +[from] Done for function f +[value] Done for function f +[value] Recording results for main +[from] Computing for function main +[from] Done for function main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + t[0..1] ∈ {0} + [2] ∈ {2} + [3] ∈ {3} + [4] ∈ {4} + [5] ∈ {5} + [6] ∈ {6} + [7] ∈ {7} + [8] ∈ {8} + [9] ∈ {9} + [10] ∈ {10} + [11] ∈ {11} + [12] ∈ {12} + [13] ∈ {13} + [14] ∈ {14} + [15] ∈ {15} + [16] ∈ {16} + [17] ∈ {17} + [18] ∈ {18} + [19] ∈ {19} + [20] ∈ {20} + [21] ∈ {21} + [22] ∈ {22} + [23] ∈ {23} + [24] ∈ {24} + [25] ∈ {25} + [26] ∈ {26} + [27] ∈ {27} + [28] ∈ {28} + [29] ∈ {29} + [30] ∈ {30} + [31] ∈ {31} + [32] ∈ {32} + [33] ∈ {33} + [34] ∈ {34} + [35] ∈ {35} + [36] ∈ {36} + [37] ∈ {37} + [38] ∈ {38} + [39] ∈ {39} + [40] ∈ {40} + [41] ∈ {41} + [42] ∈ {42} + [43] ∈ {43} + [44] ∈ {44} + [45] ∈ {45} + [46] ∈ {46} + [47] ∈ {47} + [48] ∈ {48} + [49] ∈ {49} + [50] ∈ {50} + [51] ∈ {51} + [52] ∈ {52} + [53] ∈ {53} + [54] ∈ {54} + [55] ∈ {55} + [56] ∈ {56} + [57] ∈ {57} + [58] ∈ {58} + [59] ∈ {59} + [60] ∈ {60} + [61] ∈ {61} + [62] ∈ {62} + [63] ∈ {63} + [64] ∈ {64} + [65] ∈ {65} + [66] ∈ {66} + [67] ∈ {67} + [68] ∈ {68} + [69] ∈ {69} + [70] ∈ {70} + [71] ∈ {71} + [72] ∈ {72} + [73] ∈ {73} + [74] ∈ {74} + [75] ∈ {75} + [76] ∈ {76} + [77] ∈ {77} + [78] ∈ {78} + [79] ∈ {79} + [80] ∈ {80} + [81] ∈ {81} + [82] ∈ {82} + [83] ∈ {83} + [84] ∈ {84} + [85] ∈ {85} + [86] ∈ {86} + [87] ∈ {87} + [88] ∈ {88} + [89] ∈ {89} + [90] ∈ {90} + [91] ∈ {91} + [92] ∈ {92} + [93] ∈ {93} + [94] ∈ {94} + [95] ∈ {95} + [96] ∈ {96} + [97] ∈ {97} + [98] ∈ {98} + [99] ∈ {99} + [100] ∈ {100} + [101] ∈ {101} + [102] ∈ {102} + [103] ∈ {103} + [104] ∈ {104} + [105] ∈ {105} + [106] ∈ {106} + [107] ∈ {107} + [108] ∈ {108} + [109] ∈ {109} + [110] ∈ {110} + [111] ∈ {111} + [112] ∈ {112} + [113] ∈ {113} + [114] ∈ {114} + [115] ∈ {115} + [116] ∈ {116} + [117] ∈ {117} + [118] ∈ {118} + [119] ∈ {119} + [120] ∈ {120} + [121] ∈ {121} + [122] ∈ {122} + [123] ∈ {123} + [124] ∈ {124} + [125] ∈ {125} + [126] ∈ {126} + [127] ∈ {127} + [128] ∈ {128} + [129] ∈ {129} + [130] ∈ {130} + [131] ∈ {131} + [132] ∈ {132} + [133] ∈ {133} + [134] ∈ {134} + [135] ∈ {135} + [136] ∈ {136} + [137] ∈ {137} + [138] ∈ {138} + [139] ∈ {139} + [140] ∈ {140} + [141] ∈ {141} + [142] ∈ {142} + [143] ∈ {143} + [144] ∈ {144} + [145] ∈ {145} + [146] ∈ {146} + [147] ∈ {147} + [148] ∈ {148} + [149] ∈ {149} + [150] ∈ {150} + [151] ∈ {151} + [152] ∈ {152} + [153] ∈ {153} + [154] ∈ {154} + [155] ∈ {155} + [156] ∈ {156} + [157] ∈ {157} + [158] ∈ {158} + [159] ∈ {159} + [160] ∈ {160} + [161] ∈ {161} + [162] ∈ {162} + [163] ∈ {163} + [164] ∈ {164} + [165] ∈ {165} + [166] ∈ {166} + [167] ∈ {167} + [168] ∈ {168} + [169] ∈ {169} + [170] ∈ {170} + [171] ∈ {171} + [172] ∈ {172} + [173] ∈ {173} + [174] ∈ {174} + [175] ∈ {175} + [176] ∈ {176} + [177] ∈ {177} + [178] ∈ {178} + [179] ∈ {179} + [180] ∈ {180} + [181] ∈ {181} + [182] ∈ {182} + [183] ∈ {183} + [184] ∈ {184} + [185] ∈ {185} + [186] ∈ {186} + [187] ∈ {187} + [188] ∈ {188} + [189] ∈ {189} + [190] ∈ {190} + [191] ∈ {191} + [192] ∈ {192} + [193] ∈ {193} + [194] ∈ {194} + [195] ∈ {195} + [196] ∈ {196} + [197] ∈ {197} + [198] ∈ {198} + [199] ∈ {199} + [200] ∈ {200} + [201] ∈ {201} + [202] ∈ {202} + [203] ∈ {203} + [204] ∈ {204} + [205] ∈ {205} + [206] ∈ {206} + [207] ∈ {207} + [208] ∈ {208} + [209] ∈ {209} + [210] ∈ {210} + [211] ∈ {211} + [212] ∈ {212} + [213] ∈ {213} + [214] ∈ {214} + [215] ∈ {215} + [216] ∈ {216} + [217] ∈ {217} + [218] ∈ {218} + [219] ∈ {219} + [220] ∈ {220} + [221] ∈ {221} + [222] ∈ {222} + [223] ∈ {223} + [224] ∈ {224} + [225] ∈ {225} + [226] ∈ {226} + [227] ∈ {227} + [228] ∈ {228} + [229] ∈ {229} + [230] ∈ {230} + [231] ∈ {231} + [232] ∈ {232} + [233] ∈ {233} + [234] ∈ {234} + [235] ∈ {235} + [236] ∈ {236} + [237] ∈ {237} + [238] ∈ {238} + [239] ∈ {239} + [240] ∈ {240} + [241] ∈ {241} + [242] ∈ {242} + [243] ∈ {243} + [244] ∈ {244} + [245] ∈ {245} + [246] ∈ {246} + [247] ∈ {247} + [248] ∈ {248} + [249] ∈ {249} + [250] ∈ {250} + [251] ∈ {251} + [252] ∈ {252} + [253] ∈ {253} + [254] ∈ {254} + [255] ∈ {255} + [256] ∈ {256} + [257] ∈ {257} + [258] ∈ {258} + [259] ∈ {259} + [260] ∈ {260} + [261] ∈ {261} + [262] ∈ {262} + [263] ∈ {263} + [264] ∈ {264} + [265] ∈ {265} + [266] ∈ {266} + [267] ∈ {267} + [268] ∈ {268} + [269] ∈ {269} + [270] ∈ {270} + [271] ∈ {271} + [272] ∈ {272} + [273] ∈ {273} + [274] ∈ {274} + [275] ∈ {275} + [276] ∈ {276} + [277] ∈ {277} + [278] ∈ {278} + [279] ∈ {279} + [280] ∈ {280} + [281] ∈ {281} + [282] ∈ {282} + [283] ∈ {283} + [284] ∈ {284} + [285] ∈ {285} + [286] ∈ {286} + [287] ∈ {287} + [288] ∈ {288} + [289] ∈ {289} + [290] ∈ {290} + [291] ∈ {291} + [292] ∈ {292} + [293] ∈ {293} + [294] ∈ {294} + [295] ∈ {295} + [296] ∈ {296} + [297] ∈ {297} + [298] ∈ {298} + [299] ∈ {299} + [300] ∈ {300} + [301] ∈ {301} + [302] ∈ {302} + [303] ∈ {303} + [304] ∈ {304} + [305] ∈ {305} + [306] ∈ {306} + [307] ∈ {307} + [308] ∈ {308} + [309] ∈ {309} + [310] ∈ {310} + [311] ∈ {311} + [312] ∈ {312} + [313] ∈ {313} + [314] ∈ {314} + [315] ∈ {315} + [316] ∈ {316} + [317] ∈ {317} + [318] ∈ {318} + [319] ∈ {319} + [320] ∈ {320} + [321] ∈ {321} + [322] ∈ {322} + [323] ∈ {323} + [324] ∈ {324} + [325] ∈ {325} + [326] ∈ {326} + [327] ∈ {327} + [328] ∈ {328} + [329] ∈ {329} + [330] ∈ {330} + [331] ∈ {331} + [332] ∈ {332} + [333] ∈ {333} + [334] ∈ {334} + [335] ∈ {335} + [336] ∈ {336} + [337] ∈ {337} + [338] ∈ {338} + [339] ∈ {339} + [340] ∈ {340} + [341] ∈ {341} + [342] ∈ {342} + [343] ∈ {343} + [344] ∈ {344} + [345] ∈ {345} + [346] ∈ {346} + [347] ∈ {347} + [348] ∈ {348} + [349] ∈ {349} + [350] ∈ {350} + [351] ∈ {351} + [352] ∈ {352} + [353] ∈ {353} + [354] ∈ {354} + [355] ∈ {355} + [356] ∈ {356} + [357] ∈ {357} + [358] ∈ {358} + [359] ∈ {359} + [360] ∈ {360} + [361] ∈ {361} + [362] ∈ {362} + [363] ∈ {363} + [364] ∈ {364} + [365] ∈ {365} + [366] ∈ {366} + [367] ∈ {367} + [368] ∈ {368} + [369] ∈ {369} + [370] ∈ {370} + [371] ∈ {371} + [372] ∈ {372} + [373] ∈ {373} + [374] ∈ {374} + [375] ∈ {375} + [376] ∈ {376} + [377] ∈ {377} + [378] ∈ {378} + [379] ∈ {379} + [380] ∈ {380} + [381] ∈ {381} + [382] ∈ {382} + [383] ∈ {383} + [384] ∈ {384} + [385] ∈ {385} + [386] ∈ {386} + [387] ∈ {387} + [388] ∈ {388} + [389] ∈ {389} + [390] ∈ {390} + [391] ∈ {391} + [392] ∈ {392} + [393] ∈ {393} + [394] ∈ {394} + [395] ∈ {395} + [396] ∈ {396} + [397] ∈ {397} + [398] ∈ {398} + [399] ∈ {399} + [400] ∈ {400} + [401] ∈ {401} + [402] ∈ {402} + [403] ∈ {403} + [404] ∈ {404} + [405] ∈ {405} + [406] ∈ {406} + [407] ∈ {407} + [408] ∈ {408} + [409] ∈ {409} + [410] ∈ {410} + [411] ∈ {411} + [412] ∈ {412} + [413] ∈ {413} + [414] ∈ {414} + [415] ∈ {415} + [416] ∈ {416} + [417] ∈ {417} + [418] ∈ {418} + [419] ∈ {419} + [420] ∈ {420} + [421] ∈ {421} + [422] ∈ {422} + [423] ∈ {423} + [424] ∈ {424} + [425] ∈ {425} + [426] ∈ {426} + [427] ∈ {427} + [428] ∈ {428} + [429] ∈ {429} + [430] ∈ {430} + [431] ∈ {431} + [432] ∈ {432} + [433] ∈ {433} + [434] ∈ {434} + [435] ∈ {435} + [436] ∈ {436} + [437] ∈ {437} + [438] ∈ {438} + [439] ∈ {439} + [440] ∈ {440} + [441] ∈ {441} + [442] ∈ {442} + [443] ∈ {443} + [444] ∈ {444} + [445] ∈ {445} + [446] ∈ {446} + [447] ∈ {447} + [448] ∈ {448} + [449] ∈ {449} + [450] ∈ {450} + [451] ∈ {451} + [452] ∈ {452} + [453] ∈ {453} + [454] ∈ {454} + [455] ∈ {455} + [456] ∈ {456} + [457] ∈ {457} + [458] ∈ {458} + [459] ∈ {459} + [460] ∈ {460} + [461] ∈ {461} + [462] ∈ {462} + [463] ∈ {463} + [464] ∈ {464} + [465] ∈ {465} + [466] ∈ {466} + [467] ∈ {467} + [468] ∈ {468} + [469] ∈ {469} + [470] ∈ {470} + [471] ∈ {471} + [472] ∈ {472} + [473] ∈ {473} + [474] ∈ {474} + [475] ∈ {475} + [476] ∈ {476} + [477] ∈ {477} + [478] ∈ {478} + [479] ∈ {479} + [480] ∈ {480} + [481] ∈ {481} + [482] ∈ {482} + [483] ∈ {483} + [484] ∈ {484} + [485] ∈ {485} + [486] ∈ {486} + [487] ∈ {487} + [488] ∈ {488} + [489] ∈ {489} + [490] ∈ {490} + [491] ∈ {491} + [492] ∈ {492} + [493] ∈ {493} + [494] ∈ {494} + [495] ∈ {495} + [496] ∈ {496} + [497] ∈ {497} + [498] ∈ {498} + [499] ∈ {499} + [500] ∈ {500} + [501] ∈ {501} + [502] ∈ {502} + [503] ∈ {503} + [504] ∈ {504} + [505] ∈ {505} + [506] ∈ {506} + [507] ∈ {507} + [508] ∈ {508} + [509] ∈ {509} + [510] ∈ {510} + [511] ∈ {511} + [512] ∈ {512} + [513] ∈ {513} + [514] ∈ {514} + [515] ∈ {515} + [516] ∈ {516} + [517] ∈ {517} + [518] ∈ {518} + [519] ∈ {519} + [520] ∈ {520} + [521] ∈ {521} + [522] ∈ {522} + [523] ∈ {523} + [524] ∈ {524} + [525] ∈ {525} + [526] ∈ {526} + [527] ∈ {527} + [528] ∈ {528} + [529] ∈ {529} + [530] ∈ {530} + [531] ∈ {531} + [532] ∈ {532} + [533] ∈ {533} + [534] ∈ {534} + [535] ∈ {535} + [536] ∈ {536} + [537] ∈ {537} + [538] ∈ {538} + [539] ∈ {539} + [540] ∈ {540} + [541] ∈ {541} + [542] ∈ {542} + [543] ∈ {543} + [544] ∈ {544} + [545] ∈ {545} + [546] ∈ {546} + [547] ∈ {547} + [548] ∈ {548} + [549] ∈ {549} + [550] ∈ {550} + [551] ∈ {551} + [552] ∈ {552} + [553] ∈ {553} + [554] ∈ {554} + [555] ∈ {555} + [556] ∈ {556} + [557] ∈ {557} + [558] ∈ {558} + [559] ∈ {559} + [560] ∈ {560} + [561] ∈ {561} + [562] ∈ {562} + [563] ∈ {563} + [564] ∈ {564} + [565] ∈ {565} + [566] ∈ {566} + [567] ∈ {567} + [568] ∈ {568} + [569] ∈ {569} + [570] ∈ {570} + [571] ∈ {571} + [572] ∈ {572} + [573] ∈ {573} + [574] ∈ {574} + [575] ∈ {575} + [576] ∈ {576} + [577] ∈ {577} + [578] ∈ {578} + [579] ∈ {579} + [580] ∈ {580} + [581] ∈ {581} + [582] ∈ {582} + [583] ∈ {583} + [584] ∈ {584} + [585] ∈ {585} + [586] ∈ {586} + [587] ∈ {587} + [588] ∈ {588} + [589] ∈ {589} + [590] ∈ {590} + [591] ∈ {591} + [592] ∈ {592} + [593] ∈ {593} + [594] ∈ {594} + [595] ∈ {595} + [596] ∈ {596} + [597] ∈ {597} + [598] ∈ {598} + [599] ∈ {599} + [600] ∈ {600} + [601] ∈ {601} + [602] ∈ {602} + [603] ∈ {603} + [604] ∈ {604} + [605] ∈ {605} + [606] ∈ {606} + [607] ∈ {607} + [608] ∈ {608} + [609] ∈ {609} + [610] ∈ {610} + [611] ∈ {611} + [612] ∈ {612} + [613] ∈ {613} + [614] ∈ {614} + [615] ∈ {615} + [616] ∈ {616} + [617] ∈ {617} + [618] ∈ {618} + [619] ∈ {619} + [620] ∈ {620} + [621] ∈ {621} + [622] ∈ {622} + [623] ∈ {623} + [624] ∈ {624} + [625] ∈ {625} + [626] ∈ {626} + [627] ∈ {627} + [628] ∈ {628} + [629] ∈ {629} + [630] ∈ {630} + [631] ∈ {631} + [632] ∈ {632} + [633] ∈ {633} + [634] ∈ {634} + [635] ∈ {635} + [636] ∈ {636} + [637] ∈ {637} + [638] ∈ {638} + [639] ∈ {639} + [640] ∈ {640} + [641] ∈ {641} + [642] ∈ {642} + [643] ∈ {643} + [644] ∈ {644} + [645] ∈ {645} + [646] ∈ {646} + [647] ∈ {647} + [648] ∈ {648} + [649] ∈ {649} + [650] ∈ {650} + [651] ∈ {651} + [652] ∈ {652} + [653] ∈ {653} + [654] ∈ {654} + [655] ∈ {655} + [656] ∈ {656} + [657] ∈ {657} + [658] ∈ {658} + [659] ∈ {659} + [660] ∈ {660} + [661] ∈ {661} + [662] ∈ {662} + [663] ∈ {663} + [664] ∈ {664} + [665] ∈ {665} + [666] ∈ {666} + [667] ∈ {667} + [668] ∈ {668} + [669] ∈ {669} + [670] ∈ {670} + [671] ∈ {671} + [672] ∈ {672} + [673] ∈ {673} + [674] ∈ {674} + [675] ∈ {675} + [676] ∈ {676} + [677] ∈ {677} + [678] ∈ {678} + [679] ∈ {679} + [680] ∈ {680} + [681] ∈ {681} + [682] ∈ {682} + [683] ∈ {683} + [684] ∈ {684} + [685] ∈ {685} + [686] ∈ {686} + [687] ∈ {687} + [688] ∈ {688} + [689] ∈ {689} + [690] ∈ {690} + [691] ∈ {691} + [692] ∈ {692} + [693] ∈ {693} + [694] ∈ {694} + [695] ∈ {695} + [696] ∈ {696} + [697] ∈ {697} + [698] ∈ {698} + [699] ∈ {699} + [700] ∈ {700} + [701] ∈ {701} + [702] ∈ {702} + [703] ∈ {703} + [704] ∈ {704} + [705] ∈ {705} + [706] ∈ {706} + [707] ∈ {707} + [708] ∈ {708} + [709] ∈ {709} + [710] ∈ {710} + [711] ∈ {711} + [712] ∈ {712} + [713] ∈ {713} + [714] ∈ {714} + [715] ∈ {715} + [716] ∈ {716} + [717] ∈ {717} + [718] ∈ {718} + [719] ∈ {719} + [720] ∈ {720} + [721] ∈ {721} + [722] ∈ {722} + [723] ∈ {723} + [724] ∈ {724} + [725] ∈ {725} + [726] ∈ {726} + [727] ∈ {727} + [728] ∈ {728} + [729] ∈ {729} + [730] ∈ {730} + [731] ∈ {731} + [732] ∈ {732} + [733] ∈ {733} + [734] ∈ {734} + [735] ∈ {735} + [736] ∈ {736} + [737] ∈ {737} + [738] ∈ {738} + [739] ∈ {739} + [740] ∈ {740} + [741] ∈ {741} + [742] ∈ {742} + [743] ∈ {743} + [744] ∈ {744} + [745] ∈ {745} + [746] ∈ {746} + [747] ∈ {747} + [748] ∈ {748} + [749] ∈ {749} + [750] ∈ {750} + [751] ∈ {751} + [752] ∈ {752} + [753] ∈ {753} + [754] ∈ {754} + [755] ∈ {755} + [756] ∈ {756} + [757] ∈ {757} + [758] ∈ {758} + [759] ∈ {759} + [760] ∈ {760} + [761] ∈ {761} + [762] ∈ {762} + [763] ∈ {763} + [764] ∈ {764} + [765] ∈ {765} + [766] ∈ {766} + [767] ∈ {767} + [768] ∈ {768} + [769] ∈ {769} + [770] ∈ {770} + [771] ∈ {771} + [772] ∈ {772} + [773] ∈ {773} + [774] ∈ {774} + [775] ∈ {775} + [776] ∈ {776} + [777] ∈ {777} + [778] ∈ {778} + [779] ∈ {779} + [780] ∈ {780} + [781] ∈ {781} + [782] ∈ {782} + [783] ∈ {783} + [784] ∈ {784} + [785] ∈ {785} + [786] ∈ {786} + [787] ∈ {787} + [788] ∈ {788} + [789] ∈ {789} + [790] ∈ {790} + [791] ∈ {791} + [792] ∈ {792} + [793] ∈ {793} + [794] ∈ {794} + [795] ∈ {795} + [796] ∈ {796} + [797] ∈ {797} + [798] ∈ {798} + [799] ∈ {799} + [800] ∈ {800} + [801] ∈ {801} + [802] ∈ {802} + [803] ∈ {803} + [804] ∈ {804} + [805] ∈ {805} + [806] ∈ {806} + [807] ∈ {807} + [808] ∈ {808} + [809] ∈ {809} + [810] ∈ {810} + [811] ∈ {811} + [812] ∈ {812} + [813] ∈ {813} + [814] ∈ {814} + [815] ∈ {815} + [816] ∈ {816} + [817] ∈ {817} + [818] ∈ {818} + [819] ∈ {819} + [820] ∈ {820} + [821] ∈ {821} + [822] ∈ {822} + [823] ∈ {823} + [824] ∈ {824} + [825] ∈ {825} + [826] ∈ {826} + [827] ∈ {827} + [828] ∈ {828} + [829] ∈ {829} + [830] ∈ {830} + [831] ∈ {831} + [832] ∈ {832} + [833] ∈ {833} + [834] ∈ {834} + [835] ∈ {835} + [836] ∈ {836} + [837] ∈ {837} + [838] ∈ {838} + [839] ∈ {839} + [840] ∈ {840} + [841] ∈ {841} + [842] ∈ {842} + [843] ∈ {843} + [844] ∈ {844} + [845] ∈ {845} + [846] ∈ {846} + [847] ∈ {847} + [848] ∈ {848} + [849] ∈ {849} + [850] ∈ {850} + [851] ∈ {851} + [852] ∈ {852} + [853] ∈ {853} + [854] ∈ {854} + [855] ∈ {855} + [856] ∈ {856} + [857] ∈ {857} + [858] ∈ {858} + [859] ∈ {859} + [860] ∈ {860} + [861] ∈ {861} + [862] ∈ {862} + [863] ∈ {863} + [864] ∈ {864} + [865] ∈ {865} + [866] ∈ {866} + [867] ∈ {867} + [868] ∈ {868} + [869] ∈ {869} + [870] ∈ {870} + [871] ∈ {871} + [872] ∈ {872} + [873] ∈ {873} + [874] ∈ {874} + [875] ∈ {875} + [876] ∈ {876} + [877] ∈ {877} + [878] ∈ {878} + [879] ∈ {879} + [880] ∈ {880} + [881] ∈ {881} + [882] ∈ {882} + [883] ∈ {883} + [884] ∈ {884} + [885] ∈ {885} + [886] ∈ {886} + [887] ∈ {887} + [888] ∈ {888} + [889] ∈ {889} + [890] ∈ {890} + [891] ∈ {891} + [892] ∈ {892} + [893] ∈ {893} + [894] ∈ {894} + [895] ∈ {895} + [896] ∈ {896} + [897] ∈ {897} + [898] ∈ {898} + [899] ∈ {899} + [900] ∈ {900} + [901] ∈ {901} + [902] ∈ {902} + [903] ∈ {903} + [904] ∈ {904} + [905] ∈ {905} + [906] ∈ {906} + [907] ∈ {907} + [908] ∈ {908} + [909] ∈ {909} + [910] ∈ {910} + [911] ∈ {911} + [912] ∈ {912} + [913] ∈ {913} + [914] ∈ {914} + [915] ∈ {915} + [916] ∈ {916} + [917] ∈ {917} + [918] ∈ {918} + [919] ∈ {919} + [920] ∈ {920} + [921] ∈ {921} + [922] ∈ {922} + [923] ∈ {923} + [924] ∈ {924} + [925] ∈ {925} + [926] ∈ {926} + [927] ∈ {927} + [928] ∈ {928} + [929] ∈ {929} + [930] ∈ {930} + [931] ∈ {931} + [932] ∈ {932} + [933] ∈ {933} + [934] ∈ {934} + [935] ∈ {935} + [936] ∈ {936} + [937] ∈ {937} + [938] ∈ {938} + [939] ∈ {939} + [940] ∈ {940} + [941] ∈ {941} + [942] ∈ {942} + [943] ∈ {943} + [944] ∈ {944} + [945] ∈ {945} + [946] ∈ {946} + [947] ∈ {947} + [948] ∈ {948} + [949] ∈ {949} + [950] ∈ {950} + [951] ∈ {951} + [952] ∈ {952} + [953] ∈ {953} + [954] ∈ {954} + [955] ∈ {955} + [956] ∈ {956} + [957] ∈ {957} + [958] ∈ {958} + [959] ∈ {959} + [960] ∈ {960} + [961] ∈ {961} + [962] ∈ {962} + [963] ∈ {963} + [964] ∈ {964} + [965] ∈ {965} + [966] ∈ {966} + [967] ∈ {967} + [968] ∈ {968} + [969] ∈ {969} + [970] ∈ {970} + [971] ∈ {971} + [972] ∈ {972} + [973] ∈ {973} + [974] ∈ {974} + [975] ∈ {975} + [976] ∈ {976} + [977] ∈ {977} + [978] ∈ {978} + [979] ∈ {979} + [980] ∈ {980} + [981] ∈ {981} + [982] ∈ {982} + [983] ∈ {983} + [984] ∈ {984} + [985] ∈ {985} + [986] ∈ {986} + [987] ∈ {987} + [988] ∈ {988} + [989] ∈ {989} + [990] ∈ {990} + [991] ∈ {991} + [992] ∈ {992} + [993] ∈ {993} + [994] ∈ {994} + [995] ∈ {995} + [996] ∈ {996} + [997] ∈ {997} + [998] ∈ {998} + [999] ∈ {999} + [1000] ∈ {1000} + [1001] ∈ {1001} + [1002] ∈ {1002} + [1003] ∈ {1003} + [1004] ∈ {1004} + [1005] ∈ {1005} + [1006] ∈ {1006} + [1007] ∈ {1007} + [1008] ∈ {1008} + [1009] ∈ {1009} + [1010] ∈ {1010} + [1011] ∈ {1011} + [1012] ∈ {1012} + [1013] ∈ {1013} + [1014] ∈ {1014} + [1015] ∈ {1015} + [1016] ∈ {1016} + [1017] ∈ {1017} + [1018] ∈ {1018} + [1019] ∈ {1019} + [1020] ∈ {1020} + [1021] ∈ {1021} + [1022] ∈ {1022} + [1023] ∈ {1023} + [1024] ∈ {1024} + [1025] ∈ {1025} + [1026] ∈ {1026} + [1027] ∈ {1027} + [1028] ∈ {1028} + [1029] ∈ {1029} + [1030] ∈ {1030} + [1031] ∈ {1031} + [1032] ∈ {1032} + [1033] ∈ {1033} + [1034] ∈ {1034} + [1035] ∈ {1035} + [1036] ∈ {1036} + [1037] ∈ {1037} + [1038] ∈ {1038} + [1039] ∈ {1039} + [1040] ∈ {1040} + [1041] ∈ {1041} + [1042] ∈ {1042} + [1043] ∈ {1043} + [1044] ∈ {1044} + [1045] ∈ {1045} + [1046] ∈ {1046} + [1047] ∈ {1047} + [1048] ∈ {1048} + [1049] ∈ {1049} + [1050] ∈ {1050} + [1051] ∈ {1051} + [1052] ∈ {1052} + [1053] ∈ {1053} + [1054] ∈ {1054} + [1055] ∈ {1055} + [1056] ∈ {1056} + [1057] ∈ {1057} + [1058] ∈ {1058} + [1059] ∈ {1059} + [1060] ∈ {1060} + [1061] ∈ {1061} + [1062] ∈ {1062} + [1063] ∈ {1063} + [1064] ∈ {1064} + [1065] ∈ {1065} + [1066] ∈ {1066} + [1067] ∈ {1067} + [1068] ∈ {1068} + [1069] ∈ {1069} + [1070] ∈ {1070} + [1071] ∈ {1071} + [1072] ∈ {1072} + [1073] ∈ {1073} + [1074] ∈ {1074} + [1075] ∈ {1075} + [1076] ∈ {1076} + [1077] ∈ {1077} + [1078] ∈ {1078} + [1079] ∈ {1079} + [1080] ∈ {1080} + [1081] ∈ {1081} + [1082] ∈ {1082} + [1083] ∈ {1083} + [1084] ∈ {1084} + [1085] ∈ {1085} + [1086] ∈ {1086} + [1087] ∈ {1087} + [1088] ∈ {1088} + [1089] ∈ {1089} + [1090] ∈ {1090} + [1091] ∈ {1091} + [1092] ∈ {1092} + [1093] ∈ {1093} + [1094] ∈ {1094} + [1095] ∈ {1095} + [1096] ∈ {1096} + [1097] ∈ {1097} + [1098] ∈ {1098} + [1099] ∈ {1099} + [1100] ∈ {1100} + [1101] ∈ {1101} + [1102] ∈ {1102} + [1103] ∈ {1103} + [1104] ∈ {1104} + [1105] ∈ {1105} + [1106] ∈ {1106} + [1107] ∈ {1107} + [1108] ∈ {1108} + [1109] ∈ {1109} + [1110] ∈ {1110} + [1111] ∈ {1111} + [1112] ∈ {1112} + [1113] ∈ {1113} + [1114] ∈ {1114} + [1115] ∈ {1115} + [1116] ∈ {1116} + [1117] ∈ {1117} + [1118] ∈ {1118} + [1119] ∈ {1119} + [1120] ∈ {1120} + [1121] ∈ {1121} + [1122] ∈ {1122} + [1123] ∈ {1123} + [1124] ∈ {1124} + [1125] ∈ {1125} + [1126] ∈ {1126} + [1127] ∈ {1127} + [1128] ∈ {1128} + [1129] ∈ {1129} + [1130] ∈ {1130} + [1131] ∈ {1131} + [1132] ∈ {1132} + [1133] ∈ {1133} + [1134] ∈ {1134} + [1135] ∈ {1135} + [1136] ∈ {1136} + [1137] ∈ {1137} + [1138] ∈ {1138} + [1139] ∈ {1139} + [1140] ∈ {1140} + [1141] ∈ {1141} + [1142] ∈ {1142} + [1143] ∈ {1143} + [1144] ∈ {1144} + [1145] ∈ {1145} + [1146] ∈ {1146} + [1147] ∈ {1147} + [1148] ∈ {1148} + [1149] ∈ {1149} + [1150] ∈ {1150} + [1151] ∈ {1151} + [1152] ∈ {1152} + [1153] ∈ {1153} + [1154] ∈ {1154} + [1155] ∈ {1155} + [1156] ∈ {1156} + [1157] ∈ {1157} + [1158] ∈ {1158} + [1159] ∈ {1159} + [1160] ∈ {1160} + [1161] ∈ {1161} + [1162] ∈ {1162} + [1163] ∈ {1163} + [1164] ∈ {1164} + [1165] ∈ {1165} + [1166] ∈ {1166} + [1167] ∈ {1167} + [1168] ∈ {1168} + [1169] ∈ {1169} + [1170] ∈ {1170} + [1171] ∈ {1171} + [1172] ∈ {1172} + [1173] ∈ {1173} + [1174] ∈ {1174} + [1175] ∈ {1175} + [1176] ∈ {1176} + [1177] ∈ {1177} + [1178] ∈ {1178} + [1179] ∈ {1179} + [1180] ∈ {1180} + [1181] ∈ {1181} + [1182] ∈ {1182} + [1183] ∈ {1183} + [1184] ∈ {1184} + [1185] ∈ {1185} + [1186] ∈ {1186} + [1187] ∈ {1187} + [1188] ∈ {1188} + [1189] ∈ {1189} + [1190] ∈ {1190} + [1191] ∈ {1191} + [1192] ∈ {1192} + [1193] ∈ {1193} + [1194] ∈ {1194} + [1195] ∈ {1195} + [1196] ∈ {1196} + [1197] ∈ {1197} + [1198] ∈ {1198} + [1199] ∈ {1199} + [1200] ∈ {1200} + [1201] ∈ {1201} + [1202] ∈ {1202} + [1203] ∈ {1203} + [1204] ∈ {1204} + [1205] ∈ {1205} + [1206] ∈ {1206} + [1207] ∈ {1207} + [1208] ∈ {1208} + [1209] ∈ {1209} + [1210] ∈ {1210} + [1211] ∈ {1211} + [1212] ∈ {1212} + [1213] ∈ {1213} + [1214] ∈ {1214} + [1215] ∈ {1215} + [1216] ∈ {1216} + [1217] ∈ {1217} + [1218] ∈ {1218} + [1219] ∈ {1219} + [1220] ∈ {1220} + [1221] ∈ {1221} + [1222] ∈ {1222} + [1223] ∈ {1223} + [1224] ∈ {1224} + [1225] ∈ {1225} + [1226] ∈ {1226} + [1227] ∈ {1227} + [1228] ∈ {1228} + [1229] ∈ {1229} + [1230] ∈ {1230} + [1231] ∈ {1231} + [1232] ∈ {1232} + [1233] ∈ {1233} + [1234] ∈ {1234} + [1235] ∈ {1235} + [1236] ∈ {1236} + [1237] ∈ {1237} + [1238] ∈ {1238} + [1239] ∈ {1239} + [1240] ∈ {1240} + [1241] ∈ {1241} + [1242] ∈ {1242} + [1243] ∈ {1243} + [1244] ∈ {1244} + [1245] ∈ {1245} + [1246] ∈ {1246} + [1247] ∈ {1247} + [1248] ∈ {1248} + [1249] ∈ {1249} + [1250] ∈ {1250} + [1251] ∈ {1251} + [1252] ∈ {1252} + [1253] ∈ {1253} + [1254] ∈ {1254} + [1255] ∈ {1255} + [1256] ∈ {1256} + [1257] ∈ {1257} + [1258] ∈ {1258} + [1259] ∈ {1259} + [1260] ∈ {1260} + [1261] ∈ {1261} + [1262] ∈ {1262} + [1263] ∈ {1263} + [1264] ∈ {1264} + [1265] ∈ {1265} + [1266] ∈ {1266} + [1267] ∈ {1267} + [1268] ∈ {1268} + [1269] ∈ {1269} + [1270] ∈ {1270} + [1271] ∈ {1271} + [1272] ∈ {1272} + [1273] ∈ {1273} + [1274] ∈ {1274} + [1275] ∈ {1275} + [1276] ∈ {1276} + [1277] ∈ {1277} + [1278] ∈ {1278} + [1279] ∈ {1279} + [1280] ∈ {1280} + [1281] ∈ {1281} + [1282] ∈ {1282} + [1283] ∈ {1283} + [1284] ∈ {1284} + [1285] ∈ {1285} + [1286] ∈ {1286} + [1287] ∈ {1287} + [1288] ∈ {1288} + [1289] ∈ {1289} + [1290] ∈ {1290} + [1291] ∈ {1291} + [1292] ∈ {1292} + [1293] ∈ {1293} + [1294] ∈ {1294} + [1295] ∈ {1295} + [1296] ∈ {1296} + [1297] ∈ {1297} + [1298] ∈ {1298} + [1299] ∈ {1299} + [1300] ∈ {1300} + [1301] ∈ {1301} + [1302] ∈ {1302} + [1303] ∈ {1303} + [1304] ∈ {1304} + [1305] ∈ {1305} + [1306] ∈ {1306} + [1307] ∈ {1307} + [1308] ∈ {1308} + [1309] ∈ {1309} + [1310] ∈ {1310} + [1311] ∈ {1311} + [1312] ∈ {1312} + [1313] ∈ {1313} + [1314] ∈ {1314} + [1315] ∈ {1315} + [1316] ∈ {1316} + [1317] ∈ {1317} + [1318] ∈ {1318} + [1319] ∈ {1319} + [1320] ∈ {1320} + [1321] ∈ {1321} + [1322] ∈ {1322} + [1323] ∈ {1323} + [1324] ∈ {1324} + [1325] ∈ {1325} + [1326] ∈ {1326} + [1327] ∈ {1327} + [1328] ∈ {1328} + [1329] ∈ {1329} + [1330] ∈ {1330} + [1331] ∈ {1331} + [1332] ∈ {1332} + [1333] ∈ {1333} + [1334] ∈ {1334} + [1335] ∈ {1335} + [1336] ∈ {1336} + [1337] ∈ {1337} + [1338] ∈ {1338} + [1339] ∈ {1339} + [1340] ∈ {1340} + [1341] ∈ {1341} + [1342] ∈ {1342} + [1343] ∈ {1343} + [1344] ∈ {1344} + [1345] ∈ {1345} + [1346] ∈ {1346} + [1347] ∈ {1347} + [1348] ∈ {1348} + [1349] ∈ {1349} + [1350] ∈ {1350} + [1351] ∈ {1351} + [1352] ∈ {1352} + [1353] ∈ {1353} + [1354] ∈ {1354} + [1355] ∈ {1355} + [1356] ∈ {1356} + [1357] ∈ {1357} + [1358] ∈ {1358} + [1359] ∈ {1359} + [1360] ∈ {1360} + [1361] ∈ {1361} + [1362] ∈ {1362} + [1363] ∈ {1363} + [1364] ∈ {1364} + [1365] ∈ {1365} + [1366] ∈ {1366} + [1367] ∈ {1367} + [1368] ∈ {1368} + [1369] ∈ {1369} + [1370] ∈ {1370} + [1371] ∈ {1371} + [1372] ∈ {1372} + [1373] ∈ {1373} + [1374] ∈ {1374} + [1375] ∈ {1375} + [1376] ∈ {1376} + [1377] ∈ {1377} + [1378] ∈ {1378} + [1379] ∈ {1379} + [1380] ∈ {1380} + [1381] ∈ {1381} + [1382] ∈ {1382} + [1383] ∈ {1383} + [1384] ∈ {1384} + [1385] ∈ {1385} + [1386] ∈ {1386} + [1387] ∈ {1387} + [1388] ∈ {1388} + [1389] ∈ {1389} + [1390] ∈ {1390} + [1391] ∈ {1391} + [1392] ∈ {1392} + [1393] ∈ {1393} + [1394] ∈ {1394} + [1395] ∈ {1395} + [1396] ∈ {1396} + [1397] ∈ {1397} + [1398] ∈ {1398} + [1399] ∈ {1399} + [1400] ∈ {1400} + [1401] ∈ {1401} + [1402] ∈ {1402} + [1403] ∈ {1403} + [1404] ∈ {1404} + [1405] ∈ {1405} + [1406] ∈ {1406} + [1407] ∈ {1407} + [1408] ∈ {1408} + [1409] ∈ {1409} + [1410] ∈ {1410} + [1411] ∈ {1411} + [1412] ∈ {1412} + [1413] ∈ {1413} + [1414] ∈ {1414} + [1415] ∈ {1415} + [1416] ∈ {1416} + [1417] ∈ {1417} + [1418] ∈ {1418} + [1419] ∈ {1419} + [1420] ∈ {1420} + [1421] ∈ {1421} + [1422] ∈ {1422} + [1423] ∈ {1423} + [1424] ∈ {1424} + [1425] ∈ {1425} + [1426] ∈ {1426} + [1427] ∈ {1427} + [1428] ∈ {1428} + [1429] ∈ {1429} + [1430] ∈ {1430} + [1431] ∈ {1431} + [1432] ∈ {1432} + [1433] ∈ {1433} + [1434] ∈ {1434} + [1435] ∈ {1435} + [1436] ∈ {1436} + [1437] ∈ {1437} + [1438] ∈ {1438} + [1439] ∈ {1439} + [1440] ∈ {1440} + [1441] ∈ {1441} + [1442] ∈ {1442} + [1443] ∈ {1443} + [1444] ∈ {1444} + [1445] ∈ {1445} + [1446] ∈ {1446} + [1447] ∈ {1447} + [1448] ∈ {1448} + [1449] ∈ {1449} + [1450] ∈ {1450} + [1451] ∈ {1451} + [1452] ∈ {1452} + [1453] ∈ {1453} + [1454] ∈ {1454} + [1455] ∈ {1455} + [1456] ∈ {1456} + [1457] ∈ {1457} + [1458] ∈ {1458} + [1459] ∈ {1459} + [1460] ∈ {1460} + [1461] ∈ {1461} + [1462] ∈ {1462} + [1463] ∈ {1463} + [1464] ∈ {1464} + [1465] ∈ {1465} + [1466] ∈ {1466} + [1467] ∈ {1467} + [1468] ∈ {1468} + [1469] ∈ {1469} + [1470] ∈ {1470} + [1471] ∈ {1471} + [1472] ∈ {1472} + [1473] ∈ {1473} + [1474] ∈ {1474} + [1475] ∈ {1475} + [1476] ∈ {1476} + [1477] ∈ {1477} + [1478] ∈ {1478} + [1479] ∈ {1479} + [1480] ∈ {1480} + [1481] ∈ {1481} + [1482] ∈ {1482} + [1483] ∈ {1483} + [1484] ∈ {1484} + [1485] ∈ {1485} + [1486] ∈ {1486} + [1487] ∈ {1487} + [1488] ∈ {1488} + [1489] ∈ {1489} + [1490] ∈ {1490} + [1491] ∈ {1491} + [1492] ∈ {1492} + [1493] ∈ {1493} + [1494] ∈ {1494} + [1495] ∈ {1495} + [1496] ∈ {1496} + [1497] ∈ {1497} + [1498] ∈ {1498} + [1499] ∈ {1499} + [1500] ∈ {1500} + [1501] ∈ {1501} + [1502] ∈ {1502} + [1503] ∈ {1503} + [1504] ∈ {1504} + [1505] ∈ {1505} + [1506] ∈ {1506} + [1507] ∈ {1507} + [1508] ∈ {1508} + [1509] ∈ {1509} + [1510] ∈ {1510} + [1511] ∈ {1511} + [1512] ∈ {1512} + [1513] ∈ {1513} + [1514] ∈ {1514} + [1515] ∈ {1515} + [1516] ∈ {1516} + [1517] ∈ {1517} + [1518] ∈ {1518} + [1519] ∈ {1519} + [1520] ∈ {1520} + [1521] ∈ {1521} + [1522] ∈ {1522} + [1523] ∈ {1523} + [1524] ∈ {1524} + [1525] ∈ {1525} + [1526] ∈ {1526} + [1527] ∈ {1527} + [1528] ∈ {1528} + [1529] ∈ {1529} + [1530] ∈ {1530} + [1531] ∈ {1531} + [1532] ∈ {1532} + [1533] ∈ {1533} + [1534] ∈ {1534} + [1535] ∈ {1535} + [1536] ∈ {1536} + [1537] ∈ {1537} + [1538] ∈ {1538} + [1539] ∈ {1539} + [1540] ∈ {1540} + [1541] ∈ {1541} + [1542] ∈ {1542} + [1543] ∈ {1543} + [1544] ∈ {1544} + [1545] ∈ {1545} + [1546] ∈ {1546} + [1547] ∈ {1547} + [1548] ∈ {1548} + [1549] ∈ {1549} + [1550] ∈ {1550} + [1551] ∈ {1551} + [1552] ∈ {1552} + [1553] ∈ {1553} + [1554] ∈ {1554} + [1555] ∈ {1555} + [1556] ∈ {1556} + [1557] ∈ {1557} + [1558] ∈ {1558} + [1559] ∈ {1559} + [1560] ∈ {1560} + [1561] ∈ {1561} + [1562] ∈ {1562} + [1563] ∈ {1563} + [1564] ∈ {1564} + [1565] ∈ {1565} + [1566] ∈ {1566} + [1567] ∈ {1567} + [1568] ∈ {1568} + [1569] ∈ {1569} + [1570] ∈ {1570} + [1571] ∈ {1571} + [1572] ∈ {1572} + [1573] ∈ {1573} + [1574] ∈ {1574} + [1575] ∈ {1575} + [1576] ∈ {1576} + [1577] ∈ {1577} + [1578] ∈ {1578} + [1579] ∈ {1579} + [1580] ∈ {1580} + [1581] ∈ {1581} + [1582] ∈ {1582} + [1583] ∈ {1583} + [1584] ∈ {1584} + [1585] ∈ {1585} + [1586] ∈ {1586} + [1587] ∈ {1587} + [1588] ∈ {1588} + [1589] ∈ {1589} + [1590] ∈ {1590} + [1591] ∈ {1591} + [1592] ∈ {1592} + [1593] ∈ {1593} + [1594] ∈ {1594} + [1595] ∈ {1595} + [1596] ∈ {1596} + [1597] ∈ {1597} + [1598] ∈ {1598} + [1599] ∈ {1599} + [1600] ∈ {1600} + [1601] ∈ {1601} + [1602] ∈ {1602} + [1603] ∈ {1603} + [1604] ∈ {1604} + [1605] ∈ {1605} + [1606] ∈ {1606} + [1607] ∈ {1607} + [1608] ∈ {1608} + [1609] ∈ {1609} + [1610] ∈ {1610} + [1611] ∈ {1611} + [1612] ∈ {1612} + [1613] ∈ {1613} + [1614] ∈ {1614} + [1615] ∈ {1615} + [1616] ∈ {1616} + [1617] ∈ {1617} + [1618] ∈ {1618} + [1619] ∈ {1619} + [1620] ∈ {1620} + [1621] ∈ {1621} + [1622] ∈ {1622} + [1623] ∈ {1623} + [1624] ∈ {1624} + [1625] ∈ {1625} + [1626] ∈ {1626} + [1627] ∈ {1627} + [1628] ∈ {1628} + [1629] ∈ {1629} + [1630] ∈ {1630} + [1631] ∈ {1631} + [1632] ∈ {1632} + [1633] ∈ {1633} + [1634] ∈ {1634} + [1635] ∈ {1635} + [1636] ∈ {1636} + [1637] ∈ {1637} + [1638] ∈ {1638} + [1639] ∈ {1639} + [1640] ∈ {1640} + [1641] ∈ {1641} + [1642] ∈ {1642} + [1643] ∈ {1643} + [1644] ∈ {1644} + [1645] ∈ {1645} + [1646] ∈ {1646} + [1647] ∈ {1647} + [1648] ∈ {1648} + [1649] ∈ {1649} + [1650] ∈ {1650} + [1651] ∈ {1651} + [1652] ∈ {1652} + [1653] ∈ {1653} + [1654] ∈ {1654} + [1655] ∈ {1655} + [1656] ∈ {1656} + [1657] ∈ {1657} + [1658] ∈ {1658} + [1659] ∈ {1659} + [1660] ∈ {1660} + [1661] ∈ {1661} + [1662] ∈ {1662} + [1663] ∈ {1663} + [1664] ∈ {1664} + [1665] ∈ {1665} + [1666] ∈ {1666} + [1667] ∈ {1667} + [1668] ∈ {1668} + [1669] ∈ {1669} + [1670] ∈ {1670} + [1671] ∈ {1671} + [1672] ∈ {1672} + [1673] ∈ {1673} + [1674] ∈ {1674} + [1675] ∈ {1675} + [1676] ∈ {1676} + [1677] ∈ {1677} + [1678] ∈ {1678} + [1679] ∈ {1679} + [1680] ∈ {1680} + [1681] ∈ {1681} + [1682] ∈ {1682} + [1683] ∈ {1683} + [1684] ∈ {1684} + [1685] ∈ {1685} + [1686] ∈ {1686} + [1687] ∈ {1687} + [1688] ∈ {1688} + [1689] ∈ {1689} + [1690] ∈ {1690} + [1691] ∈ {1691} + [1692] ∈ {1692} + [1693] ∈ {1693} + [1694] ∈ {1694} + [1695] ∈ {1695} + [1696] ∈ {1696} + [1697] ∈ {1697} + [1698] ∈ {1698} + [1699] ∈ {1699} + [1700] ∈ {1700} + [1701] ∈ {1701} + [1702] ∈ {1702} + [1703] ∈ {1703} + [1704] ∈ {1704} + [1705] ∈ {1705} + [1706] ∈ {1706} + [1707] ∈ {1707} + [1708] ∈ {1708} + [1709] ∈ {1709} + [1710] ∈ {1710} + [1711] ∈ {1711} + [1712] ∈ {1712} + [1713] ∈ {1713} + [1714] ∈ {1714} + [1715] ∈ {1715} + [1716] ∈ {1716} + [1717] ∈ {1717} + [1718] ∈ {1718} + [1719] ∈ {1719} + [1720] ∈ {1720} + [1721] ∈ {1721} + [1722] ∈ {1722} + [1723] ∈ {1723} + [1724] ∈ {1724} + [1725] ∈ {1725} + [1726] ∈ {1726} + [1727] ∈ {1727} + [1728] ∈ {1728} + [1729] ∈ {1729} + [1730] ∈ {1730} + [1731] ∈ {1731} + [1732] ∈ {1732} + [1733] ∈ {1733} + [1734] ∈ {1734} + [1735] ∈ {1735} + [1736] ∈ {1736} + [1737] ∈ {1737} + [1738] ∈ {1738} + [1739] ∈ {1739} + [1740] ∈ {1740} + [1741] ∈ {1741} + [1742] ∈ {1742} + [1743] ∈ {1743} + [1744] ∈ {1744} + [1745] ∈ {1745} + [1746] ∈ {1746} + [1747] ∈ {1747} + [1748] ∈ {1748} + [1749] ∈ {1749} + [1750] ∈ {1750} + [1751] ∈ {1751} + [1752] ∈ {1752} + [1753] ∈ {1753} + [1754] ∈ {1754} + [1755] ∈ {1755} + [1756] ∈ {1756} + [1757] ∈ {1757} + [1758] ∈ {1758} + [1759] ∈ {1759} + [1760] ∈ {1760} + [1761] ∈ {1761} + [1762] ∈ {1762} + [1763] ∈ {1763} + [1764] ∈ {1764} + [1765] ∈ {1765} + [1766] ∈ {1766} + [1767] ∈ {1767} + [1768] ∈ {1768} + [1769] ∈ {1769} + [1770] ∈ {1770} + [1771] ∈ {1771} + [1772] ∈ {1772} + [1773] ∈ {1773} + [1774] ∈ {1774} + [1775] ∈ {1775} + [1776] ∈ {1776} + [1777] ∈ {1777} + [1778] ∈ {1778} + [1779] ∈ {1779} + [1780] ∈ {1780} + [1781] ∈ {1781} + [1782] ∈ {1782} + [1783] ∈ {1783} + [1784] ∈ {1784} + [1785] ∈ {1785} + [1786] ∈ {1786} + [1787] ∈ {1787} + [1788] ∈ {1788} + [1789] ∈ {1789} + [1790] ∈ {1790} + [1791] ∈ {1791} + [1792] ∈ {1792} + [1793] ∈ {1793} + [1794] ∈ {1794} + [1795] ∈ {1795} + [1796] ∈ {1796} + [1797] ∈ {1797} + [1798] ∈ {1798} + [1799] ∈ {1799} + [1800] ∈ {1800} + [1801] ∈ {1801} + [1802] ∈ {1802} + [1803] ∈ {1803} + [1804] ∈ {1804} + [1805] ∈ {1805} + [1806] ∈ {1806} + [1807] ∈ {1807} + [1808] ∈ {1808} + [1809] ∈ {1809} + [1810] ∈ {1810} + [1811] ∈ {1811} + [1812] ∈ {1812} + [1813] ∈ {1813} + [1814] ∈ {1814} + [1815] ∈ {1815} + [1816] ∈ {1816} + [1817] ∈ {1817} + [1818] ∈ {1818} + [1819] ∈ {1819} + [1820] ∈ {1820} + [1821] ∈ {1821} + [1822] ∈ {1822} + [1823] ∈ {1823} + [1824] ∈ {1824} + [1825] ∈ {1825} + [1826] ∈ {1826} + [1827] ∈ {1827} + [1828] ∈ {1828} + [1829] ∈ {1829} + [1830] ∈ {1830} + [1831] ∈ {1831} + [1832] ∈ {1832} + [1833] ∈ {1833} + [1834] ∈ {1834} + [1835] ∈ {1835} + [1836] ∈ {1836} + [1837] ∈ {1837} + [1838] ∈ {1838} + [1839] ∈ {1839} + [1840] ∈ {1840} + [1841] ∈ {1841} + [1842] ∈ {1842} + [1843] ∈ {1843} + [1844] ∈ {1844} + [1845] ∈ {1845} + [1846] ∈ {1846} + [1847] ∈ {1847} + [1848] ∈ {1848} + [1849] ∈ {1849} + [1850] ∈ {1850} + [1851] ∈ {1851} + [1852] ∈ {1852} + [1853] ∈ {1853} + [1854] ∈ {1854} + [1855] ∈ {1855} + [1856] ∈ {1856} + [1857] ∈ {1857} + [1858] ∈ {1858} + [1859] ∈ {1859} + [1860] ∈ {1860} + [1861] ∈ {1861} + [1862] ∈ {1862} + [1863] ∈ {1863} + [1864] ∈ {1864} + [1865] ∈ {1865} + [1866] ∈ {1866} + [1867] ∈ {1867} + [1868] ∈ {1868} + [1869] ∈ {1869} + [1870] ∈ {1870} + [1871] ∈ {1871} + [1872] ∈ {1872} + [1873] ∈ {1873} + [1874] ∈ {1874} + [1875] ∈ {1875} + [1876] ∈ {1876} + [1877] ∈ {1877} + [1878] ∈ {1878} + [1879] ∈ {1879} + [1880] ∈ {1880} + [1881] ∈ {1881} + [1882] ∈ {1882} + [1883] ∈ {1883} + [1884] ∈ {1884} + [1885] ∈ {1885} + [1886] ∈ {1886} + [1887] ∈ {1887} + [1888] ∈ {1888} + [1889] ∈ {1889} + [1890] ∈ {1890} + [1891] ∈ {1891} + [1892] ∈ {1892} + [1893] ∈ {1893} + [1894] ∈ {1894} + [1895] ∈ {1895} + [1896] ∈ {1896} + [1897] ∈ {1897} + [1898] ∈ {1898} + [1899] ∈ {1899} + [1900] ∈ {1900} + [1901] ∈ {1901} + [1902] ∈ {1902} + [1903] ∈ {1903} + [1904] ∈ {1904} + [1905] ∈ {1905} + [1906] ∈ {1906} + [1907] ∈ {1907} + [1908] ∈ {1908} + [1909] ∈ {1909} + [1910] ∈ {1910} + [1911] ∈ {1911} + [1912] ∈ {1912} + [1913] ∈ {1913} + [1914] ∈ {1914} + [1915] ∈ {1915} + [1916] ∈ {1916} + [1917] ∈ {1917} + [1918] ∈ {1918} + [1919] ∈ {1919} + [1920] ∈ {1920} + [1921] ∈ {1921} + [1922] ∈ {1922} + [1923] ∈ {1923} + [1924] ∈ {1924} + [1925] ∈ {1925} + [1926] ∈ {1926} + [1927] ∈ {1927} + [1928] ∈ {1928} + [1929] ∈ {1929} + [1930] ∈ {1930} + [1931] ∈ {1931} + [1932] ∈ {1932} + [1933] ∈ {1933} + [1934] ∈ {1934} + [1935] ∈ {1935} + [1936] ∈ {1936} + [1937] ∈ {1937} + [1938] ∈ {1938} + [1939] ∈ {1939} + [1940] ∈ {1940} + [1941] ∈ {1941} + [1942] ∈ {1942} + [1943] ∈ {1943} + [1944] ∈ {1944} + [1945] ∈ {1945} + [1946] ∈ {1946} + [1947] ∈ {1947} + [1948] ∈ {1948} + [1949] ∈ {1949} + [1950] ∈ {1950} + [1951] ∈ {1951} + [1952] ∈ {1952} + [1953] ∈ {1953} + [1954] ∈ {1954} + [1955] ∈ {1955} + [1956] ∈ {1956} + [1957] ∈ {1957} + [1958] ∈ {1958} + [1959] ∈ {1959} + [1960] ∈ {1960} + [1961] ∈ {1961} + [1962] ∈ {1962} + [1963] ∈ {1963} + [1964] ∈ {1964} + [1965] ∈ {1965} + [1966] ∈ {1966} + [1967] ∈ {1967} + [1968] ∈ {1968} + [1969] ∈ {1969} + [1970] ∈ {1970} + [1971] ∈ {1971} + [1972] ∈ {1972} + [1973] ∈ {1973} + [1974] ∈ {1974} + [1975] ∈ {1975} + [1976] ∈ {1976} + [1977] ∈ {1977} + [1978] ∈ {1978} + [1979] ∈ {1979} + [1980] ∈ {1980} + [1981] ∈ {1981} + [1982] ∈ {1982} + [1983] ∈ {1983} + [1984] ∈ {1984} + [1985] ∈ {1985} + [1986] ∈ {1986} + [1987] ∈ {1987} + [1988] ∈ {1988} + [1989] ∈ {1989} + [1990] ∈ {1990} + [1991] ∈ {1991} + [1992] ∈ {1992} + [1993] ∈ {1993} + [1994] ∈ {1994} + [1995] ∈ {1995} + [1996] ∈ {1996} + [1997] ∈ {1997} + [1998] ∈ {1998} + [1999] ∈ {1999} + [2000] ∈ {2000} + [2001] ∈ {2001} + [2002] ∈ {2002} + [2003] ∈ {2003} + [2004] ∈ {2004} + [2005] ∈ {2005} + [2006] ∈ {2006} + [2007] ∈ {2007} + [2008] ∈ {2008} + [2009] ∈ {2009} + [2010] ∈ {2010} + [2011] ∈ {2011} + [2012] ∈ {2012} + [2013] ∈ {2013} + [2014] ∈ {2014} + [2015] ∈ {2015} + [2016] ∈ {2016} + [2017] ∈ {2017} + [2018] ∈ {2018} + [2019] ∈ {2019} + [2020] ∈ {2020} + [2021] ∈ {2021} + [2022] ∈ {2022} + [2023] ∈ {2023} + [2024] ∈ {2024} + [2025] ∈ {2025} + [2026] ∈ {2026} + [2027] ∈ {2027} + [2028] ∈ {2028} + [2029] ∈ {2029} + [2030] ∈ {2030} + [2031] ∈ {2031} + [2032] ∈ {2032} + [2033] ∈ {2033} + [2034] ∈ {2034} + [2035] ∈ {2035} + [2036] ∈ {2036} + [2037] ∈ {2037} + [2038] ∈ {2038} + [2039] ∈ {2039} + [2040] ∈ {2040} + [2041] ∈ {2041} + [2042] ∈ {2042} + [2043] ∈ {2043} + [2044] ∈ {2044} + [2045] ∈ {2045} + [2046] ∈ {2046} + [2047] ∈ {2047} + [2048] ∈ {2048} + [2049] ∈ {2049} + [2050] ∈ {2050} + [2051] ∈ {2051} + [2052] ∈ {2052} + [2053] ∈ {2053} + [2054] ∈ {2054} + [2055] ∈ {2055} + [2056] ∈ {2056} + [2057] ∈ {2057} + [2058] ∈ {2058} + [2059] ∈ {2059} + [2060] ∈ {2060} + [2061] ∈ {2061} + [2062] ∈ {2062} + [2063] ∈ {2063} + [2064] ∈ {2064} + [2065] ∈ {2065} + [2066] ∈ {2066} + [2067] ∈ {2067} + [2068] ∈ {2068} + [2069] ∈ {2069} + [2070] ∈ {2070} + [2071] ∈ {2071} + [2072] ∈ {2072} + [2073] ∈ {2073} + [2074] ∈ {2074} + [2075] ∈ {2075} + [2076] ∈ {2076} + [2077] ∈ {2077} + [2078] ∈ {2078} + [2079] ∈ {2079} + [2080] ∈ {2080} + [2081] ∈ {2081} + [2082] ∈ {2082} + [2083] ∈ {2083} + [2084] ∈ {2084} + [2085] ∈ {2085} + [2086] ∈ {2086} + [2087] ∈ {2087} + [2088] ∈ {2088} + [2089] ∈ {2089} + [2090] ∈ {2090} + [2091] ∈ {2091} + [2092] ∈ {2092} + [2093] ∈ {2093} + [2094] ∈ {2094} + [2095] ∈ {2095} + [2096] ∈ {2096} + [2097] ∈ {2097} + [2098] ∈ {2098} + [2099] ∈ {2099} + [2100] ∈ {2100} + [2101] ∈ {2101} + [2102] ∈ {2102} + [2103] ∈ {2103} + [2104] ∈ {2104} + [2105] ∈ {2105} + [2106] ∈ {2106} + [2107] ∈ {2107} + [2108] ∈ {2108} + [2109] ∈ {2109} + [2110] ∈ {2110} + [2111] ∈ {2111} + [2112] ∈ {2112} + [2113] ∈ {2113} + [2114] ∈ {2114} + [2115] ∈ {2115} + [2116] ∈ {2116} + [2117] ∈ {2117} + [2118] ∈ {2118} + [2119] ∈ {2119} + [2120] ∈ {2120} + [2121] ∈ {2121} + [2122] ∈ {2122} + [2123] ∈ {2123} + [2124] ∈ {2124} + [2125] ∈ {2125} + [2126] ∈ {2126} + [2127] ∈ {2127} + [2128] ∈ {2128} + [2129] ∈ {2129} + [2130] ∈ {2130} + [2131] ∈ {2131} + [2132] ∈ {2132} + [2133] ∈ {2133} + [2134] ∈ {2134} + [2135] ∈ {2135} + [2136] ∈ {2136} + [2137] ∈ {2137} + [2138] ∈ {2138} + [2139] ∈ {2139} + [2140] ∈ {2140} + [2141] ∈ {2141} + [2142] ∈ {2142} + [2143] ∈ {2143} + [2144] ∈ {2144} + [2145] ∈ {2145} + [2146] ∈ {2146} + [2147] ∈ {2147} + [2148] ∈ {2148} + [2149] ∈ {2149} + [2150] ∈ {2150} + [2151] ∈ {2151} + [2152] ∈ {2152} + [2153] ∈ {2153} + [2154] ∈ {2154} + [2155] ∈ {2155} + [2156] ∈ {2156} + [2157] ∈ {2157} + [2158] ∈ {2158} + [2159] ∈ {2159} + [2160] ∈ {2160} + [2161] ∈ {2161} + [2162] ∈ {2162} + [2163] ∈ {2163} + [2164] ∈ {2164} + [2165] ∈ {2165} + [2166] ∈ {2166} + [2167] ∈ {2167} + [2168] ∈ {2168} + [2169] ∈ {2169} + [2170] ∈ {2170} + [2171] ∈ {2171} + [2172] ∈ {2172} + [2173] ∈ {2173} + [2174] ∈ {2174} + [2175] ∈ {2175} + [2176] ∈ {2176} + [2177] ∈ {2177} + [2178] ∈ {2178} + [2179] ∈ {2179} + [2180] ∈ {2180} + [2181] ∈ {2181} + [2182] ∈ {2182} + [2183] ∈ {2183} + [2184] ∈ {2184} + [2185] ∈ {2185} + [2186] ∈ {2186} + [2187] ∈ {2187} + [2188] ∈ {2188} + [2189] ∈ {2189} + [2190] ∈ {2190} + [2191] ∈ {2191} + [2192] ∈ {2192} + [2193] ∈ {2193} + [2194] ∈ {2194} + [2195] ∈ {2195} + [2196] ∈ {2196} + [2197] ∈ {2197} + [2198] ∈ {2198} + [2199] ∈ {2199} + [2200] ∈ {2200} + [2201] ∈ {2201} + [2202] ∈ {2202} + [2203] ∈ {2203} + [2204] ∈ {2204} + [2205] ∈ {2205} + [2206] ∈ {2206} + [2207] ∈ {2207} + [2208] ∈ {2208} + [2209] ∈ {2209} + [2210] ∈ {2210} + [2211] ∈ {2211} + [2212] ∈ {2212} + [2213] ∈ {2213} + [2214] ∈ {2214} + [2215] ∈ {2215} + [2216] ∈ {2216} + [2217] ∈ {2217} + [2218] ∈ {2218} + [2219] ∈ {2219} + [2220] ∈ {2220} + [2221] ∈ {2221} + [2222] ∈ {2222} + [2223] ∈ {2223} + [2224] ∈ {2224} + [2225] ∈ {2225} + [2226] ∈ {2226} + [2227] ∈ {2227} + [2228] ∈ {2228} + [2229] ∈ {2229} + [2230] ∈ {2230} + [2231] ∈ {2231} + [2232] ∈ {2232} + [2233] ∈ {2233} + [2234] ∈ {2234} + [2235] ∈ {2235} + [2236] ∈ {2236} + [2237] ∈ {2237} + [2238] ∈ {2238} + [2239] ∈ {2239} + [2240] ∈ {2240} + [2241] ∈ {2241} + [2242] ∈ {2242} + [2243] ∈ {2243} + [2244] ∈ {2244} + [2245] ∈ {2245} + [2246] ∈ {2246} + [2247] ∈ {2247} + [2248] ∈ {2248} + [2249] ∈ {2249} + [2250] ∈ {2250} + [2251] ∈ {2251} + [2252] ∈ {2252} + [2253] ∈ {2253} + [2254] ∈ {2254} + [2255] ∈ {2255} + [2256] ∈ {2256} + [2257] ∈ {2257} + [2258] ∈ {2258} + [2259] ∈ {2259} + [2260] ∈ {2260} + [2261] ∈ {2261} + [2262] ∈ {2262} + [2263] ∈ {2263} + [2264] ∈ {2264} + [2265] ∈ {2265} + [2266] ∈ {2266} + [2267] ∈ {2267} + [2268] ∈ {2268} + [2269] ∈ {2269} + [2270] ∈ {2270} + [2271] ∈ {2271} + [2272] ∈ {2272} + [2273] ∈ {2273} + [2274] ∈ {2274} + [2275] ∈ {2275} + [2276] ∈ {2276} + [2277] ∈ {2277} + [2278] ∈ {2278} + [2279] ∈ {2279} + [2280] ∈ {2280} + [2281] ∈ {2281} + [2282] ∈ {2282} + [2283] ∈ {2283} + [2284] ∈ {2284} + [2285] ∈ {2285} + [2286] ∈ {2286} + [2287] ∈ {2287} + [2288] ∈ {2288} + [2289] ∈ {2289} + [2290] ∈ {2290} + [2291] ∈ {2291} + [2292] ∈ {2292} + [2293] ∈ {2293} + [2294] ∈ {2294} + [2295] ∈ {2295} + [2296] ∈ {2296} + [2297] ∈ {2297} + [2298] ∈ {2298} + [2299] ∈ {2299} + [2300] ∈ {2300} + [2301] ∈ {2301} + [2302] ∈ {2302} + [2303] ∈ {2303} + [2304] ∈ {2304} + [2305] ∈ {2305} + [2306] ∈ {2306} + [2307] ∈ {2307} + [2308] ∈ {2308} + [2309] ∈ {2309} + [2310] ∈ {2310} + [2311] ∈ {2311} + [2312] ∈ {2312} + [2313] ∈ {2313} + [2314] ∈ {2314} + [2315] ∈ {2315} + [2316] ∈ {2316} + [2317] ∈ {2317} + [2318] ∈ {2318} + [2319] ∈ {2319} + [2320] ∈ {2320} + [2321] ∈ {2321} + [2322] ∈ {2322} + [2323] ∈ {2323} + [2324] ∈ {2324} + [2325] ∈ {2325} + [2326] ∈ {2326} + [2327] ∈ {2327} + [2328] ∈ {2328} + [2329] ∈ {2329} + [2330] ∈ {2330} + [2331] ∈ {2331} + [2332] ∈ {2332} + [2333] ∈ {2333} + [2334] ∈ {2334} + [2335] ∈ {2335} + [2336] ∈ {2336} + [2337] ∈ {2337} + [2338] ∈ {2338} + [2339] ∈ {2339} + [2340] ∈ {2340} + [2341] ∈ {2341} + [2342] ∈ {2342} + [2343] ∈ {2343} + [2344] ∈ {2344} + [2345] ∈ {2345} + [2346] ∈ {2346} + [2347] ∈ {2347} + [2348] ∈ {2348} + [2349] ∈ {2349} + [2350] ∈ {2350} + [2351] ∈ {2351} + [2352] ∈ {2352} + [2353] ∈ {2353} + [2354] ∈ {2354} + [2355] ∈ {2355} + [2356] ∈ {2356} + [2357] ∈ {2357} + [2358] ∈ {2358} + [2359] ∈ {2359} + [2360] ∈ {2360} + [2361] ∈ {2361} + [2362] ∈ {2362} + [2363] ∈ {2363} + [2364] ∈ {2364} + [2365] ∈ {2365} + [2366] ∈ {2366} + [2367] ∈ {2367} + [2368] ∈ {2368} + [2369] ∈ {2369} + [2370] ∈ {2370} + [2371] ∈ {2371} + [2372] ∈ {2372} + [2373] ∈ {2373} + [2374] ∈ {2374} + [2375] ∈ {2375} + [2376] ∈ {2376} + [2377] ∈ {2377} + [2378] ∈ {2378} + [2379] ∈ {2379} + [2380] ∈ {2380} + [2381] ∈ {2381} + [2382] ∈ {2382} + [2383] ∈ {2383} + [2384] ∈ {2384} + [2385] ∈ {2385} + [2386] ∈ {2386} + [2387] ∈ {2387} + [2388] ∈ {2388} + [2389] ∈ {2389} + [2390] ∈ {2390} + [2391] ∈ {2391} + [2392] ∈ {2392} + [2393] ∈ {2393} + [2394] ∈ {2394} + [2395] ∈ {2395} + [2396] ∈ {2396} + [2397] ∈ {2397} + [2398] ∈ {2398} + [2399] ∈ {2399} + [2400] ∈ {2400} + [2401] ∈ {2401} + [2402] ∈ {2402} + [2403] ∈ {2403} + [2404] ∈ {2404} + [2405] ∈ {2405} + [2406] ∈ {2406} + [2407] ∈ {2407} + [2408] ∈ {2408} + [2409] ∈ {2409} + [2410] ∈ {2410} + [2411] ∈ {2411} + [2412] ∈ {2412} + [2413] ∈ {2413} + [2414] ∈ {2414} + [2415] ∈ {2415} + [2416] ∈ {2416} + [2417] ∈ {2417} + [2418] ∈ {2418} + [2419] ∈ {2419} + [2420] ∈ {2420} + [2421] ∈ {2421} + [2422] ∈ {2422} + [2423] ∈ {2423} + [2424] ∈ {2424} + [2425] ∈ {2425} + [2426] ∈ {2426} + [2427] ∈ {2427} + [2428] ∈ {2428} + [2429] ∈ {2429} + [2430] ∈ {2430} + [2431] ∈ {2431} + [2432] ∈ {2432} + [2433] ∈ {2433} + [2434] ∈ {2434} + [2435] ∈ {2435} + [2436] ∈ {2436} + [2437] ∈ {2437} + [2438] ∈ {2438} + [2439] ∈ {2439} + [2440] ∈ {2440} + [2441] ∈ {2441} + [2442] ∈ {2442} + [2443] ∈ {2443} + [2444] ∈ {2444} + [2445] ∈ {2445} + [2446] ∈ {2446} + [2447] ∈ {2447} + [2448] ∈ {2448} + [2449] ∈ {2449} + [2450] ∈ {2450} + [2451] ∈ {2451} + [2452] ∈ {2452} + [2453] ∈ {2453} + [2454] ∈ {2454} + [2455] ∈ {2455} + [2456] ∈ {2456} + [2457] ∈ {2457} + [2458] ∈ {2458} + [2459] ∈ {2459} + [2460] ∈ {2460} + [2461] ∈ {2461} + [2462] ∈ {2462} + [2463] ∈ {2463} + [2464] ∈ {2464} + [2465] ∈ {2465} + [2466] ∈ {2466} + [2467] ∈ {2467} + [2468] ∈ {2468} + [2469] ∈ {2469} + [2470] ∈ {2470} + [2471] ∈ {2471} + [2472] ∈ {2472} + [2473] ∈ {2473} + [2474] ∈ {2474} + [2475] ∈ {2475} + [2476] ∈ {2476} + [2477] ∈ {2477} + [2478] ∈ {2478} + [2479] ∈ {2479} + [2480] ∈ {2480} + [2481] ∈ {2481} + [2482] ∈ {2482} + [2483] ∈ {2483} + [2484] ∈ {2484} + [2485] ∈ {2485} + [2486] ∈ {2486} + [2487] ∈ {2487} + [2488] ∈ {2488} + [2489] ∈ {2489} + [2490] ∈ {2490} + [2491] ∈ {2491} + [2492] ∈ {2492} + [2493] ∈ {2493} + [2494] ∈ {2494} + [2495] ∈ {2495} + [2496] ∈ {2496} + [2497] ∈ {2497} + [2498] ∈ {2498} + [2499] ∈ {2499} + [2500] ∈ {2500} + [2501] ∈ {2501} + [2502] ∈ {2502} + [2503] ∈ {2503} + [2504] ∈ {2504} + [2505] ∈ {2505} + [2506] ∈ {2506} + [2507] ∈ {2507} + [2508] ∈ {2508} + [2509] ∈ {2509} + [2510] ∈ {2510} + [2511] ∈ {2511} + [2512] ∈ {2512} + [2513] ∈ {2513} + [2514] ∈ {2514} + [2515] ∈ {2515} + [2516] ∈ {2516} + [2517] ∈ {2517} + [2518] ∈ {2518} + [2519] ∈ {2519} + [2520] ∈ {2520} + [2521] ∈ {2521} + [2522] ∈ {2522} + [2523] ∈ {2523} + [2524] ∈ {2524} + [2525] ∈ {2525} + [2526] ∈ {2526} + [2527] ∈ {2527} + [2528] ∈ {2528} + [2529] ∈ {2529} + [2530] ∈ {2530} + [2531] ∈ {2531} + [2532] ∈ {2532} + [2533] ∈ {2533} + [2534] ∈ {2534} + [2535] ∈ {2535} + [2536] ∈ {2536} + [2537] ∈ {2537} + [2538] ∈ {2538} + [2539] ∈ {2539} + [2540] ∈ {2540} + [2541] ∈ {2541} + [2542] ∈ {2542} + [2543] ∈ {2543} + [2544] ∈ {2544} + [2545] ∈ {2545} + [2546] ∈ {2546} + [2547] ∈ {2547} + [2548] ∈ {2548} + [2549] ∈ {2549} + [2550] ∈ {2550} + [2551] ∈ {2551} + [2552] ∈ {2552} + [2553] ∈ {2553} + [2554] ∈ {2554} + [2555] ∈ {2555} + [2556] ∈ {2556} + [2557] ∈ {2557} + [2558] ∈ {2558} + [2559] ∈ {2559} + [2560] ∈ {2560} + [2561] ∈ {2561} + [2562] ∈ {2562} + [2563] ∈ {2563} + [2564] ∈ {2564} + [2565] ∈ {2565} + [2566] ∈ {2566} + [2567] ∈ {2567} + [2568] ∈ {2568} + [2569] ∈ {2569} + [2570] ∈ {2570} + [2571] ∈ {2571} + [2572] ∈ {2572} + [2573] ∈ {2573} + [2574] ∈ {2574} + [2575] ∈ {2575} + [2576] ∈ {2576} + [2577] ∈ {2577} + [2578] ∈ {2578} + [2579] ∈ {2579} + [2580] ∈ {2580} + [2581] ∈ {2581} + [2582] ∈ {2582} + [2583] ∈ {2583} + [2584] ∈ {2584} + [2585] ∈ {2585} + [2586] ∈ {2586} + [2587] ∈ {2587} + [2588] ∈ {2588} + [2589] ∈ {2589} + [2590] ∈ {2590} + [2591] ∈ {2591} + [2592] ∈ {2592} + [2593] ∈ {2593} + [2594] ∈ {2594} + [2595] ∈ {2595} + [2596] ∈ {2596} + [2597] ∈ {2597} + [2598] ∈ {2598} + [2599] ∈ {2599} + [2600] ∈ {2600} + [2601] ∈ {2601} + [2602] ∈ {2602} + [2603] ∈ {2603} + [2604] ∈ {2604} + [2605] ∈ {2605} + [2606] ∈ {2606} + [2607] ∈ {2607} + [2608] ∈ {2608} + [2609] ∈ {2609} + [2610] ∈ {2610} + [2611] ∈ {2611} + [2612] ∈ {2612} + [2613] ∈ {2613} + [2614] ∈ {2614} + [2615] ∈ {2615} + [2616] ∈ {2616} + [2617] ∈ {2617} + [2618] ∈ {2618} + [2619] ∈ {2619} + [2620] ∈ {2620} + [2621] ∈ {2621} + [2622] ∈ {2622} + [2623] ∈ {2623} + [2624] ∈ {2624} + [2625] ∈ {2625} + [2626] ∈ {2626} + [2627] ∈ {2627} + [2628] ∈ {2628} + [2629] ∈ {2629} + [2630] ∈ {2630} + [2631] ∈ {2631} + [2632] ∈ {2632} + [2633] ∈ {2633} + [2634] ∈ {2634} + [2635] ∈ {2635} + [2636] ∈ {2636} + [2637] ∈ {2637} + [2638] ∈ {2638} + [2639] ∈ {2639} + [2640] ∈ {2640} + [2641] ∈ {2641} + [2642] ∈ {2642} + [2643] ∈ {2643} + [2644] ∈ {2644} + [2645] ∈ {2645} + [2646] ∈ {2646} + [2647] ∈ {2647} + [2648] ∈ {2648} + [2649] ∈ {2649} + [2650] ∈ {2650} + [2651] ∈ {2651} + [2652] ∈ {2652} + [2653] ∈ {2653} + [2654] ∈ {2654} + [2655] ∈ {2655} + [2656] ∈ {2656} + [2657] ∈ {2657} + [2658] ∈ {2658} + [2659] ∈ {2659} + [2660] ∈ {2660} + [2661] ∈ {2661} + [2662] ∈ {2662} + [2663] ∈ {2663} + [2664] ∈ {2664} + [2665] ∈ {2665} + [2666] ∈ {2666} + [2667] ∈ {2667} + [2668] ∈ {2668} + [2669] ∈ {2669} + [2670] ∈ {2670} + [2671] ∈ {2671} + [2672] ∈ {2672} + [2673] ∈ {2673} + [2674] ∈ {2674} + [2675] ∈ {2675} + [2676] ∈ {2676} + [2677] ∈ {2677} + [2678] ∈ {2678} + [2679] ∈ {2679} + [2680] ∈ {2680} + [2681] ∈ {2681} + [2682] ∈ {2682} + [2683] ∈ {2683} + [2684] ∈ {2684} + [2685] ∈ {2685} + [2686] ∈ {2686} + [2687] ∈ {2687} + [2688] ∈ {2688} + [2689] ∈ {2689} + [2690] ∈ {2690} + [2691] ∈ {2691} + [2692] ∈ {2692} + [2693] ∈ {2693} + [2694] ∈ {2694} + [2695] ∈ {2695} + [2696] ∈ {2696} + [2697] ∈ {2697} + [2698] ∈ {2698} + [2699] ∈ {2699} + [2700] ∈ {2700} + [2701] ∈ {2701} + [2702] ∈ {2702} + [2703] ∈ {2703} + [2704] ∈ {2704} + [2705] ∈ {2705} + [2706] ∈ {2706} + [2707] ∈ {2707} + [2708] ∈ {2708} + [2709] ∈ {2709} + [2710] ∈ {2710} + [2711] ∈ {2711} + [2712] ∈ {2712} + [2713] ∈ {2713} + [2714] ∈ {2714} + [2715] ∈ {2715} + [2716] ∈ {2716} + [2717] ∈ {2717} + [2718] ∈ {2718} + [2719] ∈ {2719} + [2720] ∈ {2720} + [2721] ∈ {2721} + [2722] ∈ {2722} + [2723] ∈ {2723} + [2724] ∈ {2724} + [2725] ∈ {2725} + [2726] ∈ {2726} + [2727] ∈ {2727} + [2728] ∈ {2728} + [2729] ∈ {2729} + [2730] ∈ {2730} + [2731] ∈ {2731} + [2732] ∈ {2732} + [2733] ∈ {2733} + [2734] ∈ {2734} + [2735] ∈ {2735} + [2736] ∈ {2736} + [2737] ∈ {2737} + [2738] ∈ {2738} + [2739] ∈ {2739} + [2740] ∈ {2740} + [2741] ∈ {2741} + [2742] ∈ {2742} + [2743] ∈ {2743} + [2744] ∈ {2744} + [2745] ∈ {2745} + [2746] ∈ {2746} + [2747] ∈ {2747} + [2748] ∈ {2748} + [2749] ∈ {2749} + [2750] ∈ {2750} + [2751] ∈ {2751} + [2752] ∈ {2752} + [2753] ∈ {2753} + [2754] ∈ {2754} + [2755] ∈ {2755} + [2756] ∈ {2756} + [2757] ∈ {2757} + [2758] ∈ {2758} + [2759] ∈ {2759} + [2760] ∈ {2760} + [2761] ∈ {2761} + [2762] ∈ {2762} + [2763] ∈ {2763} + [2764] ∈ {2764} + [2765] ∈ {2765} + [2766] ∈ {2766} + [2767] ∈ {2767} + [2768] ∈ {2768} + [2769] ∈ {2769} + [2770] ∈ {2770} + [2771] ∈ {2771} + [2772] ∈ {2772} + [2773] ∈ {2773} + [2774] ∈ {2774} + [2775] ∈ {2775} + [2776] ∈ {2776} + [2777] ∈ {2777} + [2778] ∈ {2778} + [2779] ∈ {2779} + [2780] ∈ {2780} + [2781] ∈ {2781} + [2782] ∈ {2782} + [2783] ∈ {2783} + [2784] ∈ {2784} + [2785] ∈ {2785} + [2786] ∈ {2786} + [2787] ∈ {2787} + [2788] ∈ {2788} + [2789] ∈ {2789} + [2790] ∈ {2790} + [2791] ∈ {2791} + [2792] ∈ {2792} + [2793] ∈ {2793} + [2794] ∈ {2794} + [2795] ∈ {2795} + [2796] ∈ {2796} + [2797] ∈ {2797} + [2798] ∈ {2798} + [2799] ∈ {2799} + [2800] ∈ {2800} + [2801] ∈ {2801} + [2802] ∈ {2802} + [2803] ∈ {2803} + [2804] ∈ {2804} + [2805] ∈ {2805} + [2806] ∈ {2806} + [2807] ∈ {2807} + [2808] ∈ {2808} + [2809] ∈ {2809} + [2810] ∈ {2810} + [2811] ∈ {2811} + [2812] ∈ {2812} + [2813] ∈ {2813} + [2814] ∈ {2814} + [2815] ∈ {2815} + [2816] ∈ {2816} + [2817] ∈ {2817} + [2818] ∈ {2818} + [2819] ∈ {2819} + [2820] ∈ {2820} + [2821] ∈ {2821} + [2822] ∈ {2822} + [2823] ∈ {2823} + [2824] ∈ {2824} + [2825] ∈ {2825} + [2826] ∈ {2826} + [2827] ∈ {2827} + [2828] ∈ {2828} + [2829] ∈ {2829} + [2830] ∈ {2830} + [2831] ∈ {2831} + [2832] ∈ {2832} + [2833] ∈ {2833} + [2834] ∈ {2834} + [2835] ∈ {2835} + [2836] ∈ {2836} + [2837] ∈ {2837} + [2838] ∈ {2838} + [2839] ∈ {2839} + [2840] ∈ {2840} + [2841] ∈ {2841} + [2842] ∈ {2842} + [2843] ∈ {2843} + [2844] ∈ {2844} + [2845] ∈ {2845} + [2846] ∈ {2846} + [2847] ∈ {2847} + [2848] ∈ {2848} + [2849] ∈ {2849} + [2850] ∈ {2850} + [2851] ∈ {2851} + [2852] ∈ {2852} + [2853] ∈ {2853} + [2854] ∈ {2854} + [2855] ∈ {2855} + [2856] ∈ {2856} + [2857] ∈ {2857} + [2858] ∈ {2858} + [2859] ∈ {2859} + [2860] ∈ {2860} + [2861] ∈ {2861} + [2862] ∈ {2862} + [2863] ∈ {2863} + [2864] ∈ {2864} + [2865] ∈ {2865} + [2866] ∈ {2866} + [2867] ∈ {2867} + [2868] ∈ {2868} + [2869] ∈ {2869} + [2870] ∈ {2870} + [2871] ∈ {2871} + [2872] ∈ {2872} + [2873] ∈ {2873} + [2874] ∈ {2874} + [2875] ∈ {2875} + [2876] ∈ {2876} + [2877] ∈ {2877} + [2878] ∈ {2878} + [2879] ∈ {2879} + [2880] ∈ {2880} + [2881] ∈ {2881} + [2882] ∈ {2882} + [2883] ∈ {2883} + [2884] ∈ {2884} + [2885] ∈ {2885} + [2886] ∈ {2886} + [2887] ∈ {2887} + [2888] ∈ {2888} + [2889] ∈ {2889} + [2890] ∈ {2890} + [2891] ∈ {2891} + [2892] ∈ {2892} + [2893] ∈ {2893} + [2894] ∈ {2894} + [2895] ∈ {2895} + [2896] ∈ {2896} + [2897] ∈ {2897} + [2898] ∈ {2898} + [2899] ∈ {2899} + [2900] ∈ {2900} + [2901] ∈ {2901} + [2902] ∈ {2902} + [2903] ∈ {2903} + [2904] ∈ {2904} + [2905] ∈ {2905} + [2906] ∈ {2906} + [2907] ∈ {2907} + [2908] ∈ {2908} + [2909] ∈ {2909} + [2910] ∈ {2910} + [2911] ∈ {2911} + [2912] ∈ {2912} + [2913] ∈ {2913} + [2914] ∈ {2914} + [2915] ∈ {2915} + [2916] ∈ {2916} + [2917] ∈ {2917} + [2918] ∈ {2918} + [2919] ∈ {2919} + [2920] ∈ {2920} + [2921] ∈ {2921} + [2922] ∈ {2922} + [2923] ∈ {2923} + [2924] ∈ {2924} + [2925] ∈ {2925} + [2926] ∈ {2926} + [2927] ∈ {2927} + [2928] ∈ {2928} + [2929] ∈ {2929} + [2930] ∈ {2930} + [2931] ∈ {2931} + [2932] ∈ {2932} + [2933] ∈ {2933} + [2934] ∈ {2934} + [2935] ∈ {2935} + [2936] ∈ {2936} + [2937] ∈ {2937} + [2938] ∈ {2938} + [2939] ∈ {2939} + [2940] ∈ {2940} + [2941] ∈ {2941} + [2942] ∈ {2942} + [2943] ∈ {2943} + [2944] ∈ {2944} + [2945] ∈ {2945} + [2946] ∈ {2946} + [2947] ∈ {2947} + [2948] ∈ {2948} + [2949] ∈ {2949} + [2950] ∈ {2950} + [2951] ∈ {2951} + [2952] ∈ {2952} + [2953] ∈ {2953} + [2954] ∈ {2954} + [2955] ∈ {2955} + [2956] ∈ {2956} + [2957] ∈ {2957} + [2958] ∈ {2958} + [2959] ∈ {2959} + [2960] ∈ {2960} + [2961] ∈ {2961} + [2962] ∈ {2962} + [2963] ∈ {2963} + [2964] ∈ {2964} + [2965] ∈ {2965} + [2966] ∈ {2966} + [2967] ∈ {2967} + [2968] ∈ {2968} + [2969] ∈ {2969} + [2970] ∈ {2970} + [2971] ∈ {2971} + [2972] ∈ {2972} + [2973] ∈ {2973} + [2974] ∈ {2974} + [2975] ∈ {2975} + [2976] ∈ {2976} + [2977] ∈ {2977} + [2978] ∈ {2978} + [2979] ∈ {2979} + [2980] ∈ {2980} + [2981] ∈ {2981} + [2982] ∈ {2982} + [2983] ∈ {2983} + [2984] ∈ {2984} + [2985] ∈ {2985} + [2986] ∈ {2986} + [2987] ∈ {2987} + [2988] ∈ {2988} + [2989] ∈ {2989} + [2990] ∈ {2990} + [2991] ∈ {2991} + [2992] ∈ {2992} + [2993] ∈ {2993} + [2994] ∈ {2994} + [2995] ∈ {2995} + [2996] ∈ {2996} + [2997] ∈ {2997} + [2998] ∈ {2998} + [2999] ∈ {2999} +[value:final-states] Values at end of function main: +Cannot filter: dumping raw memory (including unchanged variables) + t[0..1] ∈ {0} + [2] ∈ {2} + [3] ∈ {3} + [4] ∈ {4} + [5] ∈ {5} + [6] ∈ {6} + [7] ∈ {7} + [8] ∈ {8} + [9] ∈ {9} + [10] ∈ {10} + [11] ∈ {11} + [12] ∈ {12} + [13] ∈ {13} + [14] ∈ {14} + [15] ∈ {15} + [16] ∈ {16} + [17] ∈ {17} + [18] ∈ {18} + [19] ∈ {19} + [20] ∈ {20} + [21] ∈ {21} + [22] ∈ {22} + [23] ∈ {23} + [24] ∈ {24} + [25] ∈ {25} + [26] ∈ {26} + [27] ∈ {27} + [28] ∈ {28} + [29] ∈ {29} + [30] ∈ {30} + [31] ∈ {31} + [32] ∈ {32} + [33] ∈ {33} + [34] ∈ {34} + [35] ∈ {35} + [36] ∈ {36} + [37] ∈ {37} + [38] ∈ {38} + [39] ∈ {39} + [40] ∈ {40} + [41] ∈ {41} + [42] ∈ {42} + [43] ∈ {43} + [44] ∈ {44} + [45] ∈ {45} + [46] ∈ {46} + [47] ∈ {47} + [48] ∈ {48} + [49] ∈ {49} + [50] ∈ {50} + [51] ∈ {51} + [52] ∈ {52} + [53] ∈ {53} + [54] ∈ {54} + [55] ∈ {55} + [56] ∈ {56} + [57] ∈ {57} + [58] ∈ {58} + [59] ∈ {59} + [60] ∈ {60} + [61] ∈ {61} + [62] ∈ {62} + [63] ∈ {63} + [64] ∈ {64} + [65] ∈ {65} + [66] ∈ {66} + [67] ∈ {67} + [68] ∈ {68} + [69] ∈ {69} + [70] ∈ {70} + [71] ∈ {71} + [72] ∈ {72} + [73] ∈ {73} + [74] ∈ {74} + [75] ∈ {75} + [76] ∈ {76} + [77] ∈ {77} + [78] ∈ {78} + [79] ∈ {79} + [80] ∈ {80} + [81] ∈ {81} + [82] ∈ {82} + [83] ∈ {83} + [84] ∈ {84} + [85] ∈ {85} + [86] ∈ {86} + [87] ∈ {87} + [88] ∈ {88} + [89] ∈ {89} + [90] ∈ {90} + [91] ∈ {91} + [92] ∈ {92} + [93] ∈ {93} + [94] ∈ {94} + [95] ∈ {95} + [96] ∈ {96} + [97] ∈ {97} + [98] ∈ {98} + [99] ∈ {99} + [100] ∈ {100} + [101] ∈ {101} + [102] ∈ {102} + [103] ∈ {103} + [104] ∈ {104} + [105] ∈ {105} + [106] ∈ {106} + [107] ∈ {107} + [108] ∈ {108} + [109] ∈ {109} + [110] ∈ {110} + [111] ∈ {111} + [112] ∈ {112} + [113] ∈ {113} + [114] ∈ {114} + [115] ∈ {115} + [116] ∈ {116} + [117] ∈ {117} + [118] ∈ {118} + [119] ∈ {119} + [120] ∈ {120} + [121] ∈ {121} + [122] ∈ {122} + [123] ∈ {123} + [124] ∈ {124} + [125] ∈ {125} + [126] ∈ {126} + [127] ∈ {127} + [128] ∈ {128} + [129] ∈ {129} + [130] ∈ {130} + [131] ∈ {131} + [132] ∈ {132} + [133] ∈ {133} + [134] ∈ {134} + [135] ∈ {135} + [136] ∈ {136} + [137] ∈ {137} + [138] ∈ {138} + [139] ∈ {139} + [140] ∈ {140} + [141] ∈ {141} + [142] ∈ {142} + [143] ∈ {143} + [144] ∈ {144} + [145] ∈ {145} + [146] ∈ {146} + [147] ∈ {147} + [148] ∈ {148} + [149] ∈ {149} + [150] ∈ {150} + [151] ∈ {151} + [152] ∈ {152} + [153] ∈ {153} + [154] ∈ {154} + [155] ∈ {155} + [156] ∈ {156} + [157] ∈ {157} + [158] ∈ {158} + [159] ∈ {159} + [160] ∈ {160} + [161] ∈ {161} + [162] ∈ {162} + [163] ∈ {163} + [164] ∈ {164} + [165] ∈ {165} + [166] ∈ {166} + [167] ∈ {167} + [168] ∈ {168} + [169] ∈ {169} + [170] ∈ {170} + [171] ∈ {171} + [172] ∈ {172} + [173] ∈ {173} + [174] ∈ {174} + [175] ∈ {175} + [176] ∈ {176} + [177] ∈ {177} + [178] ∈ {178} + [179] ∈ {179} + [180] ∈ {180} + [181] ∈ {181} + [182] ∈ {182} + [183] ∈ {183} + [184] ∈ {184} + [185] ∈ {185} + [186] ∈ {186} + [187] ∈ {187} + [188] ∈ {188} + [189] ∈ {189} + [190] ∈ {190} + [191] ∈ {191} + [192] ∈ {192} + [193] ∈ {193} + [194] ∈ {194} + [195] ∈ {195} + [196] ∈ {196} + [197] ∈ {197} + [198] ∈ {198} + [199] ∈ {199} + [200] ∈ {200} + [201] ∈ {201} + [202] ∈ {202} + [203] ∈ {203} + [204] ∈ {204} + [205] ∈ {205} + [206] ∈ {206} + [207] ∈ {207} + [208] ∈ {208} + [209] ∈ {209} + [210] ∈ {210} + [211] ∈ {211} + [212] ∈ {212} + [213] ∈ {213} + [214] ∈ {214} + [215] ∈ {215} + [216] ∈ {216} + [217] ∈ {217} + [218] ∈ {218} + [219] ∈ {219} + [220] ∈ {220} + [221] ∈ {221} + [222] ∈ {222} + [223] ∈ {223} + [224] ∈ {224} + [225] ∈ {225} + [226] ∈ {226} + [227] ∈ {227} + [228] ∈ {228} + [229] ∈ {229} + [230] ∈ {230} + [231] ∈ {231} + [232] ∈ {232} + [233] ∈ {233} + [234] ∈ {234} + [235] ∈ {235} + [236] ∈ {236} + [237] ∈ {237} + [238] ∈ {238} + [239] ∈ {239} + [240] ∈ {240} + [241] ∈ {241} + [242] ∈ {242} + [243] ∈ {243} + [244] ∈ {244} + [245] ∈ {245} + [246] ∈ {246} + [247] ∈ {247} + [248] ∈ {248} + [249] ∈ {249} + [250] ∈ {250} + [251] ∈ {251} + [252] ∈ {252} + [253] ∈ {253} + [254] ∈ {254} + [255] ∈ {255} + [256] ∈ {256} + [257] ∈ {257} + [258] ∈ {258} + [259] ∈ {259} + [260] ∈ {260} + [261] ∈ {261} + [262] ∈ {262} + [263] ∈ {263} + [264] ∈ {264} + [265] ∈ {265} + [266] ∈ {266} + [267] ∈ {267} + [268] ∈ {268} + [269] ∈ {269} + [270] ∈ {270} + [271] ∈ {271} + [272] ∈ {272} + [273] ∈ {273} + [274] ∈ {274} + [275] ∈ {275} + [276] ∈ {276} + [277] ∈ {277} + [278] ∈ {278} + [279] ∈ {279} + [280] ∈ {280} + [281] ∈ {281} + [282] ∈ {282} + [283] ∈ {283} + [284] ∈ {284} + [285] ∈ {285} + [286] ∈ {286} + [287] ∈ {287} + [288] ∈ {288} + [289] ∈ {289} + [290] ∈ {290} + [291] ∈ {291} + [292] ∈ {292} + [293] ∈ {293} + [294] ∈ {294} + [295] ∈ {295} + [296] ∈ {296} + [297] ∈ {297} + [298] ∈ {298} + [299] ∈ {299} + [300] ∈ {300} + [301] ∈ {301} + [302] ∈ {302} + [303] ∈ {303} + [304] ∈ {304} + [305] ∈ {305} + [306] ∈ {306} + [307] ∈ {307} + [308] ∈ {308} + [309] ∈ {309} + [310] ∈ {310} + [311] ∈ {311} + [312] ∈ {312} + [313] ∈ {313} + [314] ∈ {314} + [315] ∈ {315} + [316] ∈ {316} + [317] ∈ {317} + [318] ∈ {318} + [319] ∈ {319} + [320] ∈ {320} + [321] ∈ {321} + [322] ∈ {322} + [323] ∈ {323} + [324] ∈ {324} + [325] ∈ {325} + [326] ∈ {326} + [327] ∈ {327} + [328] ∈ {328} + [329] ∈ {329} + [330] ∈ {330} + [331] ∈ {331} + [332] ∈ {332} + [333] ∈ {333} + [334] ∈ {334} + [335] ∈ {335} + [336] ∈ {336} + [337] ∈ {337} + [338] ∈ {338} + [339] ∈ {339} + [340] ∈ {340} + [341] ∈ {341} + [342] ∈ {342} + [343] ∈ {343} + [344] ∈ {344} + [345] ∈ {345} + [346] ∈ {346} + [347] ∈ {347} + [348] ∈ {348} + [349] ∈ {349} + [350] ∈ {350} + [351] ∈ {351} + [352] ∈ {352} + [353] ∈ {353} + [354] ∈ {354} + [355] ∈ {355} + [356] ∈ {356} + [357] ∈ {357} + [358] ∈ {358} + [359] ∈ {359} + [360] ∈ {360} + [361] ∈ {361} + [362] ∈ {362} + [363] ∈ {363} + [364] ∈ {364} + [365] ∈ {365} + [366] ∈ {366} + [367] ∈ {367} + [368] ∈ {368} + [369] ∈ {369} + [370] ∈ {370} + [371] ∈ {371} + [372] ∈ {372} + [373] ∈ {373} + [374] ∈ {374} + [375] ∈ {375} + [376] ∈ {376} + [377] ∈ {377} + [378] ∈ {378} + [379] ∈ {379} + [380] ∈ {380} + [381] ∈ {381} + [382] ∈ {382} + [383] ∈ {383} + [384] ∈ {384} + [385] ∈ {385} + [386] ∈ {386} + [387] ∈ {387} + [388] ∈ {388} + [389] ∈ {389} + [390] ∈ {390} + [391] ∈ {391} + [392] ∈ {392} + [393] ∈ {393} + [394] ∈ {394} + [395] ∈ {395} + [396] ∈ {396} + [397] ∈ {397} + [398] ∈ {398} + [399] ∈ {399} + [400] ∈ {400} + [401] ∈ {401} + [402] ∈ {402} + [403] ∈ {403} + [404] ∈ {404} + [405] ∈ {405} + [406] ∈ {406} + [407] ∈ {407} + [408] ∈ {408} + [409] ∈ {409} + [410] ∈ {410} + [411] ∈ {411} + [412] ∈ {412} + [413] ∈ {413} + [414] ∈ {414} + [415] ∈ {415} + [416] ∈ {416} + [417] ∈ {417} + [418] ∈ {418} + [419] ∈ {419} + [420] ∈ {420} + [421] ∈ {421} + [422] ∈ {422} + [423] ∈ {423} + [424] ∈ {424} + [425] ∈ {425} + [426] ∈ {426} + [427] ∈ {427} + [428] ∈ {428} + [429] ∈ {429} + [430] ∈ {430} + [431] ∈ {431} + [432] ∈ {432} + [433] ∈ {433} + [434] ∈ {434} + [435] ∈ {435} + [436] ∈ {436} + [437] ∈ {437} + [438] ∈ {438} + [439] ∈ {439} + [440] ∈ {440} + [441] ∈ {441} + [442] ∈ {442} + [443] ∈ {443} + [444] ∈ {444} + [445] ∈ {445} + [446] ∈ {446} + [447] ∈ {447} + [448] ∈ {448} + [449] ∈ {449} + [450] ∈ {450} + [451] ∈ {451} + [452] ∈ {452} + [453] ∈ {453} + [454] ∈ {454} + [455] ∈ {455} + [456] ∈ {456} + [457] ∈ {457} + [458] ∈ {458} + [459] ∈ {459} + [460] ∈ {460} + [461] ∈ {461} + [462] ∈ {462} + [463] ∈ {463} + [464] ∈ {464} + [465] ∈ {465} + [466] ∈ {466} + [467] ∈ {467} + [468] ∈ {468} + [469] ∈ {469} + [470] ∈ {470} + [471] ∈ {471} + [472] ∈ {472} + [473] ∈ {473} + [474] ∈ {474} + [475] ∈ {475} + [476] ∈ {476} + [477] ∈ {477} + [478] ∈ {478} + [479] ∈ {479} + [480] ∈ {480} + [481] ∈ {481} + [482] ∈ {482} + [483] ∈ {483} + [484] ∈ {484} + [485] ∈ {485} + [486] ∈ {486} + [487] ∈ {487} + [488] ∈ {488} + [489] ∈ {489} + [490] ∈ {490} + [491] ∈ {491} + [492] ∈ {492} + [493] ∈ {493} + [494] ∈ {494} + [495] ∈ {495} + [496] ∈ {496} + [497] ∈ {497} + [498] ∈ {498} + [499] ∈ {499} + [500] ∈ {500} + [501] ∈ {501} + [502] ∈ {502} + [503] ∈ {503} + [504] ∈ {504} + [505] ∈ {505} + [506] ∈ {506} + [507] ∈ {507} + [508] ∈ {508} + [509] ∈ {509} + [510] ∈ {510} + [511] ∈ {511} + [512] ∈ {512} + [513] ∈ {513} + [514] ∈ {514} + [515] ∈ {515} + [516] ∈ {516} + [517] ∈ {517} + [518] ∈ {518} + [519] ∈ {519} + [520] ∈ {520} + [521] ∈ {521} + [522] ∈ {522} + [523] ∈ {523} + [524] ∈ {524} + [525] ∈ {525} + [526] ∈ {526} + [527] ∈ {527} + [528] ∈ {528} + [529] ∈ {529} + [530] ∈ {530} + [531] ∈ {531} + [532] ∈ {532} + [533] ∈ {533} + [534] ∈ {534} + [535] ∈ {535} + [536] ∈ {536} + [537] ∈ {537} + [538] ∈ {538} + [539] ∈ {539} + [540] ∈ {540} + [541] ∈ {541} + [542] ∈ {542} + [543] ∈ {543} + [544] ∈ {544} + [545] ∈ {545} + [546] ∈ {546} + [547] ∈ {547} + [548] ∈ {548} + [549] ∈ {549} + [550] ∈ {550} + [551] ∈ {551} + [552] ∈ {552} + [553] ∈ {553} + [554] ∈ {554} + [555] ∈ {555} + [556] ∈ {556} + [557] ∈ {557} + [558] ∈ {558} + [559] ∈ {559} + [560] ∈ {560} + [561] ∈ {561} + [562] ∈ {562} + [563] ∈ {563} + [564] ∈ {564} + [565] ∈ {565} + [566] ∈ {566} + [567] ∈ {567} + [568] ∈ {568} + [569] ∈ {569} + [570] ∈ {570} + [571] ∈ {571} + [572] ∈ {572} + [573] ∈ {573} + [574] ∈ {574} + [575] ∈ {575} + [576] ∈ {576} + [577] ∈ {577} + [578] ∈ {578} + [579] ∈ {579} + [580] ∈ {580} + [581] ∈ {581} + [582] ∈ {582} + [583] ∈ {583} + [584] ∈ {584} + [585] ∈ {585} + [586] ∈ {586} + [587] ∈ {587} + [588] ∈ {588} + [589] ∈ {589} + [590] ∈ {590} + [591] ∈ {591} + [592] ∈ {592} + [593] ∈ {593} + [594] ∈ {594} + [595] ∈ {595} + [596] ∈ {596} + [597] ∈ {597} + [598] ∈ {598} + [599] ∈ {599} + [600] ∈ {600} + [601] ∈ {601} + [602] ∈ {602} + [603] ∈ {603} + [604] ∈ {604} + [605] ∈ {605} + [606] ∈ {606} + [607] ∈ {607} + [608] ∈ {608} + [609] ∈ {609} + [610] ∈ {610} + [611] ∈ {611} + [612] ∈ {612} + [613] ∈ {613} + [614] ∈ {614} + [615] ∈ {615} + [616] ∈ {616} + [617] ∈ {617} + [618] ∈ {618} + [619] ∈ {619} + [620] ∈ {620} + [621] ∈ {621} + [622] ∈ {622} + [623] ∈ {623} + [624] ∈ {624} + [625] ∈ {625} + [626] ∈ {626} + [627] ∈ {627} + [628] ∈ {628} + [629] ∈ {629} + [630] ∈ {630} + [631] ∈ {631} + [632] ∈ {632} + [633] ∈ {633} + [634] ∈ {634} + [635] ∈ {635} + [636] ∈ {636} + [637] ∈ {637} + [638] ∈ {638} + [639] ∈ {639} + [640] ∈ {640} + [641] ∈ {641} + [642] ∈ {642} + [643] ∈ {643} + [644] ∈ {644} + [645] ∈ {645} + [646] ∈ {646} + [647] ∈ {647} + [648] ∈ {648} + [649] ∈ {649} + [650] ∈ {650} + [651] ∈ {651} + [652] ∈ {652} + [653] ∈ {653} + [654] ∈ {654} + [655] ∈ {655} + [656] ∈ {656} + [657] ∈ {657} + [658] ∈ {658} + [659] ∈ {659} + [660] ∈ {660} + [661] ∈ {661} + [662] ∈ {662} + [663] ∈ {663} + [664] ∈ {664} + [665] ∈ {665} + [666] ∈ {666} + [667] ∈ {667} + [668] ∈ {668} + [669] ∈ {669} + [670] ∈ {670} + [671] ∈ {671} + [672] ∈ {672} + [673] ∈ {673} + [674] ∈ {674} + [675] ∈ {675} + [676] ∈ {676} + [677] ∈ {677} + [678] ∈ {678} + [679] ∈ {679} + [680] ∈ {680} + [681] ∈ {681} + [682] ∈ {682} + [683] ∈ {683} + [684] ∈ {684} + [685] ∈ {685} + [686] ∈ {686} + [687] ∈ {687} + [688] ∈ {688} + [689] ∈ {689} + [690] ∈ {690} + [691] ∈ {691} + [692] ∈ {692} + [693] ∈ {693} + [694] ∈ {694} + [695] ∈ {695} + [696] ∈ {696} + [697] ∈ {697} + [698] ∈ {698} + [699] ∈ {699} + [700] ∈ {700} + [701] ∈ {701} + [702] ∈ {702} + [703] ∈ {703} + [704] ∈ {704} + [705] ∈ {705} + [706] ∈ {706} + [707] ∈ {707} + [708] ∈ {708} + [709] ∈ {709} + [710] ∈ {710} + [711] ∈ {711} + [712] ∈ {712} + [713] ∈ {713} + [714] ∈ {714} + [715] ∈ {715} + [716] ∈ {716} + [717] ∈ {717} + [718] ∈ {718} + [719] ∈ {719} + [720] ∈ {720} + [721] ∈ {721} + [722] ∈ {722} + [723] ∈ {723} + [724] ∈ {724} + [725] ∈ {725} + [726] ∈ {726} + [727] ∈ {727} + [728] ∈ {728} + [729] ∈ {729} + [730] ∈ {730} + [731] ∈ {731} + [732] ∈ {732} + [733] ∈ {733} + [734] ∈ {734} + [735] ∈ {735} + [736] ∈ {736} + [737] ∈ {737} + [738] ∈ {738} + [739] ∈ {739} + [740] ∈ {740} + [741] ∈ {741} + [742] ∈ {742} + [743] ∈ {743} + [744] ∈ {744} + [745] ∈ {745} + [746] ∈ {746} + [747] ∈ {747} + [748] ∈ {748} + [749] ∈ {749} + [750] ∈ {750} + [751] ∈ {751} + [752] ∈ {752} + [753] ∈ {753} + [754] ∈ {754} + [755] ∈ {755} + [756] ∈ {756} + [757] ∈ {757} + [758] ∈ {758} + [759] ∈ {759} + [760] ∈ {760} + [761] ∈ {761} + [762] ∈ {762} + [763] ∈ {763} + [764] ∈ {764} + [765] ∈ {765} + [766] ∈ {766} + [767] ∈ {767} + [768] ∈ {768} + [769] ∈ {769} + [770] ∈ {770} + [771] ∈ {771} + [772] ∈ {772} + [773] ∈ {773} + [774] ∈ {774} + [775] ∈ {775} + [776] ∈ {776} + [777] ∈ {777} + [778] ∈ {778} + [779] ∈ {779} + [780] ∈ {780} + [781] ∈ {781} + [782] ∈ {782} + [783] ∈ {783} + [784] ∈ {784} + [785] ∈ {785} + [786] ∈ {786} + [787] ∈ {787} + [788] ∈ {788} + [789] ∈ {789} + [790] ∈ {790} + [791] ∈ {791} + [792] ∈ {792} + [793] ∈ {793} + [794] ∈ {794} + [795] ∈ {795} + [796] ∈ {796} + [797] ∈ {797} + [798] ∈ {798} + [799] ∈ {799} + [800] ∈ {800} + [801] ∈ {801} + [802] ∈ {802} + [803] ∈ {803} + [804] ∈ {804} + [805] ∈ {805} + [806] ∈ {806} + [807] ∈ {807} + [808] ∈ {808} + [809] ∈ {809} + [810] ∈ {810} + [811] ∈ {811} + [812] ∈ {812} + [813] ∈ {813} + [814] ∈ {814} + [815] ∈ {815} + [816] ∈ {816} + [817] ∈ {817} + [818] ∈ {818} + [819] ∈ {819} + [820] ∈ {820} + [821] ∈ {821} + [822] ∈ {822} + [823] ∈ {823} + [824] ∈ {824} + [825] ∈ {825} + [826] ∈ {826} + [827] ∈ {827} + [828] ∈ {828} + [829] ∈ {829} + [830] ∈ {830} + [831] ∈ {831} + [832] ∈ {832} + [833] ∈ {833} + [834] ∈ {834} + [835] ∈ {835} + [836] ∈ {836} + [837] ∈ {837} + [838] ∈ {838} + [839] ∈ {839} + [840] ∈ {840} + [841] ∈ {841} + [842] ∈ {842} + [843] ∈ {843} + [844] ∈ {844} + [845] ∈ {845} + [846] ∈ {846} + [847] ∈ {847} + [848] ∈ {848} + [849] ∈ {849} + [850] ∈ {850} + [851] ∈ {851} + [852] ∈ {852} + [853] ∈ {853} + [854] ∈ {854} + [855] ∈ {855} + [856] ∈ {856} + [857] ∈ {857} + [858] ∈ {858} + [859] ∈ {859} + [860] ∈ {860} + [861] ∈ {861} + [862] ∈ {862} + [863] ∈ {863} + [864] ∈ {864} + [865] ∈ {865} + [866] ∈ {866} + [867] ∈ {867} + [868] ∈ {868} + [869] ∈ {869} + [870] ∈ {870} + [871] ∈ {871} + [872] ∈ {872} + [873] ∈ {873} + [874] ∈ {874} + [875] ∈ {875} + [876] ∈ {876} + [877] ∈ {877} + [878] ∈ {878} + [879] ∈ {879} + [880] ∈ {880} + [881] ∈ {881} + [882] ∈ {882} + [883] ∈ {883} + [884] ∈ {884} + [885] ∈ {885} + [886] ∈ {886} + [887] ∈ {887} + [888] ∈ {888} + [889] ∈ {889} + [890] ∈ {890} + [891] ∈ {891} + [892] ∈ {892} + [893] ∈ {893} + [894] ∈ {894} + [895] ∈ {895} + [896] ∈ {896} + [897] ∈ {897} + [898] ∈ {898} + [899] ∈ {899} + [900] ∈ {900} + [901] ∈ {901} + [902] ∈ {902} + [903] ∈ {903} + [904] ∈ {904} + [905] ∈ {905} + [906] ∈ {906} + [907] ∈ {907} + [908] ∈ {908} + [909] ∈ {909} + [910] ∈ {910} + [911] ∈ {911} + [912] ∈ {912} + [913] ∈ {913} + [914] ∈ {914} + [915] ∈ {915} + [916] ∈ {916} + [917] ∈ {917} + [918] ∈ {918} + [919] ∈ {919} + [920] ∈ {920} + [921] ∈ {921} + [922] ∈ {922} + [923] ∈ {923} + [924] ∈ {924} + [925] ∈ {925} + [926] ∈ {926} + [927] ∈ {927} + [928] ∈ {928} + [929] ∈ {929} + [930] ∈ {930} + [931] ∈ {931} + [932] ∈ {932} + [933] ∈ {933} + [934] ∈ {934} + [935] ∈ {935} + [936] ∈ {936} + [937] ∈ {937} + [938] ∈ {938} + [939] ∈ {939} + [940] ∈ {940} + [941] ∈ {941} + [942] ∈ {942} + [943] ∈ {943} + [944] ∈ {944} + [945] ∈ {945} + [946] ∈ {946} + [947] ∈ {947} + [948] ∈ {948} + [949] ∈ {949} + [950] ∈ {950} + [951] ∈ {951} + [952] ∈ {952} + [953] ∈ {953} + [954] ∈ {954} + [955] ∈ {955} + [956] ∈ {956} + [957] ∈ {957} + [958] ∈ {958} + [959] ∈ {959} + [960] ∈ {960} + [961] ∈ {961} + [962] ∈ {962} + [963] ∈ {963} + [964] ∈ {964} + [965] ∈ {965} + [966] ∈ {966} + [967] ∈ {967} + [968] ∈ {968} + [969] ∈ {969} + [970] ∈ {970} + [971] ∈ {971} + [972] ∈ {972} + [973] ∈ {973} + [974] ∈ {974} + [975] ∈ {975} + [976] ∈ {976} + [977] ∈ {977} + [978] ∈ {978} + [979] ∈ {979} + [980] ∈ {980} + [981] ∈ {981} + [982] ∈ {982} + [983] ∈ {983} + [984] ∈ {984} + [985] ∈ {985} + [986] ∈ {986} + [987] ∈ {987} + [988] ∈ {988} + [989] ∈ {989} + [990] ∈ {990} + [991] ∈ {991} + [992] ∈ {992} + [993] ∈ {993} + [994] ∈ {994} + [995] ∈ {995} + [996] ∈ {996} + [997] ∈ {997} + [998] ∈ {998} + [999] ∈ {999} + [1000] ∈ {1000} + [1001] ∈ {1001} + [1002] ∈ {1002} + [1003] ∈ {1003} + [1004] ∈ {1004} + [1005] ∈ {1005} + [1006] ∈ {1006} + [1007] ∈ {1007} + [1008] ∈ {1008} + [1009] ∈ {1009} + [1010] ∈ {1010} + [1011] ∈ {1011} + [1012] ∈ {1012} + [1013] ∈ {1013} + [1014] ∈ {1014} + [1015] ∈ {1015} + [1016] ∈ {1016} + [1017] ∈ {1017} + [1018] ∈ {1018} + [1019] ∈ {1019} + [1020] ∈ {1020} + [1021] ∈ {1021} + [1022] ∈ {1022} + [1023] ∈ {1023} + [1024] ∈ {1024} + [1025] ∈ {1025} + [1026] ∈ {1026} + [1027] ∈ {1027} + [1028] ∈ {1028} + [1029] ∈ {1029} + [1030] ∈ {1030} + [1031] ∈ {1031} + [1032] ∈ {1032} + [1033] ∈ {1033} + [1034] ∈ {1034} + [1035] ∈ {1035} + [1036] ∈ {1036} + [1037] ∈ {1037} + [1038] ∈ {1038} + [1039] ∈ {1039} + [1040] ∈ {1040} + [1041] ∈ {1041} + [1042] ∈ {1042} + [1043] ∈ {1043} + [1044] ∈ {1044} + [1045] ∈ {1045} + [1046] ∈ {1046} + [1047] ∈ {1047} + [1048] ∈ {1048} + [1049] ∈ {1049} + [1050] ∈ {1050} + [1051] ∈ {1051} + [1052] ∈ {1052} + [1053] ∈ {1053} + [1054] ∈ {1054} + [1055] ∈ {1055} + [1056] ∈ {1056} + [1057] ∈ {1057} + [1058] ∈ {1058} + [1059] ∈ {1059} + [1060] ∈ {1060} + [1061] ∈ {1061} + [1062] ∈ {1062} + [1063] ∈ {1063} + [1064] ∈ {1064} + [1065] ∈ {1065} + [1066] ∈ {1066} + [1067] ∈ {1067} + [1068] ∈ {1068} + [1069] ∈ {1069} + [1070] ∈ {1070} + [1071] ∈ {1071} + [1072] ∈ {1072} + [1073] ∈ {1073} + [1074] ∈ {1074} + [1075] ∈ {1075} + [1076] ∈ {1076} + [1077] ∈ {1077} + [1078] ∈ {1078} + [1079] ∈ {1079} + [1080] ∈ {1080} + [1081] ∈ {1081} + [1082] ∈ {1082} + [1083] ∈ {1083} + [1084] ∈ {1084} + [1085] ∈ {1085} + [1086] ∈ {1086} + [1087] ∈ {1087} + [1088] ∈ {1088} + [1089] ∈ {1089} + [1090] ∈ {1090} + [1091] ∈ {1091} + [1092] ∈ {1092} + [1093] ∈ {1093} + [1094] ∈ {1094} + [1095] ∈ {1095} + [1096] ∈ {1096} + [1097] ∈ {1097} + [1098] ∈ {1098} + [1099] ∈ {1099} + [1100] ∈ {1100} + [1101] ∈ {1101} + [1102] ∈ {1102} + [1103] ∈ {1103} + [1104] ∈ {1104} + [1105] ∈ {1105} + [1106] ∈ {1106} + [1107] ∈ {1107} + [1108] ∈ {1108} + [1109] ∈ {1109} + [1110] ∈ {1110} + [1111] ∈ {1111} + [1112] ∈ {1112} + [1113] ∈ {1113} + [1114] ∈ {1114} + [1115] ∈ {1115} + [1116] ∈ {1116} + [1117] ∈ {1117} + [1118] ∈ {1118} + [1119] ∈ {1119} + [1120] ∈ {1120} + [1121] ∈ {1121} + [1122] ∈ {1122} + [1123] ∈ {1123} + [1124] ∈ {1124} + [1125] ∈ {1125} + [1126] ∈ {1126} + [1127] ∈ {1127} + [1128] ∈ {1128} + [1129] ∈ {1129} + [1130] ∈ {1130} + [1131] ∈ {1131} + [1132] ∈ {1132} + [1133] ∈ {1133} + [1134] ∈ {1134} + [1135] ∈ {1135} + [1136] ∈ {1136} + [1137] ∈ {1137} + [1138] ∈ {1138} + [1139] ∈ {1139} + [1140] ∈ {1140} + [1141] ∈ {1141} + [1142] ∈ {1142} + [1143] ∈ {1143} + [1144] ∈ {1144} + [1145] ∈ {1145} + [1146] ∈ {1146} + [1147] ∈ {1147} + [1148] ∈ {1148} + [1149] ∈ {1149} + [1150] ∈ {1150} + [1151] ∈ {1151} + [1152] ∈ {1152} + [1153] ∈ {1153} + [1154] ∈ {1154} + [1155] ∈ {1155} + [1156] ∈ {1156} + [1157] ∈ {1157} + [1158] ∈ {1158} + [1159] ∈ {1159} + [1160] ∈ {1160} + [1161] ∈ {1161} + [1162] ∈ {1162} + [1163] ∈ {1163} + [1164] ∈ {1164} + [1165] ∈ {1165} + [1166] ∈ {1166} + [1167] ∈ {1167} + [1168] ∈ {1168} + [1169] ∈ {1169} + [1170] ∈ {1170} + [1171] ∈ {1171} + [1172] ∈ {1172} + [1173] ∈ {1173} + [1174] ∈ {1174} + [1175] ∈ {1175} + [1176] ∈ {1176} + [1177] ∈ {1177} + [1178] ∈ {1178} + [1179] ∈ {1179} + [1180] ∈ {1180} + [1181] ∈ {1181} + [1182] ∈ {1182} + [1183] ∈ {1183} + [1184] ∈ {1184} + [1185] ∈ {1185} + [1186] ∈ {1186} + [1187] ∈ {1187} + [1188] ∈ {1188} + [1189] ∈ {1189} + [1190] ∈ {1190} + [1191] ∈ {1191} + [1192] ∈ {1192} + [1193] ∈ {1193} + [1194] ∈ {1194} + [1195] ∈ {1195} + [1196] ∈ {1196} + [1197] ∈ {1197} + [1198] ∈ {1198} + [1199] ∈ {1199} + [1200] ∈ {1200} + [1201] ∈ {1201} + [1202] ∈ {1202} + [1203] ∈ {1203} + [1204] ∈ {1204} + [1205] ∈ {1205} + [1206] ∈ {1206} + [1207] ∈ {1207} + [1208] ∈ {1208} + [1209] ∈ {1209} + [1210] ∈ {1210} + [1211] ∈ {1211} + [1212] ∈ {1212} + [1213] ∈ {1213} + [1214] ∈ {1214} + [1215] ∈ {1215} + [1216] ∈ {1216} + [1217] ∈ {1217} + [1218] ∈ {1218} + [1219] ∈ {1219} + [1220] ∈ {1220} + [1221] ∈ {1221} + [1222] ∈ {1222} + [1223] ∈ {1223} + [1224] ∈ {1224} + [1225] ∈ {1225} + [1226] ∈ {1226} + [1227] ∈ {1227} + [1228] ∈ {1228} + [1229] ∈ {1229} + [1230] ∈ {1230} + [1231] ∈ {1231} + [1232] ∈ {1232} + [1233] ∈ {1233} + [1234] ∈ {1234} + [1235] ∈ {1235} + [1236] ∈ {1236} + [1237] ∈ {1237} + [1238] ∈ {1238} + [1239] ∈ {1239} + [1240] ∈ {1240} + [1241] ∈ {1241} + [1242] ∈ {1242} + [1243] ∈ {1243} + [1244] ∈ {1244} + [1245] ∈ {1245} + [1246] ∈ {1246} + [1247] ∈ {1247} + [1248] ∈ {1248} + [1249] ∈ {1249} + [1250] ∈ {1250} + [1251] ∈ {1251} + [1252] ∈ {1252} + [1253] ∈ {1253} + [1254] ∈ {1254} + [1255] ∈ {1255} + [1256] ∈ {1256} + [1257] ∈ {1257} + [1258] ∈ {1258} + [1259] ∈ {1259} + [1260] ∈ {1260} + [1261] ∈ {1261} + [1262] ∈ {1262} + [1263] ∈ {1263} + [1264] ∈ {1264} + [1265] ∈ {1265} + [1266] ∈ {1266} + [1267] ∈ {1267} + [1268] ∈ {1268} + [1269] ∈ {1269} + [1270] ∈ {1270} + [1271] ∈ {1271} + [1272] ∈ {1272} + [1273] ∈ {1273} + [1274] ∈ {1274} + [1275] ∈ {1275} + [1276] ∈ {1276} + [1277] ∈ {1277} + [1278] ∈ {1278} + [1279] ∈ {1279} + [1280] ∈ {1280} + [1281] ∈ {1281} + [1282] ∈ {1282} + [1283] ∈ {1283} + [1284] ∈ {1284} + [1285] ∈ {1285} + [1286] ∈ {1286} + [1287] ∈ {1287} + [1288] ∈ {1288} + [1289] ∈ {1289} + [1290] ∈ {1290} + [1291] ∈ {1291} + [1292] ∈ {1292} + [1293] ∈ {1293} + [1294] ∈ {1294} + [1295] ∈ {1295} + [1296] ∈ {1296} + [1297] ∈ {1297} + [1298] ∈ {1298} + [1299] ∈ {1299} + [1300] ∈ {1300} + [1301] ∈ {1301} + [1302] ∈ {1302} + [1303] ∈ {1303} + [1304] ∈ {1304} + [1305] ∈ {1305} + [1306] ∈ {1306} + [1307] ∈ {1307} + [1308] ∈ {1308} + [1309] ∈ {1309} + [1310] ∈ {1310} + [1311] ∈ {1311} + [1312] ∈ {1312} + [1313] ∈ {1313} + [1314] ∈ {1314} + [1315] ∈ {1315} + [1316] ∈ {1316} + [1317] ∈ {1317} + [1318] ∈ {1318} + [1319] ∈ {1319} + [1320] ∈ {1320} + [1321] ∈ {1321} + [1322] ∈ {1322} + [1323] ∈ {1323} + [1324] ∈ {1324} + [1325] ∈ {1325} + [1326] ∈ {1326} + [1327] ∈ {1327} + [1328] ∈ {1328} + [1329] ∈ {1329} + [1330] ∈ {1330} + [1331] ∈ {1331} + [1332] ∈ {1332} + [1333] ∈ {1333} + [1334] ∈ {1334} + [1335] ∈ {1335} + [1336] ∈ {1336} + [1337] ∈ {1337} + [1338] ∈ {1338} + [1339] ∈ {1339} + [1340] ∈ {1340} + [1341] ∈ {1341} + [1342] ∈ {1342} + [1343] ∈ {1343} + [1344] ∈ {1344} + [1345] ∈ {1345} + [1346] ∈ {1346} + [1347] ∈ {1347} + [1348] ∈ {1348} + [1349] ∈ {1349} + [1350] ∈ {1350} + [1351] ∈ {1351} + [1352] ∈ {1352} + [1353] ∈ {1353} + [1354] ∈ {1354} + [1355] ∈ {1355} + [1356] ∈ {1356} + [1357] ∈ {1357} + [1358] ∈ {1358} + [1359] ∈ {1359} + [1360] ∈ {1360} + [1361] ∈ {1361} + [1362] ∈ {1362} + [1363] ∈ {1363} + [1364] ∈ {1364} + [1365] ∈ {1365} + [1366] ∈ {1366} + [1367] ∈ {1367} + [1368] ∈ {1368} + [1369] ∈ {1369} + [1370] ∈ {1370} + [1371] ∈ {1371} + [1372] ∈ {1372} + [1373] ∈ {1373} + [1374] ∈ {1374} + [1375] ∈ {1375} + [1376] ∈ {1376} + [1377] ∈ {1377} + [1378] ∈ {1378} + [1379] ∈ {1379} + [1380] ∈ {1380} + [1381] ∈ {1381} + [1382] ∈ {1382} + [1383] ∈ {1383} + [1384] ∈ {1384} + [1385] ∈ {1385} + [1386] ∈ {1386} + [1387] ∈ {1387} + [1388] ∈ {1388} + [1389] ∈ {1389} + [1390] ∈ {1390} + [1391] ∈ {1391} + [1392] ∈ {1392} + [1393] ∈ {1393} + [1394] ∈ {1394} + [1395] ∈ {1395} + [1396] ∈ {1396} + [1397] ∈ {1397} + [1398] ∈ {1398} + [1399] ∈ {1399} + [1400] ∈ {1400} + [1401] ∈ {1401} + [1402] ∈ {1402} + [1403] ∈ {1403} + [1404] ∈ {1404} + [1405] ∈ {1405} + [1406] ∈ {1406} + [1407] ∈ {1407} + [1408] ∈ {1408} + [1409] ∈ {1409} + [1410] ∈ {1410} + [1411] ∈ {1411} + [1412] ∈ {1412} + [1413] ∈ {1413} + [1414] ∈ {1414} + [1415] ∈ {1415} + [1416] ∈ {1416} + [1417] ∈ {1417} + [1418] ∈ {1418} + [1419] ∈ {1419} + [1420] ∈ {1420} + [1421] ∈ {1421} + [1422] ∈ {1422} + [1423] ∈ {1423} + [1424] ∈ {1424} + [1425] ∈ {1425} + [1426] ∈ {1426} + [1427] ∈ {1427} + [1428] ∈ {1428} + [1429] ∈ {1429} + [1430] ∈ {1430} + [1431] ∈ {1431} + [1432] ∈ {1432} + [1433] ∈ {1433} + [1434] ∈ {1434} + [1435] ∈ {1435} + [1436] ∈ {1436} + [1437] ∈ {1437} + [1438] ∈ {1438} + [1439] ∈ {1439} + [1440] ∈ {1440} + [1441] ∈ {1441} + [1442] ∈ {1442} + [1443] ∈ {1443} + [1444] ∈ {1444} + [1445] ∈ {1445} + [1446] ∈ {1446} + [1447] ∈ {1447} + [1448] ∈ {1448} + [1449] ∈ {1449} + [1450] ∈ {1450} + [1451] ∈ {1451} + [1452] ∈ {1452} + [1453] ∈ {1453} + [1454] ∈ {1454} + [1455] ∈ {1455} + [1456] ∈ {1456} + [1457] ∈ {1457} + [1458] ∈ {1458} + [1459] ∈ {1459} + [1460] ∈ {1460} + [1461] ∈ {1461} + [1462] ∈ {1462} + [1463] ∈ {1463} + [1464] ∈ {1464} + [1465] ∈ {1465} + [1466] ∈ {1466} + [1467] ∈ {1467} + [1468] ∈ {1468} + [1469] ∈ {1469} + [1470] ∈ {1470} + [1471] ∈ {1471} + [1472] ∈ {1472} + [1473] ∈ {1473} + [1474] ∈ {1474} + [1475] ∈ {1475} + [1476] ∈ {1476} + [1477] ∈ {1477} + [1478] ∈ {1478} + [1479] ∈ {1479} + [1480] ∈ {1480} + [1481] ∈ {1481} + [1482] ∈ {1482} + [1483] ∈ {1483} + [1484] ∈ {1484} + [1485] ∈ {1485} + [1486] ∈ {1486} + [1487] ∈ {1487} + [1488] ∈ {1488} + [1489] ∈ {1489} + [1490] ∈ {1490} + [1491] ∈ {1491} + [1492] ∈ {1492} + [1493] ∈ {1493} + [1494] ∈ {1494} + [1495] ∈ {1495} + [1496] ∈ {1496} + [1497] ∈ {1497} + [1498] ∈ {1498} + [1499] ∈ {1499} + [1500] ∈ {1500} + [1501] ∈ {1501} + [1502] ∈ {1502} + [1503] ∈ {1503} + [1504] ∈ {1504} + [1505] ∈ {1505} + [1506] ∈ {1506} + [1507] ∈ {1507} + [1508] ∈ {1508} + [1509] ∈ {1509} + [1510] ∈ {1510} + [1511] ∈ {1511} + [1512] ∈ {1512} + [1513] ∈ {1513} + [1514] ∈ {1514} + [1515] ∈ {1515} + [1516] ∈ {1516} + [1517] ∈ {1517} + [1518] ∈ {1518} + [1519] ∈ {1519} + [1520] ∈ {1520} + [1521] ∈ {1521} + [1522] ∈ {1522} + [1523] ∈ {1523} + [1524] ∈ {1524} + [1525] ∈ {1525} + [1526] ∈ {1526} + [1527] ∈ {1527} + [1528] ∈ {1528} + [1529] ∈ {1529} + [1530] ∈ {1530} + [1531] ∈ {1531} + [1532] ∈ {1532} + [1533] ∈ {1533} + [1534] ∈ {1534} + [1535] ∈ {1535} + [1536] ∈ {1536} + [1537] ∈ {1537} + [1538] ∈ {1538} + [1539] ∈ {1539} + [1540] ∈ {1540} + [1541] ∈ {1541} + [1542] ∈ {1542} + [1543] ∈ {1543} + [1544] ∈ {1544} + [1545] ∈ {1545} + [1546] ∈ {1546} + [1547] ∈ {1547} + [1548] ∈ {1548} + [1549] ∈ {1549} + [1550] ∈ {1550} + [1551] ∈ {1551} + [1552] ∈ {1552} + [1553] ∈ {1553} + [1554] ∈ {1554} + [1555] ∈ {1555} + [1556] ∈ {1556} + [1557] ∈ {1557} + [1558] ∈ {1558} + [1559] ∈ {1559} + [1560] ∈ {1560} + [1561] ∈ {1561} + [1562] ∈ {1562} + [1563] ∈ {1563} + [1564] ∈ {1564} + [1565] ∈ {1565} + [1566] ∈ {1566} + [1567] ∈ {1567} + [1568] ∈ {1568} + [1569] ∈ {1569} + [1570] ∈ {1570} + [1571] ∈ {1571} + [1572] ∈ {1572} + [1573] ∈ {1573} + [1574] ∈ {1574} + [1575] ∈ {1575} + [1576] ∈ {1576} + [1577] ∈ {1577} + [1578] ∈ {1578} + [1579] ∈ {1579} + [1580] ∈ {1580} + [1581] ∈ {1581} + [1582] ∈ {1582} + [1583] ∈ {1583} + [1584] ∈ {1584} + [1585] ∈ {1585} + [1586] ∈ {1586} + [1587] ∈ {1587} + [1588] ∈ {1588} + [1589] ∈ {1589} + [1590] ∈ {1590} + [1591] ∈ {1591} + [1592] ∈ {1592} + [1593] ∈ {1593} + [1594] ∈ {1594} + [1595] ∈ {1595} + [1596] ∈ {1596} + [1597] ∈ {1597} + [1598] ∈ {1598} + [1599] ∈ {1599} + [1600] ∈ {1600} + [1601] ∈ {1601} + [1602] ∈ {1602} + [1603] ∈ {1603} + [1604] ∈ {1604} + [1605] ∈ {1605} + [1606] ∈ {1606} + [1607] ∈ {1607} + [1608] ∈ {1608} + [1609] ∈ {1609} + [1610] ∈ {1610} + [1611] ∈ {1611} + [1612] ∈ {1612} + [1613] ∈ {1613} + [1614] ∈ {1614} + [1615] ∈ {1615} + [1616] ∈ {1616} + [1617] ∈ {1617} + [1618] ∈ {1618} + [1619] ∈ {1619} + [1620] ∈ {1620} + [1621] ∈ {1621} + [1622] ∈ {1622} + [1623] ∈ {1623} + [1624] ∈ {1624} + [1625] ∈ {1625} + [1626] ∈ {1626} + [1627] ∈ {1627} + [1628] ∈ {1628} + [1629] ∈ {1629} + [1630] ∈ {1630} + [1631] ∈ {1631} + [1632] ∈ {1632} + [1633] ∈ {1633} + [1634] ∈ {1634} + [1635] ∈ {1635} + [1636] ∈ {1636} + [1637] ∈ {1637} + [1638] ∈ {1638} + [1639] ∈ {1639} + [1640] ∈ {1640} + [1641] ∈ {1641} + [1642] ∈ {1642} + [1643] ∈ {1643} + [1644] ∈ {1644} + [1645] ∈ {1645} + [1646] ∈ {1646} + [1647] ∈ {1647} + [1648] ∈ {1648} + [1649] ∈ {1649} + [1650] ∈ {1650} + [1651] ∈ {1651} + [1652] ∈ {1652} + [1653] ∈ {1653} + [1654] ∈ {1654} + [1655] ∈ {1655} + [1656] ∈ {1656} + [1657] ∈ {1657} + [1658] ∈ {1658} + [1659] ∈ {1659} + [1660] ∈ {1660} + [1661] ∈ {1661} + [1662] ∈ {1662} + [1663] ∈ {1663} + [1664] ∈ {1664} + [1665] ∈ {1665} + [1666] ∈ {1666} + [1667] ∈ {1667} + [1668] ∈ {1668} + [1669] ∈ {1669} + [1670] ∈ {1670} + [1671] ∈ {1671} + [1672] ∈ {1672} + [1673] ∈ {1673} + [1674] ∈ {1674} + [1675] ∈ {1675} + [1676] ∈ {1676} + [1677] ∈ {1677} + [1678] ∈ {1678} + [1679] ∈ {1679} + [1680] ∈ {1680} + [1681] ∈ {1681} + [1682] ∈ {1682} + [1683] ∈ {1683} + [1684] ∈ {1684} + [1685] ∈ {1685} + [1686] ∈ {1686} + [1687] ∈ {1687} + [1688] ∈ {1688} + [1689] ∈ {1689} + [1690] ∈ {1690} + [1691] ∈ {1691} + [1692] ∈ {1692} + [1693] ∈ {1693} + [1694] ∈ {1694} + [1695] ∈ {1695} + [1696] ∈ {1696} + [1697] ∈ {1697} + [1698] ∈ {1698} + [1699] ∈ {1699} + [1700] ∈ {1700} + [1701] ∈ {1701} + [1702] ∈ {1702} + [1703] ∈ {1703} + [1704] ∈ {1704} + [1705] ∈ {1705} + [1706] ∈ {1706} + [1707] ∈ {1707} + [1708] ∈ {1708} + [1709] ∈ {1709} + [1710] ∈ {1710} + [1711] ∈ {1711} + [1712] ∈ {1712} + [1713] ∈ {1713} + [1714] ∈ {1714} + [1715] ∈ {1715} + [1716] ∈ {1716} + [1717] ∈ {1717} + [1718] ∈ {1718} + [1719] ∈ {1719} + [1720] ∈ {1720} + [1721] ∈ {1721} + [1722] ∈ {1722} + [1723] ∈ {1723} + [1724] ∈ {1724} + [1725] ∈ {1725} + [1726] ∈ {1726} + [1727] ∈ {1727} + [1728] ∈ {1728} + [1729] ∈ {1729} + [1730] ∈ {1730} + [1731] ∈ {1731} + [1732] ∈ {1732} + [1733] ∈ {1733} + [1734] ∈ {1734} + [1735] ∈ {1735} + [1736] ∈ {1736} + [1737] ∈ {1737} + [1738] ∈ {1738} + [1739] ∈ {1739} + [1740] ∈ {1740} + [1741] ∈ {1741} + [1742] ∈ {1742} + [1743] ∈ {1743} + [1744] ∈ {1744} + [1745] ∈ {1745} + [1746] ∈ {1746} + [1747] ∈ {1747} + [1748] ∈ {1748} + [1749] ∈ {1749} + [1750] ∈ {1750} + [1751] ∈ {1751} + [1752] ∈ {1752} + [1753] ∈ {1753} + [1754] ∈ {1754} + [1755] ∈ {1755} + [1756] ∈ {1756} + [1757] ∈ {1757} + [1758] ∈ {1758} + [1759] ∈ {1759} + [1760] ∈ {1760} + [1761] ∈ {1761} + [1762] ∈ {1762} + [1763] ∈ {1763} + [1764] ∈ {1764} + [1765] ∈ {1765} + [1766] ∈ {1766} + [1767] ∈ {1767} + [1768] ∈ {1768} + [1769] ∈ {1769} + [1770] ∈ {1770} + [1771] ∈ {1771} + [1772] ∈ {1772} + [1773] ∈ {1773} + [1774] ∈ {1774} + [1775] ∈ {1775} + [1776] ∈ {1776} + [1777] ∈ {1777} + [1778] ∈ {1778} + [1779] ∈ {1779} + [1780] ∈ {1780} + [1781] ∈ {1781} + [1782] ∈ {1782} + [1783] ∈ {1783} + [1784] ∈ {1784} + [1785] ∈ {1785} + [1786] ∈ {1786} + [1787] ∈ {1787} + [1788] ∈ {1788} + [1789] ∈ {1789} + [1790] ∈ {1790} + [1791] ∈ {1791} + [1792] ∈ {1792} + [1793] ∈ {1793} + [1794] ∈ {1794} + [1795] ∈ {1795} + [1796] ∈ {1796} + [1797] ∈ {1797} + [1798] ∈ {1798} + [1799] ∈ {1799} + [1800] ∈ {1800} + [1801] ∈ {1801} + [1802] ∈ {1802} + [1803] ∈ {1803} + [1804] ∈ {1804} + [1805] ∈ {1805} + [1806] ∈ {1806} + [1807] ∈ {1807} + [1808] ∈ {1808} + [1809] ∈ {1809} + [1810] ∈ {1810} + [1811] ∈ {1811} + [1812] ∈ {1812} + [1813] ∈ {1813} + [1814] ∈ {1814} + [1815] ∈ {1815} + [1816] ∈ {1816} + [1817] ∈ {1817} + [1818] ∈ {1818} + [1819] ∈ {1819} + [1820] ∈ {1820} + [1821] ∈ {1821} + [1822] ∈ {1822} + [1823] ∈ {1823} + [1824] ∈ {1824} + [1825] ∈ {1825} + [1826] ∈ {1826} + [1827] ∈ {1827} + [1828] ∈ {1828} + [1829] ∈ {1829} + [1830] ∈ {1830} + [1831] ∈ {1831} + [1832] ∈ {1832} + [1833] ∈ {1833} + [1834] ∈ {1834} + [1835] ∈ {1835} + [1836] ∈ {1836} + [1837] ∈ {1837} + [1838] ∈ {1838} + [1839] ∈ {1839} + [1840] ∈ {1840} + [1841] ∈ {1841} + [1842] ∈ {1842} + [1843] ∈ {1843} + [1844] ∈ {1844} + [1845] ∈ {1845} + [1846] ∈ {1846} + [1847] ∈ {1847} + [1848] ∈ {1848} + [1849] ∈ {1849} + [1850] ∈ {1850} + [1851] ∈ {1851} + [1852] ∈ {1852} + [1853] ∈ {1853} + [1854] ∈ {1854} + [1855] ∈ {1855} + [1856] ∈ {1856} + [1857] ∈ {1857} + [1858] ∈ {1858} + [1859] ∈ {1859} + [1860] ∈ {1860} + [1861] ∈ {1861} + [1862] ∈ {1862} + [1863] ∈ {1863} + [1864] ∈ {1864} + [1865] ∈ {1865} + [1866] ∈ {1866} + [1867] ∈ {1867} + [1868] ∈ {1868} + [1869] ∈ {1869} + [1870] ∈ {1870} + [1871] ∈ {1871} + [1872] ∈ {1872} + [1873] ∈ {1873} + [1874] ∈ {1874} + [1875] ∈ {1875} + [1876] ∈ {1876} + [1877] ∈ {1877} + [1878] ∈ {1878} + [1879] ∈ {1879} + [1880] ∈ {1880} + [1881] ∈ {1881} + [1882] ∈ {1882} + [1883] ∈ {1883} + [1884] ∈ {1884} + [1885] ∈ {1885} + [1886] ∈ {1886} + [1887] ∈ {1887} + [1888] ∈ {1888} + [1889] ∈ {1889} + [1890] ∈ {1890} + [1891] ∈ {1891} + [1892] ∈ {1892} + [1893] ∈ {1893} + [1894] ∈ {1894} + [1895] ∈ {1895} + [1896] ∈ {1896} + [1897] ∈ {1897} + [1898] ∈ {1898} + [1899] ∈ {1899} + [1900] ∈ {1900} + [1901] ∈ {1901} + [1902] ∈ {1902} + [1903] ∈ {1903} + [1904] ∈ {1904} + [1905] ∈ {1905} + [1906] ∈ {1906} + [1907] ∈ {1907} + [1908] ∈ {1908} + [1909] ∈ {1909} + [1910] ∈ {1910} + [1911] ∈ {1911} + [1912] ∈ {1912} + [1913] ∈ {1913} + [1914] ∈ {1914} + [1915] ∈ {1915} + [1916] ∈ {1916} + [1917] ∈ {1917} + [1918] ∈ {1918} + [1919] ∈ {1919} + [1920] ∈ {1920} + [1921] ∈ {1921} + [1922] ∈ {1922} + [1923] ∈ {1923} + [1924] ∈ {1924} + [1925] ∈ {1925} + [1926] ∈ {1926} + [1927] ∈ {1927} + [1928] ∈ {1928} + [1929] ∈ {1929} + [1930] ∈ {1930} + [1931] ∈ {1931} + [1932] ∈ {1932} + [1933] ∈ {1933} + [1934] ∈ {1934} + [1935] ∈ {1935} + [1936] ∈ {1936} + [1937] ∈ {1937} + [1938] ∈ {1938} + [1939] ∈ {1939} + [1940] ∈ {1940} + [1941] ∈ {1941} + [1942] ∈ {1942} + [1943] ∈ {1943} + [1944] ∈ {1944} + [1945] ∈ {1945} + [1946] ∈ {1946} + [1947] ∈ {1947} + [1948] ∈ {1948} + [1949] ∈ {1949} + [1950] ∈ {1950} + [1951] ∈ {1951} + [1952] ∈ {1952} + [1953] ∈ {1953} + [1954] ∈ {1954} + [1955] ∈ {1955} + [1956] ∈ {1956} + [1957] ∈ {1957} + [1958] ∈ {1958} + [1959] ∈ {1959} + [1960] ∈ {1960} + [1961] ∈ {1961} + [1962] ∈ {1962} + [1963] ∈ {1963} + [1964] ∈ {1964} + [1965] ∈ {1965} + [1966] ∈ {1966} + [1967] ∈ {1967} + [1968] ∈ {1968} + [1969] ∈ {1969} + [1970] ∈ {1970} + [1971] ∈ {1971} + [1972] ∈ {1972} + [1973] ∈ {1973} + [1974] ∈ {1974} + [1975] ∈ {1975} + [1976] ∈ {1976} + [1977] ∈ {1977} + [1978] ∈ {1978} + [1979] ∈ {1979} + [1980] ∈ {1980} + [1981] ∈ {1981} + [1982] ∈ {1982} + [1983] ∈ {1983} + [1984] ∈ {1984} + [1985] ∈ {1985} + [1986] ∈ {1986} + [1987] ∈ {1987} + [1988] ∈ {1988} + [1989] ∈ {1989} + [1990] ∈ {1990} + [1991] ∈ {1991} + [1992] ∈ {1992} + [1993] ∈ {1993} + [1994] ∈ {1994} + [1995] ∈ {1995} + [1996] ∈ {1996} + [1997] ∈ {1997} + [1998] ∈ {1998} + [1999] ∈ {1999} + [2000] ∈ {2000} + [2001] ∈ {2001} + [2002] ∈ {2002} + [2003] ∈ {2003} + [2004] ∈ {2004} + [2005] ∈ {2005} + [2006] ∈ {2006} + [2007] ∈ {2007} + [2008] ∈ {2008} + [2009] ∈ {2009} + [2010] ∈ {2010} + [2011] ∈ {2011} + [2012] ∈ {2012} + [2013] ∈ {2013} + [2014] ∈ {2014} + [2015] ∈ {2015} + [2016] ∈ {2016} + [2017] ∈ {2017} + [2018] ∈ {2018} + [2019] ∈ {2019} + [2020] ∈ {2020} + [2021] ∈ {2021} + [2022] ∈ {2022} + [2023] ∈ {2023} + [2024] ∈ {2024} + [2025] ∈ {2025} + [2026] ∈ {2026} + [2027] ∈ {2027} + [2028] ∈ {2028} + [2029] ∈ {2029} + [2030] ∈ {2030} + [2031] ∈ {2031} + [2032] ∈ {2032} + [2033] ∈ {2033} + [2034] ∈ {2034} + [2035] ∈ {2035} + [2036] ∈ {2036} + [2037] ∈ {2037} + [2038] ∈ {2038} + [2039] ∈ {2039} + [2040] ∈ {2040} + [2041] ∈ {2041} + [2042] ∈ {2042} + [2043] ∈ {2043} + [2044] ∈ {2044} + [2045] ∈ {2045} + [2046] ∈ {2046} + [2047] ∈ {2047} + [2048] ∈ {2048} + [2049] ∈ {2049} + [2050] ∈ {2050} + [2051] ∈ {2051} + [2052] ∈ {2052} + [2053] ∈ {2053} + [2054] ∈ {2054} + [2055] ∈ {2055} + [2056] ∈ {2056} + [2057] ∈ {2057} + [2058] ∈ {2058} + [2059] ∈ {2059} + [2060] ∈ {2060} + [2061] ∈ {2061} + [2062] ∈ {2062} + [2063] ∈ {2063} + [2064] ∈ {2064} + [2065] ∈ {2065} + [2066] ∈ {2066} + [2067] ∈ {2067} + [2068] ∈ {2068} + [2069] ∈ {2069} + [2070] ∈ {2070} + [2071] ∈ {2071} + [2072] ∈ {2072} + [2073] ∈ {2073} + [2074] ∈ {2074} + [2075] ∈ {2075} + [2076] ∈ {2076} + [2077] ∈ {2077} + [2078] ∈ {2078} + [2079] ∈ {2079} + [2080] ∈ {2080} + [2081] ∈ {2081} + [2082] ∈ {2082} + [2083] ∈ {2083} + [2084] ∈ {2084} + [2085] ∈ {2085} + [2086] ∈ {2086} + [2087] ∈ {2087} + [2088] ∈ {2088} + [2089] ∈ {2089} + [2090] ∈ {2090} + [2091] ∈ {2091} + [2092] ∈ {2092} + [2093] ∈ {2093} + [2094] ∈ {2094} + [2095] ∈ {2095} + [2096] ∈ {2096} + [2097] ∈ {2097} + [2098] ∈ {2098} + [2099] ∈ {2099} + [2100] ∈ {2100} + [2101] ∈ {2101} + [2102] ∈ {2102} + [2103] ∈ {2103} + [2104] ∈ {2104} + [2105] ∈ {2105} + [2106] ∈ {2106} + [2107] ∈ {2107} + [2108] ∈ {2108} + [2109] ∈ {2109} + [2110] ∈ {2110} + [2111] ∈ {2111} + [2112] ∈ {2112} + [2113] ∈ {2113} + [2114] ∈ {2114} + [2115] ∈ {2115} + [2116] ∈ {2116} + [2117] ∈ {2117} + [2118] ∈ {2118} + [2119] ∈ {2119} + [2120] ∈ {2120} + [2121] ∈ {2121} + [2122] ∈ {2122} + [2123] ∈ {2123} + [2124] ∈ {2124} + [2125] ∈ {2125} + [2126] ∈ {2126} + [2127] ∈ {2127} + [2128] ∈ {2128} + [2129] ∈ {2129} + [2130] ∈ {2130} + [2131] ∈ {2131} + [2132] ∈ {2132} + [2133] ∈ {2133} + [2134] ∈ {2134} + [2135] ∈ {2135} + [2136] ∈ {2136} + [2137] ∈ {2137} + [2138] ∈ {2138} + [2139] ∈ {2139} + [2140] ∈ {2140} + [2141] ∈ {2141} + [2142] ∈ {2142} + [2143] ∈ {2143} + [2144] ∈ {2144} + [2145] ∈ {2145} + [2146] ∈ {2146} + [2147] ∈ {2147} + [2148] ∈ {2148} + [2149] ∈ {2149} + [2150] ∈ {2150} + [2151] ∈ {2151} + [2152] ∈ {2152} + [2153] ∈ {2153} + [2154] ∈ {2154} + [2155] ∈ {2155} + [2156] ∈ {2156} + [2157] ∈ {2157} + [2158] ∈ {2158} + [2159] ∈ {2159} + [2160] ∈ {2160} + [2161] ∈ {2161} + [2162] ∈ {2162} + [2163] ∈ {2163} + [2164] ∈ {2164} + [2165] ∈ {2165} + [2166] ∈ {2166} + [2167] ∈ {2167} + [2168] ∈ {2168} + [2169] ∈ {2169} + [2170] ∈ {2170} + [2171] ∈ {2171} + [2172] ∈ {2172} + [2173] ∈ {2173} + [2174] ∈ {2174} + [2175] ∈ {2175} + [2176] ∈ {2176} + [2177] ∈ {2177} + [2178] ∈ {2178} + [2179] ∈ {2179} + [2180] ∈ {2180} + [2181] ∈ {2181} + [2182] ∈ {2182} + [2183] ∈ {2183} + [2184] ∈ {2184} + [2185] ∈ {2185} + [2186] ∈ {2186} + [2187] ∈ {2187} + [2188] ∈ {2188} + [2189] ∈ {2189} + [2190] ∈ {2190} + [2191] ∈ {2191} + [2192] ∈ {2192} + [2193] ∈ {2193} + [2194] ∈ {2194} + [2195] ∈ {2195} + [2196] ∈ {2196} + [2197] ∈ {2197} + [2198] ∈ {2198} + [2199] ∈ {2199} + [2200] ∈ {2200} + [2201] ∈ {2201} + [2202] ∈ {2202} + [2203] ∈ {2203} + [2204] ∈ {2204} + [2205] ∈ {2205} + [2206] ∈ {2206} + [2207] ∈ {2207} + [2208] ∈ {2208} + [2209] ∈ {2209} + [2210] ∈ {2210} + [2211] ∈ {2211} + [2212] ∈ {2212} + [2213] ∈ {2213} + [2214] ∈ {2214} + [2215] ∈ {2215} + [2216] ∈ {2216} + [2217] ∈ {2217} + [2218] ∈ {2218} + [2219] ∈ {2219} + [2220] ∈ {2220} + [2221] ∈ {2221} + [2222] ∈ {2222} + [2223] ∈ {2223} + [2224] ∈ {2224} + [2225] ∈ {2225} + [2226] ∈ {2226} + [2227] ∈ {2227} + [2228] ∈ {2228} + [2229] ∈ {2229} + [2230] ∈ {2230} + [2231] ∈ {2231} + [2232] ∈ {2232} + [2233] ∈ {2233} + [2234] ∈ {2234} + [2235] ∈ {2235} + [2236] ∈ {2236} + [2237] ∈ {2237} + [2238] ∈ {2238} + [2239] ∈ {2239} + [2240] ∈ {2240} + [2241] ∈ {2241} + [2242] ∈ {2242} + [2243] ∈ {2243} + [2244] ∈ {2244} + [2245] ∈ {2245} + [2246] ∈ {2246} + [2247] ∈ {2247} + [2248] ∈ {2248} + [2249] ∈ {2249} + [2250] ∈ {2250} + [2251] ∈ {2251} + [2252] ∈ {2252} + [2253] ∈ {2253} + [2254] ∈ {2254} + [2255] ∈ {2255} + [2256] ∈ {2256} + [2257] ∈ {2257} + [2258] ∈ {2258} + [2259] ∈ {2259} + [2260] ∈ {2260} + [2261] ∈ {2261} + [2262] ∈ {2262} + [2263] ∈ {2263} + [2264] ∈ {2264} + [2265] ∈ {2265} + [2266] ∈ {2266} + [2267] ∈ {2267} + [2268] ∈ {2268} + [2269] ∈ {2269} + [2270] ∈ {2270} + [2271] ∈ {2271} + [2272] ∈ {2272} + [2273] ∈ {2273} + [2274] ∈ {2274} + [2275] ∈ {2275} + [2276] ∈ {2276} + [2277] ∈ {2277} + [2278] ∈ {2278} + [2279] ∈ {2279} + [2280] ∈ {2280} + [2281] ∈ {2281} + [2282] ∈ {2282} + [2283] ∈ {2283} + [2284] ∈ {2284} + [2285] ∈ {2285} + [2286] ∈ {2286} + [2287] ∈ {2287} + [2288] ∈ {2288} + [2289] ∈ {2289} + [2290] ∈ {2290} + [2291] ∈ {2291} + [2292] ∈ {2292} + [2293] ∈ {2293} + [2294] ∈ {2294} + [2295] ∈ {2295} + [2296] ∈ {2296} + [2297] ∈ {2297} + [2298] ∈ {2298} + [2299] ∈ {2299} + [2300] ∈ {2300} + [2301] ∈ {2301} + [2302] ∈ {2302} + [2303] ∈ {2303} + [2304] ∈ {2304} + [2305] ∈ {2305} + [2306] ∈ {2306} + [2307] ∈ {2307} + [2308] ∈ {2308} + [2309] ∈ {2309} + [2310] ∈ {2310} + [2311] ∈ {2311} + [2312] ∈ {2312} + [2313] ∈ {2313} + [2314] ∈ {2314} + [2315] ∈ {2315} + [2316] ∈ {2316} + [2317] ∈ {2317} + [2318] ∈ {2318} + [2319] ∈ {2319} + [2320] ∈ {2320} + [2321] ∈ {2321} + [2322] ∈ {2322} + [2323] ∈ {2323} + [2324] ∈ {2324} + [2325] ∈ {2325} + [2326] ∈ {2326} + [2327] ∈ {2327} + [2328] ∈ {2328} + [2329] ∈ {2329} + [2330] ∈ {2330} + [2331] ∈ {2331} + [2332] ∈ {2332} + [2333] ∈ {2333} + [2334] ∈ {2334} + [2335] ∈ {2335} + [2336] ∈ {2336} + [2337] ∈ {2337} + [2338] ∈ {2338} + [2339] ∈ {2339} + [2340] ∈ {2340} + [2341] ∈ {2341} + [2342] ∈ {2342} + [2343] ∈ {2343} + [2344] ∈ {2344} + [2345] ∈ {2345} + [2346] ∈ {2346} + [2347] ∈ {2347} + [2348] ∈ {2348} + [2349] ∈ {2349} + [2350] ∈ {2350} + [2351] ∈ {2351} + [2352] ∈ {2352} + [2353] ∈ {2353} + [2354] ∈ {2354} + [2355] ∈ {2355} + [2356] ∈ {2356} + [2357] ∈ {2357} + [2358] ∈ {2358} + [2359] ∈ {2359} + [2360] ∈ {2360} + [2361] ∈ {2361} + [2362] ∈ {2362} + [2363] ∈ {2363} + [2364] ∈ {2364} + [2365] ∈ {2365} + [2366] ∈ {2366} + [2367] ∈ {2367} + [2368] ∈ {2368} + [2369] ∈ {2369} + [2370] ∈ {2370} + [2371] ∈ {2371} + [2372] ∈ {2372} + [2373] ∈ {2373} + [2374] ∈ {2374} + [2375] ∈ {2375} + [2376] ∈ {2376} + [2377] ∈ {2377} + [2378] ∈ {2378} + [2379] ∈ {2379} + [2380] ∈ {2380} + [2381] ∈ {2381} + [2382] ∈ {2382} + [2383] ∈ {2383} + [2384] ∈ {2384} + [2385] ∈ {2385} + [2386] ∈ {2386} + [2387] ∈ {2387} + [2388] ∈ {2388} + [2389] ∈ {2389} + [2390] ∈ {2390} + [2391] ∈ {2391} + [2392] ∈ {2392} + [2393] ∈ {2393} + [2394] ∈ {2394} + [2395] ∈ {2395} + [2396] ∈ {2396} + [2397] ∈ {2397} + [2398] ∈ {2398} + [2399] ∈ {2399} + [2400] ∈ {2400} + [2401] ∈ {2401} + [2402] ∈ {2402} + [2403] ∈ {2403} + [2404] ∈ {2404} + [2405] ∈ {2405} + [2406] ∈ {2406} + [2407] ∈ {2407} + [2408] ∈ {2408} + [2409] ∈ {2409} + [2410] ∈ {2410} + [2411] ∈ {2411} + [2412] ∈ {2412} + [2413] ∈ {2413} + [2414] ∈ {2414} + [2415] ∈ {2415} + [2416] ∈ {2416} + [2417] ∈ {2417} + [2418] ∈ {2418} + [2419] ∈ {2419} + [2420] ∈ {2420} + [2421] ∈ {2421} + [2422] ∈ {2422} + [2423] ∈ {2423} + [2424] ∈ {2424} + [2425] ∈ {2425} + [2426] ∈ {2426} + [2427] ∈ {2427} + [2428] ∈ {2428} + [2429] ∈ {2429} + [2430] ∈ {2430} + [2431] ∈ {2431} + [2432] ∈ {2432} + [2433] ∈ {2433} + [2434] ∈ {2434} + [2435] ∈ {2435} + [2436] ∈ {2436} + [2437] ∈ {2437} + [2438] ∈ {2438} + [2439] ∈ {2439} + [2440] ∈ {2440} + [2441] ∈ {2441} + [2442] ∈ {2442} + [2443] ∈ {2443} + [2444] ∈ {2444} + [2445] ∈ {2445} + [2446] ∈ {2446} + [2447] ∈ {2447} + [2448] ∈ {2448} + [2449] ∈ {2449} + [2450] ∈ {2450} + [2451] ∈ {2451} + [2452] ∈ {2452} + [2453] ∈ {2453} + [2454] ∈ {2454} + [2455] ∈ {2455} + [2456] ∈ {2456} + [2457] ∈ {2457} + [2458] ∈ {2458} + [2459] ∈ {2459} + [2460] ∈ {2460} + [2461] ∈ {2461} + [2462] ∈ {2462} + [2463] ∈ {2463} + [2464] ∈ {2464} + [2465] ∈ {2465} + [2466] ∈ {2466} + [2467] ∈ {2467} + [2468] ∈ {2468} + [2469] ∈ {2469} + [2470] ∈ {2470} + [2471] ∈ {2471} + [2472] ∈ {2472} + [2473] ∈ {2473} + [2474] ∈ {2474} + [2475] ∈ {2475} + [2476] ∈ {2476} + [2477] ∈ {2477} + [2478] ∈ {2478} + [2479] ∈ {2479} + [2480] ∈ {2480} + [2481] ∈ {2481} + [2482] ∈ {2482} + [2483] ∈ {2483} + [2484] ∈ {2484} + [2485] ∈ {2485} + [2486] ∈ {2486} + [2487] ∈ {2487} + [2488] ∈ {2488} + [2489] ∈ {2489} + [2490] ∈ {2490} + [2491] ∈ {2491} + [2492] ∈ {2492} + [2493] ∈ {2493} + [2494] ∈ {2494} + [2495] ∈ {2495} + [2496] ∈ {2496} + [2497] ∈ {2497} + [2498] ∈ {2498} + [2499] ∈ {2499} + [2500] ∈ {2500} + [2501] ∈ {2501} + [2502] ∈ {2502} + [2503] ∈ {2503} + [2504] ∈ {2504} + [2505] ∈ {2505} + [2506] ∈ {2506} + [2507] ∈ {2507} + [2508] ∈ {2508} + [2509] ∈ {2509} + [2510] ∈ {2510} + [2511] ∈ {2511} + [2512] ∈ {2512} + [2513] ∈ {2513} + [2514] ∈ {2514} + [2515] ∈ {2515} + [2516] ∈ {2516} + [2517] ∈ {2517} + [2518] ∈ {2518} + [2519] ∈ {2519} + [2520] ∈ {2520} + [2521] ∈ {2521} + [2522] ∈ {2522} + [2523] ∈ {2523} + [2524] ∈ {2524} + [2525] ∈ {2525} + [2526] ∈ {2526} + [2527] ∈ {2527} + [2528] ∈ {2528} + [2529] ∈ {2529} + [2530] ∈ {2530} + [2531] ∈ {2531} + [2532] ∈ {2532} + [2533] ∈ {2533} + [2534] ∈ {2534} + [2535] ∈ {2535} + [2536] ∈ {2536} + [2537] ∈ {2537} + [2538] ∈ {2538} + [2539] ∈ {2539} + [2540] ∈ {2540} + [2541] ∈ {2541} + [2542] ∈ {2542} + [2543] ∈ {2543} + [2544] ∈ {2544} + [2545] ∈ {2545} + [2546] ∈ {2546} + [2547] ∈ {2547} + [2548] ∈ {2548} + [2549] ∈ {2549} + [2550] ∈ {2550} + [2551] ∈ {2551} + [2552] ∈ {2552} + [2553] ∈ {2553} + [2554] ∈ {2554} + [2555] ∈ {2555} + [2556] ∈ {2556} + [2557] ∈ {2557} + [2558] ∈ {2558} + [2559] ∈ {2559} + [2560] ∈ {2560} + [2561] ∈ {2561} + [2562] ∈ {2562} + [2563] ∈ {2563} + [2564] ∈ {2564} + [2565] ∈ {2565} + [2566] ∈ {2566} + [2567] ∈ {2567} + [2568] ∈ {2568} + [2569] ∈ {2569} + [2570] ∈ {2570} + [2571] ∈ {2571} + [2572] ∈ {2572} + [2573] ∈ {2573} + [2574] ∈ {2574} + [2575] ∈ {2575} + [2576] ∈ {2576} + [2577] ∈ {2577} + [2578] ∈ {2578} + [2579] ∈ {2579} + [2580] ∈ {2580} + [2581] ∈ {2581} + [2582] ∈ {2582} + [2583] ∈ {2583} + [2584] ∈ {2584} + [2585] ∈ {2585} + [2586] ∈ {2586} + [2587] ∈ {2587} + [2588] ∈ {2588} + [2589] ∈ {2589} + [2590] ∈ {2590} + [2591] ∈ {2591} + [2592] ∈ {2592} + [2593] ∈ {2593} + [2594] ∈ {2594} + [2595] ∈ {2595} + [2596] ∈ {2596} + [2597] ∈ {2597} + [2598] ∈ {2598} + [2599] ∈ {2599} + [2600] ∈ {2600} + [2601] ∈ {2601} + [2602] ∈ {2602} + [2603] ∈ {2603} + [2604] ∈ {2604} + [2605] ∈ {2605} + [2606] ∈ {2606} + [2607] ∈ {2607} + [2608] ∈ {2608} + [2609] ∈ {2609} + [2610] ∈ {2610} + [2611] ∈ {2611} + [2612] ∈ {2612} + [2613] ∈ {2613} + [2614] ∈ {2614} + [2615] ∈ {2615} + [2616] ∈ {2616} + [2617] ∈ {2617} + [2618] ∈ {2618} + [2619] ∈ {2619} + [2620] ∈ {2620} + [2621] ∈ {2621} + [2622] ∈ {2622} + [2623] ∈ {2623} + [2624] ∈ {2624} + [2625] ∈ {2625} + [2626] ∈ {2626} + [2627] ∈ {2627} + [2628] ∈ {2628} + [2629] ∈ {2629} + [2630] ∈ {2630} + [2631] ∈ {2631} + [2632] ∈ {2632} + [2633] ∈ {2633} + [2634] ∈ {2634} + [2635] ∈ {2635} + [2636] ∈ {2636} + [2637] ∈ {2637} + [2638] ∈ {2638} + [2639] ∈ {2639} + [2640] ∈ {2640} + [2641] ∈ {2641} + [2642] ∈ {2642} + [2643] ∈ {2643} + [2644] ∈ {2644} + [2645] ∈ {2645} + [2646] ∈ {2646} + [2647] ∈ {2647} + [2648] ∈ {2648} + [2649] ∈ {2649} + [2650] ∈ {2650} + [2651] ∈ {2651} + [2652] ∈ {2652} + [2653] ∈ {2653} + [2654] ∈ {2654} + [2655] ∈ {2655} + [2656] ∈ {2656} + [2657] ∈ {2657} + [2658] ∈ {2658} + [2659] ∈ {2659} + [2660] ∈ {2660} + [2661] ∈ {2661} + [2662] ∈ {2662} + [2663] ∈ {2663} + [2664] ∈ {2664} + [2665] ∈ {2665} + [2666] ∈ {2666} + [2667] ∈ {2667} + [2668] ∈ {2668} + [2669] ∈ {2669} + [2670] ∈ {2670} + [2671] ∈ {2671} + [2672] ∈ {2672} + [2673] ∈ {2673} + [2674] ∈ {2674} + [2675] ∈ {2675} + [2676] ∈ {2676} + [2677] ∈ {2677} + [2678] ∈ {2678} + [2679] ∈ {2679} + [2680] ∈ {2680} + [2681] ∈ {2681} + [2682] ∈ {2682} + [2683] ∈ {2683} + [2684] ∈ {2684} + [2685] ∈ {2685} + [2686] ∈ {2686} + [2687] ∈ {2687} + [2688] ∈ {2688} + [2689] ∈ {2689} + [2690] ∈ {2690} + [2691] ∈ {2691} + [2692] ∈ {2692} + [2693] ∈ {2693} + [2694] ∈ {2694} + [2695] ∈ {2695} + [2696] ∈ {2696} + [2697] ∈ {2697} + [2698] ∈ {2698} + [2699] ∈ {2699} + [2700] ∈ {2700} + [2701] ∈ {2701} + [2702] ∈ {2702} + [2703] ∈ {2703} + [2704] ∈ {2704} + [2705] ∈ {2705} + [2706] ∈ {2706} + [2707] ∈ {2707} + [2708] ∈ {2708} + [2709] ∈ {2709} + [2710] ∈ {2710} + [2711] ∈ {2711} + [2712] ∈ {2712} + [2713] ∈ {2713} + [2714] ∈ {2714} + [2715] ∈ {2715} + [2716] ∈ {2716} + [2717] ∈ {2717} + [2718] ∈ {2718} + [2719] ∈ {2719} + [2720] ∈ {2720} + [2721] ∈ {2721} + [2722] ∈ {2722} + [2723] ∈ {2723} + [2724] ∈ {2724} + [2725] ∈ {2725} + [2726] ∈ {2726} + [2727] ∈ {2727} + [2728] ∈ {2728} + [2729] ∈ {2729} + [2730] ∈ {2730} + [2731] ∈ {2731} + [2732] ∈ {2732} + [2733] ∈ {2733} + [2734] ∈ {2734} + [2735] ∈ {2735} + [2736] ∈ {2736} + [2737] ∈ {2737} + [2738] ∈ {2738} + [2739] ∈ {2739} + [2740] ∈ {2740} + [2741] ∈ {2741} + [2742] ∈ {2742} + [2743] ∈ {2743} + [2744] ∈ {2744} + [2745] ∈ {2745} + [2746] ∈ {2746} + [2747] ∈ {2747} + [2748] ∈ {2748} + [2749] ∈ {2749} + [2750] ∈ {2750} + [2751] ∈ {2751} + [2752] ∈ {2752} + [2753] ∈ {2753} + [2754] ∈ {2754} + [2755] ∈ {2755} + [2756] ∈ {2756} + [2757] ∈ {2757} + [2758] ∈ {2758} + [2759] ∈ {2759} + [2760] ∈ {2760} + [2761] ∈ {2761} + [2762] ∈ {2762} + [2763] ∈ {2763} + [2764] ∈ {2764} + [2765] ∈ {2765} + [2766] ∈ {2766} + [2767] ∈ {2767} + [2768] ∈ {2768} + [2769] ∈ {2769} + [2770] ∈ {2770} + [2771] ∈ {2771} + [2772] ∈ {2772} + [2773] ∈ {2773} + [2774] ∈ {2774} + [2775] ∈ {2775} + [2776] ∈ {2776} + [2777] ∈ {2777} + [2778] ∈ {2778} + [2779] ∈ {2779} + [2780] ∈ {2780} + [2781] ∈ {2781} + [2782] ∈ {2782} + [2783] ∈ {2783} + [2784] ∈ {2784} + [2785] ∈ {2785} + [2786] ∈ {2786} + [2787] ∈ {2787} + [2788] ∈ {2788} + [2789] ∈ {2789} + [2790] ∈ {2790} + [2791] ∈ {2791} + [2792] ∈ {2792} + [2793] ∈ {2793} + [2794] ∈ {2794} + [2795] ∈ {2795} + [2796] ∈ {2796} + [2797] ∈ {2797} + [2798] ∈ {2798} + [2799] ∈ {2799} + [2800] ∈ {2800} + [2801] ∈ {2801} + [2802] ∈ {2802} + [2803] ∈ {2803} + [2804] ∈ {2804} + [2805] ∈ {2805} + [2806] ∈ {2806} + [2807] ∈ {2807} + [2808] ∈ {2808} + [2809] ∈ {2809} + [2810] ∈ {2810} + [2811] ∈ {2811} + [2812] ∈ {2812} + [2813] ∈ {2813} + [2814] ∈ {2814} + [2815] ∈ {2815} + [2816] ∈ {2816} + [2817] ∈ {2817} + [2818] ∈ {2818} + [2819] ∈ {2819} + [2820] ∈ {2820} + [2821] ∈ {2821} + [2822] ∈ {2822} + [2823] ∈ {2823} + [2824] ∈ {2824} + [2825] ∈ {2825} + [2826] ∈ {2826} + [2827] ∈ {2827} + [2828] ∈ {2828} + [2829] ∈ {2829} + [2830] ∈ {2830} + [2831] ∈ {2831} + [2832] ∈ {2832} + [2833] ∈ {2833} + [2834] ∈ {2834} + [2835] ∈ {2835} + [2836] ∈ {2836} + [2837] ∈ {2837} + [2838] ∈ {2838} + [2839] ∈ {2839} + [2840] ∈ {2840} + [2841] ∈ {2841} + [2842] ∈ {2842} + [2843] ∈ {2843} + [2844] ∈ {2844} + [2845] ∈ {2845} + [2846] ∈ {2846} + [2847] ∈ {2847} + [2848] ∈ {2848} + [2849] ∈ {2849} + [2850] ∈ {2850} + [2851] ∈ {2851} + [2852] ∈ {2852} + [2853] ∈ {2853} + [2854] ∈ {2854} + [2855] ∈ {2855} + [2856] ∈ {2856} + [2857] ∈ {2857} + [2858] ∈ {2858} + [2859] ∈ {2859} + [2860] ∈ {2860} + [2861] ∈ {2861} + [2862] ∈ {2862} + [2863] ∈ {2863} + [2864] ∈ {2864} + [2865] ∈ {2865} + [2866] ∈ {2866} + [2867] ∈ {2867} + [2868] ∈ {2868} + [2869] ∈ {2869} + [2870] ∈ {2870} + [2871] ∈ {2871} + [2872] ∈ {2872} + [2873] ∈ {2873} + [2874] ∈ {2874} + [2875] ∈ {2875} + [2876] ∈ {2876} + [2877] ∈ {2877} + [2878] ∈ {2878} + [2879] ∈ {2879} + [2880] ∈ {2880} + [2881] ∈ {2881} + [2882] ∈ {2882} + [2883] ∈ {2883} + [2884] ∈ {2884} + [2885] ∈ {2885} + [2886] ∈ {2886} + [2887] ∈ {2887} + [2888] ∈ {2888} + [2889] ∈ {2889} + [2890] ∈ {2890} + [2891] ∈ {2891} + [2892] ∈ {2892} + [2893] ∈ {2893} + [2894] ∈ {2894} + [2895] ∈ {2895} + [2896] ∈ {2896} + [2897] ∈ {2897} + [2898] ∈ {2898} + [2899] ∈ {2899} + [2900] ∈ {2900} + [2901] ∈ {2901} + [2902] ∈ {2902} + [2903] ∈ {2903} + [2904] ∈ {2904} + [2905] ∈ {2905} + [2906] ∈ {2906} + [2907] ∈ {2907} + [2908] ∈ {2908} + [2909] ∈ {2909} + [2910] ∈ {2910} + [2911] ∈ {2911} + [2912] ∈ {2912} + [2913] ∈ {2913} + [2914] ∈ {2914} + [2915] ∈ {2915} + [2916] ∈ {2916} + [2917] ∈ {2917} + [2918] ∈ {2918} + [2919] ∈ {2919} + [2920] ∈ {2920} + [2921] ∈ {2921} + [2922] ∈ {2922} + [2923] ∈ {2923} + [2924] ∈ {2924} + [2925] ∈ {2925} + [2926] ∈ {2926} + [2927] ∈ {2927} + [2928] ∈ {2928} + [2929] ∈ {2929} + [2930] ∈ {2930} + [2931] ∈ {2931} + [2932] ∈ {2932} + [2933] ∈ {2933} + [2934] ∈ {2934} + [2935] ∈ {2935} + [2936] ∈ {2936} + [2937] ∈ {2937} + [2938] ∈ {2938} + [2939] ∈ {2939} + [2940] ∈ {2940} + [2941] ∈ {2941} + [2942] ∈ {2942} + [2943] ∈ {2943} + [2944] ∈ {2944} + [2945] ∈ {2945} + [2946] ∈ {2946} + [2947] ∈ {2947} + [2948] ∈ {2948} + [2949] ∈ {2949} + [2950] ∈ {2950} + [2951] ∈ {2951} + [2952] ∈ {2952} + [2953] ∈ {2953} + [2954] ∈ {2954} + [2955] ∈ {2955} + [2956] ∈ {2956} + [2957] ∈ {2957} + [2958] ∈ {2958} + [2959] ∈ {2959} + [2960] ∈ {2960} + [2961] ∈ {2961} + [2962] ∈ {2962} + [2963] ∈ {2963} + [2964] ∈ {2964} + [2965] ∈ {2965} + [2966] ∈ {2966} + [2967] ∈ {2967} + [2968] ∈ {2968} + [2969] ∈ {2969} + [2970] ∈ {2970} + [2971] ∈ {2971} + [2972] ∈ {2972} + [2973] ∈ {2973} + [2974] ∈ {2974} + [2975] ∈ {2975} + [2976] ∈ {2976} + [2977] ∈ {2977} + [2978] ∈ {2978} + [2979] ∈ {2979} + [2980] ∈ {2980} + [2981] ∈ {2981} + [2982] ∈ {2982} + [2983] ∈ {2983} + [2984] ∈ {2984} + [2985] ∈ {2985} + [2986] ∈ {2986} + [2987] ∈ {2987} + [2988] ∈ {2988} + [2989] ∈ {2989} + [2990] ∈ {2990} + [2991] ∈ {2991} + [2992] ∈ {2992} + [2993] ∈ {2993} + [2994] ∈ {2994} + [2995] ∈ {2995} + [2996] ∈ {2996} + [2997] ∈ {2997} + [2998] ∈ {2998} + [2999] ∈ {2999} +[from] Computing for function f +[from] Done for function f +[from] Computing for function init +[from] Done for function init +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + t[1] FROM t[0] +[from] Function init: + FROMTOP +[from] Function main: + FROMTOP +[from] ====== END OF DEPENDENCIES ====== +[from] ====== DISPLAYING CALLWISE DEPENDENCIES ====== +[from] call to init at tests/value/no_results.c:19 (by main): + FROMTOP +[from] call to f at tests/value/no_results.c:20 (by main): + t[1] FROM t[0] +[from] entry point: + FROMTOP +[from] ====== END OF CALLWISE DEPENDENCIES ====== +[inout] Out (internal) for function f: + t[1] +[inout] Inputs for function f: + t[0] +[inout] InOut (internal) for function f: + Operational inputs: + t[0] + Operational inputs on termination: + t[0] + Sure outputs: + t[1] +[inout] Out (internal) for function init: + ANYTHING(origin:Unknown) +[inout] Inputs for function init: + \nothing +[inout] InOut (internal) for function init: + Operational inputs: + ANYTHING(origin:Unknown) + Operational inputs on termination: + ANYTHING(origin:Unknown) + Sure outputs: + \nothing +[inout] Out (internal) for function main: + ANYTHING(origin:Unknown) +[inout] Inputs for function main: + t[0] +[inout] InOut (internal) for function main: + Operational inputs: + ANYTHING(origin:Unknown) + Operational inputs on termination: + ANYTHING(origin:Unknown) + Sure outputs: + t[1] diff --git a/tests/value/oracle_symblocs/non_iso_initializer.err.oracle b/tests/value/oracle_symblocs/non_iso_initializer.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/non_iso_initializer.res.oracle b/tests/value/oracle_symblocs/non_iso_initializer.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..156e2e54e9dac87a1e495bedaf66cd8be7f630fb --- /dev/null +++ b/tests/value/oracle_symblocs/non_iso_initializer.res.oracle @@ -0,0 +1,26 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/non_iso_initializer.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + G0 ∈ {42} + G1 ∈ {21} + G2 ∈ {63} + G3 ∈ {-1} +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + G3 ∈ {105} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + G3 FROM G0; G2 +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + G3 +[inout] Inputs for function main: + G0; G2 diff --git a/tests/value/oracle_symblocs/non_natural.err.oracle b/tests/value/oracle_symblocs/non_natural.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/non_natural.res.oracle b/tests/value/oracle_symblocs/non_natural.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..55819a4f8b2017af3b64a1393bd48c9cf319abf2 --- /dev/null +++ b/tests/value/oracle_symblocs/non_natural.res.oracle @@ -0,0 +1,237 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/non_natural.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + v ∈ [--..--] +[value] computing for function main1 <- main. + Called from tests/value/non_natural.i:63. +tests/value/non_natural.i:13:[kernel] warning: Non-natural loop detected. +[value] Called Frama_C_show_each({0}) +[value] Called Frama_C_show_each({0; 1}) +[value] Called Frama_C_show_each({0; 1; 2}) +[value] Called Frama_C_show_each({0; 1; 2; 3}) +[value] Called Frama_C_show_each([0..999999]) +[value] Recording results for main1 +[value] Done for function main1 +[value] computing for function main2 <- main. + Called from tests/value/non_natural.i:64. +[value] computing for function duff1 <- main2 <- main. + Called from tests/value/non_natural.i:57. +tests/value/non_natural.i:21:[kernel] warning: Non-natural loop detected. +tests/value/non_natural.i:21:[value] entering loop for the first time +[value] Called Frama_C_show_each({{ &p2 }}) +[value] Called Frama_C_show_each({{ &p2 + {0; 32} }}) +[value] Called Frama_C_show_each({{ &p2 + {0; 32; 64} }}) +[value] Called Frama_C_show_each({{ &p2 + {0; 32; 64; 96} }}) +[value] Called Frama_C_show_each({{ &p2 + {0; 32; 64; 96; 128} }}) +[value] Called Frama_C_show_each({{ &p2 + [0..399968],0%32 }}) +tests/value/non_natural.i:23:[kernel] more than 200(12500) locations to update in array. Approximating. +tests/value/non_natural.i:23:[kernel] more than 200(12500) elements to enumerate. Approximating. +tests/value/non_natural.i:24:[kernel] more than 200(12500) locations to update in array. Approximating. +tests/value/non_natural.i:24:[kernel] more than 200(12500) elements to enumerate. Approximating. +tests/value/non_natural.i:25:[value] warning: out of bounds read. assert \valid_read(tmp_4); + (tmp_4 from from++) +tests/value/non_natural.i:25:[kernel] more than 200(12500) locations to update in array. Approximating. +tests/value/non_natural.i:25:[kernel] more than 200(12500) elements to enumerate. Approximating. +tests/value/non_natural.i:26:[value] warning: out of bounds read. assert \valid_read(tmp_6); + (tmp_6 from from++) +tests/value/non_natural.i:26:[kernel] more than 200(12500) locations to update in array. Approximating. +tests/value/non_natural.i:26:[kernel] more than 200(12500) elements to enumerate. Approximating. +tests/value/non_natural.i:27:[value] warning: out of bounds read. assert \valid_read(tmp_8); + (tmp_8 from from++) +tests/value/non_natural.i:27:[kernel] more than 200(12500) locations to update in array. Approximating. +tests/value/non_natural.i:27:[kernel] more than 200(12500) elements to enumerate. Approximating. +tests/value/non_natural.i:28:[value] warning: out of bounds read. assert \valid_read(tmp_10); + (tmp_10 from from++) +tests/value/non_natural.i:28:[kernel] more than 200(12500) locations to update in array. Approximating. +tests/value/non_natural.i:28:[kernel] more than 200(12500) elements to enumerate. Approximating. +tests/value/non_natural.i:29:[value] warning: out of bounds read. assert \valid_read(tmp_12); + (tmp_12 from from++) +tests/value/non_natural.i:29:[kernel] more than 200(12500) locations to update in array. Approximating. +tests/value/non_natural.i:29:[kernel] more than 200(12500) elements to enumerate. Approximating. +tests/value/non_natural.i:30:[value] warning: out of bounds read. assert \valid_read(tmp_14); + (tmp_14 from from++) +tests/value/non_natural.i:30:[kernel] more than 200(12500) locations to update in array. Approximating. +tests/value/non_natural.i:30:[kernel] more than 200(12500) elements to enumerate. Approximating. +[value] Called Frama_C_show_each({{ &p2 + [0..400000],0%32 }}) +tests/value/non_natural.i:23:[value] warning: out of bounds write. assert \valid(tmp); + (tmp from to++) +tests/value/non_natural.i:23:[value] warning: out of bounds read. assert \valid_read(tmp_0); + (tmp_0 from from++) +tests/value/non_natural.i:24:[value] warning: out of bounds write. assert \valid(tmp_1); + (tmp_1 from to++) +tests/value/non_natural.i:24:[value] warning: out of bounds read. assert \valid_read(tmp_2); + (tmp_2 from from++) +tests/value/non_natural.i:25:[value] warning: out of bounds write. assert \valid(tmp_3); + (tmp_3 from to++) +tests/value/non_natural.i:26:[value] warning: out of bounds write. assert \valid(tmp_5); + (tmp_5 from to++) +tests/value/non_natural.i:27:[value] warning: out of bounds write. assert \valid(tmp_7); + (tmp_7 from to++) +tests/value/non_natural.i:28:[value] warning: out of bounds write. assert \valid(tmp_9); + (tmp_9 from to++) +tests/value/non_natural.i:29:[value] warning: out of bounds write. assert \valid(tmp_11); + (tmp_11 from to++) +tests/value/non_natural.i:30:[value] warning: out of bounds write. assert \valid(tmp_13); + (tmp_13 from to++) +[value] Called Frama_C_show_each({{ &p2 + [0..--],0%32 }}) +[value] Recording results for duff1 +[value] Done for function duff1 +tests/value/non_natural.i:58:[value] warning: accessing out of bounds index. assert 0 ≤ o; +tests/value/non_natural.i:58:[value] warning: accessing out of bounds index. assert o < 100002; +[value] computing for function duff2 <- main2 <- main. + Called from tests/value/non_natural.i:59. +tests/value/non_natural.i:38:[kernel] warning: Non-natural loop detected. +[value] Called Frama_C_show_each({{ &p2 }}) +[value] Called Frama_C_show_each({{ &p2 + {0; 32} }}) +[value] Called Frama_C_show_each({{ &p2 + {0; 32; 64} }}) +[value] Called Frama_C_show_each({{ &p2 + [0..399968],0%32 }}) +tests/value/non_natural.i:39:[kernel] more than 200(12500) locations to update in array. Approximating. +tests/value/non_natural.i:39:[kernel] more than 200(12500) elements to enumerate. Approximating. +tests/value/non_natural.i:40:[kernel] more than 200(12500) locations to update in array. Approximating. +tests/value/non_natural.i:41:[value] warning: out of bounds read. assert \valid_read(tmp_4); + (tmp_4 from from++) +tests/value/non_natural.i:41:[kernel] more than 200(12500) locations to update in array. Approximating. +tests/value/non_natural.i:42:[value] warning: out of bounds read. assert \valid_read(tmp_6); + (tmp_6 from from++) +tests/value/non_natural.i:42:[kernel] more than 200(12500) locations to update in array. Approximating. +tests/value/non_natural.i:43:[value] warning: out of bounds read. assert \valid_read(tmp_8); + (tmp_8 from from++) +tests/value/non_natural.i:43:[kernel] more than 200(12500) locations to update in array. Approximating. +tests/value/non_natural.i:44:[value] warning: out of bounds read. assert \valid_read(tmp_10); + (tmp_10 from from++) +tests/value/non_natural.i:44:[kernel] more than 200(12500) locations to update in array. Approximating. +tests/value/non_natural.i:45:[value] warning: out of bounds read. assert \valid_read(tmp_12); + (tmp_12 from from++) +tests/value/non_natural.i:45:[kernel] more than 200(12500) locations to update in array. Approximating. +tests/value/non_natural.i:46:[value] warning: out of bounds read. assert \valid_read(tmp_14); + (tmp_14 from from++) +tests/value/non_natural.i:46:[kernel] more than 200(12500) locations to update in array. Approximating. +[value] Called Frama_C_show_each({{ &p2 + [0..400000],0%32 }}) +tests/value/non_natural.i:39:[value] warning: out of bounds write. assert \valid(tmp); + (tmp from to++) +tests/value/non_natural.i:39:[value] warning: out of bounds read. assert \valid_read(tmp_0); + (tmp_0 from from++) +tests/value/non_natural.i:40:[value] warning: out of bounds write. assert \valid(tmp_1); + (tmp_1 from to++) +tests/value/non_natural.i:40:[value] warning: out of bounds read. assert \valid_read(tmp_2); + (tmp_2 from from++) +tests/value/non_natural.i:41:[value] warning: out of bounds write. assert \valid(tmp_3); + (tmp_3 from to++) +tests/value/non_natural.i:42:[value] warning: out of bounds write. assert \valid(tmp_5); + (tmp_5 from to++) +tests/value/non_natural.i:43:[value] warning: out of bounds write. assert \valid(tmp_7); + (tmp_7 from to++) +tests/value/non_natural.i:44:[value] warning: out of bounds write. assert \valid(tmp_9); + (tmp_9 from to++) +tests/value/non_natural.i:45:[value] warning: out of bounds write. assert \valid(tmp_11); + (tmp_11 from to++) +tests/value/non_natural.i:46:[value] warning: out of bounds write. assert \valid(tmp_13); + (tmp_13 from to++) +[value] Called Frama_C_show_each({{ &p2 + [0..--],0%32 }}) +[value] Recording results for duff2 +[value] Done for function duff2 +[value] Recording results for main2 +[value] Done for function main2 +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function duff1: + to ∈ {{ &p2 + [32..--],0%32 }} + from ∈ {{ &p1 + [32..--],0%32 }} + n ∈ {0} + p2[0..99999] ∈ {1} or UNINITIALIZED +[value:final-states] Values at end of function duff2: + to ∈ {{ &p2 + [32..--],0%32 }} + from ∈ {{ &p1 + [32..--],0%32 }} + n ∈ {0} + p2[0..99999] ∈ {1; 2} or UNINITIALIZED +[value:final-states] Values at end of function main1: + c ∈ {1000000} +tests/value/non_natural.i:23:[kernel] more than 200(12501) elements to enumerate. Approximating. +tests/value/non_natural.i:24:[kernel] more than 200(12501) elements to enumerate. Approximating. +[value:final-states] Values at end of function main2: + p1[0..100001] ∈ {1; 2} or UNINITIALIZED + p2[0..99999] ∈ {1; 2} or UNINITIALIZED + o ∈ [0..100001] +[value:final-states] Values at end of function main: + +[from] Computing for function duff1 +tests/value/non_natural.i:23:[kernel] more than 200(12500) dependencies to update. Approximating. +tests/value/non_natural.i:24:[kernel] more than 200(12500) dependencies to update. Approximating. +tests/value/non_natural.i:25:[kernel] more than 200(12500) dependencies to update. Approximating. +tests/value/non_natural.i:26:[kernel] more than 200(12500) dependencies to update. Approximating. +tests/value/non_natural.i:27:[kernel] more than 200(12500) dependencies to update. Approximating. +tests/value/non_natural.i:28:[kernel] more than 200(12500) dependencies to update. Approximating. +tests/value/non_natural.i:29:[kernel] more than 200(12500) dependencies to update. Approximating. +tests/value/non_natural.i:30:[kernel] more than 200(12500) dependencies to update. Approximating. +[from] Done for function duff1 +[from] Computing for function duff2 +tests/value/non_natural.i:39:[kernel] more than 200(12500) dependencies to update. Approximating. +tests/value/non_natural.i:40:[kernel] more than 200(12500) dependencies to update. Approximating. +tests/value/non_natural.i:41:[kernel] more than 200(12500) dependencies to update. Approximating. +tests/value/non_natural.i:42:[kernel] more than 200(12500) dependencies to update. Approximating. +tests/value/non_natural.i:43:[kernel] more than 200(12500) dependencies to update. Approximating. +tests/value/non_natural.i:44:[kernel] more than 200(12500) dependencies to update. Approximating. +tests/value/non_natural.i:45:[kernel] more than 200(12500) dependencies to update. Approximating. +tests/value/non_natural.i:46:[kernel] more than 200(12500) dependencies to update. Approximating. +[from] Done for function duff2 +[from] Computing for function main1 +[from] Done for function main1 +[from] Computing for function main2 +[from] Done for function main2 +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function duff1: + p2[0] FROM to; from; count; p1[0..100000] (and SELF) + [1..99992] FROM to; from; count; p1[0..100001] (and SELF) + [99993] FROM to; from; count; p1[1..100001] (and SELF) + [99994] FROM to; from; count; p1[2..99999] (and SELF) + [99995] FROM to; from; count; p1[3..99999] (and SELF) + [99996] FROM to; from; count; p1[4..99999] (and SELF) + [99997] FROM to; from; count; p1[5..99999] (and SELF) + [99998] FROM to; from; count; p1[6..99999] (and SELF) + [99999] FROM to; from; count; p1[7..99999] (and SELF) +[from] Function duff2: + p2[0] FROM to; from; count; p1[0..100000] (and SELF) + [1..99992] FROM to; from; count; p1[0..100001] (and SELF) + [99993] FROM to; from; count; p1[1..100001] (and SELF) + [99994] FROM to; from; count; p1[2..99999] (and SELF) + [99995] FROM to; from; count; p1[3..99999] (and SELF) + [99996] FROM to; from; count; p1[4..99999] (and SELF) + [99997] FROM to; from; count; p1[5..99999] (and SELF) + [99998] FROM to; from; count; p1[6..99999] (and SELF) + [99999] FROM to; from; count; p1[7..99999] (and SELF) +[from] Function main1: + NO EFFECTS +[from] Function main2: + NO EFFECTS +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function duff1: + to; from; n; tmp; tmp_0; tmp_1; tmp_2; tmp_3; tmp_4; tmp_5; tmp_6; + tmp_7; tmp_8; tmp_9; tmp_10; tmp_11; tmp_12; tmp_13; tmp_14; p2[0..99999] +[inout] Inputs for function duff1: + p1[0..100001] +[inout] Out (internal) for function duff2: + to; from; n; tmp; tmp_0; tmp_1; tmp_2; tmp_3; tmp_4; tmp_5; tmp_6; + tmp_7; tmp_8; tmp_9; tmp_10; tmp_11; tmp_12; tmp_13; tmp_14; p2[0..99999] +[inout] Inputs for function duff2: + p1[0..100001] +[inout] Out (internal) for function main1: + c +[inout] Inputs for function main1: + v +[inout] Out (internal) for function main2: + p1[0..100001]; p2[0..99999]; o +[inout] Inputs for function main2: + v +[inout] Out (internal) for function main: + \nothing +[inout] Inputs for function main: + v diff --git a/tests/value/oracle_symblocs/nonlin.err.oracle b/tests/value/oracle_symblocs/nonlin.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/nonlin.res.oracle b/tests/value/oracle_symblocs/nonlin.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..d93e3ff02dbc32dd39fe2d0bd7712e713e01a110 --- /dev/null +++ b/tests/value/oracle_symblocs/nonlin.res.oracle @@ -0,0 +1,42 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/nonlin.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + v ∈ [--..--] + vs ∈ [--..--] +tests/value/nonlin.c:10:[value:nonlin] non-linear '((int)z + 675) * ((int)z + 675)', lv 'z' +tests/value/nonlin.c:11:[value:nonlin] non-linear '((int)z + 17817) * ((int)z + 17817)', lv 'z' +tests/value/nonlin.c:11:[value] warning: signed overflow. + assert (int)((int)z+17817)*(int)((int)z+17817) ≤ 2147483647; +tests/value/nonlin.c:18:[value:nonlin] non-linear 'i1 * i1', lv 'i1' +tests/value/nonlin.c:18:[value:nonlin] non-linear '(i2 + (long long)3) * (i2 + (long long)3)', lv 'i2' +tests/value/nonlin.c:22:[value] warning: assertion got status unknown. +tests/value/nonlin.c:23:[value:nonlin] non-linear '(int)idx * (int)idx', lv 'idx' +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + z ∈ [-32768..28523] + k ∈ [-2..1118367364] + l ∈ [0..2147395600] + x ∈ {8} + p ∈ {{ &x + {32} }} + i1 ∈ [-32768..32767] + i2 ∈ [-32768..32767] + r ∈ [-2..2147614724] + t[0..100] ∈ {1} or UNINITIALIZED + [101] ∈ UNINITIALIZED + idx ∈ [0..10] +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + z; k; l; x; p; i1; i2; r; t[0..100]; idx +[inout] Inputs for function main: + v; vs diff --git a/tests/value/oracle_symblocs/noreturn.err.oracle b/tests/value/oracle_symblocs/noreturn.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/noreturn.res.oracle b/tests/value/oracle_symblocs/noreturn.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..9cfce259c4a02e960aba061cfa794b18381a9218 --- /dev/null +++ b/tests/value/oracle_symblocs/noreturn.res.oracle @@ -0,0 +1,113 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/noreturn.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +tests/value/noreturn.i:22:[value] warning: global initialization of volatile variable v ignored +[value] Initial state computed +[value:initial-state] Values of globals at initialization + v ∈ [--..--] +[value] computing for function warn_may_never_end <- main. + Called from tests/value/noreturn.i:26. +tests/value/noreturn.i:20:[value] entering loop for the first time +[value] Recording results for warn_may_never_end +[value] Done for function warn_may_never_end +[value] computing for function warn_may_never_end <- main. + Called from tests/value/noreturn.i:27. +[value] Recording results for warn_may_never_end +[value] Done for function warn_may_never_end +[value] computing for function warn_never_ends <- main. + Called from tests/value/noreturn.i:28. +tests/value/noreturn.i:16:[value] entering loop for the first time +[value] Recording results for warn_never_ends +[value] Done for function warn_never_ends +[value] computing for function stop <- main. + Called from tests/value/noreturn.i:29. +tests/value/noreturn.i:29:[kernel] warning: Neither code nor specification for function stop, generating default assigns from the prototype +[value] using specification for function stop +[value] Done for function stop +[value] computing for function haltme <- main. + Called from tests/value/noreturn.i:30. +tests/value/noreturn.i:30:[kernel] warning: Neither code nor specification for function haltme, generating default assigns from the prototype +[value] using specification for function haltme +[value] Done for function haltme +[value] computing for function never_ends <- main. + Called from tests/value/noreturn.i:31. +tests/value/noreturn.i:7:[value] entering loop for the first time +[value] Recording results for never_ends +[value] Done for function never_ends +[value] computing for function should_never_end <- main. + Called from tests/value/noreturn.i:32. +tests/value/noreturn.i:13:[value] entering loop for the first time +[value] Recording results for should_never_end +tests/value/noreturn.i:13:[value] warning: function should_never_end may terminate but has the noreturn attribute +[value] Done for function should_never_end +[value] computing for function should_never_end <- main. + Called from tests/value/noreturn.i:33. +[value] Recording results for should_never_end +[value] Done for function should_never_end +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function never_ends: + NON TERMINATING FUNCTION +[value:final-states] Values at end of function should_never_end: + +[value:final-states] Values at end of function warn_may_never_end: + +[value:final-states] Values at end of function warn_never_ends: + NON TERMINATING FUNCTION +[value:final-states] Values at end of function main: + x ∈ {0} +[from] Computing for function never_ends +[from] Non-terminating function never_ends (no dependencies) +[from] Done for function never_ends +[from] Computing for function should_never_end +[from] Done for function should_never_end +[from] Computing for function warn_may_never_end +[from] Done for function warn_may_never_end +[from] Computing for function warn_never_ends +[from] Non-terminating function warn_never_ends (no dependencies) +[from] Done for function warn_never_ends +[from] Computing for function main +[from] Computing for function stop <-main +[from] Done for function stop +[from] Computing for function haltme <-main +[from] Done for function haltme +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function haltme: + \result FROM \nothing +[from] Function never_ends: + NON TERMINATING - NO EFFECTS +[from] Function should_never_end: + NO EFFECTS +[from] Function stop: + NO EFFECTS +[from] Function warn_may_never_end: + NO EFFECTS +[from] Function warn_never_ends: + NON TERMINATING - NO EFFECTS +[from] Function main: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function never_ends: + \nothing +[inout] Inputs for function never_ends: + \nothing +[inout] Out (internal) for function should_never_end: + \nothing +[inout] Inputs for function should_never_end: + \nothing +[inout] Out (internal) for function warn_may_never_end: + \nothing +[inout] Inputs for function warn_may_never_end: + \nothing +[inout] Out (internal) for function warn_never_ends: + \nothing +[inout] Inputs for function warn_never_ends: + \nothing +[inout] Out (internal) for function main: + x +[inout] Inputs for function main: + v diff --git a/tests/value/oracle_symblocs/not.err.oracle b/tests/value/oracle_symblocs/not.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/not.res.oracle b/tests/value/oracle_symblocs/not.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..610f0ac332ff8d427202c02768ac2dd74c6da4d4 --- /dev/null +++ b/tests/value/oracle_symblocs/not.res.oracle @@ -0,0 +1,24 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/not.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + x ∈ {0} +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + x ∈ {0; 1} + loc ∈ [--..--] +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + x FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + x; loc +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/not_ct_array_arg.err.oracle b/tests/value/oracle_symblocs/not_ct_array_arg.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/not_ct_array_arg.res.oracle b/tests/value/oracle_symblocs/not_ct_array_arg.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..189510084bbdeccd7993ab323a4b2432263d326a --- /dev/null +++ b/tests/value/oracle_symblocs/not_ct_array_arg.res.oracle @@ -0,0 +1,65 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/not_ct_array_arg.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + v ∈ [--..--] +tests/value/not_ct_array_arg.i:9:[value] warning: during initialization of variable 'tb', size of type 'int [a]' cannot be + computed (Array with non-constant length.) +tests/value/not_ct_array_arg.i:10:[value] warning: out of bounds write. assert \valid((int *)tb); +[value] DUMPING STATE of file tests/value/not_ct_array_arg.i line 11 + v ∈ [--..--] + a ∈ [--..--] + tb ∈ {{ (int (*)[a])&S_tb }} + tc ∈ {{ NULL ; &S_tc[0] }} + S_tc[0..1][0..9] ∈ [--..--] + S_tb[bits 0 to 31] ∈ {1} + [bits 32 to ..] ∈ [--..--] or UNINITIALIZED + =END OF DUMP== +tests/value/not_ct_array_arg.i:12:[value] warning: out of bounds write. assert \valid(&(*(tb+9))[100]); +[value] DUMPING STATE of file tests/value/not_ct_array_arg.i line 13 + v ∈ [--..--] + a ∈ [--..--] + tb ∈ {{ (int (*)[a])&S_tb }} + tc ∈ {{ NULL ; &S_tc[0] }} + S_tc[0..1][0..9] ∈ [--..--] + S_tb[bits 0 to 31] ∈ + {{ garbled mix of &{tb} + (origin: Misaligned {tests/value/not_ct_array_arg.i:12}) }} + [bits 32 to ..] ∈ + {{ garbled mix of &{tb} + (origin: Misaligned {tests/value/not_ct_array_arg.i:12}) }} or UNINITIALIZED + =END OF DUMP== +tests/value/not_ct_array_arg.i:14:[value] warning: out of bounds write. assert \valid(&(*(tc+1))[1]); +tests/value/not_ct_array_arg.i:16:[value] warning: accessing out of bounds index. assert 16 < 10; +tests/value/not_ct_array_arg.i:16:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +[value] Recording results for main +[value] done for function main +tests/value/not_ct_array_arg.i:16:[value] assertion 'Value,index_bound' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + S_tc{[0][0..9]; [1][0]} ∈ [--..--] + [1][1] ∈ {3} + [1][2..9] ∈ [--..--] + S_tb[bits 0 to 31] ∈ + {{ garbled mix of &{tb} + (origin: Misaligned {tests/value/not_ct_array_arg.i:12}) }} + [bits 32 to ..] ∈ + {{ garbled mix of &{tb} + (origin: Misaligned {tests/value/not_ct_array_arg.i:12}) }} or UNINITIALIZED +[from] Computing for function main +[from] Computing for function Frama_C_dump_each <-main +[from] Done for function Frama_C_dump_each +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + S_tc[1][1] FROM tc + S_tb[bits 0 to 31] FROM tb + [bits 32 to ..] FROM tb (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + S_tc[1][1]; S_tb[bits 0 to ..] +[inout] Inputs for function main: + v diff --git a/tests/value/oracle_symblocs/null_lt_valid.err.oracle b/tests/value/oracle_symblocs/null_lt_valid.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/null_lt_valid.res.oracle b/tests/value/oracle_symblocs/null_lt_valid.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..5464cd2a2dea7de121b7295f234916464a6afed5 --- /dev/null +++ b/tests/value/oracle_symblocs/null_lt_valid.res.oracle @@ -0,0 +1,90 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/null_lt_valid.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + t[0..22] ∈ {0} + p ∈ {0} + q ∈ {0} + r ∈ {0} +[value] computing for function f <- main. + Called from tests/value/null_lt_valid.i:27. +tests/value/null_lt_valid.i:5:[value] warning: pointer comparison. + assert \pointer_comparable((void *)p, (void *)((int *)t)); +tests/value/null_lt_valid.i:6:[value] warning: out of bounds write. assert \valid(p); +tests/value/null_lt_valid.i:6:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +[value] Recording results for f +[value] Done for function f +[value] computing for function g <- main. + Called from tests/value/null_lt_valid.i:30. +tests/value/null_lt_valid.i:11:[value] warning: pointer comparison. assert \pointer_comparable((void *)q, (void *)(&t[22])); +[value] Recording results for g +[value] Done for function g +[value] computing for function h <- main. + Called from tests/value/null_lt_valid.i:33. +tests/value/null_lt_valid.i:19:[value] warning: pointer comparison. assert \pointer_comparable((void *)r, (void *)(&t[22])); +[value] Recording results for h +[value] Done for function h +tests/value/null_lt_valid.i:34:[value] warning: pointer comparison. + assert \pointer_comparable((void *)p, (void *)((int *)t)); +tests/value/null_lt_valid.i:35:[value] warning: pointer comparison. assert \pointer_comparable((void *)q, (void *)(&t[22])); +tests/value/null_lt_valid.i:36:[value] warning: pointer comparison. assert \pointer_comparable((void *)r, (void *)(&t[22])); +[value] Recording results for main +[value] done for function main +tests/value/null_lt_valid.i:6:[value] assertion 'Value,mem_access' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + NON TERMINATING FUNCTION +[value:final-states] Values at end of function g: + q1 ∈ {{ NULL ; &t + [0..60],0%4 }} +[value:final-states] Values at end of function h: + r1 ∈ {{ NULL ; &t + [0..84],0%4 }} or UNINITIALIZED + r2 ∈ {{ &t + [88..124],0%4 }} or UNINITIALIZED +[value:final-states] Values at end of function main: + t[0] ∈ {1} + [1..2] ∈ {0; 1} + [3..22] ∈ {0} + q ∈ {{ NULL ; &t + [0..60],0%4 }} + r ∈ {{ NULL ; &t + [0..124],0%4 }} + __retres ∈ {0} +[from] Computing for function f +[from] Non-terminating function f (no dependencies) +[from] Done for function f +[from] Computing for function g +[from] Done for function g +[from] Computing for function h +[from] Done for function h +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + NON TERMINATING - NO EFFECTS +[from] Function g: + NO EFFECTS +[from] Function h: + NO EFFECTS +[from] Function main: + t[0] FROM p + [1..2] FROM p; c + q FROM p; c + r FROM p; c + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + \nothing +[inout] Inputs for function f: + p +[inout] Out (internal) for function g: + q1 +[inout] Inputs for function g: + q +[inout] Out (internal) for function h: + r1; r2 +[inout] Inputs for function h: + r +[inout] Out (internal) for function main: + t[0..2]; q; r; __retres +[inout] Inputs for function main: + p; q; r diff --git a/tests/value/oracle_symblocs/offset_misaligned.err.oracle b/tests/value/oracle_symblocs/offset_misaligned.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/offset_misaligned.res.oracle b/tests/value/oracle_symblocs/offset_misaligned.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..a07eb1e81c3bdce24d53187b5f8c416ec117ec6c --- /dev/null +++ b/tests/value/oracle_symblocs/offset_misaligned.res.oracle @@ -0,0 +1,30 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/offset_misaligned.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + t[0..299] ∈ {0} +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + t[0] ∈ {1} + [bits 8 to 39] ∈ {2} + [5..9] ∈ {0} + [10..265] ∈ {0; 3} + [266..299] ∈ {0} + __retres ∈ {0} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + t[0..4] FROM \nothing + [10..265] FROM u (and SELF) + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + t{[0..4]; [10..265]}; __retres +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/offset_neg.err.oracle b/tests/value/oracle_symblocs/offset_neg.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/offset_neg.res.oracle b/tests/value/oracle_symblocs/offset_neg.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e72e49070ee960d12e11008434cf3538df863d70 --- /dev/null +++ b/tests/value/oracle_symblocs/offset_neg.res.oracle @@ -0,0 +1,41 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/offset_neg.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + mem[0] ∈ {0} + addr ∈ {{ &mem[0] }} + off ∈ {18446744073709551615} + G[0..4] ∈ {0} +[value] DUMPING STATE of file tests/value/offset_neg.i line 8 + mem[0] ∈ {0} + addr ∈ {{ &mem + {18446744073709551616} }} + off ∈ {18446744073709551615} + G[0..4] ∈ {0} + __retres ∈ UNINITIALIZED + =END OF DUMP== +tests/value/offset_neg.i:9:[value] warning: accessing out of bounds index. assert 0 ≤ (int)(-1); +tests/value/offset_neg.i:9:[value] warning: accessing out of bounds index. assert (int)(-1) < 5; +tests/value/offset_neg.i:9:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +[value] Recording results for main +[value] done for function main +tests/value/offset_neg.i:9:[value] assertion 'Value,index_bound' got final status valid. +tests/value/offset_neg.i:9:[value] assertion 'Value,index_bound' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + NON TERMINATING FUNCTION +[from] Computing for function main +[from] Computing for function Frama_C_dump_each <-main +[from] Done for function Frama_C_dump_each +[from] Non-terminating function main (no dependencies) +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NON TERMINATING - NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + addr +[inout] Inputs for function main: + addr; off diff --git a/tests/value/oracle_symblocs/offset_top.err.oracle b/tests/value/oracle_symblocs/offset_top.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/offset_top.res.oracle b/tests/value/oracle_symblocs/offset_top.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e4d179ee2915894dba5cf160c19fd24c1bf47172 --- /dev/null +++ b/tests/value/oracle_symblocs/offset_top.res.oracle @@ -0,0 +1,25 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/offset_top.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + NULL[rbits 0 to 2047] ∈ [--..--] + T ∈ {0} + TAB[0..9] ∈ {0} +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + i ∈ {{ &TAB + [-8589934592..8589934588],0%4 }} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + i +[inout] Inputs for function main: + NULL[0..3]; T diff --git a/tests/value/oracle_symblocs/origin.0.err.oracle b/tests/value/oracle_symblocs/origin.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/origin.0.res.oracle b/tests/value/oracle_symblocs/origin.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..57b0ba4fd8e17394f54e7aa098aa04e460e1514b --- /dev/null +++ b/tests/value/oracle_symblocs/origin.0.res.oracle @@ -0,0 +1,354 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/origin.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + a ∈ {0} + b ∈ {0} + aa2 ∈ {0} + p ∈ {0} + pa1 ∈ {0} + pa2 ∈ {0} + qa2 ∈ {0} + pa3 ∈ {0} + q ∈ {0} + t[0..11] ∈ {0} + tt[0..9] ∈ {0} + ta1[0..9] ∈ {0} + ta2[0..9] ∈ {0} + ta3[0..9] ∈ {0} + tta2[0..9] ∈ {0} + l1 ∈ {0} + l2 ∈ {0} + l3 ∈ {0} + pl ∈ {0} + Tm1[0] ∈ {{ &a }} + [1] ∈ {{ &b }} + Tm2[0] ∈ {{ &a }} + [1] ∈ {{ &b }} + Tm3[0] ∈ {{ &a }} + [1] ∈ {{ &b }} + Tm4[0] ∈ {{ &a }} + [1] ∈ {{ &b }} + pm1 ∈ {0} + pm2 ∈ {0} + qm2 ∈ {0} + pun ∈ {0} + pun2 ∈ {0} + qun2 ∈ {0} + random ∈ [--..--] + esc1 ∈ {0} + esc2 ∈ {0} + esc3 ∈ {0} + esc4 ∈ {0} + esc5 ∈ {0} + x ∈ {0} + y ∈ {0} + v.c ∈ {1} + .[bits 8 to 15] ∈ {0} + .i ∈ {2} + .p ∈ {{ &x }} + .t[0] ∈ {{ &y }} + .t[1] ∈ {0} +[value] computing for function origin_arithmetic_1 <- main. + Called from tests/value/origin.i:92. +tests/value/origin.i:14:[value] warning: signed overflow. assert -2147483648 ≤ -((int)((int *)ta1)); +tests/value/origin.i:14:[value] warning: signed overflow. assert -((int)((int *)ta1)) ≤ 2147483647; +tests/value/origin.i:14:[value] Assigning imprecise value to pa1. + The imprecision originates from Arithmetic {tests/value/origin.i:14} +tests/value/origin.i:15:[value] warning: out of bounds write. assert \valid(pa1); +[value] Recording results for origin_arithmetic_1 +[value] Done for function origin_arithmetic_1 +[value] computing for function origin_arithmetic_2 <- main. + Called from tests/value/origin.i:93. +tests/value/origin.i:19:[value] warning: signed overflow. assert -2147483648 ≤ -((int)((int *)ta2)); +tests/value/origin.i:19:[value] warning: signed overflow. assert -((int)((int *)ta2)) ≤ 2147483647; +tests/value/origin.i:19:[value] Assigning imprecise value to pa2. + The imprecision originates from Arithmetic {tests/value/origin.i:19} +tests/value/origin.i:20:[value] Assigning imprecise value to qa2. + The imprecision originates from Arithmetic {tests/value/origin.i:19} +tests/value/origin.i:20:[value] warning: signed overflow. assert -2147483648 ≤ -((int)((int *)tta2)); +tests/value/origin.i:20:[value] warning: signed overflow. assert -((int)((int *)tta2)) ≤ 2147483647; +tests/value/origin.i:20:[value] Assigning imprecise value to qa2. + The imprecision originates from Arithmetic {tests/value/origin.i:20} +tests/value/origin.i:21:[value] warning: out of bounds write. assert \valid(qa2); +[value] Recording results for origin_arithmetic_2 +[value] Done for function origin_arithmetic_2 +[value] computing for function origin_arithmetic_3 <- main. + Called from tests/value/origin.i:94. +tests/value/origin.i:25:[value] warning: signed overflow. assert -2147483648 ≤ -((int)((int *)ta3)); +tests/value/origin.i:25:[value] warning: signed overflow. assert -((int)((int *)ta3)) ≤ 2147483647; +tests/value/origin.i:25:[value] Assigning imprecise value to pa3. + The imprecision originates from Arithmetic {tests/value/origin.i:25} +tests/value/origin.i:26:[value] warning: out of bounds write. assert \valid(pa3); +[value] Recording results for origin_arithmetic_3 +[value] Done for function origin_arithmetic_3 +[value] computing for function origin_leaf_1 <- main. + Called from tests/value/origin.i:95. +[value] computing for function g <- origin_leaf_1 <- main. + Called from tests/value/origin.i:36. +tests/value/origin.i:36:[kernel] warning: Neither code nor specification for function g, generating default assigns from the prototype +[value] using specification for function g +[value] Done for function g +[value] Recording results for origin_leaf_1 +[value] Done for function origin_leaf_1 +[value] computing for function g <- main. + Called from tests/value/origin.i:97. +[value] Done for function g +tests/value/origin.i:97:[value] warning: signed overflow. assert -2147483648 ≤ l2+tmp; + (tmp from g()) +tests/value/origin.i:97:[value] warning: signed overflow. assert l2+tmp ≤ 2147483647; + (tmp from g()) +[value] computing for function gp <- main. + Called from tests/value/origin.i:98. +tests/value/origin.i:98:[kernel] warning: Neither code nor specification for function gp, generating default assigns from the prototype +[value] using specification for function gp +[value] Done for function gp +tests/value/origin.i:99:[value] warning: out of bounds read. assert \valid_read(pl); +[value] computing for function origin_misalign_1 <- main. + Called from tests/value/origin.i:100. +tests/value/origin.i:47:[value] warning: out of bounds write. assert \valid(pm1); +[value] Recording results for origin_misalign_1 +[value] Done for function origin_misalign_1 +[value] computing for function origin_misalign_2 <- main. + Called from tests/value/origin.i:101. +tests/value/origin.i:52:[value] Assigning imprecise value to qm2. + The imprecision originates from Misaligned {tests/value/origin.i:52} +tests/value/origin.i:53:[value] Reading left-value qm2. + It contains a garbled mix of {a; b} because of Misaligned + {tests/value/origin.i:52}. +[value] Called Frama_C_show_each({{ garbled mix of &{a; b} + (origin: Misaligned {tests/value/origin.i:52}) }}) +tests/value/origin.i:54:[value] warning: out of bounds write. assert \valid(qm2); +[value] Recording results for origin_misalign_2 +[value] Done for function origin_misalign_2 +[value] computing for function origin_uninitialized_1 <- main. + Called from tests/value/origin.i:104. +[value] Recording results for origin_uninitialized_1 +[value] Done for function origin_uninitialized_1 +[value] computing for function origin_uninitialized_2 <- main. + Called from tests/value/origin.i:105. +tests/value/origin.i:73:[value] warning: accessing uninitialized left-value. assert \initialized(&pun2); +tests/value/origin.i:73:[value] warning: accessing uninitialized left-value. assert \initialized(&i); +[value] Recording results for origin_uninitialized_2 +[value] Done for function origin_uninitialized_2 +[value] computing for function local_escape_1 <- main. + Called from tests/value/origin.i:106. +tests/value/origin.i:83:[value] warning: signed overflow. assert -2147483648 ≤ -((int)(&arg)); +tests/value/origin.i:83:[value] warning: signed overflow. assert -((int)(&arg)) ≤ 2147483647; +tests/value/origin.i:83:[value] Assigning imprecise value to esc3. + The imprecision originates from Arithmetic {tests/value/origin.i:83} +tests/value/origin.i:87:[value] warning: locals {arg} escaping the scope of local_escape_1 through esc1 +tests/value/origin.i:87:[value] warning: locals {local1} escaping the scope of local_escape_1 through esc2 +tests/value/origin.i:87:[value] warning: locals {arg} escaping the scope of local_escape_1 through esc3 +tests/value/origin.i:87:[value] warning: locals {local1} escaping the scope of local_escape_1 through esc4 +[value] Recording results for local_escape_1 +[value] Done for function local_escape_1 +[value] Recording results for main +[value] done for function main +tests/value/origin.i:73:[value] assertion 'Value,initialisation' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function local_escape_1: + esc1 ∈ {{ (int)&arg }} + esc2 ∈ {{ (int)&local1 }} + esc3 ∈ + {{ garbled mix of &{arg} + (origin: Arithmetic {tests/value/origin.i:83}) }} + esc4 ∈ {{ NULL + {12} ; (int)&local1 }} + esc5 ∈ {{ (int)&esc1 }} + local2 ∈ {{ (int)&local1 }} +[value:final-states] Values at end of function origin_arithmetic_1: + pa1 ∈ {{ &ta1 + [0..36] }} + ta1[0..9] ∈ {0} +[value:final-states] Values at end of function origin_arithmetic_2: + pa2 ∈ + {{ garbled mix of &{ta2} + (origin: Arithmetic {tests/value/origin.i:19}) }} + qa2 ∈ {{ &ta2 + [0..36] ; &tta2 + [0..36] }} + ta2[0..9] ∈ + {{ garbled mix of &{aa2} + (origin: Misaligned {tests/value/origin.i:21}) }} + tta2[0..9] ∈ + {{ garbled mix of &{aa2} + (origin: Misaligned {tests/value/origin.i:21}) }} +[value:final-states] Values at end of function origin_arithmetic_3: + pa3 ∈ {{ &ta3 + [0..36] }} + ta3[0..9] ∈ [--..--] +[value:final-states] Values at end of function origin_leaf_1: + l1 ∈ [--..--] +[value:final-states] Values at end of function origin_misalign_1: + a ∈ {0; 1} + b ∈ {0; 1} + pm1 ∈ {{ &a ; &b }} +[value:final-states] Values at end of function origin_misalign_2: + a ∈ {{ NULL + {0; 1} ; (int)&a }} + b ∈ {{ NULL + {0; 1} ; (int)&a }} + pm2[bits 0 to 15]# ∈ {{ (? *)&a }}%32, bits 16 to 31 + [bits 16 to 31]# ∈ {{ (? *)&b }}%32, bits 0 to 15 + qm2 ∈ {{ &a ; &b }} +[value:final-states] Values at end of function origin_uninitialized_1: + pun ∈ {{ &a }} or UNINITIALIZED + pi ∈ {{ &a }} or UNINITIALIZED +[value:final-states] Values at end of function origin_uninitialized_2: + pun2 ∈ {{ &a }} or UNINITIALIZED + qun2 ∈ {0} + pi ∈ {{ &a }} or UNINITIALIZED +[value:final-states] Values at end of function main: + a ∈ {{ NULL + {0; 1} ; (int)&a }} + b ∈ {{ NULL + {0; 1} ; (int)&a }} + p[bits 0 to 15]# ∈ {{ (? *)&a }}%32, bits 16 to 31 + [bits 16 to 31]# ∈ {{ (? *)&b }}%32, bits 0 to 15 + pa1 ∈ {{ &ta1 + [0..36] }} + pa2 ∈ + {{ garbled mix of &{ta2} + (origin: Arithmetic {tests/value/origin.i:19}) }} + qa2 ∈ {{ &ta2 + [0..36] ; &tta2 + [0..36] }} + pa3 ∈ {{ &ta3 + [0..36] }} + q[bits 0 to 7] ∈ + {{ garbled mix of &{a} (origin: Merge {tests/value/origin.i:104}) }} + [bits 8 to 15] ∈ + {{ garbled mix of &{a; b} (origin: Merge {tests/value/origin.i:104}) }} + [bits 16 to 31] ∈ + {{ garbled mix of &{b} (origin: Merge {tests/value/origin.i:104}) }} + ta1[0..9] ∈ {0} + ta2[0..9] ∈ + {{ garbled mix of &{aa2} + (origin: Misaligned {tests/value/origin.i:21}) }} + ta3[0..9] ∈ [--..--] + tta2[0..9] ∈ + {{ garbled mix of &{aa2} + (origin: Misaligned {tests/value/origin.i:21}) }} + l1 ∈ [--..--] + l2 ∈ [--..--] + l3 ∈ [--..--] + pl ∈ {{ &alloced_return_gp + [0..2147483644],0%4 }} + pm1 ∈ {{ &a ; &b }} + pm2[bits 0 to 15]# ∈ {{ (? *)&a }}%32, bits 16 to 31 + [bits 16 to 31]# ∈ {{ (? *)&b }}%32, bits 0 to 15 + qm2 ∈ {{ &a ; &b }} + pun ∈ {{ &a }} or UNINITIALIZED + pun2 ∈ {{ &a }} or UNINITIALIZED + qun2 ∈ {0} + esc1 ∈ ESCAPINGADDR + esc2 ∈ ESCAPINGADDR + esc3 ∈ [--..--] or ESCAPINGADDR + esc4 ∈ {12} or ESCAPINGADDR + esc5 ∈ {{ (int)&esc1 }} +[from] Computing for function local_escape_1 +[from] Done for function local_escape_1 +[from] Computing for function origin_arithmetic_1 +[from] Done for function origin_arithmetic_1 +[from] Computing for function origin_arithmetic_2 +[from] Done for function origin_arithmetic_2 +[from] Computing for function origin_arithmetic_3 +[from] Done for function origin_arithmetic_3 +[from] Computing for function origin_leaf_1 +[from] Computing for function g <-origin_leaf_1 +[from] Done for function g +[from] Done for function origin_leaf_1 +[from] Computing for function origin_misalign_1 +[from] Done for function origin_misalign_1 +[from] Computing for function origin_misalign_2 +[from] Done for function origin_misalign_2 +[from] Computing for function origin_uninitialized_1 +[from] Done for function origin_uninitialized_1 +[from] Computing for function origin_uninitialized_2 +[from] Done for function origin_uninitialized_2 +[from] Computing for function main +[from] Computing for function gp <-main +[from] Done for function gp +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function g: + \result FROM \nothing +[from] Function gp: + \result FROM \nothing +[from] Function local_escape_1: + esc1 FROM \nothing + esc2 FROM \nothing + esc3 FROM \nothing + esc4 FROM random + esc5 FROM \nothing +[from] Function origin_arithmetic_1: + pa1 FROM \nothing + ta1[0..9] FROM \nothing (and SELF) +[from] Function origin_arithmetic_2: + pa2 FROM \nothing + qa2 FROM c1 + ta2[0..9] FROM c1 (and SELF) + tta2[0..9] FROM c1 (and SELF) +[from] Function origin_arithmetic_3: + pa3 FROM \nothing + ta3[0..9] FROM \nothing (and SELF) +[from] Function origin_leaf_1: + l1 FROM \nothing +[from] Function origin_misalign_1: + a FROM Tm1{[0][bits 16 to 31]; [1][bits 0 to 15]} (and SELF) + b FROM Tm1{[0][bits 16 to 31]; [1][bits 0 to 15]} (and SELF) + pm1 FROM Tm1{[0][bits 16 to 31]; [1][bits 0 to 15]} +[from] Function origin_misalign_2: + a FROM Tm2{[0][bits 16 to 31]; [1][bits 0 to 15]} (and SELF) + b FROM Tm2{[0][bits 16 to 31]; [1][bits 0 to 15]} (and SELF) + pm2 FROM Tm2{[0][bits 16 to 31]; [1][bits 0 to 15]} + qm2 FROM Tm2{[0][bits 16 to 31]; [1][bits 0 to 15]} +[from] Function origin_uninitialized_1: + pun FROM c1 +[from] Function origin_uninitialized_2: + pun2 FROM c1 + qun2 FROM c1; c2 (and SELF) +[from] Function main: + a FROM Tm1{[0][bits 16 to 31]; [1][bits 0 to 15]}; + Tm2{[0][bits 16 to 31]; [1][bits 0 to 15]} (and SELF) + b FROM Tm1{[0][bits 16 to 31]; [1][bits 0 to 15]}; + Tm2{[0][bits 16 to 31]; [1][bits 0 to 15]} (and SELF) + p FROM Tm3{[0][bits 16 to 31]; [1][bits 0 to 15]} + pa1 FROM \nothing + pa2 FROM \nothing + qa2 FROM c1 + pa3 FROM \nothing + q FROM Tm3{[0][bits 16 to 31]; [1][bits 0 to 15]}; + Tm4{[0][bits 24 to 31]; [1][bits 0 to 23]}; c1 + ta1[0..9] FROM \nothing (and SELF) + ta2[0..9] FROM c1 (and SELF) + ta3[0..9] FROM \nothing (and SELF) + tta2[0..9] FROM c1 (and SELF) + l1 FROM \nothing + l2 FROM \nothing + l3 FROM alloced_return_gp[bits 0 to 17179869183] + pl FROM \nothing + pm1 FROM Tm1{[0][bits 16 to 31]; [1][bits 0 to 15]} + pm2 FROM Tm2{[0][bits 16 to 31]; [1][bits 0 to 15]} + qm2 FROM Tm2{[0][bits 16 to 31]; [1][bits 0 to 15]} + pun FROM c1 + pun2 FROM c1 + qun2 FROM c1; c2 (and SELF) + esc1 FROM \nothing + esc2 FROM \nothing + esc3 FROM \nothing + esc4 FROM random + esc5 FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function local_escape_1: + esc1; esc2; esc3; esc4; esc5; local2 +[inout] Out (internal) for function origin_arithmetic_1: + pa1; ta1[0..9] +[inout] Out (internal) for function origin_arithmetic_2: + pa2; qa2; ta2[0..9]; tta2[0..9] +[inout] Out (internal) for function origin_arithmetic_3: + pa3; ta3[0..9] +[inout] Out (internal) for function origin_leaf_1: + l1 +[inout] Out (internal) for function origin_misalign_1: + a; b; pm1 +[inout] Out (internal) for function origin_misalign_2: + a; b; pm2; qm2 +[inout] Out (internal) for function origin_uninitialized_1: + pun; pi +[inout] Out (internal) for function origin_uninitialized_2: + pun2; qun2; pi +[inout] Out (internal) for function main: + a; b; p; pa1; pa2; qa2; pa3; q; ta1[0..9]; ta2[0..9]; ta3[0..9]; + tta2[0..9]; l1; l2; l3; pl; pm1; pm2; qm2; pun; pun2; qun2; esc1; esc2; + esc3; esc4; esc5; tmp diff --git a/tests/value/oracle_symblocs/origin.1.err.oracle b/tests/value/oracle_symblocs/origin.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/origin.1.res.oracle b/tests/value/oracle_symblocs/origin.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e514c2973b77004ff81121534592dafbba15df61 --- /dev/null +++ b/tests/value/oracle_symblocs/origin.1.res.oracle @@ -0,0 +1,102 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/origin.i (no preprocessing) +[value] Analyzing a complete application starting at origin +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + a ∈ {0} + b ∈ {0} + aa2 ∈ {0} + p ∈ {0} + pa1 ∈ {0} + pa2 ∈ {0} + qa2 ∈ {0} + pa3 ∈ {0} + q ∈ {0} + t[0..11] ∈ {0} + tt[0..9] ∈ {0} + ta1[0..9] ∈ {0} + ta2[0..9] ∈ {0} + ta3[0..9] ∈ {0} + tta2[0..9] ∈ {0} + l1 ∈ {0} + l2 ∈ {0} + l3 ∈ {0} + pl ∈ {0} + Tm1[0] ∈ {{ &a }} + [1] ∈ {{ &b }} + Tm2[0] ∈ {{ &a }} + [1] ∈ {{ &b }} + Tm3[0] ∈ {{ &a }} + [1] ∈ {{ &b }} + Tm4[0] ∈ {{ &a }} + [1] ∈ {{ &b }} + pm1 ∈ {0} + pm2 ∈ {0} + qm2 ∈ {0} + pun ∈ {0} + pun2 ∈ {0} + qun2 ∈ {0} + random ∈ [--..--] + esc1 ∈ {0} + esc2 ∈ {0} + esc3 ∈ {0} + esc4 ∈ {0} + esc5 ∈ {0} + x ∈ {0} + y ∈ {0} + v.c ∈ {1} + .[bits 8 to 15] ∈ {0} + .i ∈ {2} + .p ∈ {{ &x }} + .t[0] ∈ {{ &y }} + .t[1] ∈ {0} +[value] computing for function f <- origin. + Called from tests/value/origin.i:122. +tests/value/origin.i:122:[kernel] warning: Neither code nor specification for function f, generating default assigns from the prototype +[value] using specification for function f +[value] Done for function f +tests/value/origin.i:124:[value] Assigning imprecise value to r.p. + The imprecision originates from Misaligned {tests/value/origin.i:124} +tests/value/origin.i:127:[value] Assigning imprecise value to r.t[0]. + The imprecision originates from Merge {tests/value/origin.i:127} +tests/value/origin.i:128:[value] warning: signed overflow. assert -2147483648 ≤ -((int)(&x)); +tests/value/origin.i:128:[value] warning: signed overflow. assert -((int)(&x)) ≤ 2147483647; +tests/value/origin.i:128:[value] Assigning imprecise value to r.t[1]. + The imprecision originates from Arithmetic {tests/value/origin.i:128} +[value] Recording results for origin +[value] done for function origin +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function origin: + r.c ∈ [--..--] + .[bits 8 to 15] ∈ UNINITIALIZED + .i ∈ [--..--] + .p ∈ + {{ garbled mix of &{x} (origin: Misaligned {tests/value/origin.i:124}) }} + .t[0][bits 0 to 7] ∈ + {{ garbled mix of &{y} (origin: Merge {tests/value/origin.i:127}) }} + .t[0][bits 8 to 15]# ∈ {{ NULL ; (? *)&y }}%32, bits 24 to 31 + .t[0][bits 16 to 31] ∈ {0} + .t[1] ∈ + {{ garbled mix of &{x} (origin: Arithmetic {tests/value/origin.i:128}) }} + q1[bits 0 to 15]# ∈ {{ (? *)&y }}%32, bits 16 to 31 + [bits 16 to 31] ∈ {0} + q2[bits 0 to 7] ∈ + {{ garbled mix of &{y} (origin: Merge {tests/value/origin.i:127}) }} + [bits 8 to 15]# ∈ {{ NULL ; (? *)&y }}%32, bits 24 to 31 + [bits 16 to 31] ∈ {0} +[from] Computing for function origin +[from] Computing for function f <-origin +[from] Done for function f +[from] Done for function origin +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + \result FROM \nothing +[from] Function origin: + \result FROM v{{.i[bits 8 to 15]; .p[bits 0 to 23]}; + .t{[0][bits 16 to 31]; [1][bits 0 to 23]}}; + c0 +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function origin: + r{.c; {.i; .p; .t[0..1]}}; q1; q2 diff --git a/tests/value/oracle_symblocs/output_leafs.err.oracle b/tests/value/oracle_symblocs/output_leafs.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/output_leafs.res.oracle b/tests/value/oracle_symblocs/output_leafs.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..f24b41721b9036a625bbc69ef2ad7ef10b85106c --- /dev/null +++ b/tests/value/oracle_symblocs/output_leafs.res.oracle @@ -0,0 +1,154 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/output_leafs.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + H ∈ {0} + G ∈ {0} + K ∈ {0} + L ∈ {0} + M ∈ {0} + N ∈ {0} + P ∈ {0} + a ∈ {0} + b ∈ {0} + c ∈ {0} + d ∈ {0} +[value] computing for function main1 <- main. + Called from tests/value/output_leafs.i:45. +[value] computing for function crypt <- main1 <- main. + Called from tests/value/output_leafs.i:13. +[value] using specification for function crypt +[value] Done for function crypt +[value] Recording results for main1 +[value] Done for function main1 +[value] computing for function main2 <- main. + Called from tests/value/output_leafs.i:46. +[value] computing for function g1 <- main2 <- main. + Called from tests/value/output_leafs.i:31. +[value] computing for function g <- g1 <- main2 <- main. + Called from tests/value/output_leafs.i:23. +[value] using specification for function g +[value] Done for function g +[value] Recording results for g1 +[value] Done for function g1 +[value] computing for function g2 <- main2 <- main. + Called from tests/value/output_leafs.i:32. +[value] computing for function g <- g2 <- main2 <- main. + Called from tests/value/output_leafs.i:27. +[value] Done for function g +[value] Recording results for g2 +[value] Done for function g2 +[value] Recording results for main2 +[value] Done for function main2 +[value] computing for function main3 <- main. + Called from tests/value/output_leafs.i:47. +[value] computing for function f <- main3 <- main. + Called from tests/value/output_leafs.i:40. +tests/value/output_leafs.i:40:[kernel] warning: Neither code nor specification for function f, generating default assigns from the prototype +[value] using specification for function f +[value] Done for function f +[value] Recording results for main3 +[value] Done for function main3 +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function g1: + b ∈ [--..--] +[value:final-states] Values at end of function g2: + d ∈ [--..--] +[value:final-states] Values at end of function main1: + H ∈ {{ &K }} + G ∈ [--..--] + K ∈ [--..--] + L ∈ [--..--] +[value:final-states] Values at end of function main2: + b ∈ [--..--] + d ∈ [--..--] +[value:final-states] Values at end of function main3: + x ∈ [--..--] +[value:final-states] Values at end of function main: + H ∈ {{ &K }} + G ∈ [--..--] + K ∈ [--..--] + L ∈ [--..--] + b ∈ [--..--] + d ∈ [--..--] +[from] Computing for function g1 +[from] Computing for function g <-g1 +[from] Done for function g +[from] Done for function g1 +[from] Computing for function g2 +[from] Done for function g2 +[from] Computing for function main1 +[from] Computing for function crypt <-main1 +[from] Done for function crypt +[from] Done for function main1 +[from] Computing for function main2 +[from] Done for function main2 +[from] Computing for function main3 +[from] Computing for function f <-main3 +[from] Done for function f +[from] Done for function main3 +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function crypt: + G FROM G; K (and SELF) + K FROM P + L FROM \nothing +[from] Function f: + x FROM x (and SELF) +[from] Function g: + b FROM a; c (and SELF) + d FROM a; c (and SELF) +[from] Function g1: + b FROM a; c (and SELF) + d FROM a; c (and SELF) +[from] Function g2: + b FROM a; c (and SELF) + d FROM a; c (and SELF) +[from] Function main1: + H FROM \nothing + G FROM G; K (and SELF) + K FROM P + L FROM \nothing +[from] Function main2: + b FROM a; c (and SELF) + d FROM a; c (and SELF) +[from] Function main3: + \result FROM \nothing +[from] Function main: + H FROM \nothing + G FROM G; K (and SELF) + K FROM P + L FROM \nothing + b FROM a; c (and SELF) + d FROM a; c (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function g1: + b +[inout] Inputs for function g1: + a +[inout] Out (internal) for function g2: + d +[inout] Inputs for function g2: + c +[inout] Out (internal) for function main1: + H; G; K; L +[inout] Inputs for function main1: + G; K; P +[inout] Out (internal) for function main2: + b; d +[inout] Inputs for function main2: + a; c +[inout] Out (internal) for function main3: + x +[inout] Inputs for function main3: + \nothing +[inout] Out (internal) for function main: + H; G; K; L; b; d +[inout] Inputs for function main: + G; K; P; a; c diff --git a/tests/value/oracle_symblocs/overflow.0.err.oracle b/tests/value/oracle_symblocs/overflow.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/overflow.0.res.oracle b/tests/value/oracle_symblocs/overflow.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..357f4869fce17f473dc2a59169a353e6a366531d --- /dev/null +++ b/tests/value/oracle_symblocs/overflow.0.res.oracle @@ -0,0 +1,39 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/overflow.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +tests/value/overflow.i:20:[value] warning: signed overflow. assert 60000*y ≤ 2147483647; +tests/value/overflow.i:21:[value] warning: signed overflow. assert (int)(y*1000)*1000 ≤ 2147483647; +tests/value/overflow.i:22:[value] warning: signed overflow. assert -2147483648 ≤ (int)(-y)*10000000; +tests/value/overflow.i:31:[value] warning: signed overflow. assert -c ≤ 2147483647; +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + i ∈ {18446744073709551615} + j ∈ {4294967295} + is ∈ {-1} + js ∈ {-1} + minjs ∈ {-2147483648} + maxjs ∈ {2147483647} + i1 ∈ {0} + j1 ∈ {0} + y ∈ {1; 100000} + x ∈ {0} + z ∈ {1000000} + t ∈ {-10000000} + __retres ∈ {0} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + i; j; is; js; minjs; maxjs; i1; j1; y; tmp; x; z; t; __retres +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/overflow.1.err.oracle b/tests/value/oracle_symblocs/overflow.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/overflow.1.res.oracle b/tests/value/oracle_symblocs/overflow.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..070ddfea13bb1796e1a97413339088b049cfba9a --- /dev/null +++ b/tests/value/oracle_symblocs/overflow.1.res.oracle @@ -0,0 +1,39 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/overflow.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +tests/value/overflow.i:20:[value] warning: 2's complement assumed for overflow +tests/value/overflow.i:21:[value] warning: 2's complement assumed for overflow +tests/value/overflow.i:22:[value] warning: 2's complement assumed for overflow +tests/value/overflow.i:31:[value] warning: 2's complement assumed for overflow +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + i ∈ {18446744073709551615} + j ∈ {4294967295} + is ∈ {-1} + js ∈ {-1} + minjs ∈ {-2147483648} + maxjs ∈ {2147483647} + i1 ∈ {0} + j1 ∈ {0} + y ∈ {1; 100000} + x ∈ {0; 17050} + z ∈ {1000000; 1215752192} + t ∈ {-10000000; 727379968} + __retres ∈ {0} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + i; j; is; js; minjs; maxjs; i1; j1; y; tmp; x; z; t; __retres +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/overflow_cast_float_int.err.oracle b/tests/value/oracle_symblocs/overflow_cast_float_int.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/overflow_cast_float_int.res.oracle b/tests/value/oracle_symblocs/overflow_cast_float_int.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..0fb2fe8cb1b0eb6f5c9023e0c8bbe08c9b4c5991 --- /dev/null +++ b/tests/value/oracle_symblocs/overflow_cast_float_int.res.oracle @@ -0,0 +1,71 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/overflow_cast_float_int.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + v ∈ [--..--] +tests/value/overflow_cast_float_int.i:16:[value] warning: overflow in conversion from floating-point to integer. + assert vf1 < 2147483648; +tests/value/overflow_cast_float_int.i:20:[value] warning: overflow in conversion from floating-point to integer. + assert -2147483649 < -2147483649.5; +tests/value/overflow_cast_float_int.i:24:[value] warning: overflow in conversion from floating-point to integer. + assert -2147483649 < dd; +[value] Recording results for main +[value] done for function main +tests/value/overflow_cast_float_int.i:20:[value] assertion 'Value,float_to_int' got final status invalid. +tests/value/overflow_cast_float_int.i:24:[value] assertion 'Value,float_to_int' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + vf1 ∈ [2147483520. .. 2147483648.] or UNINITIALIZED + e ∈ [2147483520..2147483647] or UNINITIALIZED + d ∈ {2147483647} + c1 ∈ {2147483647} + c2 ∈ UNINITIALIZED + dd ∈ [-1.17159917953e+20 .. -30459646388.] + __retres ∈ {0} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + vf1; e; d; c1; c2; dd; tmp; k; __retres +[inout] Inputs for function main: + v +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + v ∈ [--..--] +tests/value/overflow_cast_float_int.i:16:[value] warning: overflow in conversion from floating-point to integer. + assert vf1 < 2147483648; +tests/value/overflow_cast_float_int.i:20:[value] warning: overflow in conversion from floating-point to integer. + assert -2147483649 < -2147483649.5; +tests/value/overflow_cast_float_int.i:24:[value] warning: overflow in conversion from floating-point to integer. + assert -2147483649 < dd; +[value] Recording results for main +[value] done for function main +tests/value/overflow_cast_float_int.i:16:[value] assertion 'Value,float_to_int' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + vf1 ∈ UNINITIALIZED + e ∈ UNINITIALIZED + d ∈ {2147483647} + c1 ∈ {2147483647} + c2 ∈ UNINITIALIZED + dd ∈ [-1.17159917953e+20 .. -30459646388.] + __retres ∈ {0} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + vf1; e; d; c1; c2; dd; tmp; k; __retres +[inout] Inputs for function main: + v diff --git a/tests/value/oracle_symblocs/packed.err.oracle b/tests/value/oracle_symblocs/packed.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/packed.res.oracle b/tests/value/oracle_symblocs/packed.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..0501ffee9ce9d266da9ac438941cafec6ff1f6b0 --- /dev/null +++ b/tests/value/oracle_symblocs/packed.res.oracle @@ -0,0 +1,24 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/packed.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + x ∈ [--..--] + y ∈ [--..--] +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + \nothing +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/pb.err.oracle b/tests/value/oracle_symblocs/pb.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/pb.res.oracle b/tests/value/oracle_symblocs/pb.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..b2d8341dd22dab7e62634ab1df6efc342a447c6f --- /dev/null +++ b/tests/value/oracle_symblocs/pb.res.oracle @@ -0,0 +1,33 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/pb.i (no preprocessing) +tests/value/pb.i:2:[kernel] warning: Calling undeclared function f. Old style K&R code? +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] computing for function f <- main. + Called from tests/value/pb.i:2. +tests/value/pb.i:2:[kernel] warning: Neither code nor specification for function f, generating default assigns from the prototype +[value] using specification for function f +[value] Done for function f +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + +[from] Computing for function main +[from] Computing for function f <-main +[from] Done for function f +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + \result FROM \nothing +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + \nothing +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/period.err.oracle b/tests/value/oracle_symblocs/period.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/period.res.oracle b/tests/value/oracle_symblocs/period.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..74ed0a3e77628d063c83956f2fbffe449363764f --- /dev/null +++ b/tests/value/oracle_symblocs/period.res.oracle @@ -0,0 +1,168 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/period.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + g[0..9] ∈ {0} + Frama_C_periodic_t_320[0] ∈ {1} + [1..59] ∈ {0} + u[0] ∈ {-1} + [1] ∈ {-2} + [2] ∈ {-3} + [3..59] ∈ {0} + v[0] ∈ {-1} + [1] ∈ {-2} + [2] ∈ {-3} + w[0..9] ∈ {0} + Au ∈ {0} + Bu ∈ {0} + Cu ∈ {0} + Du ∈ {0} + Eu ∈ {0} + Fu ∈ {0} + Gu ∈ {12} + Hu ∈ {0} + At ∈ {0} + Bt ∈ {0} + Ct ∈ {0} + Dt ∈ {0} + Et ∈ {0} + Ft ∈ {0} + Gt ∈ {12} + Ht ∈ {0} +[value] DUMPING STATE of file tests/value/period.c line 49 + g[0..9] ∈ {0} + Frama_C_periodic_t_320[0] ∈ {1} + [1..3] ∈ {0} + [4] ∈ {24} + [5..12] ∈ {0} + [13] ∈ {2} + [14..40] ∈ {0} + [41] ∈ {6} + [42..59] ∈ {0} + u[0] ∈ {-1} + [1] ∈ {-2} + [2] ∈ {-3} + [3] ∈ {0} + [4] ∈ {24} + [5..12] ∈ {0} + [13] ∈ {2} + [14..40] ∈ {0} + [41] ∈ {6} + [42..59] ∈ {0} + v[0] ∈ {-1} + [1] ∈ {1} + [2] ∈ {-3} + w[0].s1 ∈ {1} + {[0]{.s2; .s3}; [1].s1} ∈ {0} + [1].s2 ∈ {2} + {[1].s3; [2]{.s1; .s2}} ∈ {0} + [2].s3 ∈ {3} + [3..9] ∈ {0} + Au ∈ {-1} + Bu ∈ {0} + Cu ∈ {-3} + Du ∈ {0} + Eu ∈ {0} + Fu ∈ {2} + Gu ∈ {12} + Hu ∈ {1} + At ∈ {1} + Bt ∈ {0} + Ct ∈ {0} + Dt ∈ {0} + Et ∈ {0} + Ft ∈ {2} + Gt ∈ {12} + Ht ∈ {1} + p ∈ UNINITIALIZED + vg ∈ UNINITIALIZED + =END OF DUMP== +tests/value/period.c:51:[value] Assigning imprecise value to p. + The imprecision originates from Arithmetic {tests/value/period.c:51} +tests/value/period.c:52:[value] warning: out of bounds write. assert \valid(p); +tests/value/period.c:53:[value] Assigning imprecise value to p. + The imprecision originates from Arithmetic {tests/value/period.c:53} +tests/value/period.c:54:[value] warning: out of bounds read. assert \valid_read(p); +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + g[0..9] ∈ + {{ garbled mix of &{vg} (origin: Misaligned {tests/value/period.c:55}) }} + Frama_C_periodic_t_320[0] ∈ {1} + [1..3] ∈ {0} + [4] ∈ {24} + [5..12] ∈ {0} + [13] ∈ {2} + [14..40] ∈ {0} + [41] ∈ {6} + [42..59] ∈ {0} + u[0] ∈ {-1} + [1] ∈ {-2} + [2] ∈ {-3} + [3] ∈ {0} + [4] ∈ {24} + [5..12] ∈ {0} + [13] ∈ {2} + [14..40] ∈ {0} + [41] ∈ {6} + [42..59] ∈ {0} + v[0] ∈ {-1} + [1] ∈ {1} + [2] ∈ {-3} + w[0].s1 ∈ {1} + {[0]{.s2; .s3}; [1].s1} ∈ {0} + [1].s2 ∈ {2} + {[1].s3; [2]{.s1; .s2}} ∈ {0} + [2].s3 ∈ {3} + [3..9] ∈ {0} + Au ∈ {-1} + Bu ∈ {0} + Cu ∈ {-3} + Eu ∈ {0} + Fu ∈ {2} + Hu ∈ {1} + At ∈ {1} + Bt ∈ {0} + Ct ∈ {0} + Et ∈ {0} + Ft ∈ {2} + Ht ∈ {1} + p ∈ {{ &g + [0..36] }} + vg ∈ [--..--] +[from] Computing for function main +[from] Computing for function Frama_C_dump_each <-main +[from] Done for function Frama_C_dump_each +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + g[0..9] FROM \nothing (and SELF) + Frama_C_periodic_t_320[4] FROM Gt + {[13]; [41]} FROM Frama_C_periodic_t_320[20] + u[4] FROM Gu + {[13]; [41]} FROM u[22] + v[1] FROM \nothing + w{[0].s1; [1].s2; [2].s3} FROM \nothing + Au FROM u[0] + Bu FROM u[11] + Cu FROM u[2] + Eu FROM u[12] + Fu FROM u[22] + Hu FROM u[25] + At FROM Frama_C_periodic_t_320[0] + Bt FROM Frama_C_periodic_t_320[11] + Ct FROM Frama_C_periodic_t_320[2] + Et FROM Frama_C_periodic_t_320[12] + Ft FROM Frama_C_periodic_t_320[20] + Ht FROM Frama_C_periodic_t_320[25] +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + g[0..9]; Frama_C_periodic_t_320{[4]; [13]; [41]}; u{[4]; [13]; [41]}; + v[1]; w{[0].s1; [1].s2; [2].s3}; Au; Bu; Cu; Eu; Fu; Hu; At; Bt; Ct; + Et; Ft; Ht; p; vg +[inout] Inputs for function main: + g[0..9]; Frama_C_periodic_t_320{[0]; [2]; [11..12]; [20]; [25]}; + u{[0]; [2]; [11..12]; [22]; [25]}; w{[0].s1; [1].s2}; Fu; Gu; Ft; Gt diff --git a/tests/value/oracle_symblocs/plevel.err.oracle b/tests/value/oracle_symblocs/plevel.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/plevel.res.oracle b/tests/value/oracle_symblocs/plevel.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..42263ebbfcc439f1076b093492e412d5c5d3f16e --- /dev/null +++ b/tests/value/oracle_symblocs/plevel.res.oracle @@ -0,0 +1,130 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/plevel.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + t[0..0xFFFE] ∈ {0} + i ∈ [--..--] +tests/value/plevel.i:11:[value] warning: assertion got status unknown. +tests/value/plevel.i:13:[value] warning: assertion got status unknown. +tests/value/plevel.i:21:[kernel] more than 40(65) locations to update in array. Approximating. +tests/value/plevel.i:21:[kernel] more than 40(65) elements to enumerate. Approximating. +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + t[0..0xFF] ∈ {0} + [0x100..0x120] ∈ {0; 1} + [0x121..0x1FF] ∈ {0} + [0x200..0x240] ∈ {0; 2} + [0x241..0x2FF] ∈ {0} + [0x300] ∈ {0; 3} + [0x301] ∈ {0} + [0x302] ∈ {0; 3} + [0x303] ∈ {0} + [0x304] ∈ {0; 3} + [0x305] ∈ {0} + [0x306] ∈ {0; 3} + [0x307] ∈ {0} + [0x308] ∈ {0; 3} + [0x309] ∈ {0} + [0x30A] ∈ {0; 3} + [0x30B] ∈ {0} + [0x30C] ∈ {0; 3} + [0x30D] ∈ {0} + [0x30E] ∈ {0; 3} + [0x30F] ∈ {0} + [0x310] ∈ {0; 3} + [0x311] ∈ {0} + [0x312] ∈ {0; 3} + [0x313] ∈ {0} + [0x314] ∈ {0; 3} + [0x315] ∈ {0} + [0x316] ∈ {0; 3} + [0x317] ∈ {0} + [0x318] ∈ {0; 3} + [0x319] ∈ {0} + [0x31A] ∈ {0; 3} + [0x31B] ∈ {0} + [0x31C] ∈ {0; 3} + [0x31D] ∈ {0} + [0x31E] ∈ {0; 3} + [0x31F] ∈ {0} + [0x320] ∈ {0; 3} + [0x321] ∈ {0} + [0x322] ∈ {0; 3} + [0x323] ∈ {0} + [0x324] ∈ {0; 3} + [0x325] ∈ {0} + [0x326] ∈ {0; 3} + [0x327] ∈ {0} + [0x328] ∈ {0; 3} + [0x329] ∈ {0} + [0x32A] ∈ {0; 3} + [0x32B] ∈ {0} + [0x32C] ∈ {0; 3} + [0x32D] ∈ {0} + [0x32E] ∈ {0; 3} + [0x32F] ∈ {0} + [0x330] ∈ {0; 3} + [0x331] ∈ {0} + [0x332] ∈ {0; 3} + [0x333] ∈ {0} + [0x334] ∈ {0; 3} + [0x335] ∈ {0} + [0x336] ∈ {0; 3} + [0x337] ∈ {0} + [0x338] ∈ {0; 3} + [0x339] ∈ {0} + [0x33A] ∈ {0; 3} + [0x33B] ∈ {0} + [0x33C] ∈ {0; 3} + [0x33D] ∈ {0} + [0x33E] ∈ {0; 3} + [0x33F] ∈ {0} + [0x340] ∈ {0; 3} + [0x341..0x3FF] ∈ {0} + [0x400..0x480] ∈ {0; 4} + [0x481..0x4FF] ∈ {0} + [0x500][bits 0 to 15]# ∈ {0; 0x5555}%32, bits 0 to 15 + {[0x500][bits 16 to 31]; [0x501..0x520]} ∈ [--..--] + [0x521][bits 0 to 15]# ∈ {0; 0x5656}%32, bits 16 to 31 + {[0x521][bits 16 to 31]; [0x522..0x5FF]} ∈ {0} + [0x600][bits 0 to 15]# ∈ {0; 0x6666}%32, bits 0 to 15 + {[0x600][bits 16 to 31]; [0x601..0x640]} ∈ [--..--] + [0x641][bits 0 to 15]# ∈ {0; 0x6767}%32, bits 16 to 31 + {[0x641][bits 16 to 31]; [0x642..0x6FF]} ∈ {0} + [0x700..0x708] ∈ [--..--] + [0x709..0x7FF] ∈ {0} + [0x800..0x810] ∈ [--..--] + [0x811..0xFFFE] ∈ {0} + i1 ∈ [0..32] + i2 ∈ [0..64] + p ∈ {{ &t + [0x2000..0x2040] }} +[from] Computing for function main +tests/value/plevel.i:21:[kernel] more than 40(65) dependencies to update. Approximating. +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + t{[0x100..0x120]; [0x200..0x240]; [0x300]; [0x302]; [0x304]; [0x306]; + [0x308]; [0x30A]; [0x30C]; [0x30E]; [0x310]; [0x312]; [0x314]; [0x316]; + [0x318]; [0x31A]; [0x31C]; [0x31E]; [0x320]; [0x322]; [0x324]; [0x326]; + [0x328]; [0x32A]; [0x32C]; [0x32E]; [0x330]; [0x332]; [0x334]; [0x336]; + [0x338]; [0x33A]; [0x33C]; [0x33E]; [0x340]; [0x400..0x480]; + {[0x500..0x520]; [0x521][bits 0 to 15]}; + {[0x600..0x640]; [0x641][bits 0 to 15]}; [0x700..0x708]; [0x800..0x810]} + FROM i (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + t{[0x100..0x120]; [0x200..0x240]; [0x300]; [0x302]; [0x304]; [0x306]; + [0x308]; [0x30A]; [0x30C]; [0x30E]; [0x310]; [0x312]; [0x314]; [0x316]; + [0x318]; [0x31A]; [0x31C]; [0x31E]; [0x320]; [0x322]; [0x324]; [0x326]; + [0x328]; [0x32A]; [0x32C]; [0x32E]; [0x330]; [0x332]; [0x334]; [0x336]; + [0x338]; [0x33A]; [0x33C]; [0x33E]; [0x340]; [0x400..0x480]; + {[0x500..0x520]; [0x521][bits 0 to 15]}; + {[0x600..0x640]; [0x641][bits 0 to 15]}; [0x700..0x708]; [0x800..0x810]}; + i1; i2; p +[inout] Inputs for function main: + i diff --git a/tests/value/oracle_symblocs/pointer.err.oracle b/tests/value/oracle_symblocs/pointer.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/pointer.res.oracle b/tests/value/oracle_symblocs/pointer.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..bf3b3624877cc5d8e0d0bc96402bb0ee5c11bb84 --- /dev/null +++ b/tests/value/oracle_symblocs/pointer.res.oracle @@ -0,0 +1,80 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/pointer.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + x ∈ {0} + y ∈ {0} + c ∈ {0} + p ∈ {0} + q ∈ {0} + T[0..9] ∈ {0} + cc1 ∈ {0} + cc2 ∈ {0} +[value] computing for function k <- main. + Called from tests/value/pointer.i:37. +[value] computing for function l <- k <- main. + Called from tests/value/pointer.i:29. +[value] Recording results for l +[value] Done for function l +[value] Recording results for k +[value] Done for function k +[value] computing for function k <- main. + Called from tests/value/pointer.i:38. +[value] computing for function l <- k <- main. + Called from tests/value/pointer.i:29. +[value] Recording results for l +[value] Done for function l +[value] Recording results for k +[value] Done for function k +tests/value/pointer.i:40:[value] warning: pointer comparison. + assert \pointer_comparable((void *)((int *)T-1), (void *)((int *)T)); +tests/value/pointer.i:41:[value] warning: pointer comparison. + assert \pointer_comparable((void *)((int *)T), (void *)(&T[12])); +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function l: + x ∈ {19} + c ∈ {19} +[value:final-states] Values at end of function k: + x ∈ {19} + c ∈ {19} +[value:final-states] Values at end of function main: + x ∈ {19} + c ∈ {19} + cc1 ∈ {1; 99} + cc2 ∈ {1; 99} +[from] Computing for function l +[from] Done for function l +[from] Computing for function k +[from] Done for function k +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function l: + x FROM x; y_0 (and SELF) + c FROM x; y_0 (and SELF) +[from] Function k: + x FROM x; x_0 (and SELF) + c FROM x; x_0 (and SELF) +[from] Function main: + x FROM \nothing + c FROM \nothing + cc1 FROM en + cc2 FROM en +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function l: + x; c +[inout] Inputs for function l: + x +[inout] Out (internal) for function k: + x; c +[inout] Inputs for function k: + x +[inout] Out (internal) for function main: + x; c; cc1; cc2 +[inout] Inputs for function main: + x; cc2 diff --git a/tests/value/oracle_symblocs/pointer2.0.err.oracle b/tests/value/oracle_symblocs/pointer2.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/pointer2.0.res.oracle b/tests/value/oracle_symblocs/pointer2.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..cfd049633c58e8651afea64f8da89f810117a60d --- /dev/null +++ b/tests/value/oracle_symblocs/pointer2.0.res.oracle @@ -0,0 +1,41 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/pointer2.i (no preprocessing) +[value] Analyzing a complete application starting at g +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + p ∈ {0} + q ∈ {0} + x ∈ {0} + y ∈ {0} + z ∈ {0} +[value] computing for function f <- g. + Called from tests/value/pointer2.i:14. +[value] Recording results for f +[value] Done for function f +[value] Recording results for g +[value] done for function g +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + +[value:final-states] Values at end of function g: + p ∈ {{ &x }} +[from] Computing for function f +[from] Done for function f +[from] Computing for function g +[from] Done for function g +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + \result FROM r +[from] Function g: + p FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + \nothing +[inout] Inputs for function f: + \nothing +[inout] Out (internal) for function g: + p +[inout] Inputs for function g: + \nothing diff --git a/tests/value/oracle_symblocs/pointer2.1.err.oracle b/tests/value/oracle_symblocs/pointer2.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/pointer2.1.res.oracle b/tests/value/oracle_symblocs/pointer2.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..93910bf2d74e492e448434e23c676c4fe18dca98 --- /dev/null +++ b/tests/value/oracle_symblocs/pointer2.1.res.oracle @@ -0,0 +1,41 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/pointer2.i (no preprocessing) +[value] Analyzing a complete application starting at h +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + p ∈ {0} + q ∈ {0} + x ∈ {0} + y ∈ {0} + z ∈ {0} +[value] computing for function f <- h. + Called from tests/value/pointer2.i:18. +[value] Recording results for f +[value] Done for function f +[value] Recording results for h +[value] done for function h +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + +[value:final-states] Values at end of function h: + q ∈ {{ &y }} +[from] Computing for function f +[from] Done for function f +[from] Computing for function h +[from] Done for function h +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + \result FROM r +[from] Function h: + q FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + \nothing +[inout] Inputs for function f: + \nothing +[inout] Out (internal) for function h: + q +[inout] Inputs for function h: + \nothing diff --git a/tests/value/oracle_symblocs/pointer3.err.oracle b/tests/value/oracle_symblocs/pointer3.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/pointer3.res.oracle b/tests/value/oracle_symblocs/pointer3.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..6e95cc37dd4f677c784c884418f517988b4cf17e --- /dev/null +++ b/tests/value/oracle_symblocs/pointer3.res.oracle @@ -0,0 +1,52 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/pointer3.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + x ∈ {0} + y ∈ {0} + c ∈ {0} + p ∈ {0} + q ∈ {0} +[value] computing for function f <- main. + Called from tests/value/pointer3.i:11. +[value] Recording results for f +[value] Done for function f +[value] computing for function f <- main. + Called from tests/value/pointer3.i:12. +[value] Recording results for f +[value] Done for function f +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + c ∈ {2} +[value:final-states] Values at end of function main: + x ∈ {2} + c ∈ {2} + p ∈ {{ &x }} + q ∈ {{ &y }} +[from] Computing for function f +[from] Done for function f +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + c FROM \nothing + \result FROM x_0 +[from] Function main: + x FROM \nothing + c FROM \nothing + p FROM \nothing + q FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + c +[inout] Inputs for function f: + \nothing +[inout] Out (internal) for function main: + x; c; p; q +[inout] Inputs for function main: + c; p diff --git a/tests/value/oracle_symblocs/pointer4.err.oracle b/tests/value/oracle_symblocs/pointer4.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/pointer4.res.oracle b/tests/value/oracle_symblocs/pointer4.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..158bf087651081b71e29e42215b9a837d5c322bf --- /dev/null +++ b/tests/value/oracle_symblocs/pointer4.res.oracle @@ -0,0 +1,29 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/pointer4.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + NULL[rbits 0 to 63] ∈ [--..--] + d ∈ {0} + e[0..9] ∈ {0} + c ∈ {0} +tests/value/pointer4.i:12:[value] entering loop for the first time +tests/value/pointer4.i:15:[value] warning: out of bounds write. assert \valid((int *)0x0+c); +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + NON TERMINATING FUNCTION +[from] Computing for function main +[from] Non-terminating function main (no dependencies) +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NON TERMINATING - NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + NULL[0..7]; d; e[0]; c +[inout] Inputs for function main: + c diff --git a/tests/value/oracle_symblocs/pointer_arg.err.oracle b/tests/value/oracle_symblocs/pointer_arg.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/pointer_arg.res.oracle b/tests/value/oracle_symblocs/pointer_arg.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..1d92985ff2bb17856ac9a2017cb26f73f5788c4d --- /dev/null +++ b/tests/value/oracle_symblocs/pointer_arg.res.oracle @@ -0,0 +1,44 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/pointer_arg.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + v ∈ [--..--] +tests/value/pointer_arg.i:4:[value] warning: out of bounds write. assert \valid(arg+0); +tests/value/pointer_arg.i:5:[value] warning: out of bounds write. assert \valid(arg+1); +tests/value/pointer_arg.i:6:[value] warning: out of bounds write. assert \valid(arg+2); +tests/value/pointer_arg.i:6:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +tests/value/pointer_arg.i:7:[value] warning: out of bounds write. assert \valid(arg+1000); +tests/value/pointer_arg.i:7:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +tests/value/pointer_arg.i:8:[value] warning: out of bounds write. assert \valid(arg+argc); +tests/value/pointer_arg.i:11:[value] warning: out of bounds write. assert \valid(argv+1); +tests/value/pointer_arg.i:15:[value] warning: out of bounds read. assert \valid_read(argv+0); +tests/value/pointer_arg.i:15:[value] warning: out of bounds write. assert \valid(*(argv+0)+0); +[value] Recording results for main +[value] done for function main +tests/value/pointer_arg.i:6:[value] assertion 'Value,mem_access' got final status invalid. +tests/value/pointer_arg.i:7:[value] assertion 'Value,mem_access' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + __retres ∈ {0} + S_argv[0] ∈ {{ &S_0_S_argv[0] }} + [1] ∈ {{ NULL ; &S_1_S_argv[0] ; "5069" }} + S_0_S_argv[0] ∈ {48} + [1] ∈ [--..--] + S_arg[0] ∈ {0; 4} + [1] ∈ {1; 4} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + S_argv[0..1] FROM v; argv (and SELF) + S_0_S_argv[0] FROM v; argv; S_argv[0] + S_arg[0..1] FROM arg; argc + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + __retres; S_argv[0..1]; S_0_S_argv[0]; S_arg[0..1] +[inout] Inputs for function main: + v; S_argv[0] diff --git a/tests/value/oracle_symblocs/pointer_comp.err.oracle b/tests/value/oracle_symblocs/pointer_comp.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/pointer_comp.res.oracle b/tests/value/oracle_symblocs/pointer_comp.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..7882de98553d8434538a03c0c30238044f6be5d4 --- /dev/null +++ b/tests/value/oracle_symblocs/pointer_comp.res.oracle @@ -0,0 +1,131 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/pointer_comp.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + v ∈ [--..--] + str1[0] ∈ {97} + [1] ∈ {98} + [2] ∈ {115} + [3] ∈ {100} + [4] ∈ {0} + str2[0] ∈ {97} + [1] ∈ {98} + [2..3] ∈ {100} + [4] ∈ {0} + s1 ∈ {0} + s2[0..7] ∈ {0} +tests/value/pointer_comp.c:37:[value] warning: pointer comparison. assert \pointer_comparable((void *)(&s2[9]), (void *)0); +tests/value/pointer_comp.c:38:[value] warning: pointer comparison. + assert \pointer_comparable((void *)(&s2[9]), (void *)(&s2[9])); +tests/value/pointer_comp.c:41:[value] warning: pointer comparison. + assert \pointer_comparable((void *)(&str1), (void *)(&str2)); +tests/value/pointer_comp.c:42:[value] warning: pointer comparison. assert \pointer_comparable((void *)(&s1), (void *)(&s2)); +tests/value/pointer_comp.c:43:[value] warning: pointer comparison. + assert \pointer_comparable((void (*)())(&f), (void (*)())(&g)); +tests/value/pointer_comp.c:46:[value] warning: pointer comparison. assert \pointer_comparable((void *)(&s1), (void *)0); +tests/value/pointer_comp.c:47:[value] warning: pointer comparison. assert \pointer_comparable((void *)(&s1+1), (void *)0); +tests/value/pointer_comp.c:48:[value] warning: pointer comparison. assert \pointer_comparable((void *)(&s2[8]), (void *)0); +tests/value/pointer_comp.c:50:[value] warning: pointer comparison. + assert \pointer_comparable((void (*)())(&f), (void (*)())0); +tests/value/pointer_comp.c:51:[value] warning: pointer comparison. assert \pointer_comparable((void (*)())p, (void (*)())0); +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + i ∈ {0; 1} + p ∈ {{ &f ; &g }} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + i; p; tmp +[inout] Inputs for function main: + v +/* Generated by Frama-C */ +struct s { + int x ; +}; +extern int v; + +char str1[5] = {(char)'a', (char)'b', (char)'s', (char)'d', (char)'\000'}; +char str2[5] = {(char)'a', (char)'b', (char)'d', (char)'d', (char)'\000'}; +struct s s1; +struct s s2[8]; +extern void f(void); + +extern void g(void); + +void main(void) +{ + int i; + void (*p)(void); + void (*tmp)(void); + if (v) tmp = & f; else tmp = & g; + p = tmp; + i = & str1 == & str2; + i = & s1 == (struct s *)0; + i = & s1 + 1 == (struct s *)0; + i = & s2[2] == & s2[4]; + i = & s2[8] == (struct s *)0; + i = & f == (void (*)(void))0; + i = (void *)(& s1) == (void *)(& s2); + i = & f == & g; + i = p == (void (*)(void))0; + i = & s2[2] < & s2[4]; + /*@ assert + Value: ptr_comparison: \pointer_comparable((void *)(&s2[9]), (void *)0); + */ + i = & s2[9] == (struct s *)0; + /*@ assert + Value: ptr_comparison: + \pointer_comparable((void *)(&s2[9]), (void *)(&s2[9])); + */ + i = & s2[9] == & s2[9]; + /*@ assert + Value: ptr_comparison: + \pointer_comparable((void *)(&str1), (void *)(&str2)); + */ + i = & str1 < & str2; + /*@ assert + Value: ptr_comparison: + \pointer_comparable((void *)(&s1), (void *)(&s2)); + */ + i = (void *)(& s1) < (void *)(& s2); + /*@ assert + Value: ptr_comparison: + \pointer_comparable((void (*)())(&f), (void (*)())(&g)); + */ + i = & f < & g; + /*@ assert + Value: ptr_comparison: \pointer_comparable((void *)(&s1), (void *)0); + */ + i = & s1 > (struct s *)0; + /*@ assert + Value: ptr_comparison: \pointer_comparable((void *)(&s1+1), (void *)0); + */ + i = & s1 + 1 > (struct s *)0; + /*@ assert + Value: ptr_comparison: \pointer_comparable((void *)(&s2[8]), (void *)0); + */ + i = & s2[8] > (struct s *)0; + i = & f == (void (*)(void))0; + /*@ assert + Value: ptr_comparison: + \pointer_comparable((void (*)())(&f), (void (*)())0); + */ + i = & f > (void (*)(void))0; + /*@ assert + Value: ptr_comparison: + \pointer_comparable((void (*)())p, (void (*)())0); + */ + i = p > (void (*)(void))0; + return; +} + + diff --git a/tests/value/oracle_symblocs/pointer_comparison.0.err.oracle b/tests/value/oracle_symblocs/pointer_comparison.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/pointer_comparison.0.res.oracle b/tests/value/oracle_symblocs/pointer_comparison.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..894eff73b7c3dee0ff9afd041f9abea0e0ccd19a --- /dev/null +++ b/tests/value/oracle_symblocs/pointer_comparison.0.res.oracle @@ -0,0 +1,205 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/pointer_comparison.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + x ∈ {0} + y ∈ {0} + p ∈ {0} +[value] Called Frama_C_show_each_1t({{ &x + {4} }}) +[value] Called Frama_C_show_each_2({{ &x + {8} }}) +[value] Called Frama_C_show_each_3({{ &x + {12} }}) +[value] Called Frama_C_show_each_4({{ &x + {16} }}) +[value] Called Frama_C_show_each_5({{ &x + {16} }}) +tests/value/pointer_comparison.c:18:[value] entering loop for the first time +[value] Called Frama_C_show_each_6({{ &x + {20} }}) +[value] Called Frama_C_show_each_6({{ &x + {20; 24} }}) +[value] Called Frama_C_show_each_6({{ &x + {20; 24; 28} }}) +[value] Called Frama_C_show_each_6({{ &x + [20..--],0%4 }}) +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + NON TERMINATING FUNCTION +[from] Computing for function main +[from] Non-terminating function main (no dependencies) +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NON TERMINATING - NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + p; tmp; tmp_0; tmp_1; tmp_2; tmp_3 +[inout] Inputs for function main: + p +[report] Computing properties status... + +-------------------------------------------------------------------------------- +--- Status Report Summary +-------------------------------------------------------------------------------- + 0 Total +-------------------------------------------------------------------------------- +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + x ∈ {0} + y ∈ {0} + p ∈ {0} +[value] Called Frama_C_show_each_1t({{ &x + {4} }}) +tests/value/pointer_comparison.c:10:[value] warning: pointer comparison. + assert \pointer_comparable((void *)tmp_0, (void *)(&y)); + (tmp_0 from p++) +[value] Called Frama_C_show_each_2({{ &x + {8} }}) +tests/value/pointer_comparison.c:12:[value] warning: pointer comparison. + assert \pointer_comparable((void *)tmp_1, (void *)(&y)); + (tmp_1 from p++) +[value] Called Frama_C_show_each_3({{ &x + {12} }}) +tests/value/pointer_comparison.c:14:[value] warning: pointer comparison. + assert \pointer_comparable((void *)tmp_2, (void *)(&y)); + (tmp_2 from p++) +[value] Called Frama_C_show_each_4({{ &x + {16} }}) +[value] Called Frama_C_show_each_5({{ &x + {16} }}) +tests/value/pointer_comparison.c:18:[value] warning: pointer comparison. + assert \pointer_comparable((void *)tmp_3, (void *)(&y)); + (tmp_3 from p++) +[value] Called Frama_C_show_each_6({{ &x + {20} }}) +[value] Called Frama_C_show_each_6({{ &x + {20; 24} }}) +[value] Called Frama_C_show_each_6({{ &x + {20; 24; 28} }}) +[value] Called Frama_C_show_each_6({{ &x + [20..--],0%4 }}) +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + NON TERMINATING FUNCTION +[from] Computing for function main +[from] Non-terminating function main (no dependencies) +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NON TERMINATING - NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + p; tmp; tmp_0; tmp_1; tmp_2; tmp_3 +[inout] Inputs for function main: + p +[report] Computing properties status... + +-------------------------------------------------------------------------------- +--- Properties of Function 'main' +-------------------------------------------------------------------------------- + +[ - ] Assertion 'Value,ptr_comparison' (file tests/value/pointer_comparison.c, line 10) + assert + Value: ptr_comparison: + \pointer_comparable((void *)tmp_0, (void *)(&y)); + tried with Value. +[ - ] Assertion 'Value,ptr_comparison' (file tests/value/pointer_comparison.c, line 12) + assert + Value: ptr_comparison: + \pointer_comparable((void *)tmp_1, (void *)(&y)); + tried with Value. +[ - ] Assertion 'Value,ptr_comparison' (file tests/value/pointer_comparison.c, line 14) + assert + Value: ptr_comparison: + \pointer_comparable((void *)tmp_2, (void *)(&y)); + tried with Value. +[ - ] Assertion 'Value,ptr_comparison' (file tests/value/pointer_comparison.c, line 18) + assert + Value: ptr_comparison: + \pointer_comparable((void *)tmp_3, (void *)(&y)); + tried with Value. + +-------------------------------------------------------------------------------- +--- Status Report Summary +-------------------------------------------------------------------------------- + 4 To be validated + 4 Total +-------------------------------------------------------------------------------- +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + x ∈ {0} + y ∈ {0} + p ∈ {0} +[value] Called Frama_C_show_each_1t({{ &x + {4} }}) +tests/value/pointer_comparison.c:10:[value] warning: pointer comparison. + assert \pointer_comparable((void *)tmp_0, (void *)(&y)); + (tmp_0 from p++) +[value] Called Frama_C_show_each_2({{ &x + {8} }}) +tests/value/pointer_comparison.c:12:[value] warning: pointer comparison. + assert \pointer_comparable((void *)tmp_1, (void *)(&y)); + (tmp_1 from p++) +[value] Called Frama_C_show_each_3({{ &x + {12} }}) +tests/value/pointer_comparison.c:14:[value] warning: pointer comparison. + assert \pointer_comparable((void *)tmp_2, (void *)(&y)); + (tmp_2 from p++) +[value] Called Frama_C_show_each_4({{ &x + {16} }}) +tests/value/pointer_comparison.c:16:[value] warning: pointer comparison. assert \pointer_comparable((void *)p, (void *)(&y)); +[value] Called Frama_C_show_each_5({{ &x + {16} }}) +tests/value/pointer_comparison.c:18:[value] warning: pointer comparison. + assert \pointer_comparable((void *)tmp_3, (void *)(&y)); + (tmp_3 from p++) +[value] Called Frama_C_show_each_6({{ &x + {20} }}) +[value] Called Frama_C_show_each_6({{ &x + {20; 24} }}) +[value] Called Frama_C_show_each_6({{ &x + {20; 24; 28} }}) +[value] Called Frama_C_show_each_6({{ &x + [20..--],0%4 }}) +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + NON TERMINATING FUNCTION +[from] Computing for function main +[from] Non-terminating function main (no dependencies) +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NON TERMINATING - NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + p; tmp; tmp_0; tmp_1; tmp_2; tmp_3 +[inout] Inputs for function main: + p +[report] Computing properties status... + +-------------------------------------------------------------------------------- +--- Properties of Function 'main' +-------------------------------------------------------------------------------- + +[ - ] Assertion 'Value,ptr_comparison' (file tests/value/pointer_comparison.c, line 10) + assert + Value: ptr_comparison: + \pointer_comparable((void *)tmp_0, (void *)(&y)); + tried with Value. +[ - ] Assertion 'Value,ptr_comparison' (file tests/value/pointer_comparison.c, line 12) + assert + Value: ptr_comparison: + \pointer_comparable((void *)tmp_1, (void *)(&y)); + tried with Value. +[ - ] Assertion 'Value,ptr_comparison' (file tests/value/pointer_comparison.c, line 14) + assert + Value: ptr_comparison: + \pointer_comparable((void *)tmp_2, (void *)(&y)); + tried with Value. +[ - ] Assertion 'Value,ptr_comparison' (file tests/value/pointer_comparison.c, line 16) + assert + Value: ptr_comparison: + \pointer_comparable((void *)p, (void *)(&y)); + tried with Value. +[ - ] Assertion 'Value,ptr_comparison' (file tests/value/pointer_comparison.c, line 18) + assert + Value: ptr_comparison: + \pointer_comparable((void *)tmp_3, (void *)(&y)); + tried with Value. + +-------------------------------------------------------------------------------- +--- Status Report Summary +-------------------------------------------------------------------------------- + 5 To be validated + 5 Total +-------------------------------------------------------------------------------- diff --git a/tests/value/oracle_symblocs/pointer_comparison.1.err.oracle b/tests/value/oracle_symblocs/pointer_comparison.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/pointer_comparison.1.res.oracle b/tests/value/oracle_symblocs/pointer_comparison.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..ddb333e27eb3dcca6583a00c5b5db342dd0bb5d8 --- /dev/null +++ b/tests/value/oracle_symblocs/pointer_comparison.1.res.oracle @@ -0,0 +1,220 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/pointer_comparison.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + x ∈ {0} + y ∈ {0} + p ∈ {0} +[value] Called Frama_C_show_each_1t({{ &x + {4} }}) +[value] Called Frama_C_show_each_2({{ &x + {8} }}) +[value] Called Frama_C_show_each_2e({{ &x + {8} }}) +[value] Called Frama_C_show_each_3({{ &x + {12} }}) +[value] Called Frama_C_show_each_3e({{ &x + {12} }}) +[value] Called Frama_C_show_each_4({{ &x + {16} }}) +[value] Called Frama_C_show_each_4e({{ &x + {16} }}) +[value] Called Frama_C_show_each_5({{ &x + {16} }}) +[value] Called Frama_C_show_each_5e({{ &x + {16} }}) +tests/value/pointer_comparison.c:18:[value] entering loop for the first time +[value] Called Frama_C_show_each_6({{ &x + {20} }}) +[value] Called Frama_C_show_each_6({{ &x + {20; 24} }}) +[value] Called Frama_C_show_each_6({{ &x + {20; 24; 28} }}) +[value] Called Frama_C_show_each_6({{ &x + [20..--],0%4 }}) +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + p ∈ {{ &x + [20..--],0%4 }} + __retres ∈ {0} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + p FROM \nothing + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + p; tmp; tmp_0; tmp_1; tmp_2; tmp_3; __retres +[inout] Inputs for function main: + p +[report] Computing properties status... + +-------------------------------------------------------------------------------- +--- Status Report Summary +-------------------------------------------------------------------------------- + 0 Total +-------------------------------------------------------------------------------- +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + x ∈ {0} + y ∈ {0} + p ∈ {0} +[value] Called Frama_C_show_each_1t({{ &x + {4} }}) +tests/value/pointer_comparison.c:10:[value] warning: pointer comparison. + assert \pointer_comparable((void *)tmp_0, (void *)(&y)); + (tmp_0 from p++) +[value] Called Frama_C_show_each_2({{ &x + {8} }}) +[value] Called Frama_C_show_each_2e({{ &x + {8} }}) +tests/value/pointer_comparison.c:12:[value] warning: pointer comparison. + assert \pointer_comparable((void *)tmp_1, (void *)(&y)); + (tmp_1 from p++) +[value] Called Frama_C_show_each_3({{ &x + {12} }}) +[value] Called Frama_C_show_each_3e({{ &x + {12} }}) +tests/value/pointer_comparison.c:14:[value] warning: pointer comparison. + assert \pointer_comparable((void *)tmp_2, (void *)(&y)); + (tmp_2 from p++) +[value] Called Frama_C_show_each_4({{ &x + {16} }}) +[value] Called Frama_C_show_each_4e({{ &x + {16} }}) +[value] Called Frama_C_show_each_5({{ &x + {16} }}) +[value] Called Frama_C_show_each_5e({{ &x + {16} }}) +tests/value/pointer_comparison.c:18:[value] warning: pointer comparison. + assert \pointer_comparable((void *)tmp_3, (void *)(&y)); + (tmp_3 from p++) +[value] Called Frama_C_show_each_6({{ &x + {20} }}) +[value] Called Frama_C_show_each_6({{ &x + {20; 24} }}) +[value] Called Frama_C_show_each_6({{ &x + {20; 24; 28} }}) +[value] Called Frama_C_show_each_6({{ &x + [20..--],0%4 }}) +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + p ∈ {{ &x + [20..--],0%4 }} + __retres ∈ {0} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + p FROM \nothing + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + p; tmp; tmp_0; tmp_1; tmp_2; tmp_3; __retres +[inout] Inputs for function main: + p +[report] Computing properties status... + +-------------------------------------------------------------------------------- +--- Properties of Function 'main' +-------------------------------------------------------------------------------- + +[ - ] Assertion 'Value,ptr_comparison' (file tests/value/pointer_comparison.c, line 10) + assert + Value: ptr_comparison: + \pointer_comparable((void *)tmp_0, (void *)(&y)); + tried with Value. +[ - ] Assertion 'Value,ptr_comparison' (file tests/value/pointer_comparison.c, line 12) + assert + Value: ptr_comparison: + \pointer_comparable((void *)tmp_1, (void *)(&y)); + tried with Value. +[ - ] Assertion 'Value,ptr_comparison' (file tests/value/pointer_comparison.c, line 14) + assert + Value: ptr_comparison: + \pointer_comparable((void *)tmp_2, (void *)(&y)); + tried with Value. +[ - ] Assertion 'Value,ptr_comparison' (file tests/value/pointer_comparison.c, line 18) + assert + Value: ptr_comparison: + \pointer_comparable((void *)tmp_3, (void *)(&y)); + tried with Value. + +-------------------------------------------------------------------------------- +--- Status Report Summary +-------------------------------------------------------------------------------- + 4 To be validated + 4 Total +-------------------------------------------------------------------------------- +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + x ∈ {0} + y ∈ {0} + p ∈ {0} +[value] Called Frama_C_show_each_1t({{ &x + {4} }}) +tests/value/pointer_comparison.c:10:[value] warning: pointer comparison. + assert \pointer_comparable((void *)tmp_0, (void *)(&y)); + (tmp_0 from p++) +[value] Called Frama_C_show_each_2({{ &x + {8} }}) +[value] Called Frama_C_show_each_2e({{ &x + {8} }}) +tests/value/pointer_comparison.c:12:[value] warning: pointer comparison. + assert \pointer_comparable((void *)tmp_1, (void *)(&y)); + (tmp_1 from p++) +[value] Called Frama_C_show_each_3({{ &x + {12} }}) +[value] Called Frama_C_show_each_3e({{ &x + {12} }}) +tests/value/pointer_comparison.c:14:[value] warning: pointer comparison. + assert \pointer_comparable((void *)tmp_2, (void *)(&y)); + (tmp_2 from p++) +[value] Called Frama_C_show_each_4({{ &x + {16} }}) +[value] Called Frama_C_show_each_4e({{ &x + {16} }}) +tests/value/pointer_comparison.c:16:[value] warning: pointer comparison. assert \pointer_comparable((void *)p, (void *)(&y)); +[value] Called Frama_C_show_each_5({{ &x + {16} }}) +[value] Called Frama_C_show_each_5e({{ &x + {16} }}) +tests/value/pointer_comparison.c:18:[value] warning: pointer comparison. + assert \pointer_comparable((void *)tmp_3, (void *)(&y)); + (tmp_3 from p++) +[value] Called Frama_C_show_each_6({{ &x + {20} }}) +[value] Called Frama_C_show_each_6({{ &x + {20; 24} }}) +[value] Called Frama_C_show_each_6({{ &x + {20; 24; 28} }}) +[value] Called Frama_C_show_each_6({{ &x + [20..--],0%4 }}) +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + p ∈ {{ &x + [20..--],0%4 }} + __retres ∈ {0} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + p FROM \nothing + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + p; tmp; tmp_0; tmp_1; tmp_2; tmp_3; __retres +[inout] Inputs for function main: + p +[report] Computing properties status... + +-------------------------------------------------------------------------------- +--- Properties of Function 'main' +-------------------------------------------------------------------------------- + +[ - ] Assertion 'Value,ptr_comparison' (file tests/value/pointer_comparison.c, line 10) + assert + Value: ptr_comparison: + \pointer_comparable((void *)tmp_0, (void *)(&y)); + tried with Value. +[ - ] Assertion 'Value,ptr_comparison' (file tests/value/pointer_comparison.c, line 12) + assert + Value: ptr_comparison: + \pointer_comparable((void *)tmp_1, (void *)(&y)); + tried with Value. +[ - ] Assertion 'Value,ptr_comparison' (file tests/value/pointer_comparison.c, line 14) + assert + Value: ptr_comparison: + \pointer_comparable((void *)tmp_2, (void *)(&y)); + tried with Value. +[ - ] Assertion 'Value,ptr_comparison' (file tests/value/pointer_comparison.c, line 16) + assert + Value: ptr_comparison: + \pointer_comparable((void *)p, (void *)(&y)); + tried with Value. +[ - ] Assertion 'Value,ptr_comparison' (file tests/value/pointer_comparison.c, line 18) + assert + Value: ptr_comparison: + \pointer_comparable((void *)tmp_3, (void *)(&y)); + tried with Value. + +-------------------------------------------------------------------------------- +--- Status Report Summary +-------------------------------------------------------------------------------- + 5 To be validated + 5 Total +-------------------------------------------------------------------------------- diff --git a/tests/value/oracle_symblocs/pointer_int_cast.err.oracle b/tests/value/oracle_symblocs/pointer_int_cast.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/pointer_int_cast.res.oracle b/tests/value/oracle_symblocs/pointer_int_cast.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..dd6b3dc307d93a632150b0223c422902d4fbd846 --- /dev/null +++ b/tests/value/oracle_symblocs/pointer_int_cast.res.oracle @@ -0,0 +1,28 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/pointer_int_cast.i (no preprocessing) +[value] Analyzing a complete application starting at g +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + q ∈ {0} + x ∈ {0} + y ∈ {0} +[value] Recording results for g +[value] done for function g +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function g: + q ∈ {{ &y }} + y ∈ {0} + i ∈ {{ (int)&y }} +[from] Computing for function g +[from] Done for function g +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function g: + q FROM y + y FROM x; y +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function g: + q; y; i +[inout] Inputs for function g: + q; x; y diff --git a/tests/value/oracle_symblocs/pointer_loop.err.oracle b/tests/value/oracle_symblocs/pointer_loop.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/pointer_loop.res.oracle b/tests/value/oracle_symblocs/pointer_loop.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..266cb1e532550ebd63915ee7097ed86e981eebf4 --- /dev/null +++ b/tests/value/oracle_symblocs/pointer_loop.res.oracle @@ -0,0 +1,41 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/pointer_loop.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + base0 ∈ {7} + base1 ∈ {1} + base2 ∈ {2} + base_p[0] ∈ {{ &base1 }} + [1] ∈ {{ &base2 }} + Ctrl_p ∈ {0} + Ctrl[0..1] ∈ {0} + Slot[0].Elements ∈ {2} + [0].Ctrl_p ∈ {{ &ACtrl[0] }} + [1] ∈ {0} + ACtrl[0] ∈ {{ &Ctrl[0] }} + [1] ∈ {{ &Ctrl[1] }} +tests/value/pointer_loop.i:13:[value] entering loop for the first time +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + base1 ∈ {1; 3; 4} + base2 ∈ {2; 3; 4} + Ctrl_p ∈ {{ NULL ; &base1 ; &base2 }} + i ∈ {2} + Elements ∈ {2} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + base1 FROM base_p[0..1] (and SELF) + base2 FROM base_p[0..1] (and SELF) + Ctrl_p FROM base_p[0..1] (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + base1; base2; Ctrl_p; i; Elements +[inout] Inputs for function main: + base_p[0..1]; Ctrl_p diff --git a/tests/value/oracle_symblocs/postcond_leaf.err.oracle b/tests/value/oracle_symblocs/postcond_leaf.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/postcond_leaf.res.oracle b/tests/value/oracle_symblocs/postcond_leaf.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..f1057b6de454772249ca0d682b73e450612636c5 --- /dev/null +++ b/tests/value/oracle_symblocs/postcond_leaf.res.oracle @@ -0,0 +1,217 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/postcond_leaf.c (with preprocessing) +[value] user error: no assigns specified for function 'g1', for which a builtin + or the specification will be used. Potential unsoundness. +[value] user error: no assigns specified for function 'g2', for which a builtin + or the specification will be used. Potential unsoundness. +[value] user error: no assigns specified for function 'g3', for which a builtin + or the specification will be used. Potential unsoundness. +[value] warning: Generating potentially incorrect assigns for function 'g1' for which option -val-use-spec is set +tests/value/postcond_leaf.c:37:[kernel] warning: No code nor implicit assigns clause for function g1, generating default assigns from the prototype +[value] warning: Generating potentially incorrect assigns for function 'g2' for which option -val-use-spec is set +tests/value/postcond_leaf.c:44:[kernel] warning: No code nor implicit assigns clause for function g2, generating default assigns from the prototype +[value] warning: Generating potentially incorrect assigns for function 'g3' for which option -val-use-spec is set +tests/value/postcond_leaf.c:48:[kernel] warning: No code nor implicit assigns clause for function g3, generating default assigns from the prototype +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + i ∈ [--..--] +tests/value/postcond_leaf.c:77:[kernel] warning: No code nor implicit assigns clause for function f1, generating default assigns from the prototype +[value] using specification for function f1 +tests/value/postcond_leaf.c:21:[value] warning: function f1: this postcondition evaluates to false in this context. + If it is valid, either a precondition was not verified for this call, + or some assigns/from clauses are incomplete (or incorrect). +tests/value/postcond_leaf.c:80:[kernel] warning: No code nor implicit assigns clause for function f2, generating default assigns from the prototype +[value] using specification for function f2 +tests/value/postcond_leaf.c:26:[value] warning: function f2, behavior b: this postcondition evaluates to false in this + context. If it is valid, either a precondition was not verified for this + call, or some assigns/from clauses are incomplete (or incorrect). +tests/value/postcond_leaf.c:83:[kernel] warning: No code nor implicit assigns clause for function f3, generating default assigns from the prototype +[value] using specification for function f3 +tests/value/postcond_leaf.c:86:[kernel] warning: No code nor implicit assigns clause for function f4, generating default assigns from the prototype +[value] using specification for function f4 +[value] using specification for function g1 +tests/value/postcond_leaf.c:36:[value] warning: function g1: this postcondition evaluates to false in this context. + If it is valid, either a precondition was not verified for this call, + or some assigns/from clauses are incomplete (or incorrect). +[value] using specification for function g2 +tests/value/postcond_leaf.c:42:[value] warning: function g2, behavior b: this postcondition evaluates to false in this + context. If it is valid, either a precondition was not verified for this + call, or some assigns/from clauses are incomplete (or incorrect). +[value] using specification for function g3 +tests/value/postcond_leaf.c:51:[value] warning: function h1: postcondition got status invalid. +tests/value/postcond_leaf.c:57:[value] warning: function h2, behavior b: postcondition got status invalid. (Behavior may be inactive, no reduction performed.) +tests/value/postcond_leaf.c:62:[value] warning: function h3: postcondition got status unknown. +tests/value/postcond_leaf.c:66:[value] warning: function h4: postcondition got status invalid. +tests/value/postcond_leaf.c:111:[kernel] warning: No code nor implicit assigns clause for function k, generating default assigns from the prototype +[value] using specification for function k +tests/value/postcond_leaf.c:71:[value] warning: function k: this postcondition evaluates to false in this context. + If it is valid, either a precondition was not verified for this call, + or some assigns/from clauses are incomplete (or incorrect). +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function h1: + +[value:final-states] Values at end of function h2: + +[value:final-states] Values at end of function h3: + +[value:final-states] Values at end of function h4: + +[value:final-states] Values at end of function main: + +[report] Computing properties status... + +-------------------------------------------------------------------------------- +--- Properties of Function 'f1' +-------------------------------------------------------------------------------- + +[ Extern ] Post-condition (file tests/value/postcond_leaf.c, line 21) + Unverifiable but considered Valid. +[ - ] Assigns nothing + tried with Inferred annotations. +[ - ] Default behavior + tried with Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'f2' +-------------------------------------------------------------------------------- + +[ Extern ] Post-condition for 'b' (file tests/value/postcond_leaf.c, line 26) + Unverifiable but considered Valid. +[ - ] Assigns nothing + tried with Inferred annotations. +[ Valid ] Behavior 'b' + by Frama-C kernel. +[ - ] Default behavior + tried with Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'f3' +-------------------------------------------------------------------------------- + +[ Extern ] Post-condition (file tests/value/postcond_leaf.c, line 30) + Unverifiable but considered Valid. +[ - ] Assigns nothing + tried with Inferred annotations. +[ - ] Default behavior + tried with Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'f4' +-------------------------------------------------------------------------------- + +[ Extern ] Post-condition (file tests/value/postcond_leaf.c, line 33) + Unverifiable but considered Valid. +[ - ] Assigns nothing + tried with Inferred annotations. +[ - ] Default behavior + tried with Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'g1' +-------------------------------------------------------------------------------- + +[ Alarm ] Post-condition (file tests/value/postcond_leaf.c, line 36) + By Value, with pending: + - Unreachable g1 +[ - ] Assigns nothing + tried with Inferred annotations. +[ Alarm ] Default behavior + By Frama-C kernel, with pending: + - Assigns nothing + - Unreachable g1 + +-------------------------------------------------------------------------------- +--- Properties of Function 'g2' +-------------------------------------------------------------------------------- + +[ Alarm ] Post-condition for 'b' (file tests/value/postcond_leaf.c, line 42) + By Value, with pending: + - Unreachable g2 +[ - ] Assigns nothing + tried with Inferred annotations. +[ Alarm ] Behavior 'b' + By Frama-C kernel, with pending: + - Unreachable g2 +[ - ] Default behavior + tried with Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'g3' +-------------------------------------------------------------------------------- + +[ - ] Post-condition (file tests/value/postcond_leaf.c, line 47) + tried with Value. +[ - ] Assigns nothing + tried with Inferred annotations. +[ - ] Default behavior + tried with Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'h1' +-------------------------------------------------------------------------------- + +[ Alarm ] Post-condition (file tests/value/postcond_leaf.c, line 51) + By Value, with pending: + - Unreachable h1 +[ Alarm ] Default behavior + By Frama-C kernel, with pending: + - Unreachable h1 + +-------------------------------------------------------------------------------- +--- Properties of Function 'h2' +-------------------------------------------------------------------------------- + +[ Alarm ] Post-condition for 'b' (file tests/value/postcond_leaf.c, line 57) + By Value, with pending: + - Unreachable h2 +[ Alarm ] Behavior 'b' + By Frama-C kernel, with pending: + - Unreachable h2 + +-------------------------------------------------------------------------------- +--- Properties of Function 'h3' +-------------------------------------------------------------------------------- + +[ - ] Post-condition (file tests/value/postcond_leaf.c, line 62) + tried with Value. +[ - ] Default behavior + tried with Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'h4' +-------------------------------------------------------------------------------- + +[ Alarm ] Post-condition (file tests/value/postcond_leaf.c, line 66) + By Value, with pending: + - Unreachable h4 +[ Alarm ] Default behavior + By Frama-C kernel, with pending: + - Unreachable h4 + +-------------------------------------------------------------------------------- +--- Properties of Function 'k' +-------------------------------------------------------------------------------- + +[ Extern ] Post-condition (file tests/value/postcond_leaf.c, line 71) + Unverifiable but considered Valid. +[ - ] Assigns (file tests/value/postcond_leaf.c, line 72) + tried with Inferred annotations. +[ - ] Froms (generated) + tried with Inferred annotations. +[ - ] Froms (file tests/value/postcond_leaf.c, line 72) + tried with Inferred annotations. +[ - ] Default behavior + tried with Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Status Report Summary +-------------------------------------------------------------------------------- + 1 Completely validated + 5 Considered valid + 20 To be validated + 10 Alarms emitted + 36 Total +-------------------------------------------------------------------------------- diff --git a/tests/value/oracle_symblocs/postcondition.err.oracle b/tests/value/oracle_symblocs/postcondition.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/postcondition.res.oracle b/tests/value/oracle_symblocs/postcondition.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..cd207d20b695f310e3cc995aadf93a7cf9e9c299 --- /dev/null +++ b/tests/value/oracle_symblocs/postcondition.res.oracle @@ -0,0 +1,267 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/postcondition.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + G ∈ {0} + A ∈ {0} + B ∈ {0} + C ∈ {0} + D ∈ {0} + E ∈ {0} + EX ∈ {0} + X ∈ {0} + p ∈ {0} + TAB[0..9] ∈ {0} +[value] computing for function get_index <- main. + Called from tests/value/postcondition.i:84. +tests/value/postcondition.i:11:[value] function get_index: precondition got status valid. +[value] Called Frama_C_show_each_cmd({1}) +tests/value/postcondition.i:18:[value] entering loop for the first time +[value] computing for function u <- get_index <- main. + Called from tests/value/postcondition.i:20. +tests/value/postcondition.i:20:[kernel] warning: No code nor implicit assigns clause for function u, generating default assigns from the prototype +[value] using specification for function u +[value] Done for function u +[value] computing for function u <- get_index <- main. + Called from tests/value/postcondition.i:20. +[value] Done for function u +[value] computing for function u <- get_index <- main. + Called from tests/value/postcondition.i:20. +[value] Done for function u +[value] computing for function u <- get_index <- main. + Called from tests/value/postcondition.i:20. +[value] Done for function u +tests/value/postcondition.i:12:[value] warning: function get_index: postcondition got status unknown. +tests/value/postcondition.i:12:[value] function get_index: postcondition got status valid. +[value] Recording results for get_index +[value] Done for function get_index +[value] computing for function u <- main. + Called from tests/value/postcondition.i:85. +[value] Done for function u +[value] computing for function bound <- main. + Called from tests/value/postcondition.i:86. +tests/value/postcondition.i:26:[value] warning: function bound: postcondition got status unknown. +[value] Recording results for bound +[value] Done for function bound +[value] computing for function u <- main. + Called from tests/value/postcondition.i:87. +[value] Done for function u +[value] computing for function get_index <- main. + Called from tests/value/postcondition.i:87. +tests/value/postcondition.i:11:[value] warning: function get_index: precondition got status unknown. +[value] Called Frama_C_show_each_cmd({4}) +[value] computing for function u <- get_index <- main. + Called from tests/value/postcondition.i:20. +[value] Done for function u +[value] computing for function u <- get_index <- main. + Called from tests/value/postcondition.i:20. +[value] Done for function u +[value] computing for function u <- get_index <- main. + Called from tests/value/postcondition.i:20. +[value] Done for function u +[value] computing for function u <- get_index <- main. + Called from tests/value/postcondition.i:20. +[value] Done for function u +tests/value/postcondition.i:12:[value] warning: function get_index: postcondition got status invalid. +[value] Recording results for get_index +[value] Done for function get_index +[value] computing for function u <- main. + Called from tests/value/postcondition.i:88. +[value] Done for function u +[value] computing for function cap <- main. + Called from tests/value/postcondition.i:89. +tests/value/postcondition.i:89:[kernel] warning: No code nor implicit assigns clause for function cap, generating default assigns from the prototype +[value] using specification for function cap +[value] Done for function cap +[value] computing for function u <- main. + Called from tests/value/postcondition.i:90. +[value] Done for function u +[value] computing for function t0 <- main. + Called from tests/value/postcondition.i:90. +tests/value/postcondition.i:33:[value] function t0: postcondition got status valid. +[value] Recording results for t0 +[value] Done for function t0 +[value] computing for function u <- main. + Called from tests/value/postcondition.i:91. +[value] Done for function u +[value] computing for function t1 <- main. + Called from tests/value/postcondition.i:91. +tests/value/postcondition.i:38:[value] warning: function t1: postcondition got status invalid. +[value] Recording results for t1 +[value] Done for function t1 +[value] computing for function u <- main. + Called from tests/value/postcondition.i:92. +[value] Done for function u +[value] computing for function t2 <- main. + Called from tests/value/postcondition.i:92. +tests/value/postcondition.i:45:[value] function t2: postcondition got status valid. +[value] Recording results for t2 +[value] Done for function t2 +[value] computing for function u <- main. + Called from tests/value/postcondition.i:93. +[value] Done for function u +[value] computing for function t3 <- main. + Called from tests/value/postcondition.i:93. +tests/value/postcondition.i:60:[value] function t3: postcondition got status valid. +[value] Recording results for t3 +[value] Done for function t3 +[value] computing for function t4 <- main. + Called from tests/value/postcondition.i:94. +tests/value/postcondition.i:65:[value] function t4: postcondition got status valid. +[value] Recording results for t4 +[value] Done for function t4 +[value] computing for function u <- main. + Called from tests/value/postcondition.i:95. +[value] Done for function u +[value] computing for function t5 <- main. + Called from tests/value/postcondition.i:95. +tests/value/postcondition.i:71:[value] function t5: postcondition got status valid. +tests/value/postcondition.i:72:[value] function t5: postcondition got status valid. +[value] Recording results for t5 +[value] Done for function t5 +[value] computing for function f <- main. + Called from tests/value/postcondition.i:96. +tests/value/postcondition.i:78:[value] function f: postcondition got status valid. +tests/value/postcondition.i:79:[value] warning: function f: postcondition got status invalid. +[value] Recording results for f +[value] Done for function f +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function bound: + cmd ∈ {2} + __retres ∈ {0} +[value:final-states] Values at end of function f: + __retres ∈ {0} +[value:final-states] Values at end of function t0: + G ∈ {6} +[value:final-states] Values at end of function t1: + G ∈ {6} +[value:final-states] Values at end of function t2: + G ∈ {6} + p ∈ {{ &G }} +[value:final-states] Values at end of function t3: + TAB[0].a ∈ {12} + {[0]{.b; .c}; [1..9]} ∈ {0} +[value:final-states] Values at end of function t4: + x ∈ {4} + y ∈ {3} +[value:final-states] Values at end of function t5: + x ∈ {9} +[value:final-states] Values at end of function get_index: + ret ∈ [0..2147483647] + __retres ∈ [0..2147483647] +[value:final-states] Values at end of function main: + G ∈ {0; 6} + B ∈ {0} + C ∈ [0..299] + D ∈ [-100..100] + E ∈ [20..80] + EX ∈ [-100..8] + X ∈ {0; 8} + p ∈ {{ NULL ; &G }} + TAB[0].a ∈ {0; 12} + {[0]{.b; .c}; [1..9]} ∈ {0} +[from] Computing for function bound +[from] Done for function bound +[from] Computing for function f +[from] Done for function f +[from] Computing for function t0 +[from] Done for function t0 +[from] Computing for function t1 +[from] Done for function t1 +[from] Computing for function t2 +[from] Done for function t2 +[from] Computing for function t3 +[from] Done for function t3 +[from] Computing for function t4 +[from] Done for function t4 +[from] Computing for function t5 +[from] Done for function t5 +[from] Computing for function get_index +[from] Computing for function u <-get_index +[from] Done for function u +[from] Done for function get_index +[from] Computing for function main +[from] Computing for function cap <-main +[from] Done for function cap +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function bound: + \result FROM \nothing +[from] Function cap: + \result FROM min; max +[from] Function f: + \result FROM \nothing +[from] Function t0: + G FROM \nothing +[from] Function t1: + G FROM \nothing +[from] Function t2: + G FROM \nothing + p FROM \nothing +[from] Function t3: + TAB[0].a FROM \nothing +[from] Function t4: + NO EFFECTS +[from] Function t5: + \result FROM X +[from] Function u: + \result FROM \nothing +[from] Function get_index: + \result FROM cmd +[from] Function main: + G FROM \nothing (and SELF) + B FROM \nothing + C FROM \nothing + D FROM \nothing + E FROM \nothing + EX FROM \nothing + X FROM \nothing (and SELF) + p FROM \nothing (and SELF) + TAB[0].a FROM \nothing (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function bound: + cmd; __retres +[inout] Inputs for function bound: + \nothing +[inout] Out (internal) for function f: + __retres +[inout] Inputs for function f: + \nothing +[inout] Out (internal) for function t0: + G +[inout] Inputs for function t0: + \nothing +[inout] Out (internal) for function t1: + G +[inout] Inputs for function t1: + \nothing +[inout] Out (internal) for function t2: + G; p +[inout] Inputs for function t2: + p +[inout] Out (internal) for function t3: + TAB[0].a +[inout] Inputs for function t3: + \nothing +[inout] Out (internal) for function t4: + x; y +[inout] Inputs for function t4: + \nothing +[inout] Out (internal) for function t5: + x +[inout] Inputs for function t5: + X +[inout] Out (internal) for function get_index: + ret; tmp; __retres +[inout] Inputs for function get_index: + \nothing +[inout] Out (internal) for function main: + G; B; C; D; E; EX; X; p; TAB[0].a; tmp; tmp_0; tmp_1; tmp_2; tmp_3; + tmp_4; tmp_5 +[inout] Inputs for function main: + B; X; p diff --git a/tests/value/oracle_symblocs/pragma.err.oracle b/tests/value/oracle_symblocs/pragma.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/pragma.res.oracle b/tests/value/oracle_symblocs/pragma.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..34774ad2b4bc7d37499b96385dc8d5d1a07d310b --- /dev/null +++ b/tests/value/oracle_symblocs/pragma.res.oracle @@ -0,0 +1,23 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/pragma.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + \nothing +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/precise_locations.err.oracle b/tests/value/oracle_symblocs/precise_locations.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/precise_locations.res.oracle b/tests/value/oracle_symblocs/precise_locations.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..d7c447afe556f25f5caa1a064a49ef941f5ec2f5 --- /dev/null +++ b/tests/value/oracle_symblocs/precise_locations.res.oracle @@ -0,0 +1,1245 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/precise_locations.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + t[0..49] ∈ {0} + i ∈ {0} + j ∈ {0} + q ∈ {0} + r ∈ {0} +tests/value/precise_locations.i:28:[value] entering loop for the first time +tests/value/precise_locations.i:29:[value] entering loop for the first time +[value] DUMPING STATE of file tests/value/precise_locations.i line 33 + t{[0..48]{.f1[0..4]; .f_inter[0..4]; .f2#; .f_inter2[0..4]; .[bits 328 to 351]#}; [49].f1[0..4]} ∈ + {0; 10} repeated %32 + [49]{.f_inter[0..4]; .f2; .f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + i ∈ {5} + j ∈ {0; 50} + q ∈ {0} + r ∈ {0} + v ∈ [--..--] + __retres ∈ UNINITIALIZED + =END OF DUMP== +tests/value/precise_locations.i:34:[value] entering loop for the first time +tests/value/precise_locations.i:37:[value] entering loop for the first time +tests/value/precise_locations.i:38:[value] entering loop for the first time +[value] computing for function ct <- main. + Called from tests/value/precise_locations.i:39. +[value] Recording results for ct +[value] Done for function ct +[value] computing for function ct <- main. + Called from tests/value/precise_locations.i:39. +[value] Recording results for ct +[value] Done for function ct +[value] computing for function ct <- main. + Called from tests/value/precise_locations.i:39. +[value] Recording results for ct +[value] Done for function ct +[value] computing for function ct <- main. + Called from tests/value/precise_locations.i:39. +[value] Recording results for ct +[value] Done for function ct +[value] computing for function ct <- main. + Called from tests/value/precise_locations.i:39. +[value] Recording results for ct +[value] Done for function ct +[value] computing for function ct <- main. + Called from tests/value/precise_locations.i:39. +[value] Recording results for ct +[value] Done for function ct +[value] computing for function ct <- main. + Called from tests/value/precise_locations.i:39. +[value] Recording results for ct +[value] Done for function ct +[value] computing for function ct <- main. + Called from tests/value/precise_locations.i:39. +[value] Recording results for ct +[value] Done for function ct +[value] computing for function ct <- main. + Called from tests/value/precise_locations.i:39. +[value] Recording results for ct +[value] Done for function ct +[value] DUMPING STATE of file tests/value/precise_locations.i line 42 + t[0]{.f1[0..4]; .f_inter[0..4]} ∈ {0; 10; 20} + [0].f2 ∈ [--..--] + [bits 328 to 831]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [1].f2 ∈ [--..--] + [bits 840 to 1343]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [2].f2 ∈ [--..--] + [bits 1352 to 1855]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [3].f2 ∈ [--..--] + [bits 1864 to 2367]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [4].f2 ∈ [--..--] + [bits 2376 to 2879]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [5].f2 ∈ [--..--] + [bits 2888 to 3391]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [6].f2 ∈ [--..--] + [bits 3400 to 3903]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [7].f2 ∈ [--..--] + [bits 3912 to 4415]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [8].f2 ∈ [--..--] + [bits 4424 to 4927]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [9].f2 ∈ [--..--] + [bits 4936 to 5439]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [10].f2 ∈ [--..--] + [bits 5448 to 5951]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [11].f2 ∈ [--..--] + [bits 5960 to 6463]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [12].f2 ∈ [--..--] + [bits 6472 to 6975]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [13].f2 ∈ [--..--] + [bits 6984 to 7487]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [14].f2 ∈ [--..--] + [bits 7496 to 7999]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [15].f2 ∈ [--..--] + [bits 8008 to 8511]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [16].f2 ∈ [--..--] + [bits 8520 to 9023]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [17].f2 ∈ [--..--] + [bits 9032 to 9535]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [18].f2 ∈ [--..--] + [bits 9544 to 10047]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [19].f2 ∈ [--..--] + [bits 10056 to 10559]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [20].f2 ∈ [--..--] + [bits 10568 to 11071]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [21].f2 ∈ [--..--] + [bits 11080 to 11583]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [22].f2 ∈ [--..--] + [bits 11592 to 12095]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [23].f2 ∈ [--..--] + [bits 12104 to 12607]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [24].f2 ∈ [--..--] + [bits 12616 to 13119]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [25].f2 ∈ [--..--] + [bits 13128 to 13631]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [26].f2 ∈ [--..--] + [bits 13640 to 14143]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [27].f2 ∈ [--..--] + [bits 14152 to 14655]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [28].f2 ∈ [--..--] + [bits 14664 to 15167]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [29].f2 ∈ [--..--] + [bits 15176 to 15679]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [30].f2 ∈ [--..--] + [bits 15688 to 16191]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [31].f2 ∈ [--..--] + [bits 16200 to 16703]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [32].f2 ∈ [--..--] + [bits 16712 to 17215]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [33].f2 ∈ [--..--] + [bits 17224 to 17727]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [34].f2 ∈ [--..--] + [bits 17736 to 18239]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [35].f2 ∈ [--..--] + [bits 18248 to 18751]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [36].f2 ∈ [--..--] + [bits 18760 to 19263]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [37].f2 ∈ [--..--] + [bits 19272 to 19775]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [38].f2 ∈ [--..--] + [bits 19784 to 20287]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [39].f2 ∈ [--..--] + [bits 20296 to 20799]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [40].f2 ∈ [--..--] + [bits 20808 to 21311]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [41].f2 ∈ [--..--] + [bits 21320 to 21823]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [42].f2 ∈ [--..--] + [bits 21832 to 22335]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [43].f2 ∈ [--..--] + [bits 22344 to 22847]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [44].f2 ∈ [--..--] + [bits 22856 to 23359]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [45].f2 ∈ [--..--] + [bits 23368 to 23871]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [46].f2 ∈ [--..--] + [bits 23880 to 24383]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [47].f2 ∈ [--..--] + [bits 24392 to 24895]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [48].f2 ∈ [--..--] + [bits 24904 to 25247]# ∈ {0; 10; 20} repeated %32, bits 8 to 351 + [49].f_inter[0..4] ∈ {0} + [49].f2 ∈ {-99; 0} + [49]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + i ∈ {5} + j ∈ {50} + q ∈ {0} + r ∈ {0} + v ∈ [--..--] + __retres ∈ UNINITIALIZED + =END OF DUMP== +tests/value/precise_locations.i:44:[value] entering loop for the first time +tests/value/precise_locations.i:45:[value] entering loop for the first time +[value] computing for function f <- main. + Called from tests/value/precise_locations.i:48. +[value] using specification for function f +tests/value/precise_locations.i:18:[value] function f: precondition got status valid. +[value] Done for function f +[value] computing for function g <- main. + Called from tests/value/precise_locations.i:49. +[value] using specification for function g +tests/value/precise_locations.i:21:[value] function g: precondition got status valid. +[value] Done for function g +[value] computing for function f <- main. + Called from tests/value/precise_locations.i:48. +[value] Done for function f +[value] computing for function g <- main. + Called from tests/value/precise_locations.i:49. +[value] Done for function g +[value] computing for function f <- main. + Called from tests/value/precise_locations.i:48. +[value] Done for function f +[value] computing for function g <- main. + Called from tests/value/precise_locations.i:49. +[value] Done for function g +[value] computing for function f <- main. + Called from tests/value/precise_locations.i:48. +[value] Done for function f +[value] computing for function g <- main. + Called from tests/value/precise_locations.i:49. +[value] Done for function g +[value] computing for function f <- main. + Called from tests/value/precise_locations.i:48. +[value] Done for function f +[value] computing for function g <- main. + Called from tests/value/precise_locations.i:49. +[value] Done for function g +[value] computing for function f <- main. + Called from tests/value/precise_locations.i:48. +[value] Done for function f +[value] computing for function g <- main. + Called from tests/value/precise_locations.i:49. +[value] Done for function g +tests/value/precise_locations.i:46:[value] warning: signed overflow. assert t[j].f1[i]+1 ≤ 2147483647; +[value] computing for function f <- main. + Called from tests/value/precise_locations.i:48. +tests/value/precise_locations.i:18:[value] warning: function f: precondition got status unknown. +[value] Done for function f +tests/value/precise_locations.i:49:[value] warning: signed overflow. assert t[j].f1[i]+1 ≤ 2147483647; +[value] computing for function g <- main. + Called from tests/value/precise_locations.i:49. +tests/value/precise_locations.i:21:[value] warning: function g: precondition got status unknown. +[value] Done for function g +tests/value/precise_locations.i:52:[value] warning: signed overflow. assert -2147483648 ≤ q+r; +tests/value/precise_locations.i:52:[value] warning: signed overflow. assert q+r ≤ 2147483647; +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function ct: + __retres ∈ {20} +[value:final-states] Values at end of function main: + t[0]{.f1[0..4]; .f_inter[0..4]} ∈ {0; 10; 20} + [0].f2 ∈ [--..--] + [bits 328 to 831]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [1].f2 ∈ [--..--] + [bits 840 to 1343]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [2].f2 ∈ [--..--] + [bits 1352 to 1855]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [3].f2 ∈ [--..--] + [bits 1864 to 2367]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [4].f2 ∈ [--..--] + [bits 2376 to 2879]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [5].f2 ∈ [--..--] + [bits 2888 to 3391]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [6].f2 ∈ [--..--] + [bits 3400 to 3903]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [7].f2 ∈ [--..--] + [bits 3912 to 4415]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [8].f2 ∈ [--..--] + [bits 4424 to 4927]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [9].f2 ∈ [--..--] + [bits 4936 to 5439]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [10].f2 ∈ [--..--] + [bits 5448 to 5951]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [11].f2 ∈ [--..--] + [bits 5960 to 6463]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [12].f2 ∈ [--..--] + [bits 6472 to 6975]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [13].f2 ∈ [--..--] + [bits 6984 to 7487]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [14].f2 ∈ [--..--] + [bits 7496 to 7999]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [15].f2 ∈ [--..--] + [bits 8008 to 8511]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [16].f2 ∈ [--..--] + [bits 8520 to 9023]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [17].f2 ∈ [--..--] + [bits 9032 to 9535]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [18].f2 ∈ [--..--] + [bits 9544 to 10047]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [19].f2 ∈ [--..--] + [bits 10056 to 10559]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [20].f2 ∈ [--..--] + [bits 10568 to 11071]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [21].f2 ∈ [--..--] + [bits 11080 to 11583]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [22].f2 ∈ [--..--] + [bits 11592 to 12095]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [23].f2 ∈ [--..--] + [bits 12104 to 12607]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [24].f2 ∈ [--..--] + [bits 12616 to 13119]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [25].f2 ∈ [--..--] + [bits 13128 to 13631]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [26].f2 ∈ [--..--] + [bits 13640 to 14143]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [27].f2 ∈ [--..--] + [bits 14152 to 14655]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [28].f2 ∈ [--..--] + [bits 14664 to 15167]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [29].f2 ∈ [--..--] + [bits 15176 to 15679]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [30].f2 ∈ [--..--] + [bits 15688 to 16191]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [31].f2 ∈ [--..--] + [bits 16200 to 16703]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [32].f2 ∈ [--..--] + [bits 16712 to 17215]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [33].f2 ∈ [--..--] + [bits 17224 to 17727]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [34].f2 ∈ [--..--] + [bits 17736 to 18239]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [35].f2 ∈ [--..--] + [bits 18248 to 18751]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [36].f2 ∈ [--..--] + [bits 18760 to 19263]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [37].f2 ∈ [--..--] + [bits 19272 to 19775]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [38].f2 ∈ [--..--] + [bits 19784 to 20287]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [39].f2 ∈ [--..--] + [bits 20296 to 20799]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [40].f2 ∈ [--..--] + [bits 20808 to 21311]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [41].f2 ∈ [--..--] + [bits 21320 to 21823]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [42].f2 ∈ [--..--] + [bits 21832 to 22335]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [43].f2 ∈ [--..--] + [bits 22344 to 22847]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [44].f2 ∈ [--..--] + [bits 22856 to 23359]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [45].f2 ∈ [--..--] + [bits 23368 to 23871]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [46].f2 ∈ [--..--] + [bits 23880 to 24383]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [47].f2 ∈ [--..--] + [bits 24392 to 24895]# ∈ {0; 10; 20} repeated %32, bits 8 to 511 + [48].f2 ∈ [--..--] + [bits 24904 to 25247]# ∈ {0; 10; 20} repeated %32, bits 8 to 351 + [49].f_inter[0..4] ∈ {0} + [49].f2 ∈ {-99; 0} + [49]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + i ∈ {5} + j ∈ {50} + q[bits 0 to 7] ∈ [--..--] + [bits 8 to 31]# ∈ {0; 10; 20}%32, bits 8 to 31 + r ∈ [-2147483647..2147483647] + __retres ∈ [--..--] +[from] Computing for function ct +[from] Done for function ct +[from] Computing for function main +[from] Computing for function Frama_C_dump_each <-main +[from] Done for function Frama_C_dump_each +[from] Computing for function f <-main +[from] Done for function f +[from] Computing for function g <-main +[from] Done for function g +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function ct: + \result FROM \nothing +[from] Function f: + NO EFFECTS +[from] Function g: + NO EFFECTS +[from] Function main: + t{{[0..48]; [49].f1[0..4]}; [49].f2} FROM \nothing (and SELF) + i FROM \nothing + j FROM \nothing + q FROM t{[0..48]; [49].f1[0..4]} (and SELF) + r FROM t{[0..48]; [49].f1[0..4]} (and SELF) + \result FROM t{[0..48]; [49].f1[0..4]}; q; r +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function ct: + __retres +[inout] Inputs for function ct: + \nothing +[inout] Out (internal) for function main: + t{{[0..48]; [49].f1[0..4]}; [49].f2}; i; j; q; r; __retres +[inout] Inputs for function main: + t{[0..48]; [49].f1[0..4]}; i; j; q; r +[report] Computing properties status... + +-------------------------------------------------------------------------------- +--- Properties of Function 'f' +-------------------------------------------------------------------------------- + +[ - ] Pre-condition (file tests/value/precise_locations.i, line 18) + tried with Call Preconditions. +[ Extern ] Assigns nothing + Unverifiable but considered Valid. +[ Valid ] Default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'g' +-------------------------------------------------------------------------------- + +[ - ] Pre-condition (file tests/value/precise_locations.i, line 21) + tried with Call Preconditions. +[ Extern ] Assigns nothing + Unverifiable but considered Valid. +[ Valid ] Default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'main' +-------------------------------------------------------------------------------- + +[ - ] Assertion 'Value,signed_overflow' (file tests/value/precise_locations.i, line 46) + tried with Value. +[ - ] Assertion 'Value,signed_overflow' (file tests/value/precise_locations.i, line 49) + tried with Value. +[ - ] Assertion 'Value,signed_overflow' (file tests/value/precise_locations.i, line 52) + tried with Value. +[ - ] Assertion 'Value,signed_overflow' (file tests/value/precise_locations.i, line 52) + tried with Value. +[ - ] Instance of 'Pre-condition (file tests/value/precise_locations.i, line 18)' at call 'f' (file tests/value/precise_locations.i, line 48) + + tried with Value. +[ - ] Instance of 'Pre-condition (file tests/value/precise_locations.i, line 21)' at call 'g' (file tests/value/precise_locations.i, line 49) + + tried with Value. + +-------------------------------------------------------------------------------- +--- Status Report Summary +-------------------------------------------------------------------------------- + 2 Completely validated + 2 Considered valid + 8 To be validated + 12 Total +-------------------------------------------------------------------------------- +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + t[0..49] ∈ {0} + i ∈ {0} + j ∈ {0} + q ∈ {0} + r ∈ {0} +[value] DUMPING STATE of file tests/value/precise_locations.i line 33 + t[0].f1[0..4] ∈ {0; 10} + [0]{.f_inter[0..4]; .f2; .f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [1].f1[0..4] ∈ {0; 10} + [1]{.f_inter[0..4]; .f2; .f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [2].f1[0..4] ∈ {0; 10} + [2]{.f_inter[0..4]; .f2; .f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [3].f1[0..4] ∈ {0; 10} + [3]{.f_inter[0..4]; .f2; .f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [4].f1[0..4] ∈ {0; 10} + [4]{.f_inter[0..4]; .f2; .f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [5].f1[0..4] ∈ {0; 10} + [5]{.f_inter[0..4]; .f2; .f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [6].f1[0..4] ∈ {0; 10} + [6]{.f_inter[0..4]; .f2; .f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [7].f1[0..4] ∈ {0; 10} + [7]{.f_inter[0..4]; .f2; .f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [8].f1[0..4] ∈ {0; 10} + [8]{.f_inter[0..4]; .f2; .f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [9].f1[0..4] ∈ {0; 10} + [9]{.f_inter[0..4]; .f2; .f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [10].f1[0..4] ∈ {0; 10} + [10]{.f_inter[0..4]; .f2; .f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [11].f1[0..4] ∈ {0; 10} + [11]{.f_inter[0..4]; .f2; .f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [12].f1[0..4] ∈ {0; 10} + [12]{.f_inter[0..4]; .f2; .f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [13].f1[0..4] ∈ {0; 10} + [13]{.f_inter[0..4]; .f2; .f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [14].f1[0..4] ∈ {0; 10} + [14]{.f_inter[0..4]; .f2; .f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [15].f1[0..4] ∈ {0; 10} + [15]{.f_inter[0..4]; .f2; .f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [16].f1[0..4] ∈ {0; 10} + [16]{.f_inter[0..4]; .f2; .f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [17].f1[0..4] ∈ {0; 10} + [17]{.f_inter[0..4]; .f2; .f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [18].f1[0..4] ∈ {0; 10} + [18]{.f_inter[0..4]; .f2; .f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [19].f1[0..4] ∈ {0; 10} + [19]{.f_inter[0..4]; .f2; .f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [20].f1[0..4] ∈ {0; 10} + [20]{.f_inter[0..4]; .f2; .f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [21].f1[0..4] ∈ {0; 10} + [21]{.f_inter[0..4]; .f2; .f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [22].f1[0..4] ∈ {0; 10} + [22]{.f_inter[0..4]; .f2; .f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [23].f1[0..4] ∈ {0; 10} + [23]{.f_inter[0..4]; .f2; .f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [24].f1[0..4] ∈ {0; 10} + [24]{.f_inter[0..4]; .f2; .f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [25].f1[0..4] ∈ {0; 10} + [25]{.f_inter[0..4]; .f2; .f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [26].f1[0..4] ∈ {0; 10} + [26]{.f_inter[0..4]; .f2; .f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [27].f1[0..4] ∈ {0; 10} + [27]{.f_inter[0..4]; .f2; .f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [28].f1[0..4] ∈ {0; 10} + [28]{.f_inter[0..4]; .f2; .f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [29].f1[0..4] ∈ {0; 10} + [29]{.f_inter[0..4]; .f2; .f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [30].f1[0..4] ∈ {0; 10} + [30]{.f_inter[0..4]; .f2; .f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [31].f1[0..4] ∈ {0; 10} + [31]{.f_inter[0..4]; .f2; .f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [32].f1[0..4] ∈ {0; 10} + [32]{.f_inter[0..4]; .f2; .f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [33].f1[0..4] ∈ {0; 10} + [33]{.f_inter[0..4]; .f2; .f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [34].f1[0..4] ∈ {0; 10} + [34]{.f_inter[0..4]; .f2; .f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [35].f1[0..4] ∈ {0; 10} + [35]{.f_inter[0..4]; .f2; .f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [36].f1[0..4] ∈ {0; 10} + [36]{.f_inter[0..4]; .f2; .f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [37].f1[0..4] ∈ {0; 10} + [37]{.f_inter[0..4]; .f2; .f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [38].f1[0..4] ∈ {0; 10} + [38]{.f_inter[0..4]; .f2; .f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [39].f1[0..4] ∈ {0; 10} + [39]{.f_inter[0..4]; .f2; .f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [40].f1[0..4] ∈ {0; 10} + [40]{.f_inter[0..4]; .f2; .f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [41].f1[0..4] ∈ {0; 10} + [41]{.f_inter[0..4]; .f2; .f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [42].f1[0..4] ∈ {0; 10} + [42]{.f_inter[0..4]; .f2; .f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [43].f1[0..4] ∈ {0; 10} + [43]{.f_inter[0..4]; .f2; .f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [44].f1[0..4] ∈ {0; 10} + [44]{.f_inter[0..4]; .f2; .f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [45].f1[0..4] ∈ {0; 10} + [45]{.f_inter[0..4]; .f2; .f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [46].f1[0..4] ∈ {0; 10} + [46]{.f_inter[0..4]; .f2; .f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [47].f1[0..4] ∈ {0; 10} + [47]{.f_inter[0..4]; .f2; .f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [48].f1[0..4] ∈ {0; 10} + [48]{.f_inter[0..4]; .f2; .f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [49].f1[0..4] ∈ {0; 10} + [49]{.f_inter[0..4]; .f2; .f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + i ∈ {5} + j ∈ {0; 50} + q ∈ {0} + r ∈ {0} + v ∈ [--..--] + __retres ∈ UNINITIALIZED + =END OF DUMP== +[value] computing for function ct <- main. + Called from tests/value/precise_locations.i:39. +[value] Recording results for ct +[value] Done for function ct +[value] computing for function ct <- main. + Called from tests/value/precise_locations.i:39. +[value] Recording results for ct +[value] Done for function ct +[value] computing for function ct <- main. + Called from tests/value/precise_locations.i:39. +[value] Recording results for ct +[value] Done for function ct +[value] computing for function ct <- main. + Called from tests/value/precise_locations.i:39. +[value] Recording results for ct +[value] Done for function ct +[value] computing for function ct <- main. + Called from tests/value/precise_locations.i:39. +[value] Recording results for ct +[value] Done for function ct +[value] computing for function ct <- main. + Called from tests/value/precise_locations.i:39. +[value] Recording results for ct +[value] Done for function ct +[value] computing for function ct <- main. + Called from tests/value/precise_locations.i:39. +[value] Recording results for ct +[value] Done for function ct +[value] computing for function ct <- main. + Called from tests/value/precise_locations.i:39. +[value] Recording results for ct +[value] Done for function ct +[value] computing for function ct <- main. + Called from tests/value/precise_locations.i:39. +[value] Recording results for ct +[value] Done for function ct +[value] DUMPING STATE of file tests/value/precise_locations.i line 42 + t[0].f1[0..4] ∈ {0; 10; 20} + [0].f_inter[0..4] ∈ {0} + [0].f2 ∈ {-99; 0} + [0]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [1].f1[0..4] ∈ {0; 10; 20} + [1].f_inter[0..4] ∈ {0} + [1].f2 ∈ {-99; 0} + [1]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [2].f1[0..4] ∈ {0; 10; 20} + [2].f_inter[0..4] ∈ {0} + [2].f2 ∈ {-99; 0} + [2]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [3].f1[0..4] ∈ {0; 10; 20} + [3].f_inter[0..4] ∈ {0} + [3].f2 ∈ {-99; 0} + [3]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [4].f1[0..4] ∈ {0; 10; 20} + [4].f_inter[0..4] ∈ {0} + [4].f2 ∈ {-99; 0} + [4]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [5].f1[0..4] ∈ {0; 10; 20} + [5].f_inter[0..4] ∈ {0} + [5].f2 ∈ {-99; 0} + [5]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [6].f1[0..4] ∈ {0; 10; 20} + [6].f_inter[0..4] ∈ {0} + [6].f2 ∈ {-99; 0} + [6]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [7].f1[0..4] ∈ {0; 10; 20} + [7].f_inter[0..4] ∈ {0} + [7].f2 ∈ {-99; 0} + [7]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [8].f1[0..4] ∈ {0; 10; 20} + [8].f_inter[0..4] ∈ {0} + [8].f2 ∈ {-99; 0} + [8]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [9].f1[0..4] ∈ {0; 10; 20} + [9].f_inter[0..4] ∈ {0} + [9].f2 ∈ {-99; 0} + [9]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [10].f1[0..4] ∈ {0; 10; 20} + [10].f_inter[0..4] ∈ {0} + [10].f2 ∈ {-99; 0} + [10]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [11].f1[0..4] ∈ {0; 10; 20} + [11].f_inter[0..4] ∈ {0} + [11].f2 ∈ {-99; 0} + [11]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [12].f1[0..4] ∈ {0; 10; 20} + [12].f_inter[0..4] ∈ {0} + [12].f2 ∈ {-99; 0} + [12]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [13].f1[0..4] ∈ {0; 10; 20} + [13].f_inter[0..4] ∈ {0} + [13].f2 ∈ {-99; 0} + [13]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [14].f1[0..4] ∈ {0; 10; 20} + [14].f_inter[0..4] ∈ {0} + [14].f2 ∈ {-99; 0} + [14]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [15].f1[0..4] ∈ {0; 10; 20} + [15].f_inter[0..4] ∈ {0} + [15].f2 ∈ {-99; 0} + [15]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [16].f1[0..4] ∈ {0; 10; 20} + [16].f_inter[0..4] ∈ {0} + [16].f2 ∈ {-99; 0} + [16]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [17].f1[0..4] ∈ {0; 10; 20} + [17].f_inter[0..4] ∈ {0} + [17].f2 ∈ {-99; 0} + [17]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [18].f1[0..4] ∈ {0; 10; 20} + [18].f_inter[0..4] ∈ {0} + [18].f2 ∈ {-99; 0} + [18]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [19].f1[0..4] ∈ {0; 10; 20} + [19].f_inter[0..4] ∈ {0} + [19].f2 ∈ {-99; 0} + [19]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [20].f1[0..4] ∈ {0; 10; 20} + [20].f_inter[0..4] ∈ {0} + [20].f2 ∈ {-99; 0} + [20]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [21].f1[0..4] ∈ {0; 10; 20} + [21].f_inter[0..4] ∈ {0} + [21].f2 ∈ {-99; 0} + [21]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [22].f1[0..4] ∈ {0; 10; 20} + [22].f_inter[0..4] ∈ {0} + [22].f2 ∈ {-99; 0} + [22]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [23].f1[0..4] ∈ {0; 10; 20} + [23].f_inter[0..4] ∈ {0} + [23].f2 ∈ {-99; 0} + [23]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [24].f1[0..4] ∈ {0; 10; 20} + [24].f_inter[0..4] ∈ {0} + [24].f2 ∈ {-99; 0} + [24]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [25].f1[0..4] ∈ {0; 10; 20} + [25].f_inter[0..4] ∈ {0} + [25].f2 ∈ {-99; 0} + [25]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [26].f1[0..4] ∈ {0; 10; 20} + [26].f_inter[0..4] ∈ {0} + [26].f2 ∈ {-99; 0} + [26]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [27].f1[0..4] ∈ {0; 10; 20} + [27].f_inter[0..4] ∈ {0} + [27].f2 ∈ {-99; 0} + [27]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [28].f1[0..4] ∈ {0; 10; 20} + [28].f_inter[0..4] ∈ {0} + [28].f2 ∈ {-99; 0} + [28]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [29].f1[0..4] ∈ {0; 10; 20} + [29].f_inter[0..4] ∈ {0} + [29].f2 ∈ {-99; 0} + [29]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [30].f1[0..4] ∈ {0; 10; 20} + [30].f_inter[0..4] ∈ {0} + [30].f2 ∈ {-99; 0} + [30]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [31].f1[0..4] ∈ {0; 10; 20} + [31].f_inter[0..4] ∈ {0} + [31].f2 ∈ {-99; 0} + [31]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [32].f1[0..4] ∈ {0; 10; 20} + [32].f_inter[0..4] ∈ {0} + [32].f2 ∈ {-99; 0} + [32]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [33].f1[0..4] ∈ {0; 10; 20} + [33].f_inter[0..4] ∈ {0} + [33].f2 ∈ {-99; 0} + [33]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [34].f1[0..4] ∈ {0; 10; 20} + [34].f_inter[0..4] ∈ {0} + [34].f2 ∈ {-99; 0} + [34]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [35].f1[0..4] ∈ {0; 10; 20} + [35].f_inter[0..4] ∈ {0} + [35].f2 ∈ {-99; 0} + [35]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [36].f1[0..4] ∈ {0; 10; 20} + [36].f_inter[0..4] ∈ {0} + [36].f2 ∈ {-99; 0} + [36]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [37].f1[0..4] ∈ {0; 10; 20} + [37].f_inter[0..4] ∈ {0} + [37].f2 ∈ {-99; 0} + [37]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [38].f1[0..4] ∈ {0; 10; 20} + [38].f_inter[0..4] ∈ {0} + [38].f2 ∈ {-99; 0} + [38]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [39].f1[0..4] ∈ {0; 10; 20} + [39].f_inter[0..4] ∈ {0} + [39].f2 ∈ {-99; 0} + [39]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [40].f1[0..4] ∈ {0; 10; 20} + [40].f_inter[0..4] ∈ {0} + [40].f2 ∈ {-99; 0} + [40]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [41].f1[0..4] ∈ {0; 10; 20} + [41].f_inter[0..4] ∈ {0} + [41].f2 ∈ {-99; 0} + [41]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [42].f1[0..4] ∈ {0; 10; 20} + [42].f_inter[0..4] ∈ {0} + [42].f2 ∈ {-99; 0} + [42]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [43].f1[0..4] ∈ {0; 10; 20} + [43].f_inter[0..4] ∈ {0} + [43].f2 ∈ {-99; 0} + [43]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [44].f1[0..4] ∈ {0; 10; 20} + [44].f_inter[0..4] ∈ {0} + [44].f2 ∈ {-99; 0} + [44]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [45].f1[0..4] ∈ {0; 10; 20} + [45].f_inter[0..4] ∈ {0} + [45].f2 ∈ {-99; 0} + [45]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [46].f1[0..4] ∈ {0; 10; 20} + [46].f_inter[0..4] ∈ {0} + [46].f2 ∈ {-99; 0} + [46]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [47].f1[0..4] ∈ {0; 10; 20} + [47].f_inter[0..4] ∈ {0} + [47].f2 ∈ {-99; 0} + [47]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [48].f1[0..4] ∈ {0; 10; 20} + [48].f_inter[0..4] ∈ {0} + [48].f2 ∈ {-99; 0} + [48]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [49].f1[0..4] ∈ {0; 10; 20} + [49].f_inter[0..4] ∈ {0} + [49].f2 ∈ {-99; 0} + [49]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + i ∈ {5} + j ∈ {50} + q ∈ {0} + r ∈ {0} + v ∈ [--..--] + __retres ∈ UNINITIALIZED + =END OF DUMP== +[value] computing for function f <- main. + Called from tests/value/precise_locations.i:48. +[value] Done for function f +[value] computing for function g <- main. + Called from tests/value/precise_locations.i:49. +[value] Done for function g +[value] computing for function f <- main. + Called from tests/value/precise_locations.i:48. +[value] Done for function f +[value] computing for function g <- main. + Called from tests/value/precise_locations.i:49. +[value] Done for function g +[value] computing for function f <- main. + Called from tests/value/precise_locations.i:48. +[value] Done for function f +[value] computing for function g <- main. + Called from tests/value/precise_locations.i:49. +[value] Done for function g +[value] computing for function f <- main. + Called from tests/value/precise_locations.i:48. +[value] Done for function f +[value] computing for function g <- main. + Called from tests/value/precise_locations.i:49. +[value] Done for function g +[value] computing for function f <- main. + Called from tests/value/precise_locations.i:48. +[value] Done for function f +[value] computing for function g <- main. + Called from tests/value/precise_locations.i:49. +[value] Done for function g +[value] computing for function f <- main. + Called from tests/value/precise_locations.i:48. +[value] Done for function f +[value] computing for function g <- main. + Called from tests/value/precise_locations.i:49. +[value] Done for function g +[value] computing for function f <- main. + Called from tests/value/precise_locations.i:48. +[value] Done for function f +[value] computing for function g <- main. + Called from tests/value/precise_locations.i:49. +[value] Done for function g +[value] Recording results for main +[value] done for function main +tests/value/precise_locations.i:46:[value] assertion 'Value,signed_overflow' got final status valid. +tests/value/precise_locations.i:49:[value] assertion 'Value,signed_overflow' got final status valid. +tests/value/precise_locations.i:52:[value] assertion 'Value,signed_overflow' got final status valid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function ct: + __retres ∈ {20} +[value:final-states] Values at end of function main: + t[0].f1[0..4] ∈ {0; 10; 20} + [0].f_inter[0..4] ∈ {0} + [0].f2 ∈ {-99; 0} + [0]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [1].f1[0..4] ∈ {0; 10; 20} + [1].f_inter[0..4] ∈ {0} + [1].f2 ∈ {-99; 0} + [1]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [2].f1[0..4] ∈ {0; 10; 20} + [2].f_inter[0..4] ∈ {0} + [2].f2 ∈ {-99; 0} + [2]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [3].f1[0..4] ∈ {0; 10; 20} + [3].f_inter[0..4] ∈ {0} + [3].f2 ∈ {-99; 0} + [3]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [4].f1[0..4] ∈ {0; 10; 20} + [4].f_inter[0..4] ∈ {0} + [4].f2 ∈ {-99; 0} + [4]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [5].f1[0..4] ∈ {0; 10; 20} + [5].f_inter[0..4] ∈ {0} + [5].f2 ∈ {-99; 0} + [5]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [6].f1[0..4] ∈ {0; 10; 20} + [6].f_inter[0..4] ∈ {0} + [6].f2 ∈ {-99; 0} + [6]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [7].f1[0..4] ∈ {0; 10; 20} + [7].f_inter[0..4] ∈ {0} + [7].f2 ∈ {-99; 0} + [7]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [8].f1[0..4] ∈ {0; 10; 20} + [8].f_inter[0..4] ∈ {0} + [8].f2 ∈ {-99; 0} + [8]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [9].f1[0..4] ∈ {0; 10; 20} + [9].f_inter[0..4] ∈ {0} + [9].f2 ∈ {-99; 0} + [9]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [10].f1[0..4] ∈ {0; 10; 20} + [10].f_inter[0..4] ∈ {0} + [10].f2 ∈ {-99; 0} + [10]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [11].f1[0..4] ∈ {0; 10; 20} + [11].f_inter[0..4] ∈ {0} + [11].f2 ∈ {-99; 0} + [11]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [12].f1[0..4] ∈ {0; 10; 20} + [12].f_inter[0..4] ∈ {0} + [12].f2 ∈ {-99; 0} + [12]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [13].f1[0..4] ∈ {0; 10; 20} + [13].f_inter[0..4] ∈ {0} + [13].f2 ∈ {-99; 0} + [13]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [14].f1[0..4] ∈ {0; 10; 20} + [14].f_inter[0..4] ∈ {0} + [14].f2 ∈ {-99; 0} + [14]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [15].f1[0..4] ∈ {0; 10; 20} + [15].f_inter[0..4] ∈ {0} + [15].f2 ∈ {-99; 0} + [15]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [16].f1[0..4] ∈ {0; 10; 20} + [16].f_inter[0..4] ∈ {0} + [16].f2 ∈ {-99; 0} + [16]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [17].f1[0..4] ∈ {0; 10; 20} + [17].f_inter[0..4] ∈ {0} + [17].f2 ∈ {-99; 0} + [17]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [18].f1[0..4] ∈ {0; 10; 20} + [18].f_inter[0..4] ∈ {0} + [18].f2 ∈ {-99; 0} + [18]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [19].f1[0..4] ∈ {0; 10; 20} + [19].f_inter[0..4] ∈ {0} + [19].f2 ∈ {-99; 0} + [19]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [20].f1[0..4] ∈ {0; 10; 20} + [20].f_inter[0..4] ∈ {0} + [20].f2 ∈ {-99; 0} + [20]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [21].f1[0..4] ∈ {0; 10; 20} + [21].f_inter[0..4] ∈ {0} + [21].f2 ∈ {-99; 0} + [21]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [22].f1[0..4] ∈ {0; 10; 20} + [22].f_inter[0..4] ∈ {0} + [22].f2 ∈ {-99; 0} + [22]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [23].f1[0..4] ∈ {0; 10; 20} + [23].f_inter[0..4] ∈ {0} + [23].f2 ∈ {-99; 0} + [23]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [24].f1[0..4] ∈ {0; 10; 20} + [24].f_inter[0..4] ∈ {0} + [24].f2 ∈ {-99; 0} + [24]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [25].f1[0..4] ∈ {0; 10; 20} + [25].f_inter[0..4] ∈ {0} + [25].f2 ∈ {-99; 0} + [25]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [26].f1[0..4] ∈ {0; 10; 20} + [26].f_inter[0..4] ∈ {0} + [26].f2 ∈ {-99; 0} + [26]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [27].f1[0..4] ∈ {0; 10; 20} + [27].f_inter[0..4] ∈ {0} + [27].f2 ∈ {-99; 0} + [27]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [28].f1[0..4] ∈ {0; 10; 20} + [28].f_inter[0..4] ∈ {0} + [28].f2 ∈ {-99; 0} + [28]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [29].f1[0..4] ∈ {0; 10; 20} + [29].f_inter[0..4] ∈ {0} + [29].f2 ∈ {-99; 0} + [29]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [30].f1[0..4] ∈ {0; 10; 20} + [30].f_inter[0..4] ∈ {0} + [30].f2 ∈ {-99; 0} + [30]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [31].f1[0..4] ∈ {0; 10; 20} + [31].f_inter[0..4] ∈ {0} + [31].f2 ∈ {-99; 0} + [31]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [32].f1[0..4] ∈ {0; 10; 20} + [32].f_inter[0..4] ∈ {0} + [32].f2 ∈ {-99; 0} + [32]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [33].f1[0..4] ∈ {0; 10; 20} + [33].f_inter[0..4] ∈ {0} + [33].f2 ∈ {-99; 0} + [33]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [34].f1[0..4] ∈ {0; 10; 20} + [34].f_inter[0..4] ∈ {0} + [34].f2 ∈ {-99; 0} + [34]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [35].f1[0..4] ∈ {0; 10; 20} + [35].f_inter[0..4] ∈ {0} + [35].f2 ∈ {-99; 0} + [35]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [36].f1[0..4] ∈ {0; 10; 20} + [36].f_inter[0..4] ∈ {0} + [36].f2 ∈ {-99; 0} + [36]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [37].f1[0..4] ∈ {0; 10; 20} + [37].f_inter[0..4] ∈ {0} + [37].f2 ∈ {-99; 0} + [37]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [38].f1[0..4] ∈ {0; 10; 20} + [38].f_inter[0..4] ∈ {0} + [38].f2 ∈ {-99; 0} + [38]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [39].f1[0..4] ∈ {0; 10; 20} + [39].f_inter[0..4] ∈ {0} + [39].f2 ∈ {-99; 0} + [39]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [40].f1[0..4] ∈ {0; 10; 20} + [40].f_inter[0..4] ∈ {0} + [40].f2 ∈ {-99; 0} + [40]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [41].f1[0..4] ∈ {0; 10; 20} + [41].f_inter[0..4] ∈ {0} + [41].f2 ∈ {-99; 0} + [41]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [42].f1[0..4] ∈ {0; 10; 20} + [42].f_inter[0..4] ∈ {0} + [42].f2 ∈ {-99; 0} + [42]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [43].f1[0..4] ∈ {0; 10; 20} + [43].f_inter[0..4] ∈ {0} + [43].f2 ∈ {-99; 0} + [43]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [44].f1[0..4] ∈ {0; 10; 20} + [44].f_inter[0..4] ∈ {0} + [44].f2 ∈ {-99; 0} + [44]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [45].f1[0..4] ∈ {0; 10; 20} + [45].f_inter[0..4] ∈ {0} + [45].f2 ∈ {-99; 0} + [45]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [46].f1[0..4] ∈ {0; 10; 20} + [46].f_inter[0..4] ∈ {0} + [46].f2 ∈ {-99; 0} + [46]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [47].f1[0..4] ∈ {0; 10; 20} + [47].f_inter[0..4] ∈ {0} + [47].f2 ∈ {-99; 0} + [47]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [48].f1[0..4] ∈ {0; 10; 20} + [48].f_inter[0..4] ∈ {0} + [48].f2 ∈ {-99; 0} + [48]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + [49].f1[0..4] ∈ {0; 10; 20} + [49].f_inter[0..4] ∈ {0} + [49].f2 ∈ {-99; 0} + [49]{.f_inter2[0..4]; .[bits 328 to 351]} ∈ {0} + i ∈ {5} + j ∈ {50} + q ∈ {0; 10; 20} + r ∈ {0; 1; 11; 21} + __retres ∈ {0; 1; 10; 11; 20; 21; 31; 41} +[from] Computing for function ct +[from] Done for function ct +[from] Computing for function main +[from] Computing for function Frama_C_dump_each <-main +[from] Done for function Frama_C_dump_each +[from] Computing for function f <-main +[from] Done for function f +[from] Computing for function g <-main +[from] Done for function g +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function ct: + \result FROM \nothing +[from] Function f: + NO EFFECTS +[from] Function g: + NO EFFECTS +[from] Function main: + t{[0].f1[0..4]; [0].f2; [1].f1[0..4]; [1].f2; [2].f1[0..4]; [2].f2; + [3].f1[0..4]; [3].f2; [4].f1[0..4]; [4].f2; [5].f1[0..4]; [5].f2; + [6].f1[0..4]; [6].f2; [7].f1[0..4]; [7].f2; [8].f1[0..4]; [8].f2; + [9].f1[0..4]; [9].f2; [10].f1[0..4]; [10].f2; [11].f1[0..4]; [11].f2; + [12].f1[0..4]; [12].f2; [13].f1[0..4]; [13].f2; [14].f1[0..4]; [14].f2; + [15].f1[0..4]; [15].f2; [16].f1[0..4]; [16].f2; [17].f1[0..4]; [17].f2; + [18].f1[0..4]; [18].f2; [19].f1[0..4]; [19].f2; [20].f1[0..4]; [20].f2; + [21].f1[0..4]; [21].f2; [22].f1[0..4]; [22].f2; [23].f1[0..4]; [23].f2; + [24].f1[0..4]; [24].f2; [25].f1[0..4]; [25].f2; [26].f1[0..4]; [26].f2; + [27].f1[0..4]; [27].f2; [28].f1[0..4]; [28].f2; [29].f1[0..4]; [29].f2; + [30].f1[0..4]; [30].f2; [31].f1[0..4]; [31].f2; [32].f1[0..4]; [32].f2; + [33].f1[0..4]; [33].f2; [34].f1[0..4]; [34].f2; [35].f1[0..4]; [35].f2; + [36].f1[0..4]; [36].f2; [37].f1[0..4]; [37].f2; [38].f1[0..4]; [38].f2; + [39].f1[0..4]; [39].f2; [40].f1[0..4]; [40].f2; [41].f1[0..4]; [41].f2; + [42].f1[0..4]; [42].f2; [43].f1[0..4]; [43].f2; [44].f1[0..4]; [44].f2; + [45].f1[0..4]; [45].f2; [46].f1[0..4]; [46].f2; [47].f1[0..4]; [47].f2; + [48].f1[0..4]; [48].f2; [49].f1[0..4]; [49].f2} + FROM \nothing (and SELF) + i FROM \nothing + j FROM \nothing + q FROM t{[0].f1[0..4]; [1].f1[0..4]; [2].f1[0..4]; [3].f1[0..4]; + [4].f1[0..4]; [5].f1[0..4]; [6].f1[0..4]; [7].f1[0..4]; + [8].f1[0..4]; [9].f1[0..4]; [10].f1[0..4]; [11].f1[0..4]; + [12].f1[0..4]; [13].f1[0..4]; [14].f1[0..4]; [15].f1[0..4]; + [16].f1[0..4]; [17].f1[0..4]; [18].f1[0..4]; [19].f1[0..4]; + [20].f1[0..4]; [21].f1[0..4]; [22].f1[0..4]; [23].f1[0..4]; + [24].f1[0..4]; [25].f1[0..4]; [26].f1[0..4]; [27].f1[0..4]; + [28].f1[0..4]; [29].f1[0..4]; [30].f1[0..4]; [31].f1[0..4]; + [32].f1[0..4]; [33].f1[0..4]; [34].f1[0..4]; [35].f1[0..4]; + [36].f1[0..4]; [37].f1[0..4]; [38].f1[0..4]; [39].f1[0..4]; + [40].f1[0..4]; [41].f1[0..4]; [42].f1[0..4]; [43].f1[0..4]; + [44].f1[0..4]; [45].f1[0..4]; [46].f1[0..4]; [47].f1[0..4]; + [48].f1[0..4]; [49].f1[0..4]} (and SELF) + r FROM t{[0].f1[0..4]; [1].f1[0..4]; [2].f1[0..4]; [3].f1[0..4]; + [4].f1[0..4]; [5].f1[0..4]; [6].f1[0..4]; [7].f1[0..4]; + [8].f1[0..4]; [9].f1[0..4]; [10].f1[0..4]; [11].f1[0..4]; + [12].f1[0..4]; [13].f1[0..4]; [14].f1[0..4]; [15].f1[0..4]; + [16].f1[0..4]; [17].f1[0..4]; [18].f1[0..4]; [19].f1[0..4]; + [20].f1[0..4]; [21].f1[0..4]; [22].f1[0..4]; [23].f1[0..4]; + [24].f1[0..4]; [25].f1[0..4]; [26].f1[0..4]; [27].f1[0..4]; + [28].f1[0..4]; [29].f1[0..4]; [30].f1[0..4]; [31].f1[0..4]; + [32].f1[0..4]; [33].f1[0..4]; [34].f1[0..4]; [35].f1[0..4]; + [36].f1[0..4]; [37].f1[0..4]; [38].f1[0..4]; [39].f1[0..4]; + [40].f1[0..4]; [41].f1[0..4]; [42].f1[0..4]; [43].f1[0..4]; + [44].f1[0..4]; [45].f1[0..4]; [46].f1[0..4]; [47].f1[0..4]; + [48].f1[0..4]; [49].f1[0..4]} (and SELF) + \result FROM t{[0].f1[0..4]; [1].f1[0..4]; [2].f1[0..4]; [3].f1[0..4]; + [4].f1[0..4]; [5].f1[0..4]; [6].f1[0..4]; [7].f1[0..4]; + [8].f1[0..4]; [9].f1[0..4]; [10].f1[0..4]; [11].f1[0..4]; + [12].f1[0..4]; [13].f1[0..4]; [14].f1[0..4]; [15].f1[0..4]; + [16].f1[0..4]; [17].f1[0..4]; [18].f1[0..4]; [19].f1[0..4]; + [20].f1[0..4]; [21].f1[0..4]; [22].f1[0..4]; [23].f1[0..4]; + [24].f1[0..4]; [25].f1[0..4]; [26].f1[0..4]; [27].f1[0..4]; + [28].f1[0..4]; [29].f1[0..4]; [30].f1[0..4]; [31].f1[0..4]; + [32].f1[0..4]; [33].f1[0..4]; [34].f1[0..4]; [35].f1[0..4]; + [36].f1[0..4]; [37].f1[0..4]; [38].f1[0..4]; [39].f1[0..4]; + [40].f1[0..4]; [41].f1[0..4]; [42].f1[0..4]; [43].f1[0..4]; + [44].f1[0..4]; [45].f1[0..4]; [46].f1[0..4]; [47].f1[0..4]; + [48].f1[0..4]; [49].f1[0..4]}; + q; r +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function ct: + __retres +[inout] Inputs for function ct: + \nothing +[inout] InOut (internal) for function ct: + Operational inputs: + \nothing + Operational inputs on termination: + \nothing + Sure outputs: + __retres +[inout] Out (internal) for function main: + t{[0].f1[0..4]; [0].f2; [1].f1[0..4]; [1].f2; [2].f1[0..4]; [2].f2; + [3].f1[0..4]; [3].f2; [4].f1[0..4]; [4].f2; [5].f1[0..4]; [5].f2; + [6].f1[0..4]; [6].f2; [7].f1[0..4]; [7].f2; [8].f1[0..4]; [8].f2; + [9].f1[0..4]; [9].f2; [10].f1[0..4]; [10].f2; [11].f1[0..4]; [11].f2; + [12].f1[0..4]; [12].f2; [13].f1[0..4]; [13].f2; [14].f1[0..4]; [14].f2; + [15].f1[0..4]; [15].f2; [16].f1[0..4]; [16].f2; [17].f1[0..4]; [17].f2; + [18].f1[0..4]; [18].f2; [19].f1[0..4]; [19].f2; [20].f1[0..4]; [20].f2; + [21].f1[0..4]; [21].f2; [22].f1[0..4]; [22].f2; [23].f1[0..4]; [23].f2; + [24].f1[0..4]; [24].f2; [25].f1[0..4]; [25].f2; [26].f1[0..4]; [26].f2; + [27].f1[0..4]; [27].f2; [28].f1[0..4]; [28].f2; [29].f1[0..4]; [29].f2; + [30].f1[0..4]; [30].f2; [31].f1[0..4]; [31].f2; [32].f1[0..4]; [32].f2; + [33].f1[0..4]; [33].f2; [34].f1[0..4]; [34].f2; [35].f1[0..4]; [35].f2; + [36].f1[0..4]; [36].f2; [37].f1[0..4]; [37].f2; [38].f1[0..4]; [38].f2; + [39].f1[0..4]; [39].f2; [40].f1[0..4]; [40].f2; [41].f1[0..4]; [41].f2; + [42].f1[0..4]; [42].f2; [43].f1[0..4]; [43].f2; [44].f1[0..4]; [44].f2; + [45].f1[0..4]; [45].f2; [46].f1[0..4]; [46].f2; [47].f1[0..4]; [47].f2; + [48].f1[0..4]; [48].f2; [49].f1[0..4]; [49].f2}; i; j; q; r; __retres +[inout] Inputs for function main: + t{[0].f1[0..4]; [1].f1[0..4]; [2].f1[0..4]; [3].f1[0..4]; [4].f1[0..4]; + [5].f1[0..4]; [6].f1[0..4]; [7].f1[0..4]; [8].f1[0..4]; [9].f1[0..4]; + [10].f1[0..4]; [11].f1[0..4]; [12].f1[0..4]; [13].f1[0..4]; + [14].f1[0..4]; [15].f1[0..4]; [16].f1[0..4]; [17].f1[0..4]; + [18].f1[0..4]; [19].f1[0..4]; [20].f1[0..4]; [21].f1[0..4]; + [22].f1[0..4]; [23].f1[0..4]; [24].f1[0..4]; [25].f1[0..4]; + [26].f1[0..4]; [27].f1[0..4]; [28].f1[0..4]; [29].f1[0..4]; + [30].f1[0..4]; [31].f1[0..4]; [32].f1[0..4]; [33].f1[0..4]; + [34].f1[0..4]; [35].f1[0..4]; [36].f1[0..4]; [37].f1[0..4]; + [38].f1[0..4]; [39].f1[0..4]; [40].f1[0..4]; [41].f1[0..4]; + [42].f1[0..4]; [43].f1[0..4]; [44].f1[0..4]; [45].f1[0..4]; + [46].f1[0..4]; [47].f1[0..4]; [48].f1[0..4]; [49].f1[0..4]}; i; j; + q; r +[inout] InOut (internal) for function main: + Operational inputs: + t{[0].f1[0..4]; [1].f1[0..4]; [2].f1[0..4]; [3].f1[0..4]; [4].f1[0..4]; + [5].f1[0..4]; [6].f1[0..4]; [7].f1[0..4]; [8].f1[0..4]; [9].f1[0..4]; + [10].f1[0..4]; [11].f1[0..4]; [12].f1[0..4]; [13].f1[0..4]; + [14].f1[0..4]; [15].f1[0..4]; [16].f1[0..4]; [17].f1[0..4]; + [18].f1[0..4]; [19].f1[0..4]; [20].f1[0..4]; [21].f1[0..4]; + [22].f1[0..4]; [23].f1[0..4]; [24].f1[0..4]; [25].f1[0..4]; + [26].f1[0..4]; [27].f1[0..4]; [28].f1[0..4]; [29].f1[0..4]; + [30].f1[0..4]; [31].f1[0..4]; [32].f1[0..4]; [33].f1[0..4]; + [34].f1[0..4]; [35].f1[0..4]; [36].f1[0..4]; [37].f1[0..4]; + [38].f1[0..4]; [39].f1[0..4]; [40].f1[0..4]; [41].f1[0..4]; + [42].f1[0..4]; [43].f1[0..4]; [44].f1[0..4]; [45].f1[0..4]; + [46].f1[0..4]; [47].f1[0..4]; [48].f1[0..4]; [49].f1[0..4]}; q; r + Operational inputs on termination: + t{[0].f1[0..4]; [1].f1[0..4]; [2].f1[0..4]; [3].f1[0..4]; [4].f1[0..4]; + [5].f1[0..4]; [6].f1[0..4]; [7].f1[0..4]; [8].f1[0..4]; [9].f1[0..4]; + [10].f1[0..4]; [11].f1[0..4]; [12].f1[0..4]; [13].f1[0..4]; + [14].f1[0..4]; [15].f1[0..4]; [16].f1[0..4]; [17].f1[0..4]; + [18].f1[0..4]; [19].f1[0..4]; [20].f1[0..4]; [21].f1[0..4]; + [22].f1[0..4]; [23].f1[0..4]; [24].f1[0..4]; [25].f1[0..4]; + [26].f1[0..4]; [27].f1[0..4]; [28].f1[0..4]; [29].f1[0..4]; + [30].f1[0..4]; [31].f1[0..4]; [32].f1[0..4]; [33].f1[0..4]; + [34].f1[0..4]; [35].f1[0..4]; [36].f1[0..4]; [37].f1[0..4]; + [38].f1[0..4]; [39].f1[0..4]; [40].f1[0..4]; [41].f1[0..4]; + [42].f1[0..4]; [43].f1[0..4]; [44].f1[0..4]; [45].f1[0..4]; + [46].f1[0..4]; [47].f1[0..4]; [48].f1[0..4]; [49].f1[0..4]}; q; r + Sure outputs: + i; j; __retres +[report] Computing properties status... + +-------------------------------------------------------------------------------- +--- Properties of Function 'f' +-------------------------------------------------------------------------------- + +[ Valid ] Pre-condition (file tests/value/precise_locations.i, line 18) + by Call Preconditions. +[ Extern ] Assigns nothing + Unverifiable but considered Valid. +[ Valid ] Default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'g' +-------------------------------------------------------------------------------- + +[ Valid ] Pre-condition (file tests/value/precise_locations.i, line 21) + by Call Preconditions. +[ Extern ] Assigns nothing + Unverifiable but considered Valid. +[ Valid ] Default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'main' +-------------------------------------------------------------------------------- + +[ Valid ] Assertion 'Value,signed_overflow' (file tests/value/precise_locations.i, line 46) + by Value (v2). +[ Valid ] Assertion 'Value,signed_overflow' (file tests/value/precise_locations.i, line 49) + by Value (v2). +[ Valid ] Assertion 'Value,signed_overflow' (file tests/value/precise_locations.i, line 52) + by Value (v2). +[ Valid ] Assertion 'Value,signed_overflow' (file tests/value/precise_locations.i, line 52) + by Value (v2). +[ Valid ] Instance of 'Pre-condition (file tests/value/precise_locations.i, line 18)' at call 'f' (file tests/value/precise_locations.i, line 48) + + by Value (v2). +[ Valid ] Instance of 'Pre-condition (file tests/value/precise_locations.i, line 21)' at call 'g' (file tests/value/precise_locations.i, line 49) + + by Value (v2). + +-------------------------------------------------------------------------------- +--- Status Report Summary +-------------------------------------------------------------------------------- + 10 Completely validated + 2 Considered valid + 12 Total +-------------------------------------------------------------------------------- diff --git a/tests/value/oracle_symblocs/precond.err.oracle b/tests/value/oracle_symblocs/precond.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/precond.res.oracle b/tests/value/oracle_symblocs/precond.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..2c34712edf41e852a918ce7996c0b02fd1a11c89 --- /dev/null +++ b/tests/value/oracle_symblocs/precond.res.oracle @@ -0,0 +1,211 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/precond.c (with preprocessing) +[value] Analyzing an incomplete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + x ∈ [--..--] + pf2 ∈ {{ &f2 }} +[value] computing for function f <- main. + Called from tests/value/precond.c:31. +tests/value/precond.c:8:[value] function f: precondition got status valid. +tests/value/precond.c:9:[value] function f: precondition got status valid. +[value] Recording results for f +[value] Done for function f +[value] computing for function f <- main. + Called from tests/value/precond.c:32. +[value] Recording results for f +[value] Done for function f +[value] computing for function g <- main. + Called from tests/value/precond.c:34. +tests/value/precond.c:34:[kernel] warning: No code nor implicit assigns clause for function g, generating default assigns from the prototype +[value] using specification for function g +tests/value/precond.c:24:[value] warning: function g: precondition got status unknown. +[value] Done for function g +[value] computing for function aux <- main. + Called from tests/value/precond.c:36. +[value] computing for function f2 <- aux <- main. + Called from tests/value/precond.c:21. +tests/value/precond.c:21:[kernel] warning: No code nor implicit assigns clause for function f2, generating default assigns from the prototype +[value] using specification for function f2 +tests/value/precond.c:15:[value] function f2: precondition got status valid. +[value] Done for function f2 +[value] Recording results for aux +[value] Done for function aux +[value] computing for function aux <- main. + Called from tests/value/precond.c:37. +[value] computing for function f2 <- aux <- main. + Called from tests/value/precond.c:21. +tests/value/precond.c:15:[value] warning: function f2: precondition got status unknown. +[value] Done for function f2 +[value] Recording results for aux +[value] Done for function aux +[value] computing for function f <- main. + Called from tests/value/precond.c:39. +[value] Recording results for f +[value] Done for function f +[value] computing for function f <- main. + Called from tests/value/precond.c:40. +tests/value/precond.c:9:[value] warning: function f: precondition got status invalid. +[value] Recording results for f +[value] Done for function f +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + x ∈ {0; 1} +[value:final-states] Values at end of function aux: + +[value:final-states] Values at end of function main: + NON TERMINATING FUNCTION +[report] Computing properties status... + +-------------------------------------------------------------------------------- +--- Properties of Function 'f' +-------------------------------------------------------------------------------- + +[ Valid ] Pre-condition (file tests/value/precond.c, line 8) + requires i+1 ≥ 0 + by Call Preconditions. +[ Alarm ] Pre-condition (file tests/value/precond.c, line 9) + requires i ≥ 0 + By Call Preconditions, with pending: + - Unreachable instruction (file tests/value/precond.c, line 40) + +-------------------------------------------------------------------------------- +--- Properties of Function 'f2' +-------------------------------------------------------------------------------- + +[ - ] Pre-condition (file tests/value/precond.c, line 15) + requires i ≥ 0 + tried with Call Preconditions. +[ - ] Assigns nothing + assigns \nothing; + tried with Inferred annotations. +[ - ] Default behavior + default behavior + tried with Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'aux' +-------------------------------------------------------------------------------- + +[ - ] Instance of 'Pre-condition (file tests/value/precond.c, line 15)' at instruction (file tests/value/precond.c, line 21) + + status of 'requires i ≥ 0' of f2 at stmt 4 + tried with Value. + +-------------------------------------------------------------------------------- +--- Properties of Function 'g' +-------------------------------------------------------------------------------- + +[ - ] Pre-condition (file tests/value/precond.c, line 24) + requires x ≤ 8 + tried with Call Preconditions. +[ - ] Assigns nothing + assigns \nothing; + tried with Inferred annotations. +[ - ] Default behavior + default behavior + tried with Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'main' +-------------------------------------------------------------------------------- + +[ Valid ] Instance of 'Pre-condition (file tests/value/precond.c, line 8)' at call 'f' (file tests/value/precond.c, line 31) + + status of 'requires i+1 ≥ 0' of f at stmt 11 + by Value. +[ Valid ] Instance of 'Pre-condition (file tests/value/precond.c, line 9)' at call 'f' (file tests/value/precond.c, line 31) + + status of 'requires i ≥ 0' of f at stmt 11 + by Value. +[ Valid ] Instance of 'Pre-condition (file tests/value/precond.c, line 8)' at call 'f' (file tests/value/precond.c, line 32) + + status of 'requires i+1 ≥ 0' of f at stmt 14 + by Value. +[ Valid ] Instance of 'Pre-condition (file tests/value/precond.c, line 9)' at call 'f' (file tests/value/precond.c, line 32) + + status of 'requires i ≥ 0' of f at stmt 14 + by Value. +[ - ] Instance of 'Pre-condition (file tests/value/precond.c, line 24)' at call 'g' (file tests/value/precond.c, line 34) + + status of 'requires x ≤ 8' of g at stmt 17 + tried with Value. +[ Valid ] Instance of 'Pre-condition (file tests/value/precond.c, line 8)' at instruction (file tests/value/precond.c, line 39) + + status of 'requires i+1 ≥ 0' of f at stmt 20 + by Value. +[ Valid ] Instance of 'Pre-condition (file tests/value/precond.c, line 9)' at instruction (file tests/value/precond.c, line 39) + + status of 'requires i ≥ 0' of f at stmt 20 + by Value. +[ Valid ] Instance of 'Pre-condition (file tests/value/precond.c, line 8)' at instruction (file tests/value/precond.c, line 40) + + status of 'requires i+1 ≥ 0' of f at stmt 21 + by Value. +[ Alarm ] Instance of 'Pre-condition (file tests/value/precond.c, line 9)' at instruction (file tests/value/precond.c, line 40) + + status of 'requires i ≥ 0' of f at stmt 21 + By Value, with pending: + - Unreachable instruction (file tests/value/precond.c, line 40) + +-------------------------------------------------------------------------------- +--- Status Report Summary +-------------------------------------------------------------------------------- + 8 Completely validated + 8 To be validated + 2 Alarms emitted + 18 Total +-------------------------------------------------------------------------------- +[report] Computing properties status... + +-------------------------------------------------------------------------------- +--- Properties of Function 'f' +-------------------------------------------------------------------------------- + +[ Valid ] Pre-condition (file tests/value/precond.c, line 8) + requires i+1 ≥ 0 + by Call Preconditions. +[ Alarm ] Pre-condition (file tests/value/precond.c, line 9) + requires i ≥ 0 + By Call Preconditions, with pending: + - Unreachable instruction (file tests/value/precond.c, line 40) + +-------------------------------------------------------------------------------- +--- Properties of Function 'f2' +-------------------------------------------------------------------------------- + +[ - ] Pre-condition (file tests/value/precond.c, line 15) + requires i ≥ 0 + tried with Call Preconditions. +[ - ] Assigns nothing + assigns \nothing; + tried with Inferred annotations. +[ - ] Default behavior + default behavior + tried with Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'g' +-------------------------------------------------------------------------------- + +[ - ] Pre-condition (file tests/value/precond.c, line 24) + requires x ≤ 8 + tried with Call Preconditions. +[ - ] Assigns nothing + assigns \nothing; + tried with Inferred annotations. +[ - ] Default behavior + default behavior + tried with Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Status Report Summary +-------------------------------------------------------------------------------- + 1 Completely validated + 6 To be validated + 1 Alarm emitted + 8 Total +-------------------------------------------------------------------------------- diff --git a/tests/value/oracle_symblocs/precond2.0.err.oracle b/tests/value/oracle_symblocs/precond2.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/precond2.0.res.oracle b/tests/value/oracle_symblocs/precond2.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..ebff46b0347a0e81462ebb10c074840f5012f301 --- /dev/null +++ b/tests/value/oracle_symblocs/precond2.0.res.oracle @@ -0,0 +1,108 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/precond2.c (with preprocessing) +[rte] annotating function f +[rte] annotating function main +tests/value/precond2.c:24:[kernel] warning: No code nor implicit assigns clause for function g, generating default assigns from the prototype +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + x ∈ {0} +[value] computing for function f <- main. + Called from tests/value/precond2.c:21. +tests/value/precond2.c:9:[value] function f: precondition got status valid. +tests/value/precond2.c:10:[value] function f: precondition got status valid. +[value] Recording results for f +[value] Done for function f +[value] computing for function f <- main. + Called from tests/value/precond2.c:22. +tests/value/precond2.c:10:[value] warning: function f: precondition got status invalid. +[value] Recording results for f +[value] Done for function f +[value] computing for function g <- main. + Called from tests/value/precond2.c:24. +[value] using specification for function g +tests/value/precond2.c:16:[value] function g: precondition got status valid. +[value] Done for function g +[value] computing for function g <- main. + Called from tests/value/precond2.c:24. +[value] Done for function g +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + x ∈ {1} +[value:final-states] Values at end of function main: + x ∈ {0; 1} +[report] Computing properties status... + +-------------------------------------------------------------------------------- +--- Properties of Function 'f' +-------------------------------------------------------------------------------- + +[ Valid ] Pre-condition (file tests/value/precond2.c, line 9) + requires i+1 ≥ 0 + by Call Preconditions. +[ Alarm ] Pre-condition (file tests/value/precond2.c, line 10) + requires i ≥ 0 + By Call Preconditions, with pending: + - Unreachable call 'f' (file tests/value/precond2.c, line 22) + +-------------------------------------------------------------------------------- +--- Properties of Function 'g' +-------------------------------------------------------------------------------- + +[ Valid ] Pre-condition (file tests/value/precond2.c, line 16) + requires x ≤ 8 + by Call Preconditions. +[ - ] Assigns nothing + assigns \nothing; + tried with Inferred annotations. +[ - ] Default behavior + default behavior + tried with Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'main' +-------------------------------------------------------------------------------- + +[ Valid ] Pre-condition for 'pre_f' (generated) at call 'f' (file tests/value/precond2.c, line 21) + requires 1+1 ≥ 0 + by Value. +[ Valid ] Pre-condition for 'pre_f' (generated) at call 'f' (file tests/value/precond2.c, line 21) + requires 1 ≥ 0 + by Value. +[ Valid ] Pre-condition for 'pre_f_2' (generated) at call 'f' (file tests/value/precond2.c, line 22) + requires (int)(-1)+1 ≥ 0 + by Value. +[ Alarm ] Pre-condition for 'pre_f_2' (generated) at call 'f' (file tests/value/precond2.c, line 22) + requires (int)(-1) ≥ 0 + By Value, with pending: + - Unreachable call 'f' (file tests/value/precond2.c, line 22) +[ Valid ] Pre-condition for 'pre_g' (generated) at call 'g' (file tests/value/precond2.c, line 24) + requires x ≤ 8 + by Value. +[ Valid ] Pre-condition for 'pre_g_2' (generated) at call 'g' (file tests/value/precond2.c, line 24) + requires x ≤ 8 + by Value. +[ Valid ] Default behavior at call 'f' (file tests/value/precond2.c, line 21) + default behavior for statement 6 + by Frama-C kernel. +[ Valid ] Default behavior at call 'f' (file tests/value/precond2.c, line 22) + default behavior for statement 9 + by Frama-C kernel. +[ Valid ] Default behavior at call 'g' (file tests/value/precond2.c, line 24) + default behavior for statement 12 + by Frama-C kernel. +[ Valid ] Default behavior at call 'g' (file tests/value/precond2.c, line 24) + default behavior for statement 13 + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Status Report Summary +-------------------------------------------------------------------------------- + 11 Completely validated + 2 To be validated + 2 Alarms emitted + 15 Total +-------------------------------------------------------------------------------- diff --git a/tests/value/oracle_symblocs/precond2.1.err.oracle b/tests/value/oracle_symblocs/precond2.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/precond2.1.res.oracle b/tests/value/oracle_symblocs/precond2.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..84defbd92187f3bc2d44899a7a5c35693aa85b82 --- /dev/null +++ b/tests/value/oracle_symblocs/precond2.1.res.oracle @@ -0,0 +1,99 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/precond2.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + x ∈ {0} +[value] computing for function f <- main. + Called from tests/value/precond2.c:21. +tests/value/precond2.c:9:[value] function f: precondition got status valid. +tests/value/precond2.c:10:[value] function f: precondition got status valid. +[value] Recording results for f +[value] Done for function f +[value] computing for function f <- main. + Called from tests/value/precond2.c:22. +tests/value/precond2.c:10:[value] warning: function f: precondition got status invalid. +[value] Recording results for f +[value] Done for function f +[value] computing for function g <- main. + Called from tests/value/precond2.c:24. +tests/value/precond2.c:24:[kernel] warning: No code nor implicit assigns clause for function g, generating default assigns from the prototype +[value] using specification for function g +tests/value/precond2.c:16:[value] function g: precondition got status valid. +[value] Done for function g +[value] computing for function g <- main. + Called from tests/value/precond2.c:24. +[value] Done for function g +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + x ∈ {1} +[value:final-states] Values at end of function main: + x ∈ {0; 1} +[rte] annotating function f +[rte] annotating function main +[report] Computing properties status... + +-------------------------------------------------------------------------------- +--- Properties of Function 'g' +-------------------------------------------------------------------------------- + +[ - ] Assigns nothing + assigns \nothing; + tried with Inferred annotations. +[ - ] Default behavior + default behavior + tried with Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'main' +-------------------------------------------------------------------------------- + +[ Valid ] Default behavior at call 'f' (file tests/value/precond2.c, line 21) + default behavior for statement 6 + by Frama-C kernel. +[ Valid ] Default behavior at call 'f' (file tests/value/precond2.c, line 22) + default behavior for statement 9 + by Frama-C kernel. +[ Valid ] Default behavior at call 'g' (file tests/value/precond2.c, line 24) + default behavior for statement 12 + by Frama-C kernel. +[ Valid ] Default behavior at call 'g' (file tests/value/precond2.c, line 24) + default behavior for statement 13 + by Frama-C kernel. +[ Valid ] Instance of 'Pre-condition (file tests/value/precond2.c, line 9)' at call 'f' (file tests/value/precond2.c, line 21) + + status of 'requires i+1 ≥ 0' of f at stmt 6 + by Value. +[ Valid ] Instance of 'Pre-condition (file tests/value/precond2.c, line 10)' at call 'f' (file tests/value/precond2.c, line 21) + + status of 'requires i ≥ 0' of f at stmt 6 + by Value. +[ Valid ] Instance of 'Pre-condition (file tests/value/precond2.c, line 9)' at call 'f' (file tests/value/precond2.c, line 22) + + status of 'requires i+1 ≥ 0' of f at stmt 9 + by Value. +[ Alarm ] Instance of 'Pre-condition (file tests/value/precond2.c, line 10)' at call 'f' (file tests/value/precond2.c, line 22) + + status of 'requires i ≥ 0' of f at stmt 9 + By Value, with pending: + - Unreachable call 'f' (file tests/value/precond2.c, line 22) +[ Valid ] Instance of 'Pre-condition (file tests/value/precond2.c, line 16)' at call 'g' (file tests/value/precond2.c, line 24) + + status of 'requires x ≤ 8' of g at stmt 12 + by Value. +[ Valid ] Instance of 'Pre-condition (file tests/value/precond2.c, line 16)' at call 'g' (file tests/value/precond2.c, line 24) + + status of 'requires x ≤ 8' of g at stmt 13 + by Value. + +-------------------------------------------------------------------------------- +--- Status Report Summary +-------------------------------------------------------------------------------- + 9 Completely validated + 2 To be validated + 1 Alarm emitted + 12 Total +-------------------------------------------------------------------------------- diff --git a/tests/value/oracle_symblocs/propagate_bottom.err.oracle b/tests/value/oracle_symblocs/propagate_bottom.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/propagate_bottom.res.oracle b/tests/value/oracle_symblocs/propagate_bottom.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..8938a4d21ae7c7b7b66996c014d11f0f42bb8c6d --- /dev/null +++ b/tests/value/oracle_symblocs/propagate_bottom.res.oracle @@ -0,0 +1,41 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/propagate_bottom.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + v ∈ [--..--] +tests/value/propagate_bottom.i:5:[value] warning: division by zero. assert 0 ≢ 0; +tests/value/propagate_bottom.i:8:[value] warning: division by zero. assert 0 ≢ 0; +tests/value/propagate_bottom.i:11:[value] warning: division by zero. assert 0 ≢ 0; +tests/value/propagate_bottom.i:14:[value] warning: division by zero. assert 0 ≢ 0; +tests/value/propagate_bottom.i:17:[value] warning: division by zero. assert 0 ≢ 0; +tests/value/propagate_bottom.i:20:[value] warning: division by zero. assert 0 ≢ 0; +tests/value/propagate_bottom.i:25:[value] warning: non-finite double value. assert \is_finite((double)(1./(double)0)); +tests/value/propagate_bottom.i:28:[value] warning: non-finite double value. assert \is_finite((double)(1./(double)0)); +tests/value/propagate_bottom.i:31:[value] warning: non-finite double value. assert \is_finite((double)(1./(double)0)); +tests/value/propagate_bottom.i:34:[value] warning: non-finite double value. assert \is_finite((double)(1./0.)); +tests/value/propagate_bottom.i:37:[value] warning: non-finite double value. assert \is_finite((double)(1./0.)); +tests/value/propagate_bottom.i:40:[value] warning: non-finite double value. assert \is_finite((double)(1./0.)); +[value] Recording results for main +[value] done for function main +tests/value/propagate_bottom.i:5:[value] assertion 'Value,division_by_zero' got final status invalid. +tests/value/propagate_bottom.i:8:[value] assertion 'Value,division_by_zero' got final status invalid. +tests/value/propagate_bottom.i:11:[value] assertion 'Value,division_by_zero' got final status invalid. +tests/value/propagate_bottom.i:14:[value] assertion 'Value,division_by_zero' got final status invalid. +tests/value/propagate_bottom.i:17:[value] assertion 'Value,division_by_zero' got final status invalid. +tests/value/propagate_bottom.i:20:[value] assertion 'Value,division_by_zero' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + x1; x2; x3; x4; x5; x6; y1; y2; y3; y4; y5; y6 +[inout] Inputs for function main: + v diff --git a/tests/value/oracle_symblocs/protomain.err.oracle b/tests/value/oracle_symblocs/protomain.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/protomain.res.oracle b/tests/value/oracle_symblocs/protomain.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..7b78ec660492046d1049b87a8b8a3e5cb8ac234c --- /dev/null +++ b/tests/value/oracle_symblocs/protomain.res.oracle @@ -0,0 +1,11 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/protomain.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +:0:[kernel] warning: Neither code nor specification for function main, generating default assigns from the prototype +[value] using specification for function main +[value] done for function main +[value] ====== VALUES COMPUTED ====== diff --git a/tests/value/oracle_symblocs/ptr_call_object.err.oracle b/tests/value/oracle_symblocs/ptr_call_object.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/ptr_call_object.res.oracle b/tests/value/oracle_symblocs/ptr_call_object.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..f7ec1314111b73d82b43016336f5e007d9e73553 --- /dev/null +++ b/tests/value/oracle_symblocs/ptr_call_object.res.oracle @@ -0,0 +1,71 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/ptr_call_object.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] computing for function rand <- main. + Called from tests/value/ptr_call_object.c:30. +[value] using specification for function rand +[value] Done for function rand +[value] computing for function next_0 <- main. + Called from tests/value/ptr_call_object.c:34. +[value] Called Frama_C_show_each_p_in_next_0({{ &o0 }}, + .next ∈ {{ &next_0 }} + .i ∈ UNINITIALIZED) +[value] Recording results for next_0 +[value] Done for function next_0 +[value] computing for function next_1 <- main. + Called from tests/value/ptr_call_object.c:34. +[value] Called Frama_C_show_each_p_in_next_1({{ &o1 }}, + .next ∈ {{ &next_1 }} + .i ∈ UNINITIALIZED) +[value] Recording results for next_1 +[value] Done for function next_1 +[value] Called Frama_C_show_each_x({{ &o1 }}) +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function next_0: + __retres ∈ {0} +[value:final-states] Values at end of function next_1: + __retres ∈ {1} +[value:final-states] Values at end of function main: + o1.next ∈ {{ &next_1 }} + .i ∈ UNINITIALIZED + o0.next ∈ {{ &next_0 }} + .i ∈ UNINITIALIZED + p ∈ {{ &o1 ; &o0 }} + __retres ∈ {0} +[from] Computing for function next_0 +[from] Done for function next_0 +[from] Computing for function next_1 +[from] Done for function next_1 +[from] Computing for function main +[from] Computing for function rand <-main +[from] Done for function rand +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function next_0: + \result FROM \nothing +[from] Function next_1: + \result FROM \nothing +[from] Function rand: + \result FROM \nothing +[from] Function main: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function next_0: + __retres +[inout] Inputs for function next_0: + \nothing +[inout] Out (internal) for function next_1: + __retres +[inout] Inputs for function next_1: + \nothing +[inout] Out (internal) for function main: + o1.next; o0.next; p; tmp; tmp_0; __retres +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/ptr_relation.0.err.oracle b/tests/value/oracle_symblocs/ptr_relation.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/ptr_relation.0.res.oracle b/tests/value/oracle_symblocs/ptr_relation.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..583ee327d40e4b08d78901fcce37ab91ca29c45e --- /dev/null +++ b/tests/value/oracle_symblocs/ptr_relation.0.res.oracle @@ -0,0 +1,41 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/ptr_relation.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + i ∈ {0} + j ∈ {0} + x ∈ {0} + k ∈ {0} + l ∈ {0} + m ∈ {0} + n ∈ {0} + d ∈ {0} + a ∈ {0} + b ∈ {0} + ptr ∈ {0} + tab_ptr_fct2[0] ∈ {{ &f2 }} + [1] ∈ {{ &g2 }} +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + i ∈ {77} + a ∈ {77; 333} + b ∈ {0; 77} + ptr ∈ {{ &a ; &b }} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + i FROM b; c + a FROM c + b FROM c (and SELF) + ptr FROM c +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + i; a; b; ptr +[inout] Inputs for function main: + a; b; ptr diff --git a/tests/value/oracle_symblocs/ptr_relation.1.err.oracle b/tests/value/oracle_symblocs/ptr_relation.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/ptr_relation.1.res.oracle b/tests/value/oracle_symblocs/ptr_relation.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..759d3c08def409dac8e1ba741e7cf5fa7f29c6fe --- /dev/null +++ b/tests/value/oracle_symblocs/ptr_relation.1.res.oracle @@ -0,0 +1,39 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/ptr_relation.i (no preprocessing) +[value] Analyzing a complete application starting at main1 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + i ∈ {0} + j ∈ {0} + x ∈ {0} + k ∈ {0} + l ∈ {0} + m ∈ {0} + n ∈ {0} + d ∈ {0} + a ∈ {0} + b ∈ {0} + ptr ∈ {0} + tab_ptr_fct2[0] ∈ {{ &f2 }} + [1] ∈ {{ &g2 }} +[value] Recording results for main1 +[value] done for function main1 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main1: + i ∈ {3; 4} + j ∈ {-1; 0; 1} + x ∈ {3; 4} +[from] Computing for function main1 +[from] Done for function main1 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main1: + i FROM c + j FROM c + x FROM c +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main1: + i; j; x +[inout] Inputs for function main1: + i; x diff --git a/tests/value/oracle_symblocs/ptr_relation.2.err.oracle b/tests/value/oracle_symblocs/ptr_relation.2.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/ptr_relation.2.res.oracle b/tests/value/oracle_symblocs/ptr_relation.2.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..5787f168c8d0a5986a283ae05764d71a34f8073e --- /dev/null +++ b/tests/value/oracle_symblocs/ptr_relation.2.res.oracle @@ -0,0 +1,69 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/ptr_relation.i (no preprocessing) +[value] Analyzing a complete application starting at main2 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + i ∈ {0} + j ∈ {0} + x ∈ {0} + k ∈ {0} + l ∈ {0} + m ∈ {0} + n ∈ {0} + d ∈ {0} + a ∈ {0} + b ∈ {0} + ptr ∈ {0} + tab_ptr_fct2[0] ∈ {{ &f2 }} + [1] ∈ {{ &g2 }} +[value] computing for function g2 <- main2. + Called from tests/value/ptr_relation.i:38. +[value] Recording results for g2 +[value] Done for function g2 +[value] computing for function f2 <- main2. + Called from tests/value/ptr_relation.i:38. +[value] Recording results for f2 +[value] Done for function f2 +[value] Recording results for main2 +[value] done for function main2 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f2: + a ∈ [--..--] + b ∈ [--..--] +[value:final-states] Values at end of function g2: + a ∈ [--..--] +[value:final-states] Values at end of function main2: + j ∈ {0; 1} + a ∈ [--..--] + b ∈ [--..--] +[from] Computing for function f2 +[from] Done for function f2 +[from] Computing for function g2 +[from] Done for function g2 +[from] Computing for function main2 +[from] Done for function main2 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f2: + a FROM m; arg + b FROM l; arg +[from] Function g2: + a FROM n; arg +[from] Function main2: + j FROM c + a FROM m; n; tab_ptr_fct2[0..1]; c; arg + b FROM l; tab_ptr_fct2[0..1]; c; arg (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f2: + a; b +[inout] Inputs for function f2: + l; m +[inout] Out (internal) for function g2: + a +[inout] Inputs for function g2: + n +[inout] Out (internal) for function main2: + j; a; b +[inout] Inputs for function main2: + j; l; m; n; tab_ptr_fct2[0..1] diff --git a/tests/value/oracle_symblocs/pure_exp.err.oracle b/tests/value/oracle_symblocs/pure_exp.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/pure_exp.res.oracle b/tests/value/oracle_symblocs/pure_exp.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..620893074bd0d6c57d072bf11ad3b3e2f02fcf2d --- /dev/null +++ b/tests/value/oracle_symblocs/pure_exp.res.oracle @@ -0,0 +1,26 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/pure_exp.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + t ∈ {0} +tests/value/pure_exp.i:8:[value] warning: out of bounds read. assert \valid_read(t); +[value] Recording results for main +[value] done for function main +tests/value/pure_exp.i:8:[value] assertion 'Value,mem_access' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + NON TERMINATING FUNCTION +[from] Computing for function main +[from] Non-terminating function main (no dependencies) +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NON TERMINATING - NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + tmp +[inout] Inputs for function main: + t diff --git a/tests/value/oracle_symblocs/qualified_arrays.err.oracle b/tests/value/oracle_symblocs/qualified_arrays.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/qualified_arrays.res.oracle b/tests/value/oracle_symblocs/qualified_arrays.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..0ab7ad301931d7df258a368c602e72779d600a28 --- /dev/null +++ b/tests/value/oracle_symblocs/qualified_arrays.res.oracle @@ -0,0 +1,33 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/qualified_arrays.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +tests/value/qualified_arrays.i:9:[value] warning: global initialization of volatile variable f ignored +[value] Initial state computed +[value:initial-state] Values of globals at initialization + volatile_tab_120_2[0..1][0..119] ∈ [--..--] + p_first_volatile ∈ {{ &volatile_tab_120_2[0][0] }} + f ∈ [--..--] + x ∈ {{ &f.x }} +tests/value/qualified_arrays.i:13:[value] function main: precondition got status valid. +tests/value/qualified_arrays.i:14:[value] function main: precondition got status valid. +tests/value/qualified_arrays.i:17:[value] warning: out of bounds write. assert \valid(&p_first_volatile); +tests/value/qualified_arrays.i:17:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +[value] Recording results for main +[value] done for function main +tests/value/qualified_arrays.i:17:[value] assertion 'Value,mem_access' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + NON TERMINATING FUNCTION +[from] Computing for function main +[from] Non-terminating function main (no dependencies) +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NON TERMINATING - NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + \nothing +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/raz.err.oracle b/tests/value/oracle_symblocs/raz.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/raz.res.oracle b/tests/value/oracle_symblocs/raz.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..29c816f619daeb9808f57f4aa4199fd2181638a7 --- /dev/null +++ b/tests/value/oracle_symblocs/raz.res.oracle @@ -0,0 +1,26 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/raz.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + h ∈ [--..--] +tests/value/raz.i:8:[value] entering loop for the first time +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + n ∈ {0; 10} + r ∈ {0; 1} + i ∈ [0..2147483647] +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + \result FROM h +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + n; tmp; r; i +[inout] Inputs for function main: + h diff --git a/tests/value/oracle_symblocs/reading_null.err.oracle b/tests/value/oracle_symblocs/reading_null.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/reading_null.res.oracle b/tests/value/oracle_symblocs/reading_null.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..daa447924d069582e7b14edcf9264fccad8d0e64 --- /dev/null +++ b/tests/value/oracle_symblocs/reading_null.res.oracle @@ -0,0 +1,43 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/reading_null.i (no preprocessing) +[value] Analyzing an incomplete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + AutoTest[0..999] ∈ [--..--] + X ∈ [--..--] + T[0] ∈ {{ NULL ; &S_0_T[0] }} + [1] ∈ {{ NULL ; &S_1_T[0] }} + X1 ∈ [--..--] + X2 ∈ [--..--] + X3 ∈ [--..--] + X4 ∈ [--..--] + X5 ∈ [--..--] + X6 ∈ [--..--] + X7 ∈ [--..--] + X8 ∈ [--..--] + X9 ∈ [--..--] + S_0_T[0..1] ∈ [--..--] + S_1_T[0..1] ∈ [--..--] +tests/value/reading_null.i:24:[value] entering loop for the first time +[value] Called Frama_C_show_each_F([-2147483648..2147483647], {0}) +[value] Called Frama_C_show_each_F([-2147483648..2147483647], {0; 1}) +[value] Called Frama_C_show_each_F([-2147483648..2147483647], {0; 1; 2}) +[value] Called Frama_C_show_each_F([-2147483648..2147483647], [0..9]) +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + X ∈ [--..--] + count ∈ {10} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + X FROM X1; X2; X3; X4; X5; X6; X7; X8; X9 (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + X; count +[inout] Inputs for function main: + X; X1; X2; X3; X4; X5; X6; X7; X8; X9 diff --git a/tests/value/oracle_symblocs/rec.err.oracle b/tests/value/oracle_symblocs/rec.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/rec.res.oracle b/tests/value/oracle_symblocs/rec.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..97eadad89320919e9b706cb0dc1619d30d8d3ea6 --- /dev/null +++ b/tests/value/oracle_symblocs/rec.res.oracle @@ -0,0 +1,23 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/rec.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + X ∈ {0} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + X +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/recol.0.err.oracle b/tests/value/oracle_symblocs/recol.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/recol.0.res.oracle b/tests/value/oracle_symblocs/recol.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..df2bf026fc6c4a28d8c642391548ed4ecda6bf6c --- /dev/null +++ b/tests/value/oracle_symblocs/recol.0.res.oracle @@ -0,0 +1,72 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/recol.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + s[0..99] ∈ {0} + c ∈ {0} + s_int ∈ {0} + p_int ∈ {0} + ones[0..7] ∈ {49} + [8] ∈ {0} + one23[0] ∈ {49} + [1..2] ∈ {50} + [3] ∈ {51} + [4] ∈ {0} + col_ones ∈ {0} + col_123 ∈ {0} +tests/value/recol.c:30:[value] warning: 2's complement assumed for overflow +tests/value/recol.c:47:[value] warning: 2's complement assumed for overflow +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + s[bits 0 to 15] ∈ {97} + [bits 16 to 47] ∈ {776} + [6] ∈ {-103} + [bits 56 to 71] ∈ {-26736} + [bits 72 to 103] ∈ {271697} + [13] ∈ {-104} + [bits 112 to 127] ∈ {10121} + [bits 128 to 159] ∈ {93197600} + [20] ∈ {65} + [21] ∈ {40} + [bits 176 to 191] ∈ {25465} + [bits 192 to 223] ∈ {429177008} + [bits 224 to 255] ∈ {-1290728143} + [bits 256 to 287] ∈ {-445162312} + [bits 288 to 303] ∈ {-30359} + [38] ∈ {64} + [bits 312 to 343] ∈ {1928155169} + [43] ∈ {72} + [44] ∈ {89} + [bits 360 to 391] ∈ {-67735088} + [bits 392 to 423] ∈ {-474145519} + [bits 424 to 439] ∈ {-13352} + [55] ∈ {73} + [bits 448 to 463] ∈ {1888} + [bits 464 to 495] ∈ {-257018879} + [bits 496 to 527] ∈ {-1799132056} + [66] ∈ {57} + [bits 536 to 551] ∈ {-15632} + [bits 552 to 583] ∈ {1373000945} + [bits 584 to 599] ∈ {21240} + [75] ∈ {41} + [76] ∈ {-128} + [77] ∈ {-31} + [bits 624 to 655] ∈ {-832127096} + [82] ∈ {25} + [83] ∈ {16} + [bits 672 to 703] ∈ {-1951746863} + [bits 704 to 735] ∈ {-777326056} + [bits 736 to 767] ∈ {-1146314999} + [bits 768 to 783] ∈ {22944} + [98..99] ∈ {0} + c ∈ {565729696} + s_int ∈ {-833811464} + p_int ∈ {{ (int *)&s[100] }} + col_ones ∈ {825307442} + col_123 ∈ {858927666} + p ∈ {{ &s[98] }} + __retres ∈ {0} diff --git a/tests/value/oracle_symblocs/recol.1.err.oracle b/tests/value/oracle_symblocs/recol.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/recol.1.res.oracle b/tests/value/oracle_symblocs/recol.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..5b0a8019647c4fb7f68ecb9fd4aeeacb6ff9f577 --- /dev/null +++ b/tests/value/oracle_symblocs/recol.1.res.oracle @@ -0,0 +1,72 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/recol.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + s[0..99] ∈ {0} + c ∈ {0} + s_int ∈ {0} + p_int ∈ {0} + ones[0..7] ∈ {49} + [8] ∈ {0} + one23[0] ∈ {49} + [1..2] ∈ {50} + [3] ∈ {51} + [4] ∈ {0} + col_ones ∈ {0} + col_123 ∈ {0} +tests/value/recol.c:30:[value] warning: 2's complement assumed for overflow +tests/value/recol.c:47:[value] warning: 2's complement assumed for overflow +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + s[bits 0 to 15] ∈ {97} + [bits 16 to 47] ∈ {776} + [6] ∈ {-103} + [bits 56 to 71] ∈ {-26736} + [bits 72 to 103] ∈ {271697} + [13] ∈ {-104} + [bits 112 to 127] ∈ {10121} + [bits 128 to 159] ∈ {93197600} + [20] ∈ {65} + [21] ∈ {40} + [bits 176 to 191] ∈ {25465} + [bits 192 to 223] ∈ {429177008} + [bits 224 to 255] ∈ {-1290728143} + [bits 256 to 287] ∈ {-445162312} + [bits 288 to 303] ∈ {-30359} + [38] ∈ {64} + [bits 312 to 343] ∈ {1928155169} + [43] ∈ {72} + [44] ∈ {89} + [bits 360 to 391] ∈ {-67735088} + [bits 392 to 423] ∈ {-474145519} + [bits 424 to 439] ∈ {-13352} + [55] ∈ {73} + [bits 448 to 463] ∈ {1888} + [bits 464 to 495] ∈ {-257018879} + [bits 496 to 527] ∈ {-1799132056} + [66] ∈ {57} + [bits 536 to 551] ∈ {-15632} + [bits 552 to 583] ∈ {1373000945} + [bits 584 to 599] ∈ {21240} + [75] ∈ {41} + [76] ∈ {-128} + [77] ∈ {-31} + [bits 624 to 655] ∈ {-832127096} + [82] ∈ {25} + [83] ∈ {16} + [bits 672 to 703] ∈ {-1951746863} + [bits 704 to 735] ∈ {-777326056} + [bits 736 to 767] ∈ {-1146314999} + [bits 768 to 783] ∈ {22944} + [98..99] ∈ {0} + c ∈ {565729696} + s_int ∈ {-1480071902} + p_int ∈ {{ (int *)&s[100] }} + col_ones ∈ {825307442} + col_123 ∈ {825373236} + p ∈ {{ &s[98] }} + __retres ∈ {0} diff --git a/tests/value/oracle_symblocs/recursion.0.err.oracle b/tests/value/oracle_symblocs/recursion.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/recursion.0.res.oracle b/tests/value/oracle_symblocs/recursion.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..d775461c75ade3c1ad86cff9bd99900ec6ebda84 --- /dev/null +++ b/tests/value/oracle_symblocs/recursion.0.res.oracle @@ -0,0 +1,24 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/recursion.i (no preprocessing) +[value] Analyzing an incomplete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + G ∈ [--..--] + x ∈ [--..--] + c ∈ [--..--] + s ∈ [--..--] + pg ∈ {{ NULL ; &S_pg[0] }} + S_pg[0..1] ∈ [--..--] +[value] computing for function ff <- main. + Called from tests/value/recursion.i:67. +tests/value/recursion.i:8:[value] warning: detected recursive call (ff <- ff :: tests/value/recursion.i:67 <- main) + Use -val-ignore-recursive-calls to ignore (beware this will make the analysis + unsound) +[value] user error: Degeneration occurred: + results are not correct for lines of code that can be reached from the degeneration point. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function ff: + NON TERMINATING FUNCTION +[value:final-states] Values at end of function main: + NON TERMINATING FUNCTION diff --git a/tests/value/oracle_symblocs/recursion.1.err.oracle b/tests/value/oracle_symblocs/recursion.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/recursion.1.res.oracle b/tests/value/oracle_symblocs/recursion.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..2a36df16032ca366af71c96558a357222fab6db7 --- /dev/null +++ b/tests/value/oracle_symblocs/recursion.1.res.oracle @@ -0,0 +1,19 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/recursion.i (no preprocessing) +[value] Analyzing an incomplete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + G ∈ [--..--] + x ∈ [--..--] + c ∈ [--..--] + s ∈ [--..--] + pg ∈ {{ NULL ; &S_pg[0] }} + S_pg[0..1] ∈ [--..--] +[value] computing for function ff <- main. + Called from tests/value/recursion.i:67. +tests/value/recursion.i:8:[value] warning: recursive call during value analysis + of ff (ff <- ff :: tests/value/recursion.i:67 <- main). + Using specification of ff. +tests/value/recursion.i:8:[value] user error: Recursive call to a function. +[kernel] Plug-in value aborted: invalid user input. diff --git a/tests/value/oracle_symblocs/recursion2.err.oracle b/tests/value/oracle_symblocs/recursion2.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/recursion2.res.oracle b/tests/value/oracle_symblocs/recursion2.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..3f59ff1356c99ae6185d5b8d17aee9aa7ee3fed2 --- /dev/null +++ b/tests/value/oracle_symblocs/recursion2.res.oracle @@ -0,0 +1,68 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/recursion2.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + x ∈ {0} + y ∈ {0} +[value] computing for function h2 <- main. + Called from tests/value/recursion2.i:21. +[value] computing for function h1 <- h2 <- main. + Called from tests/value/recursion2.i:17. +[value] Recording results for h1 +[value] Done for function h1 +[value] Recording results for h2 +[value] Done for function h2 +[value] computing for function h1 <- main. + Called from tests/value/recursion2.i:22. +[value] computing for function h2 <- h1 <- main. + Called from tests/value/recursion2.i:12. +[value] Recording results for h2 +[value] Done for function h2 +[value] Recording results for h1 +[value] Done for function h1 +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function h1: + r ∈ {0} + q ∈ {0} +[value:final-states] Values at end of function h2: + r ∈ {0} + q ∈ {0} +[value:final-states] Values at end of function main: + +[inout] Out (internal) for function h1: + r; q +[inout] Inputs for function h1: + x; y; i; j +[inout] InOut (internal) for function h1: + Operational inputs: + x; i + Operational inputs on termination: + x; i + Sure outputs: + r +[inout] Out (internal) for function h2: + r; q +[inout] Inputs for function h2: + x; y; i; j +[inout] InOut (internal) for function h2: + Operational inputs: + x; y; i; j + Operational inputs on termination: + x; y; i; j + Sure outputs: + q +[inout] Out (internal) for function main: + \nothing +[inout] Inputs for function main: + x; y +[inout] InOut (internal) for function main: + Operational inputs: + x; y; i; j + Operational inputs on termination: + x; y; i; j + Sure outputs: + r; q diff --git a/tests/value/oracle_symblocs/reduce_by_valid.err.oracle b/tests/value/oracle_symblocs/reduce_by_valid.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/reduce_by_valid.res.oracle b/tests/value/oracle_symblocs/reduce_by_valid.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..8e0a657c1c2b1d0bbd38c71828458f1f4bd57872 --- /dev/null +++ b/tests/value/oracle_symblocs/reduce_by_valid.res.oracle @@ -0,0 +1,314 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/reduce_by_valid.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + t[0..4] ∈ {0} + u[0..4] ∈ {0} + v ∈ [--..--] + sv ∈ [--..--] + vs ∈ {{ NULL ; &S_vs[0] }} + S_vs[0].f1 ∈ {{ NULL ; &S_f1_0_S_vs[0] }} + [1].f1 ∈ {{ NULL ; &S_f1_1_S_vs[0] }} + S_f1_0_S_vs[0..1] ∈ [--..--] + S_f1_1_S_vs[0..1] ∈ [--..--] +[value] computing for function main1 <- main. + Called from tests/value/reduce_by_valid.i:260. +tests/value/reduce_by_valid.i:14:[value] warning: assertion got status unknown. +tests/value/reduce_by_valid.i:17:[value] warning: assertion got status unknown. +[value] Recording results for main1 +[value] Done for function main1 +[value] computing for function main2 <- main. + Called from tests/value/reduce_by_valid.i:261. +tests/value/reduce_by_valid.i:29:[value] warning: assertion got status unknown. +tests/value/reduce_by_valid.i:31:[value] warning: assertion got status unknown. +tests/value/reduce_by_valid.i:33:[value] warning: assertion got status unknown. +tests/value/reduce_by_valid.i:35:[value] warning: assertion got status unknown. +[value] Recording results for main2 +[value] Done for function main2 +[value] computing for function main3 <- main. + Called from tests/value/reduce_by_valid.i:262. +tests/value/reduce_by_valid.i:48:[value] assertion got status valid. +tests/value/reduce_by_valid.i:49:[value] warning: assertion got status unknown. +[value] Recording results for main3 +[value] Done for function main3 +[value] computing for function main4 <- main. + Called from tests/value/reduce_by_valid.i:263. +tests/value/reduce_by_valid.i:54:[value] warning: assertion got status unknown. +tests/value/reduce_by_valid.i:55:[value] warning: assertion got status unknown. +tests/value/reduce_by_valid.i:57:[value] warning: assertion got status unknown. +tests/value/reduce_by_valid.i:59:[value] warning: assertion got status unknown. +[value] Recording results for main4 +[value] Done for function main4 +[value] computing for function main5 <- main. + Called from tests/value/reduce_by_valid.i:264. +tests/value/reduce_by_valid.i:72:[value] warning: locals {x} escaping the scope of a block of main5 through p +tests/value/reduce_by_valid.i:74:[value] assertion got status valid. +tests/value/reduce_by_valid.i:75:[value] assertion got status valid. +tests/value/reduce_by_valid.i:76:[value] assertion got status valid. +tests/value/reduce_by_valid.i:80:[value] assertion got status valid. +tests/value/reduce_by_valid.i:82:[value] assertion got status valid. +tests/value/reduce_by_valid.i:85:[value] warning: assertion got status unknown. +[value] Recording results for main5 +[value] Done for function main5 +[value] computing for function main6 <- main. + Called from tests/value/reduce_by_valid.i:265. +tests/value/reduce_by_valid.i:95:[value] warning: function main6: precondition got status unknown. +tests/value/reduce_by_valid.i:96:[value] warning: function main6: precondition got status unknown. +tests/value/reduce_by_valid.i:97:[value] warning: function main6: precondition got status unknown. +tests/value/reduce_by_valid.i:98:[value] function main6: precondition got status valid. +tests/value/reduce_by_valid.i:99:[value] warning: function main6: precondition got status unknown. +tests/value/reduce_by_valid.i:100:[value] function main6: precondition got status valid. +[value] Recording results for main6 +[value] Done for function main6 +[value] computing for function main7 <- main. + Called from tests/value/reduce_by_valid.i:266. +tests/value/reduce_by_valid.i:111:[value] assertion got status valid. +tests/value/reduce_by_valid.i:112:[value] assertion got status valid. +tests/value/reduce_by_valid.i:113:[value] assertion got status valid. +tests/value/reduce_by_valid.i:117:[value] assertion got status valid. +tests/value/reduce_by_valid.i:120:[value] warning: assertion got status unknown. +tests/value/reduce_by_valid.i:121:[value] assertion got status valid. +[value] Recording results for main7 +[value] Done for function main7 +[value] computing for function main8 <- main. + Called from tests/value/reduce_by_valid.i:267. +tests/value/reduce_by_valid.i:137:[value] warning: assertion got status unknown. +tests/value/reduce_by_valid.i:138:[value] assertion got status valid. +tests/value/reduce_by_valid.i:141:[value] warning: assertion got status unknown. +tests/value/reduce_by_valid.i:142:[value] assertion got status valid. +tests/value/reduce_by_valid.i:146:[value] warning: assertion got status unknown. +tests/value/reduce_by_valid.i:147:[value] warning: assertion got status unknown. +[value] Recording results for main8 +[value] Done for function main8 +[value] computing for function main9 <- main. + Called from tests/value/reduce_by_valid.i:268. +tests/value/reduce_by_valid.i:162:[value] warning: assertion got status unknown. +tests/value/reduce_by_valid.i:165:[value] assertion got status valid. +[value] Recording results for main9 +[value] Done for function main9 +[value] computing for function main10 <- main. + Called from tests/value/reduce_by_valid.i:269. +tests/value/reduce_by_valid.i:176:[value] warning: out of bounds write. assert \valid((int *)p); +[value] Called Frama_C_show_each_main10_1({{ &t_0 + [0..36] }}) +tests/value/reduce_by_valid.i:178:[value] assertion got status valid. +tests/value/reduce_by_valid.i:181:[value] warning: out of bounds write. assert \valid((int *)p+2); +[value] Called Frama_C_show_each_main10_2({{ &t_0 + [-8..28] }}) +tests/value/reduce_by_valid.i:183:[value] assertion got status valid. +tests/value/reduce_by_valid.i:186:[value] warning: out of bounds write. assert \valid((int *)(p+2)); +[value] Called Frama_C_show_each_main10_3({{ &t_0 + [-2..34] }}) +tests/value/reduce_by_valid.i:188:[value] assertion got status valid. +tests/value/reduce_by_valid.i:197:[value] warning: out of bounds write. assert \valid(&((struct s_1 *)p)->b); +[value] Called Frama_C_show_each_main10_4({{ &t_0 + [-4..32] }}) +tests/value/reduce_by_valid.i:200:[value] assertion got status valid. +tests/value/reduce_by_valid.i:203:[value] warning: out of bounds write. assert \valid(&((struct s_1 *)p+2)->b); +[value] Called Frama_C_show_each_main10_4({{ &t_0 + [-20..16] }}) +tests/value/reduce_by_valid.i:206:[value] assertion got status valid. +tests/value/reduce_by_valid.i:210:[value] warning: out of bounds write. assert \valid((char *)q); +[value] Called Frama_C_show_each({{ &u_0 + [0..79] }}) +tests/value/reduce_by_valid.i:213:[value] assertion got status valid. +tests/value/reduce_by_valid.i:216:[value] warning: out of bounds write. assert \valid((char *)q+2); +[value] Called Frama_C_show_each({{ &u_0 + [-2..77] }}) +tests/value/reduce_by_valid.i:219:[value] assertion got status valid. +[value] Recording results for main10 +[value] Done for function main10 +[value] computing for function main11 <- main. + Called from tests/value/reduce_by_valid.i:270. +tests/value/reduce_by_valid.i:228:[value] warning: assertion got status unknown. +[value] Called Frama_C_show_each({{ &TC + [10..410] }}) +tests/value/reduce_by_valid.i:231:[value] warning: assertion got status unknown. +tests/value/reduce_by_valid.i:237:[value] warning: assertion got status unknown. +[value] Called Frama_C_show_each({{ &TU + [40..1640],0%4 }}) +tests/value/reduce_by_valid.i:240:[value] warning: assertion got status unknown. +tests/value/reduce_by_valid.i:245:[value] warning: assertion got status unknown. +[value] Called Frama_C_show_each({{ &TU + [40..840] }}) +tests/value/reduce_by_valid.i:248:[value] warning: assertion got status unknown. +tests/value/reduce_by_valid.i:253:[value] warning: assertion got status unknown. +[value] Called Frama_C_show_each({{ &TC + [10..410],2%4 }}) +tests/value/reduce_by_valid.i:256:[value] warning: assertion got status unknown. +[value] Recording results for main11 +[value] Done for function main11 +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main1: + t[0..2] ∈ {0} + [3] ∈ {0; 1} + [4] ∈ {1} + p ∈ {{ &t{[0], [1]} }} + q ∈ {{ &t[1] }} +[value:final-states] Values at end of function main10: + t_0[0..39] ∈ [--..--] or UNINITIALIZED + p ∈ {{ &t_0 + [-20..16] }} + u_0[0..19]# ∈ {1} or UNINITIALIZED repeated %8 + q ∈ {{ &u_0 + [-2..77] }} +[value:final-states] Values at end of function main11: + p ∈ {{ &TU + [40..200] }} + off ∈ [0..100] + len ∈ [50..100] + q ∈ {{ &TC + [10..298],2%4 }} +[value:final-states] Values at end of function main2: + u[0].a ∈ {0; 1} + [0].b ∈ {0; 2; 4} + [1].a ∈ {0; 1; 3} + [1].b ∈ {0; 2; 4} + [2].a ∈ {0; 1; 3} + [2].b ∈ {0; 2; 4} + [3].a ∈ {0; 1; 3} + [3].b ∈ {0; 2; 4} + [4].a ∈ {0; 1; 3} + [4].b ∈ {0; 2} + p ∈ {{ &u{[0], [1], [2], [3], [4]} }} + q ∈ {{ (ts *)&u{[0].b, [1].b, [2].b, [3].b, [4].b} }} + r ∈ {{ (ts *)&u{[0].b, [1].b, [2].b, [3].b} }} + s ∈ {{ (ts *)&u{[0].b, [1].b, [2].b, [3].b} }} +[value:final-states] Values at end of function main3: + p ∈ {{ (int *)&t{[0], [1], [2], [3], [4]} }} + q ∈ {{ (int *)&c2 }} +[value:final-states] Values at end of function main4: + c1 ∈ [--..--] + c2 ∈ [--..--] + c3 ∈ [--..--] + c4 ∈ [--..--] + p ∈ {{ (int *)&t }} + q ∈ {{ &u[0] }} +[value:final-states] Values at end of function main5: + q ∈ {{ &y }} + p ∈ {0} + r ∈ {{ &y }} or UNINITIALIZED +[value:final-states] Values at end of function main6: + S_f1_0_S_vs[0] ∈ {1} + [1] ∈ [--..--] +[value:final-states] Values at end of function main7: + p ∈ {{ &t7_2 + [20..38996],0%4 }} +[value:final-states] Values at end of function main8: + tp[0] ∈ {{ &t8_1[0] }} + [1] ∈ {{ &t8_1 + [0..17179869180],0%4 }} + [2] ∈ {{ &t8_2 + [0..17179869180],0%4 }} + [3] ∈ {{ &t8_1 + [0..17179869180],0%4 ; &t8_2 + [0..17179869180],0%4 }} + p ∈ {{ &tp[0] }} +[value:final-states] Values at end of function main9: + tc[0..58] ∈ {1} or UNINITIALIZED + [59..98] ∈ UNINITIALIZED + [99..157] ∈ {2} or UNINITIALIZED + p ∈ {{ &tc + [-8..50] }} +[value:final-states] Values at end of function main: + t[0..2] ∈ {0} + [3] ∈ {0; 1} + [4] ∈ {1} + u[0].a ∈ {0; 1} + [0].b ∈ {0; 2; 4} + [1].a ∈ {0; 1; 3} + [1].b ∈ {0; 2; 4} + [2].a ∈ {0; 1; 3} + [2].b ∈ {0; 2; 4} + [3].a ∈ {0; 1; 3} + [3].b ∈ {0; 2; 4} + [4].a ∈ {0; 1; 3} + [4].b ∈ {0; 2} + S_f1_0_S_vs[0] ∈ {1} + [1] ∈ [--..--] +[from] Computing for function main1 +[from] Done for function main1 +[from] Computing for function main10 +[from] Done for function main10 +[from] Computing for function main11 +[from] Done for function main11 +[from] Computing for function main2 +[from] Done for function main2 +[from] Computing for function main3 +[from] Done for function main3 +[from] Computing for function main4 +[from] Done for function main4 +[from] Computing for function main5 +[from] Done for function main5 +[from] Computing for function main6 +[from] Done for function main6 +[from] Computing for function main7 +[from] Done for function main7 +[from] Computing for function main8 +[from] Done for function main8 +[from] Computing for function main9 +[from] Done for function main9 +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main1: + t[3] FROM v (and SELF) + [4] FROM v +[from] Function main10: + NO EFFECTS +[from] Function main11: + NO EFFECTS +[from] Function main2: + u[0..4] FROM v (and SELF) +[from] Function main3: + NO EFFECTS +[from] Function main4: + NO EFFECTS +[from] Function main5: + NO EFFECTS +[from] Function main6: + S_f1_0_S_vs[0] FROM p; S_vs[0] +[from] Function main7: + NO EFFECTS +[from] Function main8: + NO EFFECTS +[from] Function main9: + NO EFFECTS +[from] Function main: + t[3] FROM v (and SELF) + [4] FROM v + u[0..4] FROM v (and SELF) + S_f1_0_S_vs[0] FROM vs; S_vs[0] +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main1: + t[3..4]; p; q +[inout] Inputs for function main1: + v +[inout] Out (internal) for function main10: + t_0[0..39]; p; u_0[0..19]; q +[inout] Inputs for function main10: + sv +[inout] Out (internal) for function main11: + p; off; len; q +[inout] Inputs for function main11: + v +[inout] Out (internal) for function main2: + u[0..4]; p; q; r; s +[inout] Inputs for function main2: + v +[inout] Out (internal) for function main3: + p; q +[inout] Inputs for function main3: + \nothing +[inout] Out (internal) for function main4: + c1; c2; c3; c4; p; q +[inout] Inputs for function main4: + \nothing +[inout] Out (internal) for function main5: + q; p; r; x +[inout] Inputs for function main5: + v +[inout] Out (internal) for function main6: + S_f1_0_S_vs[0] +[inout] Inputs for function main6: + S_vs[0] +[inout] Out (internal) for function main7: + p +[inout] Inputs for function main7: + v +[inout] Out (internal) for function main8: + tp[0..3]; p +[inout] Inputs for function main8: + v +[inout] Out (internal) for function main9: + tc{[0..58]; [99..157]}; p +[inout] Inputs for function main9: + v +[inout] Out (internal) for function main: + t[3..4]; u[0..4]; S_f1_0_S_vs[0] +[inout] Inputs for function main: + v; sv; vs; S_vs[0] diff --git a/tests/value/oracle_symblocs/reduce_formals.err.oracle b/tests/value/oracle_symblocs/reduce_formals.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/reduce_formals.res.oracle b/tests/value/oracle_symblocs/reduce_formals.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..b7b0b7a74965d271d8170c4f4530dfd17d79007f --- /dev/null +++ b/tests/value/oracle_symblocs/reduce_formals.res.oracle @@ -0,0 +1,176 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/reduce_formals.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] computing for function main1 <- main. + Called from tests/value/reduce_formals.i:56. +tests/value/reduce_formals.i:2:[value] warning: assertion got status unknown. +tests/value/reduce_formals.i:5:[value] entering loop for the first time +[value] Recording results for main1 +[value] Done for function main1 +[value] computing for function main2 <- main. + Called from tests/value/reduce_formals.i:57. +[value] using specification for function main2 +tests/value/reduce_formals.i:8:[value] warning: function main2: precondition got status unknown. +[value] Done for function main2 +[value] DUMPING STATE of file tests/value/reduce_formals.i line 59 + v ∈ [--..--] + w ∈ [6..2147483647] + x ∈ [5..2147483647] + y ∈ [--..--] + z ∈ [8..2147483647] + =END OF DUMP== +[value] computing for function main3 <- main. + Called from tests/value/reduce_formals.i:62. +tests/value/reduce_formals.i:18:[value] assertion got status valid. +[value] computing for function f_main3 <- main3 <- main. + Called from tests/value/reduce_formals.i:19. +[value] Recording results for f_main3 +[value] Done for function f_main3 +[value] Called Frama_C_show_each({6}) +[value] Recording results for main3 +[value] Done for function main3 +[value] computing for function main4 <- main. + Called from tests/value/reduce_formals.i:63. +[value] computing for function f_main4_1 <- main4 <- main. + Called from tests/value/reduce_formals.i:33. +tests/value/reduce_formals.i:24:[value] warning: assertion got status unknown. +[value] Recording results for f_main4_1 +[value] Done for function f_main4_1 +[value] Called Frama_C_show_each_v([-2147483648..15]) +[value] computing for function f_main4_2 <- main4 <- main. + Called from tests/value/reduce_formals.i:36. +tests/value/reduce_formals.i:28:[value] warning: assertion got status unknown. +[value] Recording results for f_main4_2 +[value] Done for function f_main4_2 +[value] Called Frama_C_show_each_v([16..2147483647]) +[value] Recording results for main4 +[value] Done for function main4 +[value] computing for function main5 <- main. + Called from tests/value/reduce_formals.i:64. +[value] computing for function f_main_1 <- main5 <- main. + Called from tests/value/reduce_formals.i:52. +[value] computing for function f_main_2 <- f_main_1 <- main5 <- main. + Called from tests/value/reduce_formals.i:47. +[value] Recording results for f_main_2 +[value] Done for function f_main_2 +[value] Recording results for f_main_1 +[value] Done for function f_main_1 +[value] Recording results for main5 +[value] Done for function main5 +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f_main3: + x ∈ {6} +[value:final-states] Values at end of function f_main4_1: + +[value:final-states] Values at end of function f_main4_2: + +[value:final-states] Values at end of function f_main_2: + __retres ∈ {0} +[value:final-states] Values at end of function f_main_1: + v ∈ {0} +[value:final-states] Values at end of function main1: + j ∈ [-306783375..306783381] +[value:final-states] Values at end of function main3: + x ∈ {6} + p ∈ {{ &x }} +[value:final-states] Values at end of function main4: + +[value:final-states] Values at end of function main5: + l ∈ {2} +[value:final-states] Values at end of function main: + +[from] Computing for function f_main3 +[from] Done for function f_main3 +[from] Computing for function f_main4_1 +[from] Done for function f_main4_1 +[from] Computing for function f_main4_2 +[from] Done for function f_main4_2 +[from] Computing for function f_main_2 +[from] Done for function f_main_2 +[from] Computing for function f_main_1 +[from] Done for function f_main_1 +[from] Computing for function main1 +[from] Done for function main1 +[from] Computing for function main3 +[from] Done for function main3 +[from] Computing for function main4 +[from] Done for function main4 +[from] Computing for function main5 +[from] Done for function main5 +[from] Computing for function main +[from] Computing for function main2 <-main +[from] Done for function main2 +[from] Computing for function Frama_C_dump_each <-main +[from] Done for function Frama_C_dump_each +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f_main3: + x FROM p; a; x +[from] Function f_main4_1: + NO EFFECTS +[from] Function f_main4_2: + NO EFFECTS +[from] Function f_main_2: + \result FROM \nothing +[from] Function f_main_1: + NO EFFECTS +[from] Function main1: + NO EFFECTS +[from] Function main2: + NO EFFECTS +[from] Function main3: + NO EFFECTS +[from] Function main4: + NO EFFECTS +[from] Function main5: + NO EFFECTS +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f_main3: + x +[inout] Inputs for function f_main3: + x +[inout] Out (internal) for function f_main4_1: + \nothing +[inout] Inputs for function f_main4_1: + \nothing +[inout] Out (internal) for function f_main4_2: + \nothing +[inout] Inputs for function f_main4_2: + \nothing +[inout] Out (internal) for function f_main_2: + __retres +[inout] Inputs for function f_main_2: + \nothing +[inout] Out (internal) for function f_main_1: + v +[inout] Inputs for function f_main_1: + \nothing +[inout] Out (internal) for function main1: + j +[inout] Inputs for function main1: + \nothing +[inout] Out (internal) for function main3: + x; p +[inout] Inputs for function main3: + \nothing +[inout] Out (internal) for function main4: + \nothing +[inout] Inputs for function main4: + \nothing +[inout] Out (internal) for function main5: + l +[inout] Inputs for function main5: + \nothing +[inout] Out (internal) for function main: + \nothing +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/reduce_index.err.oracle b/tests/value/oracle_symblocs/reduce_index.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/reduce_index.res.oracle b/tests/value/oracle_symblocs/reduce_index.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..545bb04ef08caed13c1db1614250c41a07f19d0b --- /dev/null +++ b/tests/value/oracle_symblocs/reduce_index.res.oracle @@ -0,0 +1,451 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/reduce_index.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + t[0..9] ∈ {0} + u[0..10] ∈ {0} + maybe ∈ [--..--] + c1 ∈ [--..--] + c2 ∈ [--..--] + c3 ∈ [--..--] + c4 ∈ [--..--] + c5 ∈ [--..--] + c6 ∈ [--..--] + c7 ∈ [--..--] + c8 ∈ [--..--] + c9 ∈ [--..--] + c10 ∈ [--..--] + c11 ∈ [--..--] + c12 ∈ [--..--] + ts[0..9] ∈ {0} + p8 ∈ {0} + ti_4[0..3] ∈ {0} + ti_7[0..6] ∈ {0} + k1 ∈ [--..--] + k2 ∈ [--..--] + k3 ∈ [--..--] + k4 ∈ [--..--] + nulli ∈ [--..--] +[value] computing for function f1 <- main. + Called from tests/value/reduce_index.i:130. +[value] computing for function f1_aux <- f1 <- main. + Called from tests/value/reduce_index.i:11. +[value] Recording results for f1_aux +[value] Done for function f1_aux +tests/value/reduce_index.i:11:[value] warning: accessing out of bounds index. assert 0 ≤ c1; +tests/value/reduce_index.i:11:[value] warning: accessing out of bounds index. assert c1 < 10; +[value] Recording results for f1 +[value] Done for function f1 +[value] computing for function f2 <- main. + Called from tests/value/reduce_index.i:131. +tests/value/reduce_index.i:17:[value] warning: accessing out of bounds index. assert 0 ≤ c2; +tests/value/reduce_index.i:17:[value] warning: accessing out of bounds index. assert c2 < 10; +[value] Recording results for f2 +[value] Done for function f2 +[value] computing for function f3 <- main. + Called from tests/value/reduce_index.i:132. +tests/value/reduce_index.i:21:[value] warning: accessing out of bounds index. assert 0 ≤ c3; +tests/value/reduce_index.i:21:[value] warning: accessing out of bounds index. assert c3 < 10; +[value] Recording results for f3 +[value] Done for function f3 +[value] computing for function f4 <- main. + Called from tests/value/reduce_index.i:133. +tests/value/reduce_index.i:27:[value] warning: accessing out of bounds index. assert 0 ≤ c4; +tests/value/reduce_index.i:27:[value] warning: accessing out of bounds index. assert c4 < 10; +[value] Recording results for f4 +[value] Done for function f4 +[value] computing for function f5 <- main. + Called from tests/value/reduce_index.i:134. +tests/value/reduce_index.i:35:[value] warning: accessing out of bounds index. assert 0 ≤ c5; +tests/value/reduce_index.i:35:[value] warning: accessing out of bounds index. assert c5 < 10; +[value] Recording results for f5 +[value] Done for function f5 +[value] computing for function f6 <- main. + Called from tests/value/reduce_index.i:135. +tests/value/reduce_index.i:42:[value] warning: accessing out of bounds index. assert 0 ≤ c6; +tests/value/reduce_index.i:42:[value] warning: accessing out of bounds index. assert c6 < 11; +tests/value/reduce_index.i:42:[value] warning: accessing out of bounds index. assert c6 < 10; +[value] Recording results for f6 +[value] Done for function f6 +[value] computing for function f7 <- main. + Called from tests/value/reduce_index.i:136. +tests/value/reduce_index.i:48:[value] warning: accessing out of bounds index. assert 0 ≤ c7; +tests/value/reduce_index.i:48:[value] warning: accessing out of bounds index. assert c7 < 10; +[value] Recording results for f7 +[value] Done for function f7 +[value] computing for function f8 <- main. + Called from tests/value/reduce_index.i:137. +tests/value/reduce_index.i:64:[value] warning: out of bounds write. assert \valid(&p8->f1); +[value] Recording results for f8 +[value] Done for function f8 +[value] computing for function f9 <- main. + Called from tests/value/reduce_index.i:138. +tests/value/reduce_index.i:72:[value] warning: accessing out of bounds index. assert 0 ≤ c9; +tests/value/reduce_index.i:72:[value] warning: accessing out of bounds index. assert c9 < 10; +[value] Recording results for f9 +[value] Done for function f9 +[value] computing for function f10 <- main. + Called from tests/value/reduce_index.i:139. +tests/value/reduce_index.i:86:[value] warning: accessing out of bounds index. assert 0 ≤ c10; +tests/value/reduce_index.i:86:[value] warning: accessing out of bounds index. assert c10 < 7; +[value] Recording results for f10 +[value] Done for function f10 +[value] computing for function f11 <- main. + Called from tests/value/reduce_index.i:140. +tests/value/reduce_index.i:93:[value] warning: accessing out of bounds index. assert 0 ≤ c11; +tests/value/reduce_index.i:93:[value] warning: accessing out of bounds index. assert c11 < 7; +tests/value/reduce_index.i:93:[value] warning: out of bounds write. assert \valid(&(*p7)[c11]); +[value] Recording results for f11 +[value] Done for function f11 +[value] computing for function f12 <- main. + Called from tests/value/reduce_index.i:141. +tests/value/reduce_index.i:100:[value] warning: accessing out of bounds index. assert 0 ≤ c12; +tests/value/reduce_index.i:100:[value] warning: accessing out of bounds index. assert c12 < 4; +[value] Recording results for f12 +[value] Done for function f12 +[value] computing for function pointer_index <- main. + Called from tests/value/reduce_index.i:143. +tests/value/reduce_index.i:110:[value] warning: out of bounds read. assert \valid_read(p+k1); +tests/value/reduce_index.i:113:[value] warning: out of bounds read. assert \valid_read(p+k2); +tests/value/reduce_index.i:116:[value] warning: out of bounds read. assert \valid_read(p+k3); +tests/value/reduce_index.i:119:[value] warning: out of bounds read. assert \valid_read(p+k4); +[value] Recording results for pointer_index +[value] Done for function pointer_index +[value] computing for function null_index <- main. + Called from tests/value/reduce_index.i:144. +tests/value/reduce_index.i:126:[value] warning: out of bounds write. assert \valid((int *)0+nulli); +tests/value/reduce_index.i:126:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +[value] Recording results for null_index +[value] Done for function null_index +[value] Recording results for main +[value] done for function main +tests/value/reduce_index.i:126:[value] assertion 'Value,mem_access' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f10: + c10 ∈ {0; 1; 2; 3; 4; 5; 6} + ti_7[0..6] ∈ {0; 10} + p7 ∈ {{ &ti_7 }} +[value:final-states] Values at end of function f11: + c11 ∈ {0; 1; 2; 3} + ti_4[0..3] ∈ {0; 11} + p4 ∈ {{ &ti_4 }} + p7 ∈ {{ (ti7 *)&ti_4 }} +[value:final-states] Values at end of function f12: + c12 ∈ {0; 1; 2; 3} + ti_7[0..3] ∈ {0; 10; 12} + [4..6] ∈ {0; 10} + p7 ∈ {{ &ti_7 }} + p4 ∈ {{ (ti4 *)&ti_7 }} +[value:final-states] Values at end of function f1_aux: + __retres ∈ {1} +[value:final-states] Values at end of function f1: + t[0..9] ∈ {0; 1} + c1 ∈ [0..9] +[value:final-states] Values at end of function f2: + c2 ∈ [0..9] + __retres ∈ {0; 1} +[value:final-states] Values at end of function f3: + c3 ∈ [0..9] + __retres ∈ {0} +[value:final-states] Values at end of function f4: + c4 ∈ [0..9] + __retres ∈ {0} +[value:final-states] Values at end of function f5: + c5 ∈ [0..9] + c ∈ {0; 1} + __retres ∈ {0} +[value:final-states] Values at end of function f6: + t[0..9] ∈ {0; 1} + u[0..10] ∈ {0; 1} + c6 ∈ [0..9] +[value:final-states] Values at end of function f7: + t[0..9] ∈ {0; 1} + u[0..10] ∈ {0; 1} + c7 ∈ [0..9] +[value:final-states] Values at end of function f8: + c8 ∈ [--..--] + ts[0].f1 ∈ {0; 1} + [0].f2 ∈ {0; 2} + [1].f1 ∈ {0; 1} + [1].f2 ∈ {0; 2} + [2].f1 ∈ {0; 1} + [2].f2 ∈ {0; 2} + [3].f1 ∈ {0; 1} + [3].f2 ∈ {0; 2} + [4].f1 ∈ {0; 1} + [4].f2 ∈ {0; 2} + [5].f1 ∈ {0; 1} + [5].f2 ∈ {0; 2} + [6].f1 ∈ {0; 1} + [6].f2 ∈ {0; 2} + [7].f1 ∈ {0; 1} + [7].f2 ∈ {0; 2} + [8].f1 ∈ {0; 1} + [8].f2 ∈ {0; 2} + [9].f1 ∈ {0; 1} + [9].f2 ∈ {0; 2} + p8 ∈ {{ &ts + [0..72],0%8 }} + __retres ∈ {0} +[value:final-states] Values at end of function f9: + c9 ∈ [0..9] + ts[0].f1 ∈ {0; 1} + [0].f2 ∈ {0; 2} + [1].f1 ∈ {0; 1} + [1].f2 ∈ {0; 2} + [2].f1 ∈ {0; 1} + [2].f2 ∈ {0; 2} + [3].f1 ∈ {0; 1} + [3].f2 ∈ {0; 2} + [4].f1 ∈ {0; 1} + [4].f2 ∈ {0; 2} + [5].f1 ∈ {0; 1} + [5].f2 ∈ {0; 2} + [6].f1 ∈ {0; 1} + [6].f2 ∈ {0; 2} + [7].f1 ∈ {0; 1} + [7].f2 ∈ {0; 2} + [8].f1 ∈ {0; 1} + [8].f2 ∈ {0; 2} + [9].f1 ∈ {0; 1} + [9].f2 ∈ {0; 2} + __retres ∈ {0} +[value:final-states] Values at end of function null_index: + NON TERMINATING FUNCTION +[value:final-states] Values at end of function pointer_index: + k1 ∈ [0..10] + k2 ∈ [-1..8] + k3 ∈ [-2..7] + k4 ∈ [-3..7] + p ∈ {{ &u[3] }} + l ∈ {0; 1} +[value:final-states] Values at end of function main: + t[0..9] ∈ {0; 1} + u[0..10] ∈ {0; 1} + c1 ∈ [0..9] + c2 ∈ [0..9] + c3 ∈ [0..9] + c4 ∈ [0..9] + c5 ∈ [0..9] + c6 ∈ [0..9] + c7 ∈ [0..9] + c8 ∈ [--..--] + c9 ∈ [0..9] + c10 ∈ {0; 1; 2; 3; 4; 5; 6} + c11 ∈ {0; 1; 2; 3} + c12 ∈ {0; 1; 2; 3} + ts[0].f1 ∈ {0; 1} + [0].f2 ∈ {0; 2} + [1].f1 ∈ {0; 1} + [1].f2 ∈ {0; 2} + [2].f1 ∈ {0; 1} + [2].f2 ∈ {0; 2} + [3].f1 ∈ {0; 1} + [3].f2 ∈ {0; 2} + [4].f1 ∈ {0; 1} + [4].f2 ∈ {0; 2} + [5].f1 ∈ {0; 1} + [5].f2 ∈ {0; 2} + [6].f1 ∈ {0; 1} + [6].f2 ∈ {0; 2} + [7].f1 ∈ {0; 1} + [7].f2 ∈ {0; 2} + [8].f1 ∈ {0; 1} + [8].f2 ∈ {0; 2} + [9].f1 ∈ {0; 1} + [9].f2 ∈ {0; 2} + p8 ∈ {{ &ts + [0..72],0%8 }} + ti_4[0..3] ∈ {0; 11} + ti_7[0..3] ∈ {0; 10; 12} + [4..6] ∈ {0; 10} + k1 ∈ [0..10] + k2 ∈ [-1..8] + k3 ∈ [-2..7] + k4 ∈ [-3..7] +[from] Computing for function f10 +[from] Done for function f10 +[from] Computing for function f11 +[from] Done for function f11 +[from] Computing for function f12 +[from] Done for function f12 +[from] Computing for function f1_aux +[from] Done for function f1_aux +[from] Computing for function f1 +[from] Done for function f1 +[from] Computing for function f2 +[from] Done for function f2 +[from] Computing for function f3 +[from] Done for function f3 +[from] Computing for function f4 +[from] Done for function f4 +[from] Computing for function f5 +[from] Done for function f5 +[from] Computing for function f6 +[from] Done for function f6 +[from] Computing for function f7 +[from] Done for function f7 +[from] Computing for function f8 +[from] Done for function f8 +[from] Computing for function f9 +[from] Done for function f9 +[from] Computing for function null_index +[from] Non-terminating function null_index (no dependencies) +[from] Done for function null_index +[from] Computing for function pointer_index +[from] Done for function pointer_index +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f10: + c10 FROM c10 + ti_7[0..6] FROM c10 (and SELF) +[from] Function f11: + c11 FROM c11 + ti_4[0..3] FROM c11 (and SELF) +[from] Function f12: + c12 FROM c12 + ti_7[0..3] FROM c12 (and SELF) +[from] Function f1_aux: + \result FROM \nothing +[from] Function f1: + t[0..9] FROM c1 (and SELF) + c1 FROM c1 +[from] Function f2: + c2 FROM c2 + \result FROM t[0..9]; c2 +[from] Function f3: + c3 FROM c3 + \result FROM \nothing +[from] Function f4: + c4 FROM c4 + \result FROM \nothing +[from] Function f5: + c5 FROM c5 + \result FROM \nothing +[from] Function f6: + t[0..9] FROM t[0..9]; u[0..9]; c6 (and SELF) + u[0..10] FROM t[0..9]; c6 (and SELF) + c6 FROM c6 +[from] Function f7: + t[0..9] FROM u[0..10]; c7 (and SELF) + u[0..9] FROM t[0..9]; u[0..10]; c7 (and SELF) + c7 FROM c7 +[from] Function f8: + c8 FROM c8 + ts[0..9] FROM c8 (and SELF) + p8 FROM c8 + \result FROM \nothing +[from] Function f9: + c9 FROM c9 + ts{[0].f1; [1].f1; [2].f1; [3].f1; [4].f1; [5].f1; [6].f1; [7].f1; [8].f1; + [9].f1} + FROM c9 (and SELF) + \result FROM \nothing +[from] Function null_index: + NON TERMINATING - NO EFFECTS +[from] Function pointer_index: + k1 FROM k1 + k2 FROM k2 + k3 FROM k3 + k4 FROM k4 +[from] Function main: + t[0..9] FROM t[0..9]; u[0..10]; c1; c6; c7 (and SELF) + u[0..9] FROM t[0..9]; u[0..10]; c1; c6; c7 (and SELF) + [10] FROM t[0..9]; c1; c6 (and SELF) + c1 FROM c1 + c2 FROM c2 + c3 FROM c3 + c4 FROM c4 + c5 FROM c5 + c6 FROM c6 + c7 FROM c7 + c8 FROM c8 + c9 FROM c9 + c10 FROM c10 + c11 FROM c11 + c12 FROM c12 + ts{[0].f1; [1].f1; [2].f1; [3].f1; [4].f1; [5].f1; [6].f1; [7].f1; [8].f1; + [9].f1} + FROM c8; c9 (and SELF) + {[0].f2; [1].f2; [2].f2; [3].f2; [4].f2; [5].f2; [6].f2; [7].f2; [8].f2; + [9].f2} + FROM c8 (and SELF) + p8 FROM c8 + ti_4[0..3] FROM c11 (and SELF) + ti_7[0..3] FROM c10; c12 (and SELF) + [4..6] FROM c10 (and SELF) + k1 FROM k1 + k2 FROM k2 + k3 FROM k3 + k4 FROM k4 +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f10: + c10; ti_7[0..6]; p7 +[inout] Inputs for function f10: + c10 +[inout] Out (internal) for function f11: + c11; ti_4[0..3]; p4; p7 +[inout] Inputs for function f11: + c11 +[inout] Out (internal) for function f12: + c12; ti_7[0..3]; p7; p4 +[inout] Inputs for function f12: + c12 +[inout] Out (internal) for function f1_aux: + __retres +[inout] Inputs for function f1_aux: + \nothing +[inout] Out (internal) for function f1: + t[0..9]; c1 +[inout] Inputs for function f1: + c1 +[inout] Out (internal) for function f2: + c2; __retres +[inout] Inputs for function f2: + t[0..9]; c2 +[inout] Out (internal) for function f3: + c3; tmp; __retres +[inout] Inputs for function f3: + t[0..9]; c3 +[inout] Out (internal) for function f4: + c4; x; __retres +[inout] Inputs for function f4: + t[0..9]; c4 +[inout] Out (internal) for function f5: + c5; c; __retres +[inout] Inputs for function f5: + t[0..9]; c5 +[inout] Out (internal) for function f6: + t[0..9]; u[0..10]; c6 +[inout] Inputs for function f6: + t[0..9]; u[0..9]; c6 +[inout] Out (internal) for function f7: + t[0..9]; u[0..9]; c7 +[inout] Inputs for function f7: + t[0..9]; u[0..10]; c7 +[inout] Out (internal) for function f8: + c8; ts[0..9]; p8; __retres +[inout] Inputs for function f8: + c8; p8 +[inout] Out (internal) for function f9: + c9; + ts{[0].f1; [1].f1; [2].f1; [3].f1; [4].f1; [5].f1; [6].f1; [7].f1; [8].f1; + [9].f1}; __retres +[inout] Inputs for function f9: + c9 +[inout] Out (internal) for function null_index: + \nothing +[inout] Inputs for function null_index: + nulli +[inout] Out (internal) for function pointer_index: + k1; k2; k3; k4; p; l +[inout] Inputs for function pointer_index: + u[0..10]; k1; k2; k3; k4 +[inout] Out (internal) for function main: + t[0..9]; u[0..10]; c1; c2; c3; c4; c5; c6; c7; c8; c9; c10; c11; c12; + ts[0..9]; p8; ti_4[0..3]; ti_7[0..6]; k1; k2; k3; k4 +[inout] Inputs for function main: + t[0..9]; u[0..10]; maybe; c1; c2; c3; c4; c5; c6; c7; c8; c9; c10; + c11; c12; p8; k1; k2; k3; k4; nulli diff --git a/tests/value/oracle_symblocs/reduce_valid.err.oracle b/tests/value/oracle_symblocs/reduce_valid.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/reduce_valid.res.oracle b/tests/value/oracle_symblocs/reduce_valid.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..9527fbea71a30b150eb5c45fb85c3894c3863f73 --- /dev/null +++ b/tests/value/oracle_symblocs/reduce_valid.res.oracle @@ -0,0 +1,51 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/reduce_valid.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + t[0..1] ∈ {0} + u[0..1] ∈ {0} + p ∈ {0} + q ∈ {0} + r ∈ {0} + A ∈ {0} + offs ∈ {0} +tests/value/reduce_valid.i:9:[value] warning: out of bounds write. assert \valid(p); +[value] Called Frama_C_show_each_ici({0}) +tests/value/reduce_valid.i:17:[value] warning: out of bounds write. assert \valid(q); +tests/value/reduce_valid.i:17:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +tests/value/reduce_valid.i:24:[value] warning: out of bounds read. assert \valid_read(r+offs); +[value] Called Frama_C_show_each_r({{ &t }}) +tests/value/reduce_valid.i:26:[value] warning: accessing out of bounds index. assert (int)((int)h+1) < 2; +[value] Recording results for main +[value] done for function main +tests/value/reduce_valid.i:17:[value] assertion 'Value,mem_access' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + t[0] ∈ {4} + [1] ∈ {3} + u[0] ∈ {0} + [1] ∈ {1} + p ∈ {{ &t[0] }} + q ∈ {0} + r ∈ {{ &t[0] }} + A ∈ {3} + offs ∈ {1} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + t[0..1] FROM c + u[1] FROM h + p FROM c + q FROM \nothing + r FROM e; f + A FROM c; e; f; g + offs FROM g +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + t[0..1]; u[1]; p; q; r; A; offs; tmp +[inout] Inputs for function main: + t[1]; p; q; r; offs diff --git a/tests/value/oracle_symblocs/redundant_alarms.err.oracle b/tests/value/oracle_symblocs/redundant_alarms.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/redundant_alarms.res.oracle b/tests/value/oracle_symblocs/redundant_alarms.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..4a7f0a95b469efd0de48495fdd687d7a2ae21d38 --- /dev/null +++ b/tests/value/oracle_symblocs/redundant_alarms.res.oracle @@ -0,0 +1,165 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/redundant_alarms.c (with preprocessing) +[slicing] slicing requests in progress... +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + v ∈ [--..--] +[value] computing for function main1 <- main. + Called from tests/value/redundant_alarms.c:50. +tests/value/redundant_alarms.c:15:[value] warning: accessing uninitialized left-value. assert \initialized(p); +[value] Recording results for main1 +[value] Done for function main1 +[value] computing for function main2 <- main. + Called from tests/value/redundant_alarms.c:51. +tests/value/redundant_alarms.c:20:[value] warning: accessing out of bounds index. assert 0 ≤ i; +tests/value/redundant_alarms.c:20:[value] warning: accessing out of bounds index. assert i < 10; +[value] Recording results for main2 +[value] Done for function main2 +[value] computing for function main3 <- main. + Called from tests/value/redundant_alarms.c:52. +tests/value/redundant_alarms.c:25:[value] warning: function main3: precondition got status unknown. +tests/value/redundant_alarms.c:31:[value] warning: accessing uninitialized left-value. assert \initialized(&t[i]); +tests/value/redundant_alarms.c:31:[value] warning: accessing uninitialized left-value. assert \initialized(&t[j]); +[value] Recording results for main3 +[value] Done for function main3 +[value] computing for function main4 <- main. + Called from tests/value/redundant_alarms.c:53. +tests/value/redundant_alarms.c:39:[value] entering loop for the first time +tests/value/redundant_alarms.c:41:[value] warning: assertion got status unknown. +[value] Recording results for main4 +[value] Done for function main4 +[value] Recording results for main +[value] done for function main +tests/value/redundant_alarms.c:15:[value] assertion 'Value,initialisation' got final status invalid. +[slicing] making slicing project 'Slicing'... +[slicing] interpreting slicing requests from the command line... +[pdg] computing for function main1 +[pdg] done for function main1 +[slicing] applying all slicing requests... +[slicing] applying 0 actions... +[slicing] applying all slicing requests... +[slicing] applying 1 actions... +[slicing] applying actions: 1/1... +[pdg] computing for function main +[from] Computing for function main1 +[from] Done for function main1 +[from] Computing for function main2 +[from] Done for function main2 +[from] Computing for function main3 +[from] Done for function main3 +[from] Computing for function main4 +[from] Non-terminating function main4 (no dependencies) +[from] Done for function main4 +[pdg] done for function main +[slicing] exporting project to 'Slicing export'... +[slicing] applying all slicing requests... +[slicing] applying 0 actions... +[sparecode] remove unused global declarations from project 'Slicing export tmp' +[sparecode] removed unused global declarations in new project 'Slicing export' +/* Generated by Frama-C */ +int volatile v; +void main1(int c) +{ + int x; + int y; + int t; + int *p; + int *tmp; + int z; + int w; + if (c) tmp = & x; else tmp = & y; + p = tmp; + *p = 1; + z = *p + 1; + w = *p + 2; + x = t; + y = t; + x = t; + if (v) + /*@ assert Value: initialisation: \initialized(p); */ + z = *p + 2; + return; +} + +void main2(int i) +{ + int t[10]; + /*@ assert Value: index_bound: 0 ≤ i; */ + /*@ assert Value: index_bound: i < 10; */ + t[i] = 1; + t[i] += 3; + t[i] += 5; + return; +} + +/*@ requires i < 10 ∧ j < 10; */ +void main3(unsigned int i, unsigned int j) +{ + int t[10]; + if (v) t[i] = v; + /*@ assert Value: initialisation: \initialized(&t[i]); */ + /*@ assert Value: initialisation: \initialized(&t[j]); */ + if (t[i] < t[j]) { + int tmp; + tmp = t[j]; + t[j] = t[i]; + t[i] = tmp; + } + return; +} + +void main4(int i) +{ + while (1) { + { + int j; + int k; + int z; + int w; + j = 0; + /*@ assert i ≤ 0; */ ; + k = 0; + z = 0; + w = 0; + } + } + return; +} + +void main(void) +{ + if (v) main1(v); + main2(v); + main3((unsigned int)v,(unsigned int)v); + if (v) main4(v); + return; +} + + +/* Generated by Frama-C */ +int volatile v; +void main1_slice_1(int c) +{ + int x; + int y; + int t; + int *p; + int *tmp; + int z; + if (c) tmp = & x; else tmp = & y; + p = tmp; + y = t; + x = t; + if (v) z = *p + 2; + return; +} + +void main(void) +{ + if (v) main1_slice_1(v); + return; +} + + diff --git a/tests/value/oracle_symblocs/reevaluate_alarms.err.oracle b/tests/value/oracle_symblocs/reevaluate_alarms.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/reevaluate_alarms.res.oracle b/tests/value/oracle_symblocs/reevaluate_alarms.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..47d043cda56fd784aa6137548f8791b5175e4dba --- /dev/null +++ b/tests/value/oracle_symblocs/reevaluate_alarms.res.oracle @@ -0,0 +1,289 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/reevaluate_alarms.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + S ∈ {0} + T[0..4] ∈ {0} + n ∈ {1} +[value] computing for function loop <- main. + Called from tests/value/reevaluate_alarms.i:34. +tests/value/reevaluate_alarms.i:13:[value] entering loop for the first time +tests/value/reevaluate_alarms.i:14:[value] warning: signed overflow. assert S+i ≤ 2147483647; +tests/value/reevaluate_alarms.i:14:[value] warning: out of bounds write. assert \valid(tmp); + (tmp from p++) +[value] Recording results for loop +[value] Done for function loop +[value] computing for function compute_n <- main. + Called from tests/value/reevaluate_alarms.i:36. +tests/value/reevaluate_alarms.i:19:[value] entering loop for the first time +tests/value/reevaluate_alarms.i:20:[value] warning: signed overflow. assert n*i ≤ 2147483647; +[value] Recording results for compute_n +[value] Done for function compute_n +[value] computing for function init_p <- main. + Called from tests/value/reevaluate_alarms.i:40. +[value] Recording results for init_p +[value] Done for function init_p +[value] computing for function initialized_p <- main. + Called from tests/value/reevaluate_alarms.i:41. +tests/value/reevaluate_alarms.i:30:[value] warning: accessing uninitialized left-value. assert \initialized(p); +[value] Recording results for initialized_p +[value] Done for function initialized_p +[value] computing for function init_p <- main. + Called from tests/value/reevaluate_alarms.i:43. +[value] Recording results for init_p +[value] Done for function init_p +[value] computing for function initialized_p <- main. + Called from tests/value/reevaluate_alarms.i:44. +[value] Recording results for initialized_p +[value] Done for function initialized_p +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function compute_n: + n ∈ [1..2147483647] + i ∈ {6} +[value:final-states] Values at end of function init_p: + x ∈ {0} or UNINITIALIZED + y ∈ {0} or UNINITIALIZED +[value:final-states] Values at end of function initialized_p: + x ∈ {1} +[value:final-states] Values at end of function loop: + S ∈ [0..2147483647] + T[0..4] ∈ [0..2147483647] + i ∈ {5} + p ∈ {{ &T + [0..--],0%4 }} +[value:final-states] Values at end of function main: + S ∈ [0..2147483647] + T[0..4] ∈ [0..2147483647] + n ∈ [1..2147483647] + x ∈ {0} + y ∈ {0} + __retres ∈ {0} +[from] Computing for function compute_n +[from] Done for function compute_n +[from] Computing for function init_p +[from] Done for function init_p +[from] Computing for function initialized_p +[from] Done for function initialized_p +[from] Computing for function loop +[from] Done for function loop +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function compute_n: + n FROM n (and SELF) +[from] Function init_p: + x FROM n; p (and SELF) + y FROM n; p (and SELF) +[from] Function initialized_p: + NO EFFECTS +[from] Function loop: + S FROM S (and SELF) + T[0..4] FROM S (and SELF) + \result FROM S +[from] Function main: + S FROM S (and SELF) + T[0..4] FROM S (and SELF) + n FROM n (and SELF) + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function compute_n: + n; i +[inout] Inputs for function compute_n: + n +[inout] Out (internal) for function init_p: + x; y +[inout] Inputs for function init_p: + n +[inout] Out (internal) for function initialized_p: + x +[inout] Inputs for function initialized_p: + x; y +[inout] Out (internal) for function loop: + S; T[0..4]; i; p; tmp +[inout] Inputs for function loop: + S +[inout] Out (internal) for function main: + S; T[0..4]; n; x; y; __retres +[inout] Inputs for function main: + S; n +[report] Computing properties status... + +-------------------------------------------------------------------------------- +--- Properties of Function 'loop' +-------------------------------------------------------------------------------- + +[ - ] Assertion 'Value,signed_overflow' (file tests/value/reevaluate_alarms.i, line 14) + tried with Value. +[ - ] Assertion 'Value,mem_access' (file tests/value/reevaluate_alarms.i, line 14) + tried with Value. + +-------------------------------------------------------------------------------- +--- Properties of Function 'compute_n' +-------------------------------------------------------------------------------- + +[ - ] Assertion 'Value,signed_overflow' (file tests/value/reevaluate_alarms.i, line 20) + tried with Value. + +-------------------------------------------------------------------------------- +--- Properties of Function 'initialized_p' +-------------------------------------------------------------------------------- + +[ - ] Assertion 'Value,initialisation' (file tests/value/reevaluate_alarms.i, line 30) + tried with Value. + +-------------------------------------------------------------------------------- +--- Status Report Summary +-------------------------------------------------------------------------------- + 4 To be validated + 4 Total +-------------------------------------------------------------------------------- +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + S ∈ {0} + T[0..4] ∈ {0} + n ∈ {1} +[value] computing for function loop <- main. + Called from tests/value/reevaluate_alarms.i:34. +[value] Recording results for loop +[value] Done for function loop +[value] computing for function compute_n <- main. + Called from tests/value/reevaluate_alarms.i:36. +[value] Recording results for compute_n +[value] Done for function compute_n +[value] computing for function init_p <- main. + Called from tests/value/reevaluate_alarms.i:40. +[value] Recording results for init_p +[value] Done for function init_p +[value] computing for function initialized_p <- main. + Called from tests/value/reevaluate_alarms.i:41. +[value] Recording results for initialized_p +[value] Done for function initialized_p +[value] computing for function init_p <- main. + Called from tests/value/reevaluate_alarms.i:43. +[value] Recording results for init_p +[value] Done for function init_p +[value] computing for function initialized_p <- main. + Called from tests/value/reevaluate_alarms.i:44. +[value] Recording results for initialized_p +[value] Done for function initialized_p +[value] Recording results for main +[value] done for function main +tests/value/reevaluate_alarms.i:14:[value] assertion 'Value,signed_overflow' got final status valid. +tests/value/reevaluate_alarms.i:14:[value] assertion 'Value,mem_access' got final status valid. +tests/value/reevaluate_alarms.i:20:[value] assertion 'Value,signed_overflow' got final status valid. +tests/value/reevaluate_alarms.i:30:[value] assertion 'Value,initialisation' got final status valid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function compute_n: + n ∈ {120} + i ∈ {6} +[value:final-states] Values at end of function init_p: + x ∈ {0} + y ∈ {0} or UNINITIALIZED +[value:final-states] Values at end of function initialized_p: + x ∈ {1} +[value:final-states] Values at end of function loop: + S ∈ {10} + T[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {3} + [3] ∈ {6} + [4] ∈ {10} + i ∈ {5} + p ∈ {{ &T[5] }} +[value:final-states] Values at end of function main: + S ∈ {10} + T[0] ∈ {0} + [1] ∈ {1} + [2] ∈ {3} + [3] ∈ {6} + [4] ∈ {10} + n ∈ {120} + x ∈ {0} + y ∈ {0} + __retres ∈ {0} +[from] Computing for function compute_n +[from] Done for function compute_n +[from] Computing for function init_p +[from] Done for function init_p +[from] Computing for function initialized_p +[from] Done for function initialized_p +[from] Computing for function loop +[from] Done for function loop +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function compute_n: + n FROM n (and SELF) +[from] Function init_p: + x FROM n; p (and SELF) + y FROM n; p (and SELF) +[from] Function initialized_p: + NO EFFECTS +[from] Function loop: + S FROM S (and SELF) + T[0..4] FROM S (and SELF) + \result FROM S +[from] Function main: + S FROM S (and SELF) + T[0..4] FROM S (and SELF) + n FROM n (and SELF) + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function compute_n: + n; i +[inout] Inputs for function compute_n: + n +[inout] Out (internal) for function init_p: + x; y +[inout] Inputs for function init_p: + n +[inout] Out (internal) for function initialized_p: + x +[inout] Inputs for function initialized_p: + x; y +[inout] Out (internal) for function loop: + S; T[0..4]; i; p; tmp +[inout] Inputs for function loop: + S +[inout] Out (internal) for function main: + S; T[0..4]; n; x; y; __retres +[inout] Inputs for function main: + S; n +[report] Computing properties status... + +-------------------------------------------------------------------------------- +--- Properties of Function 'loop' +-------------------------------------------------------------------------------- + +[ Valid ] Assertion 'Value,signed_overflow' (file tests/value/reevaluate_alarms.i, line 14) + by Value (v2). +[ Valid ] Assertion 'Value,mem_access' (file tests/value/reevaluate_alarms.i, line 14) + by Value (v2). + +-------------------------------------------------------------------------------- +--- Properties of Function 'compute_n' +-------------------------------------------------------------------------------- + +[ Valid ] Assertion 'Value,signed_overflow' (file tests/value/reevaluate_alarms.i, line 20) + by Value (v2). + +-------------------------------------------------------------------------------- +--- Properties of Function 'initialized_p' +-------------------------------------------------------------------------------- + +[ Valid ] Assertion 'Value,initialisation' (file tests/value/reevaluate_alarms.i, line 30) + by Value (v2). + +-------------------------------------------------------------------------------- +--- Status Report Summary +-------------------------------------------------------------------------------- + 4 Completely validated + 4 Total +-------------------------------------------------------------------------------- diff --git a/tests/value/oracle_symblocs/relation_reduction.err.oracle b/tests/value/oracle_symblocs/relation_reduction.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/relation_reduction.res.oracle b/tests/value/oracle_symblocs/relation_reduction.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..9c06e296dee8588fb2a232777ed0f2ef9098b762 --- /dev/null +++ b/tests/value/oracle_symblocs/relation_reduction.res.oracle @@ -0,0 +1,51 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/relation_reduction.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + y ∈ {0} + t ∈ {0} + R1 ∈ {0} + R2 ∈ {0} + R3 ∈ {0} + R4 ∈ {0} + c ∈ {0} + tab[0] ∈ {101} + [1] ∈ {102} + [2] ∈ {103} + [3] ∈ {104} + [4] ∈ {105} + [5] ∈ {106} + [6] ∈ {103} + [7] ∈ {102} + [8] ∈ {101} +tests/value/relation_reduction.i:9:[value] warning: signed overflow. assert y+10 ≤ 2147483647; +tests/value/relation_reduction.i:20:[value] warning: accessing out of bounds index. assert 0 ≤ y; +tests/value/relation_reduction.i:20:[value] warning: accessing out of bounds index. assert y < 9; +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + y ∈ [-2147483648..2147483637] + t ∈ [-2147483638..2147483647] + R1 ∈ [-2147483648..2147483637] + R2 ∈ [-2147483638..2147483647] + R3 ∈ [--..--] + R4 ∈ {0; 1; 2; 3; 4; 5} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + y FROM x + t FROM x + R1 FROM x (and SELF) + R2 FROM x (and SELF) + R3 FROM x (and SELF) + R4 FROM tab[0..8]; x (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + y; t; R1; R2; R3; R4 +[inout] Inputs for function main: + y; t; tab[0..8] diff --git a/tests/value/oracle_symblocs/relation_shift.err.oracle b/tests/value/oracle_symblocs/relation_shift.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/relation_shift.res.oracle b/tests/value/oracle_symblocs/relation_shift.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..8206eab9a8babe3f8b2506349bd7020522da65b1 --- /dev/null +++ b/tests/value/oracle_symblocs/relation_shift.res.oracle @@ -0,0 +1,67 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/relation_shift.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + r1 ∈ {0} + r2 ∈ {0} + r3 ∈ {0} + r4 ∈ {0} +tests/value/relation_shift.i:5:[value] warning: signed overflow. assert x+1 ≤ 2147483647; +tests/value/relation_shift.i:6:[value] warning: signed overflow. assert -2147483648 ≤ y-1; +tests/value/relation_shift.i:11:[value] warning: signed overflow. assert z+t ≤ 2147483647; +tests/value/relation_shift.i:12:[value] warning: out of bounds write. assert \valid(q); +tests/value/relation_shift.i:15:[value] warning: signed overflow. assert -2147483648 ≤ x-y; +tests/value/relation_shift.i:15:[value] warning: signed overflow. assert x-y ≤ 2147483647; +tests/value/relation_shift.i:16:[value] warning: signed overflow. assert -2147483648 ≤ z-y; +tests/value/relation_shift.i:16:[value] warning: signed overflow. assert z-y ≤ 2147483647; +tests/value/relation_shift.i:18:[value] warning: out of bounds read. assert \valid_read(q); +[value] DUMPING STATE of file tests/value/relation_shift.i line 19 + r1 ∈ [--..--] + r2 ∈ [--..--] + r3 ∈ {3} + r4 ∈ [--..--] + x ∈ [-2147483647..2147483647] + y ∈ [-2147483648..2147483646] + z ∈ [-2147483642..2147483647] + t ∈ {5} + p ∈ {{ &p + {4} }} + q ∈ {{ &S_q[1] }} + S_q[0] ∈ {3} + [1] ∈ [--..--] + S_p[0..1] ∈ [--..--] + =END OF DUMP== +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + r1 ∈ [--..--] + r2 ∈ [--..--] + r3 ∈ {3} + r4 ∈ [--..--] + x ∈ [-2147483647..2147483647] + y ∈ [-2147483648..2147483646] + z ∈ [-2147483642..2147483647] + t ∈ {5} + p ∈ {{ &p + {4} }} + q ∈ {{ &S_q[1] }} + S_q[0] ∈ {3} + [1] ∈ [--..--] +[from] Computing for function main +[from] Computing for function Frama_C_dump_each <-main +[from] Done for function Frama_C_dump_each +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + r1 FROM y + r2 FROM y + r3 FROM q + r4 FROM q; S_q[1] + S_q[0] FROM q +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + r1; r2; r3; r4; x; y; z; t; p; q; S_q[0] +[inout] Inputs for function main: + S_q[0..1] diff --git a/tests/value/oracle_symblocs/relations.err.oracle b/tests/value/oracle_symblocs/relations.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/relations.res.oracle b/tests/value/oracle_symblocs/relations.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..6c6a0865206fb4f177b031f85601a03168c16731 --- /dev/null +++ b/tests/value/oracle_symblocs/relations.res.oracle @@ -0,0 +1,105 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/relations.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + t[0] ∈ {1} + [1] ∈ {2} + [2] ∈ {3} + p ∈ {0} + x ∈ {0} + u[0..19] ∈ {0} + R1 ∈ {0} + R2 ∈ {0} + R3 ∈ {0} + R4 ∈ {0} + R5 ∈ {0} + R6 ∈ {0} + R7 ∈ {0} + A7 ∈ {0} + R8 ∈ {0} + A8 ∈ {0} + S1 ∈ {0} + S2 ∈ {0} + S3 ∈ {0} + S4 ∈ {0} + S5 ∈ {0} + S6 ∈ {0} + S7 ∈ {0} + B7 ∈ {0} + S8 ∈ {0} + B8 ∈ {0} +tests/value/relations.i:35:[value] warning: signed overflow. assert u[0]+1 ≤ 2147483647; +tests/value/relations.i:41:[value] warning: signed overflow. assert -2147483648 ≤ u[5]-u[0]; +tests/value/relations.i:41:[value] warning: signed overflow. assert u[5]-u[0] ≤ 2147483647; +tests/value/relations.i:46:[value] warning: signed overflow. assert -2147483648 ≤ u[10]-u[11]; +tests/value/relations.i:46:[value] warning: signed overflow. assert u[10]-u[11] ≤ 2147483647; +tests/value/relations.i:48:[value] warning: signed overflow. assert -2147483648 ≤ u[1]-u[0]; +tests/value/relations.i:48:[value] warning: signed overflow. assert u[1]-u[0] ≤ 2147483647; +tests/value/relations.i:52:[value] warning: signed overflow. assert -2147483648 ≤ u[5]-u[1]; +tests/value/relations.i:52:[value] warning: signed overflow. assert u[5]-u[1] ≤ 2147483647; +tests/value/relations.i:56:[value] warning: out of bounds read. assert \valid_read(&pCs->L0); +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + t[0..1] ∈ {4} + [2] ∈ {3} + p ∈ {{ &t[1] }} + x ∈ {4} + u[0] ∈ [-2147483648..2147483646] + [1] ∈ [--..--] + [2..4] ∈ {0} + [5] ∈ [-2147483647..2147483647] + [6..9] ∈ {0} + [10..11] ∈ [--..--] + [12..19] ∈ {0} + R1 ∈ [--..--] + R2 ∈ [--..--] + R3 ∈ [-2147483648..2147483646] + R4 ∈ [--..--] + R5 ∈ [--..--] + R6 ∈ [--..--] + R7 ∈ {0; 1} + A7 ∈ [--..--] + R8 ∈ {0; 1} + A8 ∈ [--..--] + S1 ∈ {-1; 0; 1} + S2 ∈ {0; 1} + c ∈ {0} + e ∈ [--..--] + f ∈ [--..--] + S_pCs[0]{.L0; .L1} ∈ [--..--] + [0]{.T13; .T; .L8} ∈ {0; 1} + [1] ∈ [--..--] +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + t[0..1] FROM \nothing + p FROM \nothing + x FROM \nothing + u{[0..1]; [5]} FROM g + [10] FROM h + [11] FROM i + R1 FROM g (and SELF) + R2 FROM g (and SELF) + R3 FROM g (and SELF) + R4 FROM g (and SELF) + R5 FROM g + R6 FROM h; i (and SELF) + R7 FROM g (and SELF) + A7 FROM g + R8 FROM g (and SELF) + A8 FROM g + S1 FROM pCs; S_pCs[0]{.L0; .L1} + S2 FROM pCs; S_pCs[0]{.L0; .L1} (and SELF) + S_pCs[0]{.T13; .T; .L8} FROM pCs; S_pCs[0]{.L0; .L1} +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + t[0..1]; p; x; u{[0..1]; [5]; [10..11]}; R1; R2; R3; R4; R5; R6; R7; + A7; R8; A8; S1; S2; c; e; f; tmp; tmp_0; S_pCs[0]{.T13; .T; .L8} +[inout] Inputs for function main: + t[0..1]; p; x; u{[0..1]; [5]; [10..11]}; S_pCs[0]{.L0; .L1; .T13; .T} diff --git a/tests/value/oracle_symblocs/relations2.err.oracle b/tests/value/oracle_symblocs/relations2.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/relations2.res.oracle b/tests/value/oracle_symblocs/relations2.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..ba664e94a828da6c069b267ebab4ef43d628f412 --- /dev/null +++ b/tests/value/oracle_symblocs/relations2.res.oracle @@ -0,0 +1,121 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/relations2.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + sv ∈ [--..--] + a[0..513] ∈ [--..--] +[value] computing for function bts2166 <- main. + Called from tests/value/relations2.i:41. +tests/value/relations2.i:6:[value] warning: function bts2166: precondition got status unknown. +tests/value/relations2.i:7:[value] warning: function bts2166: precondition got status unknown. +[value] DUMPING STATE of file tests/value/relations2.i line 15 + sv ∈ [--..--] + len ∈ [--..--] + n ∈ [1..64] + a[0..513] ∈ [--..--] + =END OF DUMP== +[value] Called Frama_C_show_each_end([0..4294967295], [0..64]) +[value] Recording results for bts2166 +[value] Done for function bts2166 +[value] computing for function main2 <- main. + Called from tests/value/relations2.i:42. +[value] computing for function unsigned_interval <- main2 <- main. + Called from tests/value/relations2.i:29. +[value] using specification for function unsigned_interval +[value] Done for function unsigned_interval +[value] computing for function unsigned_interval <- main2 <- main. + Called from tests/value/relations2.i:30. +[value] Done for function unsigned_interval +[value] computing for function unsigned_interval <- main2 <- main. + Called from tests/value/relations2.i:31. +[value] Done for function unsigned_interval +tests/value/relations2.i:32:[value] entering loop for the first time +[value] DUMPING STATE of file tests/value/relations2.i line 33 + sv ∈ [--..--] + a[0..513] ∈ [--..--] + i ∈ [1..512] + t ∈ [0..511] + n ∈ [0..512] + s ∈ {0} + b3 ∈ UNINITIALIZED + =END OF DUMP== +tests/value/relations2.i:34:[value] warning: accessing out of bounds index. + assert (unsigned int)(i-(unsigned int)(t+1)) < 514; +[value] DUMPING STATE of file tests/value/relations2.i line 33 + sv ∈ [--..--] + a[0..513] ∈ [--..--] + i ∈ [1..512] + t ∈ [0..511] + n ∈ [0..512] + s ∈ {0; 1} + b3 ∈ UNINITIALIZED + =END OF DUMP== +[value] DUMPING STATE of file tests/value/relations2.i line 33 + sv ∈ [--..--] + a[0..513] ∈ [--..--] + i ∈ [1..512] + t ∈ [0..511] + n ∈ [0..512] + s ∈ {0; 1; 2} + b3 ∈ UNINITIALIZED + =END OF DUMP== +[value] DUMPING STATE of file tests/value/relations2.i line 33 + sv ∈ [--..--] + a[0..513] ∈ [--..--] + i ∈ [1..512] + t ∈ [0..511] + n ∈ [0..512] + s ∈ [0..2147483647] + b3 ∈ UNINITIALIZED + =END OF DUMP== +tests/value/relations2.i:35:[value] warning: signed overflow. assert s+b3 ≤ 2147483647; +[value] Recording results for main2 +[value] Done for function main2 +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function bts2166: + len ∈ [--..--] + n ∈ [0..64] +[value:final-states] Values at end of function main2: + i ∈ [0..512] + t ∈ [0..512] + n ∈ [0..512] + s ∈ [0..2147483647] +[value:final-states] Values at end of function main: + +[from] Computing for function bts2166 +[from] Computing for function Frama_C_dump_each <-bts2166 +[from] Done for function Frama_C_dump_each +[from] Done for function bts2166 +[from] Computing for function main2 +[from] Computing for function unsigned_interval <-main2 +[from] Done for function unsigned_interval +[from] Done for function main2 +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function bts2166: + NO EFFECTS +[from] Function unsigned_interval: + \result FROM i1; i2 +[from] Function main2: + \result FROM a[0..513] +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function bts2166: + len; n +[inout] Inputs for function bts2166: + \nothing +[inout] Out (internal) for function main2: + i; t; n; s; b3 +[inout] Inputs for function main2: + a[0..513] +[inout] Out (internal) for function main: + \nothing +[inout] Inputs for function main: + sv; a[0..513] diff --git a/tests/value/oracle_symblocs/relations_difficult.err.oracle b/tests/value/oracle_symblocs/relations_difficult.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/relations_difficult.res.oracle b/tests/value/oracle_symblocs/relations_difficult.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..381da2843c45b43209c8809d5f3eb71d3bd30dd0 --- /dev/null +++ b/tests/value/oracle_symblocs/relations_difficult.res.oracle @@ -0,0 +1,41 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/relations_difficult.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + x ∈ {0} + y ∈ {0} + p ∈ {0} + A ∈ {0} + B ∈ {0} + C ∈ {0} + Z ∈ {0} +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + x ∈ {4} + y ∈ {1; 2} + p ∈ {{ &x ; &y }} + A ∈ {1; 2; 3} + B ∈ {1; 2; 4} + C ∈ {1; 2; 4} + __retres ∈ {0} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + x FROM \nothing + y FROM c + p FROM c + A FROM c + B FROM Z; c + C FROM c + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + x; y; p; A; B; C; __retres +[inout] Inputs for function main: + x; y; p; Z diff --git a/tests/value/oracle_symblocs/replace_by_show_each.err.oracle b/tests/value/oracle_symblocs/replace_by_show_each.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/replace_by_show_each.res.oracle b/tests/value/oracle_symblocs/replace_by_show_each.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..5f7df16a3acc29c5f9efbfc07ba2ba338e50b43f --- /dev/null +++ b/tests/value/oracle_symblocs/replace_by_show_each.res.oracle @@ -0,0 +1,39 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/replace_by_show_each.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + x ∈ {0} +[value] Called Frama_C_show_each_2() +[value] Called Frama_C_show_each_1() +[inout] warning: no assigns clauses for function Frama_C_show_each_1. Results will be + imprecise. +[from] warning: no assigns clauses for function Frama_C_show_each_1. Results will be + imprecise. +tests/value/replace_by_show_each.c:26:[value] warning: signed overflow. assert j+1 ≤ 2147483647; +[value] Recording results for main +[from] Computing for function main +[from] Done for function main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: +Cannot filter: dumping raw memory (including unchanged variables) + x ∈ {0} + j ∈ [-2147483648..2147483646] + i ∈ [-2147483647..2147483647] +[from] ====== DISPLAYING CALLWISE DEPENDENCIES ====== +[from] call to Frama_C_show_each_2 at tests/value/replace_by_show_each.c:23 (by main): + NO EFFECTS +[from] call to Frama_C_show_each_1 at tests/value/replace_by_show_each.c:25 (by main): + FROMTOP +[from] entry point: + \result FROM j +[from] ====== END OF CALLWISE DEPENDENCIES ====== +[inout] InOut (internal) for function main: + Operational inputs: + ANYTHING(origin:Unknown) + Operational inputs on termination: + ANYTHING(origin:Unknown) + Sure outputs: + i diff --git a/tests/value/oracle_symblocs/resolve.err.oracle b/tests/value/oracle_symblocs/resolve.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/resolve.res.oracle b/tests/value/oracle_symblocs/resolve.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..68c01d9f27551e94c4f97701997c22099f5f96b7 --- /dev/null +++ b/tests/value/oracle_symblocs/resolve.res.oracle @@ -0,0 +1,32 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/resolve.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] computing for function f <- main. + Called from tests/value/resolve.i:12. +tests/value/resolve.i:12:[kernel] warning: Neither code nor specification for function f, generating default assigns from the prototype +[value] using specification for function f +[value] Done for function f +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + +[from] Computing for function main +[from] Computing for function f <-main +[from] Done for function f +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + \result FROM \nothing +[from] Function main: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + tmp +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/return.err.oracle b/tests/value/oracle_symblocs/return.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/return.res.oracle b/tests/value/oracle_symblocs/return.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..5b5e57eb3ce5f0cb94ea99448b0ce981f346a6b0 --- /dev/null +++ b/tests/value/oracle_symblocs/return.res.oracle @@ -0,0 +1,44 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/return.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + G ∈ {0} + H ∈ {0} +[value] computing for function f <- main. + Called from tests/value/return.i:18. +[value] Recording results for f +[value] Done for function f +[value] computing for function f <- main. + Called from tests/value/return.i:19. +[value] Recording results for f +[value] Done for function f +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + __retres ∈ {0} +[value:final-states] Values at end of function main: + G ∈ {0} + H ∈ {0} +[from] Computing for function f +[from] Done for function f +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + \result FROM G; x +[from] Function main: + G FROM G; c (and SELF) + H FROM G; H; c (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + __retres +[inout] Inputs for function f: + G +[inout] Out (internal) for function main: + G; H +[inout] Inputs for function main: + G; H diff --git a/tests/value/oracle_symblocs/semaphore.err.oracle b/tests/value/oracle_symblocs/semaphore.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/semaphore.res.oracle b/tests/value/oracle_symblocs/semaphore.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..6b2fdc02cf0d214c968540dc14196ed757f066ea --- /dev/null +++ b/tests/value/oracle_symblocs/semaphore.res.oracle @@ -0,0 +1,91 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/semaphore.i (no preprocessing) +[value] Analyzing a complete application starting at g +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + Sa ∈ {0} + Sb ∈ {0} +tests/value/semaphore.i:28:[value] entering loop for the first time +tests/value/semaphore.i:29:[value] entering loop for the first time +[value] computing for function V <- g. + Called from tests/value/semaphore.i:31. +tests/value/semaphore.i:31:[kernel] warning: Neither code nor specification for function V, generating default assigns from the prototype +[value] using specification for function V +[value] Done for function V +[value] computing for function V <- g. + Called from tests/value/semaphore.i:31. +[value] Done for function V +[value] computing for function V <- g. + Called from tests/value/semaphore.i:31. +[value] Done for function V +[value] computing for function V <- g. + Called from tests/value/semaphore.i:31. +[value] Done for function V +[value] computing for function P <- g. + Called from tests/value/semaphore.i:34. +tests/value/semaphore.i:34:[kernel] warning: Neither code nor specification for function P, generating default assigns from the prototype +[value] using specification for function P +[value] Done for function P +[value] computing for function P <- g. + Called from tests/value/semaphore.i:35. +[value] Done for function P +[value] computing for function V <- g. + Called from tests/value/semaphore.i:37. +[value] Done for function V +[value] computing for function V <- g. + Called from tests/value/semaphore.i:38. +[value] Done for function V +[value] computing for function f <- g. + Called from tests/value/semaphore.i:40. +[value] computing for function P <- f <- g. + Called from tests/value/semaphore.i:14. +[value] Done for function P +[value] computing for function P <- f <- g. + Called from tests/value/semaphore.i:16. +[value] Done for function P +[value] computing for function P <- f <- g. + Called from tests/value/semaphore.i:17. +[value] Done for function P +[value] computing for function V <- f <- g. + Called from tests/value/semaphore.i:19. +[value] Done for function V +[value] computing for function V <- f <- g. + Called from tests/value/semaphore.i:20. +[value] Done for function V +[value] Recording results for f +[value] Done for function f +[value] Recording results for g +[value] done for function g +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + c ∈ {12} +[value:final-states] Values at end of function g: + c ∈ {-26; -1} +[from] Computing for function f +[from] Computing for function P <-f +[from] Done for function P +[from] Computing for function V <-f +[from] Done for function V +[from] Done for function f +[from] Computing for function g +[from] Done for function g +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function P: + NO EFFECTS +[from] Function V: + NO EFFECTS +[from] Function f: + NO EFFECTS +[from] Function g: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + c +[inout] Inputs for function f: + Sa; Sb +[inout] Out (internal) for function g: + c; tmp +[inout] Inputs for function g: + Sa; Sb diff --git a/tests/value/oracle_symblocs/sep.0.err.oracle b/tests/value/oracle_symblocs/sep.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/sep.0.res.oracle b/tests/value/oracle_symblocs/sep.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..3b422983c79ea3bb87a12444616720b9ebbb5e75 --- /dev/null +++ b/tests/value/oracle_symblocs/sep.0.res.oracle @@ -0,0 +1,30 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/sep.i (no preprocessing) +[value] Analyzing an incomplete application starting at f1 +[value] Part of a case analysis: 0 of 0..3 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + index ∈ [--..--] + tab[0..4] ∈ [--..--] +tests/value/sep.i:36:[value] warning: function f1: precondition got status unknown. +[value] computing for function init1 <- f1. + Called from tests/value/sep.i:41. +[value] computing for function init2 <- init1 <- f1. + Called from tests/value/sep.i:18. +tests/value/sep.i:18:[kernel] warning: No code nor implicit assigns clause for function init2, generating default assigns from the prototype +[value] using specification for function init2 +[value] Done for function init2 +tests/value/sep.i:20:[value] warning: Statement 3: only propagating for condition false +tests/value/sep.i:26:[value] warning: Statement 6: only propagating for condition false +[value] Recording results for init1 +[value] Done for function init1 +[value] Recording results for f1 +[value] done for function f1 +[value] Next case to cover in sequential order: 1 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function init1: + res ∈ {-1} +[value:final-states] Values at end of function f1: + res ∈ {-1} + __retres ∈ {-1} diff --git a/tests/value/oracle_symblocs/sep.1.err.oracle b/tests/value/oracle_symblocs/sep.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/sep.1.res.oracle b/tests/value/oracle_symblocs/sep.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..a0ab5fa342ece569a92c04b3a466e430b4ae97a0 --- /dev/null +++ b/tests/value/oracle_symblocs/sep.1.res.oracle @@ -0,0 +1,32 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/sep.i (no preprocessing) +[value] Analyzing an incomplete application starting at f1 +[value] Part of a case analysis: 1 of 0..3 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + index ∈ [--..--] + tab[0..4] ∈ [--..--] +tests/value/sep.i:36:[value] warning: function f1: precondition got status unknown. +[value] computing for function init1 <- f1. + Called from tests/value/sep.i:41. +[value] computing for function init2 <- init1 <- f1. + Called from tests/value/sep.i:18. +tests/value/sep.i:18:[kernel] warning: No code nor implicit assigns clause for function init2, generating default assigns from the prototype +[value] using specification for function init2 +[value] Done for function init2 +tests/value/sep.i:20:[value] warning: Statement 3: only propagating for condition false +tests/value/sep.i:26:[value] warning: Statement 6: only propagating for condition true +[value] Recording results for init1 +[value] Done for function init1 +[value] Recording results for f1 +[value] done for function f1 +[value] Next case to cover in sequential order: 2 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function init1: + index ∈ {0} + res ∈ {0} +[value:final-states] Values at end of function f1: + index ∈ {0} + res ∈ {0} + __retres ∈ [--..--] diff --git a/tests/value/oracle_symblocs/sep.2.err.oracle b/tests/value/oracle_symblocs/sep.2.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/sep.2.res.oracle b/tests/value/oracle_symblocs/sep.2.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..3fd84d84ffa0e18ee908509785c0fa078371d098 --- /dev/null +++ b/tests/value/oracle_symblocs/sep.2.res.oracle @@ -0,0 +1,31 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/sep.i (no preprocessing) +[value] Analyzing an incomplete application starting at f1 +[value] Part of a case analysis: 2 of 0..3 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + index ∈ [--..--] + tab[0..4] ∈ [--..--] +tests/value/sep.i:36:[value] warning: function f1: precondition got status unknown. +[value] computing for function init1 <- f1. + Called from tests/value/sep.i:41. +[value] computing for function init2 <- init1 <- f1. + Called from tests/value/sep.i:18. +tests/value/sep.i:18:[kernel] warning: No code nor implicit assigns clause for function init2, generating default assigns from the prototype +[value] using specification for function init2 +[value] Done for function init2 +tests/value/sep.i:20:[value] warning: Statement 3: only propagating for condition true +[value] Recording results for init1 +[value] Done for function init1 +[value] Recording results for f1 +[value] done for function f1 +[value] This analysis covers cases 2 to 3 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function init1: + index ∈ {0} + res ∈ {0} +[value:final-states] Values at end of function f1: + index ∈ {0} + res ∈ {0} + __retres ∈ [--..--] diff --git a/tests/value/oracle_symblocs/sep.3.err.oracle b/tests/value/oracle_symblocs/sep.3.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/sep.3.res.oracle b/tests/value/oracle_symblocs/sep.3.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..f37b137f3d31c4c81d378281cf51bc2469031098 --- /dev/null +++ b/tests/value/oracle_symblocs/sep.3.res.oracle @@ -0,0 +1,31 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/sep.i (no preprocessing) +[value] Analyzing an incomplete application starting at f1 +[value] Part of a case analysis: 3 of 0..3 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + index ∈ [--..--] + tab[0..4] ∈ [--..--] +tests/value/sep.i:36:[value] warning: function f1: precondition got status unknown. +[value] computing for function init1 <- f1. + Called from tests/value/sep.i:41. +[value] computing for function init2 <- init1 <- f1. + Called from tests/value/sep.i:18. +tests/value/sep.i:18:[kernel] warning: No code nor implicit assigns clause for function init2, generating default assigns from the prototype +[value] using specification for function init2 +[value] Done for function init2 +tests/value/sep.i:20:[value] warning: Statement 3: only propagating for condition true +[value] Recording results for init1 +[value] Done for function init1 +[value] Recording results for f1 +[value] done for function f1 +[value] This analysis covers cases 2 to 3 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function init1: + index ∈ {0} + res ∈ {0} +[value:final-states] Values at end of function f1: + index ∈ {0} + res ∈ {0} + __retres ∈ [--..--] diff --git a/tests/value/oracle_symblocs/sep.4.err.oracle b/tests/value/oracle_symblocs/sep.4.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/sep.4.res.oracle b/tests/value/oracle_symblocs/sep.4.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..3a55f486bcdb05857e14914e86e7fd44ae0509ec --- /dev/null +++ b/tests/value/oracle_symblocs/sep.4.res.oracle @@ -0,0 +1,31 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/sep.i (no preprocessing) +[value] Splitting return states on: + \return(init2) == 0, 1 (auto) + \return(init1) == 0 (auto) +[value] Analyzing an incomplete application starting at f1 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + index ∈ [--..--] + tab[0..4] ∈ [--..--] +tests/value/sep.i:36:[value] warning: function f1: precondition got status unknown. +[value] computing for function init1 <- f1. + Called from tests/value/sep.i:41. +[value] computing for function init2 <- init1 <- f1. + Called from tests/value/sep.i:18. +tests/value/sep.i:18:[kernel] warning: No code nor implicit assigns clause for function init2, generating default assigns from the prototype +[value] using specification for function init2 +[value] Done for function init2 +[value] Recording results for init1 +[value] Done for function init1 +[value] Recording results for f1 +[value] done for function f1 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function init1: + index ∈ [--..--] + res ∈ {-1; 0} +[value:final-states] Values at end of function f1: + index ∈ [--..--] + res ∈ {-1; 0} + __retres ∈ [--..--] diff --git a/tests/value/oracle_symblocs/separated.err.oracle b/tests/value/oracle_symblocs/separated.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/separated.res.oracle b/tests/value/oracle_symblocs/separated.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..6b7012ec3fdc806fc4ae65ade4960a8e10e621c1 --- /dev/null +++ b/tests/value/oracle_symblocs/separated.res.oracle @@ -0,0 +1,32 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/separated.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + t[0..14] ∈ {0} + p ∈ {{ &t[0] }} + x ∈ {0} +tests/value/separated.i:10:[value] assertion got status valid. +tests/value/separated.i:13:[value] warning: assertion got status invalid (stopping propagation). +tests/value/separated.i:16:[value] warning: assertion got status invalid (stopping propagation). +tests/value/separated.i:19:[value] warning: assertion got status invalid (stopping propagation). +tests/value/separated.i:22:[value] assertion got status valid. +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + x ∈ {1} + __retres ∈ {0} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + x FROM c + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + x; __retres +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/shift.0.err.oracle b/tests/value/oracle_symblocs/shift.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/shift.0.res.oracle b/tests/value/oracle_symblocs/shift.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..5f2e06f19a46b306b78e4ab3c44e87bf01dc57a5 --- /dev/null +++ b/tests/value/oracle_symblocs/shift.0.res.oracle @@ -0,0 +1,78 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/shift.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + a ∈ {0} + b ∈ {0} + d ∈ {0} + e ∈ {0} + f ∈ {0} + g ∈ {0} + h ∈ {0} + ua ∈ {0} + ub ∈ {0} + uc ∈ {0} + ud ∈ {0} + ue ∈ {0} + uf ∈ {0} + t[0..9] ∈ {0} + v ∈ [--..--] +tests/value/shift.i:21:[value] warning: invalid RHS operand for shift. assert 0 ≤ c < 32; +tests/value/shift.i:22:[value] assertion got status valid. +tests/value/shift.i:25:[value] warning: invalid RHS operand for shift. assert 0 ≤ c < 32; +tests/value/shift.i:26:[value] assertion got status valid. +tests/value/shift.i:29:[value] warning: invalid RHS operand for shift. assert 0 ≤ c < 32; +tests/value/shift.i:31:[value] warning: invalid LHS operand for left shift. assert 0 ≤ c; +tests/value/shift.i:32:[value] assertion got status valid. +tests/value/shift.i:35:[value] warning: invalid RHS operand for shift. assert 0 ≤ 32 < 32; +tests/value/shift.i:36:[value] warning: invalid RHS operand for shift. assert 0 ≤ 5555 < 32; +tests/value/shift.i:40:[value] warning: invalid RHS operand for shift. assert 0 ≤ b < 32; +[value] computing for function printf <- main. + Called from tests/value/shift.i:48. +tests/value/shift.i:48:[kernel] warning: Neither code nor specification for function printf, generating default assigns from the prototype +[value] using specification for function printf +[value] Done for function printf +tests/value/shift.i:52:[value] Assigning imprecise value to r. + The imprecision originates from Arithmetic {tests/value/shift.i:52} +tests/value/shift.i:53:[value] warning: invalid LHS operand for left shift. assert 0 ≤ (long)((char *)t); +[value] Recording results for main +[value] done for function main +tests/value/shift.i:35:[value] assertion 'Value,shift' got final status invalid. +tests/value/shift.i:36:[value] assertion 'Value,shift' got final status invalid. +tests/value/shift.i:40:[value] assertion 'Value,shift' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + a ∈ {314; 1256; 5024} + b ∈ {0} + d ∈ {61; 246; 255; 987} + f ∈ {-988; -255; -247; -62} + ua ∈ {1401} + ub ∈ {1073741074} + c ∈ [--..--] + z ∈ [-2147483648..2147483615] + zz ∈ {0} + shl ∈ {0} +[from] Computing for function main +[from] Computing for function printf <-main +[from] Done for function printf +tests/value/shift.i:48:[from] warning: variadic call detected. Using only 1 argument(s). +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function printf: + NO EFFECTS +[from] Function main: + a FROM v; c + b FROM z (and SELF) + d FROM v; c + f FROM v; c + ua FROM \nothing + ub FROM \nothing + \result FROM b; z +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + a; b; d; f; ua; ub; c; z; zz; r; shl +[inout] Inputs for function main: + b; d; f; ua; ub; v diff --git a/tests/value/oracle_symblocs/shift.1.err.oracle b/tests/value/oracle_symblocs/shift.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/shift.1.res.oracle b/tests/value/oracle_symblocs/shift.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..45569f3c7650c9d844e5f690a8d694c23ffedce1 --- /dev/null +++ b/tests/value/oracle_symblocs/shift.1.res.oracle @@ -0,0 +1,83 @@ +[value] warning: New option name for -no-val-left-shift-negative-alarms is -no-val-warn-left-shift-negative +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/shift.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + a ∈ {0} + b ∈ {0} + d ∈ {0} + e ∈ {0} + f ∈ {0} + g ∈ {0} + h ∈ {0} + ua ∈ {0} + ub ∈ {0} + uc ∈ {0} + ud ∈ {0} + ue ∈ {0} + uf ∈ {0} + t[0..9] ∈ {0} + v ∈ [--..--] +tests/value/shift.i:21:[value] warning: invalid RHS operand for shift. assert 0 ≤ c < 32; +tests/value/shift.i:22:[value] assertion got status valid. +tests/value/shift.i:25:[value] warning: invalid RHS operand for shift. assert 0 ≤ c < 32; +tests/value/shift.i:26:[value] assertion got status valid. +tests/value/shift.i:29:[value] warning: invalid RHS operand for shift. assert 0 ≤ c < 32; +tests/value/shift.i:32:[value] warning: assertion got status unknown. +tests/value/shift.i:35:[value] warning: invalid RHS operand for shift. assert 0 ≤ 32 < 32; +tests/value/shift.i:36:[value] warning: invalid RHS operand for shift. assert 0 ≤ 5555 < 32; +tests/value/shift.i:40:[value] warning: invalid RHS operand for shift. assert 0 ≤ b < 32; +[value] computing for function printf <- main. + Called from tests/value/shift.i:48. +tests/value/shift.i:48:[kernel] warning: Neither code nor specification for function printf, generating default assigns from the prototype +[value] using specification for function printf +[value] Done for function printf +tests/value/shift.i:52:[value] Assigning imprecise value to r. + The imprecision originates from Arithmetic {tests/value/shift.i:52} +tests/value/shift.i:53:[value] warning: signed overflow. assert -2147483648 ≤ (long)((char *)t)<<8; +tests/value/shift.i:53:[value] warning: signed overflow. assert (long)((char *)t)<<8 ≤ 2147483647; +tests/value/shift.i:53:[value] warning: signed overflow. assert -2147483648 ≤ (long)r+(long)((long)((char *)t)<<8); +tests/value/shift.i:53:[value] warning: signed overflow. assert (long)r+(long)((long)((char *)t)<<8) ≤ 2147483647; +tests/value/shift.i:53:[value] Assigning imprecise value to r. + The imprecision originates from Arithmetic +[value] Recording results for main +[value] done for function main +tests/value/shift.i:35:[value] assertion 'Value,shift' got final status invalid. +tests/value/shift.i:36:[value] assertion 'Value,shift' got final status invalid. +tests/value/shift.i:40:[value] assertion 'Value,shift' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + a ∈ {314; 1256; 5024} + b ∈ {0} + d ∈ {61; 246; 255; 987} + f ∈ {-988; -255; -247; -62} + ua ∈ {1401} + ub ∈ {1073741074} + c ∈ [--..--] + z ∈ [-2147483648..2147483631] + zz ∈ {0} + shl ∈ {0} +[from] Computing for function main +[from] Computing for function printf <-main +[from] Done for function printf +tests/value/shift.i:48:[from] warning: variadic call detected. Using only 1 argument(s). +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function printf: + NO EFFECTS +[from] Function main: + a FROM v; c + b FROM z (and SELF) + d FROM v; c + f FROM v; c + ua FROM \nothing + ub FROM \nothing + \result FROM b; z +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + a; b; d; f; ua; ub; c; z; zz; r; shl +[inout] Inputs for function main: + b; d; f; ua; ub; v diff --git a/tests/value/oracle_symblocs/shift_big.err.oracle b/tests/value/oracle_symblocs/shift_big.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/shift_big.res.oracle b/tests/value/oracle_symblocs/shift_big.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..5a339142f6c1eda7f89984355be2dbf479b251ac --- /dev/null +++ b/tests/value/oracle_symblocs/shift_big.res.oracle @@ -0,0 +1,155 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/shift_big.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + nondet ∈ [--..--] +[value] computing for function t1 <- main. + Called from tests/value/shift_big.i:63. +tests/value/shift_big.i:5:[value] warning: invalid RHS operand for shift. assert 0 ≤ j < 32; +tests/value/shift_big.i:5:[value] warning: signed overflow. assert 1<<j ≤ 2147483647; +[value] Recording results for t1 +[value] Done for function t1 +[value] computing for function t2 <- main. + Called from tests/value/shift_big.i:64. +tests/value/shift_big.i:15:[value] warning: invalid RHS operand for shift. assert 0 ≤ j < 32; +tests/value/shift_big.i:15:[value] warning: signed overflow. assert 1<<j ≤ 2147483647; +[value] Recording results for t2 +[value] Done for function t2 +tests/value/shift_big.i:64:[value] warning: signed overflow. assert r+tmp_0 ≤ 2147483647; + (tmp_0 from t2()) +[value] computing for function t3 <- main. + Called from tests/value/shift_big.i:65. +tests/value/shift_big.i:22:[value] entering loop for the first time +tests/value/shift_big.i:25:[value] assertion got status valid. +[value] Recording results for t3 +[value] Done for function t3 +[value] computing for function t4 <- main. + Called from tests/value/shift_big.i:66. +tests/value/shift_big.i:31:[value] assertion got status valid. +[value] Recording results for t4 +[value] Done for function t4 +[value] computing for function t5 <- main. + Called from tests/value/shift_big.i:67. +tests/value/shift_big.i:37:[value] entering loop for the first time +tests/value/shift_big.i:40:[value] assertion got status valid. +[value] Recording results for t5 +[value] Done for function t5 +[value] computing for function t6 <- main. + Called from tests/value/shift_big.i:68. +tests/value/shift_big.i:46:[value] assertion got status valid. +[value] Recording results for t6 +[value] Done for function t6 +[value] computing for function t7 <- main. + Called from tests/value/shift_big.i:69. +tests/value/shift_big.i:52:[value] warning: assertion got status unknown. +[value] Recording results for t7 +[value] Done for function t7 +[value] computing for function t8 <- main. + Called from tests/value/shift_big.i:70. +tests/value/shift_big.i:58:[value] assertion got status valid. +[value] Recording results for t8 +[value] Done for function t8 +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function t1: + j ∈ [0..31] + i ∈ [1..2147483647] + __retres ∈ [1..2147483647] +[value:final-states] Values at end of function t2: + j ∈ {1; 10; 31} + i ∈ {2; 1024} + __retres ∈ {2; 1024} +[value:final-states] Values at end of function t3: + x ∈ [1000000000..1999999999] + i ∈ {2000000000} +[value:final-states] Values at end of function t4: + x ∈ {1000000000; 1000000001} +[value:final-states] Values at end of function t5: + x ∈ [1000000000..1999999999] + i ∈ {2000000000} +[value:final-states] Values at end of function t6: + x ∈ {1000000000; 1000000001} +[value:final-states] Values at end of function t7: + x ∈ {1022; 1023} +[value:final-states] Values at end of function t8: + x ∈ {1022; 1023} +[value:final-states] Values at end of function main: + r ∈ [0..2147483647] +[from] Computing for function t1 +[from] Done for function t1 +[from] Computing for function t2 +[from] Done for function t2 +[from] Computing for function t3 +[from] Done for function t3 +[from] Computing for function t4 +[from] Done for function t4 +[from] Computing for function t5 +[from] Done for function t5 +[from] Computing for function t6 +[from] Done for function t6 +[from] Computing for function t7 +[from] Done for function t7 +[from] Computing for function t8 +[from] Done for function t8 +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function t1: + \result FROM nondet +[from] Function t2: + \result FROM nondet +[from] Function t3: + NO EFFECTS +[from] Function t4: + NO EFFECTS +[from] Function t5: + NO EFFECTS +[from] Function t6: + NO EFFECTS +[from] Function t7: + NO EFFECTS +[from] Function t8: + NO EFFECTS +[from] Function main: + \result FROM nondet +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function t1: + j; i; __retres +[inout] Inputs for function t1: + nondet +[inout] Out (internal) for function t2: + j; i; __retres +[inout] Inputs for function t2: + nondet +[inout] Out (internal) for function t3: + x; i +[inout] Inputs for function t3: + nondet +[inout] Out (internal) for function t4: + x +[inout] Inputs for function t4: + nondet +[inout] Out (internal) for function t5: + x; i +[inout] Inputs for function t5: + nondet +[inout] Out (internal) for function t6: + x +[inout] Inputs for function t6: + nondet +[inout] Out (internal) for function t7: + x +[inout] Inputs for function t7: + nondet +[inout] Out (internal) for function t8: + x +[inout] Inputs for function t8: + nondet +[inout] Out (internal) for function main: + r; tmp; tmp_0 +[inout] Inputs for function main: + nondet diff --git a/tests/value/oracle_symblocs/shift_neg.err.oracle b/tests/value/oracle_symblocs/shift_neg.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/shift_neg.res.oracle b/tests/value/oracle_symblocs/shift_neg.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..24b7a2fd52218dfe0cababe6a962a6cf9c640986 --- /dev/null +++ b/tests/value/oracle_symblocs/shift_neg.res.oracle @@ -0,0 +1,30 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/shift_neg.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] DUMPING STATE of file tests/value/shift_neg.i line 5 + i ∈ {-1} + j ∈ {-6} + =END OF DUMP== +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + i ∈ {-1} + j ∈ {-6} +[from] Computing for function main +[from] Computing for function Frama_C_dump_each <-main +[from] Done for function Frama_C_dump_each +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + i; j +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/sign_of_bitfiled_int.0.err.oracle b/tests/value/oracle_symblocs/sign_of_bitfiled_int.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/sign_of_bitfiled_int.0.res.oracle b/tests/value/oracle_symblocs/sign_of_bitfiled_int.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..da491c1e4fe6927fa0bed28511525743f94240ba --- /dev/null +++ b/tests/value/oracle_symblocs/sign_of_bitfiled_int.0.res.oracle @@ -0,0 +1,14 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/sign_of_bitfiled_int.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + bf ∈ {0} +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + bf.c ∈ {-1} + .u ∈ {65535} + int_inside_bitfield_is_unsigned ∈ {1} diff --git a/tests/value/oracle_symblocs/sign_of_bitfiled_int.1.err.oracle b/tests/value/oracle_symblocs/sign_of_bitfiled_int.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/sign_of_bitfiled_int.1.res.oracle b/tests/value/oracle_symblocs/sign_of_bitfiled_int.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..da491c1e4fe6927fa0bed28511525743f94240ba --- /dev/null +++ b/tests/value/oracle_symblocs/sign_of_bitfiled_int.1.res.oracle @@ -0,0 +1,14 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/sign_of_bitfiled_int.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + bf ∈ {0} +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + bf.c ∈ {-1} + .u ∈ {65535} + int_inside_bitfield_is_unsigned ∈ {1} diff --git a/tests/value/oracle_symblocs/simple_packed.err.oracle b/tests/value/oracle_symblocs/simple_packed.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/simple_packed.res.oracle b/tests/value/oracle_symblocs/simple_packed.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..5f036c820fd7281381e9a959db8493d55c5b9d2d --- /dev/null +++ b/tests/value/oracle_symblocs/simple_packed.res.oracle @@ -0,0 +1,39 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/simple_packed.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] computing for function f <- main. + Called from tests/value/simple_packed.c:19. +[value] Recording results for f +[value] Done for function f +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + bar{.c; .i; .s.c} ∈ [--..--] + .s.[bits 8 to 31] ∈ UNINITIALIZED + .s.i ∈ [--..--] +[value:final-states] Values at end of function main: + +[from] Computing for function f +[from] Done for function f +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + \result FROM foo +[from] Function main: + \result FROM foo +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + bar +[inout] Inputs for function f: + \nothing +[inout] Out (internal) for function main: + \nothing +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/simple_path.err.oracle b/tests/value/oracle_symblocs/simple_path.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/simple_path.res.oracle b/tests/value/oracle_symblocs/simple_path.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..941a328f3d700ca37f02a2c7e6e415b276d52aff --- /dev/null +++ b/tests/value/oracle_symblocs/simple_path.res.oracle @@ -0,0 +1,30 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/simple_path.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + G ∈ {0} + H ∈ {0} + p ∈ {{ &G }} + q ∈ {{ &H }} +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + G ∈ {3} + H ∈ {5} + p ∈ {{ &H }} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + G FROM p + H FROM \nothing + p FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + G; H; p +[inout] Inputs for function main: + p diff --git a/tests/value/oracle_symblocs/simplify_cfg.0.err.oracle b/tests/value/oracle_symblocs/simplify_cfg.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/simplify_cfg.0.res.oracle b/tests/value/oracle_symblocs/simplify_cfg.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..f73313e89afd2cbc3a9af089eddbaddc4b46529b --- /dev/null +++ b/tests/value/oracle_symblocs/simplify_cfg.0.res.oracle @@ -0,0 +1,13 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/simplify_cfg.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + z ∈ {1; 100} + c ∈ {99} diff --git a/tests/value/oracle_symblocs/simplify_cfg.1.err.oracle b/tests/value/oracle_symblocs/simplify_cfg.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/simplify_cfg.1.res.oracle b/tests/value/oracle_symblocs/simplify_cfg.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..f73313e89afd2cbc3a9af089eddbaddc4b46529b --- /dev/null +++ b/tests/value/oracle_symblocs/simplify_cfg.1.res.oracle @@ -0,0 +1,13 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/simplify_cfg.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + z ∈ {1; 100} + c ∈ {99} diff --git a/tests/value/oracle_symblocs/sizeof.err.oracle b/tests/value/oracle_symblocs/sizeof.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/sizeof.res.oracle b/tests/value/oracle_symblocs/sizeof.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..0475b33fd92b1b0dc3541bd338e7f21a56ce5092 --- /dev/null +++ b/tests/value/oracle_symblocs/sizeof.res.oracle @@ -0,0 +1,138 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/sizeof.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + sz_str ∈ {0} + sz_typ ∈ {0} + align_str ∈ {0} + align_typ ∈ {0} + s1 ∈ {0} + i ∈ [--..--] +[value] computing for function main1 <- main. + Called from tests/value/sizeof.i:38. +tests/value/sizeof.i:10:[value] assertion got status valid. +tests/value/sizeof.i:14:[value] assertion got status valid. +tests/value/sizeof.i:17:[value] assertion got status valid. +[value] Recording results for main1 +[value] Done for function main1 +[value] computing for function main2 <- main. + Called from tests/value/sizeof.i:39. +tests/value/sizeof.i:32:[value] Assigning imprecise value to p. + The imprecision originates from Arithmetic {tests/value/sizeof.i:32} +tests/value/sizeof.i:33:[value] warning: accessing out of bounds index. + assert (unsigned int)(sizeof(s1.t)-(unsigned int)i) < 10; +tests/value/sizeof.i:33:[value] warning: out of bounds write. + assert \valid(&p->t[(unsigned int)(sizeof(s1.t)-(unsigned int)i)]); +tests/value/sizeof.i:34:[value] warning: accessing out of bounds index. + assert (unsigned int)(sizeof(s1.t)-(unsigned int)i) < 10; +tests/value/sizeof.i:34:[value] warning: out of bounds write. + assert \valid(&p->t[(unsigned int)(sizeof(s1.t)-(unsigned int)i)]); +[value] Recording results for main2 +[value] Done for function main2 +[value] Recording results for main +[value] done for function main +[scope:rm_asserts] removing 2 assertion(s) +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main1: + sz_str ∈ {4} + sz_typ ∈ {1} + align_str ∈ {1} + align_typ ∈ {4} +[value:final-states] Values at end of function main2: + s1 ∈ [--..--] + p ∈ {{ &s1 + [-36..36] }} +[value:final-states] Values at end of function main: + sz_str ∈ {4} + sz_typ ∈ {1} + align_str ∈ {1} + align_typ ∈ {4} + s1 ∈ [--..--] +[from] Computing for function main1 +[from] Done for function main1 +[from] Computing for function main2 +[from] Done for function main2 +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main1: + sz_str FROM \nothing + sz_typ FROM \nothing + align_str FROM \nothing + align_typ FROM \nothing +[from] Function main2: + s1 FROM i (and SELF) +[from] Function main: + sz_str FROM \nothing + sz_typ FROM \nothing + align_str FROM \nothing + align_typ FROM \nothing + s1 FROM i (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main1: + sz_str; sz_typ; align_str; align_typ +[inout] Inputs for function main1: + \nothing +[inout] Out (internal) for function main2: + s1; p +[inout] Inputs for function main2: + i +[inout] Out (internal) for function main: + sz_str; sz_typ; align_str; align_typ; s1 +[inout] Inputs for function main: + i +/* Generated by Frama-C */ +struct s { + int t[10] ; +}; +int sz_str; +int sz_typ; +int align_str; +int align_typ; +void main1(void) +{ + sz_str = (int)sizeof("ONE"); + /*@ assert sz_str ≡ sizeof("ONE"); */ ; + align_str = (int)__alignof__("FOO"); + sz_typ = (int)sizeof(char); + /*@ assert sz_typ ≡ sizeof(char); */ ; + align_typ = (int)__alignof__(char *); + /*@ assert sizeof("BLA") ≢ sizeof("FOOBAR"); */ ; + return; +} + +struct s s1; +int volatile i; +void main2(void) +{ + struct s *p; + p = & s1 + (int)(& s1); + /*@ assert + Value: index_bound: (unsigned int)(sizeof(s1.t)-(unsigned int)i) < 10; + */ + /*@ assert + Value: mem_access: + \valid(&p->t[(unsigned int)(sizeof(s1.t)-(unsigned int)i)]); + */ + p->t[sizeof(s1.t) - (unsigned int)i] = 1; + /*@ assert + Value: index_bound: (unsigned int)(sizeof(s1.t)-(unsigned int)i) < 10; + */ + /*@ assert + Value: mem_access: + \valid(&p->t[(unsigned int)(sizeof(s1.t)-(unsigned int)i)]); + */ + p->t[sizeof(s1.t) - (unsigned int)i] = 2; + return; +} + +void main(void) +{ + main1(); + main2(); + return; +} + + diff --git a/tests/value/oracle_symblocs/slevel_return.err.oracle b/tests/value/oracle_symblocs/slevel_return.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/slevel_return.res.oracle b/tests/value/oracle_symblocs/slevel_return.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..b697ceee302b9620c1b5bdd67af150086d75d959 --- /dev/null +++ b/tests/value/oracle_symblocs/slevel_return.res.oracle @@ -0,0 +1,68 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/slevel_return.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + x ∈ {0} + y ∈ {0} +[value] computing for function main1 <- main. + Called from tests/value/slevel_return.i:44. +tests/value/slevel_return.i:7:[value] function main1: postcondition got status valid. +[value] Recording results for main1 +[value] Done for function main1 +[value] computing for function main2 <- main. + Called from tests/value/slevel_return.i:45. +[value] DUMPING STATE of file tests/value/slevel_return.i line 38 + x ∈ {-3} + y ∈ {0; 1; 6} + c ∈ [--..--] + c ∈ [--..--] + =END OF DUMP== +tests/value/slevel_return.i:23:[value] function main2: postcondition got status valid. +[value] Recording results for main2 +[value] Done for function main2 +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main1: + x ∈ {-3; 0; 5} + y ∈ {0; 1; 6} +[value:final-states] Values at end of function main2: + x ∈ {-3; 0; 5} + y ∈ {0; 1; 6} +[value:final-states] Values at end of function main: + x ∈ {-3; 0; 5} + y ∈ {0; 1; 6} +[from] Computing for function main1 +[from] Done for function main1 +[from] Computing for function main2 +[from] Computing for function Frama_C_dump_each <-main2 +[from] Done for function Frama_C_dump_each +[from] Done for function main2 +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main1: + x FROM c + y FROM c (and SELF) +[from] Function main2: + x FROM c + y FROM c (and SELF) +[from] Function main: + x FROM c + y FROM c (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main1: + x; y +[inout] Inputs for function main1: + \nothing +[inout] Out (internal) for function main2: + x; y +[inout] Inputs for function main2: + \nothing +[inout] Out (internal) for function main: + x; y +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/slevelex.err.oracle b/tests/value/oracle_symblocs/slevelex.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/slevelex.res.oracle b/tests/value/oracle_symblocs/slevelex.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..47fa5ca897e8c88b6ce4add853776efc931ab524 --- /dev/null +++ b/tests/value/oracle_symblocs/slevelex.res.oracle @@ -0,0 +1,114 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/slevelex.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + c ∈ [--..--] +tests/value/slevelex.i:80:[value] warning: assertion got status unknown. +[value] Called Frama_C_show_each_xy({1; 2}, {1; 2}) +[value] computing for function f <- main. + Called from tests/value/slevelex.i:83. +[value] Recording results for f +[value] Done for function f +tests/value/slevelex.i:84:[value] assertion got status valid. +[value] computing for function gu <- main. + Called from tests/value/slevelex.i:88. +tests/value/slevelex.i:26:[value] assertion got status valid. +[value] Called Frama_C_show_each_u({1}) +[value] Called Frama_C_show_each_u({2}) +[value] Called Frama_C_show_each_u({3}) +[value] Called Frama_C_show_each_u({4}) +[value] Called Frama_C_show_each_u({5}) +[value] Called Frama_C_show_each_u({6}) +[value] Called Frama_C_show_each_u({7}) +[value] Called Frama_C_show_each_u({8}) +[value] Called Frama_C_show_each_u({9}) +[value] Called Frama_C_show_each_u({10}) +[value] Called Frama_C_show_each_u({11}) +[value] Called Frama_C_show_each_u({12}) +[value] Called Frama_C_show_each_u({13}) +[value] Called Frama_C_show_each_u({14}) +[value] Called Frama_C_show_each_u({15}) +[value] Called Frama_C_show_each_u({16}) +[value] Called Frama_C_show_each_u({17}) +[value] Called Frama_C_show_each_u({18}) +[value] Called Frama_C_show_each_u({19}) +[value] Called Frama_C_show_each_u({20}) +[value] Recording results for gu +[value] Done for function gu +[value] computing for function ginc <- main. + Called from tests/value/slevelex.i:89. +tests/value/slevelex.i:49:[value] assertion got status valid. +[value] Called Frama_C_show_each_inc({4}) +[value] Called Frama_C_show_each_inc({8}) +[value] Called Frama_C_show_each_inc({12}) +[value] Called Frama_C_show_each_inc({16}) +[value] Called Frama_C_show_each_inc({20}) +[value] Called Frama_C_show_each_inc({24}) +[value] Called Frama_C_show_each_inc({28}) +[value] Called Frama_C_show_each_inc({32}) +[value] Called Frama_C_show_each_inc({36}) +[value] Called Frama_C_show_each_inc({40}) +[value] Called Frama_C_show_each_inc({44}) +[value] Called Frama_C_show_each_inc({48}) +[value] Called Frama_C_show_each_inc({52}) +[value] Called Frama_C_show_each_inc({56}) +[value] Called Frama_C_show_each_inc({60}) +[value] Called Frama_C_show_each_inc({64}) +[value] Called Frama_C_show_each_inc({68}) +[value] Called Frama_C_show_each_inc({72}) +[value] Called Frama_C_show_each_inc({76}) +[value] Called Frama_C_show_each_inc({80}) +[value] Recording results for ginc +[value] Done for function ginc +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + x ∈ {1; 2} + y ∈ {1; 2} + __retres ∈ {0} +[value:final-states] Values at end of function ginc: + inc ∈ [4..80],0%4 +[value:final-states] Values at end of function gu: + +[value:final-states] Values at end of function main: + un ∈ [1..20] + x ∈ {0} + y ∈ {1; 2} +[from] Computing for function f +[from] Done for function f +[from] Computing for function ginc +[from] Done for function ginc +[from] Computing for function gu +[from] Done for function gu +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + \result FROM c +[from] Function ginc: + NO EFFECTS +[from] Function gu: + NO EFFECTS +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + x; y; __retres +[inout] Inputs for function f: + c +[inout] Out (internal) for function ginc: + inc +[inout] Inputs for function ginc: + \nothing +[inout] Out (internal) for function gu: + \nothing +[inout] Inputs for function gu: + \nothing +[inout] Out (internal) for function main: + un; x; y +[inout] Inputs for function main: + c diff --git a/tests/value/oracle_symblocs/small_conditionals.err.oracle b/tests/value/oracle_symblocs/small_conditionals.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/small_conditionals.res.oracle b/tests/value/oracle_symblocs/small_conditionals.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..3c0ffe364133b9e865b14d5b7a5affdf3b495531 --- /dev/null +++ b/tests/value/oracle_symblocs/small_conditionals.res.oracle @@ -0,0 +1,27 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/small_conditionals.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + Y ∈ {0} + Z ∈ {0} + U ∈ {0} +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + Y ∈ [--..--] + Z ∈ {4} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + Y FROM X + Z FROM U +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + Y; Z; tmp +[inout] Inputs for function main: + U diff --git a/tests/value/oracle_symblocs/sort4.0.err.oracle b/tests/value/oracle_symblocs/sort4.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/sort4.0.res.oracle b/tests/value/oracle_symblocs/sort4.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..6660e10aa8c9fc466a593676508cc9415d328fc0 --- /dev/null +++ b/tests/value/oracle_symblocs/sort4.0.res.oracle @@ -0,0 +1,35 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/sort4.i (no preprocessing) +tests/value/sort4.i:25:[kernel] warning: parsing obsolete ACSL construct '\valid_range(addr,min,max)'. '\valid(addr+(min..max))' should be used instead. +[value] Analyzing an incomplete application starting at sort4_1 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + a ∈ [--..--] + b ∈ [--..--] + c ∈ [--..--] + d ∈ [--..--] +tests/value/sort4.i:20:[value] warning: assertion got status unknown. +[value] Recording results for sort4_1 +[value] done for function sort4_1 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function sort4_1: + a ∈ [--..--] + b ∈ [--..--] + c ∈ [--..--] + d ∈ [--..--] + tmp ∈ [-2147483647..2147483647] or UNINITIALIZED +[from] Computing for function sort4_1 +[from] Done for function sort4_1 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function sort4_1: + a FROM a; b; c; d (and SELF) + b FROM a; b; c; d (and SELF) + c FROM a; b; c; d (and SELF) + d FROM a; b; c; d (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function sort4_1: + a; b; c; d; tmp +[inout] Inputs for function sort4_1: + a; b; c; d diff --git a/tests/value/oracle_symblocs/sort4.1.err.oracle b/tests/value/oracle_symblocs/sort4.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/sort4.1.res.oracle b/tests/value/oracle_symblocs/sort4.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..a1ca2cc0618da1ce1ec036cb11069f285a046b50 --- /dev/null +++ b/tests/value/oracle_symblocs/sort4.1.res.oracle @@ -0,0 +1,56 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/sort4.i (no preprocessing) +tests/value/sort4.i:25:[kernel] warning: parsing obsolete ACSL construct '\valid_range(addr,min,max)'. '\valid(addr+(min..max))' should be used instead. +[value] Analyzing an incomplete application starting at sort4_4 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + a ∈ [--..--] + b ∈ [--..--] + c ∈ [--..--] + d ∈ [--..--] +tests/value/sort4.i:25:[value] warning: function sort4_4: precondition got status unknown. +tests/value/sort4.i:29:[value] warning: out of bounds read. assert \valid_read(t+1); +tests/value/sort4.i:29:[value] warning: out of bounds read. assert \valid_read(t+1); +tests/value/sort4.i:29:[value] warning: out of bounds write. assert \valid(t+1); +tests/value/sort4.i:30:[value] warning: out of bounds read. assert \valid_read(t+2); +tests/value/sort4.i:30:[value] warning: out of bounds read. assert \valid_read(t+3); +tests/value/sort4.i:30:[value] warning: out of bounds read. assert \valid_read(t+2); +tests/value/sort4.i:30:[value] warning: out of bounds write. assert \valid(t+2); +tests/value/sort4.i:30:[value] warning: out of bounds read. assert \valid_read(t+3); +tests/value/sort4.i:30:[value] warning: out of bounds write. assert \valid(t+3); +tests/value/sort4.i:31:[value] warning: out of bounds read. assert \valid_read(t+2); +tests/value/sort4.i:31:[value] warning: out of bounds read. assert \valid_read(t+2); +tests/value/sort4.i:31:[value] warning: out of bounds write. assert \valid(t+2); +tests/value/sort4.i:32:[value] warning: out of bounds read. assert \valid_read(t+1); +tests/value/sort4.i:32:[value] warning: out of bounds read. assert \valid_read(t+3); +tests/value/sort4.i:32:[value] warning: out of bounds read. assert \valid_read(t+1); +tests/value/sort4.i:32:[value] warning: out of bounds write. assert \valid(t+1); +tests/value/sort4.i:32:[value] warning: out of bounds read. assert \valid_read(t+3); +tests/value/sort4.i:32:[value] warning: out of bounds write. assert \valid(t+3); +tests/value/sort4.i:33:[value] warning: out of bounds read. assert \valid_read(t+1); +tests/value/sort4.i:33:[value] warning: out of bounds read. assert \valid_read(t+2); +tests/value/sort4.i:33:[value] warning: out of bounds read. assert \valid_read(t+1); +tests/value/sort4.i:33:[value] warning: out of bounds write. assert \valid(t+1); +tests/value/sort4.i:33:[value] warning: out of bounds read. assert \valid_read(t+2); +tests/value/sort4.i:33:[value] warning: out of bounds write. assert \valid(t+2); +tests/value/sort4.i:26:[value] warning: function sort4_4: postcondition got status unknown. +[value] Recording results for sort4_4 +[value] done for function sort4_4 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function sort4_4: + tmp ∈ [-2147483647..2147483647] or UNINITIALIZED + S_t[0..3] ∈ [--..--] +[from] Computing for function sort4_4 +[from] Done for function sort4_4 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function sort4_4: + S_t[0] FROM t; S_t[0..3] (and SELF) + [1..2] FROM t; S_t[0..3] (and SELF) + [3] FROM t; S_t[0..3] (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function sort4_4: + tmp; S_t[0..3] +[inout] Inputs for function sort4_4: + S_t[0..3] diff --git a/tests/value/oracle_symblocs/sort4.2.err.oracle b/tests/value/oracle_symblocs/sort4.2.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/sort4.2.res.oracle b/tests/value/oracle_symblocs/sort4.2.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..a5d63e73a18d2db91d74400c543225752d1de74e --- /dev/null +++ b/tests/value/oracle_symblocs/sort4.2.res.oracle @@ -0,0 +1,44 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/sort4.i (no preprocessing) +tests/value/sort4.i:25:[kernel] warning: parsing obsolete ACSL construct '\valid_range(addr,min,max)'. '\valid(addr+(min..max))' should be used instead. +[value] Analyzing an incomplete application starting at sort4_3 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + a ∈ [--..--] + b ∈ [--..--] + c ∈ [--..--] + d ∈ [--..--] +tests/value/sort4.i:59:[value] warning: function sort4_3: precondition got status unknown. +tests/value/sort4.i:61:[value] warning: function sort4_3: postcondition got status unknown. +[value] Recording results for sort4_3 +[value] done for function sort4_3 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function sort4_3: + tmp ∈ [-2147483647..2147483647] or UNINITIALIZED + S_d_0[0..1] ∈ [--..--] + S_c_0[0..1] ∈ [--..--] + S_b_0[0..1] ∈ [--..--] + S_a_0[0..1] ∈ [--..--] +[from] Computing for function sort4_3 +[from] Done for function sort4_3 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function sort4_3: + S_d_0[0] + FROM a_0; b_0; c_0; d_0; S_d_0[0]; S_c_0[0]; S_b_0[0]; + S_a_0[0] (and SELF) + S_c_0[0] + FROM a_0; b_0; c_0; d_0; S_d_0[0]; S_c_0[0]; S_b_0[0]; + S_a_0[0] (and SELF) + S_b_0[0] + FROM a_0; b_0; c_0; d_0; S_d_0[0]; S_c_0[0]; S_b_0[0]; + S_a_0[0] (and SELF) + S_a_0[0] + FROM a_0; b_0; c_0; d_0; S_d_0[0]; S_c_0[0]; S_b_0[0]; + S_a_0[0] (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function sort4_3: + tmp; S_d_0[0]; S_c_0[0]; S_b_0[0]; S_a_0[0] +[inout] Inputs for function sort4_3: + S_d_0[0]; S_c_0[0]; S_b_0[0]; S_a_0[0] diff --git a/tests/value/oracle_symblocs/split_return.0.err.oracle b/tests/value/oracle_symblocs/split_return.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/split_return.0.res.oracle b/tests/value/oracle_symblocs/split_return.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..53e7c9d8b75d5ac6534df544d772210b00d9a364 --- /dev/null +++ b/tests/value/oracle_symblocs/split_return.0.res.oracle @@ -0,0 +1,382 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/split_return.i (no preprocessing) +[value] warning: ignoring non-existing function 'NON_EXISTING'. +[value] Splitting return states on: + \return(f2) == 0 (user) + \return(f3) == -2, -4 (user) + \return(f4) == 4 (user) + \return(f5) == -2 (user) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + i2 ∈ [--..--] + i3 ∈ [--..--] + i4 ∈ [--..--] + i5 ∈ [--..--] + v ∈ [--..--] + v7 ∈ {0} +[value] computing for function main1 <- main. + Called from tests/value/split_return.i:175. +[value] computing for function init <- main1 <- main. + Called from tests/value/split_return.i:17. +[value] using specification for function init +[value] Done for function init +[value] Recording results for main1 +[value] Done for function main1 +[value] computing for function main2 <- main. + Called from tests/value/split_return.i:176. +[value] computing for function f2 <- main2 <- main. + Called from tests/value/split_return.i:47. +[value] Recording results for f2 +[value] Done for function f2 +[value] Called Frama_C_show_each_f2({0}, {0}) +[value] Called Frama_C_show_each_f2({5; 7}, {5}) +tests/value/split_return.i:50:[value] assertion got status valid. +[value] Called Frama_C_show_each_f2_2({5; 7}, {5}) +tests/value/split_return.i:53:[value] assertion got status valid. +[value] Recording results for main2 +[value] Done for function main2 +[value] computing for function main3 <- main. + Called from tests/value/split_return.i:177. +[value] computing for function f3 <- main3 <- main. + Called from tests/value/split_return.i:72. +tests/value/split_return.i:68:[value] f3: cannot properly split on \result == -2 +[value] Recording results for f3 +[value] Done for function f3 +[value] Called Frama_C_show_each_f3({-2; 7}, {0; 5}) +tests/value/split_return.i:75:[value] warning: assertion got status unknown. +tests/value/split_return.i:77:[value] warning: assertion got status unknown. +[value] Recording results for main3 +[value] Done for function main3 +[value] computing for function main4 <- main. + Called from tests/value/split_return.i:178. +[value] computing for function f4 <- main4 <- main. + Called from tests/value/split_return.i:93. +[value] Recording results for f4 +[value] Done for function f4 +[value] Called Frama_C_show_each_f4({4; 7}, {0; 5}) +tests/value/split_return.i:96:[value] warning: assertion got status unknown. +tests/value/split_return.i:98:[value] warning: assertion got status unknown. +[value] Recording results for main4 +[value] Done for function main4 +[value] computing for function main5 <- main. + Called from tests/value/split_return.i:179. +[value] computing for function f5 <- main5 <- main. + Called from tests/value/split_return.i:116. +[value] Recording results for f5 +[value] Done for function f5 +[value] Called Frama_C_show_each_f5({-2}, {0}) +[value] Called Frama_C_show_each_f5({7}, {5}) +tests/value/split_return.i:119:[value] assertion got status valid. +tests/value/split_return.i:121:[value] assertion got status valid. +[value] Recording results for main5 +[value] Done for function main5 +[value] computing for function main6 <- main. + Called from tests/value/split_return.i:180. +[value] computing for function f6 <- main6 <- main. + Called from tests/value/split_return.i:134. +tests/value/split_return.i:129:[value] warning: assertion got status unknown. +[value] Recording results for f6 +[value] Done for function f6 +[value] Recording results for main6 +[value] Done for function main6 +[value] computing for function main7 <- main. + Called from tests/value/split_return.i:181. +[value] computing for function f7 <- main7 <- main. + Called from tests/value/split_return.i:147. +[value] Recording results for f7 +[value] Done for function f7 +[value] Called Frama_C_show_each_NULL({{ NULL ; &v }}, {0; 1}) +[value] Recording results for main7 +[value] Done for function main7 +[value] computing for function main8 <- main. + Called from tests/value/split_return.i:182. +[value] computing for function f8 <- main8 <- main. + Called from tests/value/split_return.i:170. +[value] Recording results for f8 +[value] Done for function f8 +[value] Called Frama_C_show_each_then8({-1; 4}, {{ NULL ; &x }}) +[value] Recording results for main8 +[value] Done for function main8 +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f2: + i2 ∈ {0; 5} + __retres ∈ {0; 5; 7} +[value:final-states] Values at end of function f3: + i3 ∈ {0; 5} + res1 ∈ {-2; 7} + res2 ∈ {-2; 7} +[value:final-states] Values at end of function f4: + i4 ∈ {0; 5} + __retres ∈ {4; 7} +[value:final-states] Values at end of function f5: + i5 ∈ {0; 5} + res ∈ {-2; 7} +[value:final-states] Values at end of function f6: + i ∈ [-5..5] +[value:final-states] Values at end of function f7: + v7 ∈ {0; 1} + __retres ∈ {{ NULL ; &v }} +[value:final-states] Values at end of function f8: + x ∈ {-1; 4} + __retres ∈ {{ NULL ; &x }} +[value:final-states] Values at end of function main1: + x ∈ [0..2147483649] + r ∈ {0; 1} +[value:final-states] Values at end of function main2: + i2 ∈ {0; 5} + r ∈ {0; 5; 7} +[value:final-states] Values at end of function main3: + i3 ∈ {0; 5} + r ∈ {-2; 7} +[value:final-states] Values at end of function main4: + i4 ∈ {0; 5} + r ∈ {4; 7} +[value:final-states] Values at end of function main5: + i5 ∈ {0; 5} + r ∈ {-2; 7} +[value:final-states] Values at end of function main6: + +[value:final-states] Values at end of function main7: + v7 ∈ {0; 1} + p ∈ {{ NULL ; &v }} +[value:final-states] Values at end of function main8: + x ∈ {-1; 4} + pf ∈ {{ &f8 }} + p ∈ {{ NULL ; &x }} +[value:final-states] Values at end of function main: + i2 ∈ {0; 5} + i3 ∈ {0; 5} + i4 ∈ {0; 5} + i5 ∈ {0; 5} + v7 ∈ {0; 1} +[from] Computing for function f2 +[from] Done for function f2 +[from] Computing for function f3 +[from] Done for function f3 +[from] Computing for function f4 +[from] Done for function f4 +[from] Computing for function f5 +[from] Done for function f5 +[from] Computing for function f6 +[from] Done for function f6 +[from] Computing for function f7 +[from] Done for function f7 +[from] Computing for function f8 +[from] Done for function f8 +[from] Computing for function main1 +[from] Computing for function init <-main1 +[from] Done for function init +[from] Done for function main1 +[from] Computing for function main2 +[from] Done for function main2 +[from] Computing for function main3 +[from] Done for function main3 +[from] Computing for function main4 +[from] Done for function main4 +[from] Computing for function main5 +[from] Done for function main5 +[from] Computing for function main6 +[from] Done for function main6 +[from] Computing for function main7 +[from] Done for function main7 +[from] Computing for function main8 +[from] Done for function main8 +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f2: + i2 FROM i2 + \result FROM i2 +[from] Function f3: + i3 FROM i3 + \result FROM i3 +[from] Function f4: + i4 FROM i4 + \result FROM i4 +[from] Function f5: + i5 FROM i5 + \result FROM i5 +[from] Function f6: + \result FROM v +[from] Function f7: + v7 FROM v + \result FROM v +[from] Function f8: + x FROM v; p + \result FROM v; p +[from] Function init: + x FROM \nothing + \result FROM \nothing +[from] Function main1: + \result FROM \nothing +[from] Function main2: + i2 FROM i2 +[from] Function main3: + i3 FROM i3 +[from] Function main4: + i4 FROM i4 +[from] Function main5: + i5 FROM i5 +[from] Function main6: + NO EFFECTS +[from] Function main7: + v7 FROM v +[from] Function main8: + NO EFFECTS +[from] Function main: + i2 FROM i2 + i3 FROM i3 + i4 FROM i4 + i5 FROM i5 + v7 FROM v +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f2: + i2; __retres +[inout] Inputs for function f2: + i2 +[inout] Out (internal) for function f3: + i3; res1; res2 +[inout] Inputs for function f3: + i3 +[inout] Out (internal) for function f4: + i4; __retres +[inout] Inputs for function f4: + i4 +[inout] Out (internal) for function f5: + i5; res +[inout] Inputs for function f5: + i5 +[inout] Out (internal) for function f6: + i +[inout] Inputs for function f6: + v +[inout] Out (internal) for function f7: + v7; __retres +[inout] Inputs for function f7: + v +[inout] Out (internal) for function f8: + x; __retres +[inout] Inputs for function f8: + v +[inout] Out (internal) for function main1: + x; r +[inout] Inputs for function main1: + \nothing +[inout] Out (internal) for function main2: + i2; r +[inout] Inputs for function main2: + i2 +[inout] Out (internal) for function main3: + i3; r +[inout] Inputs for function main3: + i3 +[inout] Out (internal) for function main4: + i4; r +[inout] Inputs for function main4: + i4 +[inout] Out (internal) for function main5: + i5; r +[inout] Inputs for function main5: + i5 +[inout] Out (internal) for function main6: + tmp +[inout] Inputs for function main6: + v +[inout] Out (internal) for function main7: + v7; p +[inout] Inputs for function main7: + v; v7 +[inout] Out (internal) for function main8: + x; pf; p +[inout] Inputs for function main8: + v +[inout] Out (internal) for function main: + i2; i3; i4; i5; v7 +[inout] Inputs for function main: + i2; i3; i4; i5; v; v7 +[report] Computing properties status... + +-------------------------------------------------------------------------------- +--- Properties of Function 'init' +-------------------------------------------------------------------------------- + +[ Extern ] Post-condition (file tests/value/split_return.i, line 12) + Unverifiable but considered Valid. +[ Extern ] Assigns (file tests/value/split_return.i, line 10) + Unverifiable but considered Valid. +[ Extern ] Froms (file tests/value/split_return.i, line 10) + Unverifiable but considered Valid. +[ Extern ] Froms (file tests/value/split_return.i, line 11) + Unverifiable but considered Valid. +[ Valid ] Default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'main1' +-------------------------------------------------------------------------------- + +[ Dead ] Assertion (file tests/value/split_return.i, line 27) + Locally valid, but unreachable. + By Value because: + - Unreachable program point (file tests/value/split_return.i, line 27) +[Unreachable] Unreachable program point (file tests/value/split_return.i, line 27) + by Value. + +-------------------------------------------------------------------------------- +--- Properties of Function 'main2' +-------------------------------------------------------------------------------- + +[ Valid ] Assertion (file tests/value/split_return.i, line 50) + by Value. +[ Valid ] Assertion (file tests/value/split_return.i, line 53) + by Value. + +-------------------------------------------------------------------------------- +--- Properties of Function 'main3' +-------------------------------------------------------------------------------- + +[ - ] Assertion (file tests/value/split_return.i, line 75) + tried with Value. +[ - ] Assertion (file tests/value/split_return.i, line 77) + tried with Value. + +-------------------------------------------------------------------------------- +--- Properties of Function 'main4' +-------------------------------------------------------------------------------- + +[ - ] Assertion (file tests/value/split_return.i, line 96) + tried with Value. +[ - ] Assertion (file tests/value/split_return.i, line 98) + tried with Value. + +-------------------------------------------------------------------------------- +--- Properties of Function 'main5' +-------------------------------------------------------------------------------- + +[ Valid ] Assertion (file tests/value/split_return.i, line 119) + by Value. +[ Valid ] Assertion (file tests/value/split_return.i, line 121) + by Value. + +-------------------------------------------------------------------------------- +--- Properties of Function 'f6' +-------------------------------------------------------------------------------- + +[ - ] Assertion (file tests/value/split_return.i, line 129) + tried with Value. + +-------------------------------------------------------------------------------- +--- Status Report Summary +-------------------------------------------------------------------------------- + 5 Completely validated + 4 Considered valid + 5 To be validated + 1 Dead property + 1 Unreachable + 16 Total +-------------------------------------------------------------------------------- diff --git a/tests/value/oracle_symblocs/split_return.1.err.oracle b/tests/value/oracle_symblocs/split_return.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/split_return.1.res.oracle b/tests/value/oracle_symblocs/split_return.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..c6564bb9f0eaf82943370fdea80eeff2d2833cb2 --- /dev/null +++ b/tests/value/oracle_symblocs/split_return.1.res.oracle @@ -0,0 +1,389 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/split_return.i (no preprocessing) +[value] Splitting return states on: + \return(f7) == 0, 3 (user) + \return(init) == 0 (auto) + \return(f2) == 0 (auto) + \return(f3) == -2 (auto) + \return(f4) == 4 (auto) + \return(f5) == -2 (auto) + \return(f6) == 0 (auto) + \return(f8) == 0 (auto) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + i2 ∈ [--..--] + i3 ∈ [--..--] + i4 ∈ [--..--] + i5 ∈ [--..--] + v ∈ [--..--] + v7 ∈ {0} +[value] computing for function main1 <- main. + Called from tests/value/split_return.i:175. +[value] computing for function init <- main1 <- main. + Called from tests/value/split_return.i:17. +[value] using specification for function init +[value] Done for function init +[value] Recording results for main1 +[value] Done for function main1 +[value] computing for function main2 <- main. + Called from tests/value/split_return.i:176. +[value] computing for function f2 <- main2 <- main. + Called from tests/value/split_return.i:47. +[value] Recording results for f2 +[value] Done for function f2 +[value] Called Frama_C_show_each_f2({0}, {0}) +[value] Called Frama_C_show_each_f2({5; 7}, {5}) +tests/value/split_return.i:50:[value] assertion got status valid. +[value] Called Frama_C_show_each_f2_2({5; 7}, {5}) +tests/value/split_return.i:53:[value] assertion got status valid. +[value] Recording results for main2 +[value] Done for function main2 +[value] computing for function main3 <- main. + Called from tests/value/split_return.i:177. +[value] computing for function f3 <- main3 <- main. + Called from tests/value/split_return.i:72. +[value] Recording results for f3 +[value] Done for function f3 +[value] Called Frama_C_show_each_f3({-2}, {0}) +[value] Called Frama_C_show_each_f3({7}, {5}) +tests/value/split_return.i:75:[value] assertion got status valid. +tests/value/split_return.i:77:[value] assertion got status valid. +[value] Recording results for main3 +[value] Done for function main3 +[value] computing for function main4 <- main. + Called from tests/value/split_return.i:178. +[value] computing for function f4 <- main4 <- main. + Called from tests/value/split_return.i:93. +[value] Recording results for f4 +[value] Done for function f4 +[value] Called Frama_C_show_each_f4({4}, {0}) +[value] Called Frama_C_show_each_f4({7}, {5}) +tests/value/split_return.i:96:[value] assertion got status valid. +tests/value/split_return.i:98:[value] assertion got status valid. +[value] Recording results for main4 +[value] Done for function main4 +[value] computing for function main5 <- main. + Called from tests/value/split_return.i:179. +[value] computing for function f5 <- main5 <- main. + Called from tests/value/split_return.i:116. +[value] Recording results for f5 +[value] Done for function f5 +[value] Called Frama_C_show_each_f5({-2}, {0}) +[value] Called Frama_C_show_each_f5({7}, {5}) +tests/value/split_return.i:119:[value] assertion got status valid. +tests/value/split_return.i:121:[value] assertion got status valid. +[value] Recording results for main5 +[value] Done for function main5 +[value] computing for function main6 <- main. + Called from tests/value/split_return.i:180. +[value] computing for function f6 <- main6 <- main. + Called from tests/value/split_return.i:134. +tests/value/split_return.i:129:[value] warning: assertion got status unknown. +tests/value/split_return.i:130:[value] f6: cannot properly split on \result == 0 +[value] Recording results for f6 +[value] Done for function f6 +[value] Recording results for main6 +[value] Done for function main6 +[value] computing for function main7 <- main. + Called from tests/value/split_return.i:181. +[value] computing for function f7 <- main7 <- main. + Called from tests/value/split_return.i:147. +[value] Recording results for f7 +[value] Done for function f7 +[value] Called Frama_C_show_each_NULL({0}, {0}) +[value] Called Frama_C_show_each_NULL({{ &v }}, {1}) +[value] Recording results for main7 +[value] Done for function main7 +[value] computing for function main8 <- main. + Called from tests/value/split_return.i:182. +[value] computing for function f8 <- main8 <- main. + Called from tests/value/split_return.i:170. +[value] Recording results for f8 +[value] Done for function f8 +[value] Called Frama_C_show_each_then8({-1}, {0}) +[value] Called Frama_C_show_each_then8({4}, {{ &x }}) +[value] Recording results for main8 +[value] Done for function main8 +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f2: + i2 ∈ {0; 5} + __retres ∈ {0; 5; 7} +[value:final-states] Values at end of function f3: + i3 ∈ {0; 5} + res1 ∈ {-2; 7} + res2 ∈ {-2; 7} +[value:final-states] Values at end of function f4: + i4 ∈ {0; 5} + __retres ∈ {4; 7} +[value:final-states] Values at end of function f5: + i5 ∈ {0; 5} + res ∈ {-2; 7} +[value:final-states] Values at end of function f6: + i ∈ [-5..5] +[value:final-states] Values at end of function f7: + v7 ∈ {0; 1} + __retres ∈ {{ NULL ; &v }} +[value:final-states] Values at end of function f8: + x ∈ {-1; 4} + __retres ∈ {{ NULL ; &x }} +[value:final-states] Values at end of function main1: + x ∈ [0..2147483649] + r ∈ {0; 1} +[value:final-states] Values at end of function main2: + i2 ∈ {0; 5} + r ∈ {0; 5; 7} +[value:final-states] Values at end of function main3: + i3 ∈ {0; 5} + r ∈ {-2; 7} +[value:final-states] Values at end of function main4: + i4 ∈ {0; 5} + r ∈ {4; 7} +[value:final-states] Values at end of function main5: + i5 ∈ {0; 5} + r ∈ {-2; 7} +[value:final-states] Values at end of function main6: + +[value:final-states] Values at end of function main7: + v7 ∈ {0; 1} + p ∈ {{ NULL ; &v }} +[value:final-states] Values at end of function main8: + x ∈ {-1; 4} + pf ∈ {{ &f8 }} + p ∈ {{ NULL ; &x }} +[value:final-states] Values at end of function main: + i2 ∈ {0; 5} + i3 ∈ {0; 5} + i4 ∈ {0; 5} + i5 ∈ {0; 5} + v7 ∈ {0; 1} +[from] Computing for function f2 +[from] Done for function f2 +[from] Computing for function f3 +[from] Done for function f3 +[from] Computing for function f4 +[from] Done for function f4 +[from] Computing for function f5 +[from] Done for function f5 +[from] Computing for function f6 +[from] Done for function f6 +[from] Computing for function f7 +[from] Done for function f7 +[from] Computing for function f8 +[from] Done for function f8 +[from] Computing for function main1 +[from] Computing for function init <-main1 +[from] Done for function init +[from] Done for function main1 +[from] Computing for function main2 +[from] Done for function main2 +[from] Computing for function main3 +[from] Done for function main3 +[from] Computing for function main4 +[from] Done for function main4 +[from] Computing for function main5 +[from] Done for function main5 +[from] Computing for function main6 +[from] Done for function main6 +[from] Computing for function main7 +[from] Done for function main7 +[from] Computing for function main8 +[from] Done for function main8 +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f2: + i2 FROM i2 + \result FROM i2 +[from] Function f3: + i3 FROM i3 + \result FROM i3 +[from] Function f4: + i4 FROM i4 + \result FROM i4 +[from] Function f5: + i5 FROM i5 + \result FROM i5 +[from] Function f6: + \result FROM v +[from] Function f7: + v7 FROM v + \result FROM v +[from] Function f8: + x FROM v; p + \result FROM v; p +[from] Function init: + x FROM \nothing + \result FROM \nothing +[from] Function main1: + \result FROM \nothing +[from] Function main2: + i2 FROM i2 +[from] Function main3: + i3 FROM i3 +[from] Function main4: + i4 FROM i4 +[from] Function main5: + i5 FROM i5 +[from] Function main6: + NO EFFECTS +[from] Function main7: + v7 FROM v +[from] Function main8: + NO EFFECTS +[from] Function main: + i2 FROM i2 + i3 FROM i3 + i4 FROM i4 + i5 FROM i5 + v7 FROM v +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f2: + i2; __retres +[inout] Inputs for function f2: + i2 +[inout] Out (internal) for function f3: + i3; res1; res2 +[inout] Inputs for function f3: + i3 +[inout] Out (internal) for function f4: + i4; __retres +[inout] Inputs for function f4: + i4 +[inout] Out (internal) for function f5: + i5; res +[inout] Inputs for function f5: + i5 +[inout] Out (internal) for function f6: + i +[inout] Inputs for function f6: + v +[inout] Out (internal) for function f7: + v7; __retres +[inout] Inputs for function f7: + v +[inout] Out (internal) for function f8: + x; __retres +[inout] Inputs for function f8: + v +[inout] Out (internal) for function main1: + x; r +[inout] Inputs for function main1: + \nothing +[inout] Out (internal) for function main2: + i2; r +[inout] Inputs for function main2: + i2 +[inout] Out (internal) for function main3: + i3; r +[inout] Inputs for function main3: + i3 +[inout] Out (internal) for function main4: + i4; r +[inout] Inputs for function main4: + i4 +[inout] Out (internal) for function main5: + i5; r +[inout] Inputs for function main5: + i5 +[inout] Out (internal) for function main6: + tmp +[inout] Inputs for function main6: + v +[inout] Out (internal) for function main7: + v7; p +[inout] Inputs for function main7: + v; v7 +[inout] Out (internal) for function main8: + x; pf; p +[inout] Inputs for function main8: + v +[inout] Out (internal) for function main: + i2; i3; i4; i5; v7 +[inout] Inputs for function main: + i2; i3; i4; i5; v; v7 +[report] Computing properties status... + +-------------------------------------------------------------------------------- +--- Properties of Function 'init' +-------------------------------------------------------------------------------- + +[ Extern ] Post-condition (file tests/value/split_return.i, line 12) + Unverifiable but considered Valid. +[ Extern ] Assigns (file tests/value/split_return.i, line 10) + Unverifiable but considered Valid. +[ Extern ] Froms (file tests/value/split_return.i, line 10) + Unverifiable but considered Valid. +[ Extern ] Froms (file tests/value/split_return.i, line 11) + Unverifiable but considered Valid. +[ Valid ] Default behavior + by Frama-C kernel. + +-------------------------------------------------------------------------------- +--- Properties of Function 'main1' +-------------------------------------------------------------------------------- + +[ Dead ] Assertion (file tests/value/split_return.i, line 27) + Locally valid, but unreachable. + By Value because: + - Unreachable program point (file tests/value/split_return.i, line 27) +[Unreachable] Unreachable program point (file tests/value/split_return.i, line 27) + by Value. + +-------------------------------------------------------------------------------- +--- Properties of Function 'main2' +-------------------------------------------------------------------------------- + +[ Valid ] Assertion (file tests/value/split_return.i, line 50) + by Value. +[ Valid ] Assertion (file tests/value/split_return.i, line 53) + by Value. + +-------------------------------------------------------------------------------- +--- Properties of Function 'main3' +-------------------------------------------------------------------------------- + +[ Valid ] Assertion (file tests/value/split_return.i, line 75) + by Value. +[ Valid ] Assertion (file tests/value/split_return.i, line 77) + by Value. + +-------------------------------------------------------------------------------- +--- Properties of Function 'main4' +-------------------------------------------------------------------------------- + +[ Valid ] Assertion (file tests/value/split_return.i, line 96) + by Value. +[ Valid ] Assertion (file tests/value/split_return.i, line 98) + by Value. + +-------------------------------------------------------------------------------- +--- Properties of Function 'main5' +-------------------------------------------------------------------------------- + +[ Valid ] Assertion (file tests/value/split_return.i, line 119) + by Value. +[ Valid ] Assertion (file tests/value/split_return.i, line 121) + by Value. + +-------------------------------------------------------------------------------- +--- Properties of Function 'f6' +-------------------------------------------------------------------------------- + +[ - ] Assertion (file tests/value/split_return.i, line 129) + tried with Value. + +-------------------------------------------------------------------------------- +--- Status Report Summary +-------------------------------------------------------------------------------- + 9 Completely validated + 4 Considered valid + 1 To be validated + 1 Dead property + 1 Unreachable + 16 Total +-------------------------------------------------------------------------------- diff --git a/tests/value/oracle_symblocs/split_return.2.err.oracle b/tests/value/oracle_symblocs/split_return.2.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/split_return.2.res.oracle b/tests/value/oracle_symblocs/split_return.2.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..6ed663c953ebadf13b436d72ddd061756103b93e --- /dev/null +++ b/tests/value/oracle_symblocs/split_return.2.res.oracle @@ -0,0 +1,4 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/split_return.i (no preprocessing) +[value] user error: incorrect argument for option -slevel-function (no function 'NON_EXISTING'). +[kernel] Plug-in value aborted: invalid user input. diff --git a/tests/value/oracle_symblocs/split_return.3.err.oracle b/tests/value/oracle_symblocs/split_return.3.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/split_return.3.res.oracle b/tests/value/oracle_symblocs/split_return.3.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..2bc0683d697e72babebe6cff2cb2c3eee684730f --- /dev/null +++ b/tests/value/oracle_symblocs/split_return.3.res.oracle @@ -0,0 +1,390 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/split_return.i (no preprocessing) +[value] Splitting return states on: + \full_split(@all) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + i2 ∈ [--..--] + i3 ∈ [--..--] + i4 ∈ [--..--] + i5 ∈ [--..--] + v ∈ [--..--] + v7 ∈ {0} +[value] computing for function main1 <- main. + Called from tests/value/split_return.i:175. +[value] computing for function init <- main1 <- main. + Called from tests/value/split_return.i:17. +[value] using specification for function init +[value] Done for function init +[value] Recording results for main1 +[value] Done for function main1 +[value] computing for function main2 <- main. + Called from tests/value/split_return.i:176. +[value] computing for function f2 <- main2 <- main. + Called from tests/value/split_return.i:47. +[value] Recording results for f2 +[value] Done for function f2 +[value] Called Frama_C_show_each_f2({7}, {5}) +[value] Called Frama_C_show_each_f2({0}, {0}) +[value] Called Frama_C_show_each_f2({5}, {5}) +tests/value/split_return.i:50:[value] assertion got status valid. +[value] Called Frama_C_show_each_f2_2({7}, {5}) +[value] Called Frama_C_show_each_f2_2({5}, {5}) +tests/value/split_return.i:53:[value] assertion got status valid. +[value] Recording results for main2 +[value] Done for function main2 +[value] computing for function main3 <- main. + Called from tests/value/split_return.i:177. +[value] computing for function f3 <- main3 <- main. + Called from tests/value/split_return.i:72. +[value] Recording results for f3 +[value] Done for function f3 +[value] Called Frama_C_show_each_f3({7}, {5}) +[value] Called Frama_C_show_each_f3({-2}, {0}) +tests/value/split_return.i:75:[value] assertion got status valid. +tests/value/split_return.i:77:[value] assertion got status valid. +[value] Recording results for main3 +[value] Done for function main3 +[value] computing for function main3 <- main. + Called from tests/value/split_return.i:177. +[value] computing for function f3 <- main3 <- main. + Called from tests/value/split_return.i:72. +[value] Recording results for f3 +[value] Done for function f3 +[value] Called Frama_C_show_each_f3({7}, {5}) +[value] Called Frama_C_show_each_f3({-2}, {0}) +[value] Recording results for main3 +[value] Done for function main3 +[value] computing for function main4 <- main. + Called from tests/value/split_return.i:178. +[value] computing for function f4 <- main4 <- main. + Called from tests/value/split_return.i:93. +[value] Recording results for f4 +[value] Done for function f4 +[value] Called Frama_C_show_each_f4({7}, {5}) +[value] Called Frama_C_show_each_f4({4}, {0}) +tests/value/split_return.i:96:[value] assertion got status valid. +tests/value/split_return.i:98:[value] assertion got status valid. +[value] Recording results for main4 +[value] Done for function main4 +[value] computing for function main4 <- main. + Called from tests/value/split_return.i:178. +[value] computing for function f4 <- main4 <- main. + Called from tests/value/split_return.i:93. +[value] Recording results for f4 +[value] Done for function f4 +[value] Called Frama_C_show_each_f4({7}, {5}) +[value] Called Frama_C_show_each_f4({4}, {0}) +[value] Recording results for main4 +[value] Done for function main4 +[value] computing for function main4 <- main. + Called from tests/value/split_return.i:178. +[value] computing for function f4 <- main4 <- main. + Called from tests/value/split_return.i:93. +[value] Recording results for f4 +[value] Done for function f4 +[value] Called Frama_C_show_each_f4({7}, {5}) +[value] Called Frama_C_show_each_f4({4}, {0}) +[value] Recording results for main4 +[value] Done for function main4 +[value] computing for function main4 <- main. + Called from tests/value/split_return.i:178. +[value] computing for function f4 <- main4 <- main. + Called from tests/value/split_return.i:93. +[value] Recording results for f4 +[value] Done for function f4 +[value] Called Frama_C_show_each_f4({7}, {5}) +[value] Called Frama_C_show_each_f4({4}, {0}) +[value] Recording results for main4 +[value] Done for function main4 +[value] computing for function main5 <- main. + Called from tests/value/split_return.i:179. +[value] computing for function f5 <- main5 <- main. + Called from tests/value/split_return.i:116. +[value] Recording results for f5 +[value] Done for function f5 +[value] Called Frama_C_show_each_f5({-2}, {0}) +[value] Called Frama_C_show_each_f5({7}, {5}) +tests/value/split_return.i:119:[value] assertion got status valid. +tests/value/split_return.i:121:[value] assertion got status valid. +[value] Recording results for main5 +[value] Done for function main5 +[value] computing for function main6 <- main. + Called from tests/value/split_return.i:180. +[value] computing for function f6 <- main6 <- main. + Called from tests/value/split_return.i:134. +tests/value/split_return.i:129:[value] warning: assertion got status unknown. +[value] Recording results for f6 +[value] Done for function f6 +[value] Recording results for main6 +[value] Done for function main6 +[value] computing for function main6 <- main. + Called from tests/value/split_return.i:180. +[value] computing for function f6 <- main6 <- main. + Called from tests/value/split_return.i:134. +[value] Recording results for f6 +[value] Done for function f6 +[value] Recording results for main6 +[value] Done for function main6 +[value] computing for function main7 <- main. + Called from tests/value/split_return.i:181. +[value] computing for function f7 <- main7 <- main. + Called from tests/value/split_return.i:147. +[value] Recording results for f7 +[value] Done for function f7 +[value] Called Frama_C_show_each_NULL({0}, {0}) +[value] Called Frama_C_show_each_NULL({{ &v }}, {1}) +[value] Recording results for main7 +[value] Done for function main7 +[value] computing for function main7 <- main. + Called from tests/value/split_return.i:181. +[value] computing for function f7 <- main7 <- main. + Called from tests/value/split_return.i:147. +[value] Recording results for f7 +[value] Done for function f7 +[value] Called Frama_C_show_each_NULL({0}, {0}) +[value] Called Frama_C_show_each_NULL({{ &v }}, {1}) +[value] Recording results for main7 +[value] Done for function main7 +[value] computing for function main8 <- main. + Called from tests/value/split_return.i:182. +[value] computing for function f8 <- main8 <- main. + Called from tests/value/split_return.i:170. +[value] Recording results for f8 +[value] Done for function f8 +[value] Called Frama_C_show_each_then8({4}, {{ &x }}) +[value] Called Frama_C_show_each_then8({-1}, {0}) +[value] Recording results for main8 +[value] Done for function main8 +[value] computing for function main8 <- main. + Called from tests/value/split_return.i:182. +[value] computing for function f8 <- main8 <- main. + Called from tests/value/split_return.i:170. +[value] Recording results for f8 +[value] Done for function f8 +[value] Called Frama_C_show_each_then8({4}, {{ &x }}) +[value] Called Frama_C_show_each_then8({-1}, {0}) +[value] Recording results for main8 +[value] Done for function main8 +[value] computing for function main8 <- main. + Called from tests/value/split_return.i:182. +[value] computing for function f8 <- main8 <- main. + Called from tests/value/split_return.i:170. +[value] Recording results for f8 +[value] Done for function f8 +[value] Called Frama_C_show_each_then8({4}, {{ &x }}) +[value] Called Frama_C_show_each_then8({-1}, {0}) +[value] Recording results for main8 +[value] Done for function main8 +[value] computing for function main8 <- main. + Called from tests/value/split_return.i:182. +[value] computing for function f8 <- main8 <- main. + Called from tests/value/split_return.i:170. +[value] Recording results for f8 +[value] Done for function f8 +[value] Called Frama_C_show_each_then8({4}, {{ &x }}) +[value] Called Frama_C_show_each_then8({-1}, {0}) +[value] Recording results for main8 +[value] Done for function main8 +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f2: + i2 ∈ {0; 5} + __retres ∈ {0; 5; 7} +[value:final-states] Values at end of function f3: + i3 ∈ {0; 5} + res1 ∈ {-2; 7} + res2 ∈ {-2; 7} +[value:final-states] Values at end of function f4: + i4 ∈ {0; 5} + __retres ∈ {4; 7} +[value:final-states] Values at end of function f5: + i5 ∈ {0; 5} + res ∈ {-2; 7} +[value:final-states] Values at end of function f6: + i ∈ [-5..5] +[value:final-states] Values at end of function f7: + v7 ∈ {0; 1} + __retres ∈ {{ NULL ; &v }} +[value:final-states] Values at end of function f8: + x ∈ {-1; 4} + __retres ∈ {{ NULL ; &x }} +[value:final-states] Values at end of function main1: + x ∈ [0..2147483649] + r ∈ {0; 1} +[value:final-states] Values at end of function main2: + i2 ∈ {0; 5} + r ∈ {0; 5; 7} +[value:final-states] Values at end of function main3: + i3 ∈ {0; 5} + r ∈ {-2; 7} +[value:final-states] Values at end of function main4: + i4 ∈ {0; 5} + r ∈ {4; 7} +[value:final-states] Values at end of function main5: + i5 ∈ {0; 5} + r ∈ {-2; 7} +[value:final-states] Values at end of function main6: + +[value:final-states] Values at end of function main7: + v7 ∈ {0; 1} + p ∈ {{ NULL ; &v }} +[value:final-states] Values at end of function main8: + x ∈ {-1; 4} + pf ∈ {{ &f8 }} + p ∈ {{ NULL ; &x }} +[value:final-states] Values at end of function main: + i2 ∈ {0; 5} + i3 ∈ {0; 5} + i4 ∈ {0; 5} + i5 ∈ {0; 5} + v7 ∈ {0; 1} +[from] Computing for function f2 +[from] Done for function f2 +[from] Computing for function f3 +[from] Done for function f3 +[from] Computing for function f4 +[from] Done for function f4 +[from] Computing for function f5 +[from] Done for function f5 +[from] Computing for function f6 +[from] Done for function f6 +[from] Computing for function f7 +[from] Done for function f7 +[from] Computing for function f8 +[from] Done for function f8 +[from] Computing for function main1 +[from] Computing for function init <-main1 +[from] Done for function init +[from] Done for function main1 +[from] Computing for function main2 +[from] Done for function main2 +[from] Computing for function main3 +[from] Done for function main3 +[from] Computing for function main4 +[from] Done for function main4 +[from] Computing for function main5 +[from] Done for function main5 +[from] Computing for function main6 +[from] Done for function main6 +[from] Computing for function main7 +[from] Done for function main7 +[from] Computing for function main8 +[from] Done for function main8 +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f2: + i2 FROM i2 + \result FROM i2 +[from] Function f3: + i3 FROM i3 + \result FROM i3 +[from] Function f4: + i4 FROM i4 + \result FROM i4 +[from] Function f5: + i5 FROM i5 + \result FROM i5 +[from] Function f6: + \result FROM v +[from] Function f7: + v7 FROM v + \result FROM v +[from] Function f8: + x FROM v; p + \result FROM v; p +[from] Function init: + x FROM \nothing + \result FROM \nothing +[from] Function main1: + \result FROM \nothing +[from] Function main2: + i2 FROM i2 +[from] Function main3: + i3 FROM i3 +[from] Function main4: + i4 FROM i4 +[from] Function main5: + i5 FROM i5 +[from] Function main6: + NO EFFECTS +[from] Function main7: + v7 FROM v +[from] Function main8: + NO EFFECTS +[from] Function main: + i2 FROM i2 + i3 FROM i3 + i4 FROM i4 + i5 FROM i5 + v7 FROM v +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f2: + i2; __retres +[inout] Inputs for function f2: + i2 +[inout] Out (internal) for function f3: + i3; res1; res2 +[inout] Inputs for function f3: + i3 +[inout] Out (internal) for function f4: + i4; __retres +[inout] Inputs for function f4: + i4 +[inout] Out (internal) for function f5: + i5; res +[inout] Inputs for function f5: + i5 +[inout] Out (internal) for function f6: + i +[inout] Inputs for function f6: + v +[inout] Out (internal) for function f7: + v7; __retres +[inout] Inputs for function f7: + v +[inout] Out (internal) for function f8: + x; __retres +[inout] Inputs for function f8: + v +[inout] Out (internal) for function main1: + x; r +[inout] Inputs for function main1: + \nothing +[inout] Out (internal) for function main2: + i2; r +[inout] Inputs for function main2: + i2 +[inout] Out (internal) for function main3: + i3; r +[inout] Inputs for function main3: + i3 +[inout] Out (internal) for function main4: + i4; r +[inout] Inputs for function main4: + i4 +[inout] Out (internal) for function main5: + i5; r +[inout] Inputs for function main5: + i5 +[inout] Out (internal) for function main6: + tmp +[inout] Inputs for function main6: + v +[inout] Out (internal) for function main7: + v7; p +[inout] Inputs for function main7: + v; v7 +[inout] Out (internal) for function main8: + x; pf; p +[inout] Inputs for function main8: + v +[inout] Out (internal) for function main: + i2; i3; i4; i5; v7 +[inout] Inputs for function main: + i2; i3; i4; i5; v; v7 diff --git a/tests/value/oracle_symblocs/split_return.4.err.oracle b/tests/value/oracle_symblocs/split_return.4.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/split_return.4.res.oracle b/tests/value/oracle_symblocs/split_return.4.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..099b10211155f760d6a8f0f10d6820c6d9237356 --- /dev/null +++ b/tests/value/oracle_symblocs/split_return.4.res.oracle @@ -0,0 +1,774 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/split_return.i (no preprocessing) +[value] Splitting return states on: + \full_split(f2) + \return(f7) == 0, 3 (user) + other functions: + \full_split(@all) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + i2 ∈ [--..--] + i3 ∈ [--..--] + i4 ∈ [--..--] + i5 ∈ [--..--] + v ∈ [--..--] + v7 ∈ {0} +[value] computing for function main1 <- main. + Called from tests/value/split_return.i:175. +[value] computing for function init <- main1 <- main. + Called from tests/value/split_return.i:17. +[value] using specification for function init +[value] Done for function init +[value] Recording results for main1 +[value] Done for function main1 +[value] computing for function main2 <- main. + Called from tests/value/split_return.i:176. +[value] computing for function f2 <- main2 <- main. + Called from tests/value/split_return.i:47. +[value] Recording results for f2 +[value] Done for function f2 +[value] Called Frama_C_show_each_f2({7}, {5}) +[value] Called Frama_C_show_each_f2({0}, {0}) +[value] Called Frama_C_show_each_f2({5}, {5}) +tests/value/split_return.i:50:[value] assertion got status valid. +[value] Called Frama_C_show_each_f2_2({7}, {5}) +[value] Called Frama_C_show_each_f2_2({5}, {5}) +tests/value/split_return.i:53:[value] assertion got status valid. +[value] Recording results for main2 +[value] Done for function main2 +[value] computing for function main3 <- main. + Called from tests/value/split_return.i:177. +[value] computing for function f3 <- main3 <- main. + Called from tests/value/split_return.i:72. +[value] Recording results for f3 +[value] Done for function f3 +[value] Called Frama_C_show_each_f3({7}, {5}) +[value] Called Frama_C_show_each_f3({-2}, {0}) +tests/value/split_return.i:75:[value] assertion got status valid. +tests/value/split_return.i:77:[value] assertion got status valid. +[value] Recording results for main3 +[value] Done for function main3 +[value] computing for function main3 <- main. + Called from tests/value/split_return.i:177. +[value] computing for function f3 <- main3 <- main. + Called from tests/value/split_return.i:72. +[value] Recording results for f3 +[value] Done for function f3 +[value] Called Frama_C_show_each_f3({7}, {5}) +[value] Called Frama_C_show_each_f3({-2}, {0}) +[value] Recording results for main3 +[value] Done for function main3 +[value] computing for function main4 <- main. + Called from tests/value/split_return.i:178. +[value] computing for function f4 <- main4 <- main. + Called from tests/value/split_return.i:93. +[value] Recording results for f4 +[value] Done for function f4 +[value] Called Frama_C_show_each_f4({7}, {5}) +[value] Called Frama_C_show_each_f4({4}, {0}) +tests/value/split_return.i:96:[value] assertion got status valid. +tests/value/split_return.i:98:[value] assertion got status valid. +[value] Recording results for main4 +[value] Done for function main4 +[value] computing for function main4 <- main. + Called from tests/value/split_return.i:178. +[value] computing for function f4 <- main4 <- main. + Called from tests/value/split_return.i:93. +[value] Recording results for f4 +[value] Done for function f4 +[value] Called Frama_C_show_each_f4({7}, {5}) +[value] Called Frama_C_show_each_f4({4}, {0}) +[value] Recording results for main4 +[value] Done for function main4 +[value] computing for function main4 <- main. + Called from tests/value/split_return.i:178. +[value] computing for function f4 <- main4 <- main. + Called from tests/value/split_return.i:93. +[value] Recording results for f4 +[value] Done for function f4 +[value] Called Frama_C_show_each_f4({7}, {5}) +[value] Called Frama_C_show_each_f4({4}, {0}) +[value] Recording results for main4 +[value] Done for function main4 +[value] computing for function main4 <- main. + Called from tests/value/split_return.i:178. +[value] computing for function f4 <- main4 <- main. + Called from tests/value/split_return.i:93. +[value] Recording results for f4 +[value] Done for function f4 +[value] Called Frama_C_show_each_f4({7}, {5}) +[value] Called Frama_C_show_each_f4({4}, {0}) +[value] Recording results for main4 +[value] Done for function main4 +[value] computing for function main5 <- main. + Called from tests/value/split_return.i:179. +[value] computing for function f5 <- main5 <- main. + Called from tests/value/split_return.i:116. +[value] Recording results for f5 +[value] Done for function f5 +[value] Called Frama_C_show_each_f5({-2}, {0}) +[value] Called Frama_C_show_each_f5({7}, {5}) +tests/value/split_return.i:119:[value] assertion got status valid. +tests/value/split_return.i:121:[value] assertion got status valid. +[value] Recording results for main5 +[value] Done for function main5 +[value] computing for function main6 <- main. + Called from tests/value/split_return.i:180. +[value] computing for function f6 <- main6 <- main. + Called from tests/value/split_return.i:134. +tests/value/split_return.i:129:[value] warning: assertion got status unknown. +[value] Recording results for f6 +[value] Done for function f6 +[value] Recording results for main6 +[value] Done for function main6 +[value] computing for function main6 <- main. + Called from tests/value/split_return.i:180. +[value] computing for function f6 <- main6 <- main. + Called from tests/value/split_return.i:134. +[value] Recording results for f6 +[value] Done for function f6 +[value] Recording results for main6 +[value] Done for function main6 +[value] computing for function main7 <- main. + Called from tests/value/split_return.i:181. +[value] computing for function f7 <- main7 <- main. + Called from tests/value/split_return.i:147. +[value] Recording results for f7 +[value] Done for function f7 +[value] Called Frama_C_show_each_NULL({0}, {0}) +[value] Called Frama_C_show_each_NULL({{ &v }}, {1}) +[value] Recording results for main7 +[value] Done for function main7 +[value] computing for function main7 <- main. + Called from tests/value/split_return.i:181. +[value] computing for function f7 <- main7 <- main. + Called from tests/value/split_return.i:147. +[value] Recording results for f7 +[value] Done for function f7 +[value] Called Frama_C_show_each_NULL({0}, {0}) +[value] Called Frama_C_show_each_NULL({{ &v }}, {1}) +[value] Recording results for main7 +[value] Done for function main7 +[value] computing for function main8 <- main. + Called from tests/value/split_return.i:182. +[value] computing for function f8 <- main8 <- main. + Called from tests/value/split_return.i:170. +[value] Recording results for f8 +[value] Done for function f8 +[value] Called Frama_C_show_each_then8({4}, {{ &x }}) +[value] Called Frama_C_show_each_then8({-1}, {0}) +[value] Recording results for main8 +[value] Done for function main8 +[value] computing for function main8 <- main. + Called from tests/value/split_return.i:182. +[value] computing for function f8 <- main8 <- main. + Called from tests/value/split_return.i:170. +[value] Recording results for f8 +[value] Done for function f8 +[value] Called Frama_C_show_each_then8({4}, {{ &x }}) +[value] Called Frama_C_show_each_then8({-1}, {0}) +[value] Recording results for main8 +[value] Done for function main8 +[value] computing for function main8 <- main. + Called from tests/value/split_return.i:182. +[value] computing for function f8 <- main8 <- main. + Called from tests/value/split_return.i:170. +[value] Recording results for f8 +[value] Done for function f8 +[value] Called Frama_C_show_each_then8({4}, {{ &x }}) +[value] Called Frama_C_show_each_then8({-1}, {0}) +[value] Recording results for main8 +[value] Done for function main8 +[value] computing for function main8 <- main. + Called from tests/value/split_return.i:182. +[value] computing for function f8 <- main8 <- main. + Called from tests/value/split_return.i:170. +[value] Recording results for f8 +[value] Done for function f8 +[value] Called Frama_C_show_each_then8({4}, {{ &x }}) +[value] Called Frama_C_show_each_then8({-1}, {0}) +[value] Recording results for main8 +[value] Done for function main8 +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f2: + i2 ∈ {0; 5} + __retres ∈ {0; 5; 7} +[value:final-states] Values at end of function f3: + i3 ∈ {0; 5} + res1 ∈ {-2; 7} + res2 ∈ {-2; 7} +[value:final-states] Values at end of function f4: + i4 ∈ {0; 5} + __retres ∈ {4; 7} +[value:final-states] Values at end of function f5: + i5 ∈ {0; 5} + res ∈ {-2; 7} +[value:final-states] Values at end of function f6: + i ∈ [-5..5] +[value:final-states] Values at end of function f7: + v7 ∈ {0; 1} + __retres ∈ {{ NULL ; &v }} +[value:final-states] Values at end of function f8: + x ∈ {-1; 4} + __retres ∈ {{ NULL ; &x }} +[value:final-states] Values at end of function main1: + x ∈ [0..2147483649] + r ∈ {0; 1} +[value:final-states] Values at end of function main2: + i2 ∈ {0; 5} + r ∈ {0; 5; 7} +[value:final-states] Values at end of function main3: + i3 ∈ {0; 5} + r ∈ {-2; 7} +[value:final-states] Values at end of function main4: + i4 ∈ {0; 5} + r ∈ {4; 7} +[value:final-states] Values at end of function main5: + i5 ∈ {0; 5} + r ∈ {-2; 7} +[value:final-states] Values at end of function main6: + +[value:final-states] Values at end of function main7: + v7 ∈ {0; 1} + p ∈ {{ NULL ; &v }} +[value:final-states] Values at end of function main8: + x ∈ {-1; 4} + pf ∈ {{ &f8 }} + p ∈ {{ NULL ; &x }} +[value:final-states] Values at end of function main: + i2 ∈ {0; 5} + i3 ∈ {0; 5} + i4 ∈ {0; 5} + i5 ∈ {0; 5} + v7 ∈ {0; 1} +[from] Computing for function f2 +[from] Done for function f2 +[from] Computing for function f3 +[from] Done for function f3 +[from] Computing for function f4 +[from] Done for function f4 +[from] Computing for function f5 +[from] Done for function f5 +[from] Computing for function f6 +[from] Done for function f6 +[from] Computing for function f7 +[from] Done for function f7 +[from] Computing for function f8 +[from] Done for function f8 +[from] Computing for function main1 +[from] Computing for function init <-main1 +[from] Done for function init +[from] Done for function main1 +[from] Computing for function main2 +[from] Done for function main2 +[from] Computing for function main3 +[from] Done for function main3 +[from] Computing for function main4 +[from] Done for function main4 +[from] Computing for function main5 +[from] Done for function main5 +[from] Computing for function main6 +[from] Done for function main6 +[from] Computing for function main7 +[from] Done for function main7 +[from] Computing for function main8 +[from] Done for function main8 +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f2: + i2 FROM i2 + \result FROM i2 +[from] Function f3: + i3 FROM i3 + \result FROM i3 +[from] Function f4: + i4 FROM i4 + \result FROM i4 +[from] Function f5: + i5 FROM i5 + \result FROM i5 +[from] Function f6: + \result FROM v +[from] Function f7: + v7 FROM v + \result FROM v +[from] Function f8: + x FROM v; p + \result FROM v; p +[from] Function init: + x FROM \nothing + \result FROM \nothing +[from] Function main1: + \result FROM \nothing +[from] Function main2: + i2 FROM i2 +[from] Function main3: + i3 FROM i3 +[from] Function main4: + i4 FROM i4 +[from] Function main5: + i5 FROM i5 +[from] Function main6: + NO EFFECTS +[from] Function main7: + v7 FROM v +[from] Function main8: + NO EFFECTS +[from] Function main: + i2 FROM i2 + i3 FROM i3 + i4 FROM i4 + i5 FROM i5 + v7 FROM v +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f2: + i2; __retres +[inout] Inputs for function f2: + i2 +[inout] Out (internal) for function f3: + i3; res1; res2 +[inout] Inputs for function f3: + i3 +[inout] Out (internal) for function f4: + i4; __retres +[inout] Inputs for function f4: + i4 +[inout] Out (internal) for function f5: + i5; res +[inout] Inputs for function f5: + i5 +[inout] Out (internal) for function f6: + i +[inout] Inputs for function f6: + v +[inout] Out (internal) for function f7: + v7; __retres +[inout] Inputs for function f7: + v +[inout] Out (internal) for function f8: + x; __retres +[inout] Inputs for function f8: + v +[inout] Out (internal) for function main1: + x; r +[inout] Inputs for function main1: + \nothing +[inout] Out (internal) for function main2: + i2; r +[inout] Inputs for function main2: + i2 +[inout] Out (internal) for function main3: + i3; r +[inout] Inputs for function main3: + i3 +[inout] Out (internal) for function main4: + i4; r +[inout] Inputs for function main4: + i4 +[inout] Out (internal) for function main5: + i5; r +[inout] Inputs for function main5: + i5 +[inout] Out (internal) for function main6: + tmp +[inout] Inputs for function main6: + v +[inout] Out (internal) for function main7: + v7; p +[inout] Inputs for function main7: + v; v7 +[inout] Out (internal) for function main8: + x; pf; p +[inout] Inputs for function main8: + v +[inout] Out (internal) for function main: + i2; i3; i4; i5; v7 +[inout] Inputs for function main: + i2; i3; i4; i5; v; v7 +[value] warning: option -val-split-return-function: 'f2' previously bound to 'full split'; + now bound to 'auto split'. +[value] Splitting return states on: + \return(f2) == 0 (auto) + \return(f7) == 0, 3 (user) + other functions: + \full_split(@all) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + i2 ∈ [--..--] + i3 ∈ [--..--] + i4 ∈ [--..--] + i5 ∈ [--..--] + v ∈ [--..--] + v7 ∈ {0} +[value] computing for function main1 <- main. + Called from tests/value/split_return.i:175. +[value] computing for function init <- main1 <- main. + Called from tests/value/split_return.i:17. +[value] Done for function init +[value] Recording results for main1 +[value] Done for function main1 +[value] computing for function main2 <- main. + Called from tests/value/split_return.i:176. +[value] computing for function f2 <- main2 <- main. + Called from tests/value/split_return.i:47. +[value] Recording results for f2 +[value] Done for function f2 +[value] Called Frama_C_show_each_f2({0}, {0}) +[value] Called Frama_C_show_each_f2({5; 7}, {5}) +[value] Called Frama_C_show_each_f2_2({5; 7}, {5}) +[value] Recording results for main2 +[value] Done for function main2 +[value] computing for function main3 <- main. + Called from tests/value/split_return.i:177. +[value] computing for function f3 <- main3 <- main. + Called from tests/value/split_return.i:72. +[value] Recording results for f3 +[value] Done for function f3 +[value] Called Frama_C_show_each_f3({7}, {5}) +[value] Called Frama_C_show_each_f3({-2}, {0}) +[value] Recording results for main3 +[value] Done for function main3 +[value] computing for function main3 <- main. + Called from tests/value/split_return.i:177. +[value] computing for function f3 <- main3 <- main. + Called from tests/value/split_return.i:72. +[value] Recording results for f3 +[value] Done for function f3 +[value] Called Frama_C_show_each_f3({7}, {5}) +[value] Called Frama_C_show_each_f3({-2}, {0}) +[value] Recording results for main3 +[value] Done for function main3 +[value] computing for function main4 <- main. + Called from tests/value/split_return.i:178. +[value] computing for function f4 <- main4 <- main. + Called from tests/value/split_return.i:93. +[value] Recording results for f4 +[value] Done for function f4 +[value] Called Frama_C_show_each_f4({7}, {5}) +[value] Called Frama_C_show_each_f4({4}, {0}) +[value] Recording results for main4 +[value] Done for function main4 +[value] computing for function main4 <- main. + Called from tests/value/split_return.i:178. +[value] computing for function f4 <- main4 <- main. + Called from tests/value/split_return.i:93. +[value] Recording results for f4 +[value] Done for function f4 +[value] Called Frama_C_show_each_f4({7}, {5}) +[value] Called Frama_C_show_each_f4({4}, {0}) +[value] Recording results for main4 +[value] Done for function main4 +[value] computing for function main4 <- main. + Called from tests/value/split_return.i:178. +[value] computing for function f4 <- main4 <- main. + Called from tests/value/split_return.i:93. +[value] Recording results for f4 +[value] Done for function f4 +[value] Called Frama_C_show_each_f4({7}, {5}) +[value] Called Frama_C_show_each_f4({4}, {0}) +[value] Recording results for main4 +[value] Done for function main4 +[value] computing for function main4 <- main. + Called from tests/value/split_return.i:178. +[value] computing for function f4 <- main4 <- main. + Called from tests/value/split_return.i:93. +[value] Recording results for f4 +[value] Done for function f4 +[value] Called Frama_C_show_each_f4({7}, {5}) +[value] Called Frama_C_show_each_f4({4}, {0}) +[value] Recording results for main4 +[value] Done for function main4 +[value] computing for function main5 <- main. + Called from tests/value/split_return.i:179. +[value] computing for function f5 <- main5 <- main. + Called from tests/value/split_return.i:116. +[value] Recording results for f5 +[value] Done for function f5 +[value] Called Frama_C_show_each_f5({-2}, {0}) +[value] Called Frama_C_show_each_f5({7}, {5}) +[value] Recording results for main5 +[value] Done for function main5 +[value] computing for function main6 <- main. + Called from tests/value/split_return.i:180. +[value] computing for function f6 <- main6 <- main. + Called from tests/value/split_return.i:134. +[value] Recording results for f6 +[value] Done for function f6 +[value] Recording results for main6 +[value] Done for function main6 +[value] computing for function main6 <- main. + Called from tests/value/split_return.i:180. +[value] computing for function f6 <- main6 <- main. + Called from tests/value/split_return.i:134. +[value] Recording results for f6 +[value] Done for function f6 +[value] Recording results for main6 +[value] Done for function main6 +[value] computing for function main7 <- main. + Called from tests/value/split_return.i:181. +[value] computing for function f7 <- main7 <- main. + Called from tests/value/split_return.i:147. +[value] Recording results for f7 +[value] Done for function f7 +[value] Called Frama_C_show_each_NULL({0}, {0}) +[value] Called Frama_C_show_each_NULL({{ &v }}, {1}) +[value] Recording results for main7 +[value] Done for function main7 +[value] computing for function main7 <- main. + Called from tests/value/split_return.i:181. +[value] computing for function f7 <- main7 <- main. + Called from tests/value/split_return.i:147. +[value] Recording results for f7 +[value] Done for function f7 +[value] Called Frama_C_show_each_NULL({0}, {0}) +[value] Called Frama_C_show_each_NULL({{ &v }}, {1}) +[value] Recording results for main7 +[value] Done for function main7 +[value] computing for function main8 <- main. + Called from tests/value/split_return.i:182. +[value] computing for function f8 <- main8 <- main. + Called from tests/value/split_return.i:170. +[value] Recording results for f8 +[value] Done for function f8 +[value] Called Frama_C_show_each_then8({4}, {{ &x }}) +[value] Called Frama_C_show_each_then8({-1}, {0}) +[value] Recording results for main8 +[value] Done for function main8 +[value] computing for function main8 <- main. + Called from tests/value/split_return.i:182. +[value] computing for function f8 <- main8 <- main. + Called from tests/value/split_return.i:170. +[value] Recording results for f8 +[value] Done for function f8 +[value] Called Frama_C_show_each_then8({4}, {{ &x }}) +[value] Called Frama_C_show_each_then8({-1}, {0}) +[value] Recording results for main8 +[value] Done for function main8 +[value] computing for function main8 <- main. + Called from tests/value/split_return.i:182. +[value] computing for function f8 <- main8 <- main. + Called from tests/value/split_return.i:170. +[value] Recording results for f8 +[value] Done for function f8 +[value] Called Frama_C_show_each_then8({4}, {{ &x }}) +[value] Called Frama_C_show_each_then8({-1}, {0}) +[value] Recording results for main8 +[value] Done for function main8 +[value] computing for function main8 <- main. + Called from tests/value/split_return.i:182. +[value] computing for function f8 <- main8 <- main. + Called from tests/value/split_return.i:170. +[value] Recording results for f8 +[value] Done for function f8 +[value] Called Frama_C_show_each_then8({4}, {{ &x }}) +[value] Called Frama_C_show_each_then8({-1}, {0}) +[value] Recording results for main8 +[value] Done for function main8 +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f2: + i2 ∈ {0; 5} + __retres ∈ {0; 5; 7} +[value:final-states] Values at end of function f3: + i3 ∈ {0; 5} + res1 ∈ {-2; 7} + res2 ∈ {-2; 7} +[value:final-states] Values at end of function f4: + i4 ∈ {0; 5} + __retres ∈ {4; 7} +[value:final-states] Values at end of function f5: + i5 ∈ {0; 5} + res ∈ {-2; 7} +[value:final-states] Values at end of function f6: + i ∈ [-5..5] +[value:final-states] Values at end of function f7: + v7 ∈ {0; 1} + __retres ∈ {{ NULL ; &v }} +[value:final-states] Values at end of function f8: + x ∈ {-1; 4} + __retres ∈ {{ NULL ; &x }} +[value:final-states] Values at end of function main1: + x ∈ [0..2147483649] + r ∈ {0; 1} +[value:final-states] Values at end of function main2: + i2 ∈ {0; 5} + r ∈ {0; 5; 7} +[value:final-states] Values at end of function main3: + i3 ∈ {0; 5} + r ∈ {-2; 7} +[value:final-states] Values at end of function main4: + i4 ∈ {0; 5} + r ∈ {4; 7} +[value:final-states] Values at end of function main5: + i5 ∈ {0; 5} + r ∈ {-2; 7} +[value:final-states] Values at end of function main6: + +[value:final-states] Values at end of function main7: + v7 ∈ {0; 1} + p ∈ {{ NULL ; &v }} +[value:final-states] Values at end of function main8: + x ∈ {-1; 4} + pf ∈ {{ &f8 }} + p ∈ {{ NULL ; &x }} +[value:final-states] Values at end of function main: + i2 ∈ {0; 5} + i3 ∈ {0; 5} + i4 ∈ {0; 5} + i5 ∈ {0; 5} + v7 ∈ {0; 1} +[from] Computing for function f2 +[from] Done for function f2 +[from] Computing for function f3 +[from] Done for function f3 +[from] Computing for function f4 +[from] Done for function f4 +[from] Computing for function f5 +[from] Done for function f5 +[from] Computing for function f6 +[from] Done for function f6 +[from] Computing for function f7 +[from] Done for function f7 +[from] Computing for function f8 +[from] Done for function f8 +[from] Computing for function main1 +[from] Computing for function init <-main1 +[from] Done for function init +[from] Done for function main1 +[from] Computing for function main2 +[from] Done for function main2 +[from] Computing for function main3 +[from] Done for function main3 +[from] Computing for function main4 +[from] Done for function main4 +[from] Computing for function main5 +[from] Done for function main5 +[from] Computing for function main6 +[from] Done for function main6 +[from] Computing for function main7 +[from] Done for function main7 +[from] Computing for function main8 +[from] Done for function main8 +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f2: + i2 FROM i2 + \result FROM i2 +[from] Function f3: + i3 FROM i3 + \result FROM i3 +[from] Function f4: + i4 FROM i4 + \result FROM i4 +[from] Function f5: + i5 FROM i5 + \result FROM i5 +[from] Function f6: + \result FROM v +[from] Function f7: + v7 FROM v + \result FROM v +[from] Function f8: + x FROM v; p + \result FROM v; p +[from] Function init: + x FROM \nothing + \result FROM \nothing +[from] Function main1: + \result FROM \nothing +[from] Function main2: + i2 FROM i2 +[from] Function main3: + i3 FROM i3 +[from] Function main4: + i4 FROM i4 +[from] Function main5: + i5 FROM i5 +[from] Function main6: + NO EFFECTS +[from] Function main7: + v7 FROM v +[from] Function main8: + NO EFFECTS +[from] Function main: + i2 FROM i2 + i3 FROM i3 + i4 FROM i4 + i5 FROM i5 + v7 FROM v +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f2: + i2; __retres +[inout] Inputs for function f2: + i2 +[inout] Out (internal) for function f3: + i3; res1; res2 +[inout] Inputs for function f3: + i3 +[inout] Out (internal) for function f4: + i4; __retres +[inout] Inputs for function f4: + i4 +[inout] Out (internal) for function f5: + i5; res +[inout] Inputs for function f5: + i5 +[inout] Out (internal) for function f6: + i +[inout] Inputs for function f6: + v +[inout] Out (internal) for function f7: + v7; __retres +[inout] Inputs for function f7: + v +[inout] Out (internal) for function f8: + x; __retres +[inout] Inputs for function f8: + v +[inout] Out (internal) for function main1: + x; r +[inout] Inputs for function main1: + \nothing +[inout] Out (internal) for function main2: + i2; r +[inout] Inputs for function main2: + i2 +[inout] Out (internal) for function main3: + i3; r +[inout] Inputs for function main3: + i3 +[inout] Out (internal) for function main4: + i4; r +[inout] Inputs for function main4: + i4 +[inout] Out (internal) for function main5: + i5; r +[inout] Inputs for function main5: + i5 +[inout] Out (internal) for function main6: + tmp +[inout] Inputs for function main6: + v +[inout] Out (internal) for function main7: + v7; p +[inout] Inputs for function main7: + v; v7 +[inout] Out (internal) for function main8: + x; pf; p +[inout] Inputs for function main8: + v +[inout] Out (internal) for function main: + i2; i3; i4; i5; v7 +[inout] Inputs for function main: + i2; i3; i4; i5; v; v7 diff --git a/tests/value/oracle_symblocs/statement_contract.err.oracle b/tests/value/oracle_symblocs/statement_contract.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/statement_contract.res.oracle b/tests/value/oracle_symblocs/statement_contract.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..2b445e7768115eab733f05abe9e97a2d89eb1173 --- /dev/null +++ b/tests/value/oracle_symblocs/statement_contract.res.oracle @@ -0,0 +1,24 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/statement_contract.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + A ∈ {0} +tests/value/statement_contract.i:5:[value] function main, behavior test: postcondition got status valid. +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + d ∈ {3} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + d +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/static.err.oracle b/tests/value/oracle_symblocs/static.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/static.res.oracle b/tests/value/oracle_symblocs/static.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..2723ec3004a0059a24af438ebc3622a34fa8666f --- /dev/null +++ b/tests/value/oracle_symblocs/static.res.oracle @@ -0,0 +1,66 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/static.i (no preprocessing) +tests/value/static.i:21:[kernel] Dropping side-effect in sizeof. Nothing to worry, this is by the book. +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + GLOB ∈ {0} + T[0..9] ∈ {0} + IT[0..9] ∈ {0} + G ∈ {0} + H ∈ {0} + R ∈ {0} + p ∈ {0} + a[0] ∈ {77} + [1] ∈ {0} + Rv ∈ {99} + x ∈ {0} +[value] computing for function f <- main. + Called from tests/value/static.i:19. +[value] Recording results for f +[value] Done for function f +[value] computing for function f <- main. + Called from tests/value/static.i:20. +[value] Recording results for f +[value] Done for function f +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + __retres ∈ {{ &x }} +[value:final-states] Values at end of function main: + GLOB ∈ {4} + G ∈ {0} + H ∈ {0} + R ∈ {3} + p ∈ {{ &a[0] }} + Rv ∈ [--..--] + x ∈ {3} + __retres ∈ {0} +[from] Computing for function f +[from] Done for function f +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + \result FROM \nothing +[from] Function main: + GLOB FROM \nothing + G FROM T[1..4] + H FROM IT[9][bits 0 to 7] + R FROM \nothing + p FROM \nothing + Rv FROM a[0] + x FROM \nothing + \result FROM T[0] +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + __retres +[inout] Inputs for function f: + \nothing +[inout] Out (internal) for function main: + GLOB; G; H; R; p; Rv; tmp; tmp_0; x; __retres +[inout] Inputs for function main: + T[0..4]; IT[9][bits 0 to 7]; p; a[0]; x diff --git a/tests/value/oracle_symblocs/strange.err.oracle b/tests/value/oracle_symblocs/strange.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/strange.res.oracle b/tests/value/oracle_symblocs/strange.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..ee8fb385778b6e91add923f7e7a65ab0faf50f5a --- /dev/null +++ b/tests/value/oracle_symblocs/strange.res.oracle @@ -0,0 +1,44 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/strange.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + GG ∈ {0} +[value] computing for function f <- main. + Called from tests/value/strange.i:13. +[value] Recording results for f +[value] Done for function f +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + GG ∈ {3} + G ∈ {2} + __retres ∈ {1} +[value:final-states] Values at end of function main: + GG ∈ {77} + lm ∈ {77} + res_f ∈ {1} + __retres ∈ {0} +[from] Computing for function f +[from] Done for function f +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + GG FROM \nothing + \result FROM \nothing +[from] Function main: + GG FROM \nothing + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + GG; G; __retres +[inout] Inputs for function f: + \nothing +[inout] Out (internal) for function main: + GG; lm; res_f; __retres +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/strings.0.err.oracle b/tests/value/oracle_symblocs/strings.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/strings.0.res.oracle b/tests/value/oracle_symblocs/strings.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..a96befc39666dba7753358b38aaeb6a3d5c99ee1 --- /dev/null +++ b/tests/value/oracle_symblocs/strings.0.res.oracle @@ -0,0 +1,147 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/strings.i (no preprocessing) +[value] Analyzing a complete application starting at main1 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + s1[0] ∈ {104} + [1] ∈ {101} + [2..3] ∈ {108} + [4] ∈ {111} + [5] ∈ {0} + [6] ∈ {32} + [7] ∈ {119} + [8] ∈ {111} + [9] ∈ {114} + [10] ∈ {108} + [11] ∈ {100} + [12] ∈ {0} + s2[0] ∈ {104} + [1] ∈ {101} + [2..3] ∈ {108} + [4] ∈ {111} + [5] ∈ {0} + s5 ∈ {0} + s6 ∈ {0} + cc ∈ {97} + Q ∈ {0} + R ∈ {0} + S ∈ {0} + T ∈ {0} + U ∈ {0} + V ∈ {0} + W ∈ {0} + X ∈ {0} + Y ∈ {0} + Z ∈ {0} + s3 ∈ {{ "tutu" }} + s4 ∈ {{ "tutu" }} + s7 ∈ {{ "hello\000 world" }} + s8 ∈ {{ "hello" }} +[value] computing for function u <- main1. + Called from tests/value/strings.i:39. +tests/value/strings.i:39:[kernel] warning: Neither code nor specification for function u, generating default assigns from the prototype +[value] using specification for function u +[value] Done for function u +tests/value/strings.i:39:[value] warning: out of bounds read. assert \valid_read(p-4); +[value] computing for function u <- main1. + Called from tests/value/strings.i:42. +[value] Done for function u +tests/value/strings.i:42:[value] warning: out of bounds read. assert \valid_read(p+12); +[value] computing for function u <- main1. + Called from tests/value/strings.i:44. +[value] Done for function u +[value] computing for function u <- main1. + Called from tests/value/strings.i:48. +[value] Done for function u +tests/value/strings.i:48:[value] warning: out of bounds read. assert \valid_read(p-4); +[value] Call to builtin bzero(({{ (unsigned char *)&a }},{10})) +[value] computing for function u <- main1. + Called from tests/value/strings.i:53. +[value] Done for function u +[value] computing for function strcpy <- main1. + Called from tests/value/strings.i:53. +tests/value/strings.i:21:[value] warning: out of bounds write. + assert \valid(tmp_unroll_46); + (tmp_unroll_46 from ldst++) +tests/value/strings.i:21:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +[value] Recording results for strcpy +[value] Done for function strcpy +[value] computing for function strlen <- main1. + Called from tests/value/strings.i:58. +[value] Recording results for strlen +[value] Done for function strlen +[value] Recording results for main1 +[value] done for function main1 +tests/value/strings.i:21:[value] assertion 'Value,mem_access' got final status invalid. +tests/value/strings.i:39:[value] assertion 'Value,mem_access' got final status invalid. +tests/value/strings.i:42:[value] assertion 'Value,mem_access' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function strcpy: + NON TERMINATING FUNCTION +[value:final-states] Values at end of function strlen: + s ∈ {{ &s1[6] }} + l ∈ {5} +[value:final-states] Values at end of function main1: + s1[0] ∈ {104} + [1] ∈ {101} + [2] ∈ {108} + [3] ∈ {97} + [4] ∈ {111} + [5] ∈ {0} + [6] ∈ {97} + [7] ∈ {119} + [8] ∈ {111} + [9] ∈ {114} + [10] ∈ {108} + [11] ∈ {100} + [12] ∈ {0} + R ∈ {0} + S ∈ {0} + T ∈ {0; 101} + p ∈ {{ &s1[5] ; &s2[3] }} + __retres ∈ {5} +[from] Computing for function strcpy +[from] Non-terminating function strcpy (no dependencies) +[from] Done for function strcpy +[from] Computing for function strlen +[from] Done for function strlen +[from] Computing for function main1 +[from] Computing for function u <-main1 +[from] Done for function u +[from] Computing for function Frama_C_bzero <-main1 +[from] Done for function Frama_C_bzero +[from] Done for function main1 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function strcpy: + NON TERMINATING - NO EFFECTS +[from] Function strlen: + \result FROM s1[0..4]; s +[from] Function u: + \result FROM \nothing +[from] Function main1: + s1{[3]; [6]} FROM cc + R FROM \nothing (and SELF) + S FROM \nothing (and SELF) + T FROM s1[1] (and SELF) + \result FROM s1{[0..2]; [4]}; cc +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function strcpy: + src; ldst; b[0..4]; tmp_unroll_46; tmp_1_unroll_46; tmp_0_unroll_46; + tmp_unroll_49; tmp_1_unroll_49; tmp_0_unroll_49; tmp_unroll_52; + tmp_1_unroll_52; tmp_0_unroll_52; tmp_unroll_55; tmp_1_unroll_55; + tmp_0_unroll_55; tmp_unroll_58; tmp_1_unroll_58; tmp_0_unroll_58; + tmp_unroll_61; tmp_1_unroll_61; tmp_0_unroll_61 +[inout] Inputs for function strcpy: + a[0..5] +[inout] Out (internal) for function strlen: + s; l; tmp_unroll_106; tmp_unroll_109; tmp_unroll_112; tmp_unroll_115; + tmp_unroll_118; tmp_unroll_121 +[inout] Inputs for function strlen: + s1[0..5] +[inout] Out (internal) for function main1: + s1{[3]; [6]}; R; S; T; p; tmp; tmp_0; tmp_1; tmp_2; a[0..9]; b[0..4]; + tmp_3; tmp_4; __retres +[inout] Inputs for function main1: + s1[0..5]; cc diff --git a/tests/value/oracle_symblocs/strings.1.err.oracle b/tests/value/oracle_symblocs/strings.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/strings.1.res.oracle b/tests/value/oracle_symblocs/strings.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..7a18923bb2ff847fb401152b06f3dc258d1e746f --- /dev/null +++ b/tests/value/oracle_symblocs/strings.1.res.oracle @@ -0,0 +1,140 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/strings.i (no preprocessing) +[value] Analyzing a complete application starting at main6 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + s1[0] ∈ {104} + [1] ∈ {101} + [2..3] ∈ {108} + [4] ∈ {111} + [5] ∈ {0} + [6] ∈ {32} + [7] ∈ {119} + [8] ∈ {111} + [9] ∈ {114} + [10] ∈ {108} + [11] ∈ {100} + [12] ∈ {0} + s2[0] ∈ {104} + [1] ∈ {101} + [2..3] ∈ {108} + [4] ∈ {111} + [5] ∈ {0} + s5 ∈ {0} + s6 ∈ {0} + cc ∈ {97} + Q ∈ {0} + R ∈ {0} + S ∈ {0} + T ∈ {0} + U ∈ {0} + V ∈ {0} + W ∈ {0} + X ∈ {0} + Y ∈ {0} + Z ∈ {0} + s3 ∈ {{ "tutu" }} + s4 ∈ {{ "tutu" }} + s7 ∈ {{ "hello\000 world" }} + s8 ∈ {{ "hello" }} +[value] computing for function u <- main6. + Called from tests/value/strings.i:72. +tests/value/strings.i:72:[kernel] warning: Neither code nor specification for function u, generating default assigns from the prototype +[value] using specification for function u +[value] Done for function u +tests/value/strings.i:73:[value] warning: pointer comparison. assert \pointer_comparable((void *)s3, (void *)s4); +[value] computing for function u <- main6. + Called from tests/value/strings.i:74. +[value] Done for function u +[value] computing for function u <- main6. + Called from tests/value/strings.i:76. +[value] Done for function u +[value] computing for function u <- main6. + Called from tests/value/strings.i:78. +[value] Done for function u +tests/value/strings.i:79:[value] warning: pointer comparison. assert \pointer_comparable((void *)s7, (void *)s8); +[value] computing for function u <- main6. + Called from tests/value/strings.i:80. +[value] Done for function u +[value] computing for function u <- main6. + Called from tests/value/strings.i:82. +[value] Done for function u +tests/value/strings.i:83:[value] warning: pointer comparison. + assert \pointer_comparable((void *)(s7+1), (void *)(s8+1)); +[value] computing for function u <- main6. + Called from tests/value/strings.i:84. +[value] Done for function u +[value] computing for function u <- main6. + Called from tests/value/strings.i:86. +[value] Done for function u +[value] computing for function u <- main6. + Called from tests/value/strings.i:87. +[value] Done for function u +[value] computing for function u <- main6. + Called from tests/value/strings.i:88. +[value] Done for function u +[value] computing for function u <- main6. + Called from tests/value/strings.i:89. +[value] Done for function u +[value] computing for function u <- main6. + Called from tests/value/strings.i:89. +[value] Done for function u +[value] computing for function u <- main6. + Called from tests/value/strings.i:90. +[value] Done for function u +tests/value/strings.i:91:[value] warning: pointer comparison. assert \pointer_comparable((void *)s5, (void *)s6); +[value] computing for function u <- main6. + Called from tests/value/strings.i:92. +[value] Done for function u +tests/value/strings.i:93:[value] warning: pointer comparison. + assert \pointer_comparable((void *)("oh, hello"+4), (void *)s7); +[value] Recording results for main6 +[value] done for function main6 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main6: + s5 ∈ {{ "tutu" ; "hello" }} + s6 ∈ {{ "tutu" ; "tutu" ; "hello" }} + cc ∈ {116} + Q ∈ {0} + R ∈ {0} + S ∈ {0} + T ∈ {0} + U ∈ {0} + V ∈ {0} + W ∈ {0} + X ∈ {0; 1} + Y ∈ {0; 1} + Z ∈ {0; 1} + s ∈ {{ "toto" }} + __retres ∈ {116} +[from] Computing for function main6 +[from] Computing for function u <-main6 +[from] Done for function u +[from] Done for function main6 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function u: + \result FROM \nothing +[from] Function main6: + s5 FROM s3; s8 + s6 FROM s3; s4; s8 + cc FROM "toto"[bits 0 to 7] + Q FROM s7 (and SELF) + R FROM s3; s4 (and SELF) + S FROM \nothing (and SELF) + T FROM s3 (and SELF) + U FROM s7; s8 (and SELF) + V FROM s4; s7 (and SELF) + W FROM s7; s8 (and SELF) + X FROM s3 (and SELF) + Y FROM s3; s8 (and SELF) + Z FROM s3; s4; s8 (and SELF) + \result FROM "toto"[bits 0 to 7] +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main6: + s5; s6; cc; Q; R; S; T; U; V; W; X; Y; Z; s; tmp; tmp_0; tmp_1; tmp_2; + tmp_3; tmp_4; tmp_5; tmp_6; tmp_7; tmp_8; tmp_9; tmp_10; tmp_11; tmp_12; + tmp_13; tmp_14; __retres +[inout] Inputs for function main6: + s5; s6; cc; s3; s4; s7; s8; "toto"[bits 0 to 7] diff --git a/tests/value/oracle_symblocs/strings.2.err.oracle b/tests/value/oracle_symblocs/strings.2.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/strings.2.res.oracle b/tests/value/oracle_symblocs/strings.2.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..d2aa62662d7d0e684b378415935f31fb375e8fdb --- /dev/null +++ b/tests/value/oracle_symblocs/strings.2.res.oracle @@ -0,0 +1,67 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/strings.i (no preprocessing) +[value] Analyzing a complete application starting at main7 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + s1[0] ∈ {104} + [1] ∈ {101} + [2..3] ∈ {108} + [4] ∈ {111} + [5] ∈ {0} + [6] ∈ {32} + [7] ∈ {119} + [8] ∈ {111} + [9] ∈ {114} + [10] ∈ {108} + [11] ∈ {100} + [12] ∈ {0} + s2[0] ∈ {104} + [1] ∈ {101} + [2..3] ∈ {108} + [4] ∈ {111} + [5] ∈ {0} + s5 ∈ {0} + s6 ∈ {0} + cc ∈ {97} + Q ∈ {0} + R ∈ {0} + S ∈ {0} + T ∈ {0} + U ∈ {0} + V ∈ {0} + W ∈ {0} + X ∈ {0} + Y ∈ {0} + Z ∈ {0} + s3 ∈ {{ "tutu" }} + s4 ∈ {{ "tutu" }} + s7 ∈ {{ "hello\000 world" }} + s8 ∈ {{ "hello" }} +tests/value/strings.i:101:[value] warning: out of bounds write. assert \valid(tmp); + (tmp from f?s5 + 2:& c) +tests/value/strings.i:103:[value] warning: out of bounds write. assert \valid(s5); +tests/value/strings.i:105:[value] warning: out of bounds write. assert \valid(s6); +[value] Recording results for main7 +[value] done for function main7 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main7: + s5 ∈ {{ &c }} + s6 ∈ {{ &c }} + R ∈ {84} + c ∈ {116} + __retres ∈ {116} +[from] Computing for function main7 +[from] Done for function main7 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main7: + s5 FROM s3; d + s6 FROM s3; e + R FROM s3; d; f + \result FROM s4; "tutu"[bits 0 to 7] +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main7: + s5; s6; R; c; tmp; __retres +[inout] Inputs for function main7: + s5; s6; cc; s3; s4; "tutu"[bits 0 to 7] diff --git a/tests/value/oracle_symblocs/strings.3.err.oracle b/tests/value/oracle_symblocs/strings.3.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/strings.3.res.oracle b/tests/value/oracle_symblocs/strings.3.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..8789669af0814e3e0f93e96b408a50806d90ee75 --- /dev/null +++ b/tests/value/oracle_symblocs/strings.3.res.oracle @@ -0,0 +1,113 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/strings.i (no preprocessing) +[value] Analyzing a complete application starting at main8 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + s1[0] ∈ {104} + [1] ∈ {101} + [2..3] ∈ {108} + [4] ∈ {111} + [5] ∈ {0} + [6] ∈ {32} + [7] ∈ {119} + [8] ∈ {111} + [9] ∈ {114} + [10] ∈ {108} + [11] ∈ {100} + [12] ∈ {0} + s2[0] ∈ {104} + [1] ∈ {101} + [2..3] ∈ {108} + [4] ∈ {111} + [5] ∈ {0} + s5 ∈ {0} + s6 ∈ {0} + cc ∈ {97} + Q ∈ {0} + R ∈ {0} + S ∈ {0} + T ∈ {0} + U ∈ {0} + V ∈ {0} + W ∈ {0} + X ∈ {0} + Y ∈ {0} + Z ∈ {0} + s3 ∈ {{ "tutu" }} + s4 ∈ {{ "tutu" }} + s7 ∈ {{ "hello\000 world" }} + s8 ∈ {{ "hello" }} +[value] computing for function assigns <- main8. + Called from tests/value/strings.i:127. +[value] using specification for function assigns +tests/value/strings.i:121:[value] warning: no \from part for clause 'assigns *(p+(0 .. s-1));' of function assigns +[value] Done for function assigns +[value] computing for function strcmp <- main8. + Called from tests/value/strings.i:128. +tests/value/strings.i:114:[value] warning: out of bounds read. assert \valid_read(tmp_0); + (tmp_0 from s2_0++) +[value] Recording results for strcmp +[value] Done for function strcmp +[value] Recording results for main8 +[value] done for function main8 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function strcmp: + s1_0 ∈ {{ &long_chain + [0..29] }} + s2_0 ∈ {{ &tc + [0..29] }} + __retres ∈ [-223..121] +[value:final-states] Values at end of function main8: + tc[0..29] ∈ [--..--] + long_chain[0] ∈ {114} + [1] ∈ {101} + [2] ∈ {97} + [3..4] ∈ {108} + [5] ∈ {121} + [6] ∈ {32} + [7] ∈ {114} + [8] ∈ {101} + [9] ∈ {97} + [10..11] ∈ {108} + [12] ∈ {121} + [13] ∈ {32} + [14] ∈ {114} + [15] ∈ {101} + [16] ∈ {97} + [17..18] ∈ {108} + [19] ∈ {121} + [20] ∈ {32} + [21] ∈ {108} + [22] ∈ {111} + [23] ∈ {110} + [24] ∈ {103} + [25] ∈ {32} + [26] ∈ {99} + [27] ∈ {104} + [28] ∈ {97} + [29] ∈ {105} + [30] ∈ {110} + [31] ∈ {0} + x ∈ [-223..121] +[from] Computing for function strcmp +[from] Done for function strcmp +[from] Computing for function main8 +[from] Computing for function assigns <-main8 +[from] Done for function assigns +[from] Done for function main8 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function assigns: + tc[0..29] FROM ANYTHING(origin:Unknown) (and SELF) +[from] Function strcmp: + \result FROM s1_0; s2_0; tc[0..29]; long_chain[0..30] +[from] Function main8: + \result FROM ANYTHING(origin:Unknown) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function strcmp: + s1_0; s2_0; tmp; tmp_0; __retres +[inout] Inputs for function strcmp: + tc[0..29]; long_chain[0..30] +[inout] Out (internal) for function main8: + tc[0..29]; long_chain[0..31]; x +[inout] Inputs for function main8: + ANYTHING(origin:Unknown) diff --git a/tests/value/oracle_symblocs/strings_cond.err.oracle b/tests/value/oracle_symblocs/strings_cond.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/strings_cond.res.oracle b/tests/value/oracle_symblocs/strings_cond.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..5d19d6adb6608160aa0a427b342b0a5c7dd38a42 --- /dev/null +++ b/tests/value/oracle_symblocs/strings_cond.res.oracle @@ -0,0 +1,46 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/strings_cond.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] computing for function foo <- main. + Called from tests/value/strings_cond.i:8. +[value] DUMPING STATE of file tests/value/strings_cond.i line 3 + s ∈ {{ "Bla" }} + =END OF DUMP== +tests/value/strings_cond.i:4:[value] entering loop for the first time +[value] Called Frama_C_show_each_s({{ "Bla" }}) +[value] Called Frama_C_show_each_s({{ "Bla" + {0; 1} }}) +[value] Called Frama_C_show_each_s({{ "Bla" + {0; 1; 2} }}) +[value] Recording results for foo +[value] Done for function foo +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function foo: + s ∈ {{ "Bla" + {3} }} +[value:final-states] Values at end of function main: + +[from] Computing for function foo +[from] Computing for function Frama_C_dump_each <-foo +[from] Done for function Frama_C_dump_each +[from] Done for function foo +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function foo: + NO EFFECTS +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function foo: + s +[inout] Inputs for function foo: + "Bla" +[inout] Out (internal) for function main: + \nothing +[inout] Inputs for function main: + "Bla" diff --git a/tests/value/oracle_symblocs/struct.err.oracle b/tests/value/oracle_symblocs/struct.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/struct.res.oracle b/tests/value/oracle_symblocs/struct.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..c7e2bfacd7ed652b96e3a95e2f458599918e76cd --- /dev/null +++ b/tests/value/oracle_symblocs/struct.res.oracle @@ -0,0 +1,48 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/struct.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + GG ∈ {0} + w ∈ {0} + v1 ∈ {0} + v2 ∈ {0} + v3 ∈ {0} + T[0..1] ∈ {1} + R1 ∈ {0} + R2 ∈ {0} + G ∈ {0} +tests/value/struct.i:47:[value] warning: signed overflow. assert -2147483648 ≤ a+b; +tests/value/struct.i:47:[value] warning: signed overflow. assert a+b ≤ 2147483647; +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + w ∈ [--..--] + v1.x ∈ [--..--] + .y ∈ {0} + v2.x ∈ [--..--] + .y ∈ {0} + T[0][bits 0 to 7] ∈ {2} + [bits 8 to 63]# ∈ {1} repeated %32, bits 8 to 63 + R1 ∈ {65537} + R2 ∈ {3} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + w FROM a; b + v1.x FROM a; b + .y FROM v2 + v2.x FROM a (and SELF) + T[0][bits 0 to 7] FROM \nothing + R1 FROM T{[0][bits 16 to 31]; [1][bits 0 to 15]} + R2 FROM T[0][bits 8 to 31] + \result FROM a; b +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + w; v1; v2.x; T[0][bits 0 to 7]; R1; R2 +[inout] Inputs for function main: + w; v1.x; v2; T{[0]; [1][bits 0 to 15]} diff --git a/tests/value/oracle_symblocs/struct2.err.oracle b/tests/value/oracle_symblocs/struct2.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/struct2.res.oracle b/tests/value/oracle_symblocs/struct2.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..981d40139ef92ad81a38762b32be1083a56e328f --- /dev/null +++ b/tests/value/oracle_symblocs/struct2.res.oracle @@ -0,0 +1,191 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/struct2.i (no preprocessing) +[value] Analyzing a complete application starting at f_precis +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + NULL[rbits 32768 to 65543] ∈ [--..--] + tabst[0..9] ∈ {0} + tabst2[0..9] ∈ {0} + tab_s[0..1] ∈ {0} + tab_s1[0..1] ∈ {0} + tab_s2[0..1] ∈ {0} + tab_s3[0..1] ∈ {0} + tab_s4[0..1] ∈ {0} + s1 ∈ {0} + s2 ∈ {0} + s4 ∈ {0} + s5 ∈ {0} + s6 ∈ {0} + s8 ∈ {0} + s7 ∈ {0} + tabl[0..9] ∈ {0} + tab1[0..1] ∈ {0} + tab2[0..1] ∈ {0} + tab3[0..1] ∈ {0} + tab4[0..1] ∈ {0} + tab5[0..1] ∈ {0} + tab6[0..1] ∈ {0} + p ∈ {0} + p2 ∈ {0} + p3 ∈ {0} + p4 ∈ {0} + p5 ∈ {0} + p6 ∈ {0} + p7 ∈ {0} + q ∈ {0} + r ∈ {0} + s ∈ {0} + t ∈ {0} + a ∈ {0} + b ∈ {0} + v ∈ [--..--] + Tab[0..9] ∈ {0} + P ∈ {0} +tests/value/struct2.i:74:[value] warning: accessing out of bounds index. assert 0 ≤ i; +tests/value/struct2.i:74:[value] warning: accessing out of bounds index. assert i < 2; +tests/value/struct2.i:76:[value] warning: accessing out of bounds index. assert 0 ≤ (int)(i+j); +tests/value/struct2.i:76:[value] warning: accessing out of bounds index. assert (int)(i+j) < 2; +tests/value/struct2.i:76:[value] warning: signed overflow. assert i+j ≤ 2147483647; +tests/value/struct2.i:78:[value] warning: accessing out of bounds index. assert tab2[i] < 2; +tests/value/struct2.i:78:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +tests/value/struct2.i:80:[value] warning: accessing out of bounds index. assert tab2[1] < 2; +tests/value/struct2.i:82:[value] warning: accessing out of bounds index. assert (int)(tab2[i]+j) < 2; +tests/value/struct2.i:99:[value] warning: accessing out of bounds index. assert 0 ≤ (int)(tabl[i]+y); +tests/value/struct2.i:99:[value] warning: accessing out of bounds index. assert (int)(tabl[i]+y) < 2; +tests/value/struct2.i:117:[value] warning: signed overflow. assert -2147483648 ≤ *p+x; +tests/value/struct2.i:117:[value] warning: signed overflow. assert *p+x ≤ 2147483647; +tests/value/struct2.i:124:[value] warning: out of bounds read. assert \valid_read(r); +tests/value/struct2.i:124:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +tests/value/struct2.i:130:[value] warning: out of bounds read. assert \valid_read(p3+2); +tests/value/struct2.i:138:[value] warning: signed overflow. assert *((int *)0x1020)+i ≤ 2147483647; +tests/value/struct2.i:149:[value] warning: out of bounds write. assert \valid(*t+i); +tests/value/struct2.i:185:[value] warning: accessing out of bounds index. assert 0 ≤ (int)(i+j); +tests/value/struct2.i:185:[value] warning: accessing out of bounds index. assert (int)(i+j) < 2; +tests/value/struct2.i:185:[value] warning: accessing out of bounds index. assert 0 ≤ k; +tests/value/struct2.i:185:[value] warning: accessing out of bounds index. assert k < 2; +tests/value/struct2.i:185:[value] warning: accessing out of bounds index. assert 0 ≤ l; +tests/value/struct2.i:185:[value] warning: accessing out of bounds index. assert l < 2; +tests/value/struct2.i:185:[value] warning: accessing out of bounds index. assert 0 ≤ (int)(tab3[l]+m); +tests/value/struct2.i:185:[value] warning: accessing out of bounds index. assert (int)(tab3[l]+m) < 10; +tests/value/struct2.i:185:[value] warning: signed overflow. assert -2147483648 ≤ tab3[l]+m; +tests/value/struct2.i:185:[value] warning: signed overflow. assert tab3[l]+m ≤ 2147483647; +[value] Recording results for f_precis +[value] done for function f_precis +tests/value/struct2.i:124:[value] assertion 'Value,mem_access' got final status invalid. +tests/value/struct2.i:130:[value] assertion 'Value,mem_access' got final status invalid. +tests/value/struct2.i:185:[value] assertion 'Value,index_bound' got final status valid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f_precis: + NULL[rbits 32768 to 32799] ∈ {{ NULL + [--..--] ; (? *)&a }} + [rbits 32800 to 65543] ∈ [--..--] + tab_s[0] ∈ {0} + [1].a ∈ [--..--] + [1]{.d[0..9]; .b; .e[0..9]; .c} ∈ {0} + tab_s1[0..1] ∈ {0} + tab_s2[0].a ∈ [--..--] + {[0]{.d[0..9]; .b; .e[0..9]; .c}; [1]} ∈ {0} + tab_s3[0].a ∈ [--..--] + {[0]{.d[0..9]; .b; .e[0..9]; .c}; [1]} ∈ {0} + tab_s4[0].a ∈ [--..--] + [0]{.d[0..9]; .b; .e[0..9]; .c} ∈ {0} + [1].a ∈ [--..--] + [1]{.d[0..9]; .b; .e[0..9]; .c} ∈ {0} + s1.a ∈ [--..--] + .d[0] ∈ {0} + .d[1] ∈ [--..--] + {.d[2..9]; .b; .e[0..9]} ∈ {0} + .c ∈ {{ &s2 }} + s2{.a; .d[0..1]} ∈ [--..--] + .d[2..9] ∈ {0} + .b.a ∈ [--..--] + .b.b ∈ {{ &a }} + .e[0..9] ∈ {0} + .c ∈ {{ &s2 }} + s4{.a; .d[0..9]; .b} ∈ {0} + .e[0].a ∈ [-128..127] + {.e{[0].b; [1..9]}; .c} ∈ {0} + s8.a ∈ {0} + .b ∈ {{ &a }} + s7 ∈ {0} + tab1[0..1] ∈ {2} + tab2[0] ∈ {0; 2} + [1] ∈ {0} + tab3[0..1] ∈ [--..--] + tab4[0..1] ∈ {0} + tab5[0] ∈ {2} + [1] ∈ {0} + tab6[0] ∈ {0} + [1] ∈ {2} + p ∈ {{ &a }} + p2 ∈ {{ &tab1[2] }} + p3 ∈ {{ &tab1{[0], [1]} }} + p4 ∈ {{ &a }} + p5 ∈ {4096} + p6 ∈ {4112} + p7 ∈ {{ &tab1[3] }} + q ∈ {4096} + r ∈ {0} + s ∈ {4144} + t ∈ {4176} + a ∈ [--..--] + b ∈ {0} +[from] Computing for function f_precis +[from] Done for function f_precis +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f_precis: + NULL{[4096..4099]; [4144..4147]} FROM NULL[4176..4179]; i + {[4100..4111]; [4116..4143]; [4148..8192]} + FROM NULL[4176..4179]; i (and SELF) + [4112..4115] FROM NULL{[4128..4131]; [4176..4179]}; i + tab_s[0] FROM s2 + [1].a FROM x + tab_s1{[0].b; [1].b} FROM s8; i (and SELF) + tab_s2[0] FROM s2; s8; tabl[0]; x + tab_s3[0].a FROM tabl[1]; x + tab_s4{[0].a; [1].a} FROM tabl[0..1]; x; i; y (and SELF) + s1{.a; .d[1]} FROM x + {.d[0]; .d[2..9]; .e[0..9]} FROM s2 + .b FROM s8 + .c FROM \nothing + s2{.a; .b.a} FROM x + .d[0..1] FROM x; i (and SELF) + {.b.b; .c} FROM \nothing + s4.e[0].a + FROM NULL{[4176..4179]; [4192]; [4200]}; tabst[2].a; + tabst2{[0].a; [1].a; [2].a; [3].a; [4].a; [5].a; [6].a; [7].a; + [8].a; [9].a}; + s5.e[0].b; tab2[0..1]; tab3[0..1]; i; j; k; l; m + s8.b FROM \nothing + s7 FROM s6.b + tab1[0..1] FROM \nothing + tab2[0..1] FROM i (and SELF) + tab3[0..1] FROM i; j; k (and SELF) + tab4[0] FROM tab2[0..1]; v; i (and SELF) + tab5[0] FROM tab2[1]; i + tab6[0..1] FROM tab2[0..1]; i; j (and SELF) + p FROM \nothing + p2 FROM \nothing + p3 FROM i + p4 FROM \nothing + p5 FROM \nothing + p6 FROM \nothing + p7 FROM \nothing + q FROM \nothing + r FROM \nothing + s FROM \nothing + t FROM \nothing + a FROM x + b FROM v; i (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f_precis: + NULL[4096..8192]; tab_s{[0]; [1].a}; tab_s1{[0].b; [1].b}; tab_s2[0]; + tab_s3[0].a; tab_s4{[0].a; [1].a}; s1; s2{{.a; .d[0..1]}; .b; .c}; + s4.e[0].a; s8.b; s7; tab1[0..1]; tab2[0..1]; tab3[0..1]; tab4[0]; tab5[0]; + tab6[0..1]; p; p2; p3; p4; p5; p6; p7; q; r; s; t; a; b +[inout] Inputs for function f_precis: + NULL{[4128..4131]; [4176..4179]; [4192]; [4200]}; tabst[2].a; + tabst2{[0].a; [1].a; [2].a; [3].a; [4].a; [5].a; [6].a; [7].a; [8].a; + [9].a}; s1; s2; s5.e[0].b; s6.b; s8; tabl[0..1]; tab1[0]; + tab2[0..1]; tab3[0..1]; p; p2; p3; p6; q; r; s; t; a; v diff --git a/tests/value/oracle_symblocs/struct3.err.oracle b/tests/value/oracle_symblocs/struct3.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/struct3.res.oracle b/tests/value/oracle_symblocs/struct3.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..67c893770a50dfadfd6a2381bfb5a82458cc744d --- /dev/null +++ b/tests/value/oracle_symblocs/struct3.res.oracle @@ -0,0 +1,59 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/struct3.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + tabst[0..9] ∈ {0} + tabst2[0..9] ∈ {0} + tab_s[0..1] ∈ {0} + tab_s1[0..1] ∈ {0} + tab_s2[0..1] ∈ {0} + tab_s3[0..1] ∈ {0} + tab_s4[0..1] ∈ {0} + s1 ∈ {0} + s2 ∈ {0} + s8 ∈ {0} + s7 ∈ {0} + v ∈ [--..--] +tests/value/struct3.i:42:[value] warning: accessing out of bounds index. assert 10 < 10; +tests/value/struct3.i:42:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +tests/value/struct3.i:46:[value] Assigning imprecise value to s2.a. + The imprecision originates from Arithmetic {tests/value/struct3.i:46} +[value] Recording results for main +[value] done for function main +[value] warning: Garbled mix generated during analysis: + {{ garbled mix of &{s1} (origin: Arithmetic {tests/value/struct3.i:46}) }} +tests/value/struct3.i:42:[value] assertion 'Value,index_bound' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + s1.a ∈ {2} + .d[0] ∈ {1} + .d[1..2] ∈ {2} + .d[3..7] ∈ {0} + .d[8..9] ∈ {2} + .b.a ∈ {3} + {.b.b; .e[0..9]} ∈ {0} + .c ∈ {{ &s1 }} + s2.a ∈ + {{ garbled mix of &{s1} + (origin: Arithmetic {tests/value/struct3.i:46}) }} + .d[0] ∈ {1} + .d[1..2] ∈ {2} + .d[3..7] ∈ {0} + .d[8..9] ∈ {2} + .b.a ∈ {3} + {.b.b; .e[0..9]} ∈ {0} + .c ∈ {{ &s1 }} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + s1{{.a; .d[0..2]}; {.d[8..9]; .b.a}; .c} FROM \nothing + s2 FROM s1{.d[3..7]; {.b.b; .e[0..9]}} +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + s1{{.a; .d[0..2]}; {.d[8..9]; .b.a}; .c}; s2 +[inout] Inputs for function main: + s1; s2.c; v diff --git a/tests/value/oracle_symblocs/struct_array.err.oracle b/tests/value/oracle_symblocs/struct_array.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/struct_array.res.oracle b/tests/value/oracle_symblocs/struct_array.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..ac41a79c2a408aa71e3b22681285d5af2f80fe5d --- /dev/null +++ b/tests/value/oracle_symblocs/struct_array.res.oracle @@ -0,0 +1,429 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/struct_array.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + v ∈ [--..--] + outp ∈ {0} + x ∈ {0} + y ∈ {0} + z1 ∈ {0} + z2 ∈ {0} + z3 ∈ {0} + z4 ∈ {0} + T[0].a ∈ {1} + [0].b ∈ {2} + [0].pp ∈ {0} + [0].p ∈ {{ &x }} + [1].a ∈ {{ (int)&z1 }} + [1].b ∈ {{ (int)&z2 }} + [1].pp ∈ {{ &z3 }} + [1].p ∈ {{ &y }} + [2].a ∈ {{ (int)&z4 }} + [2].b ∈ {2} + [2].pp ∈ {0} + [2].p ∈ {{ &x }} + [3].a ∈ {1} + [3].b ∈ {2} + [3].pp ∈ {0} + [3].p ∈ {{ &x }} + [4..21] ∈ {0} + s.a ∈ {1} + .t[0] ∈ {2} + .t[1] ∈ {3} + .t[2] ∈ {4} + .t[3] ∈ {5} + .t[4] ∈ {6} + .t[5] ∈ {7} + .t[6] ∈ {8} + .b ∈ {9} + s1 ∈ {0} + s2 ∈ {0} + s3 ∈ {0} +[value] computing for function main1 <- main. + Called from tests/value/struct_array.i:56. +tests/value/struct_array.i:35:[value] warning: accessing out of bounds index. assert 0 ≤ v; +tests/value/struct_array.i:35:[value] warning: accessing out of bounds index. assert v < 22; +tests/value/struct_array.i:36:[value] warning: out of bounds write. assert \valid(outp); +[value] Recording results for main1 +[value] Done for function main1 +[value] computing for function main2 <- main. + Called from tests/value/struct_array.i:57. +[value] Called Frama_C_show_each(.a ∈ {1} + .t[0] ∈ {2} + .t[1] ∈ {3} + .t[2] ∈ {4} + .t[3] ∈ {5} + .t[4] ∈ {6} + .t[5] ∈ {7} + .t[6] ∈ {8} + .b ∈ {9}) +[value] computing for function f1 <- main2 <- main. + Called from tests/value/struct_array.i:42. +[value] using specification for function f1 +[value] Done for function f1 +[value] Called Frama_C_show_each(.a ∈ {1} + .t[0] ∈ {2} + .t[1] ∈ {3} + .t[2] ∈ {4} + .t[3] ∈ {5} + .t[4] ∈ {6} + .t[5..6] ∈ [--..--] + .b ∈ {9}) +[value] computing for function f2 <- main2 <- main. + Called from tests/value/struct_array.i:44. +[value] using specification for function f2 +[value] Done for function f2 +[value] Called Frama_C_show_each(.a ∈ {1} + .t[0..2] ∈ [--..--] + .t[3] ∈ {5} + .t[4] ∈ {6} + .t[5] ∈ {7} + .t[6] ∈ {8} + .b ∈ {9}) +[value] computing for function f3 <- main2 <- main. + Called from tests/value/struct_array.i:46. +[value] using specification for function f3 +[value] Done for function f3 +[value] Called Frama_C_show_each(.a ∈ {1} + .t[0..6] ∈ [--..--] + .b ∈ {9}) +tests/value/struct_array.i:50:[value] assertion got status valid. +[value] Called Frama_C_show_each_reach() +[value] Recording results for main2 +[value] Done for function main2 +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main1: + outp ∈ {{ &x ; &y }} + x ∈ {0; 5} + y ∈ {0; 5} + z1 ∈ {1} +[value:final-states] Values at end of function main2: + s1.a ∈ {1} + .t[0] ∈ {2} + .t[1] ∈ {3} + .t[2] ∈ {4} + .t[3] ∈ {5} + .t[4] ∈ {6} + .t[5..6] ∈ [--..--] + .b ∈ {9} + s2.a ∈ {1} + .t[0..2] ∈ [--..--] + .t[3] ∈ {5} + .t[4] ∈ {6} + .t[5] ∈ {7} + .t[6] ∈ {8} + .b ∈ {9} + s3.a ∈ {1} + .t[0..6] ∈ [--..--] + .b ∈ {9} +[value:final-states] Values at end of function main: + outp ∈ {{ &x ; &y }} + x ∈ {0; 5} + y ∈ {0; 5} + z1 ∈ {1} + s1.a ∈ {1} + .t[0] ∈ {2} + .t[1] ∈ {3} + .t[2] ∈ {4} + .t[3] ∈ {5} + .t[4] ∈ {6} + .t[5..6] ∈ [--..--] + .b ∈ {9} + s2.a ∈ {1} + .t[0..2] ∈ [--..--] + .t[3] ∈ {5} + .t[4] ∈ {6} + .t[5] ∈ {7} + .t[6] ∈ {8} + .b ∈ {9} + s3.a ∈ {1} + .t[0..6] ∈ [--..--] + .b ∈ {9} +[from] Computing for function main1 +[from] Done for function main1 +[from] Computing for function main2 +[from] Computing for function f1 <-main2 +[from] Done for function f1 +[from] Computing for function f2 <-main2 +[from] Done for function f2 +[from] Computing for function f3 <-main2 +[from] Done for function f3 +[from] Done for function main2 +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f1: + s1.t[5..6] FROM \nothing +[from] Function f2: + s2.t[0..2] FROM \nothing +[from] Function f3: + s3.t[0..6] FROM \nothing +[from] Function main1: + outp FROM v; + T{[0].p; [1].p; [2].p; [3].p; [4].p; [5].p; [6].p; [7].p; [8].p; + [9].p; [10].p; [11].p; [12].p; [13].p; [14].p; [15].p; [16].p; + [17].p; [18].p; [19].p; [20].p; [21].p} + x FROM v; + T{[0].p; [1].p; [2].p; [3].p; [4].p; [5].p; [6].p; [7].p; [8].p; + [9].p; [10].p; [11].p; [12].p; [13].p; [14].p; [15].p; [16].p; + [17].p; [18].p; [19].p; [20].p; [21].p} (and SELF) + y FROM v; + T{[0].p; [1].p; [2].p; [3].p; [4].p; [5].p; [6].p; [7].p; [8].p; + [9].p; [10].p; [11].p; [12].p; [13].p; [14].p; [15].p; [16].p; + [17].p; [18].p; [19].p; [20].p; [21].p} (and SELF) + z1 FROM z1 +[from] Function main2: + s1{{.a; .t[0..4]}; .b} FROM s + .t[5..6] FROM \nothing + s2{.a; {.t[3..6]; .b}} FROM s + .t[0..2] FROM \nothing + s3{.a; .b} FROM s + .t[0..6] FROM \nothing +[from] Function main: + outp FROM v; + T{[0].p; [1].p; [2].p; [3].p; [4].p; [5].p; [6].p; [7].p; [8].p; + [9].p; [10].p; [11].p; [12].p; [13].p; [14].p; [15].p; [16].p; + [17].p; [18].p; [19].p; [20].p; [21].p} + x FROM v; + T{[0].p; [1].p; [2].p; [3].p; [4].p; [5].p; [6].p; [7].p; [8].p; + [9].p; [10].p; [11].p; [12].p; [13].p; [14].p; [15].p; [16].p; + [17].p; [18].p; [19].p; [20].p; [21].p} (and SELF) + y FROM v; + T{[0].p; [1].p; [2].p; [3].p; [4].p; [5].p; [6].p; [7].p; [8].p; + [9].p; [10].p; [11].p; [12].p; [13].p; [14].p; [15].p; [16].p; + [17].p; [18].p; [19].p; [20].p; [21].p} (and SELF) + z1 FROM z1 + s1{{.a; .t[0..4]}; .b} FROM s + .t[5..6] FROM \nothing + s2{.a; {.t[3..6]; .b}} FROM s + .t[0..2] FROM \nothing + s3{.a; .b} FROM s + .t[0..6] FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main1: + outp; x; y; z1 +[inout] Inputs for function main1: + v; outp; z1; + T{[0].p; [1].p; [2].p; [3].p; [4].p; [5].p; [6].p; [7].p; [8].p; [9].p; + [10].p; [11].p; [12].p; [13].p; [14].p; [15].p; [16].p; [17].p; [18].p; + [19].p; [20].p; [21].p} +[inout] Out (internal) for function main2: + s1; s2; s3 +[inout] Inputs for function main2: + v; s; s1; s2; s3 +[inout] Out (internal) for function main: + outp; x; y; z1; s1; s2; s3 +[inout] Inputs for function main: + v; outp; z1; + T{[0].p; [1].p; [2].p; [3].p; [4].p; [5].p; [6].p; [7].p; [8].p; [9].p; + [10].p; [11].p; [12].p; [13].p; [14].p; [15].p; [16].p; [17].p; [18].p; + [19].p; [20].p; [21].p}; s; s1; s2; s3 +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + v ∈ [--..--] + outp ∈ {0} + x ∈ {0} + y ∈ {0} + z1 ∈ {0} + z2 ∈ {0} + z3 ∈ {0} + z4 ∈ {0} + T[0].a ∈ {1} + [0].b ∈ {2} + [0].pp ∈ {0} + [0].p ∈ {{ &x }} + [1].a ∈ {{ (int)&z1 }} + [1].b ∈ {{ (int)&z2 }} + [1].pp ∈ {{ &z3 }} + [1].p ∈ {{ &y }} + [2].a ∈ {{ (int)&z4 }} + [2].b ∈ {2} + [2].pp ∈ {0} + [2].p ∈ {{ &x }} + [3].a ∈ {1} + [3].b ∈ {2} + [3].pp ∈ {0} + [3].p ∈ {{ &x }} + [4..21] ∈ {0} + s.a ∈ {1} + .t[0] ∈ {2} + .t[1] ∈ {3} + .t[2] ∈ {4} + .t[3] ∈ {5} + .t[4] ∈ {6} + .t[5] ∈ {7} + .t[6] ∈ {8} + .b ∈ {9} + s1 ∈ {0} + s2 ∈ {0} + s3 ∈ {0} +[value] computing for function main1 <- main. + Called from tests/value/struct_array.i:56. +tests/value/struct_array.i:35:[value] warning: out of bounds read. assert \valid_read(&T[v].p); +tests/value/struct_array.i:36:[value] warning: out of bounds write. assert \valid(outp); +[value] Recording results for main1 +[value] Done for function main1 +[value] computing for function main2 <- main. + Called from tests/value/struct_array.i:57. +[value] Called Frama_C_show_each(.a ∈ {1} + .t[0] ∈ {2} + .t[1] ∈ {3} + .t[2] ∈ {4} + .t[3] ∈ {5} + .t[4] ∈ {6} + .t[5] ∈ {7} + .t[6] ∈ {8} + .b ∈ {9}) +[value] computing for function f1 <- main2 <- main. + Called from tests/value/struct_array.i:42. +[value] Done for function f1 +[value] Called Frama_C_show_each(.a ∈ {1} + .t[0] ∈ {2} + .t[1] ∈ {3} + .t[2] ∈ {4} + .t[3] ∈ {5} + .t[4] ∈ {6} + {.t[5..6]; .b} ∈ [--..--]) +[value] computing for function f2 <- main2 <- main. + Called from tests/value/struct_array.i:44. +[value] Done for function f2 +[value] Called Frama_C_show_each({.a; .t[0..2]} ∈ [--..--] + .t[3] ∈ {5} + .t[4] ∈ {6} + .t[5] ∈ {7} + .t[6] ∈ {8} + .b ∈ {9}) +[value] computing for function f3 <- main2 <- main. + Called from tests/value/struct_array.i:46. +[value] Done for function f3 +[value] Called Frama_C_show_each([--..--]) +tests/value/struct_array.i:50:[value] warning: assertion got status invalid (stopping propagation). +[value] Recording results for main2 +[value] Done for function main2 +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main1: + outp ∈ {{ &x ; &y }} + x ∈ {0; 5} + y ∈ {0; 5} + z1 ∈ {1} +[value:final-states] Values at end of function main2: + s1.a ∈ {1} + .t[0] ∈ {2} + .t[1] ∈ {3} + .t[2] ∈ {4} + .t[3] ∈ {5} + .t[4] ∈ {6} + {.t[5..6]; .b} ∈ [--..--] + s2{.a; .t[0..2]} ∈ [--..--] + .t[3] ∈ {5} + .t[4] ∈ {6} + .t[5] ∈ {7} + .t[6] ∈ {8} + .b ∈ {9} + s3 ∈ [--..--] +[value:final-states] Values at end of function main: + outp ∈ {{ &x ; &y }} + x ∈ {0; 5} + y ∈ {0; 5} + z1 ∈ {1} + s1.a ∈ {1} + .t[0] ∈ {2} + .t[1] ∈ {3} + .t[2] ∈ {4} + .t[3] ∈ {5} + .t[4] ∈ {6} + {.t[5..6]; .b} ∈ [--..--] + s2{.a; .t[0..2]} ∈ [--..--] + .t[3] ∈ {5} + .t[4] ∈ {6} + .t[5] ∈ {7} + .t[6] ∈ {8} + .b ∈ {9} + s3 ∈ [--..--] +[from] Computing for function main1 +[from] Done for function main1 +[from] Computing for function main2 +[from] Computing for function f1 <-main2 +[from] Done for function f1 +[from] Computing for function f2 <-main2 +[from] Done for function f2 +[from] Computing for function f3 <-main2 +[from] Done for function f3 +[from] Done for function main2 +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f1: + s1{.t[5..6]; .b} FROM \nothing +[from] Function f2: + s2{.a; .t[0..2]} FROM \nothing +[from] Function f3: + s3 FROM \nothing +[from] Function main1: + outp FROM v; + T{[0].p; [1].p; [2].p; [3].p; [4].p; [5].p; [6].p; [7].p; [8].p; + [9].p; [10].p; [11].p; [12].p; [13].p; [14].p; [15].p; [16].p; + [17].p; [18].p; [19].p; [20].p; [21].p} + x FROM v; + T{[0].p; [1].p; [2].p; [3].p; [4].p; [5].p; [6].p; [7].p; [8].p; + [9].p; [10].p; [11].p; [12].p; [13].p; [14].p; [15].p; [16].p; + [17].p; [18].p; [19].p; [20].p; [21].p} (and SELF) + y FROM v; + T{[0].p; [1].p; [2].p; [3].p; [4].p; [5].p; [6].p; [7].p; [8].p; + [9].p; [10].p; [11].p; [12].p; [13].p; [14].p; [15].p; [16].p; + [17].p; [18].p; [19].p; [20].p; [21].p} (and SELF) + z1 FROM z1 +[from] Function main2: + s1{.a; .t[0..4]} FROM s + {.t[5..6]; .b} FROM \nothing + s2{.a; .t[0..2]} FROM \nothing + {.t[3..6]; .b} FROM s + s3 FROM \nothing +[from] Function main: + outp FROM v; + T{[0].p; [1].p; [2].p; [3].p; [4].p; [5].p; [6].p; [7].p; [8].p; + [9].p; [10].p; [11].p; [12].p; [13].p; [14].p; [15].p; [16].p; + [17].p; [18].p; [19].p; [20].p; [21].p} + x FROM v; + T{[0].p; [1].p; [2].p; [3].p; [4].p; [5].p; [6].p; [7].p; [8].p; + [9].p; [10].p; [11].p; [12].p; [13].p; [14].p; [15].p; [16].p; + [17].p; [18].p; [19].p; [20].p; [21].p} (and SELF) + y FROM v; + T{[0].p; [1].p; [2].p; [3].p; [4].p; [5].p; [6].p; [7].p; [8].p; + [9].p; [10].p; [11].p; [12].p; [13].p; [14].p; [15].p; [16].p; + [17].p; [18].p; [19].p; [20].p; [21].p} (and SELF) + z1 FROM z1 + s1{.a; .t[0..4]} FROM s + {.t[5..6]; .b} FROM \nothing + s2{.a; .t[0..2]} FROM \nothing + {.t[3..6]; .b} FROM s + s3 FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main1: + outp; x; y; z1 +[inout] Inputs for function main1: + v; outp; z1; + T{[0].p; [1].p; [2].p; [3].p; [4].p; [5].p; [6].p; [7].p; [8].p; [9].p; + [10].p; [11].p; [12].p; [13].p; [14].p; [15].p; [16].p; [17].p; [18].p; + [19].p; [20].p; [21].p} +[inout] Out (internal) for function main2: + s1; s2; s3 +[inout] Inputs for function main2: + v; s; s1; s2; s3 +[inout] Out (internal) for function main: + outp; x; y; z1; s1; s2; s3 +[inout] Inputs for function main: + v; outp; z1; + T{[0].p; [1].p; [2].p; [3].p; [4].p; [5].p; [6].p; [7].p; [8].p; [9].p; + [10].p; [11].p; [12].p; [13].p; [14].p; [15].p; [16].p; [17].p; [18].p; + [19].p; [20].p; [21].p}; s; s1; s2; s3 diff --git a/tests/value/oracle_symblocs/struct_call.0.err.oracle b/tests/value/oracle_symblocs/struct_call.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/struct_call.0.res.oracle b/tests/value/oracle_symblocs/struct_call.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..ec54366f262ddd844781b4d9ec8d894eb6923959 --- /dev/null +++ b/tests/value/oracle_symblocs/struct_call.0.res.oracle @@ -0,0 +1,108 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/struct_call.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + G ∈ {77} + GG ∈ {0} + t[0..3] ∈ {0} + tt[0..4] ∈ {0} + C{.c1; .[bits 16 to 31]} ∈ [--..--] + .c2 ∈ {{ NULL ; &S_c2_C[0] }} + S_c2_C[0..1] ∈ [--..--] +[value] computing for function main1 <- main. + Called from tests/value/struct_call.i:46. +[value] computing for function g <- main1 <- main. + Called from tests/value/struct_call.i:33. +[value] Called Frama_C_show_each_G({0}) +[value] Recording results for g +[value] Done for function g +[value] computing for function create_A <- main1 <- main. + Called from tests/value/struct_call.i:34. +[value] Called Frama_C_show_each_GG(.x ∈ {1} + .y ∈ {0}) +[value] Recording results for create_A +[value] Done for function create_A +[value] computing for function g <- main1 <- main. + Called from tests/value/struct_call.i:35. +[value] Called Frama_C_show_each_G(.x ∈ {0} + .y ∈ {77}) +[value] Recording results for g +[value] Done for function g +[value] Recording results for main1 +[value] Done for function main1 +[value] computing for function h <- main. + Called from tests/value/struct_call.i:47. +[value] Called Frama_C_show_each([-32768..32767], {{ NULL ; &S_c2_C }}) +[value] Recording results for h +[value] Done for function h +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function create_A: + r.x ∈ {1} + .y ∈ {0} +[value:final-states] Values at end of function g: + __retres ∈ {0; 77} +[value:final-states] Values at end of function h: + +[value:final-states] Values at end of function main1: + GG ∈ {0} + t{[0]; [1].x} ∈ {0} + [1].y ∈ {77} + [2..3] ∈ {0} + i ∈ {1} + init.x ∈ {1} + .y ∈ {0} +[value:final-states] Values at end of function main: + GG ∈ {0} + t{[0]; [1].x} ∈ {0} + [1].y ∈ {77} + [2..3] ∈ {0} +[from] Computing for function create_A +[from] Done for function create_A +[from] Computing for function g +[from] Done for function g +[from] Computing for function h +[from] Done for function h +[from] Computing for function main1 +[from] Done for function main1 +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function create_A: + \result FROM \nothing +[from] Function g: + \result FROM s.y +[from] Function h: + NO EFFECTS +[from] Function main1: + GG FROM tt[1] + t[1].y FROM G + \result FROM G; t[1].x +[from] Function main: + GG FROM tt[1] + t[1].y FROM G +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function create_A: + r +[inout] Inputs for function create_A: + \nothing +[inout] Out (internal) for function g: + __retres +[inout] Inputs for function g: + \nothing +[inout] Out (internal) for function h: + \nothing +[inout] Inputs for function h: + \nothing +[inout] Out (internal) for function main1: + GG; t[1].y; i; init; tmp_0 +[inout] Inputs for function main1: + G; t[1]; tt[1] +[inout] Out (internal) for function main: + GG; t[1].y +[inout] Inputs for function main: + G; t[1]; tt[1]; C diff --git a/tests/value/oracle_symblocs/struct_call.1.err.oracle b/tests/value/oracle_symblocs/struct_call.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/struct_call.1.res.oracle b/tests/value/oracle_symblocs/struct_call.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..ec54366f262ddd844781b4d9ec8d894eb6923959 --- /dev/null +++ b/tests/value/oracle_symblocs/struct_call.1.res.oracle @@ -0,0 +1,108 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/struct_call.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + G ∈ {77} + GG ∈ {0} + t[0..3] ∈ {0} + tt[0..4] ∈ {0} + C{.c1; .[bits 16 to 31]} ∈ [--..--] + .c2 ∈ {{ NULL ; &S_c2_C[0] }} + S_c2_C[0..1] ∈ [--..--] +[value] computing for function main1 <- main. + Called from tests/value/struct_call.i:46. +[value] computing for function g <- main1 <- main. + Called from tests/value/struct_call.i:33. +[value] Called Frama_C_show_each_G({0}) +[value] Recording results for g +[value] Done for function g +[value] computing for function create_A <- main1 <- main. + Called from tests/value/struct_call.i:34. +[value] Called Frama_C_show_each_GG(.x ∈ {1} + .y ∈ {0}) +[value] Recording results for create_A +[value] Done for function create_A +[value] computing for function g <- main1 <- main. + Called from tests/value/struct_call.i:35. +[value] Called Frama_C_show_each_G(.x ∈ {0} + .y ∈ {77}) +[value] Recording results for g +[value] Done for function g +[value] Recording results for main1 +[value] Done for function main1 +[value] computing for function h <- main. + Called from tests/value/struct_call.i:47. +[value] Called Frama_C_show_each([-32768..32767], {{ NULL ; &S_c2_C }}) +[value] Recording results for h +[value] Done for function h +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function create_A: + r.x ∈ {1} + .y ∈ {0} +[value:final-states] Values at end of function g: + __retres ∈ {0; 77} +[value:final-states] Values at end of function h: + +[value:final-states] Values at end of function main1: + GG ∈ {0} + t{[0]; [1].x} ∈ {0} + [1].y ∈ {77} + [2..3] ∈ {0} + i ∈ {1} + init.x ∈ {1} + .y ∈ {0} +[value:final-states] Values at end of function main: + GG ∈ {0} + t{[0]; [1].x} ∈ {0} + [1].y ∈ {77} + [2..3] ∈ {0} +[from] Computing for function create_A +[from] Done for function create_A +[from] Computing for function g +[from] Done for function g +[from] Computing for function h +[from] Done for function h +[from] Computing for function main1 +[from] Done for function main1 +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function create_A: + \result FROM \nothing +[from] Function g: + \result FROM s.y +[from] Function h: + NO EFFECTS +[from] Function main1: + GG FROM tt[1] + t[1].y FROM G + \result FROM G; t[1].x +[from] Function main: + GG FROM tt[1] + t[1].y FROM G +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function create_A: + r +[inout] Inputs for function create_A: + \nothing +[inout] Out (internal) for function g: + __retres +[inout] Inputs for function g: + \nothing +[inout] Out (internal) for function h: + \nothing +[inout] Inputs for function h: + \nothing +[inout] Out (internal) for function main1: + GG; t[1].y; i; init; tmp_0 +[inout] Inputs for function main1: + G; t[1]; tt[1] +[inout] Out (internal) for function main: + GG; t[1].y +[inout] Inputs for function main: + G; t[1]; tt[1]; C diff --git a/tests/value/oracle_symblocs/struct_deps.err.oracle b/tests/value/oracle_symblocs/struct_deps.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/struct_deps.res.oracle b/tests/value/oracle_symblocs/struct_deps.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..21741aa1499b737619dbbd76e6a64a843fd8915e --- /dev/null +++ b/tests/value/oracle_symblocs/struct_deps.res.oracle @@ -0,0 +1,37 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/struct_deps.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] computing for function f <- main. + Called from tests/value/struct_deps.i:12. +[value] Recording results for f +[value] Done for function f +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + __retres ∈ [--..--] +[value:final-states] Values at end of function main: + s ∈ [--..--] +[from] Computing for function f +[from] Done for function f +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + \result FROM ps; s.a +[from] Function main: + \result FROM x +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + __retres +[inout] Inputs for function f: + s.a +[inout] Out (internal) for function main: + s; tmp +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/struct_incl.err.oracle b/tests/value/oracle_symblocs/struct_incl.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/struct_incl.res.oracle b/tests/value/oracle_symblocs/struct_incl.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..affe82066006918928f26a69b662278998c943f7 --- /dev/null +++ b/tests/value/oracle_symblocs/struct_incl.res.oracle @@ -0,0 +1,57 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/struct_incl.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + tabst[0..9] ∈ {0} + tabst2[0..9] ∈ {0} + tab_s[0..1] ∈ {0} + tab_s1[0..1] ∈ {0} + tab_s2[0..1] ∈ {0} + tab_s3[0..1] ∈ {0} + tab_s4[0..1] ∈ {0} + s1 ∈ {0} + s2 ∈ {0} + s4 ∈ {0} + s5 ∈ {0} + s6 ∈ {0} + s8 ∈ {0} + s7 ∈ {0} + x ∈ {0} + y ∈ {0} + z ∈ {0} + t ∈ {0} + v ∈ [--..--] +tests/value/struct_incl.i:48:[value] warning: accessing out of bounds index. assert 10 < 10; +tests/value/struct_incl.i:48:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +[value] Recording results for main +[value] done for function main +tests/value/struct_incl.i:48:[value] assertion 'Value,index_bound' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + s1{.a; .d[0..2]} ∈ {2} + .d[3..4] ∈ {0} + .d[5] ∈ {7} + .d[6..7] ∈ {0} + .d[8..9] ∈ {8} + .b.a ∈ {3} + {.b.b; .e[0..9]} ∈ {0} + .c ∈ {{ &s1 }} + x ∈ {{ (long)&s1.d[9] }} + y ∈ {{ (long)&s1.b }} + z ∈ {{ (long)&s1.b }} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + s1{{.a; .d[0..2]}; .d[5]; {.d[8..9]; .b.a}; .c} FROM \nothing + x FROM \nothing + y FROM \nothing + z FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + s1{{.a; .d[0..2]}; .d[5]; {.d[8..9]; .b.a}; .c}; x; y; z +[inout] Inputs for function main: + v diff --git a/tests/value/oracle_symblocs/struct_p_call.err.oracle b/tests/value/oracle_symblocs/struct_p_call.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/struct_p_call.res.oracle b/tests/value/oracle_symblocs/struct_p_call.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..a9803dc40076f5fbc55ab7c5468fe8e1d3e92999 --- /dev/null +++ b/tests/value/oracle_symblocs/struct_p_call.res.oracle @@ -0,0 +1,42 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/struct_p_call.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] computing for function f <- main. + Called from tests/value/struct_p_call.i:14. +[value] Recording results for f +[value] Done for function f +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + H1.v ∈ {1} + .[bits 8 to 31] ∈ UNINITIALIZED + .w ∈ {0} +[value:final-states] Values at end of function main: + H1.v ∈ {1} + .[bits 8 to 31] ∈ UNINITIALIZED + .w ∈ {0} + __retres ∈ {1} +[from] Computing for function f +[from] Done for function f +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + H1{.v; .w} FROM G1 +[from] Function main: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + H1{.v; .w} +[inout] Inputs for function f: + \nothing +[inout] Out (internal) for function main: + H1{.v; .w}; __retres +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/strucval.err.oracle b/tests/value/oracle_symblocs/strucval.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/strucval.res.oracle b/tests/value/oracle_symblocs/strucval.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..ba10a1bd5d5dd71e8c7eebc5aebc6ac60ee0d585 --- /dev/null +++ b/tests/value/oracle_symblocs/strucval.res.oracle @@ -0,0 +1,34 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/strucval.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] computing for function h <- main. + Called from tests/value/strucval.c:27. +[value] using specification for function h +[value] Done for function h +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + SharedData.FunctionCode ∈ {0} + .MachineNumber ∈ {1456} + .[bits 48 to 63] ∈ UNINITIALIZED + .Line ∈ {25} +[from] Computing for function main +[from] Computing for function h <-main +[from] Done for function h +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function h: + NO EFFECTS +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + SharedData{{.FunctionCode; .MachineNumber}; .Line} +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/subset.err.oracle b/tests/value/oracle_symblocs/subset.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/subset.res.oracle b/tests/value/oracle_symblocs/subset.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..0e1b79a3518316ddfed0ab0e592b9ad232e5310a --- /dev/null +++ b/tests/value/oracle_symblocs/subset.res.oracle @@ -0,0 +1,126 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/subset.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + t[0..9] ∈ {0} + __fc_fopen[0..511] ∈ {0} + _p__fc_fopen ∈ {{ &__fc_fopen[0] }} + v ∈ [--..--] +[value] computing for function main1 <- main. + Called from tests/value/subset.c:71. +tests/value/subset.c:16:[value] warning: assertion got status unknown. +tests/value/subset.c:17:[value] assertion got status valid. +tests/value/subset.c:18:[value] assertion got status valid. +tests/value/subset.c:22:[value] warning: assertion got status unknown. +[value] computing for function fopen <- main1 <- main. + Called from tests/value/subset.c:25. +[value] using specification for function fopen +[value] Done for function fopen +tests/value/subset.c:26:[value] assertion got status valid. +[value] Recording results for main1 +[value] Done for function main1 +[value] computing for function main2 <- main. + Called from tests/value/subset.c:72. +tests/value/subset.c:35:[value] assertion got status valid. +[value] Recording results for main2 +[value] Done for function main2 +[value] computing for function main3 <- main. + Called from tests/value/subset.c:73. +tests/value/subset.c:40:[value] warning: accessing out of bounds index. assert 0 ≤ v; +tests/value/subset.c:40:[value] warning: accessing out of bounds index. assert v < 10; +tests/value/subset.c:41:[value] warning: accessing out of bounds index. assert 0 ≤ v; +tests/value/subset.c:41:[value] warning: accessing out of bounds index. assert v < 300; +tests/value/subset.c:42:[value] warning: assertion got status unknown. +tests/value/subset.c:43:[value] warning: assertion got status unknown. +tests/value/subset.c:45:[value] warning: assertion got status unknown. +tests/value/subset.c:48:[value] warning: assertion got status unknown. +tests/value/subset.c:49:[value] warning: assertion got status unknown. +tests/value/subset.c:50:[value] warning: assertion got status unknown. +[value] Recording results for main3 +[value] Done for function main3 +[value] computing for function main4 <- main. + Called from tests/value/subset.c:74. +tests/value/subset.c:55:[value] warning: accessing out of bounds index. assert 0 ≤ v; +tests/value/subset.c:55:[value] warning: accessing out of bounds index. assert v < 10; +tests/value/subset.c:56:[value] warning: assertion got status unknown. +tests/value/subset.c:57:[value] warning: assertion got status unknown. +tests/value/subset.c:59:[value] warning: assertion got status unknown. +tests/value/subset.c:60:[value] warning: assertion got status unknown. +tests/value/subset.c:61:[value] warning: assertion got status unknown. +tests/value/subset.c:63:[value] warning: assertion got status unknown. +tests/value/subset.c:64:[value] warning: assertion got status unknown. +tests/value/subset.c:65:[value] assertion 'OK' got status valid. +tests/value/subset.c:66:[value] warning: assertion 'KO' got status unknown. +[value] Recording results for main4 +[value] Done for function main4 +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main1: + p ∈ {{ NULL ; &__fc_fopen + [0..14308],0%28 }} +[value:final-states] Values at end of function main2: + x ∈ {1} + y ∈ {1} + z ∈ {1} +[value:final-states] Values at end of function main3: + a[0..8] ∈ {5} + [9] ∈ [--..--] + b[0..100] ∈ [-10..10] + [101..299] ∈ [--..--] + z ∈ [-10..10] +[value:final-states] Values at end of function main4: + a[0..4] ∈ {4; 5; 6; 7; 8} + [5] ∈ {5} + [6..9] ∈ {4; 5; 6; 7; 8} + k ∈ {4; 5; 6; 7; 8} +[value:final-states] Values at end of function main: + +[from] Computing for function main1 +[from] Computing for function fopen <-main1 +[from] Done for function fopen +[from] Done for function main1 +[from] Computing for function main2 +[from] Done for function main2 +[from] Computing for function main3 +[from] Done for function main3 +[from] Computing for function main4 +[from] Done for function main4 +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function fopen: + \result FROM _p__fc_fopen; "bla" +[from] Function main1: + NO EFFECTS +[from] Function main2: + NO EFFECTS +[from] Function main3: + NO EFFECTS +[from] Function main4: + NO EFFECTS +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main1: + p +[inout] Inputs for function main1: + _p__fc_fopen; "bla" +[inout] Out (internal) for function main2: + x; y; z +[inout] Inputs for function main2: + \nothing +[inout] Out (internal) for function main3: + a[0..9]; b[0..299]; z +[inout] Inputs for function main3: + v +[inout] Out (internal) for function main4: + a[0..9]; k +[inout] Inputs for function main4: + v +[inout] Out (internal) for function main: + \nothing +[inout] Inputs for function main: + _p__fc_fopen; v; "bla" diff --git a/tests/value/oracle_symblocs/switch.0.err.oracle b/tests/value/oracle_symblocs/switch.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/switch.0.res.oracle b/tests/value/oracle_symblocs/switch.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e1d86a710152b9161d67c9a7458febf4fbe38489 --- /dev/null +++ b/tests/value/oracle_symblocs/switch.0.res.oracle @@ -0,0 +1,40 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/switch.i (no preprocessing) +tests/value/switch.i:52:[kernel] Case label 0xFFFFFFFF exceeds range of long for switch expression. Nothing to worry. +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + result1 ∈ {0} + result3 ∈ {0} + result4 ∈ {0} + result2 ∈ {7} + d2 ∈ {0} +[value] Called Frama_C_show_each_F({0}) +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + result1 ∈ {0; 1; 2; 4} + result3 ∈ {0; 42} + result4 ∈ {0; 1; 2} + result2 ∈ {0; 7} + d2 ∈ [-0.0000000000000000 .. 1.9999999999999998*2^1023] + f ∈ [--..--] + __retres ∈ {0; 2; 77} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + result1 FROM d (and SELF) + result3 FROM c; f (and SELF) + result4 FROM c; l (and SELF) + result2 FROM c; e (and SELF) + d2 FROM c; d1 (and SELF) + \result FROM c +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + result1; result3; result4; result2; d2; f; __retres +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/switch.1.err.oracle b/tests/value/oracle_symblocs/switch.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/switch.1.res.oracle b/tests/value/oracle_symblocs/switch.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e1d86a710152b9161d67c9a7458febf4fbe38489 --- /dev/null +++ b/tests/value/oracle_symblocs/switch.1.res.oracle @@ -0,0 +1,40 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/switch.i (no preprocessing) +tests/value/switch.i:52:[kernel] Case label 0xFFFFFFFF exceeds range of long for switch expression. Nothing to worry. +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + result1 ∈ {0} + result3 ∈ {0} + result4 ∈ {0} + result2 ∈ {7} + d2 ∈ {0} +[value] Called Frama_C_show_each_F({0}) +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + result1 ∈ {0; 1; 2; 4} + result3 ∈ {0; 42} + result4 ∈ {0; 1; 2} + result2 ∈ {0; 7} + d2 ∈ [-0.0000000000000000 .. 1.9999999999999998*2^1023] + f ∈ [--..--] + __retres ∈ {0; 2; 77} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + result1 FROM d (and SELF) + result3 FROM c; f (and SELF) + result4 FROM c; l (and SELF) + result2 FROM c; e (and SELF) + d2 FROM c; d1 (and SELF) + \result FROM c +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + result1; result3; result4; result2; d2; f; __retres +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/switch2.err.oracle b/tests/value/oracle_symblocs/switch2.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/switch2.res.oracle b/tests/value/oracle_symblocs/switch2.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..deaff769f40cb38fe2fdefb14bbd25d6ad0f9f60 --- /dev/null +++ b/tests/value/oracle_symblocs/switch2.res.oracle @@ -0,0 +1,47 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/switch2.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] computing for function f <- main. + Called from tests/value/switch2.i:13. +[value] Recording results for f +[value] Done for function f +[value] computing for function g <- main. + Called from tests/value/switch2.i:13. +tests/value/switch2.i:13:[kernel] warning: Neither code nor specification for function g, generating default assigns from the prototype +[value] using specification for function g +[value] Done for function g +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + __retres ∈ {3} +[value:final-states] Values at end of function main: + exit_loop ∈ {3} + __retres ∈ {0} +[from] Computing for function f +[from] Done for function f +[from] Computing for function main +[from] Computing for function g <-main +[from] Done for function g +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + \result FROM x +[from] Function g: + NO EFFECTS +[from] Function main: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + __retres +[inout] Inputs for function f: + \nothing +[inout] Out (internal) for function main: + exit_loop; tmp_0; tmp_1; __retres +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/switch_cast.err.oracle b/tests/value/oracle_symblocs/switch_cast.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/switch_cast.res.oracle b/tests/value/oracle_symblocs/switch_cast.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..93fb10f6519005caa63ec9f4b15c172b6af74d8d --- /dev/null +++ b/tests/value/oracle_symblocs/switch_cast.res.oracle @@ -0,0 +1,39 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/switch_cast.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + x ∈ [--..--] +[value] computing for function g <- main. + Called from tests/value/switch_cast.i:70. +[value] Called Frama_C_show_each([1..241],1%2) +[value] Recording results for g +[value] Done for function g +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function g: + x ∈ [0..15] + y ∈ [1..241],1%2 +[value:final-states] Values at end of function main: + x ∈ [0..15] +[from] Computing for function g +[from] Done for function g +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function g: + x FROM x +[from] Function main: + x FROM x +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function g: + x; y +[inout] Inputs for function g: + x +[inout] Out (internal) for function main: + x +[inout] Inputs for function main: + x diff --git a/tests/value/oracle_symblocs/symbolic_locs.err.oracle b/tests/value/oracle_symblocs/symbolic_locs.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/symbolic_locs.res.oracle b/tests/value/oracle_symblocs/symbolic_locs.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..cbb84dd848ce3110f9444b8c0c976fd48901f19c --- /dev/null +++ b/tests/value/oracle_symblocs/symbolic_locs.res.oracle @@ -0,0 +1,228 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/symbolic_locs.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + v ∈ [--..--] + t[0..9] ∈ {0} + u[0..9] ∈ [--..--] +[value] computing for function main2_kill_direct <- main. + Called from tests/value/symbolic_locs.i:72. +tests/value/symbolic_locs.i:29:[value] warning: assertion got status unknown. +[value] DUMPING STATE of file tests/value/symbolic_locs.i line 32 + v ∈ [--..--] + t[0..8] ∈ {0; 4} + [9] ∈ {0} + u[0..9] ∈ [--..--] + i ∈ [0..8] + =END OF DUMP== +[value:d-symblocs] DUMPING SYMBLOCS STATE of file tests/value/symbolic_locs.i line 32 + V: {[ (l)t[i] -> {4} ]} + Z: {[ (l)t[i] -> t[0..8]; i ]} + I: {[ t -> {(l)t[i]} + i -> {(l)t[i]} ]} + S: {[ i -> {(l)t[i]} ]} +[value] DUMPING STATE of file tests/value/symbolic_locs.i line 34 + v ∈ [--..--] + t[0..1] ∈ {0; 4} + [2] ∈ {1} + [3..8] ∈ {0; 4} + [9] ∈ {0} + u[0..9] ∈ [--..--] + i ∈ [0..8] + =END OF DUMP== +[value:d-symblocs] DUMPING SYMBLOCS STATE of file tests/value/symbolic_locs.i line 34 + V: {[ ]} + Z: {[ ]} + I: {[ ]} + S: {[ ]} +[value] Recording results for main2_kill_direct +[value] Done for function main2_kill_direct +[value] computing for function main3_kill_indirect <- main. + Called from tests/value/symbolic_locs.i:73. +tests/value/symbolic_locs.i:41:[value] warning: assertion got status unknown. +[value] DUMPING STATE of file tests/value/symbolic_locs.i line 44 + v ∈ [--..--] + t[0..1] ∈ {0; 4} + [2] ∈ {0; 1; 4} + [3..8] ∈ {0; 4} + [9] ∈ {0} + u[0..9] ∈ [--..--] + i ∈ [0..8] + =END OF DUMP== +[value:d-symblocs] DUMPING SYMBLOCS STATE of file tests/value/symbolic_locs.i line 44 + V: {[ (l)t[i] -> {4} ]} + Z: {[ (l)t[i] -> t[0..8]; i ]} + I: {[ t -> {(l)t[i]} + i -> {(l)t[i]} ]} + S: {[ i -> {(l)t[i]} ]} +[value] DUMPING STATE of file tests/value/symbolic_locs.i line 46 + v ∈ [--..--] + t[0..1] ∈ {0; 4} + [2] ∈ {0; 1; 4} + [3..8] ∈ {0; 4} + [9] ∈ {0} + u[0..9] ∈ [--..--] + i ∈ {8} + =END OF DUMP== +[value:d-symblocs] DUMPING SYMBLOCS STATE of file tests/value/symbolic_locs.i line 46 + V: {[ ]} + Z: {[ ]} + I: {[ ]} + S: {[ ]} +[value] Recording results for main3_kill_indirect +[value] Done for function main3_kill_indirect +[value] computing for function main4_scope_right <- main. + Called from tests/value/symbolic_locs.i:74. +tests/value/symbolic_locs.i:51:[value] warning: assertion got status unknown. +[value] DUMPING STATE of file tests/value/symbolic_locs.i line 55 + v ∈ [--..--] + t[0..1] ∈ {{ NULL + {0; 4} ; (int)&x }} + [2] ∈ {{ NULL + {0; 1; 4} ; (int)&x }} + [3..8] ∈ {{ NULL + {0; 4} ; (int)&x }} + [9] ∈ {0} + u[0..9] ∈ [--..--] + i ∈ [0..8] + x ∈ UNINITIALIZED + =END OF DUMP== +[value:d-symblocs] DUMPING SYMBLOCS STATE of file tests/value/symbolic_locs.i line 55 + V: {[ (l)t[i] -> {{ &x }} ]} + Z: {[ (l)t[i] -> t[0..8]; i ]} + I: {[ t -> {(l)t[i]} + i -> {(l)t[i]} ]} + S: {[ i -> {(l)t[i]} + x -> {(l)t[i]} ]} +tests/value/symbolic_locs.i:55:[value] warning: locals {x} escaping the scope of a block of main4_scope_right through t +[value] DUMPING STATE of file tests/value/symbolic_locs.i line 57 + v ∈ [--..--] + t[0..1] ∈ {0; 4} or ESCAPINGADDR + [2] ∈ {0; 1; 4} or ESCAPINGADDR + [3..8] ∈ {0; 4} or ESCAPINGADDR + [9] ∈ {0} + u[0..9] ∈ [--..--] + i ∈ [0..8] + =END OF DUMP== +[value:d-symblocs] DUMPING SYMBLOCS STATE of file tests/value/symbolic_locs.i line 57 + V: {[ ]} + Z: {[ ]} + I: {[ ]} + S: {[ ]} +[value] Recording results for main4_scope_right +[value] Done for function main4_scope_right +[value] computing for function main5_scope_lv <- main. + Called from tests/value/symbolic_locs.i:75. +tests/value/symbolic_locs.i:63:[value] warning: assertion got status unknown. +[value] DUMPING STATE of file tests/value/symbolic_locs.i line 65 + v ∈ [--..--] + t[0..8] ∈ {0; 1; 4} or ESCAPINGADDR + [9] ∈ {0} + u[0..9] ∈ [--..--] + z ∈ {1} + i ∈ [0..8] + =END OF DUMP== +[value:d-symblocs] DUMPING SYMBLOCS STATE of file tests/value/symbolic_locs.i line 65 + V: {[ (l)t[i] -> {1} ]} + Z: {[ (l)t[i] -> t[0..8]; i ]} + I: {[ t -> {(l)t[i]} + i -> {(l)t[i]} ]} + S: {[ i -> {(l)t[i]} ]} +[value] DUMPING STATE of file tests/value/symbolic_locs.i line 67 + v ∈ [--..--] + t[0..8] ∈ {0; 1; 4} or ESCAPINGADDR + [9] ∈ {0} + u[0..9] ∈ [--..--] + z ∈ {1} + =END OF DUMP== +[value:d-symblocs] DUMPING SYMBLOCS STATE of file tests/value/symbolic_locs.i line 67 + V: {[ ]} + Z: {[ ]} + I: {[ ]} + S: {[ ]} +[value] Recording results for main5_scope_lv +[value] Done for function main5_scope_lv +[value] DUMPING STATE of file tests/value/symbolic_locs.i line 76 + v ∈ [--..--] + t[0..8] ∈ {0; 1; 4} or ESCAPINGADDR + [9] ∈ {0} + u[0..9] ∈ [--..--] + =END OF DUMP== +[value:d-symblocs] DUMPING SYMBLOCS STATE of file tests/value/symbolic_locs.i line 76 + V: {[ ]} + Z: {[ ]} + I: {[ ]} + S: {[ ]} +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main2_kill_direct: + t[0..1] ∈ {0; 4} + [2] ∈ {1} + [3..8] ∈ {0; 4} + [9] ∈ {0} + i ∈ [0..8] +[value:final-states] Values at end of function main3_kill_indirect: + t[0..1] ∈ {0; 4} + [2] ∈ {0; 1; 4} + [3..8] ∈ {0; 4} + [9] ∈ {0} + i ∈ {8} +[value:final-states] Values at end of function main4_scope_right: + t[0..1] ∈ {0; 4} or ESCAPINGADDR + [2] ∈ {0; 1; 4} or ESCAPINGADDR + [3..8] ∈ {0; 4} or ESCAPINGADDR + [9] ∈ {0} + i ∈ [0..8] +[value:final-states] Values at end of function main5_scope_lv: + t[0..8] ∈ {0; 1; 4} or ESCAPINGADDR + [9] ∈ {0} + z ∈ {1} +[value:final-states] Values at end of function main: + t[0..8] ∈ {0; 1; 4} or ESCAPINGADDR + [9] ∈ {0} +[from] Computing for function main2_kill_direct +[from] Computing for function Frama_C_dump_each <-main2_kill_direct +[from] Done for function Frama_C_dump_each +[from] Done for function main2_kill_direct +[from] Computing for function main3_kill_indirect +[from] Done for function main3_kill_indirect +[from] Computing for function main4_scope_right +[from] Done for function main4_scope_right +[from] Computing for function main5_scope_lv +[from] Done for function main5_scope_lv +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main2_kill_direct: + t{[0..1]; [3..8]} FROM v (and SELF) + [2] FROM \nothing +[from] Function main3_kill_indirect: + t[0..8] FROM v (and SELF) +[from] Function main4_scope_right: + t[0..8] FROM v (and SELF) +[from] Function main5_scope_lv: + t[0..8] FROM v (and SELF) +[from] Function main: + t[0..8] FROM v (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main2_kill_direct: + t[0..8]; i +[inout] Inputs for function main2_kill_direct: + v +[inout] Out (internal) for function main3_kill_indirect: + t[0..8]; i +[inout] Inputs for function main3_kill_indirect: + v +[inout] Out (internal) for function main4_scope_right: + t[0..8]; i +[inout] Inputs for function main4_scope_right: + v +[inout] Out (internal) for function main5_scope_lv: + t[0..8]; z; i +[inout] Inputs for function main5_scope_lv: + v +[inout] Out (internal) for function main: + t[0..8] +[inout] Inputs for function main: + v diff --git a/tests/value/oracle_symblocs/tab.err.oracle b/tests/value/oracle_symblocs/tab.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/tab.res.oracle b/tests/value/oracle_symblocs/tab.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..999fa3165dc9f5e762dfc1f142ff5dbfb9d40ba8 --- /dev/null +++ b/tests/value/oracle_symblocs/tab.res.oracle @@ -0,0 +1,52 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/tab.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + x ∈ {55} + y ∈ {77} + t[0..3] ∈ {0} + TT[0][0] ∈ {0} + [0][1..2] ∈ {1} + {[0][3..4]; [1][0..4]; [2][0]} ∈ {0} + [2][1] ∈ {1} + {[2][2..4]; [3..4][0..4]} ∈ {0} + TTT[0][0] ∈ {1} + [0][1] ∈ {2} + [0][2] ∈ {3} + [0][3] ∈ {4} + [0][4] ∈ {5} + [1][0..4] ∈ {0} + [2][0] ∈ {1} + {[2][1..4]; [3..4][0..4]} ∈ {0} +[value] computing for function any_int <- main. + Called from tests/value/tab.c:11. +[value] using specification for function any_int +[value] Done for function any_int +tests/value/tab.c:12:[value] warning: accessing out of bounds index. assert 0 ≤ i; +tests/value/tab.c:12:[value] warning: accessing out of bounds index. assert i < 4; +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + t[0] ∈ {0; 1} + [1] ∈ {77} + [2..3] ∈ {0; 1} + i ∈ {0; 1; 2; 3} +[from] Computing for function main +[from] Computing for function any_int <-main +[from] Done for function any_int +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function any_int: + \result FROM \nothing +[from] Function main: + t{[0]; [2..3]} FROM \nothing (and SELF) + [1] FROM y +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + t[0..3]; i +[inout] Inputs for function main: + y diff --git a/tests/value/oracle_symblocs/tab1.err.oracle b/tests/value/oracle_symblocs/tab1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/tab1.res.oracle b/tests/value/oracle_symblocs/tab1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..62889f2ca347bfc74e0089f2b5c62a887440474d --- /dev/null +++ b/tests/value/oracle_symblocs/tab1.res.oracle @@ -0,0 +1,25 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/tab1.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + G[0..9] ∈ {0} +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + G[0] ∈ [0..2147483647] + [1] ∈ [-2147483648..0] + [2..9] ∈ {0} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + G[0..1] FROM x (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + G[0..1] +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/termination.err.oracle b/tests/value/oracle_symblocs/termination.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/termination.res.oracle b/tests/value/oracle_symblocs/termination.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..f5ffd38d230517f93a84d6eac4d6ab14cded2f91 --- /dev/null +++ b/tests/value/oracle_symblocs/termination.res.oracle @@ -0,0 +1,38 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/termination.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + G[0..9] ∈ {0} + X ∈ {0} +[value] computing for function loop <- main. + Called from tests/value/termination.i:33. +[value] Recording results for loop +[value] Done for function loop +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function loop: + X ∈ {2} +[value:final-states] Values at end of function main: + X ∈ {2} +[from] Computing for function loop +[from] Done for function loop +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function loop: + X FROM \nothing +[from] Function main: + X FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function loop: + X +[inout] Inputs for function loop: + \nothing +[inout] Out (internal) for function main: + X; tmp +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/test.0.err.oracle b/tests/value/oracle_symblocs/test.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/test.0.res.oracle b/tests/value/oracle_symblocs/test.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..6bb23afb0298923fb6d5ea18a17d5735457ff117 --- /dev/null +++ b/tests/value/oracle_symblocs/test.0.res.oracle @@ -0,0 +1,38 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/test.i (no preprocessing) +[value] Analyzing a complete application starting at inst_F6 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +tests/value/test.i:9:[value] entering loop for the first time +tests/value/test.i:10:[value] entering loop for the first time +tests/value/test.i:11:[value] entering loop for the first time +tests/value/test.i:11:[value] warning: out of bounds read. assert \valid_read(v+j); +tests/value/test.i:11:[value] warning: out of bounds read. assert \valid_read(v+(int)(j+ecart)); +tests/value/test.i:13:[value] warning: out of bounds read. assert \valid_read(v+(int)(j+ecart)); +tests/value/test.i:14:[value] warning: out of bounds write. assert \valid(v+(int)(j+ecart)); +tests/value/test.i:11:[value] warning: signed overflow. assert j+ecart ≤ 2147483647; +[value] Recording results for inst_F6 +[value] done for function inst_F6 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function inst_F6: + t[0] ∈ UNINITIALIZED + [1] ∈ {4} + [2] ∈ UNINITIALIZED + i ∈ [1..2147483647] or UNINITIALIZED + j ∈ [-1073741822..1] + ecart ∈ [-1073741824..0] + tmp ∈ [-2147483647..2147483647] or UNINITIALIZED + S_v[0..1] ∈ [--..--] +[from] Computing for function inst_F6 +[from] Done for function inst_F6 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function inst_F6: + S_v[0..1] FROM v; n; S_v[0..1] (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function inst_F6: + t[1]; i; j; ecart; tmp; i_0; S_v[0..1] +[inout] Inputs for function inst_F6: + S_v[0..1] diff --git a/tests/value/oracle_symblocs/test.1.err.oracle b/tests/value/oracle_symblocs/test.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/test.1.res.oracle b/tests/value/oracle_symblocs/test.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..333d9cc043bee5f31c8a18fa43e021e5e1373ba2 --- /dev/null +++ b/tests/value/oracle_symblocs/test.1.res.oracle @@ -0,0 +1,24 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/test.i (no preprocessing) +[value] Analyzing a complete application starting at f +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] Recording results for f +[value] done for function f +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + t[0] ∈ {99} + [1..88887] ∈ UNINITIALIZED +[from] Computing for function f +[from] Done for function f +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + t[0..1] +[inout] Inputs for function f: + \nothing diff --git a/tests/value/oracle_symblocs/test_arith.err.oracle b/tests/value/oracle_symblocs/test_arith.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/test_arith.res.oracle b/tests/value/oracle_symblocs/test_arith.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..3e93832c4f6f647e149bad72aa10a6f5d1d7a17d --- /dev/null +++ b/tests/value/oracle_symblocs/test_arith.res.oracle @@ -0,0 +1,52 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/test_arith.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + t[0..9] ∈ {0} + j ∈ {0} + k ∈ {0} + ecart ∈ {0} + tmp ∈ {0} + pptr ∈ {0} + ptr ∈ {0} + qtr ∈ {0} + m1 ∈ {0} + m2 ∈ {0} + m3 ∈ {0} + G ∈ {0} +tests/value/test_arith.c:16:[value] warning: signed overflow. assert n+1 ≤ 2147483647; +tests/value/test_arith.c:18:[value] warning: signed overflow. assert -2147483648 ≤ (int)ptr+1; +tests/value/test_arith.c:18:[value] warning: signed overflow. assert (int)ptr+1 ≤ 2147483647; +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + t[0..4] ∈ {0} + [5] ∈ {11} + [6..9] ∈ {0} + j ∈ {23} + k ∈ {{ &t + {5} }} + ecart ∈ {2} + pptr ∈ {{ &ptr }} + ptr ∈ {{ &t[1] }} + qtr ∈ {{ &t[2] }} + n ∈ [-2147483647..2147483647] +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + t{[1]; [5]} FROM \nothing + j FROM \nothing + k FROM \nothing + ecart FROM \nothing + pptr FROM \nothing + ptr FROM \nothing + qtr FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + t{[1]; [5]}; j; k; ecart; pptr; ptr; qtr; n +[inout] Inputs for function main: + t{[1]; [5]}; j; ptr diff --git a/tests/value/oracle_symblocs/threat_array.err.oracle b/tests/value/oracle_symblocs/threat_array.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/threat_array.res.oracle b/tests/value/oracle_symblocs/threat_array.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..a0bade4a940ddb142ffcf595bf333857b1bb2dd9 --- /dev/null +++ b/tests/value/oracle_symblocs/threat_array.res.oracle @@ -0,0 +1,31 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/threat_array.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + T[0..9] ∈ {0} + p ∈ {0} +tests/value/threat_array.i:5:[value] warning: assertion got status unknown. +tests/value/threat_array.i:7:[value] assertion got status valid. +tests/value/threat_array.i:12:[value] assertion got status valid. +tests/value/threat_array.i:15:[value] warning: accessing out of bounds index. assert 0 ≤ c; +tests/value/threat_array.i:15:[value] warning: accessing out of bounds index. assert c < 10; +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + T[0..9] ∈ {0; 4} + p ∈ {{ (int (*)[10])&T[5] }} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + T[0..9] FROM c (and SELF) + p FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + T[0..9]; p +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/threat_if.err.oracle b/tests/value/oracle_symblocs/threat_if.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/threat_if.res.oracle b/tests/value/oracle_symblocs/threat_if.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..bf20b81015c3bb81a1e5fa60f5bddb7a16095fe5 --- /dev/null +++ b/tests/value/oracle_symblocs/threat_if.res.oracle @@ -0,0 +1,44 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/threat_if.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + p ∈ {0} + l ∈ {0} + m ∈ {0} + i ∈ {0} + X ∈ {-992} +tests/value/threat_if.i:14:[value] warning: out of bounds write. assert \valid(p); +[value] computing for function printf <- main. + Called from tests/value/threat_if.i:18. +tests/value/threat_if.i:18:[kernel] warning: Neither code nor specification for function printf, generating default assigns from the prototype +[value] using specification for function printf +[value] Done for function printf +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + p ∈ {{ NULL ; &l }} + l ∈ {0; 1} + G ∈ {-126} + c ∈ {-126} + __retres ∈ {-126} +[from] Computing for function main +[from] Computing for function printf <-main +[from] Done for function printf +tests/value/threat_if.i:18:[from] warning: variadic call detected. Using only 1 argument(s). +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function printf: + NO EFFECTS +[from] Function main: + p FROM i_0 (and SELF) + l FROM p; i_0 (and SELF) + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + p; l; G; c; __retres +[inout] Inputs for function main: + p diff --git a/tests/value/oracle_symblocs/threat_redundant.err.oracle b/tests/value/oracle_symblocs/threat_redundant.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/threat_redundant.res.oracle b/tests/value/oracle_symblocs/threat_redundant.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..b402b5bc8535fe23a07b6f1556117330b96f0fd0 --- /dev/null +++ b/tests/value/oracle_symblocs/threat_redundant.res.oracle @@ -0,0 +1,51 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/threat_redundant.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + s1[0] ∈ {97} + [1] ∈ {98} + [2] ∈ {97} + [3] ∈ {98} + [4] ∈ {97} + [5] ∈ {98} + [6] ∈ {97} + [7] ∈ {98} + [8] ∈ {97} + [9] ∈ {98} + x ∈ {0} +[value] computing for function strchr <- main. + Called from tests/value/threat_redundant.c:16. +tests/value/threat_redundant.c:5:[value] entering loop for the first time +tests/value/threat_redundant.c:5:[value] warning: out of bounds read. assert \valid_read(s); +[value] Recording results for strchr +[value] Done for function strchr +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function strchr: + NON TERMINATING FUNCTION +[value:final-states] Values at end of function main: + NON TERMINATING FUNCTION +[from] Computing for function strchr +[from] Non-terminating function strchr (no dependencies) +[from] Done for function strchr +[from] Computing for function main +[from] Non-terminating function main (no dependencies) +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function strchr: + NON TERMINATING - NO EFFECTS +[from] Function main: + NON TERMINATING - NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function strchr: + s +[inout] Inputs for function strchr: + s1[0..9] +[inout] Out (internal) for function main: + x +[inout] Inputs for function main: + s1[0..9] diff --git a/tests/value/oracle_symblocs/tricky_logic.err.oracle b/tests/value/oracle_symblocs/tricky_logic.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/tricky_logic.res.oracle b/tests/value/oracle_symblocs/tricky_logic.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..d98cd34abb12eff15415e1856985695ac1719de0 --- /dev/null +++ b/tests/value/oracle_symblocs/tricky_logic.res.oracle @@ -0,0 +1,117 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/tricky_logic.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + vol ∈ [--..--] + str ∈ {{ "abc" }} + x ∈ {0} + y ∈ {0} +tests/value/tricky_logic.i:56:[value] function main: precondition got status valid. +[value] computing for function f1 <- main. + Called from tests/value/tricky_logic.i:58. +tests/value/tricky_logic.i:15:[value] assertion got status valid. +tests/value/tricky_logic.i:16:[value] assertion got status valid. +[value] Recording results for f1 +[value] Done for function f1 +[value] computing for function f2 <- main. + Called from tests/value/tricky_logic.i:62. +tests/value/tricky_logic.i:23:[value] assertion got status valid. +tests/value/tricky_logic.i:24:[value] assertion got status valid. +[value] Recording results for f2 +[value] Done for function f2 +[value] computing for function f3 <- main. + Called from tests/value/tricky_logic.i:65. +tests/value/tricky_logic.i:29:[value] assertion got status valid. +tests/value/tricky_logic.i:30:[value] assertion got status valid. +tests/value/tricky_logic.i:31:[value] warning: assertion got status unknown. +[value] Recording results for f3 +[value] Done for function f3 +[value] computing for function f4 <- main. + Called from tests/value/tricky_logic.i:67. +[value] computing for function g4 <- f4 <- main. + Called from tests/value/tricky_logic.i:51. +tests/value/tricky_logic.i:38:[value] assertion got status valid. +tests/value/tricky_logic.i:39:[value] warning: assertion got status unknown. +[value] Recording results for g4 +[value] Done for function g4 +tests/value/tricky_logic.i:52:[value] assertion got status valid. +tests/value/tricky_logic.i:53:[value] assertion got status valid. +[value] Recording results for f4 +[value] Done for function f4 +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f1: + +[value:final-states] Values at end of function f2: + x ∈ {4} + y ∈ {5} +[value:final-states] Values at end of function f3: + +[value:final-states] Values at end of function g4: + s.i1 ∈ {3} + .i2 ∈ {2} or UNINITIALIZED + x_0 ∈ {1} +[value:final-states] Values at end of function f4: + p ∈ {{ &z }} + q ∈ {{ &x }} + s.i1 ∈ {1} or UNINITIALIZED + .i2 ∈ {2} or UNINITIALIZED +[value:final-states] Values at end of function main: + x ∈ {2; 3} + y ∈ {5} +[from] Computing for function f1 +[from] Done for function f1 +[from] Computing for function f2 +[from] Done for function f2 +[from] Computing for function f3 +[from] Done for function f3 +[from] Computing for function g4 +[from] Done for function g4 +[from] Computing for function f4 +[from] Done for function f4 +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f1: + NO EFFECTS +[from] Function f2: + x FROM \nothing + y FROM \nothing +[from] Function f3: + NO EFFECTS +[from] Function g4: + NO EFFECTS +[from] Function f4: + NO EFFECTS +[from] Function main: + x FROM vol + y FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f1: + \nothing +[inout] Inputs for function f1: + \nothing +[inout] Out (internal) for function f2: + x; y +[inout] Inputs for function f2: + \nothing +[inout] Out (internal) for function f3: + \nothing +[inout] Inputs for function f3: + \nothing +[inout] Out (internal) for function g4: + s.i1; x_0 +[inout] Inputs for function g4: + \nothing +[inout] Out (internal) for function f4: + p; q; s +[inout] Inputs for function f4: + vol +[inout] Out (internal) for function main: + x; y +[inout] Inputs for function main: + vol diff --git a/tests/value/oracle_symblocs/typedef_function.err.oracle b/tests/value/oracle_symblocs/typedef_function.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/typedef_function.res.oracle b/tests/value/oracle_symblocs/typedef_function.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..7fd50995db902aa7627d95c14ed33f9aa2faf716 --- /dev/null +++ b/tests/value/oracle_symblocs/typedef_function.res.oracle @@ -0,0 +1,25 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/typedef_function.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + G209[0] ∈ {0} + [1] ∈ {{ &F476 }} +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + i ∈ {0} + __retres ∈ {0} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + i; __retres +[inout] Inputs for function main: + G209[0] diff --git a/tests/value/oracle_symblocs/typeof.err.oracle b/tests/value/oracle_symblocs/typeof.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/typeof.res.oracle b/tests/value/oracle_symblocs/typeof.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..ff60b8908db42c83c71f5cf5cb57701052e30a0f --- /dev/null +++ b/tests/value/oracle_symblocs/typeof.res.oracle @@ -0,0 +1,23 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/typeof.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + \nothing +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/ulongvslonglong.0.err.oracle b/tests/value/oracle_symblocs/ulongvslonglong.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/ulongvslonglong.0.res.oracle b/tests/value/oracle_symblocs/ulongvslonglong.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..753e7a96cea2b497f6d59dc72671c891c89e377e --- /dev/null +++ b/tests/value/oracle_symblocs/ulongvslonglong.0.res.oracle @@ -0,0 +1,18 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/ulongvslonglong.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + x ∈ {0} + x2 ∈ {0} + x9[0..5][0..1] ∈ {0} +tests/value/ulongvslonglong.i:12:[value] entering loop for the first time +tests/value/ulongvslonglong.i:14:[value] entering loop for the first time +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + x ∈ {1} + x2 ∈ {2793414595} + x9[0..5][0..1] ∈ {0; 1} diff --git a/tests/value/oracle_symblocs/ulongvslonglong.1.err.oracle b/tests/value/oracle_symblocs/ulongvslonglong.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/ulongvslonglong.1.res.oracle b/tests/value/oracle_symblocs/ulongvslonglong.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..27a5c6db901a412c8cc4f8881a0ac5da51eda818 --- /dev/null +++ b/tests/value/oracle_symblocs/ulongvslonglong.1.res.oracle @@ -0,0 +1,18 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/ulongvslonglong.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + x ∈ {0} + x2 ∈ {0} + x9[0..5][0..1] ∈ {0} +tests/value/ulongvslonglong.i:12:[value] entering loop for the first time +tests/value/ulongvslonglong.i:14:[value] entering loop for the first time +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + x ∈ {0} + x2 ∈ {-1501552701} + x9[0..5][0..1] ∈ {0; 1} diff --git a/tests/value/oracle_symblocs/undef_behavior_bts1059.err.oracle b/tests/value/oracle_symblocs/undef_behavior_bts1059.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/undef_behavior_bts1059.res.oracle b/tests/value/oracle_symblocs/undef_behavior_bts1059.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..c33b3c9af03c298d48260a161e9cc79504a6b9e7 --- /dev/null +++ b/tests/value/oracle_symblocs/undef_behavior_bts1059.res.oracle @@ -0,0 +1,47 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/undef_behavior_bts1059.i (no preprocessing) +tests/value/undef_behavior_bts1059.i:15:[kernel] warning: Unspecified sequence with side effect: + /* a <- + */ + + if (b) tmp = 1; + else { + a ++; + if (a == 2) tmp = 1; else tmp = 0; + } + /* a <- */ + a = tmp; +tests/value/undef_behavior_bts1059.i:23:[kernel] warning: Unspecified sequence with side effect: + /* <- */ + tmp_4 = a; + /* a <- */ + a ++; + /* a <- tmp_4 */ + a = tmp_4; +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + c ∈ [--..--] +tests/value/undef_behavior_bts1059.i:15:[value] warning: undefined multiple accesses in expression. assert \separated(&a, &a); +tests/value/undef_behavior_bts1059.i:23:[value] warning: undefined multiple accesses in expression. assert \separated(&a, &a); +[value] Recording results for main +[value] done for function main +tests/value/undef_behavior_bts1059.i:15:[value] assertion 'Value,separation' got final status invalid. +tests/value/undef_behavior_bts1059.i:23:[value] assertion 'Value,separation' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + a ∈ {1} + b ∈ {2} + __retres ∈ {0} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + a; b; tmp_0; tmp_1; tmp_2; tmp_3; __retres +[inout] Inputs for function main: + c diff --git a/tests/value/oracle_symblocs/undef_fct.err.oracle b/tests/value/oracle_symblocs/undef_fct.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/undef_fct.res.oracle b/tests/value/oracle_symblocs/undef_fct.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..ce6a8721c6814728c0a135f72e0cb21879d452c5 --- /dev/null +++ b/tests/value/oracle_symblocs/undef_fct.res.oracle @@ -0,0 +1,33 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/undef_fct.i (no preprocessing) +tests/value/undef_fct.i:3:[kernel] warning: Calling undeclared function f. Old style K&R code? +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] computing for function f <- main. + Called from tests/value/undef_fct.i:3. +tests/value/undef_fct.i:3:[kernel] warning: Neither code nor specification for function f, generating default assigns from the prototype +[value] using specification for function f +[value] Done for function f +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + +[from] Computing for function main +[from] Computing for function f <-main +[from] Done for function f +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + \result FROM x_0 +[from] Function main: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + tmp +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/undefined_sequence.0.err.oracle b/tests/value/oracle_symblocs/undefined_sequence.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/undefined_sequence.0.res.oracle b/tests/value/oracle_symblocs/undefined_sequence.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..c3e750a0525a8acb813898aa64a289b84c1974e9 --- /dev/null +++ b/tests/value/oracle_symblocs/undefined_sequence.0.res.oracle @@ -0,0 +1,213 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/undefined_sequence.i (no preprocessing) +tests/value/undefined_sequence.i:16:[kernel] warning: Unspecified sequence with side effect: + /* <- */ + tmp = r; + /* r <- */ + r ++; + /* r <- tmp */ + r = tmp; +tests/value/undefined_sequence.i:28:[kernel] warning: Unspecified sequence with side effect: + /* d <- */ + d = 0; + /* <- d */ +tests/value/undefined_sequence.i:35:[kernel] warning: Unspecified sequence with side effect: + /* x <- */ + x = 0; + /* *y <- y */ + tmp = 1; + *y = tmp; + /* i <- */ + i = x + tmp; +tests/value/undefined_sequence.i:44:[kernel] warning: Unspecified sequence with side effect: + /* <- */ + tmp_4 = j; + /* j <- */ + j ++; + /* G[j] <- j G[tmp_4] tmp_4 */ + G[j] = G[tmp_4]; +tests/value/undefined_sequence.i:45:[kernel] warning: Unspecified sequence with side effect: + /* <- */ + tmp_5 = i; + /* i <- */ + i ++; + /* G[tmp_5] <- tmp_5 G[i] i */ + G[tmp_5] = G[i]; +tests/value/undefined_sequence.i:50:[kernel] warning: Unspecified sequence with side effect: + /* <- */ + tmp_6 = j; + /* j <- */ + j ++; + /* G[j] <- j G[tmp_6] tmp_6 */ + G[j] += G[tmp_6]; +tests/value/undefined_sequence.i:51:[kernel] warning: Unspecified sequence with side effect: + /* <- */ + tmp_7 = i; + /* i <- */ + i ++; + /* G[tmp_7] <- tmp_7 G[i] i */ + G[tmp_7] += G[i]; +tests/value/undefined_sequence.i:53:[kernel] warning: Unspecified sequence with side effect: + /* <- x */ + { /* sequence */ + tmp_8 = g(3); + + } + tmp_9 = f(tmp_8 + x); + /* <- */ + tmp_10 = x; + /* x <- */ + x ++; + /* i <- tmp_10 */ + i = tmp_9 + tmp_10; +tests/value/undefined_sequence.i:67:[kernel] warning: Unspecified sequence with side effect: + /* my_f <- g */ + my_f = & g; + tmp_16 = f(1); + /* <- my_f */ + tmp_17 = (*my_f)(2); + /* <- */ + tmp_18 = tmp_16 + tmp_17; +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + G[0..9] ∈ {0} + c ∈ [--..--] + r ∈ {0} + H ∈ {0} +tests/value/undefined_sequence.i:35:[value] warning: undefined multiple accesses in expression. assert \separated(&x, y); +tests/value/undefined_sequence.i:36:[value] entering loop for the first time +tests/value/undefined_sequence.i:38:[value] entering loop for the first time +tests/value/undefined_sequence.i:40:[value] entering loop for the first time +tests/value/undefined_sequence.i:40:[value] warning: signed overflow. + assert G[tmp_2]+G[tmp_3] ≤ 2147483647; + (tmp_2 from j++, tmp_3 from i++) +tests/value/undefined_sequence.i:43:[value] entering loop for the first time +tests/value/undefined_sequence.i:44:[value] warning: undefined multiple accesses in expression. assert \separated(&j, &j); +tests/value/undefined_sequence.i:45:[value] warning: undefined multiple accesses in expression. assert \separated(&i, &i); +tests/value/undefined_sequence.i:49:[value] entering loop for the first time +tests/value/undefined_sequence.i:50:[value] warning: undefined multiple accesses in expression. assert \separated(&j, &j); +tests/value/undefined_sequence.i:51:[value] warning: undefined multiple accesses in expression. assert \separated(&i, &i); +tests/value/undefined_sequence.i:53:[value] warning: undefined multiple accesses in expression. assert \separated(&x, &x); +[value] computing for function g <- main. + Called from tests/value/undefined_sequence.i:54. +[value] Recording results for g +[value] Done for function g +[value] computing for function f <- main. + Called from tests/value/undefined_sequence.i:54. +[value] Recording results for f +[value] Done for function f +[value] computing for function h <- main. + Called from tests/value/undefined_sequence.i:56. +tests/value/undefined_sequence.i:16:[value] warning: undefined multiple accesses in expression. assert \separated(&r, &r); +[value] Recording results for h +[value] Done for function h +[value] computing for function h <- main. + Called from tests/value/undefined_sequence.i:56. +[value] Recording results for h +[value] Done for function h +[value] computing for function func <- main. + Called from tests/value/undefined_sequence.i:60. +[value] Recording results for func +[value] Done for function func +[value] computing for function ub_ret <- main. + Called from tests/value/undefined_sequence.i:65. +tests/value/undefined_sequence.i:28:[value] warning: undefined multiple accesses in expression. assert \separated(&d, &d); +[value] Recording results for ub_ret +[value] Done for function ub_ret +tests/value/undefined_sequence.i:67:[value] warning: undefined multiple accesses in expression. assert \separated(&my_f, &my_f); +[value] Recording results for main +[value] done for function main +tests/value/undefined_sequence.i:16:[value] assertion 'Value,separation' got final status invalid. +tests/value/undefined_sequence.i:28:[value] assertion 'Value,separation' got final status invalid. +tests/value/undefined_sequence.i:35:[value] assertion 'Value,separation' got final status invalid. +tests/value/undefined_sequence.i:44:[value] assertion 'Value,separation' got final status invalid. +tests/value/undefined_sequence.i:45:[value] assertion 'Value,separation' got final status invalid. +tests/value/undefined_sequence.i:50:[value] assertion 'Value,separation' got final status invalid. +tests/value/undefined_sequence.i:51:[value] assertion 'Value,separation' got final status invalid. +tests/value/undefined_sequence.i:53:[value] assertion 'Value,separation' got final status invalid. +tests/value/undefined_sequence.i:67:[value] assertion 'Value,separation' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + __retres ∈ {6} +[value:final-states] Values at end of function func: + __retres ∈ {5; 6} +[value:final-states] Values at end of function g: + __retres ∈ {5} +[value:final-states] Values at end of function h: + r ∈ {1; 2} + H ∈ {0; 1} + i ∈ {0; 1} +[value:final-states] Values at end of function ub_ret: + NON TERMINATING FUNCTION +[value:final-states] Values at end of function main: + G[0..1] ∈ [0..2147483647] + [2] ∈ {0; 1} + [3..9] ∈ [0..2147483647] + r ∈ {0; 1} + H ∈ {0; 1} + x ∈ {6} + y ∈ {{ &G[2] }} + i ∈ {0} + j ∈ {0} + my_f ∈ {{ &f }} +[from] Computing for function f +[from] Done for function f +[from] Computing for function func +[from] Done for function func +[from] Computing for function g +[from] Done for function g +[from] Computing for function h +[from] Done for function h +[from] Computing for function ub_ret +[from] Non-terminating function ub_ret (no dependencies) +[from] Done for function ub_ret +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + \result FROM x +[from] Function func: + \result FROM x; y +[from] Function g: + \result FROM x +[from] Function h: + r FROM r + H FROM r + \result FROM r +[from] Function ub_ret: + NON TERMINATING - NO EFFECTS +[from] Function main: + G{[0..1]; [3..9]} FROM G[0..9] (and SELF) + [2] FROM G[0..9] + r FROM r; a (and SELF) + H FROM r; a (and SELF) + \result FROM c +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + __retres +[inout] Inputs for function f: + \nothing +[inout] Out (internal) for function func: + __retres +[inout] Inputs for function func: + \nothing +[inout] Out (internal) for function g: + __retres +[inout] Inputs for function g: + \nothing +[inout] Out (internal) for function h: + r; H; i; tmp_0 +[inout] Inputs for function h: + c; r +[inout] Out (internal) for function ub_ret: + d +[inout] Inputs for function ub_ret: + \nothing +[inout] Out (internal) for function main: + G[0..9]; r; H; x; y; i; j; tmp_0; tmp_1; tmp_2; tmp_3; tmp_11; tmp_12; + tmp_13; tmp_14; tmp_15; my_f; tmp_18 +[inout] Inputs for function main: + G[0..9]; c; r diff --git a/tests/value/oracle_symblocs/undefined_sequence.1.err.oracle b/tests/value/oracle_symblocs/undefined_sequence.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/undefined_sequence.1.res.oracle b/tests/value/oracle_symblocs/undefined_sequence.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..a89d2d8fbb49bc4b3022379d6c8bdbdef497f2ff --- /dev/null +++ b/tests/value/oracle_symblocs/undefined_sequence.1.res.oracle @@ -0,0 +1,148 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/undefined_sequence.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + G[0..9] ∈ {0} + c ∈ [--..--] + r ∈ {0} + H ∈ {0} +tests/value/undefined_sequence.i:36:[value] entering loop for the first time +tests/value/undefined_sequence.i:38:[value] entering loop for the first time +tests/value/undefined_sequence.i:40:[value] entering loop for the first time +tests/value/undefined_sequence.i:40:[value] warning: signed overflow. + assert G[tmp_2]+G[tmp_3] ≤ 2147483647; + (tmp_2 from j++, tmp_3 from i++) +tests/value/undefined_sequence.i:43:[value] entering loop for the first time +tests/value/undefined_sequence.i:49:[value] entering loop for the first time +tests/value/undefined_sequence.i:50:[value] warning: signed overflow. assert G[j]+G[tmp_6] ≤ 2147483647; + (tmp_6 from j++) +tests/value/undefined_sequence.i:51:[value] warning: signed overflow. assert G[tmp_7]+G[i] ≤ 2147483647; + (tmp_7 from i++) +[value] computing for function g <- main. + Called from tests/value/undefined_sequence.i:53. +[value] Recording results for g +[value] Done for function g +[value] computing for function f <- main. + Called from tests/value/undefined_sequence.i:53. +[value] Recording results for f +[value] Done for function f +[value] computing for function g <- main. + Called from tests/value/undefined_sequence.i:54. +[value] Recording results for g +[value] Done for function g +[value] computing for function f <- main. + Called from tests/value/undefined_sequence.i:54. +[value] Recording results for f +[value] Done for function f +[value] computing for function h <- main. + Called from tests/value/undefined_sequence.i:56. +[value] Recording results for h +[value] Done for function h +[value] computing for function h <- main. + Called from tests/value/undefined_sequence.i:56. +[value] Recording results for h +[value] Done for function h +[value] computing for function func <- main. + Called from tests/value/undefined_sequence.i:60. +[value] Recording results for func +[value] Done for function func +[value] computing for function ub_ret <- main. + Called from tests/value/undefined_sequence.i:65. +[value] Recording results for ub_ret +[value] Done for function ub_ret +[value] computing for function f <- main. + Called from tests/value/undefined_sequence.i:67. +[value] Recording results for f +[value] Done for function f +[value] computing for function g <- main. + Called from tests/value/undefined_sequence.i:67. +[value] Recording results for g +[value] Done for function g +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + __retres ∈ {2; 6; 7; 8} +[value:final-states] Values at end of function func: + __retres ∈ {5; 6} +[value:final-states] Values at end of function g: + __retres ∈ {4; 5} +[value:final-states] Values at end of function h: + r ∈ {1; 2} + H ∈ {0; 1} + i ∈ {0; 1} +[value:final-states] Values at end of function ub_ret: + d ∈ {0} + __retres ∈ {0} +[value:final-states] Values at end of function main: + G[0..1] ∈ [0..2147483647] + [2] ∈ {0; 1} + [3..9] ∈ [0..2147483647] + r ∈ {0; 1} + H ∈ {0; 1} + x ∈ {6; 7; 8} + y ∈ {{ &G[2] }} + i ∈ [0..9] + j ∈ [0..9] + my_f ∈ {{ &f ; &g }} +[from] Computing for function f +[from] Done for function f +[from] Computing for function func +[from] Done for function func +[from] Computing for function g +[from] Done for function g +[from] Computing for function h +[from] Done for function h +[from] Computing for function ub_ret +[from] Done for function ub_ret +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + \result FROM x +[from] Function func: + \result FROM x; y +[from] Function g: + \result FROM x +[from] Function h: + r FROM c; r + H FROM c; r + \result FROM c; r +[from] Function ub_ret: + \result FROM \nothing +[from] Function main: + G{[0..1]; [3..9]} FROM G[0..9]; c (and SELF) + [2] FROM G[0..9]; c + r FROM c; r; a (and SELF) + H FROM c; r; a (and SELF) + \result FROM c +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + __retres +[inout] Inputs for function f: + \nothing +[inout] Out (internal) for function func: + __retres +[inout] Inputs for function func: + \nothing +[inout] Out (internal) for function g: + __retres +[inout] Inputs for function g: + \nothing +[inout] Out (internal) for function h: + r; H; i; tmp; tmp_0 +[inout] Inputs for function h: + c; r +[inout] Out (internal) for function ub_ret: + d; __retres +[inout] Inputs for function ub_ret: + \nothing +[inout] Out (internal) for function main: + G[0..9]; r; H; x; y; i; j; tmp; tmp_0; tmp_1; tmp_2; tmp_3; tmp_4; + tmp_5; tmp_6; tmp_7; tmp_8; tmp_9; tmp_10; tmp_11; tmp_12; tmp_13; + tmp_14; tmp_15; my_f; tmp_16; tmp_17; tmp_18 +[inout] Inputs for function main: + G[0..9]; c; r diff --git a/tests/value/oracle_symblocs/undefined_sequence2.err.oracle b/tests/value/oracle_symblocs/undefined_sequence2.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/undefined_sequence2.res.oracle b/tests/value/oracle_symblocs/undefined_sequence2.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..08dde457e62a8ae7dd253a966b6e54243bac1b7d --- /dev/null +++ b/tests/value/oracle_symblocs/undefined_sequence2.res.oracle @@ -0,0 +1,158 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/undefined_sequence2.i (no preprocessing) +tests/value/undefined_sequence2.i:11:[kernel] warning: Unspecified sequence with side effect: + /* *x <- x */ + tmp = 0; + *x = tmp; + /* *x <- x */ + tmp_0 = 0; + *x = tmp_0; +tests/value/undefined_sequence2.i:18:[kernel] warning: Unspecified sequence with side effect: + /* i <- */ + i ++; + /* i <- */ + i ++; +tests/value/undefined_sequence2.i:26:[kernel] warning: Unspecified sequence with side effect: + /* <- */ + tmp = i; + /* i <- */ + i ++; + /* a[tmp] <- tmp i */ + a[tmp] = i; +tests/value/undefined_sequence2.i:34:[kernel] warning: Unspecified sequence with side effect: + /* *x <- x */ + tmp = 0; + *x = tmp; + /* *y <- y */ + tmp_0 = 0; + *y = tmp_0; +tests/value/undefined_sequence2.i:47:[kernel] warning: Unspecified sequence with side effect: + /* *x <- x */ + tmp = 0; + *x = tmp; + /* *y <- y */ + tmp_0 = 0; + *y = tmp_0; +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + a[0..1] ∈ {0} + foo ∈ [--..--] +[value] computing for function multiple_update_wrong_1 <- main. + Called from tests/value/undefined_sequence2.i:56. +tests/value/undefined_sequence2.i:11:[value] warning: undefined multiple accesses in expression. assert \separated(x, x); +[value] Recording results for multiple_update_wrong_1 +[value] Done for function multiple_update_wrong_1 +[value] computing for function multiple_update_wrong_2 <- main. + Called from tests/value/undefined_sequence2.i:58. +tests/value/undefined_sequence2.i:18:[value] warning: undefined multiple accesses in expression. assert \separated(&i, &i); +[value] Recording results for multiple_update_wrong_2 +[value] Done for function multiple_update_wrong_2 +[value] computing for function multiple_update_wrong_3 <- main. + Called from tests/value/undefined_sequence2.i:60. +tests/value/undefined_sequence2.i:26:[value] warning: undefined multiple accesses in expression. assert \separated(&i, &i); +[value] Recording results for multiple_update_wrong_3 +[value] Done for function multiple_update_wrong_3 +[value] computing for function multiple_update_unsafe <- main. + Called from tests/value/undefined_sequence2.i:62. +[value] Recording results for multiple_update_unsafe +[value] Done for function multiple_update_unsafe +[value] Called Frama_C_show_each_passed4() +[value] computing for function multiple_update_unsafe <- main. + Called from tests/value/undefined_sequence2.i:64. +tests/value/undefined_sequence2.i:34:[value] warning: undefined multiple accesses in expression. assert \separated(x, y); +[value] Recording results for multiple_update_unsafe +[value] Done for function multiple_update_unsafe +[value] computing for function multiple_update_safe <- main. + Called from tests/value/undefined_sequence2.i:66. +[value] Recording results for multiple_update_safe +[value] Done for function multiple_update_safe +[value] Called Frama_C_show_each_passed6() +[value] computing for function multiple_update_safe <- main. + Called from tests/value/undefined_sequence2.i:68. +[value] Recording results for multiple_update_safe +[value] Done for function multiple_update_safe +[value] Called Frama_C_show_each_passed7() +[value] Recording results for main +[value] done for function main +tests/value/undefined_sequence2.i:11:[value] assertion 'Value,separation' got final status invalid. +tests/value/undefined_sequence2.i:18:[value] assertion 'Value,separation' got final status invalid. +tests/value/undefined_sequence2.i:26:[value] assertion 'Value,separation' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function multiple_update_safe: + b ∈ {0} + c ∈ {0} + __retres ∈ {0} +[value:final-states] Values at end of function multiple_update_unsafe: + b ∈ {0} + c ∈ {0} + __retres ∈ {0} +[value:final-states] Values at end of function multiple_update_wrong_1: + NON TERMINATING FUNCTION +[value:final-states] Values at end of function multiple_update_wrong_2: + NON TERMINATING FUNCTION +[value:final-states] Values at end of function multiple_update_wrong_3: + NON TERMINATING FUNCTION +[value:final-states] Values at end of function main: + b ∈ {0} + c ∈ {0} + __retres ∈ {0} +[from] Computing for function multiple_update_safe +[from] Done for function multiple_update_safe +[from] Computing for function multiple_update_unsafe +[from] Done for function multiple_update_unsafe +[from] Computing for function multiple_update_wrong_1 +[from] Non-terminating function multiple_update_wrong_1 (no dependencies) +[from] Done for function multiple_update_wrong_1 +[from] Computing for function multiple_update_wrong_2 +[from] Non-terminating function multiple_update_wrong_2 (no dependencies) +[from] Done for function multiple_update_wrong_2 +[from] Computing for function multiple_update_wrong_3 +[from] Non-terminating function multiple_update_wrong_3 (no dependencies) +[from] Done for function multiple_update_wrong_3 +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function multiple_update_safe: + b FROM x; y (and SELF) + c FROM x; y (and SELF) + \result FROM x; y +[from] Function multiple_update_unsafe: + b FROM x + c FROM y + \result FROM \nothing +[from] Function multiple_update_wrong_1: + NON TERMINATING - NO EFFECTS +[from] Function multiple_update_wrong_2: + NON TERMINATING - NO EFFECTS +[from] Function multiple_update_wrong_3: + NON TERMINATING - NO EFFECTS +[from] Function main: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function multiple_update_safe: + tmp; tmp_0; b; c; __retres +[inout] Inputs for function multiple_update_safe: + \nothing +[inout] Out (internal) for function multiple_update_unsafe: + tmp; tmp_0; b; c; __retres +[inout] Inputs for function multiple_update_unsafe: + \nothing +[inout] Out (internal) for function multiple_update_wrong_1: + \nothing +[inout] Inputs for function multiple_update_wrong_1: + \nothing +[inout] Out (internal) for function multiple_update_wrong_2: + \nothing +[inout] Inputs for function multiple_update_wrong_2: + \nothing +[inout] Out (internal) for function multiple_update_wrong_3: + \nothing +[inout] Inputs for function multiple_update_wrong_3: + \nothing +[inout] Out (internal) for function main: + b; c; __retres +[inout] Inputs for function main: + foo diff --git a/tests/value/oracle_symblocs/uninit.err.oracle b/tests/value/oracle_symblocs/uninit.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/uninit.res.oracle b/tests/value/oracle_symblocs/uninit.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..da1ab7708a6421434d841a6c3b023ec8e05a17cf --- /dev/null +++ b/tests/value/oracle_symblocs/uninit.res.oracle @@ -0,0 +1,26 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/uninit.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +tests/value/uninit.i:3:[value] warning: accessing uninitialized left-value. assert \initialized(&i); +[value] Recording results for main +[value] done for function main +tests/value/uninit.i:3:[value] assertion 'Value,initialisation' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + NON TERMINATING FUNCTION +[from] Computing for function main +[from] Non-terminating function main (no dependencies) +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NON TERMINATING - NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + i +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/uninit_callstack.err.oracle b/tests/value/oracle_symblocs/uninit_callstack.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/uninit_callstack.res.oracle b/tests/value/oracle_symblocs/uninit_callstack.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..d5f336736e39b3e48b7fbdc76626680a47bade67 --- /dev/null +++ b/tests/value/oracle_symblocs/uninit_callstack.res.oracle @@ -0,0 +1,12 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/uninit_callstack.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + p ∈ {0} + x ∈ {0} +tests/value/uninit_callstack.i:8:[value] warning: accessing uninitialized left-value. assert \initialized(p); + stack: f :: tests/value/uninit_callstack.i:14 <- main +[value] done for function main +[value] ====== VALUES COMPUTED ====== diff --git a/tests/value/oracle_symblocs/uninitialized_gnubody.err.oracle b/tests/value/oracle_symblocs/uninitialized_gnubody.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/uninitialized_gnubody.res.oracle b/tests/value/oracle_symblocs/uninitialized_gnubody.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..2717771a2104a033b655dc1d2f22aee934993098 --- /dev/null +++ b/tests/value/oracle_symblocs/uninitialized_gnubody.res.oracle @@ -0,0 +1,23 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/uninitialized_gnubody.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + x ∈ {44} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + x; y; tmp +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/unknown_sizeof.0.err.oracle b/tests/value/oracle_symblocs/unknown_sizeof.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/unknown_sizeof.0.res.oracle b/tests/value/oracle_symblocs/unknown_sizeof.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e93a7a8b8905e4261935118cea30ecc85bfd48f6 --- /dev/null +++ b/tests/value/oracle_symblocs/unknown_sizeof.0.res.oracle @@ -0,0 +1,19 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/unknown_sizeof.i (no preprocessing) +[value] Analyzing a complete application starting at main1 +[value] Computing initial state +tests/value/unknown_sizeof.i:8:[value] warning: during initialization of variable 's', size of type 'struct s' cannot be + computed (abstract type 'struct s') +tests/value/unknown_sizeof.i:8:[kernel] imprecise size for variable s (abstract type 'struct s') +[value] Initial state computed +[value:initial-state] Values of globals at initialization + s.[bits 0 to ..] ∈ {0} or UNINITIALIZED +[value] computing for function g <- main1. + Called from tests/value/unknown_sizeof.i:19. +tests/value/unknown_sizeof.i:15:[value] warning: out of bounds write. assert \valid(&__retres); +tests/value/unknown_sizeof.i:15:[value] warning: accessing uninitialized left-value. + assert \initialized((struct s *)((char *)(&s)+1)); +tests/value/unknown_sizeof.i:15:[value] warning: out of bounds read. assert \valid_read((struct s *)((char *)(&s)+1)); +tests/value/unknown_sizeof.i:15:[value] warning: out of bounds read. assert \valid_read(&__retres); +tests/value/unknown_sizeof.i:15:[value] user error: Function g returns a value of unknown size. Aborting +[kernel] Plug-in value aborted: invalid user input. diff --git a/tests/value/oracle_symblocs/unknown_sizeof.1.err.oracle b/tests/value/oracle_symblocs/unknown_sizeof.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/unknown_sizeof.1.res.oracle b/tests/value/oracle_symblocs/unknown_sizeof.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..a3c002d0eeac5f987d74f4c589e54aa9291855fe --- /dev/null +++ b/tests/value/oracle_symblocs/unknown_sizeof.1.res.oracle @@ -0,0 +1,12 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/unknown_sizeof.i (no preprocessing) +[value] Analyzing a complete application starting at main2 +[value] Computing initial state +tests/value/unknown_sizeof.i:8:[value] warning: during initialization of variable 's', size of type 'struct s' cannot be + computed (abstract type 'struct s') +tests/value/unknown_sizeof.i:8:[kernel] imprecise size for variable s (abstract type 'struct s') +[value] Initial state computed +[value:initial-state] Values of globals at initialization + s.[bits 0 to ..] ∈ {0} or UNINITIALIZED +tests/value/unknown_sizeof.i:23:[value] user error: Function argument *((struct s *)((char *)(& s) + 1)) has unknown size. Aborting +[kernel] Plug-in value aborted: invalid user input. diff --git a/tests/value/oracle_symblocs/unop.err.oracle b/tests/value/oracle_symblocs/unop.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/unop.res.oracle b/tests/value/oracle_symblocs/unop.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..ecffc6d3670ff987828fc36d639500f490462501 --- /dev/null +++ b/tests/value/oracle_symblocs/unop.res.oracle @@ -0,0 +1,58 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/unop.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + v ∈ [--..--] +[value] computing for function main1 <- main. + Called from tests/value/unop.c:22. +[value] Called Frama_C_show_each_1([-2147483648. .. 2147483648.]) +[value] Called Frama_C_show_each_1_then([-2147483648. .. -3.]) +[value] Called Frama_C_show_each_1_else([-2.99999976158 .. 2147483648.]) +[value] Recording results for main1 +[value] Done for function main1 +[value] computing for function main2 <- main. + Called from tests/value/unop.c:23. +[value] Called Frama_C_show_each_2([-2147483648..2147483647]) +tests/value/unop.c:12:[value] warning: signed overflow. assert -i ≤ 2147483647; +[value] Called Frama_C_show_each_2_then([-2147483647..-3]) +[value] Called Frama_C_show_each_2_else([-2..2147483647]) +[value] Recording results for main2 +[value] Done for function main2 +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main1: + +[value:final-states] Values at end of function main2: + +[value:final-states] Values at end of function main: + +[from] Computing for function main1 +[from] Done for function main1 +[from] Computing for function main2 +[from] Done for function main2 +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main1: + NO EFFECTS +[from] Function main2: + NO EFFECTS +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main1: + \nothing +[inout] Inputs for function main1: + \nothing +[inout] Out (internal) for function main2: + \nothing +[inout] Inputs for function main2: + \nothing +[inout] Out (internal) for function main: + \nothing +[inout] Inputs for function main: + v diff --git a/tests/value/oracle_symblocs/unroll.err.oracle b/tests/value/oracle_symblocs/unroll.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/unroll.res.oracle b/tests/value/oracle_symblocs/unroll.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..ecb339196cd7eaea8f9422575ede76d31a3608a3 --- /dev/null +++ b/tests/value/oracle_symblocs/unroll.res.oracle @@ -0,0 +1,41 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/unroll.i (no preprocessing) +tests/value/unroll.i:49:[kernel] warning: ignoring unrolling directive (not an understood constant expression) +tests/value/unroll.i:54:[kernel] warning: ignoring invalid unrolling directive +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + t_biosmap[0..9] ∈ {0} + g_biosmap ∈ {{ &t_biosmap[0] }} + biosmap ∈ {0} +tests/value/unroll.i:31:[value] entering loop for the first time +tests/value/unroll.i:34:[value] warning: signed overflow. assert -2147483648 ≤ j-1; +tests/value/unroll.i:32:[value] warning: signed overflow. assert G+i ≤ 2147483647; +tests/value/unroll.i:39:[value] entering loop for the first time +tests/value/unroll.i:49:[value] entering loop for the first time +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + c ∈ {0} + G ∈ [17739..2147483647] + i ∈ {257} + MAX ∈ {12} + JMAX ∈ {5} + j ∈ [-2147483648..-123] + k ∈ {13} + S ∈ {479001600} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + c; G; i; MAX; JMAX; j; k; S; tmp; tmp_unroll_3752; tmp_unroll_3760; + tmp_unroll_3768; tmp_unroll_3776; tmp_unroll_3784; tmp_unroll_3792; + tmp_unroll_3800; tmp_unroll_3808; tmp_unroll_3816; tmp_unroll_3824 +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/unroll_simple.err.oracle b/tests/value/oracle_symblocs/unroll_simple.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/unroll_simple.res.oracle b/tests/value/oracle_symblocs/unroll_simple.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..996c14cfdefdb9bfcc718b478c95748e9d56a1c9 --- /dev/null +++ b/tests/value/oracle_symblocs/unroll_simple.res.oracle @@ -0,0 +1,34 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/unroll_simple.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +tests/value/unroll_simple.i:8:[value] entering loop for the first time +tests/value/unroll_simple.i:11:[value] warning: signed overflow. assert -2147483648 ≤ j-1; +tests/value/unroll_simple.i:9:[value] warning: signed overflow. assert G+i ≤ 2147483647; +tests/value/unroll_simple.i:16:[value] entering loop for the first time +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + c ∈ {0} + G ∈ [8772..2147483647] + i ∈ {257} + MAX ∈ {12} + JMAX ∈ {5} + j ∈ [-2147483648..-126] +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + c; G; i; MAX; JMAX; j; tmp; tmp_unroll_774; tmp_unroll_782; tmp_unroll_790; + tmp_unroll_798; tmp_unroll_806; tmp_unroll_814; tmp_unroll_822; + tmp_unroll_830; tmp_unroll_838; tmp_unroll_846 +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/unsigned_overflow.err.oracle b/tests/value/oracle_symblocs/unsigned_overflow.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/unsigned_overflow.res.oracle b/tests/value/oracle_symblocs/unsigned_overflow.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..2f31b9939501b89a2d00c19f3c556e66bda88221 --- /dev/null +++ b/tests/value/oracle_symblocs/unsigned_overflow.res.oracle @@ -0,0 +1,28 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/unsigned_overflow.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + i1 ∈ [--..--] + i2 ∈ [--..--] +tests/value/unsigned_overflow.c:4:[value] warning: assertion got status unknown. +tests/value/unsigned_overflow.c:5:[value] warning: assertion got status unknown. +[value] Called Frama_C_show_each_dead() +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + v ∈ [--..--] + __retres ∈ {0} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + v; w; __retres +[inout] Inputs for function main: + i1; i2 diff --git a/tests/value/oracle_symblocs/use_spec.0.err.oracle b/tests/value/oracle_symblocs/use_spec.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/use_spec.0.res.oracle b/tests/value/oracle_symblocs/use_spec.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..9f0f9f2875660f87b558d7dbee5629b6ca94312b --- /dev/null +++ b/tests/value/oracle_symblocs/use_spec.0.res.oracle @@ -0,0 +1,77 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/use_spec.i (no preprocessing) +[value] user error: no assigns specified for function 'f', for which a builtin + or the specification will be used. Potential unsoundness. +[value] warning: Generating potentially incorrect assigns for function 'f' for which option -val-use-spec is set +tests/value/use_spec.i:7:[kernel] warning: Neither code nor specification for function f, generating default assigns from the prototype +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + w ∈ {0} + x ∈ {0} + y ∈ {0} + z ∈ {0} +[value] computing for function f <- main. + Called from tests/value/use_spec.i:22. +[value] using specification for function f +[value] Done for function f +[value] computing for function g <- main. + Called from tests/value/use_spec.i:23. +tests/value/use_spec.i:23:[kernel] warning: Neither code nor specification for function g, generating default assigns from the prototype +[value] using specification for function g +[value] Done for function g +[value] computing for function h <- main. + Called from tests/value/use_spec.i:24. +[value] using specification for function h +[value] Done for function h +[value] computing for function i <- main. + Called from tests/value/use_spec.i:25. +[value] using specification for function i +[value] Done for function i +[value] Recording results for main +[from] Computing for function main +[from] Done for function main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + w ∈ [--..--] + x ∈ [--..--] + y ∈ [--..--] + z ∈ [--..--] +[from] ====== DISPLAYING CALLWISE DEPENDENCIES ====== +[from] call to f at tests/value/use_spec.i:22 (by main): + x FROM x (and SELF) +[from] call to g at tests/value/use_spec.i:23 (by main): + y FROM y (and SELF) +[from] call to h at tests/value/use_spec.i:24 (by main): + z FROM \nothing +[from] call to i at tests/value/use_spec.i:25 (by main): + w FROM \nothing +[from] entry point: + w FROM \nothing + x FROM x (and SELF) + y FROM y (and SELF) + z FROM \nothing +[from] ====== END OF CALLWISE DEPENDENCIES ====== +[inout] InOut (internal) for function f: + Operational inputs: + x + Operational inputs on termination: + x + Sure outputs: + \nothing +[inout] InOut (internal) for function h: + Operational inputs: + \nothing + Operational inputs on termination: + \nothing + Sure outputs: + z +[inout] InOut (internal) for function main: + Operational inputs: + x; y + Operational inputs on termination: + x; y + Sure outputs: + w; z diff --git a/tests/value/oracle_symblocs/use_spec.1.err.oracle b/tests/value/oracle_symblocs/use_spec.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/use_spec.1.res.oracle b/tests/value/oracle_symblocs/use_spec.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..725230618d432c989bcfac6218c76300ef30f7aa --- /dev/null +++ b/tests/value/oracle_symblocs/use_spec.1.res.oracle @@ -0,0 +1,77 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/use_spec.i (no preprocessing) +[value] user error: no assigns specified for function 'f', for which a builtin + or the specification will be used. Potential unsoundness. +[value] warning: Generating potentially incorrect assigns for function 'f' for which option -val-use-spec is set +tests/value/use_spec.i:7:[kernel] warning: Neither code nor specification for function f, generating default assigns from the prototype +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + w ∈ {0} + x ∈ {0} + y ∈ {0} + z ∈ {0} +[value] computing for function f <- main. + Called from tests/value/use_spec.i:22. +[value] using specification for function f +[value] Done for function f +[value] computing for function g <- main. + Called from tests/value/use_spec.i:23. +tests/value/use_spec.i:23:[kernel] warning: Neither code nor specification for function g, generating default assigns from the prototype +[value] using specification for function g +[value] Done for function g +[value] computing for function h <- main. + Called from tests/value/use_spec.i:24. +[value] using specification for function h +[value] Done for function h +[value] computing for function i <- main. + Called from tests/value/use_spec.i:25. +[value] using specification for function i +[value] Done for function i +[value] Recording results for main +[from] Computing for function main +[from] Done for function main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + w ∈ [--..--] + x ∈ [--..--] + y ∈ [--..--] + z ∈ [--..--] +[from] ====== DISPLAYING CALLWISE DEPENDENCIES ====== +[from] call to f at tests/value/use_spec.i:22 (by main): + x FROM direct: x (and SELF) +[from] call to g at tests/value/use_spec.i:23 (by main): + y FROM direct: y (and SELF) +[from] call to h at tests/value/use_spec.i:24 (by main): + z FROM \nothing +[from] call to i at tests/value/use_spec.i:25 (by main): + w FROM \nothing +[from] entry point: + w FROM \nothing + x FROM direct: x (and SELF) + y FROM direct: y (and SELF) + z FROM \nothing +[from] ====== END OF CALLWISE DEPENDENCIES ====== +[inout] InOut (internal) for function f: + Operational inputs: + x + Operational inputs on termination: + x + Sure outputs: + \nothing +[inout] InOut (internal) for function h: + Operational inputs: + \nothing + Operational inputs on termination: + \nothing + Sure outputs: + z +[inout] InOut (internal) for function main: + Operational inputs: + x; y + Operational inputs on termination: + x; y + Sure outputs: + w; z diff --git a/tests/value/oracle_symblocs/user_assertion_uninit_var.err.oracle b/tests/value/oracle_symblocs/user_assertion_uninit_var.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/user_assertion_uninit_var.res.oracle b/tests/value/oracle_symblocs/user_assertion_uninit_var.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..27ab202184fcfbc900d3080b6ea636cb58ad7877 --- /dev/null +++ b/tests/value/oracle_symblocs/user_assertion_uninit_var.res.oracle @@ -0,0 +1,28 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/user_assertion_uninit_var.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +tests/value/user_assertion_uninit_var.i:3:[value] entering loop for the first time +tests/value/user_assertion_uninit_var.i:4:[value] warning: assertion got status unknown. +tests/value/user_assertion_uninit_var.i:6:[value] warning: accessing uninitialized left-value. assert \initialized(&n); +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + i ∈ {10} + n ∈ [0..9] + x ∈ {0; 1} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + i; n; x +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/usp.err.oracle b/tests/value/oracle_symblocs/usp.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/usp.res.oracle b/tests/value/oracle_symblocs/usp.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..10b186036e67c0456efed1fe1cd59211e4e559a6 --- /dev/null +++ b/tests/value/oracle_symblocs/usp.res.oracle @@ -0,0 +1,53 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/usp.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + a ∈ {-12} + b ∈ {0} + p ∈ {{ (unsigned int *)&a }} + q ∈ {{ (unsigned int *)&b }} + X ∈ {0} + Y ∈ {0} + Z ∈ {0} + T ∈ {0} +[value] Called Frama_C_show_each({-1; 5}) +[value] DUMPING STATE of file tests/value/usp.i line 18 + a ∈ {-12} + b ∈ {5; 4294967295} + p ∈ {{ (unsigned int *)&a }} + q ∈ {{ (unsigned int *)&b }} + X ∈ {0} + Y ∈ {-12} + Z ∈ {-1; 0} + T ∈ {0; 5} + c ∈ [--..--] + __retres ∈ UNINITIALIZED + =END OF DUMP== +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + b ∈ {-1; 5} + Y ∈ {-12} + Z ∈ {-1; 0} + T ∈ {0; 5} + __retres ∈ {0} +[from] Computing for function main +[from] Computing for function Frama_C_dump_each <-main +[from] Done for function Frama_C_dump_each +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + b FROM c + Y FROM a; p + Z FROM q; c (and SELF) + T FROM q; c (and SELF) + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + b; Y; Z; T; __retres +[inout] Inputs for function main: + a; b; p; q diff --git a/tests/value/oracle_symblocs/va_list.err.oracle b/tests/value/oracle_symblocs/va_list.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/va_list.res.oracle b/tests/value/oracle_symblocs/va_list.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..d6f3bb72220fce6057a6ef6cbed739a4bc79894b --- /dev/null +++ b/tests/value/oracle_symblocs/va_list.res.oracle @@ -0,0 +1,33 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/va_list.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] computing for function __builtin_next_arg <- main. + Called from tests/value/va_list.c:9. +tests/value/va_list.c:9:[kernel] warning: Neither code nor specification for function __builtin_next_arg, generating default assigns from the prototype +[value] using specification for function __builtin_next_arg +tests/value/va_list.c:9:[value] user error: functions returning variadic arguments must be stubbed +[value] Done for function __builtin_next_arg +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + vlParameters ∈ [--..--] +[from] Computing for function main +[from] Computing for function __builtin_next_arg <-main +[from] Done for function __builtin_next_arg +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function __builtin_next_arg: + \result FROM \nothing +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + vlParameters; tmp +[inout] Inputs for function main: + \nothing diff --git a/tests/value/oracle_symblocs/va_list2.err.oracle b/tests/value/oracle_symblocs/va_list2.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/va_list2.res.oracle b/tests/value/oracle_symblocs/va_list2.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..4d2c3649824f56d541c1d10e2b5a6bde46e812f6 --- /dev/null +++ b/tests/value/oracle_symblocs/va_list2.res.oracle @@ -0,0 +1,41 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/va_list2.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +tests/value/va_list2.c:8:[value] entering loop for the first time +tests/value/va_list2.c:8:[value] warning: out of bounds read. assert \valid_read(fmt); +[value] Called Frama_C_show_each_i([-2147483648..2147483647]) +tests/value/va_list2.c:16:[value] warning: non-finite float value. assert \is_finite(tmp_0); + (tmp_0 from vararg) +[value] Called Frama_C_show_each_f([-3.40282346639e+38 .. 3.40282346639e+38]) +tests/value/va_list2.c:9:[value] warning: out of bounds read. assert \valid_read(fmt); +[value] Called Frama_C_show_each_i([-2147483648..2147483647]) +[value] Called Frama_C_show_each_f([-3.40282346639e+38 .. 3.40282346639e+38]) +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +tests/value/va_list2.c:7:[kernel] warning: Neither code nor specification for function __builtin_va_start, generating default assigns from the prototype +tests/value/va_list2.c:11:[kernel] warning: Neither code nor specification for function __builtin_va_arg, generating default assigns from the prototype +tests/value/va_list2.c:24:[kernel] warning: Neither code nor specification for function __builtin_va_end, generating default assigns from the prototype +[value:final-states] Values at end of function main: + fmt ∈ {{ &S_fmt{[0], [1]} }} +[from] Computing for function main +[from] Computing for function __builtin_va_start <-main +[from] Done for function __builtin_va_start +[from] Computing for function __builtin_va_arg <-main +[from] Done for function __builtin_va_arg +[from] Computing for function __builtin_va_end <-main +[from] Done for function __builtin_va_end +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + fmt; i; f +[inout] Inputs for function main: + S_fmt[0..1] diff --git a/tests/value/oracle_symblocs/val6.0.err.oracle b/tests/value/oracle_symblocs/val6.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/val6.0.res.oracle b/tests/value/oracle_symblocs/val6.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..3262fad2cca2c94cdde76a3030610404c31531fc --- /dev/null +++ b/tests/value/oracle_symblocs/val6.0.res.oracle @@ -0,0 +1,43 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/val6.i (no preprocessing) +[value] Analyzing a complete application starting at f +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + NULL[rbits 8 to 8388607] ∈ [--..--] + c ∈ {0} + a ∈ {0} + b ∈ {0} + y ∈ {0} + x ∈ {0} +[value] Recording results for f +[value] done for function f +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + NULL[rbits 8 to 143] ∈ [--..--] + [rbits 144 to 175] ∈ {{ (? *)&b }} + [rbits 176 to 8388607] ∈ [--..--] + c ∈ {{ &b }} + a ∈ {98} + b[bits 0 to 7] ∈ {97} + [bits 8 to 31]# ∈ {{ (? *)&a }}%32, bits 8 to 31 + y ∈ {{ &b }} + x ∈ {{ (int)&b }} + __retres ∈ {0} +[from] Computing for function f +[from] Done for function f +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + NULL[18..21] FROM \nothing + c FROM \nothing + a FROM \nothing + b FROM \nothing + y FROM \nothing + x FROM \nothing + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + NULL[18..21]; c; a; b; y; x; __retres +[inout] Inputs for function f: + NULL[18..21]; c; x diff --git a/tests/value/oracle_symblocs/val6.1.err.oracle b/tests/value/oracle_symblocs/val6.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/val6.1.res.oracle b/tests/value/oracle_symblocs/val6.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..d9ca6d75461050a1524d870760c570e83d5a7122 --- /dev/null +++ b/tests/value/oracle_symblocs/val6.1.res.oracle @@ -0,0 +1,39 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/val6.i (no preprocessing) +[value] Analyzing a complete application starting at f1 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + NULL[rbits 8 to 8388607] ∈ [--..--] + c ∈ {0} + a ∈ {0} + b ∈ {0} + y ∈ {0} + x ∈ {0} +[value] Recording results for f1 +[value] done for function f1 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f1: + NULL[rbits 8 to 135] ∈ [--..--] + [rbits 136 to 143] ∈ {27} + [rbits 144 to 151] ∈ [--..--] + [rbits 152 to 159] ∈ {0} + [rbits 160 to 8388607] ∈ [--..--] + b ∈ {19} + x ∈ {19} + __retres ∈ {0} +[from] Computing for function f1 +[from] Done for function f1 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f1: + NULL[17] FROM \nothing + [19] FROM c + b FROM c + x FROM c + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f1: + NULL{[17]; [19]}; b; x; __retres +[inout] Inputs for function f1: + c; b; x diff --git a/tests/value/oracle_symblocs/val9.err.oracle b/tests/value/oracle_symblocs/val9.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/val9.res.oracle b/tests/value/oracle_symblocs/val9.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..32f7f2939c4e00b9f5b261cc74c5e8d6a147e7d6 --- /dev/null +++ b/tests/value/oracle_symblocs/val9.res.oracle @@ -0,0 +1,96 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/val9.i (no preprocessing) +[value] Analyzing a complete application starting at f +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + TT[0] ∈ {1} + [1] ∈ {2} + [2] ∈ {3} + [3..9] ∈ {0} + T[0] ∈ {1} + [1] ∈ {2} + [2] ∈ {3} + [3..9] ∈ {0} + i ∈ {0} + a ∈ {0} + b ∈ {0} + a7 ∈ {0} + b7 ∈ {0} + O1[0..19] ∈ {0} + O2[0..19] ∈ {0} + p ∈ {0} + x2 ∈ {0} + b2 ∈ {0} + a2 ∈ {0} +tests/value/val9.i:17:[value] entering loop for the first time +tests/value/val9.i:27:[value] entering loop for the first time +[value] Recording results for f +[value] done for function f +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + TT[0][bits 0 to 7]# ∈ [0..8]%32, bits 0 to 7 + [bits 8 to 39]# ∈ [0..8] repeated %32, bits 8 to 39 + [bits 40 to 71]# ∈ [0..8] repeated %32, bits 8 to 39 + [bits 72 to 287]# ∈ [0..8] repeated %32, bits 8 to 223 + [9] ∈ {0} + T[0][bits 0 to 7]# ∈ {1}%32, bits 0 to 7 + [0][bits 8 to 31]# ∈ {0; 1}%32, bits 8 to 31 + [1][bits 0 to 7]# ∈ {0; 2}%32, bits 0 to 7 + [1][bits 8 to 31]# ∈ {0; 2}%32, bits 8 to 31 + [2][bits 0 to 7]# ∈ {0; 3}%32, bits 0 to 7 + [2][bits 8 to 31]# ∈ {0; 3}%32, bits 8 to 31 + [3..5] ∈ {0} + [6][bits 0 to 7]# ∈ {0; 7}%32, bits 0 to 7 + [6][bits 8 to 31]# ∈ {0; 7}%32, bits 8 to 31 + [7..9] ∈ {0} + i ∈ {9} + a[bits 0 to 7] ∈ {1; 6} + [bits 8 to 31]# ∈ {6}%32, bits 8 to 31 + b[bits 0 to 7] ∈ {0; 1} + [bits 8 to 31]# ∈ {0; 6}%32, bits 8 to 31 + a7[bits 0 to 7] ∈ {1} + [bits 8 to 31]# ∈ {97}%32, bits 8 to 31 + b7 ∈ {1} + O1[0][bits 0 to 7] ∈ {0} + [0][bits 8 to 15] ∈ {18} + [0][bits 16 to 31] ∈ {0} + [1] ∈ {17} + [2..8] ∈ {0} + [9] ∈ {1} + [10..19] ∈ {0} + O2[0][bits 0 to 7]# ∈ {10}%32, bits 0 to 7 + [0][bits 8 to 15] ∈ {11} + [0][bits 16 to 31]# ∈ {10}%32, bits 16 to 31 + [1..19] ∈ {0} + p ∈ {{ &O1[9] }} + x2 ∈ {1} + b2 ∈ {{ &x2 }} + a2 ∈ {{ (int)&x2 }} +[from] Computing for function f +[from] Done for function f +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + TT{[0..8]; [9][bits 0 to 7]} FROM \nothing (and SELF) + T{{[0][bits 8 to 31]; [1..5]}; {[7..8]; [9][bits 0 to 7]}} + FROM \nothing (and SELF) + [6] FROM b + i FROM \nothing + a FROM b + b FROM b (and SELF) + a7 FROM \nothing + b7 FROM \nothing + O1{[0][bits 8 to 15]; [1]; [6]; [9]} FROM \nothing + O2[0] FROM \nothing + p FROM \nothing + x2 FROM \nothing + b2 FROM \nothing + a2 FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + TT{[0..8]; [9][bits 0 to 7]}; + T{[0][bits 8 to 31]; [1..8]; [9][bits 0 to 7]}; i; a; b; a7; b7; + O1{[0][bits 8 to 15]; [1]; [6]; [9]}; O2[0]; p; x2; b2; a2 +[inout] Inputs for function f: + i; a; b; a7; p; x2; b2; a2 diff --git a/tests/value/oracle_symblocs/val_if.0.err.oracle b/tests/value/oracle_symblocs/val_if.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/val_if.0.res.oracle b/tests/value/oracle_symblocs/val_if.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..3a1c55686bb02cb6ce191dcc2aa015127b20e291 --- /dev/null +++ b/tests/value/oracle_symblocs/val_if.0.res.oracle @@ -0,0 +1,33 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/val_if.i (no preprocessing) +[value] Analyzing a complete application starting at f +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + i ∈ {0} + j ∈ {0} + x ∈ {0} + k ∈ {0} + l ∈ {0} + m ∈ {0} + n ∈ {0} + d ∈ {0} +[value] Recording results for f +[value] done for function f +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + i ∈ {10} + x ∈ {-1; 1} + j_0 ∈ {12} +[from] Computing for function f +[from] Done for function f +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + i FROM \nothing + x FROM c +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + i; x; j_0 +[inout] Inputs for function f: + x diff --git a/tests/value/oracle_symblocs/val_if.1.err.oracle b/tests/value/oracle_symblocs/val_if.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/val_if.1.res.oracle b/tests/value/oracle_symblocs/val_if.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..70cfaa9902b380d6ce5963e1f7e919638813efa2 --- /dev/null +++ b/tests/value/oracle_symblocs/val_if.1.res.oracle @@ -0,0 +1,38 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/val_if.i (no preprocessing) +[value] Analyzing a complete application starting at f1 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + i ∈ {0} + j ∈ {0} + x ∈ {0} + k ∈ {0} + l ∈ {0} + m ∈ {0} + n ∈ {0} + d ∈ {0} +[value] Recording results for f1 +[value] done for function f1 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f1: + i ∈ {10} + j ∈ {-1; 13} + x ∈ {-1; 1} + k ∈ {14} + l ∈ {-1; 15} +[from] Computing for function f1 +[from] Done for function f1 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f1: + i FROM \nothing + j FROM c + x FROM c + k FROM \nothing + l FROM c +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f1: + i; j; x; k; l +[inout] Inputs for function f1: + x diff --git a/tests/value/oracle_symblocs/val_if.2.err.oracle b/tests/value/oracle_symblocs/val_if.2.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/val_if.2.res.oracle b/tests/value/oracle_symblocs/val_if.2.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..7d6ba2c202e1ede5995844f361836541702af135 --- /dev/null +++ b/tests/value/oracle_symblocs/val_if.2.res.oracle @@ -0,0 +1,38 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/val_if.i (no preprocessing) +[value] Analyzing a complete application starting at f2 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + i ∈ {0} + j ∈ {0} + x ∈ {0} + k ∈ {0} + l ∈ {0} + m ∈ {0} + n ∈ {0} + d ∈ {0} +[value] Recording results for f2 +[value] done for function f2 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f2: + i ∈ {10} + j ∈ {2} + x ∈ {2} + k ∈ {17} + l ∈ {18} +[from] Computing for function f2 +[from] Done for function f2 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f2: + i FROM \nothing + j FROM d; c + x FROM d; c + k FROM \nothing + l FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f2: + i; j; x; k; l +[inout] Inputs for function f2: + x; d diff --git a/tests/value/oracle_symblocs/val_ptr.0.err.oracle b/tests/value/oracle_symblocs/val_ptr.0.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/val_ptr.0.res.oracle b/tests/value/oracle_symblocs/val_ptr.0.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..50a153e1e4bdce53da911e61dd216d1bfbf3e68f --- /dev/null +++ b/tests/value/oracle_symblocs/val_ptr.0.res.oracle @@ -0,0 +1,49 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/val_ptr.i (no preprocessing) +[value] Analyzing a complete application starting at f +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + i ∈ {0} + j ∈ {0} + x ∈ {0} + k ∈ {0} + l ∈ {0} + m ∈ {0} + n ∈ {0} + d ∈ {0} + a ∈ {0} + b ∈ {0} + c ∈ {0} + p ∈ {0} + T[0..7] ∈ {0} +[value] Recording results for f +[value] done for function f +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f: + i ∈ {10} + j ∈ {10; 12; 16} + k ∈ {10; 11; 12} + l ∈ {18} + d ∈ {13} + a ∈ {10; 11} + b ∈ {12} + p ∈ {{ &a ; &b }} +[from] Computing for function f +[from] Done for function f +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f: + i FROM \nothing + j FROM c_0 + k FROM c_0 + l FROM \nothing + d FROM \nothing + a FROM c_0 + b FROM \nothing + p FROM c_0 +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f: + i; j; k; l; d; a; b; p +[inout] Inputs for function f: + d; a; b; p diff --git a/tests/value/oracle_symblocs/val_ptr.1.err.oracle b/tests/value/oracle_symblocs/val_ptr.1.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/val_ptr.1.res.oracle b/tests/value/oracle_symblocs/val_ptr.1.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..00f301fee3be461eb6e7493257f29fc9ed50f9ee --- /dev/null +++ b/tests/value/oracle_symblocs/val_ptr.1.res.oracle @@ -0,0 +1,36 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/val_ptr.i (no preprocessing) +[value] Analyzing a complete application starting at f1 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + i ∈ {0} + j ∈ {0} + x ∈ {0} + k ∈ {0} + l ∈ {0} + m ∈ {0} + n ∈ {0} + d ∈ {0} + a ∈ {0} + b ∈ {0} + c ∈ {0} + p ∈ {0} + T[0..7] ∈ {0} +tests/value/val_ptr.i:34:[value] entering loop for the first time +[value] Recording results for f1 +[value] done for function f1 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f1: + p ∈ {{ &T[0] }} +[from] Computing for function f1 +[from] Done for function f1 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f1: + p FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f1: + p +[inout] Inputs for function f1: + p diff --git a/tests/value/oracle_symblocs/val_ptr.2.err.oracle b/tests/value/oracle_symblocs/val_ptr.2.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/val_ptr.2.res.oracle b/tests/value/oracle_symblocs/val_ptr.2.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..13cf01efc9f4ba2a058d9f3006ab3172ea4f698b --- /dev/null +++ b/tests/value/oracle_symblocs/val_ptr.2.res.oracle @@ -0,0 +1,37 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/val_ptr.i (no preprocessing) +[value] Analyzing a complete application starting at f3 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + i ∈ {0} + j ∈ {0} + x ∈ {0} + k ∈ {0} + l ∈ {0} + m ∈ {0} + n ∈ {0} + d ∈ {0} + a ∈ {0} + b ∈ {0} + c ∈ {0} + p ∈ {0} + T[0..7] ∈ {0} +[value] Recording results for f3 +[value] done for function f3 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f3: + p ∈ {{ &T[0] }} + T[0..7] ∈ {0} +[from] Computing for function f3 +[from] Done for function f3 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f3: + p FROM \nothing + T[0] FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f3: + p; T[0] +[inout] Inputs for function f3: + p diff --git a/tests/value/oracle_symblocs/val_ptr.3.err.oracle b/tests/value/oracle_symblocs/val_ptr.3.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/val_ptr.3.res.oracle b/tests/value/oracle_symblocs/val_ptr.3.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..0f93b59a677ec4e1fb04f1490512cb43d431a5b5 --- /dev/null +++ b/tests/value/oracle_symblocs/val_ptr.3.res.oracle @@ -0,0 +1,42 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/val_ptr.i (no preprocessing) +[value] Analyzing a complete application starting at f2 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + i ∈ {0} + j ∈ {0} + x ∈ {0} + k ∈ {0} + l ∈ {0} + m ∈ {0} + n ∈ {0} + d ∈ {0} + a ∈ {0} + b ∈ {0} + c ∈ {0} + p ∈ {0} + T[0..7] ∈ {0} +[value] Recording results for f2 +[value] done for function f2 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function f2: + j ∈ {3} + a ∈ {1} + b ∈ {2} + p ∈ {{ &a }} + c_0 ∈ {0} +[from] Computing for function f2 +[from] Done for function f2 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function f2: + j FROM \nothing + a FROM \nothing + b FROM \nothing + p FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function f2: + j; a; b; p; c_0 +[inout] Inputs for function f2: + p diff --git a/tests/value/oracle_symblocs/video_detect.err.oracle b/tests/value/oracle_symblocs/video_detect.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/video_detect.res.oracle b/tests/value/oracle_symblocs/video_detect.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e4376bd1dd141717510b297f8d3502564beca6ac --- /dev/null +++ b/tests/value/oracle_symblocs/video_detect.res.oracle @@ -0,0 +1,47 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/video_detect.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + NULL[rbits 256 to 287] ∈ [--..--] + G ∈ {0} +[value] computing for function detect_video <- main. + Called from tests/value/video_detect.i:36. +[value] Recording results for detect_video +[value] Done for function detect_video +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function detect_video: + NULL[rbits 256 to 287] ∈ [--..--] + p ∈ {32} + saved1 ∈ [--..--] + saved2 ∈ [--..--] + video_found ∈ {0} +[value:final-states] Values at end of function main: + NULL[rbits 256 to 287] ∈ [--..--] + ADDR ∈ {32} +[from] Computing for function detect_video +[from] Done for function detect_video +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function detect_video: + NULL[32..33] FROM NULL[32..33]; video_base + [34..35] FROM NULL[34..35]; video_base + \result FROM video_base +[from] Function main: + NULL[32..33] FROM NULL[32..33] + [34..35] FROM NULL[34..35] + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function detect_video: + NULL[32..35]; p; saved1; saved2; video_found +[inout] Inputs for function detect_video: + NULL[32..35] +[inout] Out (internal) for function main: + NULL[32..35]; ADDR; tmp +[inout] Inputs for function main: + NULL[32..35] diff --git a/tests/value/oracle_symblocs/volatile.err.oracle b/tests/value/oracle_symblocs/volatile.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/volatile.res.oracle b/tests/value/oracle_symblocs/volatile.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..02b60253451069def63fe1c010747e19c0e61019 --- /dev/null +++ b/tests/value/oracle_symblocs/volatile.res.oracle @@ -0,0 +1,147 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/volatile.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +tests/value/volatile.i:5:[value] warning: global initialization of volatile zone G ignored +tests/value/volatile.i:11:[value] warning: global initialization of volatile zone s2.b ignored +tests/value/volatile.i:15:[value] warning: global initialization of volatile zone sv2 ignored +tests/value/volatile.i:17:[value] warning: global initialization of volatile zone sv3.b ignored +tests/value/volatile.i:18:[value] warning: global initialization of volatile zone sv4.b ignored +tests/value/volatile.i:33:[value] warning: global initialization of volatile zone nested.__anonCompField1.b ignored +tests/value/volatile.i:33:[value] warning: global initialization of volatile zone nested.__anonCompField2 ignored +tests/value/volatile.i:33:[value] warning: global initialization of volatile zone nested.t ignored +[value] Initial state computed +[value:initial-state] Values of globals at initialization + G ∈ [--..--] + F ∈ [--..--] + E ∈ [--..--] + X ∈ [--..--] + Y ∈ [--..--] + pV ∈ {0} + k ∈ {1} + x ∈ {2} + y ∈ {3} + a ∈ {0} + b ∈ {0} + c ∈ {0} + d ∈ {0} + e ∈ {0} + f ∈ {0} + g ∈ {0} + h ∈ {0} + i ∈ {0} + j ∈ {0} + l ∈ {0} + m ∈ {0} + n ∈ {0} + o ∈ {0} + pv ∈ {0} + s1.a ∈ {0} + .b ∈ [--..--] + s2.a ∈ {1} + .b ∈ [--..--] + sv1 ∈ [--..--] + sv2 ∈ [--..--] + sv3.a ∈ {3} + .b ∈ [--..--] + sv4.a ∈ {4} + .b ∈ [--..--] + nested.__anonCompField1.a ∈ {1} + {.__anonCompField1.b; .__anonCompField2; .t[0..11]} ∈ [--..--] + .e ∈ {0} + .[bits 240 to 255] ∈ {0} or UNINITIALIZED + R1 ∈ {0} + R2 ∈ {0} +[value] computing for function main1 <- main. + Called from tests/value/volatile.i:89. +[value] computing for function fn1 <- main1 <- main. + Called from tests/value/volatile.i:39. +[value] Called Frama_C_show_each_1([-2147483648..2147483647]) +[value] Called Frama_C_show_each_2([-2147483648..2147483647]) +tests/value/volatile.i:26:[value] warning: signed overflow. assert -2147483648 ≤ x_0+y_0; +tests/value/volatile.i:26:[value] warning: signed overflow. assert x_0+y_0 ≤ 2147483647; +[value] Recording results for fn1 +[value] Done for function fn1 +[value] computing for function fn2 <- main1 <- main. + Called from tests/value/volatile.i:40. +tests/value/volatile.i:40:[kernel] warning: Neither code nor specification for function fn2, generating default assigns from the prototype +[value] using specification for function fn2 +[value] Done for function fn2 +[value] Called Frama_C_show_each_d([-2147483648..2147483647]) +tests/value/volatile.i:52:[value] warning: signed overflow. assert -2147483648 ≤ b-c; +tests/value/volatile.i:52:[value] warning: signed overflow. assert b-c ≤ 2147483647; +tests/value/volatile.i:53:[value] warning: signed overflow. assert -2147483648 ≤ F-F; +tests/value/volatile.i:53:[value] warning: signed overflow. assert F-F ≤ 2147483647; +tests/value/volatile.i:55:[value] warning: signed overflow. assert -2147483648 ≤ F-g; +tests/value/volatile.i:55:[value] warning: signed overflow. assert F-g ≤ 2147483647; +tests/value/volatile.i:56:[value] warning: signed overflow. assert F+1 ≤ 2147483647; +tests/value/volatile.i:57:[value] warning: signed overflow. assert 2+F ≤ 2147483647; +tests/value/volatile.i:58:[value] warning: signed overflow. assert -2147483648 ≤ F-l; +tests/value/volatile.i:58:[value] warning: signed overflow. assert F-l ≤ 2147483647; +tests/value/volatile.i:59:[value] warning: signed overflow. assert -2147483648 ≤ m-l; +tests/value/volatile.i:59:[value] warning: signed overflow. assert m-l ≤ 2147483647; +[value] Recording results for main1 +[value] Done for function main1 +[value] computing for function main2 <- main. + Called from tests/value/volatile.i:90. +[value] Recording results for main2 +[value] Done for function main2 +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function fn1: + __retres ∈ [--..--] +[value:final-states] Values at end of function main1: + G ∈ [--..--] + E ∈ [--..--] + X ∈ {2} + Y ∈ [--..--] + pV ∈ {{ &Y }} + k ∈ [--..--] + x ∈ {2} + y ∈ [--..--] + a ∈ {11; 12} + b ∈ [--..--] + c ∈ [--..--] + d ∈ [--..--] + e ∈ [--..--] + f ∈ [--..--] + g ∈ [--..--] + h ∈ {1} + l ∈ [-2147483647..2147483647] + m ∈ [-2147483646..2147483647] + n ∈ [--..--] + o ∈ [--..--] + pv ∈ {{ &X }} + R1 ∈ [--..--] + R2 ∈ [--..--] +[value:final-states] Values at end of function main2: + k ∈ {{ NULL ; (int)&X }} + p1 ∈ {{ NULL + [--..--] ; &X + [--..--] }} + p2 ∈ {{ &X + [--..--] }} + p3 ∈ {{ NULL + [--..--] ; &X + [--..--] }} + __retres ∈ {{ NULL + [--..--] ; &X + [--..--] }} +[value:final-states] Values at end of function main: + G ∈ [--..--] + E ∈ [--..--] + X ∈ {2} + Y ∈ [--..--] + pV ∈ {{ &Y }} + k ∈ {{ NULL ; (int)&X }} + x ∈ {2} + y ∈ [--..--] + a ∈ {11; 12} + b ∈ [--..--] + c ∈ [--..--] + d ∈ [--..--] + e ∈ [--..--] + f ∈ [--..--] + g ∈ [--..--] + h ∈ {1} + l ∈ [-2147483647..2147483647] + m ∈ [-2147483646..2147483647] + n ∈ [--..--] + o ∈ [--..--] + pv ∈ {{ &X }} + R1 ∈ [--..--] + R2 ∈ [--..--] diff --git a/tests/value/oracle_symblocs/volatile2.err.oracle b/tests/value/oracle_symblocs/volatile2.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/volatile2.res.oracle b/tests/value/oracle_symblocs/volatile2.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..89fff4e50a842d9bc74258cbc77879c34bd83789 --- /dev/null +++ b/tests/value/oracle_symblocs/volatile2.res.oracle @@ -0,0 +1,301 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/volatile2.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + t[0..9] ∈ [--..--] + u ∈ [--..--] + pu ∈ {{ &u }} + s ∈ {0} + ps ∈ {{ &s }} + v ∈ [--..--] + BITF ∈ [--..--] +[value] computing for function main1 <- main. + Called from tests/value/volatile2.i:123. +tests/value/volatile2.i:23:[value] warning: signed overflow. assert (int)c<<8 ≤ 32767; +tests/value/volatile2.i:24:[value] warning: signed overflow. assert (int)*p<<8 ≤ 32767; +tests/value/volatile2.i:25:[value] warning: signed overflow. assert (int)t[1]<<8 ≤ 32767; +tests/value/volatile2.i:26:[value] warning: signed overflow. assert (int)u.f1<<8 ≤ 32767; +[value] Recording results for main1 +[value] Done for function main1 +[value] computing for function main2 <- main. + Called from tests/value/volatile2.i:124. +[value] Recording results for main2 +[value] Done for function main2 +[value] computing for function main3 <- main. + Called from tests/value/volatile2.i:125. +tests/value/volatile2.i:47:[value] warning: assertion got status invalid (stopping propagation). +tests/value/volatile2.i:52:[value] assertion got status valid. +tests/value/volatile2.i:55:[value] warning: assertion got status unknown. +tests/value/volatile2.i:56:[value] warning: assertion got status unknown. +tests/value/volatile2.i:59:[value] assertion got status valid. +[value] Recording results for main3 +[value] Done for function main3 +[value] computing for function main4 <- main. + Called from tests/value/volatile2.i:126. +[value] Recording results for main4 +[value] Done for function main4 +[value] computing for function main5 <- main. + Called from tests/value/volatile2.i:127. +tests/value/volatile2.i:76:[value] warning: signed overflow. assert i+1 ≤ 32767; +tests/value/volatile2.i:76:[value] warning: signed overflow. assert j+1 ≤ 32767; +tests/value/volatile2.i:76:[value] warning: signed overflow. assert -32768 ≤ tmp+tmp_0; + (tmp from i++, tmp_0 from j++) +tests/value/volatile2.i:76:[value] warning: signed overflow. assert tmp+tmp_0 ≤ 32767; + (tmp from i++, tmp_0 from j++) +tests/value/volatile2.i:78:[value] warning: signed overflow. assert i+1 ≤ 32767; +tests/value/volatile2.i:78:[value] warning: signed overflow. assert j+1 ≤ 32767; +tests/value/volatile2.i:78:[value] warning: signed overflow. assert -32768 ≤ i+j; +tests/value/volatile2.i:78:[value] warning: signed overflow. assert i+j ≤ 32767; +[value] DUMPING STATE of file tests/value/volatile2.i line 80 + t[0..9] ∈ [--..--] + u ∈ [--..--] + pu ∈ {{ &u }} + s ∈ {0} + ps ∈ {{ &s }} + v ∈ [--..--] + i ∈ [--..--] + j ∈ [--..--] + k ∈ [--..--] + tmp ∈ [--..--] + tmp_0 ∈ [--..--] + l ∈ [--..--] + BITF ∈ [--..--] + =END OF DUMP== +[value] Recording results for main5 +[value] Done for function main5 +[value] computing for function main6 <- main. + Called from tests/value/volatile2.i:128. +[value] Recording results for main6 +[value] Done for function main6 +[value] computing for function main7 <- main. + Called from tests/value/volatile2.i:129. +[value] Recording results for main7 +[value] Done for function main7 +[value] computing for function main8 <- main. + Called from tests/value/volatile2.i:130. +[value] Called Frama_C_show_each([--..--], [--..--], [--..--], [--..--], [--..--]) +[value] Recording results for main8 +[value] Done for function main8 +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main1: + c ∈ [--..--] + x ∈ {1} + p ∈ {{ (unsigned char volatile *)&x }} + i ∈ [0..32767] + j ∈ [0..32767] + k ∈ [0..32767] + l ∈ [0..32767] +[value:final-states] Values at end of function main2: + i ∈ [-128..127] + j ∈ [0..255] + k ∈ [0..255] +[value:final-states] Values at end of function main3: + +[value:final-states] Values at end of function main4: + p1 ∈ {{ &i }} + p2 ∈ {{ &i + [--..--] }} +[value:final-states] Values at end of function main5: + i ∈ [--..--] + j ∈ [--..--] + k ∈ [--..--] + l ∈ [--..--] +[value:final-states] Values at end of function main6: + i ∈ {1} + j ∈ {1} +[value:final-states] Values at end of function main7: + i ∈ {-3; -2; -1; 0; 1; 2; 3; 4} + k ∈ [1..16] +[value:final-states] Values at end of function main8: + a ∈ [--..--] + b ∈ [--..--] + c ∈ [--..--] + d ∈ [--..--] + e ∈ [--..--] +[value:final-states] Values at end of function main: + +/* Generated by Frama-C */ +struct u { + unsigned char f1 ; + unsigned char f2 ; +}; +struct s { + char i1 ; + char i2 ; +}; +struct bitf { + int i : 3 ; + unsigned int j : 4 ; +}; +struct __anonstruct_S_1 { + int field ; +}; +typedef struct __anonstruct_S_1 S; +typedef S volatile vS; +struct __anonstruct_vS2_2 { + int field ; +}; +typedef struct __anonstruct_vS2_2 volatile vS2; +union __anonunion_U_3 { + int field ; +}; +typedef union __anonunion_U_3 U; +typedef U volatile vU; +unsigned char volatile t[10]; +struct u volatile u; +struct u *pu = (struct u *)(& u); +void main1(void) +{ + unsigned char volatile c; + int x; + unsigned char volatile *p; + unsigned int i; + unsigned int j; + unsigned int k; + unsigned int l; + c = (unsigned char)1; + x = 1; + p = (unsigned char volatile *)(& x); + /*@ assert Value: signed_overflow: (int)c<<8 ≤ 32767; */ + i = (unsigned int)(((int)c << 8) + (int)c); + /*@ assert Value: signed_overflow: (int)*p<<8 ≤ 32767; */ + j = (unsigned int)(((int)*p << 8) + (int)*p); + /*@ assert Value: signed_overflow: (int)t[1]<<8 ≤ 32767; */ + k = (unsigned int)(((int)t[1] << 8) + (int)t[2]); + /*@ assert Value: signed_overflow: (int)u.f1<<8 ≤ 32767; */ + l = (unsigned int)(((int)u.f1 << 8) + (int)u.f2); + return; +} + +struct s s; +struct s volatile *ps = (struct s volatile *)(& s); +void main2(void) +{ + int i; + int j; + int k; + i = (int)ps->i1; + j = (int)u.f1; + k = (int)t[1]; + return; +} + +int volatile v; +void main3(void) +{ + if (v) + /*@ assert \false; */ ; + if (v) + /*@ assert \true; */ ; + /*@ assert v ≡ 0; */ ; + /*@ assert v ≡ 0; */ ; + if (v) + /*@ assert \true; */ ; + return; +} + +void main4(void) +{ + int volatile i; + int volatile *p1; + int volatile * volatile p2; + p1 = & i; + p2 = & i; + return; +} + +/*@ assigns \result; + assigns \result \from \nothing; */ +extern int ( /* missing proto */ Frama_C_dump_each)(); + +void main5(void) +{ + int volatile i; + int volatile j; + int k; + int tmp; + int tmp_0; + int l; + i = 0; + j = 0; + { /* sequence */ + tmp = i; + /*@ assert Value: signed_overflow: i+1 ≤ 32767; */ + i ++; + tmp_0 = j; + /*@ assert Value: signed_overflow: j+1 ≤ 32767; */ + j ++; + ; + } + /*@ assert Value: signed_overflow: -32768 ≤ tmp+tmp_0; */ + /*@ assert Value: signed_overflow: tmp+tmp_0 ≤ 32767; */ + k = tmp + tmp_0; + { /* sequence */ + /*@ assert Value: signed_overflow: i+1 ≤ 32767; */ + i ++; + /*@ assert Value: signed_overflow: j+1 ≤ 32767; */ + j ++; + } + /*@ assert Value: signed_overflow: -32768 ≤ i+j; */ + /*@ assert Value: signed_overflow: i+j ≤ 32767; */ + l = i + j; + Frama_C_dump_each(); + return; +} + +void main6(void) +{ + int i; + int j; + i = 1; + j = i; + return; +} + +struct bitf volatile BITF; +void main7(void) +{ + int i; + int k; + i = (int)BITF.i + 1; + k = (int)BITF.j + 1; + return; +} + +/*@ assigns \result; + assigns \result \from \nothing; */ +extern int ( /* missing proto */ Frama_C_show_each)(); + +void main8(void) +{ + S volatile a; + vS b; + vS2 c; + U volatile d; + vU e; + a.field = 0; + b.field = 0; + c.field = 0; + d.field = 0; + e.field = 0; + Frama_C_show_each(a,b,c,d,e); + return; +} + +void main(void) +{ + main1(); + main2(); + main3(); + main4(); + main5(); + main6(); + main7(); + main8(); + return; +} + + diff --git a/tests/value/oracle_symblocs/volatilestruct.err.oracle b/tests/value/oracle_symblocs/volatilestruct.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/volatilestruct.res.oracle b/tests/value/oracle_symblocs/volatilestruct.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..ffd033447569bbfd286262857f1b217cecf9ca65 --- /dev/null +++ b/tests/value/oracle_symblocs/volatilestruct.res.oracle @@ -0,0 +1,78 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/volatilestruct.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + p ∈ {0} + s2 ∈ {0} + x ∈ {0} + y ∈ {0} +tests/value/volatilestruct.c:33:[value] warning: signed overflow. assert -2147483648 ≤ &x-p->f4.f1; +tests/value/volatilestruct.c:33:[value] warning: signed overflow. assert &x-p->f4.f1 ≤ 2147483647; +tests/value/volatilestruct.c:33:[value] warning: signed overflow. assert (int)(&x-p->f4.f1)+1 ≤ 2147483647; +tests/value/volatilestruct.c:34:[value] warning: signed overflow. assert -2147483648 ≤ &y-p->f4.f2; +tests/value/volatilestruct.c:34:[value] warning: signed overflow. assert &y-p->f4.f2 ≤ 2147483647; +tests/value/volatilestruct.c:34:[value] warning: signed overflow. assert (int)(&y-p->f4.f2)+3 ≤ 2147483647; +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + p ∈ {{ &s2 }} + s2.f4.f1 ∈ {{ &x + [--..--] }} + .f4.f2 ∈ {{ &y + [--..--] }} + {.f4.f3; .f5} ∈ {0} + q1 ∈ {{ &x + [--..--] }} + q2 ∈ {{ &y + [--..--] }} + i ∈ [--..--] + j ∈ {{ &y + [--..--] }} + r ∈ [-2147483647..2147483647] + s ∈ [-2147483645..2147483647] +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + p FROM \nothing + s2.f4{.f1; .f2} FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + p; s2.f4{.f1; .f2}; q1; q2; i; j; r; s +[inout] Inputs for function main: + p; s2{.f4{.f1; .f2}; .f5} +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + p ∈ {0} + s2 ∈ {0} + x ∈ {0} + y ∈ {0} +tests/value/volatilestruct.c:33:[value] warning: 2's complement assumed for overflow +tests/value/volatilestruct.c:34:[value] warning: 2's complement assumed for overflow +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + p ∈ {{ &s2 }} + s2.f4.f1 ∈ {{ &x + [--..--] }} + .f4.f2 ∈ {{ &y + [--..--] }} + {.f4.f3; .f5} ∈ {0} + q1 ∈ {{ &x + [--..--] }} + q2 ∈ {{ &y + [--..--] }} + i ∈ [--..--] + j ∈ {{ &y + [--..--] }} + r ∈ [--..--] + s ∈ [--..--] +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + p FROM \nothing + s2.f4{.f1; .f2} FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + p; s2.f4{.f1; .f2}; q1; q2; i; j; r; s +[inout] Inputs for function main: + p; s2{.f4{.f1; .f2}; .f5} diff --git a/tests/value/oracle_symblocs/wide_string.err.oracle b/tests/value/oracle_symblocs/wide_string.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/wide_string.res.oracle b/tests/value/oracle_symblocs/wide_string.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..113a1efa48978a79466d93ddb1f192d39319b593 --- /dev/null +++ b/tests/value/oracle_symblocs/wide_string.res.oracle @@ -0,0 +1,31 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/wide_string.c (with preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +tests/value/wide_string.c:16:[value] warning: accessing out of bounds index. assert 4 < 4; +tests/value/wide_string.c:19:[value] warning: accessing out of bounds index. assert 4 < 4; +[value] Recording results for main +[value] done for function main +tests/value/wide_string.c:16:[value] assertion 'Value,index_bound' got final status invalid. +tests/value/wide_string.c:19:[value] assertion 'Value,index_bound' got final status invalid. +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + p ∈ {{ "bar" }} + q ∈ {{ L"foO" }} + __retres ∈ {0} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + \result FROM "bar"{[bits 8 to 15]; [bits 24 to 31]}; + L"foO"{[bits 32 to 63]; [bits 96 to 127]} +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + p; q; c; wc; __retres +[inout] Inputs for function main: + "bar"{[bits 8 to 15]; [bits 24 to 31]}; + L"foO"{[bits 32 to 63]; [bits 96 to 127]} diff --git a/tests/value/oracle_symblocs/widen_non_constant.err.oracle b/tests/value/oracle_symblocs/widen_non_constant.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/widen_non_constant.res.oracle b/tests/value/oracle_symblocs/widen_non_constant.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..aafa83cfb3c355d48249b381a3af9af36307b1a4 --- /dev/null +++ b/tests/value/oracle_symblocs/widen_non_constant.res.oracle @@ -0,0 +1,144 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/widen_non_constant.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + N ∈ {24} + A[0..23] ∈ [--..--] + B[0..25] ∈ [--..--] + C[0..23] ∈ [--..--] + t[0..19] ∈ {0} + u[0..39] ∈ {0} +[value] computing for function main1 <- main. + Called from tests/value/widen_non_constant.i:84. +tests/value/widen_non_constant.i:10:[value] entering loop for the first time +[value] Called Frama_C_show_each_out({0}) +tests/value/widen_non_constant.i:12:[value] entering loop for the first time +[value] Called Frama_C_show_each_in({0}, {1}) +[value] Called Frama_C_show_each_in({0}, {1; 2}) +[value] Called Frama_C_show_each_in({0}, {1; 2; 3}) +[value] Called Frama_C_show_each_in({0}, [1..23]) +[value] Called Frama_C_show_each_out({0; 1}) +[value] Called Frama_C_show_each_in({0; 1}, [1..23]) +[value] Called Frama_C_show_each_out({0; 1; 2}) +[value] Called Frama_C_show_each_in({0; 1; 2}, [1..23]) +[value] Called Frama_C_show_each_out([0..22]) +[value] Called Frama_C_show_each_in([0..23], [1..23]) +[value] Recording results for main1 +[value] Done for function main1 +[value] computing for function main2 <- main. + Called from tests/value/widen_non_constant.i:85. +tests/value/widen_non_constant.i:26:[value] entering loop for the first time +[value] Called Frama_C_show_each_out({0}) +tests/value/widen_non_constant.i:28:[value] entering loop for the first time +[value] Called Frama_C_show_each_in({0}, {1}) +[value] Called Frama_C_show_each_in({0}, {1; 2}) +[value] Called Frama_C_show_each_in({0}, {1; 2; 3}) +[value] Called Frama_C_show_each_in({0}, [1..23]) +[value] Called Frama_C_show_each_out({0; 1}) +[value] Called Frama_C_show_each_in({0; 1}, [1..23]) +[value] Called Frama_C_show_each_out({0; 1; 2}) +[value] Called Frama_C_show_each_in([0..25], [1..23]) +[value] Called Frama_C_show_each_out([0..22]) +[value] Recording results for main2 +[value] Done for function main2 +[value] computing for function main3 <- main. + Called from tests/value/widen_non_constant.i:86. +tests/value/widen_non_constant.i:45:[value] entering loop for the first time +[value] Called Frama_C_show_each_out({0}) +tests/value/widen_non_constant.i:47:[value] entering loop for the first time +[value] Called Frama_C_show_each_in({0}, {1}) +[value] Called Frama_C_show_each_in({0}, {1; 2}) +[value] Called Frama_C_show_each_in({0}, {1; 2; 3}) +[value] Called Frama_C_show_each_in({0}, [1..23]) +[value] Called Frama_C_show_each_out({0; 1}) +[value] Called Frama_C_show_each_in({0; 1}, [1..23]) +[value] Called Frama_C_show_each_out({0; 1; 2}) +[value] Called Frama_C_show_each_in([0..2147483647], [1..23]) +tests/value/widen_non_constant.i:49:[value] warning: out of bounds read. assert \valid_read(p+j); +tests/value/widen_non_constant.i:45:[value] warning: signed overflow. assert j+1 ≤ 2147483647; +[value] Called Frama_C_show_each_out([0..22]) +[value] Recording results for main3 +[value] Done for function main3 +[value] computing for function main4 <- main. + Called from tests/value/widen_non_constant.i:87. +tests/value/widen_non_constant.i:63:[value] entering loop for the first time +tests/value/widen_non_constant.i:69:[value] entering loop for the first time +[value] Called Frama_C_show_each({43}) +tests/value/widen_non_constant.i:75:[value] entering loop for the first time +[value] Called Frama_C_show_each({35; 36; 37; 38; 39; 40; 41; 42}) +[value] Recording results for main4 +[value] Done for function main4 +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main1: + i ∈ {24} or UNINITIALIZED + j ∈ {23; 24} +[value:final-states] Values at end of function main2: + i ∈ {24; 25} or UNINITIALIZED + j ∈ {23; 24; 25; 26} +[value:final-states] Values at end of function main3: + i ∈ [24..2147483647] or UNINITIALIZED + j ∈ [23..2147483647] + p ∈ {{ &C[0] }} +[value:final-states] Values at end of function main4: + t[0] ∈ {-1} + [1..19] ∈ [0..18] + u[0..39] ∈ [0..42] + i ∈ {19} + j ∈ {35; 36; 37; 38; 39; 40; 41; 42} + maxi ∈ {19} + maxj ∈ {35} +[value:final-states] Values at end of function main: + t[0] ∈ {-1} + [1..19] ∈ [0..18] + u[0..39] ∈ [0..42] +[from] Computing for function main1 +[from] Done for function main1 +[from] Computing for function main2 +[from] Done for function main2 +[from] Computing for function main3 +[from] Done for function main3 +[from] Computing for function main4 +[from] Done for function main4 +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main1: + NO EFFECTS +[from] Function main2: + NO EFFECTS +[from] Function main3: + NO EFFECTS +[from] Function main4: + t[0] FROM \nothing + [1..19] FROM \nothing (and SELF) + u[0..39] FROM \nothing (and SELF) +[from] Function main: + t[0] FROM \nothing + [1..19] FROM \nothing (and SELF) + u[0..39] FROM \nothing (and SELF) +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main1: + i; j +[inout] Inputs for function main1: + N; A[0..23] +[inout] Out (internal) for function main2: + i; j +[inout] Inputs for function main2: + N; B[0..25] +[inout] Out (internal) for function main3: + i; j; p +[inout] Inputs for function main3: + N; C[0..23] +[inout] Out (internal) for function main4: + t[0..19]; u[0..39]; i; j; maxi; maxj +[inout] Inputs for function main4: + \nothing +[inout] Out (internal) for function main: + t[0..19]; u[0..39] +[inout] Inputs for function main: + N; A[0..23]; B[0..25]; C[0..23] diff --git a/tests/value/oracle_symblocs/widen_on_non_monotonic.err.oracle b/tests/value/oracle_symblocs/widen_on_non_monotonic.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/widen_on_non_monotonic.res.oracle b/tests/value/oracle_symblocs/widen_on_non_monotonic.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..488649933b368dd56f19687781319ea83c1b208a --- /dev/null +++ b/tests/value/oracle_symblocs/widen_on_non_monotonic.res.oracle @@ -0,0 +1,53 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/widen_on_non_monotonic.i (no preprocessing) +tests/value/widen_on_non_monotonic.i:57:[kernel] warning: Calling undeclared function fn1. Old style K&R code? +tests/value/widen_on_non_monotonic.i:58:[kernel] warning: Calling undeclared function fn2. Old style K&R code? +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + a ∈ {0} + b ∈ {0} + c ∈ {0} + d ∈ {0} + u ∈ {0} + g ∈ {0} + i ∈ {0} + j ∈ {0} + k ∈ {0} +[value] computing for function main1 <- main. + Called from tests/value/widen_on_non_monotonic.i:71. +tests/value/widen_on_non_monotonic.i:25:[value] entering loop for the first time +tests/value/widen_on_non_monotonic.i:23:[value] entering loop for the first time +tests/value/widen_on_non_monotonic.i:26:[value] entering loop for the first time +tests/value/widen_on_non_monotonic.i:27:[value] warning: signed overflow. assert -2147483648 ≤ b-1; +[value] Recording results for main1 +[value] Done for function main1 +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main1: + NON TERMINATING FUNCTION +[value:final-states] Values at end of function main: + NON TERMINATING FUNCTION +[from] Computing for function main1 +[from] Non-terminating function main1 (no dependencies) +[from] Done for function main1 +[from] Computing for function main +[from] Non-terminating function main (no dependencies) +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main1: + NON TERMINATING - NO EFFECTS +[from] Function main: + NON TERMINATING - NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main1: + a; b; c; d +[inout] Inputs for function main1: + a{.f0[bits 0 to 15]; .f1[bits 0 to 15]; .f3}; b; c; d +[inout] Out (internal) for function main: + a; b; c; d +[inout] Inputs for function main: + a{.f0[bits 0 to 15]; .f1[bits 0 to 15]; .f3}; b; c; d diff --git a/tests/value/oracle_symblocs/widen_overflow.err.oracle b/tests/value/oracle_symblocs/widen_overflow.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/widen_overflow.res.oracle b/tests/value/oracle_symblocs/widen_overflow.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..c1036e883e7237aa4f130f9173f1dadf21ff110c --- /dev/null +++ b/tests/value/oracle_symblocs/widen_overflow.res.oracle @@ -0,0 +1,36 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/widen_overflow.i (no preprocessing) +tests/value/widen_overflow.i:9:[kernel] warning: Calling undeclared function u. Old style K&R code? +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] Called Frama_C_show_each({4}) +tests/value/widen_overflow.i:9:[value] entering loop for the first time +[value] computing for function u <- main. + Called from tests/value/widen_overflow.i:9. +tests/value/widen_overflow.i:9:[kernel] warning: Neither code nor specification for function u, generating default assigns from the prototype +[value] using specification for function u +[value] Done for function u +[value] computing for function u <- main. + Called from tests/value/widen_overflow.i:9. +[value] Done for function u +[value] computing for function u <- main. + Called from tests/value/widen_overflow.i:9. +[value] Done for function u +[value] computing for function u <- main. + Called from tests/value/widen_overflow.i:9. +[value] Done for function u +[value] computing for function u <- main. + Called from tests/value/widen_overflow.i:9. +[value] Done for function u +[value] computing for function u <- main. + Called from tests/value/widen_overflow.i:9. +[value] Done for function u +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + i ∈ [0..4294967294],0%2 + __retres ∈ {0} diff --git a/tests/value/oracle_symblocs/with_comment.err.oracle b/tests/value/oracle_symblocs/with_comment.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/with_comment.res.oracle b/tests/value/oracle_symblocs/with_comment.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..34e4f195bd7d08deeffc83b5c227b02e9e50c20e --- /dev/null +++ b/tests/value/oracle_symblocs/with_comment.res.oracle @@ -0,0 +1,28 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/with_comment.i (no preprocessing) +[value] Analyzing a complete application starting at main2 +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + HHH ∈ {0} + G ∈ {0} +tests/value/with_comment.i:20:[value] entering loop for the first time +tests/value/with_comment.i:21:[value] warning: signed overflow. assert G+1 ≤ 2147483647; +[value] Recording results for main2 +[value] done for function main2 +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main2: + i ∈ {11} + G ∈ [0..2147483647] +[from] Computing for function main2 +[from] Done for function main2 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main2: + G FROM \nothing + \result FROM \nothing +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main2: + i; j; G +[inout] Inputs for function main2: + G diff --git a/tests/value/oracle_symblocs/zerolengtharrays.err.oracle b/tests/value/oracle_symblocs/zerolengtharrays.err.oracle new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/value/oracle_symblocs/zerolengtharrays.res.oracle b/tests/value/oracle_symblocs/zerolengtharrays.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..ed1d3c08ae1a9ac3bb411d4ce8bc98a3fb4a2248 --- /dev/null +++ b/tests/value/oracle_symblocs/zerolengtharrays.res.oracle @@ -0,0 +1,26 @@ +[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing) +[kernel] Parsing tests/value/zerolengtharrays.i (no preprocessing) +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value:initial-state] Values of globals at initialization + +[value] Recording results for main +[value] done for function main +[value] ====== VALUES COMPUTED ====== +[value:final-states] Values at end of function main: + T[bits 0 to 31] ∈ {4} + [bits 32 to 63] ∈ {5} + [8..99] ∈ UNINITIALIZED + F ∈ {{ (struct foo *)&T }} +[from] Computing for function main +[from] Done for function main +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function main: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function main: + T[0..7]; F +[inout] Inputs for function main: + \nothing diff --git a/tests/value/paths.i b/tests/value/paths.i deleted file mode 100644 index d7552bd4e21017056c06ba87b4b09607d5368160..0000000000000000000000000000000000000000 --- a/tests/value/paths.i +++ /dev/null @@ -1,53 +0,0 @@ -/* run.config* - OPT: @VALUECONFIG@ -experimental-path-deps -deps -journal-disable -*/ -int a,b,c,d,e,i,d1,d2,d3,d4,X1,X2,X3,X4,X5,X; - -void f1(void) -{ - X = X1; - if (d1) X = X4; -} - -void f2(void) -{ - X = X2; -} - -void f3(void) -{ - X = X3; -} - -int f(int fx, int fy, int fz) -{ - d2 = fx; - if (fy) i++; - return d3; -} - -void (*t[3])(void)={f1, f2, f3}; - -/*@ assigns \result \from x ; */ -int unknownfun(int x); - -int main(int r,int s,int u,int v,int w,int x,int y,int z,int ww){ - d1 = x; - c = u?a:b; - d = b + v; - d4 = unknownfun(ww); - if (d4) - i++; - r++; - if (d) - a=1; - (t[w])(); - if (X) - i++; - d3 = z; - if (f(y,s,r)) - i++; - if (d2) - i++; - return 0; -} diff --git a/tests/value/simplify_cfg.i b/tests/value/simplify_cfg.i index aba29b4bd073f1b5f6dd7765297840516858aba5..7ddcf35884c82a9e03fe12594693db5ca1f40340 100644 --- a/tests/value/simplify_cfg.i +++ b/tests/value/simplify_cfg.i @@ -1,6 +1,6 @@ /* run.config* - OPT: -simplify-cfg -keep-switch -val @VALUECONFIG@ -check -journal-disable - OPT: -simplify-cfg -val @VALUECONFIG@ -check -journal-disable + OPT: -simplify-cfg -keep-switch -val @VALUECONFIG@ -journal-disable + OPT: -simplify-cfg -val @VALUECONFIG@ -journal-disable */ int main(int x, int y) { diff --git a/tests/value/struct3.i b/tests/value/struct3.i index 388dc00ed9a21615d10250491b824a1d0732f9b8..1812cb33a02b021d48ca4a23f8e74af070990544 100644 --- a/tests/value/struct3.i +++ b/tests/value/struct3.i @@ -1,3 +1,7 @@ +/* run.config* + STDOPT: +"-value-msg-key garbled-mix" +*/ + struct st1 { int a; int *b; @@ -19,7 +23,7 @@ struct st2 tab_s2[2]; struct st2 tab_s3[2]; struct st2 tab_s4[2]; -struct st2 s1,s2,s4,s5,s6; +struct st2 s1,s2; struct st1 s8,s7; volatile int v; @@ -36,4 +40,8 @@ void main () { s1.d[9] = 2; if (v) s1.d[10] = 2; + + s2 = s1; // Creates a garbled mix internally; make sure not to log it + + s2.a = s2.c + (int) s2.c; // creates a garbled mix in the struct } diff --git a/tests/value/switch2.i b/tests/value/switch2.i index f5d69a9daeb97d489aaa632a22dc67c6d0fb22ed..d485215334b73c4bbaf7cf8c9841d6e2652c7aa6 100644 --- a/tests/value/switch2.i +++ b/tests/value/switch2.i @@ -1,5 +1,5 @@ /*run.config* - STDOPT: #"-simplify-cfg -check" + STDOPT: #"-simplify-cfg" */ int f(int x) { return x+1; } diff --git a/tests/value/symbolic_locs.i b/tests/value/symbolic_locs.i new file mode 100644 index 0000000000000000000000000000000000000000..51c309a3ceee2e9ed7acff14ec29a315c76ef9fa --- /dev/null +++ b/tests/value/symbolic_locs.i @@ -0,0 +1,77 @@ +/* run.config* + STDOPT: +"-value-msg-key d-symblocs" +*/ + +volatile v; +int t[10]; extern u[10]; + +void main1() { + unsigned int i = v; + int k = v; + + t[i] = 3; + t[i] = t[i]+1; // The equality domain loses information here + u[k] = t[i] + 2; Frama_C_dump_each(); + int j = t[i] + u[k]; + + int *p = &t[i]; Frama_C_dump_each(); + int q = *p+1; // Does not write without adding something here, because otherwise we do a copy... + + if (u[i]+12 < 18) { + Frama_C_dump_each(); + + int iz = u[i]+11; + } +} + + +void main2_kill_direct() { + unsigned int i = v; //@ assert i <= 8; + + t[i] = 4; + Frama_C_dump_each(); + t[2] = 1; + Frama_C_dump_each(); // t written, should be empty. Could be improved by + // detecting we write exactly in the location stored, + // and joining the current and previous value. + // Can be done syntactically on the lvalue +} + +void main3_kill_indirect() { + unsigned int i = v; //@ assert i <= 8; + + t[i] = 4; + Frama_C_dump_each(); + i = 8; + Frama_C_dump_each(); // i written, should be empty +} + + +void main4_scope_right() { + unsigned int i = v; //@ assert i <= 8; + { + int x; + t[i] = &x; + Frama_C_dump_each(); + } + Frama_C_dump_each(); // Should be empty, x out-of-scope +} + +void main5_scope_lv() { + int z = 1; + { + unsigned int i = v; //@ assert i <= 8; + t[i] = z; + Frama_C_dump_each(); + } + Frama_C_dump_each(); // Should be empty, i out-of-scope +} + +void main() { + // if (v) main1(); + if (v) main2_kill_direct(); + if (v) main3_kill_indirect(); + if (v) main4_scope_right(); + if (v) main5_scope_lv(); + Frama_C_dump_each(); // empty +}