[Soot-list] rta callgraph incomplete ?

Nicolas BARRE Nicolas.Barre at irisa.fr
Thu Mar 5 06:08:06 EST 2009


Hi,

I'm currently trying the rta algorithm provided by the spark package.
I obtain a call graph with only 15 edges while the cha algorithm gives 
more than 90000 edges...
This result is strange because rta spends a long time to compute and the 
verbose option tells :
   Total methods: 27592
   Initially reachable methods: 15199
   Classes with at least one reachable method: 2273

Here is my code :

public static void main(String[] argv){
    String main_name = argv[0];
    String cp = argv[1];
    Scene.v().setSootClassPath(cp);
    Options.v().set_whole_program(true);
    Options.v().set_app(true);

    SootClass main_class = Scene.v().loadClass(main_name, SootClass.BODIES);
    SootMethod main_method = main_class.getMethodByName("main");
    s.setMainClass(main_class);

    Scene.v().loadNecessaryClasses();

    CallGraphBuilder cg_builder;
    CallGraph cg;
    ContextInsensitiveBuilder cg_ins_builder =
        new ContextInsensitiveBuilder();
    TreeMap<String,String> map = new TreeMap();
    map.put("enabled","true");
    map.put("verbose","true");
    map.put("rta","true");
    map.put("on-fly-cg","false");
    map.put("simulates-natives","false");
    map.put("propagator","worklist");
    map.put("set-impl","hash");

    SparkOptions spark_options = new SparkOptions(map);
    PAG pag = cg_ins_builder.setup(spark_options);
    cg_ins_builder.build();

    cg_builder = new CallGraphBuilder(pag);
    cg_builder.build();
    cg = cg_builder.getCallGraph();
    ...
}

 Is there something wrong in this code ?

Thanks,
Nicolas


More information about the Soot-list mailing list