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>
Possibly Parallel Threads
- [LLVMdev] indirect calls tracking and control flow graph
- [LLVMdev] indirect calls tracking and control flow graph
- [LLVMdev] How to extract the starting address of each basic block with llvm?
- [LLVMdev] A question about LLVM and pool allocation
- ANCOVA post-hoc test