[Soot-list] soot-classpath troubles
Dan Grossman
djg at cs.washington.edu
Mon Aug 14 14:53:43 EDT 2006
I am trying to run this class through Soot with -W:
public class C extends Thread { }
I have a standard Linux box with the HotSpot Client VM installed in
/usr/java/jdk1.5.0_06.
Here is my call to java (full shell-script below):
java -Xmx1024m -classpath $JAVACLASSPATH \
soot.Main -W \
-src-prec c -soot-classpath $SOOTCLASSPATH C \
-p cg enabled:true,jdkver:4,implicit-entry:false \
-p cg.cha enabled:true
As expected, if I don't set -soot-classpath, Soot cannot find
java.lang.Thread. But even when I set it to include all 7 .jar files in
/usr/java/jdk1.5.0_06/jre/lib (including rt.jar), I get an error like
this (full stacktrace below):
Exception in thread "main" java.lang.RuntimeException: This operation
requires resolving level SIGNATURES but sun.misc.FloatingDecimal is at
resolving level DANGLING
Replacing -W with -w leads to the same behavior.
This stacktrace is with implicit-entry:false for the cg phase. If it is
true (allowing me to just delete the 2 -p lines above entirely), I get
the same error but with the java.io.BufferedInputStream class.
In general, what am I doing wrong for running -W? Is there some
"all-encompassing" .jar file I need? Is this a bug in Soot? Are others
using a different VM where this doesn't arise? Can anyone confirm
success running Soot with -W on a class that extends Thread?
Let me admit I have not tried running on a "clean download" (i.e., my
code has some additions to Soot), but I didn't touch anything germane to
class lookup.
Help would be very much appreciated! (I don't know where to start looking!)
Full stack trace and shell-script follows.
--Dan
=======
Soot started on Mon Aug 14 11:50:10 PDT 2006
[Call Graph] For information on where the call graph may be incomplete,
use the verbose option to the cg phase.
Exception in thread "main" java.lang.RuntimeException: This operation
requires resolving level SIGNATURES but sun.misc.FloatingDecimal is at
resolving level DANGLING
at soot.SootClass.checkLevel(SootClass.java:128)
at soot.SootClass.declaresField(SootClass.java:371)
at soot.AbstractSootFieldRef.resolve(AbstractSootFieldRef.java:88)
at soot.AbstractSootFieldRef.resolve(AbstractSootFieldRef.java:74)
at soot.jimple.StaticFieldRef.getField(StaticFieldRef.java:76)
at
soot.jimple.toolkits.typing.ConstraintCollector.caseAssignStmt(ConstraintCollector.java:236)
at soot.jimple.internal.JAssignStmt.apply(JAssignStmt.java:222)
at
soot.jimple.toolkits.typing.ConstraintCollector.collect(ConstraintCollector.java:53)
at
soot.jimple.toolkits.typing.TypeResolver.collect_constraints_1_2(TypeResolver.java:330)
at
soot.jimple.toolkits.typing.TypeResolver.resolve_step_1(TypeResolver.java:255)
at
soot.jimple.toolkits.typing.TypeResolver.resolve(TypeResolver.java:179)
at
soot.jimple.toolkits.typing.TypeAssigner.internalTransform(TypeAssigner.java:57)
at soot.BodyTransformer.transform(BodyTransformer.java:51)
at soot.Transform.apply(Transform.java:104)
at soot.JimpleBodyPack.applyPhaseOptions(JimpleBodyPack.java:70)
at soot.JimpleBodyPack.internalApply(JimpleBodyPack.java:93)
at soot.Pack.apply(Pack.java:120)
at soot.coffi.CoffiMethodSource.getBody(CoffiMethodSource.java:122)
at soot.SootMethod.getBodyFromMethodSource(SootMethod.java:81)
at soot.SootMethod.retrieveActiveBody(SootMethod.java:320)
at
soot.jimple.toolkits.callgraph.OnFlyCallGraphBuilder.processNewMethod(OnFlyCallGraphBuilder.java:182)
at
soot.jimple.toolkits.callgraph.OnFlyCallGraphBuilder.processReachables(OnFlyCallGraphBuilder.java:81)
at
soot.jimple.toolkits.callgraph.CallGraphBuilder.build(CallGraphBuilder.java:87)
at
soot.jimple.toolkits.callgraph.CHATransformer.internalTransform(CHATransformer.java:43)
at soot.SceneTransformer.transform(SceneTransformer.java:39)
at soot.Transform.apply(Transform.java:89)
at soot.RadioScenePack.internalApply(RadioScenePack.java:60)
at
soot.jimple.toolkits.callgraph.CallGraphPack.internalApply(CallGraphPack.java:40)
at soot.Pack.apply(Pack.java:110)
at soot.PackManager.runWholeProgramPacks(PackManager.java:375)
at soot.PackManager.runPacks(PackManager.java:321)
at soot.Main.run(Main.java:203)
at soot.Main.main(Main.java:146)
=======
#!/bin/bash
SOOT=${HOME}/workspace_builtineclipse
export JAVA_HOME=/usr/java/jdk1.5.0_06
PADDLE=${SOOT}/paddle-dev/classes
SOOTCLASSES=${SOOT}/soot-2.2.3/classes
JEDDRUN=${HOME}/jedd-0.3/runtime/lib/jedd-runtime.jar
JEDDTRANS=${HOME}/jedd-0.3/translator/lib/jedd-translator.jar
JASMIN=${SOOT}/jasmin-2.2.3/lib/jasminclasses-2.2.3.jar
export
JAVACLASSPATH=${JEDDRUN}:${JEDDTRANS}:${PADDLE}:${SOOTCLASSES}:${JASMIN}:${SOOT}/polyglot-1.3.2/lib/polyglot.jar:${SOOT}/polyglot-1.3.2/lib/java_cup.jar
JRELIBPATH=${JAVA_HOME}/jre/lib/
export
SOOTCLASSPATH=${JRELIBPATH}charsets.jar:${JRELIBPATH}deploy.jar:${JRELIBPATH}javaws.jar:${JRELIBPATH}jce.jar:${JRELIBPATH}jsse.jar:${JRELIBPATH}plugin.jar:${JRELIBPATH}rt.jar:./
echo $JAVACLASSPATH
echo
echo $SOOTCLASSPATH
echo
java -Xmx1024m \
-classpath $JAVACLASSPATH \
soot.Main \
-w \
-src-prec c \
-soot-classpath $SOOTCLASSPATH C \
-p cg enabled:true,jdkver:4,implicit-entry:false \
-p cg.cha enabled:true
More information about the Soot-list
mailing list