Petsas Athanasios
2014-May-02 14:49 UTC
[LLVMdev] indirect calls tracking and control flow graph
On Mon, Apr 28, 2014 at 10:30 PM, John Criswell <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 ?> > 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 listLLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.eduhttp://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/ -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140502/f3e23737/attachment.html>
John Criswell
2014-May-02 14:53 UTC
[LLVMdev] indirect calls tracking and control flow graph
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/-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140502/86805a88/attachment.html>
Petsas Athanasios
2014-May-04 10:52 UTC
[LLVMdev] indirect calls tracking and control flow graph
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> 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>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 listLLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.eduhttp://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/20140504/eba66349/attachment.html>