[Soot-list] Problem with Shimple Transformation
Julien Klaus
julien.klaus at uni-jena.de
Wed May 28 13:40:24 EDT 2014
Hello everybody,
I have problems with the rebuild function in the shimpleBody. After I
created some locals and assignments with the code below,
// create locals
JimpleLocal jlt = new JimpleLocal("temp$2", IntType.v());
JimpleLocal jlc = new JimpleLocal("c", IntType.v());
IntConstant ic = IntConstant.v(3);
// add locals
Chain<Local> locals = b.getLocals();
locals.add(jlt);
locals.add(jlc);
// create assignments
JAssignStmt jast = new JAssignStmt(jlt, ic);
JAssignStmt jasc = new JAssignStmt(jlc, jlt);
// add assignments
spc.insertBefore(jast, jrs);
spc.insertBefore(jasc, jrs);
I want to call the function rebuild. After that I got a
NoSuchElementException (see below) which tells me, that there is an
invalid unit"temp$2 = 3".
Does I have forgot something in the code? Must I register the nodes
something else, too?
Thank you for your help.
Regards
Julien
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at ca.mcgill.sable.soot.launching.SootThread.run(SootThread.java:138)
Caused by: java.util.NoSuchElementException: Invalid unit temp$2 = 3
at soot.toolkits.graph.UnitGraph.getPredsOf(UnitGraph.java:396)
at soot.toolkits.graph.UnitGraph.getPredsOf(UnitGraph.java:50)
at
soot.toolkits.graph.MHGDominatorsFinder.doAnalysis(MHGDominatorsFinder.java:102)
at
soot.toolkits.graph.MHGDominatorsFinder.<init>(MHGDominatorsFinder.java:62)
at
soot.toolkits.scalar.GuaranteedDefsAnalysis.<init>(GuaranteedDefs.java:82)
at soot.toolkits.scalar.GuaranteedDefs.<init>(GuaranteedDefs.java:44)
at soot.shimple.internal.PhiNodeManager.update(PhiNodeManager.java:55)
at
soot.shimple.internal.PhiNodeManager.insertTrivialPhiNodes(PhiNodeManager.java:71)
at
soot.shimple.internal.ShimpleBodyBuilder.transform(ShimpleBodyBuilder.java:99)
at soot.shimple.ShimpleBody.rebuild(ShimpleBody.java:133)
at
transform.BranchElimination.internalTransform(BranchElimination.java:83)
at soot.BodyTransformer.transform(BodyTransformer.java:51)
at soot.Transform.apply(Transform.java:104)
at soot.BodyPack.internalApply(BodyPack.java:49)
at soot.Pack.apply(Pack.java:124)
at soot.PackManager.runBodyPacks(PackManager.java:766)
at soot.PackManager.runBodyPacks(PackManager.java:463)
at soot.PackManager.runBodyPacks(PackManager.java:380)
at soot.PackManager.runPacks(PackManager.java:357)
at soot.Main.run(Main.java:198)
at soot.Main.main(Main.java:141)
at transform.MySootMain.main(MySootMain.java:11)
... 5 more
More information about the Soot-list
mailing list