blob: d382dedea0285299597fdb0a93e227842fc9ea34 [file] [log] [blame]
%%=============================================================================
\section{Layout}
\label{section:layout}
%%=============================================================================
The SAFECode analysis and transformtion sources are organized as follows:
\begin{enumerate}
\item{{\tt lib/ArrayBoundChecks}:}
This library contains several analysis passes for static array bounds
checking.
\item{{\tt lib/InsertPoolChecks}:}
This library contains the transform passes for inserting run-time
checks and for inserting code to register memory objects within
individual pools. It also contains the CompleteChecks pass which
implements the Check Completion Phase.
\item{{\tt lib/OptimizeChecks}:}
This library contains several passes for optimizing run-time checks.
\item{{\tt lib/RewriteOOB}:}
This library contains passes for implementing Ruwase/Lam pointer
rewriting. This code allows SAFECode to tolerate out-of-bounds pointers
that are never dereferenced.
\item{{\tt lib/DebugInstrumentation}:}
This library implements code that modifies run-time checks to contain
additional debug information (if such debug information is present in the
program). It is used in SAFECode's debug tool mode.
\item{{\tt lib/DanglingPointers}:}
This library contains a pass that modifies a program to perform
dangling pointer detection.
\end{enumerate}
SAFECode also contains a few run-time libraries that are linked into
programs:
\begin{enumerate}
\item{{\tt runtime/BitmapPoolAllocator}:}
This run-time library implements a pool memory allocator for SAFECode.
\item{{\tt runtime/DebugRuntime}:}
This run-time library implements the run-time checks used by SAFECode.
Despite the name, it currently contains implementations of both the
producation and debug mode run-time checks.
\end{enumerate}