[Soot-list] Transformation capablilities of Soot

Zeinab Lashkaripour lashkaripour at yahoo.com
Wed May 15 03:30:30 EDT 2013


Hi Marc-André,

> Is constant propagation built into soot able to resolve some of that?

I have not considered that therefore I need to take a look at it and thanks for mentioning.

> What about JSA?
That is a nice solution but, I'm not looking for that since I need the fastest way.

Regards,
Zeinab


________________________________
 From: Marc-André Laverdière-Papineau <marc-andre.laverdiere-papineau at polymtl.ca>
To: soot-list at sable.mcgill.ca 
Sent: Wednesday, May 15, 2013 7:27 AM
Subject: Re: [Soot-list] Transformation capablilities of Soot
 

As a general question, is the constant propagation built into soot able 
to resolve some of that?

What about JSA?

Marc-André Laverdière-Papineau
Doctorant - PhD Candidate

On 14/05/13 10:48 AM, Zeinab Lashkaripour wrote:
> Hi Bernhard,
>
> Thanks for your nice reply.
>
>  > As far as I understood, you try to calculate the results of a
> StringBuffer. It's not easy to solve this problem since you have to take
> care of the complete StringBuffer-API and some parts of the String may
> not be visible (read from input or passed to a method). Have I
> understood you correctly?
> Yes you are right but in my case I don't have none visible parts
> although their value would not be clear till runtime.
> I need to concatenate the different parts of the LHS variable which I
> have processed and add it to my code.
>
>  > But take care of gotos and exceptions.
> I can not see why this is an issue. Is that for the time that I want to
> add this statement at the end of the statements of a specific label or
> am I making a mistake?
> For example I have "var = value;" in my code that depending on its value
> I need to add a value to my local list. I don't understand why your
> point will matter in my case?
>
> Thanks in advance.
>
> Regards,
> Zeinab
>
> ------------------------------------------------------------------------
> *From:* Bernhard Berger <berber at tzi.de>
> *To:* Zeinab Lashkaripour <lashkaripour at yahoo.com>
> *Cc:* soot-list at sable.mcgill.ca
> *Sent:* Tuesday, May 14, 2013 1:00 PM
> *Subject:* Re: [Soot-list] Transformation capablilities of Soot
>
> Hi Zeinab,
>
> Am 13.05.2013 um 21:18 schrieb Zeinab Lashkaripour
> <lashkaripour at yahoo.com <mailto:lashkaripour at yahoo.com>>:
>
>> > That is the reason why Bernhard and I have used templates to
>> generate Jimple.
>> Could you please open up what you have done a little bit. Can we use
>> these templates or not?
> Modifying Jimple code by "hand" is a tedious task. Especially if you
> have to consider jumps and so forth and you try to generate large parts.
> I started to write a transformation engine for jimple where you can
> specify a pattern and a replacement in textual Jimple and the engine
> searches in the memory representation of jimple for the matches and
> replaces them -in memory- with the occurrences of the pattern. It is
> based on the ideas of TXL (http://www.txl.ca <http://www.txl.ca/>).  A
> simple example is inlining of special function calls (but it's a bad
> example since it's easy to do it programmatically):
>
> |«transformation»
>    «replace»
>      virtualinvoke «obj1».<org.apache.jasper.runtime.HttpJspBase: void service(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)>(«obj2», «obj3»);
>    «end»
>    «by»
>      virtualinvoke «obj1».<org.apache.jasper.runtime.HttpJspBase: void _jspService(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)>(«obj2», «obj3»);
>    «end»
> «end»|
>
>
> Currently, the transformation is done in wjpp to have some benefits in
> the cg construction. Whether you can use this preliminary framework is
> hard to say since I did not understand your goal. Can you give us a
> specific example? As far as I understood, you try to calculate the
> results of a StringBuffer. It's not easy to solve this problem since you
> have to take care of the complete StringBuffer-API and some parts of the
> String may not be visible (read from input or passed to a method). Have
> I understood you correctly?
>
>
>> > 1. That looks like you want to do syntax-directed translation in
>> order to determine the constant parts of that string concatenation. Am
>> I right?
>> I don't know what you mean.
>> The result of my analysis can be in the form of  (v1 = "...." + v +
>> "..") which means that the value of the LHS variable (v1) can contain
>> variables and constants. I wanted to know in order to insert this
>> statement in my code do I have to perform the actions that are done in
>> a Jimple code (using a StringBuilder and virtualinvoke) or is there a
>> way to give such a value to a variable at once?
>>
>> > 2. I have no idea what you want to ask...
>> In this question I want to add a value to the list that I have added
>> to my locals and insert "list.add(value)" in my code. How can I do that?
> This sounds like you are trying to instrument your code. I'm confused.
> You have to create an InvokeStmt and add a VirtualInvokeExpr. The base
> is the list-local and the parameter is the value-local. But take care of
> gotos and exceptions. Otherwise your results may be invalid.
>
> Regards,
> Bernhard
>
>
>
>
>
> _______________________________________________
> Soot-list mailing list
> Soot-list at sable.mcgill.ca
> http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
>
_______________________________________________
Soot-list mailing list
Soot-list at sable.mcgill.ca
http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.cs.mcgill.ca/pipermail/soot-list/attachments/20130515/81dde2f3/attachment-0001.html 


More information about the Soot-list mailing list