[Soot-list] problems with Paddle's precision

Eric Bodden eric.bodden at mail.mcgill.ca
Wed Jan 17 18:40:50 EST 2007


When you use the original names option, Soot tries to reconstruct the original local variables from stack locations and then assigns them the original name. This is done in  something called a "local variable packer" or similar.

This packer leads to the fact that those assignments in the original Jimple code...

        $r5 = new Test;
        r3 = $r5;
        $r6 = new Test;
        $r7 = new Test;

... are now done on the same stack location/variable $r1, because the packer eagerly packed those three locations into one:

        $r1 = new Test;
        foo = $r1;
        $r1 = new Test;
        $r1 = new Test;

Since paddle is flow-insensitive, this makes all three allocation sites end up in the point-to set of foo, while on the original code only the first did, because it was the only one being aliased with foo.

I think there is no easy way to get around this in the packer, so you might just want to disable the original variable names option in this case.

Ondrej, should Soot issue a warning if this parameter combination is used?

Eric

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






More information about the Soot-list mailing list