Liu Jian wrote:>
> How about state of SVA (Secure Virutal Archtecture)? It seems there is no
> any demo or prototype produced.
The memory safety compiler upon which SVA is based (the SAFECode
compiler) is now publicly available. Please see
http://safecode.cs.illinois.edu for information and directions on
downloading it. Questions about the code can be asked on the SVA
Developer's mailing list (svadev at cs.illinois.edu).
The SAFECode compiler currently has initial support for the upcoming
LLVM 2.7 release (on mainline SVN) and LLVM 2.6 (in the release_26
branch). The transforms used for user-space and kernel code are very
similar, so if you want to look at the code, it's there.
The SVA specific code that we used for the SVA publications is also
available. Use the see branch
(https://llvm.org/svn/llvm-project/safecode/branches/see) to get that
code. This code is very old and only works with LLVM 1.9. The branch
includes the LLVM transforms used for memory safety (which are just
modifications of the SAFECode passes) plus the runtime library used to
implement load/store checks, array indexing checks, and alignment
checks. I think it may even contain the code for the safety checks on
the SVA-OS instructions (as described in our Usenix Security 2009 paper).
There are two components that have not been publicly released yet:
1) The Execution Engine. This is the run-time library that implements
the additional "instructions" we added to LLVM to support the Linux
kernel itself (like sva_swap_integer, sva_load_io, sva_compare_and_swap,
etc.).
2) The port of the Linux 2.4 kernel to SVA. This is the Linux source
code with modifications to use the SVA instructions instead of inline
assembly code.
We have, in the past, given the above SVA components to people doing
research. If you need it for a research project, please let me know; I
can talk to my advisor and see if we can give you a copy.
-- John T.
>
> Cheers,
>
> Liu Jian
> ----
> email to: gjk.liu at gmail.com <mailto:gjk.liu at gmail.com>