[LLVMdev] Request for Review: SAFECode Patch
John Criswell
criswell at illinois.edu
Thu Jun 23 11:18:53 PDT 2011
Dear All,
I've developed a patch for mainline LLVM that integrates parts of the
SAFECode memory safety compiler (http://sva.cs.illinois.edu) into LLVM.
The patch includes transforms that add run-time safety checks to loads
and stores and GetElementPtr instructions, a run-time library that
implements the checks, a transform that enhances the run-time checks
with source file debugging information (essentially making the compiler
a valgrind-like tool), and one of the simpler but more critical run-time
check optimization passes.
Working under the assumption that people are interested in memory safety
transforms being in LLVM, we'd like to integrate this code into LLVM and
would like to know if someone is willing to review the patch and provide
feedback. I have commit access already, so I can commit the code myself
provided that it passes review.
The patch is available as a tar archive at
http://llvm.cs.uiuc.edu/~criswell/sc.tar.gz and can be extracted into
the top-level LLVM source tree (*). I have also created two new test
Makefiles for the test-suite that run the transforms on programs in the
LLVM test suite; those can be found (as a regular patch to test-suite)
at http://llvm.cs.uiuc.edu/~criswell/patch.
BTW, there are more optimizations and other code from SAFECode that we'd
like to integrate (including some memory safety check optimizations, the
simple static array bounds checking passes, and the control-flow
integrity pass), but I wanted to start with a small initial patch and
work from there.
-- John T.
(*) I apologize for not creating a normal "diff" patch; I used svn copy
to preserve the revision history when moving files from the SAFECode
source tree to my LLVM working directory; a side effect of this is that
the result of "svn diff" merely shows what changed relative to the
original source files in the SAFECode source tree and not the
differences relative to the LLVM source tree.
More information about the llvm-dev
mailing list