Skip to content
Snippets Groups Projects
Commit ca9b0378 authored by Julien Signoles's avatar Julien Signoles
Browse files

[E-ACSL] fixing typos in the manual

parent 299e6d62
No related branches found
No related tags found
No related merge requests found
...@@ -16,7 +16,7 @@ of commercial supports\footnote{Contact us or read ...@@ -16,7 +16,7 @@ of commercial supports\footnote{Contact us or read
As explained in Section~\ref{sec:runtime-error}, the \eacsl plug-in should never As explained in Section~\ref{sec:runtime-error}, the \eacsl plug-in should never
translate an annotation into a \C code which can lead to a runtime error. That translate an annotation into a \C code which can lead to a runtime error. That
is the case, except for unitialized values which are values read before having is the case, except for uninitialized values which are values read before having
been written like in the following example. been written like in the following example.
\listingname{uninitialized.i} \listingname{uninitialized.i}
...@@ -41,8 +41,8 @@ Actually that is more a design choice that a limitation: if the \eacsl plug-in ...@@ -41,8 +41,8 @@ Actually that is more a design choice that a limitation: if the \eacsl plug-in
would generate additional instrumentation to prevent such values to be executed, would generate additional instrumentation to prevent such values to be executed,
the generated code would be much more verbose and much slower. the generated code would be much more verbose and much slower.
If you really want to track such unitializations in your annotation, you have to If you really want to track such uninitializations in your annotation, you have
manually add calls to the \eacsl predicate to manually add calls to the \eacsl predicate
\lstinline|\initialized|~\cite{eacsl}. \lstinline|\initialized|~\cite{eacsl}.
\section{Incomplete Programs} \section{Incomplete Programs}
...@@ -113,7 +113,7 @@ freed: \valid(x). ...@@ -113,7 +113,7 @@ freed: \valid(x).
The generated program is incorrect for every program which contains a The generated program is incorrect for every program which contains a
memory-related annotation $a$ and a function $f$ without code if and only if: memory-related annotation $a$ and a function $f$ without code if and only if:
\begin{itemize} \begin{itemize}
\item either $f$ has an (even indirect) effect on a left-value occuring in $a$; \item either $f$ has an (even indirect) effect on a left-value occurring in $a$;
\item or $a$ is one of the post-condition of $f$. \item or $a$ is one of the post-condition of $f$.
\end{itemize} \end{itemize}
......
File suppressed by a .gitattributes entry or the file's encoding is unsupported.
...@@ -202,7 +202,7 @@ this execution. ...@@ -202,7 +202,7 @@ this execution.
\section{Execution Environment of the Generated Code} \section{Execution Environment of the Generated Code}
\label{sec:exec-env} \label{sec:exec-env}
The environment in which the code is executed is not necesseraly the same than The environment in which the code is executed is not necessarily the same than
the one assumed by \framac. You must take care of that when running the \eacsl the one assumed by \framac. You must take care of that when running the \eacsl
plug-in and when compiling the generated code with \gcc. Also, the plug-in plug-in and when compiling the generated code with \gcc. Also, the plug-in
offers you few possibilities of customization. offers you few possibilities of customization.
...@@ -220,7 +220,7 @@ expression $e$ is undefined if $e$ leads to a runtime error and, consequently, ...@@ -220,7 +220,7 @@ expression $e$ is undefined if $e$ leads to a runtime error and, consequently,
the semantics of any term $t$ (resp. predicate $p$) containing such an the semantics of any term $t$ (resp. predicate $p$) containing such an
expression $e$ is undefined as soon as $e$ has to be evaluated in order to expression $e$ is undefined as soon as $e$ has to be evaluated in order to
evaluate $t$ (resp. $p$). The \eacsl Reference Manual also states that evaluate $t$ (resp. $p$). The \eacsl Reference Manual also states that
\emph{``it is the responsability of the tools which interprets \eacsl to ensure \emph{``it is the responsibility of the tools which interprets \eacsl to ensure
that an undefined term is never evaluated''}~\cite{eacsl}. that an undefined term is never evaluated''}~\cite{eacsl}.
Accordingly, the \eacsl plug-in prevents undefined term to be evaluated. If it Accordingly, the \eacsl plug-in prevents undefined term to be evaluated. If it
...@@ -427,7 +427,7 @@ mem_access: \valid_read(x). ...@@ -427,7 +427,7 @@ mem_access: \valid_read(x).
\end{shell} \end{shell}
The option \optiondef{-}{e-acsl-full-mmodel} (unset by default) may be set to The option \optiondef{-}{e-acsl-full-mmodel} (unset by default) may be set to
always instrumente the code for handline potential memory-related annotations, always instrument the code for handling potential memory-related annotations,
even when it is not required. If it is set, the generated program must be always even when it is not required. If it is set, the generated program must be always
linked against the memory library. linked against the memory library.
...@@ -578,12 +578,12 @@ the beginning of this manual may overflow in case of big exponentiations. ...@@ -578,12 +578,12 @@ the beginning of this manual may overflow in case of big exponentiations.
As the \eacsl plug-in generates a new \framac project, it is easy to run any As the \eacsl plug-in generates a new \framac project, it is easy to run any
plug-in on the generated program, either in the same \framac session (thanks to plug-in on the generated program, either in the same \framac session (thanks to
the option \optionuse{-}{then} or through the GUI), or in another one. The only the option \optionuse{-}{then} or through the GUI), or in another one. The only
issue might be that, depending on the plug-in, the analysis may be unperfect if issue might be that, depending on the plug-in, the analysis may be imperfect if
the generated program uses \gmp or the dedicated memory library: both the generated program uses \gmp or the dedicated memory library: both
intensively use dynamic structures which are usually difficult to handle by intensively use dynamic structures which are usually difficult to handle by
analysis tools. analysis tools.
Another way to combine \eacsl with others plug-ins is to run \eacsl afterwards. Another way to combine \eacsl with others plug-ins is to run \eacsl afterward.
For instance, the \rte plug-in~\cite{rte} may be used to generate annotations For instance, the \rte plug-in~\cite{rte} may be used to generate annotations
corresponding to runtime errors. Then the \eacsl plug-in may generate an corresponding to runtime errors. Then the \eacsl plug-in may generate an
instrumented program to verify that there is no such runtime errors during the instrumented program to verify that there is no such runtime errors during the
...@@ -603,7 +603,7 @@ are potential overflows in this case), just do: ...@@ -603,7 +603,7 @@ are potential overflows in this case), just do:
\end{shell} \end{shell}
Nevertheless if you run the \eacsl plug-in after another one, it first generates Nevertheless if you run the \eacsl plug-in after another one, it first generates
a new temporary project in which it links the analysed program against its own a new temporary project in which it links the analyzed program against its own
library in order to generate the \framac internal representation of the \C library in order to generate the \framac internal representation of the \C
program (\emph{aka} AST), as explained in Section~\ref{sec:run}. Consequently, program (\emph{aka} AST), as explained in Section~\ref{sec:run}. Consequently,
even if the \eacsl plug-in keeps the maximum amount of information, results of even if the \eacsl plug-in keeps the maximum amount of information, results of
...@@ -612,10 +612,10 @@ known in this new project. If you want to keep them, you have to set the option ...@@ -612,10 +612,10 @@ known in this new project. If you want to keep them, you have to set the option
\optiondef{-}{e-acsl-prepare} when the first analysis is asked for. \optiondef{-}{e-acsl-prepare} when the first analysis is asked for.
In this context, the \eacsl plug-in does not generate code for annotations In this context, the \eacsl plug-in does not generate code for annotations
proven valid by another plug-in, except if you explicitely set the option proven valid by another plug-in, except if you explicitly set the option
\optiondef{-}{e-acsl-valid}. For instance, \valueplugin~\cite{value} is able to \optiondef{-}{e-acsl-valid}. For instance, \valueplugin~\cite{value} is able to
prove that there is no potential overflow in the previous program, so the \eacsl prove that there is no potential overflow in the previous program, so the \eacsl
plugin does not generate additional code for checking them if you run the plug-in does not generate additional code for checking them if you run the
following command. following command.
\begin{shell} \begin{shell}
\$ frama-c -e-acsl-prepare -rte combine.i -then -val -then -e-acsl \ \$ frama-c -e-acsl-prepare -rte combine.i -then -val -then -e-acsl \
...@@ -628,7 +628,7 @@ The additional code will be generated with one of the two following commands. ...@@ -628,7 +628,7 @@ The additional code will be generated with one of the two following commands.
\$ frama-c -rte combine.i -then -val -then -e-acsl \ \$ frama-c -rte combine.i -then -val -then -e-acsl \
-then-on e-acsl -print -ocode monitored_combine.i -then-on e-acsl -print -ocode monitored_combine.i
\end{shell} \end{shell}
In the first case, that is because it is explicitely required by the option In the first case, that is because it is explicitly required by the option
\texttt{-e-acsl-valid} while, in the second case, that is because the option \texttt{-e-acsl-valid} while, in the second case, that is because the option
\texttt{-e-acsl-prepare} is not provided on the command line which results in \texttt{-e-acsl-prepare} is not provided on the command line which results in
the fact that the result of the value analysis are unknown when the \eacsl the fact that the result of the value analysis are unknown when the \eacsl
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment