Abstract
The purpose of the SAFCode project is to enable program safety without garbage collection and with minimal run-time checks using static analysis when possible and run-time checks when necessary. However, It has not been maintained well over several years and has fallen into disuse. As a result, it’s quite necessary to update the array bounds checking ability of the project to the new LLVM API.
Benefits to LLVM and LLVMers
The SAFCode project is an import application based on LLVM, and it offers LLVM with memory access safety. Because it can guarantee the program safety without garbage collection and with minimal run-time checks using static analysis, it can run with little over load, and can be used in realistic program safety checking. SAFCode offers an excellent algorithm to implement the safety checking, if I can update it to the new LLVM API, more and more people will concentrate on the project, and do more contribution on the safety checking algorithm. I am sure it is a win-win outcome for LLVM and the relevant researchers.
Deliverables
In my project, I will deliver (a) the source code of SAFCode project updated to the new LLVM API, (b) a document about the changed API, and (c) the benchmarks and the corresponding outcome.
Project Details
The SAFCode project has the ability to check pointer, array, stack, dangling pointers, and etc. Because the project has not been maintained within several years, I must check up all the source files, update them to the new API of LLVM, and guarantee the right implementation on the realistic programs.