[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Soot upgrade info.




---------- Forwarded message ----------
Date: Wed, 15 Sep 1999 08:28:53 -0400 (EDT)
From: Patrick LAM <plam@sable.mcgill.ca>
To: Liang Guo <lguo@mail.eecis.udel.edu>

On Tue, 14 Sep 1999, Liang Guo wrote:

> > A phantom class is one for which Soot was unable to locate a class file.
> 	If Soot cannot locate the class file for the phantom class, this
> class cannot be loaded and jimplied. can I say this? 

This is true, but actually the implication goes the other way: if a class
cannot be loaded & jimplified, it is marked as phantom.

> My question actually
> is, say, one class is referenced by one loaded class, and this referenced
> class is unfortunately a phantom class. Then, it will not be present in
> the class hierarchy graph of mine. 

Well, you can put it in your Class Hierarchy graph, or not.

Take a look at InvokeGraph in soot.jimple.toolkits.invoke, by the way.
ClassHierarchyAnalysis builds one.

> 	Second question: what kind of class could be this phantom class?
> Why some base class of the Java CORE API cannot be located, even the
> java.lang.Object? Can I say the classes, which cannot be found within the
> CLASSPATH, and .jar and .zip files, are this phantom class? 

You need to unpack the Java class library and put that in your soot class
path specifically.  There is a bug with some JDK thing that will not load
the rt.jar file properly.  Java core classes should *not* be phantom.
If they are, you will get a type inference failed (like below).

Again: untar your rt.jar file which comes with java -- it is in
jre/lib/rt.jar or something.  You put it in a directory and put that
directory in your class path.

On the other hand, some classes will refer to other classes that don't
exist.  If they don't actually use them, but just refer to them, that's
fine with Java, but Soot can't analyze the files.

> 	Sorry for my stupid question, I forgot to remove the .class
> extension. But I got a type inference failed error when I ran this.
> Also I got a lot of phantom class warnings. It may be that the old 
> testIPDG is not recompiled to conform to the change in Soot? I will check
> this again with irrelevant class. 

See above.  You also need to recompile the old testIPDG with new soot,
because ca.mcgill.sable.soot.* has been moved to soot.*.

pat