[Soot-list] excluding javax.realtime.ImmortalMemory

Eric Bodden eric.bodden at mail.mcgill.ca
Sun Jun 24 03:55:49 EDT 2007


Hi, Chris. From what I know the very least Soot has to have is a
phantom class. If that does not suffice, then this means that you need
at least resolving level HIERARCHY and this you do not usually get
without the actual class. As you run in whole-program mode I see not
really an option of not including those classes anyway.

So I think the easiest would be to really include the Java TRS
classes. Does anything speak against doing so?

Eric

On 23/06/07, Chris Pickett <chris.pickett at mail.mcgill.ca> wrote:
> Hi,
>
> I'm trying to run Soot in whole-program mode with IBM's 1.5.0-SR1 SDK.
> I don't seem to have the class javax.realtime.ImmortalMemory in any of
> the .jar files.  It looks like it's part of real time Java only, not the
> standard distribution.  grep couldn't find the string "realtime"
> anywhere, never mind "Immortal".
>
> Does anybody have ideas as to how I might get past this exception?  I
> was thinking perhaps I could hard-code the class name into some Soot
> resolver class, but I'm not really sure where; letting it exist as a
> phantom reference only introduces errors later.  I tried -x javax. and
> -x javax but to no avail.  If I can't get this to work, it looks like
> I'll have to do the transformations with Sun's classes and then run the
> output with IBM's VM... which should be possible, but it's more
> difficult to work with, since Sun's VM doesn't run under AIX and I'll
> have to do lots and lots of file transfers.
>
> $ java -Xmx1024m soot.Main --cp
> .:$JAVA_HOME/lib/core.jar:$JAVA_HOME/lib/vm.jar:$JAVA_HOME/lib/graphics.jar:$JAVA_HOME/lib/security.jar:$JAVA_HOME/lib/ibmpkcs.jar
> -w spec.benchmarks._227_mtrt.Main
> Soot started on Sat Jun 23 20:28:43 EDT 2007
> Exception in thread "main" java.lang.RuntimeException: couldn't find
> class: javax.realtime.ImmortalMemory (is your soot-class-path set properly?)
>          at soot.SootResolver.bringToHierarchy(SootResolver.java:133)
>          at soot.SootResolver.bringToSignatures(SootResolver.java:166)
>          at soot.SootResolver.bringToBodies(SootResolver.java:207)
>          at soot.SootResolver.processResolveWorklist(SootResolver.java:94)
>          at soot.SootResolver.resolveClass(SootResolver.java:83)
>          at soot.Scene.tryLoadClass(Scene.java:330)
>          at soot.Scene.loadBasicClasses(Scene.java:880)
>          at soot.Scene.loadNecessaryClasses(Scene.java:906)
>          at soot.Main.run(Main.java:169)
>          at soot.Main.main(Main.java:145)
>
> That's otherwise a minimal set of jar files, which was built up in order
> to find java.lang.Object (core.jar), java.lang.String (vm.jar),
> java.awt.AWTPermission (graphics.jar),
> javax.security.auth.AuthPermission (security.jar), and
> com.ibm.security.x509.X509CertImpl (ibmpkcs.jar).
>
> If I specify every single .jar file in the distribution, I get:
>
> Soot started on Sat Jun 23 20:20:42 EDT 2007
> Exception in thread "main" java.lang.RuntimeException: Caught
> IOException java.util.zip.ZipException: Error opening zip file
> /work_jit/JVM/sdk150-20060310-SR1/lib/dt.jar looking in jar file
> /work_jit/JVM/sdk150-20060310-SR1/lib/dt.jar for file
> spec/benchmarks/_227_mtrt/Main.class
>          at soot.SourceLocator.lookupInJar(SourceLocator.java:400)
>          at soot.SourceLocator.lookupInClassPath(SourceLocator.java:378)
>          at soot.CoffiClassProvider.find(CoffiClassProvider.java:31)
>          at soot.SourceLocator.getClassSource(SourceLocator.java:43)
>          at soot.SootResolver.bringToHierarchy(SootResolver.java:130)
>          at soot.SootResolver.bringToSignatures(SootResolver.java:166)
>          at soot.SootResolver.processResolveWorklist(SootResolver.java:98)
>          at soot.SootResolver.resolveClass(SootResolver.java:83)
>          at soot.Scene.loadClass(Scene.java:361)
>          at soot.Scene.loadClassAndSupport(Scene.java:346)
>          at soot.Scene.loadNecessaryClass(Scene.java:893)
>          at soot.Scene.loadNecessaryClasses(Scene.java:912)
>          at soot.Main.run(Main.java:169)
>          at soot.Main.main(Main.java:145)
>
> and if I get rid of dt.jar then it falls back to the
> javax.realtime.ImmortalMemory exception.
>
> If I pass -allow-phantom-refs then I get this:
>
> Soot started on Sat Jun 23 22:00:47 EDT 2007
> Warning: javax.realtime.ImmortalMemory is a phantom class!
> [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: Jimplification
> requires javax.realtime.ImmortalMemory, but it is a phantom ref.
>          at soot.jimple.toolkits.typing.TypeNode.<init>(TypeNode.java:84)
>          at
> soot.jimple.toolkits.typing.ClassHierarchy$ConstructorChooser.caseRefType(ClassHierarchy.java:233)
>          at soot.RefType.apply(RefType.java:142)
>          at
> soot.jimple.toolkits.typing.ClassHierarchy$ConstructorChooser.typeNode(ClassHierarchy.java:226)
>          at
> soot.jimple.toolkits.typing.ClassHierarchy.typeNode(ClassHierarchy.java:123)
>          at
> soot.jimple.toolkits.typing.TypeResolver.typeVariable(TypeResolver.java:135)
>          at
> soot.jimple.toolkits.typing.ConstraintCollector.caseAssignStmt(ConstraintCollector.java:450)
>          at soot.jimple.internal.JAssignStmt.apply(JAssignStmt.java:221)
>          at
> soot.jimple.toolkits.typing.ConstraintCollector.collect(ConstraintCollector.java:50)
>          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:180)
>          at
> soot.jimple.toolkits.typing.TypeAssigner.internalTransform(TypeAssigner.java:55)
>          at soot.BodyTransformer.transform(BodyTransformer.java:51)
>          at soot.Transform.apply(Transform.java:104)
>          at soot.JimpleBodyPack.applyPhaseOptions(JimpleBodyPack.java:66)
>          at soot.JimpleBodyPack.internalApply(JimpleBodyPack.java:89)
>          at soot.Pack.apply(Pack.java:120)
>          at soot.coffi.CoffiMethodSource.getBody(CoffiMethodSource.java:117)
>          at soot.SootMethod.getBodyFromMethodSource(SootMethod.java:82)
>          at soot.SootMethod.retrieveActiveBody(SootMethod.java:329)
>          at
> soot.jimple.toolkits.callgraph.OnFlyCallGraphBuilder.processNewMethod(OnFlyCallGraphBuilder.java:181)
>          at
> soot.jimple.toolkits.callgraph.OnFlyCallGraphBuilder.processReachables(OnFlyCallGraphBuilder.java:81)
>          at
> soot.jimple.toolkits.callgraph.CallGraphBuilder.build(CallGraphBuilder.java:83)
>          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:57)
>          at
> soot.jimple.toolkits.callgraph.CallGraphPack.internalApply(CallGraphPack.java:41)
>          at soot.Pack.apply(Pack.java:110)
>          at soot.PackManager.runWholeProgramPacks(PackManager.java:405)
>          at soot.PackManager.runPacks(PackManager.java:326)
>          at soot.Main.run(Main.java:202)
>          at soot.Main.main(Main.java:145)
>
> Maybe I can change some method in the above trace?  Which one?
>
> Thanks!
> Chris
> _______________________________________________
> Soot-list mailing list
> Soot-list at sable.mcgill.ca
> http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
>


-- 
Eric Bodden
Sable Research Group
McGill University, Montréal, Canada


More information about the Soot-list mailing list