[Soot-list] Empty points-to information

Eric Bodden bodden at st.informatik.tu-darmstadt.de
Sun Jul 11 07:52:28 EDT 2010


Hi Khilan.

Spark makes unsafe assumptions about Class.forName and
Class.newInstance calls unless you use safe-forname and
safe-newinstance. Spark also generally makes unsafe assumptions about
Method.invoke calls. (it assumes that the call goes nowhere)

The only way to curretly cope with this in a somewhat reasonable way
is to use Tamiflex in combination with Soot:
http://code.google.com/p/tamiflex/wiki/DaCapoAndSoot

Tamiflex records information about reflective calls which you can then
feed to Spark.

Eric

--
Dr. Eric Bodden
Software Technology Group, Technische Universität Darmstadt, Germany
Tel: +49 6151 16-5478    Fax: +49 6151 16-5410
Mailing Address: S2|02 A209, Hochschulstraße 10, 64289 Darmstadt



On 11 July 2010 10:35, Khilan Gudka <khilan at doc.ic.ac.uk> wrote:
> Hi,
>
> I used the verbose option to the cg phase and I got quite a few lines
> saying to use safe-forname and safe-newinstance for a conservative
> result. Is this really necessary?
>
> There was one line however, which just said:
>
> Warning: call to java.lang.reflect.Method: invoke() from
> <java.lang.reflect.Proxy$ClassFactory: java.lang.Class
> generate(java.lang.ClassLoader)>; graph will be incomplete!
>
> What do I do for this?
>
> Thanks,
> Khilan
>
> On 11 July 2010 08:44, Eric Bodden <bodden at st.informatik.tu-darmstadt.de> wrote:
>>> Is GNU Classpath known to work well with soot (in terms of sound
>>> callgraph construction)?
>>
>> Rather not.
>>
>>> How do I know if the callgraph is complete?
>>
>> In many cases Soot will tell you. (look at the output) But the only
>> way to make sure is to create dynamic ones and to then compare both
>> graphs, e.g. using Ondrej Lhotak's ProBe tool.
>>
>> Eric
>>
>


More information about the Soot-list mailing list