[LLVMdev] indirect calls tracking and control flow graph

John Criswell criswell at illinois.edu
Mon May 5 11:34:10 PDT 2014


Dear Petsas,

I personally haven't used Poolalloc/DSA with anything after LLVM 3.2 or 
later.  Others have applied patches to get it to work with newer 
versions of LLVM.

That said, after speaking with Will, it looks like poolalloc trunk was 
patched to work with LLVM trunk.  Therefore, my best recommendation is 
to either:

1) Switch to LLVM trunk and try it with poolalloc trunk.  It may or may 
not work, depending on how much LLVM trunk has changed.

2) Switch to using the release_32 branch of both LLVM and Poolalloc.  
Unless you need newer LLVM features, I'd go this route as LLVM 3.2 isn't 
changing anymore. :)

-- John T.


On 5/4/14 5:52 AM, Petsas Athanasios wrote:
> Thank you,
>
> I tried to compile it with llvm 3.4 through these commands:
>
>
> petsas at shinigami:~/software/poolalloc$ ./configure 
> --with-llvmsrc=/home/petsas/software/llvm 
> --with-llvmobj=/home/petsas/software/llvm
>
> petsas at shinigami:~/software/poolalloc$ make
>
> but I'm getting get this error:
>
> make[1]: Entering directory `/home/petsas/software/poolalloc/lib'
> make[2]: Entering directory `/home/petsas/software/poolalloc/lib/DSA'
> llvm[2]: Compiling CallTargets.cpp for Debug+Asserts build (PIC)
> CallTargets.cpp:35:3: error: use of undeclared identifier 'DEBUG_TYPE'
>   STATISTIC (DirCall, "Number of direct calls");
>   ^
> /home/petsas/software/llvm/include/llvm/ADT/Statistic.h:165:38: note: 
> expanded from macro 'STATISTIC'
>   static llvm::Statistic VARNAME = { DEBUG_TYPE, DESC, 0, 0 }
>                                      ^
> CallTargets.cpp:36:3: error: use of undeclared identifier 'DEBUG_TYPE'
>   STATISTIC (IndCall, "Number of indirect calls");
>   ^
> ...
>
> Any ideas?
>
>
> On Fri, May 2, 2014 at 5:53 PM, John Criswell <criswell at illinois.edu 
> <mailto:criswell at illinois.edu>> wrote:
>
>     On 5/2/14, 9:49 AM, Petsas Athanasios wrote:
>>
>>
>>
>>     On Mon, Apr 28, 2014 at 10:30 PM, John Criswell
>>     <criswell at illinois.edu <mailto:criswell at illinois.edu>> wrote:
>>
>>         Dear Petsas,
>>
>>         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:
>>         http://sva.cs.illinois.edu/docs/Install.html.
>>
>>         The release_32 branch works with LLVM 3.2.  I think mainline
>>         poolalloc was recently updated to work with LLVM 3.4.
>>
>>
>>     Do you know where I can find mainline poolalloc so as I can
>>     compile it with
>>     LLVM 3.4 ?
>
>     svn co http://llvm.org/svn/llvm-project/poolalloc/trunk poolalloc
>
>     Regards,
>
>     John Criswell
>
>
>>
>>
>>         Regards,
>>
>>         John Criswell
>>
>>
>>
>>         On 4/28/14 8:10 AM, Petsas Athanasios wrote:
>>>         Dear all,
>>>
>>>         I would like to keep track of all the indirect calls that
>>>         may caused from function
>>>         pointers inside a program. I need this in order to be able
>>>         to construct the control
>>>         flow graph of all the indirect calls, that is which function
>>>         is legal to call another
>>>         function.
>>>
>>>         Is there a module that implements this functionality in
>>>         llvm? If not, is there a way to
>>>         do it? Maybe through implementing a pass. I am new to llvm.
>>>         Could you suggest me
>>>         a way to start doing this? Perhaps the llvm intermediate
>>>         code can help me on this.
>>>         Do you know where this code is being produced? or what files
>>>         or passes do I have
>>>         to modify for this?
>>>
>>>         Until now I have used this command to produce and study the
>>>         llvm bitcode for a test
>>>         program:
>>>         clang -S -emit-llvm fpointers.c -c -o fpointers.bc.text
>>>
>>>         Thank you,
>>>
>>>         -- 
>>>         Thanasis Petsas
>>>         Distributed Computing Systems (DCS)
>>>         Institute of Computer Science (ICS/FORTH)
>>>         Heraklion, Crete
>>>         Greece (GR)
>>>
>>>         http://www.thanasispetsas.com/
>>>
>>>
>>>         _______________________________________________
>>>         LLVM Developers mailing list
>>>         LLVMdev at cs.uiuc.edu  <mailto:LLVMdev at cs.uiuc.edu>          http://llvm.cs.uiuc.edu
>>>         http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>
>>
>>
>>
>>     -- 
>>     Thanasis Petsas
>>     Distributed Computing Systems (DCS)
>>     Institute of Computer Science (ICS/FORTH)
>>     Heraklion, Crete
>>     Greece (GR)
>>
>>     http://www.thanasispetsas.com/
>
>
>
>
> -- 
> Thanasis Petsas
> Distributed Computing Systems (DCS)
> Institute of Computer Science (ICS/FORTH)
> Heraklion, Crete
> Greece (GR)
>
> http://www.thanasispetsas.com/

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140505/b7d32100/attachment.html>


More information about the llvm-dev mailing list