[LLVMdev] indirect calls tracking and control flow graph

Petsas Athanasios petsas at ics.forth.gr
Sun May 4 03:52:00 PDT 2014


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>


More information about the llvm-dev mailing list