<div dir="ltr"><div>I do transformations for JBCO. My class extends BodyTransformer and implements IJbcoTransform. I transform simplest app with only one class with main method.</div><div><br></div><span style="font-size:12.8000001907349px">Minimal </span>TC1:<div><br></div><div><div>@Override</div><div> protected void internalTransform(Body body, String phaseName, Map<String, String> options) {</div><div> </div><div> int weight = soot.jbco.Main.getWeight(phaseName, body.getMethod().getSignature());</div><div> if (weight == 0){ </div><div> return;</div><div> }</div><div> </div><div> PatchingChain<Unit> units = body.getUnits(); </div><div><br></div><div> Local intLocal = Jimple.v().newLocal("myInt", IntType.v());</div><div> body.getLocals().add(intLocal);</div><div><br></div><div> AssignStmt as3 = Jimple.v().newAssignStmt(intLocal, Jimple.v().newAddExpr(intLocal, IntConstant.v(500)));</div><div> units.add(as3);</div><div> }</div><div><br></div><div><span style="font-size:12.8000001907349px">Minimal </span>TC2:</div><div><br></div><div><div>@Override</div><div> protected void internalTransform(Body body, String phaseName, Map<String, String> options) {</div><div> </div><div> int weight = soot.jbco.Main.getWeight(phaseName, body.getMethod().getSignature());</div><div> if (weight == 0){ </div><div> return;</div><div> }</div><div> </div><div> PatchingChain<Unit> units = body.getUnits(); </div><div><br></div><div> Local intLocal = Jimple.v().newLocal("myInt", IntType.v());</div><div> body.getLocals().add(intLocal);</div><div><br></div><div> AssignStmt as1 = Jimple.v().newAssignStmt(intLocal, IntConstant.v(0));</div><div> units.add(as1);</div><div><br></div><div> AssignStmt as3 = Jimple.v().newAssignStmt(intLocal, Jimple.v().newAddExpr(intLocal, IntConstant.v(500)));</div><div> units.add(as3);</div><div> }</div></div></div><div><br></div><div>Erroneous code will be added after return statement of main method.</div><div>I hope that is (exactly) what you want to see.<br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">2015-02-04 11:43 GMT+03:00 Bodden, Eric <span dir="ltr"><<a href="mailto:eric.bodden@sit.fraunhofer.de" target="_blank">eric.bodden@sit.fraunhofer.de</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hmmm, this looks wrong. Can you please post a minimal test case to reproduce this?<br>
<br>
Cheers,<br>
Eric<br>
<div><div class="h5"><br>
> On 04.02.2015, at 08:51, Roman Petriev <<a href="mailto:vvpiroman@gmail.com">vvpiroman@gmail.com</a>> wrote:<br>
><br>
> I try to initialize, and after this I have:<br>
><br>
> iconst_0<br>
> istore_1<br>
> iinc_w #1, 1<br>
><br>
> So, it isn't help.<br>
><br>
><br>
> 2015-02-04 2:08 GMT+03:00 Elena Sherman <<a href="mailto:elenasherman@boisestate.edu">elenasherman@boisestate.edu</a>>:<br>
> Roman,<br>
><br>
> Shouldn't you first initialize intLocal before using it in the addition expression?<br>
> For example to 0 :<br>
><br>
> AssignStmt as1 = Jimple.v().newAssignStmt(intLocal, IntConstant.v(0));<br>
> units.add(as1);<br>
> AssignStmt as2 = Jimple.v().newAssignStmt(intLocal, Jimple.v().newAddExpr(intLocal, IntConstant.v(500)));<br>
> units.add(as2);<br>
><br>
> On Tue, Feb 3, 2015 at 2:38 PM, Roman Petriev <<a href="mailto:vvpiroman@gmail.com">vvpiroman@gmail.com</a>> wrote:<br>
> Hello everybody!<br>
> I have code:<br>
><br>
> Local intLocal = Jimple.v().newLocal("myInt", IntType.v());<br>
> body.getLocals().add(intLocal);<br>
> AssignStmt as2 = Jimple.v().newAssignStmt(intLocal, Jimple.v().newAddExpr(intLocal, IntConstant.v(500)));<br>
> units.add(as2);<br>
><br>
> So I want to increase local variable on 500.<br>
> In byte code after transformation I see:<br>
><br>
> iinc_w #5, 1<br>
><br>
> Why 1 instead of 500? Where I mistake?<br>
><br>
> Thanks for any help.<br>
><br>
> Best regards,<br>
> Roman.<br>
><br>
> _______________________________________________<br>
> Soot-list mailing list<br>
> <a href="mailto:Soot-list@CS.McGill.CA">Soot-list@CS.McGill.CA</a><br>
> <a href="https://mailman.CS.McGill.CA/mailman/listinfo/soot-list" target="_blank">https://mailman.CS.McGill.CA/mailman/listinfo/soot-list</a><br>
><br>
><br>
><br>
> _______________________________________________<br>
> Soot-list mailing list<br>
> <a href="mailto:Soot-list@CS.McGill.CA">Soot-list@CS.McGill.CA</a><br>
> <a href="https://mailman.CS.McGill.CA/mailman/listinfo/soot-list" target="_blank">https://mailman.CS.McGill.CA/mailman/listinfo/soot-list</a><br>
<br>
</div></div>--<br>
Prof. Eric Bodden, Ph.D., <a href="http://sse.ec-spride.de/" target="_blank">http://sse.ec-spride.de/</a> <a href="http://bodden.de/" target="_blank">http://bodden.de/</a><br>
Head of Secure Software Engineering at Fraunhofer SIT, TU Darmstadt and EC SPRIDE<br>
Tel: +49 6151 16-75422 Fax: +49 6151 869-127<br>
Room B5.11, Fraunhofer SIT, Rheinstraße 75, 64295 Darmstadt<br>
<br>
</blockquote></div><br></div>