<div dir="ltr">Thank you! I 'll check this out too.<br></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Apr 28, 2014 at 10:30 PM, John Criswell <span dir="ltr"><<a href="mailto:criswell@illinois.edu" target="_blank">criswell@illinois.edu</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  
    
  
  <div bgcolor="#FFFFFF" text="#000000">
    <div>Dear Petsas,<br>
      <br>
      For analyzing indirect function calls, your best bet is probably
      to use the CallGraph analysis pass that is part of DSA.  DSA is
      included in the poolalloc code; you can get directions on
      downloading poolalloc from the SVA web page:
      <a href="http://sva.cs.illinois.edu/docs/Install.html" target="_blank">http://sva.cs.illinois.edu/docs/Install.html</a>.<br>
      <br>
      The release_32 branch works with LLVM 3.2.  I think mainline
      poolalloc was recently updated to work with LLVM 3.4.<br>
      <br>
      Regards,<br>
      <br>
      John Criswell<div><div class="h5"><br>
      <br>
      <br>
      On 4/28/14 8:10 AM, Petsas Athanasios wrote:<br>
    </div></div></div>
    <blockquote type="cite"><div><div class="h5">
      
      <div dir="ltr">
        <div>
          <div>
            <div>
              <div>
                <div>
                  <div>
                    <div>Dear all,<br>
                      <br>
                    </div>
                    I would like to keep track of all the indirect calls
                    that may caused from function<br>
                  </div>
                  pointers inside a program. I need this in order to be
                  able to construct the control<br>
                </div>
                flow graph of all the indirect calls, that is which
                function is legal to call another<br>
              </div>
              function.<br>
              <br>
            </div>
            Is there a module that implements this functionality in
            llvm? If not, is there a way to<br>
            do it? Maybe through implementing a pass. I am new to llvm.
            Could you suggest me<br>
          </div>
          <div>a way to start doing this? Perhaps the llvm intermediate
            code can help me on this.<br>
          </div>
          <div>Do you know where this code is being produced? or what
            files or passes do I have<br>
          </div>
          <div>to modify for this?<br>
            <br>
          </div>
          <div>Until now I have used this command to produce and study
            the llvm bitcode for a test<br>
            program:<br>
            clang -S -emit-llvm fpointers.c -c -o fpointers.bc.text<br>
            <br>
          </div>
          <div>Thank you,<br>
          </div>
          <div><br>
            <div>
              <div>
                <div>
                  <div>
                    <div>-- <br>
                      <font color="#888888"><font face="Helvetica,
                          Verdana, Arial"><span style="font-size:11pt"><font color="#888888"><span>Thanasis</span> <span>Petsas</span>
                              <div>
                                Distributed Computing Systems (<span>DCS</span>)<br>
                                Institute of Computer Science
                                (ICS/FORTH)<br>
                                Heraklion, Crete<br>
                                <span>Greece</span> (GR)<br>
                                <br>
                                <font color="#888888"><font face="Helvetica, Verdana, Arial"><span style="font-size:11pt"><font color="#888888"><a href="http://www.thanasispetsas.com/" target="_blank">http://www.thanasispetsas.com/</a></font></span></font></font><br>

                              </div>
                            </font></span></font></font>
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
      <br>
      <fieldset></fieldset>
      <br>
      </div></div><div class=""><pre>_______________________________________________
LLVM Developers mailing list
<a href="mailto:LLVMdev@cs.uiuc.edu" target="_blank">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a>
</pre>
    </div></blockquote>
    <br>
  </div>

</blockquote></div><br><br clear="all"><br>-- <br><font color="#888888"><font face="Helvetica, Verdana, Arial"><span style="font-size:11pt"><font color="#888888"><span>Thanasis</span> <span>Petsas</span><div>
Distributed Computing Systems (<span>DCS</span>)<br>
Institute of Computer Science (ICS/FORTH)<br>
Heraklion, Crete<br>
<span>Greece</span> (GR)<br><br><font color="#888888"><font face="Helvetica, Verdana, Arial"><span style="font-size:11pt"><font color="#888888"><a href="http://www.thanasispetsas.com/" target="_blank">http://www.thanasispetsas.com/</a></font></span></font></font><br>
</div></font></span></font></font>
</div>