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>
John Criswell
2014-May-05 18:34 UTC
[LLVMdev] indirect calls tracking and control flow graph
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>
Petsas Athanasios
2014-May-06 09:49 UTC
[LLVMdev] indirect calls tracking and control flow graph
Ok, I will switch to release_32. Thank you very much for your help! Regards, Thanasis Petsas On Mon, May 5, 2014 at 9:34 PM, John Criswell <criswell at illinois.edu> wrote:> 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>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/ > > >-- 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/20140506/51bc973b/attachment.html>