<-- home

Google Summer of Code 2016 Weekly Report #2

This is to brief you the progress of week June 13. Following is what I finished this week,

  1. Add a prohibted function list to CFIChecks pass, which will make the pass ignore SAFECode runtime functions when create TargetList global. [1]

  2. Add a template style registerExternal switch to RegisterGlobalVariables pass. When registerExternal is set to true, RegisterGlobalVariable will generate register functions for external variable (for debug_runtime). If registerExternal is set to false, RegisterGlobalVariable pass will not generate for external variable. [2][3]

  3. Make InstrumentMemoryAccess’s doInitialization insert the __storecheck prototype and the __loadcheck prototype to llvm.compiler.used global, to make them survive from llvm optimizations. [4]

  4. Implementated a PromoteArrayAllocas pass. This pass will translate array allocas to malloc calls. This supports the padded variable-length memory allocation. [5]

This week’s plan:

  1. Test SAFECode’s bbac implementation on more real-world programs, and fix possible crashes.

  2. Make transformed array allocas carry meta-data on the last of the padding area.

[1] https://github.com/zhengyangl/safecode-llvm37/commit/b324534fca14d684ecef8981384002bf0ef6ea32

[2] https://github.com/zhengyangl/safecode-llvm37/commit/4b353ff9da1b2c61c709af99f3ade5b1c8d086e9

[3] https://github.com/zhengyangl/safecode-llvm37/commit/010a70d060a4a1942f58998c5fa6e83b0abf6156

[4] https://github.com/zhengyangl/safecode-llvm37/commit/ca1c707f1ae3b4acc2af1ffa160df9ebc6697a39

[5] https://github.com/zhengyangl/safecode-llvm37/commit/a6746c54c1d6e162dac716588465148d581916e9