<div dir="ltr">I think the CSI framework, or something like it, could be helpful for some work I'm trying to do regarding dynamic memory analysis: given a C/C++ program in which certain l-value expressions are marked as "interesting", invoke my analysis callback every time that memory is written.<div><br></div><div>Of the options I've looked at for implementing this, it sounds like CSI might be my best bet.  (Factors include license terms, performance of the instrumented app, and how much time it would take me to create such a tool.)</div><div><br></div><div>- Christian</div><div><br></div><div><br></div><div><div class="gmail_extra"><div class="gmail_quote">On Thu, Jun 16, 2016 at 12:01 PM, TB Schardl via llvm-dev <span dir="ltr"><<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div dir="ltr"><span><p style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:14.6667px;font-family:Arial;color:rgb(0,0,0);vertical-align:baseline;white-space:pre-wrap;background-color:transparent">Hey LLVM-dev,</span></p><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:14.6667px;font-family:Arial;color:rgb(0,0,0);vertical-align:baseline;white-space:pre-wrap;background-color:transparent"><br></span></p><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:14.6667px;font-family:Arial;color:rgb(0,0,0);vertical-align:baseline;white-space:pre-wrap;background-color:transparent">We propose to build the CSI framework to provide a comprehensive suite of compiler-inserted instrumentation hooks that dynamic-analysis tools can use to observe and investigate program runtime behavior.  Traditionally, tools based on compiler instrumentation would each separately modify the compiler to insert their own instrumentation.  In contrast, CSI inserts a standard collection of instrumentation hooks into the program-under-test.  Each CSI-tool is implemented as a library that defines relevant hooks, and the remaining hooks are "nulled" out and elided during link-time optimization (LTO), resulting in instrumented runtimes on par with custom instrumentation.  CSI allows many compiler-based tools to be written as simple libraries without modifying the compiler, greatly lowering the bar for</span></p><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:14.6667px;font-family:Arial;color:rgb(0,0,0);vertical-align:baseline;white-space:pre-wrap;background-color:transparent">developing dynamic-analysis tools.</span></p></span></div></blockquote><div><br></div><div><br></div><div><br></div></div></div></div></div>