<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">On 12/29/16 3:52 AM, Muhui Jiang via
      llvm-dev wrote:<br>
    </div>
    <blockquote
cite="mid:CAF_eCeruYcNty3aXSA5HgcfTTG7z5pKmtjQtLByWPsqWJwZRBg@mail.gmail.com"
      type="cite">
      <div dir="ltr">Hi
        <div><br>
        </div>
        <div>I hope this is the right mailing list to ask some questions
          related to the llvm. I am new to llvm and I decided to use
          llvm to conduct static analysis of the linux kernel( mostly on
          the TCP/IP stack). One thing is that whether llvm support
          static taint analysis. Could you please give me some examples
          if you have or do I have to implement it by myself. If so, any
          suggestions available?  <br>
        </div>
      </div>
    </blockquote>
    <br>
    To the best of my knowledge, there is no static information flow
    analysis for LLVM IR.  There might be a taint analysis for Clang
    ASTs, but someone else will need to comment on that.  For LLVM IR,
    you'll need to write your own.<br>
    <br>
    <br>
    <blockquote
cite="mid:CAF_eCeruYcNty3aXSA5HgcfTTG7z5pKmtjQtLByWPsqWJwZRBg@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div><br>
        </div>
        <div>My requirements is to do some model checking and pattern
          checking on the linux source code and static taint analysis
          might solve it. Thanks</div>
      </div>
    </blockquote>
    <br>
    Taint analysis through SSA values should be relatively
    straightforward to implement; the in-memory LLVM IR provides
    iterators that allow you to iterate through all uses of a value.<br>
    <br>
    Taint analysis through values stored in memory (e.g., loads, stores)
    will require alias analysis or points-to analysis.  For that, you
    might try Type-Based Alias Analysis (TBAA) or DSA.  TBAA is included
    with LLVM.  DSA is in a sub-project; an updated version can be found
    at <a class="moz-txt-link-freetext" href="https://github.com/jtcriswell/llvm-dsa">https://github.com/jtcriswell/llvm-dsa</a>.<br>
    <br>
    Regards,<br>
    <br>
    John Criswell<br>
    <br>
    <br>
    <blockquote
cite="mid:CAF_eCeruYcNty3aXSA5HgcfTTG7z5pKmtjQtLByWPsqWJwZRBg@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div><br>
        </div>
        <div>Regards</div>
        <div>Muhui</div>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
LLVM Developers mailing list
<a class="moz-txt-link-abbreviated" href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>
<a class="moz-txt-link-freetext" href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a>
</pre>
    </blockquote>
    <br>
    <p><br>
    </p>
    <pre class="moz-signature" cols="72">-- 
John Criswell
Assistant Professor
Department of Computer Science, University of Rochester
<a class="moz-txt-link-freetext" href="http://www.cs.rochester.edu/u/criswell">http://www.cs.rochester.edu/u/criswell</a></pre>
  </body>
</html>