[Soot-list] Getting line-number/type-informations at initialization via Jimple from bytecode
Tillmann
tirunkel at informatik.uni-bremen.de
Tue Dec 13 08:36:31 EST 2011
Hi,
it's me again. I found out that there is possible a failiure in the CFG
processing
if(!Util.v().useFaithfulNaming || la == null) in lines 891 & 920
@soot.coffi.CFG.java
in my opinion must be without "!" -> if(Util.v().useFaithfulNaming || la
== null). I've tried this and the names from local variable table are
allocated correctly in "name"! But unfortunately i got Exceptions
afterwards because the names obviously aren't connected properly :(
java.lang.RuntimeException: Variable r4 used without definition!
at
soot.jimple.toolkits.scalar.CopyPropagator.internalTransform(CopyPropagator.java:145)
by following the useFaithfulNaming variable i also altered the negation:
if(!useFaithfulNaming && activeVariableTable != null) in
getLocalForIndex(JimpleBody listBody, int index) @soot.coffi.Util in
line 817.
Afterwards everything seemed to be okay (the name switched from "l0" to
"realVariableName"), but in internalTransform() in my jtp.x-pack the
JimpleBody looks like before (names are: r0, r1, ...) .
Regards.
Tillmann
Am 13.12.2011 13:40, schrieb Tillmann:
> Hi Eric,
>
> thanks for your quick response.
>
> I've tried "Options.v().setPhaseOption("jb","use-original-names:on");"
> the option seems to be applied correctly (is set in
> "soot.coffi.CoffiMethodSource.getBody(SootMethod, String)"), but with no
> effect on the jimple-bodies. The Bytecode is compiled with names (see
> below - gathered from eclipse-class-inspection).
>
> But it's not a huge amount of work for me to create a work-around in my
> source-transformation-process.
>
> 0 iconst_0
> 1 istore_2 [flag]
> 2 aconst_null
> 3 astore_3 [client]
> 4 aconst_null
> 5 astore 4 [home]
>
> Am 13.12.2011 12:35, schrieb Eric Bodden:
>> Hi Tillmann.
>>
>> One thing you could try is to use "-p jb keep-original-names:on". This
>> will cause Soot to try to pack together locals that have the same
>> name.
>>
>> In general, the problem you are seeing is caused by the fact that
>> bytecode has no local variables, just stack locations.
More information about the Soot-list
mailing list