[LLVMdev] Tracing values in llvm IR

Jin Huang 54jin.huang at gmail.com
Fri Jan 3 23:11:07 PST 2014


Now I'm trying to modify the giri code! I'll try this later!
Thank you all the same!

-Jin Huang


2014/1/3 Shining <shining.llvm at gmail.com>

> So you want to store all the variable value to a map, I think I can tell
> you some details.
> First, you must create a function which can store the variable value which
> get from the params of the function to the map.
> Second, you must write a pass, In this pass, you must insert the calling
> to the function (which created in the first step) to the place which the
> variable get the value.
> Third, you can create a function with the "__attribute__((destructor))",
> it will run after the function finished. You can use the function to output
> your date which store in the map.
>
> You must compile the functions(first and third step) to a lib. After you
> run your pass (which create in the second step) on your code, get the
> output IR, and run it with the lib. You can get what you want.
>
> I hope I can help you.
> Thanks.
>
>
> 2014/1/3 Sahoo, Swarup Kumar <ssahoo2 at illinois.edu>
>
>>  You will have to insert callinst to tracing functions immediately after
>> the value is produced, not at the entry points. Giri code has many such
>> examples of how to do this.
>>
>> Thanks,
>> Swarup.
>>
>>  ------------------------------
>> *From:* llvmdev-bounces at cs.uiuc.edu [llvmdev-bounces at cs.uiuc.edu] on
>> behalf of Jin Huang [54jin.huang at gmail.com]
>> *Sent:* Thursday, January 02, 2014 9:47 PM
>> *To:* llvmdev at cs.uiuc.edu; micah.villmow at smachines.com
>>
>> *Subject:* Re: [LLVMdev] Tracing values in llvm IR
>>
>>   Thank you,Micah.
>>
>>  This way sounds good, Do you mean writing a function to trace the value
>> and insert a callinst to call this function in the entry of the program ?
>> How can I insert a function writing by myself? Is there any code examples?
>>
>>  -Jin Huang
>>
>>
>> 2014/1/3 Jin Huang <54jin.huang at gmail.com>
>>
>>>  Thank you , James.
>>>
>>>  But this way needs to determine whether the instruction is a
>>> LOAD/STORE ,and if I want to preserve the operations on these variables for
>>> further dynamic symbolic execution usage(just like KLEE ,but it's a static
>>> analysis ,not dynamic),I had to backtrace instructions ,this may be not
>>> very efficient if the operation is very complex!
>>>
>>>  -Jin Huang
>>>
>>>
>>> 2014/1/3 Jin Huang <54jin.huang at gmail.com>
>>>
>>>>  Thank You ! John and Swarup. I have already downloaded the code!
>>>>
>>>>
>>>>
>>>>
>>>> 2014/1/3 Sahoo, Swarup Kumar <ssahoo2 at illinois.edu>
>>>>
>>>>  Hi Jin Huang,
>>>>>
>>>>> The updated Giri code is available at https://github.com/liuml07/giri<https://github.com/liuml07/giri.>.
>>>>> This will give you an idea of how to instrument the program to trace
>>>>> different values. You can modify the code to achieve your goals.
>>>>>
>>>>> -Swarup.
>>>>>
>>>>>  ------------------------------
>>>>> *From:* Criswell, John T
>>>>> *Sent:* Thursday, January 02, 2014 2:12 PM
>>>>> *To:* Jin Huang; llvmdev at cs.uiuc.edu; Sahoo, Swarup Kumar
>>>>> *Subject:* Re: [LLVMdev] Tracing values in llvm IR
>>>>>
>>>>>    On 1/1/14 11:39 PM, Jin Huang wrote:
>>>>>
>>>>>  Hi, everyone.
>>>>>
>>>>>  I want to writing a Pass to get the variable value while the program
>>>>> is running ,the basic idea is to insert an STL map in the program ,and get
>>>>> every value and address a program use ,but whether it's possible to do this
>>>>> by transforming the llvm IR?
>>>>>
>>>>>  I didn't find any useful functions to get a variable's address in
>>>>> LLVM IR .It seems that the IR is an SSA form and we can not get a value's
>>>>> address in compiling time.Is that right? But how can I dynamically get the
>>>>> variable's value in run time by writing a Pass ?
>>>>>
>>>>>
>>>>> The giri project does dynamic tracing of values stored to and loaded
>>>>> from memory.  It stores the trace of memory accesses on disk because they
>>>>> get very large very quickly.  You can either reuse the Giri code or modify
>>>>> it to suit your purposes.
>>>>>
>>>>> Swarup, is there a place where people can download the updated Giri
>>>>> code that your Google Summer of Code student worked on?
>>>>>
>>>>> -- John T.
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> LLVM Developers mailing listLLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.eduhttp://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>>>>
>>>>>
>>>>>
>>>>
>>>
>>
>> _______________________________________________
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>
>>
>
>
> --
> Shining(史宁)
> Changchun, Jilin, China
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140104/09dc09d9/attachment.html>


More information about the llvm-dev mailing list