[Soot-list] Generating a CallGraph

Marc-Andre Laverdiere-Papineau marc-andre.laverdiere-papineau at polymtl.ca
Thu Mar 27 11:24:24 EDT 2014


Hi Graziella,

I would use the PackManager to run the processing pipeline if I were 
you. Less risk to break something and less lines of code too :)

-- 
Marc-André Laverdière-Papineau
Doctorant - PhD Candidate

On 2014-03-27 03:21, Graziella Galea wrote:
> Hi Marc-André,
>
> I think I have found the solution.  I had to change the project of
> analysis yesterday and realised that it contains multiple main methods
> (it is a large project).  Thus, if I use those as entry points, I can
> easily use SPARK since main methods are static methods!  So I thought
> the code would be something like the following but I still have to test it:
>
> private CallGraph setUp(String path, String javafiles, String testSuite)
> throws Exception{
> Options.v().set_no_bodies_for_excluded(true);
> Options.v().set_whole_program(true);
> Options.v().set_allow_phantom_refs(true);
> Options.v().set_process_dir(Arrays.asList(path)); //library dir
> Options.v().set_soot_classpath("C:\\Program
> Files\\Java\\jre7\\lib\\rt.jar;"+path+";" +
> "C:\\Program Files\\Java\\jre7\\lib\\jce.jar");
> //library dir along with rt.jar/jce.jar from JRE/JDK
> Scene.v().loadNecessaryClasses();
> getAllMethods(path);
> //identify source files
> identifySources(javafiles);
> System.out.println("sources identifed");
> identifyTestClasses(testSuite);
> Transform sparkTranform = new Transform( "cg.spark", null );
> PhaseOptions.v().setPhaseOption( sparkTranform, "verbose:true" );
> Map options = PhaseOptions.v().getPhaseOptions( sparkTranform );
> PointsToAnalysis spark = new PAG(new SparkOptions(options));
> CallGraphBuilder builder = new CallGraphBuilder(spark);
> builder.build();
> return builder.getCallGraph();
> }
>
> private ArrayList<SootMethod> getAllMethods(String path) throws Exception{
> Parser p = new Parser();
> ArrayList<File> allFiles = p.getSourceFiles(path, false);
> ArrayList<SootMethod> entryPoints = new ArrayList<SootMethod>();
>          for(File f: allFiles){
> //remove the path and leave package path only
> String name = f.getAbsolutePath().replace(path+"\\", "");
> name = name.replace("\\", ".");
> name = name.replace(".class", "");
> SootClass sootClass = Scene.v().forceResolve(name, SootClass.BODIES);
>              sootClass.setApplicationClass();
>              for(SootMethod m: sootClass.getMethods()){
> if(m.isMain()){
> entryPoints.add(m);
> }
>              }
>          }
>
> Scene.v().addBasicClass("java.lang.ThreadGroup",SootClass.SIGNATURES);
> Scene.v().setEntryPoints(entryPoints);
> return entryPoints;
> }
>
> I had sent you something similar but it is not the same.
> Do you think that this would result in a robust and precise implementation?
>
> Thanks a lot for your help :)
>
>
>
> On 27 March 2014 03:33, Marc-André Laverdière
> <marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>> wrote:
>
>     Hello Graziella,
>
>     All right, so now we know what is going on.
>
>     I would expect someone during your thesis defense to ask you hard
>     questions about CHA if you choose to go that path. CHA is just plain
>     bad. It is sound, but that's by putting almost everything. It is the
>     equivalent of killing a fly with a nuclear bomb.
>
>     Also, if you are going to do any interprocedural analysis, you are
>     likely to waste a lot of processing time on spurious edges.
>
>      >From what I see, you have 3 options:
>     1) Try running SPARK in RTA mode. That should be better than CHA. But I
>     don't know if you'll hit the same problem.
>     2) Generate some fake main. If you are doing Android analysis, Flowdroid
>     has one. If you are doing JEE, Bernhard and I have developed one.
>     3) Tweak the Spark algorithm to bootstrap the analysis with a CHA
>     fallback for the this pointer of your non-static entry points. I am sure
>     that many people would like that contribution.
>
>     With a bit of investment on your part, you'll get a solution that will
>     be robust and precise, which is a good starting point for a research
>     project :)
>
>     Regards,
>
>     Marc-André Laverdière-Papineau
>     Doctorant - PhD Candidate
>
>     On 03/25/2014 05:39 PM, Graziella Galea wrote:
>      > Hi Marc-André,
>      >
>      > No, my entry-points are definitely not static.  I am a bit unsure
>     though
>      > which methods should be set as entry-points.  I first started
>     following
>      > the following link at using and it worked.  Now that I am trying to
>      > change to SPARK so as to make sure that my results are precise, I
>     don't
>      > think that the same approach applies ie setting each method as an
>      > entry-point as suggested in the following link.
>      >
>      > http://marc.info/?l=soot-list&m=134095873818018&w=2
>      >
>      > Is generating a main stub better than using CHA algorithm?  I am
>     trying
>      > to decide if I should go back to my previous code which uses the CHA
>      > algorithm and seems to be working fine or try to get the SPARK
>     working.
>      >
>      >
>      > On 25 March 2014 22:22, Marc-André Laverdière
>      > <marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
>      > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>> wrote:
>      >
>      >     Hi Graziella,
>      >
>      >     I haven't looked at your code and I won't until you tell us
>     whether your
>      >     entry points are static or not, because that is an extremely
>     important
>      >     piece of information. Non-static entry points will give you
>     bad results
>      >     all the time.
>      >
>      >     If you use non-static entry points, you have to choose
>     between a call
>      >     graph algorithm that is less precise, or generating a main stub.
>      >
>      >     Marc-André Laverdière-Papineau
>      >     Doctorant - PhD Candidate
>      >
>      >     On 03/25/2014 02:56 PM, Graziella Galea wrote:
>      >     > Hi Marc-André.
>      >     >
>      >     > I added the setting
>     Options.v().set_no_bodies_for_excluded(true);
>      >     and it
>      >     > only took around 25 seconds which is good.  Then I tried to
>     use SPARK
>      >     > since it is more precise.  The problem is that I do not
>     think that the
>      >     > whole callgraph is being generated.  This is because for
>     particular
>      >     > methods, I identify their source methods and some of which
>     are not
>      >     being
>      >     > found.
>      >     >
>      >     > The following is my code:
>      >     >
>      >     > private CallGraph setUp(String path, String javafiles, String
>      >     testSuite)
>      >     > throws Exception{
>      >     > Options.v().set_no_bodies_for_excluded(true);
>      >     > Options.v().set_whole_program(true);
>      >     > Options.v().set_allow_phantom_refs(true);
>      >     > Options.v().set_process_dir(Arrays.asList(path)); //library dir
>      >     > Options.v().set_soot_classpath("C:\\Program
>      >     > Files\\Java\\jre7\\lib\\rt.jar;"+path+";" +
>      >     > "C:\\Program Files\\Java\\jre7\\lib\\jce.jar");
>      >     > //library dir along with rt.jar/jce.jar from JRE/JDK
>      >     > Scene.v().loadNecessaryClasses();
>      >     > getAllMethods(path);
>      >     > //identify source files
>      >     > identifySources(javafiles);
>      >     > System.out.println("sources identifed");
>      >     > identifyTestClasses(testSuite);
>      >     > Transform sparkTranform = new Transform( "cg.spark", null );
>      >     > PhaseOptions.v().setPhaseOption( sparkTranform,
>     "verbose:true" );
>      >     > Map options = PhaseOptions.v().getPhaseOptions(
>     sparkTranform );
>      >     > PointsToAnalysis spark = new PAG(new SparkOptions(options));
>      >     > CallGraphBuilder builder = new CallGraphBuilder(spark);
>      >     > builder.build();
>      >     > return builder.getCallGraph();
>      >     > }
>      >     >
>      >     > private ArrayList<SootMethod> getAllMethods(String path) throws
>      >     Exception{
>      >     > Parser p = new Parser();
>      >     > ArrayList<File> allFiles = p.getSourceFiles(path, false);
>      >     > ArrayList<SootMethod> entryPoints = new
>     ArrayList<SootMethod>();
>      >     >         for(File f: allFiles){
>      >     >         //remove the path and leave package path only
>      >     >         String name =
>     f.getAbsolutePath().replace(path+"\\", "");
>      >     >         name = name.replace("\\", ".");
>      >     >         name = name.replace(".class", "");
>      >     >         SootClass sootClass = Scene.v().forceResolve(name,
>      >     > SootClass.BODIES);
>      >     >             sootClass.setApplicationClass();
>      >     >             for(SootMethod m: sootClass.getMethods()){
>      >     >              if (!m.isAbstract()) {
>      >     >              entryPoints.add(m);
>      >     >                }
>      >     >             }
>      >     >         }
>      >     >
>      >     >
>     Scene.v().addBasicClass("java.lang.ThreadGroup",SootClass.SIGNATURES);
>      >     >       Scene.v().setEntryPoints(entryPoints);
>      >     > return entryPoints;
>      >     > }
>      >     >
>      >     > Is this fine?
>      >     >
>      >     > Thanks for your help.
>      >     >
>      >     >
>      >     > On 24 March 2014 22:47, Marc-André Laverdière
>      >     > <marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>
>      >     > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>>> wrote:
>      >     >
>      >     >     Hi Graziella,
>      >     >
>      >     >     I don't know much about the .build file, so no comments.
>      >     >
>      >     >
>      >     >     I am surprised that CHA is taking so long - do you have
>     very large
>      >     >     libraries? Did you try using Spark in CHA mode? I think
>     that the
>      >     >     CHATransformer is very old code - Spark has
>     optimizations that
>      >     work for
>      >     >     all analyses.
>      >     >
>      >     >     Spark should take more time, that's obvious. A way to work
>      >     around that
>      >     >     is to use exclusions and no-bodies-for-exclusions. You
>      >     truncate your
>      >     >     call graph, which is unsound, but you may not care so much
>      >     about some
>      >     >     parts of it. I do that all the time when analyzing JEE.
>      >     >
>      >     >     Also, note that the wjtp phase runs after Spark
>     executes (if
>      >     Spark is
>      >     >     enabled, that is).
>      >     >
>      >     >     Marc-André Laverdière-Papineau
>      >     >     Doctorant - PhD Candidate
>      >     >
>      >     >     On 03/24/2014 02:13 PM, Graziella Galea wrote:
>      >     >     > Thanks for your help Marc-André.
>      >     >     >
>      >     >     > I have read a bit about what you said and on the paper 'A
>      >     Survivor's
>      >     >     > Guide to Java Program Analysis with Soot' it is also
>     argued that
>      >     >     > SPARK provides a more precise callgraph while CHA is
>      >     considered as a
>      >     >     > dumb version.
>      >     >     >
>      >     >     > Before continuing any further though, I have realised
>     that
>      >     >     generating a
>      >     >     > callgraph using CHA takes approximately a minute.  In
>     the same
>      >     >     > paper it is said that SPARK provides a better
>     callgraph at
>      >     the expense
>      >     >     > of complicated setup and time.  Obviously, I do not
>     want the
>      >     >     > callgraph generation to take longer (already not very
>     happy
>      >     with the
>      >     >     > current execution time especially because the call graph
>      >     >     > handling barely takes a second.).  Do you think that
>     SPARK
>      >     will take
>      >     >     > even longer than a minute?  The currently
>     implementation for the
>      >     >     > callgraph generation takes a lot of time (a minute)
>     because of
>      >     >     this line:
>      >     >     >
>      >     >     > PackManager.v().getPack("wjtp").apply();
>      >     >     >
>      >     >     >
>      >     >     > On a different note, is it true that there is a way of
>      >     generating a
>      >     >     > callgraph using the .build file?  I never saw such
>     solution
>      >     on the
>      >     >     web but
>      >     >     > I know of someone who did but do not know how and it
>     seems as
>      >     >     though it
>      >     >     > does not take a long time for such generation.
>      >     >     >
>      >     >     >
>      >     >     >
>      >     >     > On 24 March 2014 17:12, Marc-André Laverdière
>      >     >     > <marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>
>      >     >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>>
>      >     >     > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>
>      >     >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>>>> wrote:
>      >     >     >
>      >     >     >     Hello Graziella,
>      >     >     >
>      >     >     >     It wouldn't hurt to do some reading on call graph
>      >     construction
>      >     >     >     algorithms if you want to know more. I think that
>     Lhoták's
>      >     >     masters'
>      >     >     >     thesis on SPARK, even if you just skim through
>     it, will
>      >     be very
>      >     >     >     instructive.
>      >     >     >
>      >     >     >     Anyways, here is an executive summary.
>      >     >     >     CHA = declared type's class + all subclasses
>      >     >     >     RTA = CHA - types that aren't instanciated
>      >     >     >     VTA, SPARK, etc. = RTA + Fancy constraint
>     propagation to
>      >     >     narrow it down
>      >     >     >     even more.
>      >     >     >
>      >     >     >     So, CHA will always be 'good' if you use very flat
>      >     >     hierarchies, or if
>      >     >     >     the program you analyze always declares the exact
>     same
>      >     type as
>      >     >     the one
>      >     >     >     used (e.g. no List meh = new ArrayList, but ArrayList
>      >     meh = new
>      >     >     >     ArrayList). I am sure that this kind of code
>     exists, but I
>      >     >     doubt that
>      >     >     >     you'll analyze only this stuff :)
>      >     >     >
>      >     >     >     Marc-André Laverdière-Papineau
>      >     >     >     Doctorant - PhD Candidate
>      >     >     >
>      >     >     >     On 03/24/2014 11:31 AM, Graziella Galea wrote:
>      >     >     >     > Hi!
>      >     >     >     >
>      >     >     >     > Why is the CHA algorithm less precise?  I have
>     tested
>      >     it and
>      >     >     >     worked fine
>      >     >     >     > till now but it is very important for me that I
>     have
>      >     precise
>      >     >     results.
>      >     >     >     >
>      >     >     >     > Regards,
>      >     >     >     >
>      >     >     >     > Graziella
>      >     >     >     >
>      >     >     >     >
>      >     >     >     > On 24 March 2014 09:49, Steven Arzt
>      >     <Steven.Arzt at cased.de <mailto:Steven.Arzt at cased.de>
>     <mailto:Steven.Arzt at cased.de <mailto:Steven.Arzt at cased.de>>
>      >     >     <mailto:Steven.Arzt at cased.de
>     <mailto:Steven.Arzt at cased.de> <mailto:Steven.Arzt at cased.de
>     <mailto:Steven.Arzt at cased.de>>>
>      >     >     >     <mailto:Steven.Arzt at cased.de
>     <mailto:Steven.Arzt at cased.de>
>      >     <mailto:Steven.Arzt at cased.de <mailto:Steven.Arzt at cased.de>>
>     <mailto:Steven.Arzt at cased.de <mailto:Steven.Arzt at cased.de>
>      >     <mailto:Steven.Arzt at cased.de <mailto:Steven.Arzt at cased.de>>>>
>      >     >     >     > <mailto:Steven.Arzt at cased.de
>     <mailto:Steven.Arzt at cased.de>
>      >     <mailto:Steven.Arzt at cased.de <mailto:Steven.Arzt at cased.de>>
>     <mailto:Steven.Arzt at cased.de <mailto:Steven.Arzt at cased.de>
>      >     <mailto:Steven.Arzt at cased.de <mailto:Steven.Arzt at cased.de>>>
>      >     >     <mailto:Steven.Arzt at cased.de
>     <mailto:Steven.Arzt at cased.de> <mailto:Steven.Arzt at cased.de
>     <mailto:Steven.Arzt at cased.de>>
>      >     <mailto:Steven.Arzt at cased.de <mailto:Steven.Arzt at cased.de>
>     <mailto:Steven.Arzt at cased.de <mailto:Steven.Arzt at cased.de>>>>>> wrote:
>      >     >     >     >
>      >     >     >     >     Hi all,
>      >     >     >     >
>      >     >     >     >     It really depends on the type of callgraph
>     you are
>      >     looking
>      >     >     >     for. SPARK
>      >     >     >     >     definitely does not work with non-static
>     entry points,
>      >     >     i.e. it
>      >     >     >     will miss
>      >     >     >     >     edges because it does not have valid
>      >     points-to-sets for
>      >     >     all "this"
>      >     >     >     >     fields
>      >     >     >     >     inside the instance methods on the
>     boundary. So if
>      >     no one
>      >     >     >     >     instantiates your
>      >     >     >     >     class A and A.method() is an entry point, then
>      >     there will be
>      >     >     >     an empty
>      >     >     >     >     points-to-set for "this" in A.method() since no
>      >     one ever
>      >     >     >     creates an
>      >     >     >     >     instance
>      >     >     >     >     of A.
>      >     >     >     >
>      >     >     >     >     If you have non-static entry points and need
>      >     SPARK's full
>      >     >     >     precision, you
>      >     >     >     >     will have to create a dummy main method.
>     For doing so,
>      >     >     you can
>      >     >     >     use the
>      >     >     >     >     DefaultEntryPointCreator class from FlowDroid
>      >     >     >     >
>      >     >
>     (https://github.com/secure-software-engineering/soot-infoflow)
>      >     >     >     which
>      >     >     >     >     should
>      >     >     >     >     make it fairly simple.
>      >     >     >     >
>      >     >     >     >     The other option would be to try a less
>     precise CG
>      >     algorithm
>      >     >     >     such as
>      >     >     >     >     CHA or
>      >     >     >     >     RTA as already discussed.
>      >     >     >     >
>      >     >     >     >     Best regards,
>      >     >     >     >       Steven
>      >     >     >     >
>      >     >     >     >     -----Ursprüngliche Nachricht-----
>      >     >     >     >     Von: soot-list-bounces at sable.mcgill.ca
>     <mailto:soot-list-bounces at sable.mcgill.ca>
>      >     <mailto:soot-list-bounces at sable.mcgill.ca
>     <mailto:soot-list-bounces at sable.mcgill.ca>>
>      >     >     <mailto:soot-list-bounces at sable.mcgill.ca
>     <mailto:soot-list-bounces at sable.mcgill.ca>
>      >     <mailto:soot-list-bounces at sable.mcgill.ca
>     <mailto:soot-list-bounces at sable.mcgill.ca>>>
>      >     >     >     <mailto:soot-list-bounces at sable.mcgill.ca
>     <mailto:soot-list-bounces at sable.mcgill.ca>
>      >     <mailto:soot-list-bounces at sable.mcgill.ca
>     <mailto:soot-list-bounces at sable.mcgill.ca>>
>      >     >     <mailto:soot-list-bounces at sable.mcgill.ca
>     <mailto:soot-list-bounces at sable.mcgill.ca>
>      >     <mailto:soot-list-bounces at sable.mcgill.ca
>     <mailto:soot-list-bounces at sable.mcgill.ca>>>>
>      >     >     >     >     <mailto:soot-list-bounces at sable.mcgill.ca
>     <mailto:soot-list-bounces at sable.mcgill.ca>
>      >     <mailto:soot-list-bounces at sable.mcgill.ca
>     <mailto:soot-list-bounces at sable.mcgill.ca>>
>      >     >     <mailto:soot-list-bounces at sable.mcgill.ca
>     <mailto:soot-list-bounces at sable.mcgill.ca>
>      >     <mailto:soot-list-bounces at sable.mcgill.ca
>     <mailto:soot-list-bounces at sable.mcgill.ca>>>
>      >     >     >     <mailto:soot-list-bounces at sable.mcgill.ca
>     <mailto:soot-list-bounces at sable.mcgill.ca>
>      >     <mailto:soot-list-bounces at sable.mcgill.ca
>     <mailto:soot-list-bounces at sable.mcgill.ca>>
>      >     >     <mailto:soot-list-bounces at sable.mcgill.ca
>     <mailto:soot-list-bounces at sable.mcgill.ca>
>      >     <mailto:soot-list-bounces at sable.mcgill.ca
>     <mailto:soot-list-bounces at sable.mcgill.ca>>>>>
>      >     >     >     >     [mailto:soot-list-bounces at sable.mcgill.ca
>     <mailto:soot-list-bounces at sable.mcgill.ca>
>      >     <mailto:soot-list-bounces at sable.mcgill.ca
>     <mailto:soot-list-bounces at sable.mcgill.ca>>
>      >     >     <mailto:soot-list-bounces at sable.mcgill.ca
>     <mailto:soot-list-bounces at sable.mcgill.ca>
>      >     <mailto:soot-list-bounces at sable.mcgill.ca
>     <mailto:soot-list-bounces at sable.mcgill.ca>>>
>      >     >     >     <mailto:soot-list-bounces at sable.mcgill.ca
>     <mailto:soot-list-bounces at sable.mcgill.ca>
>      >     <mailto:soot-list-bounces at sable.mcgill.ca
>     <mailto:soot-list-bounces at sable.mcgill.ca>>
>      >     >     <mailto:soot-list-bounces at sable.mcgill.ca
>     <mailto:soot-list-bounces at sable.mcgill.ca>
>      >     <mailto:soot-list-bounces at sable.mcgill.ca
>     <mailto:soot-list-bounces at sable.mcgill.ca>>>>
>      >     >     >     >     <mailto:soot-list-bounces at sable.mcgill.ca
>     <mailto:soot-list-bounces at sable.mcgill.ca>
>      >     <mailto:soot-list-bounces at sable.mcgill.ca
>     <mailto:soot-list-bounces at sable.mcgill.ca>>
>      >     >     <mailto:soot-list-bounces at sable.mcgill.ca
>     <mailto:soot-list-bounces at sable.mcgill.ca>
>      >     <mailto:soot-list-bounces at sable.mcgill.ca
>     <mailto:soot-list-bounces at sable.mcgill.ca>>>
>      >     >     >     <mailto:soot-list-bounces at sable.mcgill.ca
>     <mailto:soot-list-bounces at sable.mcgill.ca>
>      >     <mailto:soot-list-bounces at sable.mcgill.ca
>     <mailto:soot-list-bounces at sable.mcgill.ca>>
>      >     >     <mailto:soot-list-bounces at sable.mcgill.ca
>     <mailto:soot-list-bounces at sable.mcgill.ca>
>      >     <mailto:soot-list-bounces at sable.mcgill.ca
>     <mailto:soot-list-bounces at sable.mcgill.ca>>>>>] Im Auftrag von
>     Marc-André
>      >     >     >     >     Laverdière-Papineau
>      >     >     >     >     Gesendet: Samstag, 22. März 2014 20:22
>      >     >     >     >     An: soot-list at sable.mcgill.ca
>     <mailto:soot-list at sable.mcgill.ca>
>      >     <mailto:soot-list at sable.mcgill.ca
>     <mailto:soot-list at sable.mcgill.ca>>
>      >     >     <mailto:soot-list at sable.mcgill.ca
>     <mailto:soot-list at sable.mcgill.ca>
>      >     <mailto:soot-list at sable.mcgill.ca
>     <mailto:soot-list at sable.mcgill.ca>>>
>      >     >     >     <mailto:soot-list at sable.mcgill.ca
>     <mailto:soot-list at sable.mcgill.ca>
>      >     <mailto:soot-list at sable.mcgill.ca
>     <mailto:soot-list at sable.mcgill.ca>>
>      >     >     <mailto:soot-list at sable.mcgill.ca
>     <mailto:soot-list at sable.mcgill.ca>
>      >     <mailto:soot-list at sable.mcgill.ca
>     <mailto:soot-list at sable.mcgill.ca>>>>
>      >     >     <mailto:soot-list at sable.mcgill.ca
>     <mailto:soot-list at sable.mcgill.ca>
>      >     <mailto:soot-list at sable.mcgill.ca
>     <mailto:soot-list at sable.mcgill.ca>>
>     <mailto:soot-list at sable.mcgill.ca <mailto:soot-list at sable.mcgill.ca>
>      >     <mailto:soot-list at sable.mcgill.ca
>     <mailto:soot-list at sable.mcgill.ca>>>
>      >     >     >     <mailto:soot-list at sable.mcgill.ca
>     <mailto:soot-list at sable.mcgill.ca>
>      >     <mailto:soot-list at sable.mcgill.ca
>     <mailto:soot-list at sable.mcgill.ca>>
>      >     >     <mailto:soot-list at sable.mcgill.ca
>     <mailto:soot-list at sable.mcgill.ca>
>      >     <mailto:soot-list at sable.mcgill.ca
>     <mailto:soot-list at sable.mcgill.ca>>>>>
>      >     >     >     >     Betreff: Re: [Soot-list] Generating a CallGraph
>      >     >     >     >
>      >     >     >     >     Hi Graziella,
>      >     >     >     >
>      >     >     >     >     This code uses CHA. Is that what you really
>     want?
>      >     >     >     >
>      >     >     >     >     I honestly don't know of anybody who got a call
>      >     graph in
>      >     >     this kind
>      >     >     >     >     of case
>      >     >     >     >     with SPARK without generating a stubbed main.
>      >     >     >     >
>      >     >     >     >     Eric wrote the blog entry about custom
>     entry points,
>      >     >     he's probably
>      >     >     >     >     the best
>      >     >     >     >     person to ask...
>      >     >     >     >
>      >     >     >     >     Marc-André Laverdière-Papineau
>      >     >     >     >     Doctorant - PhD Candidate
>      >     >     >     >
>      >     >     >     >     On 22/03/14 05:57 AM, Graziella Galea wrote:
>      >     >     >     >     > I have followed the following solution to
>     generate a
>      >     >     callgraph
>      >     >     >     >     >
>     http://marc.info/?l=soot-list&m=134095873818018&w=2
>      >     >     >     >     > and it does not mention anything about static
>      >     classes - in
>      >     >     >     fact it
>      >     >     >     >     > sets every method in the project to be
>     analysed
>      >     as an
>      >     >     >     entrypoint.
>      >     >     >     >     > This is the reason I thought this is a
>     good solution
>      >     >     since I
>      >     >     >     don't
>      >     >     >     >     > have a main class.  Is there some
>     tutorial which
>      >     specifies
>      >     >     >     exactly
>      >     >     >     >     what
>      >     >     >     >     settings
>      >     >     >     >     > need to be configured in order to
>     generate a call
>      >     >     graph?   The
>      >     >     >     >     code for
>      >     >     >     >     > using the call graph is fine because I
>     analysed
>      >     another
>      >     >     >     project and
>      >     >     >     >     > the settings worked perfectly.  Then I
>     applied it to
>      >     >     another
>      >     >     >     project
>      >     >     >     >     > and it didn't work.  All I need to know
>     is the
>      >     >     settings - I
>      >     >     >     have the
>      >     >     >     >     > logic to handle a call graph then.
>      >     >     >     >     >
>      >     >     >     >     > Thanks again for your help!
>      >     >     >     >     >
>      >     >     >     >     >
>      >     >     >     >     > On 21 March 2014 22:42, Marc-André Laverdière
>      >     >     >     >     >
>     <marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>
>      >     >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>>
>      >     >     >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>
>      >     >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>>>
>      >     >     >     >
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>
>      >     >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>>
>      >     >     >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>
>      >     >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>>>>
>      >     >     >     >     >
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>
>      >     >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>>
>      >     >     >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>
>      >     >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>>>
>      >     >     >     >
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>
>      >     >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>>
>      >     >     >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>
>      >     >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>>>>>> wrote:
>      >     >     >     >     >
>      >     >     >     >     >     Hello,
>      >     >     >     >     >
>      >     >     >     >     >     Using the Soot main requires that you
>     have a
>      >     main
>      >     >     class
>      >     >     >     in your
>      >     >     >     >     program.
>      >     >     >     >     >     Custom entry points won't work in
>     that case.
>      >     >     >     >     >     Before we go there, would you please
>     confirm
>      >     that
>      >     >     your entry
>      >     >     >     >     points
>      >     >     >     >     are
>      >     >     >     >     >     static?
>      >     >     >     >     >
>      >     >     >     >     >     The next thing: I suggest that you add a
>      >     transformer
>      >     >     >     that will
>      >     >     >     >     list
>      >     >     >     >     all
>      >     >     >     >     >     non-phantom classes loaded in your Scene.
>      >     This is
>      >     >     probably
>      >     >     >     >     going to
>      >     >     >     >     help
>      >     >     >     >     >     diagnose problems.
>      >     >     >     >     >
>      >     >     >     >     >     My suggestion is that you start
>     small: have it
>      >     >     working on a
>      >     >     >     >     simpler
>      >     >     >     >     test
>      >     >     >     >     >     case (all classes local, only one
>     version),
>      >     then add a
>      >     >     >     feature
>      >     >     >     >     >     (downloading class definitions), and then
>      >     add the
>      >     >     other.
>      >     >     >     >     >
>      >     >     >     >     >     Marc-André Laverdière-Papineau
>      >     >     >     >     >     Doctorant - PhD Candidate
>      >     >     >     >     >
>      >     >     >     >     >     On 03/21/2014 04:25 PM, Graziella
>     Galea wrote:
>      >     >     >     >     >     > Thanks for your response Marc-Andre.
>      >     >     >     >     >     >
>      >     >     >     >     >     > I am using a class loader in order
>     to be
>      >     able to
>      >     >     retrieve
>      >     >     >     >     classes
>      >     >     >     >     and
>      >     >     >     >     >     > set them as application classes.  I
>      >     previously used
>      >     >     >     >     >     > Scene.v().loadNecessaryClasses()
>     but it is
>      >     not good
>      >     >     >     for my case
>      >     >     >     >     >     since I
>      >     >     >     >     >     > need to generate a call graph for
>      >     different versions
>      >     >     >     of the same
>      >     >     >     >     >     > project.  I have been recommended
>     to use the
>      >     >     soot.Main
>      >     >     >     but I am
>      >     >     >     >     >     not sure
>      >     >     >     >     >     > what parameters I need to pass.
>       How do you
>      >     >     recommend
>      >     >     >     to use the
>      >     >     >     >     >     > soot.Main method?
>      >     >     >     >     >     >
>      >     >     >     >     >     > Thanks for your help.
>      >     >     >     >     >     >
>      >     >     >     >     >     > Regards,
>      >     >     >     >     >     >
>      >     >     >     >     >     > Graziella.
>      >     >     >     >     >     >
>      >     >     >     >     >     >
>      >     >     >     >     >     > On 21 March 2014 20:05, Marc-Andre
>      >     >     Laverdiere-Papineau
>      >     >     >     >     >     >
>     <marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>
>      >     >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>>
>      >     >     >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>
>      >     >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>>>
>      >     >     >     >
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>
>      >     >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>>
>      >     >     >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>
>      >     >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>>>>
>      >     >     >     >     >
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>
>      >     >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>>
>      >     >     >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>
>      >     >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>>>
>      >     >     >     >
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>
>      >     >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>>
>      >     >     >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>
>      >     >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>>>>>
>      >     >     >     >     >     >
>      >     >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>
>      >     >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>>
>      >     >     >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>
>      >     >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>>>
>      >     >     >     >
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>
>      >     >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>>
>      >     >     >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>
>      >     >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>>>>
>      >     >     >     >     >
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>
>      >     >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>>
>      >     >     >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>
>      >     >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>>>
>      >     >     >     >
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>
>      >     >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>>
>      >     >     >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>
>      >     >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
>      >     <mailto:marc-andre.laverdiere-papineau at polymtl.ca
>     <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>>>>>>> wrote:
>      >     >     >     >     >     >
>      >     >     >     >     >     >     Hi Graziella,
>      >     >     >     >     >     >
>      >     >     >     >     >     >     Soot doesn't care about the
>     class loader
>      >     >     that you
>      >     >     >     use - it
>      >     >     >     >     >     uses its
>      >     >     >     >     >     >     own class loading logic. You
>     would need to
>      >     >     either
>      >     >     >     change
>      >     >     >     >     that
>      >     >     >     >     >     >     mechanism, or dump the classes
>     you get
>      >     from
>      >     >     other
>      >     >     >     >     sources to the
>      >     >     >     >     >     >     disk and let Soot retrieve that.
>      >     >     >     >     >     >
>      >     >     >     >     >     >     Also, it is generally
>     recommended to
>      >     use the
>      >     >     Soot
>      >     >     >     main if
>      >     >     >     >     >     you're new
>      >     >     >     >     >     >     at Soot.
>      >     >     >     >     >     >
>      >     >     >     >     >     >     Also, note that entry points
>     need to be
>      >     >     static. IIRC,
>      >     >     >     >     when you
>      >     >     >     >     are
>      >     >     >     >     >     >     working in app mode, you need
>     to have an
>      >     >     explicit main
>      >     >     >     >     method,
>      >     >     >     >     but
>      >     >     >     >     >     >     I'm not 100% sure about that.
>      >     >     >     >     >     >
>      >     >     >     >     >     >     BTW, you can join us on IRC at
>     #soot
>      >     on Freenode
>      >     >     >     if that's
>      >     >     >     >     >     your thing.
>      >     >     >     >     >     >
>      >     >     >     >     >     >     Le 2014-03-21 10:48, Graziella
>     Galea a
>      >     écrit :
>      >     >     >     >     >     >>
>      >     >     >     >     >     >>     I am currently working on a
>     project
>      >     whereby
>      >     >     I need to
>      >     >     >     >     generate
>      >     >     >     >     a
>      >     >     >     >     >     >>     call graph for Java code analysis
>      >     using SOOT.
>      >     >     >     >     Unfortunately,
>      >     >     >     >     for
>      >     >     >     >     >     >>     each class in the project I am
>     analyzing,
>      >     >     soot is
>      >     >     >     >     returning a
>      >     >     >     >     >     >>     warning that the class in a
>     phantom
>      >     reference.
>      >     >     >     Now, if
>      >     >     >     >     I am not
>      >     >     >     >     >     >>     mistaken, a phantom reference
>     is a class
>      >     >     which I
>      >     >     >     cannot
>      >     >     >     >     provide
>      >     >     >     >     >     >>     but I am actually providing it. I
>      >     first started
>      >     >     >     >     thinking that
>      >     >     >     >     the
>      >     >     >     >     >     >>     problem was with the Soot's
>     classpath
>      >     but I
>      >     >     think
>      >     >     >     it is
>      >     >     >     >     correct.
>      >     >     >     >     >     >>     The path String variable used
>     to set the
>      >     >     >     classpath (as
>      >     >     >     >     shown in
>      >     >     >     >     >     >>     the code snippet below)
>     specifies the bin
>      >     >     folder
>      >     >     >     of the
>      >     >     >     >     project
>      >     >     >     >     >     >>     I'm analysing.
>      >     >     >     >     >     >>
>      >     >     >     >     >     >>     Could anyone help me? It's
>     been over
>      >     a week and
>      >     >     >     cannot seem
>      >     >     >     >     >     to get
>      >     >     >     >     >     >>     it right.
>      >     >     >     >     >     >>
>      >     >     >     >     >     >>     Code used for setup:
>      >     >     >     >     >     >>
>      >     >     >     >     >     >>
>      >     >     >     >     >     >>     |
>      >     >     >     >     >     >>
>      >     >     >     >     >
>      >     >     >     >
>      >     >     >
>      >     >
>      >
>     privateCallGraphsetUp(ArrayList<String>paths,StringtestSuite)throwsException
>      >     >     >     >
>      >     >     >
>      >     >
>      >
>     {Options.v().set_whole_program(true);Options.v().set_allow_phantom_refs(true
>      >     >     >     >     );
>      >     >     >     >     >     >>
>      >     >     >     >     >     >>
>      >     >     >     >     >     >>         Options.v().set_app(!
>      >     >     >     >     >     >>      true);
>      >     >     >     >     >     >>
>      >     >     >
>     Options.v().set_no_bodies_for_excluded(true);//set each
>      >     >     >     >     method
>      >     >     >     >     in
>      >     >     >     >     >     >>     the source folder as an entry
>      >     pointParserp
>      >     >     >     >     >     >>
>     =newParser();List<SootMethod>entryPoints
>      >     >     >     >     >     >>     =newArrayList<SootMethod>();//the
>      >     arraylist
>      >     >     paths
>      >     >     >     >     contains the
>      >     >     >     >     >     >>     path to the test suite and the
>     path
>      >     to the
>      >     >     source
>      >     >     >     >     >     >>
>     folderfor(Stringpath:paths){if(path
>      >     !=null
>      >     >     >     >     >     >>     ){__//if it is null then the user
>      >     chose to
>      >     >     >     identify the
>      >     >     >     >     >     methods only
>      >     >     >     >     >     >>     //create a classLoader for this
>      >     pathFilefile
>      >     >     >     >     >     >>
>     =newFile(path);ClassLoaderclassLoader
>      >     >     >     >     >     >>
>      >     >     >     >     >
>      >     >     >     >
>      >     >     >
>      >     >
>      >
>     =newURLClassLoader(newURL[]{file.toURI().toURL()},parent);MultiClassLoadermc
>      >     >     >     >     l
>      >     >     >     >     >     >>
>      >     >     >     >     >
>      >     >     >     >
>      >     >     >
>      >     >
>      >
>     =newMultiClassLoader();mcl.addClassLoader(classLoader);ArrayList<File>allFil
>      >     >     >     >     es
>      >     >     >     >     >     >>
>      >     >     >     >     >
>      >     >     >     >
>      >     >     >
>      >     >
>      >
>     =p.getSourceFiles(path,false__);Options.v().set_process_dir(Arrays.asList(pa
>      >     >     >     >     th+"\\"));__
>      >     >     >     >     >     >>
>      >     Options.v().set_soot_classpath("C:\\Program
>      >     >     >     >     >     >>
>      >     >     Files\\Java\\jre7\\lib\\rt.jar;"+path+"\\;C:\\Program
>      >     >     >     >     >     >>
>      >     >     >     >     >
>      >     >     >
>      >
>     Files\\Java\\jre7\\lib\\jce.jar");for(Filef:allFiles){//remove the
>      >     >     >     >     >     >>     path and leave package path
>      >     onlyStringname
>      >     >     >     >     =f.getAbsolutePath()
>      >     >     >     >     >     >>     .replace(path+"\\","");name
>      >     >     =name.replace("\\",____
>      >     >     >     >     ".");name
>      >     >     >     >     >     >>     =name.replace(".class",
>     "");//saves test
>      >     >     files so
>      >     >     >     as to be
>      >     >     >     >     >     able to
>      >     >     >     >     >     >>     distinguish between normal methods
>      >     and test
>      >     >     cases
>      >     >     >     >     >     >>
>      >     >     >     >     >     >>
>      >     if(path.equals(testSui!
>      >     >     >     >     >     >>      te<
>      >     >     >     >     >     >>     span class=""
>      >     >     >     >     >
>      >     >     >     >
>      >     >     >
>      >     >
>      >
>     style="margin:0px;padding:0px;border:0px;font-size:14px;vertical-align:basel
>      >     >     >     >     ine;background-color:transparent">)){
>      >     >     >     >     >     >>     testFiles.add(name);}//load the
>      >     >     classClass<?>cls
>      >     >     >     =mcl.getCl
>      >     >     >     >     >     >>
>      >     assLoader(0).loadClass(name);SootClasssootClass
>      >     >     >     >     >     >>
>      >     =Scene.v().loadClassAndSupport(cls.getName
>      >     >     >     >     >     >>
>      >     >     >     >     >     >>     ());
>      >     >     >     >     >     >>
>      >     __sootClass.setApplicationClass();//set all
>      >     >     of the
>      >     >     >     >     methods in
>      >     >     >     >     >     this
>      >     >     >     >     >     >>     class as entrypoints since
>     there is
>      >     no main
>      >     >     method
>      >     >     >     >     >     >>
>      >     >     >     >     >
>      >     >     >     >
>      >     >     >
>      >     >
>      >
>     availablefor(SootMethodm:sootClass.getMethods()){if(!m.isAbstract()){System.
>      >     >     >     >     out.println("entrypoint
>      >     >     >     >     >     >>
>      >     >     >     >     >
>      >     >     >     >
>      >     >     >
>      >     >
>      >
>     "+m);entryPoints.add(m);}}}mcl.removeClassLoader(classLoader);}}Scene.v().ad
>      >     >     >     >     dBasicClass("java.
>      >     >     >     >     >     >>
>      >     >     >     >
>      >     >
>     lang.ThreadGroup",SootClass.SIGNATURES);Scene.v().setEntryPoints(
>      >     >     >     >     >     >>
>      >     >     >     >     >     >>     entryPoints__);
>      >     >     >     >     >     >>         PackManager.v().runPacks();
>      >     >     >     >     >     >>         return Scene.v().get!
>      >     >     >     >     >     >>      CallGraph<
>      >     >     >     >     >     >>     /span>();
>      >     >     >     >     >     >>        }|
>      >     >     >     >     >     >>     --
>      >     >     >     >     >     >>     Graziella Galea
>      >     >     >     >     >     >>
>      >     >     >     >     >     >>
>      >     >     >     >     >     >>
>      >     _______________________________________________
>      >     >     >     >     >     >>     Soot-list mailing list
>      >     >     >     >     >     >> Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>
>      >     >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>>
>      >     >     >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>
>      >     >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>>>
>      >     >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca> <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>>
>      >     >     >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>
>      >     >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>>>>
>      >     >     >     >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>
>      >     >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>>
>      >     >     >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>
>      >     >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>>>
>      >     >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca> <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>>
>      >     >     >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>
>      >     >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>>>>>
>      >     >     >     >     >     >>
>      >     >     > http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
>      >     >     >     >     >     >
>      >     >     >     >     >     >     --
>      >     >     >     >     >     >     Marc-André Laverdière-Papineau
>      >     >     >     >     >     >     Doctorant - PhD Candidate
>      >     >     >     >     >     >
>      >     >     >     >     >     >
>      >     >     >     >     >     >
>      >     _______________________________________________
>      >     >     >     >     >     >     Soot-list mailing list
>      >     >     >     >     >     > Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>
>      >     >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>>
>      >     >     >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>
>      >     >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>>>
>      >     >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca> <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>>
>      >     >     >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>
>      >     >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>>>>
>      >     >     >     >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>
>      >     >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>>
>      >     >     >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>
>      >     >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>>>
>      >     >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca> <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>>
>      >     >     >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>
>      >     >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>>>>>
>      >     >     >     >     >     >
>      >     > http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
>      >     >     >     >     >     >
>      >     >     >     >     >     >
>      >     >     >     >     >     >
>      >     >     >     >     >     >
>      >     >     >     >     >     > --
>      >     >     >     >     >     > Graziella Galea
>      >     >     >     >     >     >
>      >     >     >     >     >     >
>      >     >     >     >     >     >
>      >     _______________________________________________
>      >     >     >     >     >     > Soot-list mailing list
>      >     >     >     >     >     > Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>
>      >     >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>     <mailto:Soot-list at sable.mcgill.ca <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>
>      >     >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>>>
>      >     >     >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>
>      >     >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>     <mailto:Soot-list at sable.mcgill.ca <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>
>      >     >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>>>>
>      >     >     >     >     >     >
>      >     > http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
>      >     >     >     >     >     >
>      >     >     >     >     >
>     _______________________________________________
>      >     >     >     >     >     Soot-list mailing list
>      >     >     >     >     > Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>
>      >     >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>     <mailto:Soot-list at sable.mcgill.ca <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>
>      >     >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>>>
>      >     >     >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>
>      >     >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>     <mailto:Soot-list at sable.mcgill.ca <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>
>      >     >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>>>>
>      >     >     >     >     >
>      > http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
>      >     >     >     >     >
>      >     >     >     >     >
>      >     >     >     >     >
>      >     >     >     >     >
>      >     >     >     >     > --
>      >     >     >     >     > Graziella Galea
>      >     >     >     >     >
>      >     >     >     >     >
>      >     >     >     >     >
>     _______________________________________________
>      >     >     >     >     > Soot-list mailing list
>      >     >     >     >     > Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca> <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>>
>      >     >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca> <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>>>
>      >     >     >     >     >
>      > http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
>      >     >     >     >     >
>      >     >     >     >     _______________________________________________
>      >     >     >     >     Soot-list mailing list
>      >     >     >     > Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca> <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>>
>      >     >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca> <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>>>
>      >     >     >     >
>     http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
>      >     >     >     >
>      >     >     >     >     _______________________________________________
>      >     >     >     >     Soot-list mailing list
>      >     >     >     > Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca> <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>>
>      >     >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca> <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>>>
>      >     >     >     >
>     http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
>      >     >     >     >
>      >     >     >     >
>      >     >     >     >
>      >     >     >     >
>      >     >     >     > --
>      >     >     >     > Graziella Galea
>      >     >     >     >
>      >     >     >     >
>      >     >     >     > _______________________________________________
>      >     >     >     > Soot-list mailing list
>      >     >     >     > Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>     <mailto:Soot-list at sable.mcgill.ca <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>     <mailto:Soot-list at sable.mcgill.ca <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>>
>      >     >     >     >
>     http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
>      >     >     >     >
>      >     >     >     _______________________________________________
>      >     >     >     Soot-list mailing list
>      >     >     > Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>     <mailto:Soot-list at sable.mcgill.ca <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>
>      >     >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>     <mailto:Soot-list at sable.mcgill.ca <mailto:Soot-list at sable.mcgill.ca>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>>
>      >     >     > http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
>      >     >     >
>      >     >     >
>      >     >     >
>      >     >     >
>      >     >     > --
>      >     >     > Graziella Galea
>      >     >     >
>      >     >     >
>      >     >     > _______________________________________________
>      >     >     > Soot-list mailing list
>      >     >     > Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca> <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca> <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>
>      >     >     > http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
>      >     >     >
>      >     >     _______________________________________________
>      >     >     Soot-list mailing list
>      >     > Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca> <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca> <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>>
>      >     > http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
>      >     >
>      >     >
>      >     >
>      >     >
>      >     > --
>      >     > Graziella Galea
>      >     >
>      >     >
>      >     > _______________________________________________
>      >     > Soot-list mailing list
>      >     > Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca> <mailto:Soot-list at sable.mcgill.ca
>     <mailto:Soot-list at sable.mcgill.ca>>
>      >     > http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
>      >     >
>      >     _______________________________________________
>      >     Soot-list mailing list
>      > Soot-list at sable.mcgill.ca <mailto:Soot-list at sable.mcgill.ca>
>     <mailto:Soot-list at sable.mcgill.ca <mailto:Soot-list at sable.mcgill.ca>>
>      > http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
>      >
>      >
>      >
>      >
>      > --
>      > Graziella Galea
>      >
>      >
>      > _______________________________________________
>      > Soot-list mailing list
>      > Soot-list at sable.mcgill.ca <mailto:Soot-list at sable.mcgill.ca>
>      > http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
>      >
>     _______________________________________________
>     Soot-list mailing list
>     Soot-list at sable.mcgill.ca <mailto:Soot-list at sable.mcgill.ca>
>     http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
>
>
>
>
> --
> Graziella Galea
>
>
> _______________________________________________
> Soot-list mailing list
> Soot-list at sable.mcgill.ca
> http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
>


More information about the Soot-list mailing list