Where is the SVA code located?


Is the SVA codebase publically available, and if so, where can I find it?


It depends upon which part of SVA you want.

The memory safety analysis and transform passes are publicly available in the SAFECode and Automatic Pool Allocation source code repositories. Directions on accessing SAFECode’s SVN repository can be found here: . This code that we used in our two SVA papers was done with LLVM 1.9 and is in the release_19 branches of the safecode and poolalloc projects. We have not maintained that code, so I doubt you’ll find it useful. The transforms used for user-space applications is maintained and works with LLVM 2.7 (this is mainline safecode and poolalloc). In addition, we are moving some parts of SAFECode (those that don’t rely on DSA) into LLVM mainline. There is currently a patch pending review; it essentially provides Jones-Kelley/Ruwase-Lam style memory safety with some optional debug information support. We’ll add in more non-DSA based optimizations after the initial patch is reviewed. The DSA-based optimizations will become part of a special libLTO that will reside out of mainline LLVM for the time being. The second component of SVA is the virtual instruction set implementation which comes as two parts: SVA and SVA-OS. SVA is just LLVM, and so that is publicly available. SVA-OS is the set of instructions that abstract away the operations like context switching and MMU configuration; the run-time library implementation of SVA-OS and the port of the Linux kernel to SVA-OS is not currently available publicly as we have not yet had time to polish them up a bit, and with LLVM’s ability to handle inline assembly code, there’s less need for them by the LLVM community. If you need this code for research, please let me know off-list; I can ask my advisor if we can provide a copy to you. – John T.