<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
Dear LLVM and SVA community:<br>
<div class="moz-forward-container"><br>
This is to brief you the progress of this week. Following is what I finished this week,<br>
<br>
<blockquote>1. Add a prohibted function list to CFIChecks pass, which will make the pass ignore SAFECode runtime functions when create TargetList global. [1]<br>
<br>
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]<br>
<br>
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]<br>
<br>
4. Implementated a PromoteArrayAllocas pass. This pass will translate array allocas to malloc calls. This supports the padded variable-length memory allocation. [5]<br>
</blockquote>
<br>
This week's plan:<br>
<br>
<blockquote>1. Test SAFECode’s bbac implementation on more real-world programs, and fix possible crashes.<br>
<br>
2. Make transformed array allocas carry meta-data on the last of the padding area.<br>
<br>
</blockquote>
Best regards,<br>
Zhengyang.<br>
<br>
<br>
[1] <a moz-do-not-send="true" class="moz-txt-link-freetext" href="https://github.com/zhengyangl/safecode-llvm37/commit/b324534fca14d684ecef8981384002bf0ef6ea32">
https://github.com/zhengyangl/safecode-llvm37/commit/b324534fca14d684ecef8981384002bf0ef6ea32</a><br>
[2] <a moz-do-not-send="true" class="moz-txt-link-freetext" href="https://github.com/zhengyangl/safecode-llvm37/commit/4b353ff9da1b2c61c709af99f3ade5b1c8d086e9">
https://github.com/zhengyangl/safecode-llvm37/commit/4b353ff9da1b2c61c709af99f3ade5b1c8d086e9</a><br>
[3] <a moz-do-not-send="true" class="moz-txt-link-freetext" href="https://github.com/zhengyangl/safecode-llvm37/commit/010a70d060a4a1942f58998c5fa6e83b0abf6156">
https://github.com/zhengyangl/safecode-llvm37/commit/010a70d060a4a1942f58998c5fa6e83b0abf6156</a><br>
[4] <a moz-do-not-send="true" class="moz-txt-link-freetext" href="https://github.com/zhengyangl/safecode-llvm37/commit/ca1c707f1ae3b4acc2af1ffa160df9ebc6697a39">
https://github.com/zhengyangl/safecode-llvm37/commit/ca1c707f1ae3b4acc2af1ffa160df9ebc6697a39</a><br>
[5] <a moz-do-not-send="true" class="moz-txt-link-freetext" href="https://github.com/zhengyangl/safecode-llvm37/commit/a6746c54c1d6e162dac716588465148d581916e9">
https://github.com/zhengyangl/safecode-llvm37/commit/a6746c54c1d6e162dac716588465148d581916e9</a><br>
<br>
</div>
<br>
</body>
</html>