[Soot-list] question to PointsToSet

Lei Shang shangl at cse.unsw.edu.au
Sat Feb 19 05:03:30 EST 2011


I think the A.p and B.p are actually represented in different fields.
For the above example, I printed out the PAG, it clearly shows
FieldRefNode 4 LocalVarNode 8 a <t: void main(java.lang.String[])>.<A: int[] p>,
FieldRefNode 6 LocalVarNode 15 b <t: void main(java.lang.String[])>.<B: int[] p>
for
a.p and b.p respectively
where a is an object of A and b is an object of B.

Lei Shang


2011/2/19 Ondrej Lhotak <olhotak at uwaterloo.ca>:
> The dump-html option to cg.spark causes Spark to output the pointer
> assignment graph in an HTML browsable form suitable for debugging.
> Be warned that this outputs a very large .zip file containing the HTML
> (on the order of 1 GB).
>
> If A.p and B.p are indeed different fields, Soot should represent them
> with different SootFields, and Spark should treat different SootFields
> as distinct. If either of these "shoulds" is not happening, it's a bug.
>
> Ondrej
>
> On Fri, Feb 18, 2011 at 03:13:26PM +0100, Jochen Huck wrote:
>> EDIT:
>>
>> I wanted to write: class B extends A {...
>> Also I have to point out that A.p and B.p are different fields according
>> to my debugger...
>>
>> Jochen
>>
>> Am 18.02.2011 15:01, schrieb Jochen Huck:
>> > Hi,
>> >
>> > I'm running SPARK with default options (-p cg.spark enable). For a
>> > simple array element assignment (temp$1[temp$2] = temp$3) I get a bunch
>> > of reaching objects. I would like to reduce these but I don't know where
>> > to start. The assigned array<p>  is not local but a field that belongs
>> > to a class<B>  that extends another class<A>.<A>  and<B>  both declare
>> > a field named<p>. The situation is even more complex...but I don't know
>> > if that affects my problem
>> >
>> > class A {
>> >       int[] p;
>> > }
>> >
>> > class B {
>> >       int[] p;
>> >
>> >       foo() {
>> >           p[i] = ...
>> >       }
>> > }
>> >
>> > The reaching objects for<p>  look like:
>> >
>> > [Field: ARRAY_ELEMENTS_NODEAllocNode 27 Pair
>> > AbstractObject,Any_subtype_of_java.security.PrivilegedActionException in
>> > method null,AllocNode 175 newarray (byte)[16] in method
>> > <sun.net.util.IPAddressUtil: byte[]
>> > textToNumericFormatV6(java.lang.String)>,AllocNode 176 newarray
>> > (byte)[4] in method<sun.net.util.IPAddressUtil: byte[]
>> > textToNumericFormatV4(java.lang.String)>,AllocNode 191 newarray
>> > (byte)[4] in method<sun.net.util.IPAddressUtil: byte[]
>> > convertFromIPv4MappedAddress(byte[])>,AllocNode 558 Pair
>> > AbstractObject,Any_subtype_of_java.lang.Thread in method null,AllocNode
>> > 986 Pair AbstractObject,Any_subtype_of_java.lang.Object in method
>> > null,AllocNode 1709 newarray (byte)[$i1] in method
>> > <java.util.jar.JarFile: byte[]
>> > getBytes(java.util.zip.ZipEntry)>,AllocNode 1872 newarray (byte)[$i0] in
>> > method<java.io.ByteArrayOutputStream: byte[] toByteArray()>,AllocNode
>> > 1984 newarray (byte)[1] in method
>> > <sun.security.util.DerIndefLenConverter: byte[]
>> > getLengthBytes(int)>,AllocNode 1985 newarray (byte)[2] in method
>> > <sun.security.util.DerIndefLenConverter: byte[]
>> > getLengthBytes(int)>,AllocNode 1986 newarray (byte)[3] in method
>> > <sun.security.util.DerIndefLenConverter: byte[]
>> > getLengthBytes(int)>,AllocNode 1987 newarray (byte)[4] in method
>> > <sun.security.util.DerIndefLenConverter: byte[]
>> > getLengthBytes(int)>,AllocNode 1988 newarray (byte)[5] in method
>> > <sun.security.util.DerIndefLenConverter: byte[]
>> > getLengthBytes(int)>,AllocNode 2234 newarray (byte)[l3] in method
>> > <sun.security.util.BitArray: void<init>(int,byte[])>,AllocNode 2481
>> > newarray (byte)[4] in method<java.net.Inet4Address: byte[]
>> > getAddress()>,AllocNode 2486 newarray (byte)[$i0] in method
>> > <sun.security.util.BitArray: void<init>(int)>,AllocNode 2878 newarray
>> > (byte)[l4] in method<sun.util.calendar.ZoneInfoFile$1: java.lang.Object
>> > run()>,AllocNode 3154 Pair
>> > AbstractObject,Any_subtype_of_java.lang.ClassLoader in method
>> > null,AllocNode 3734 newarray (byte)[temp$2] in method
>> > <ij.process.ColorProcessor: ij.process.ImageProcessor
>> > filterRGB(int,double,double)>,AllocNode 3735 newarray (byte)[temp$5] in
>> > method<ij.process.ColorProcessor: ij.process.ImageProcessor
>> > filterRGB(int,double,double)>,AllocNode 3736 newarray (byte)[temp$8] in
>> > method<ij.process.ColorProcessor: ij.process.ImageProcessor
>> > filterRGB(int,double,double)>,AllocNode 3749 newarray (byte)[temp$1] in
>> > method<ij.process.ByteProcessor3: ij.process.ImageProcessor
>> > createProcessor(int,int)>,AllocNode 3835 newarray (byte)[temp$6] in
>> > method<ij.process.ByteProcessor3: java.lang.Object
>> > getPixelsCopy()>,AllocNode 3851 newarray (byte)[temp$1] in method
>> > <ij.process.ByteProcessor2: ij.process.ImageProcessor
>> > createProcessor(int,int)>,AllocNode 3859 newarray (byte)[temp$6] in
>> > method<ij.process.ByteProcessor2: java.lang.Object
>> > getPixelsCopy()>,AllocNode 3869 newarray (byte)[temp$1] in method
>> > <ij.process.ByteProcessor1: ij.process.ImageProcessor
>> > createProcessor(int,int)>,AllocNode 3878 newarray (byte)[temp$6] in
>> > method<ij.process.ByteProcessor1: java.lang.Object
>> > getPixelsCopy()>,AllocNode 3944 newarray (byte)[l1] in method
>> > <sun.security.util.DerInputBuffer: byte[] toByteArray()>,AllocNode 3956
>> > newarray (byte)[$i2] in method<sun.security.util.DerValue: byte[]
>> > getOctetString()>,AllocNode 3960 newarray (byte)[l1] in method
>> > <sun.security.util.DerInputStream: byte[] getOctetString()>,AllocNode
>> > 3962 newarray (byte)[$i0] in method<sun.security.util.DerValue: byte[]
>> > append(byte[],byte[])>,AllocNode 4286 newarray (byte)[$i0] in method
>> > <sun.security.util.BitArray: void<init>(boolean[])>,AllocNode 4912
>> > newarray (byte)[4] in method<sun.security.x509.IPAddressName:
>> > java.lang.String getName()>,AllocNode 4913 newarray (byte)[4] in method
>> > <sun.security.x509.IPAddressName: java.lang.String getName()>,AllocNode
>> > 4914 newarray (byte)[16] in method<sun.security.x509.IPAddressName:
>> > java.lang.String getName()>,AllocNode 4915 newarray (byte)[16] in method
>> > <sun.security.x509.IPAddressName: java.lang.String getName()>,AllocNode
>> > 8267 newarray (byte)[$i0] in method<java.awt.geom.GeneralPath: void
>> > needRoom(int,int,boolean)>,AllocNode 8268 newarray (byte)[l2] in method
>> > <java.awt.geom.GeneralPath: void<init>(int,int,int)>,AllocNode 8542
>> > newarray (byte)[temp$0] in method<ij.process.ByteProcessor: void
>> > <init>(int,int)>,AllocNode 8672 newarray (byte)[l1] in method
>> > <java.awt.image.DataBufferByte: void<init>(int)>,AllocNode 8706
>> > newarray (byte)[65536] in method<java.awt.image.ColorModel: byte[]
>> > getGray16TosRGB8LUT(java.awt.color.ICC_ColorSpace)>,AllocNode 8713
>> > newarray (byte)[65536] in method<java.awt.image.ColorModel: byte[]
>> > getLinearGray16ToOtherGray8LUT(java.awt.color.ICC_ColorSpace)>,AllocNode
>> > 8715 newarray (byte)[256] in method<java.awt.image.ColorModel: byte[]
>> > getGray8TosRGB8LUT(java.awt.color.ICC_ColorSpace)>,AllocNode 8724
>> > newarray (byte)[256] in method<java.awt.image.ColorModel: byte[]
>> > getLinearRGB8TosRGB8LUT()>,AllocNode 8780 newarray (byte)[l1] in method
>> > <java.awt.image.DataBufferByte: void<init>(int,int)>,AllocNode 8971
>> > newarray (byte)[temp$9] in method<ij.io.RandomAccessStream: long
>> > readUntil(long)>,AllocNode 10806 newarray (byte)[temp$12] in method
>> > <ij.process.TypeConverter: ij.process.ByteProcessor
>> > convertRGBToByte()>,AllocNode 10813 newarray (byte)[size] in method
>> > <ij.process.TypeConverter: ij.process.ByteProcessor
>> > convertShortToByte()>,AllocNode 10826 newarray (byte)[temp$7] in method
>> > <ij.process.ByteProcessor: void<init>(java.awt.Image)>,AllocNode 10956
>> > newarray (byte)[size] in method<ij.CompositeImage: ij.ImageStack
>> > getRGBStack(ij.ImagePlus)>,AllocNode 10957 newarray (byte)[size] in
>> > method<ij.CompositeImage: ij.ImageStack
>> > getRGBStack(ij.ImagePlus)>,AllocNode 10958 newarray (byte)[size] in
>> > method<ij.CompositeImage: ij.ImageStack
>> > getRGBStack(ij.ImagePlus)>,AllocNode 11468 newarray (byte)[temp$5] in
>> > method<ij.gui.Plot: void createImage()>,AllocNode 11475 newarray
>> > (byte)[temp$1] in method<ij.process.ByteProcessor:
>> > ij.process.ImageProcessor createProcessor(int,int)>,AllocNode 11783
>> > newarray (byte)[temp$1] in method<ij.gui.NewImage: ij.ImagePlus
>> > createByteImage(java.lang.String,int,int,int,int)>,AllocNode 11786
>> > newarray (byte)[temp$35] in method<ij.gui.NewImage: boolean
>> > createStack(ij.ImagePlus,ij.process.ImageProcessor,int,int,int)>,AllocNode
>> > 11825 newarray (byte)[temp$3] in method<ij.io.ImageReader: byte[]
>> > read8bitImage(java.io.InputStream)>,AllocNode 11839 newarray
>> > (byte)[temp$9] in method<ij.io.ImageReader: byte[]
>> > read1bitImage(java.io.InputStream)>,AllocNode 11874 newarray
>> > (byte)[temp$0] in method<ij.io.ImageReader: byte[]
>> > readCompressed8bitImage(java.io.InputStream)>,AllocNode 12166 newarray
>> > (byte)[size] in method<ij.process.ShortProcessor: byte[]
>> > create8BitImage()>,AllocNode 12228 newarray (byte)[$i0] in method
>> > <java.awt.image.PixelGrabber: void
>> > setPixels(int,int,int,int,java.awt.image.ColorModel,byte[],int,int)>,AllocNode
>> > 13166 newarray (byte)[temp$7] in method
>> > <ij.plugin.frame.ContrastAdjuster: void
>> > plotHistogram(ij.ImagePlus)>,AllocNode 13167 newarray (byte)[temp$8] in
>> > method<ij.plugin.frame.ContrastAdjuster: void
>> > plotHistogram(ij.ImagePlus)>,AllocNode 13168 newarray (byte)[temp$9] in
>> > method<ij.plugin.frame.ContrastAdjuster: void
>> > plotHistogram(ij.ImagePlus)>,AllocNode 13466 newarray (byte)[l1] in
>> > method<com.sun.imageio.plugins.png.PNGImageReader: void
>> > readMetadata()>,AllocNode 13471 newarray (byte)[l9] in method
>> > <com.sun.imageio.plugins.png.PNGImageReader: java.util.Iterator
>> > getImageTypes(int)>,AllocNode 13472 newarray (byte)[l9] in method
>> > <com.sun.imageio.plugins.png.PNGImageReader: java.util.Iterator
>> > getImageTypes(int)>,AllocNode 13473 newarray (byte)[l9] in method
>> > <com.sun.imageio.plugins.png.PNGImageReader: java.util.Iterator
>> > getImageTypes(int)>,AllocNode 13474 newarray (byte)[$i0] in method
>> > <com.sun.imageio.plugins.png.PNGImageReader: java.util.Iterator
>> > getImageTypes(int)>,AllocNode 13484 newarray (byte)[l5] in method
>> > <javax.imageio.ImageTypeSpecifier: void<clinit>()>,AllocNode 13485
>> > newarray (byte)[l5] in method<javax.imageio.ImageTypeSpecifier: void
>> > <clinit>()>,AllocNode 13486 newarray (byte)[l5] in method
>> > <javax.imageio.ImageTypeSpecifier: void<clinit>()>,AllocNode 13487
>> > newarray (byte)[l5] in method<javax.imageio.ImageTypeSpecifier: void
>> > <clinit>()>,AllocNode 13618 newarray (byte)[l4] in method
>> > <com.sun.imageio.plugins.png.PNGImageReader: void
>> > parse_PLTE_chunk(int)>,AllocNode 13619 newarray (byte)[l4] in method
>> > <com.sun.imageio.plugins.png.PNGImageReader: void
>> > parse_PLTE_chunk(int)>,AllocNode 13620 newarray (byte)[l4] in method
>> > <com.sun.imageio.plugins.png.PNGImageReader: void
>> > parse_PLTE_chunk(int)>,AllocNode 13635 newarray (byte)[l4] in method
>> > <com.sun.imageio.plugins.png.PNGImageReader: void
>> > parse_tRNS_chunk(int)>,AllocNode 13763 newarray (byte)[8] in method
>> > <com.sun.imageio.plugins.gif.GIFImageReader: void
>> > readMetadata()>,AllocNode 13764 newarray (byte)[3] in method
>> > <com.sun.imageio.plugins.gif.GIFImageReader: void
>> > readMetadata()>,AllocNode 13774 newarray (byte)[l7] in method
>> > <com.sun.imageio.plugins.gif.GIFImageReader: java.util.Iterator
>> > getImageTypes(int)>,AllocNode 13775 newarray (byte)[l7] in method
>> > <com.sun.imageio.plugins.gif.GIFImageReader: java.util.Iterator
>> > getImageTypes(int)>,AllocNode 13776 newarray (byte)[l7] in method
>> > <com.sun.imageio.plugins.gif.GIFImageReader: java.util.Iterator
>> > getImageTypes(int)>,AllocNode 13777 newarray (byte)[l7] in method
>> > <com.sun.imageio.plugins.gif.GIFImageReader: java.util.Iterator
>> > getImageTypes(int)>,AllocNode 13782 newarray (byte)[0] in method
>> > <com.sun.imageio.plugins.gif.GIFImageReader: byte[]
>> > concatenateBlocks()>,AllocNode 13783 newarray (byte)[$i0] in method
>> > <com.sun.imageio.plugins.gif.GIFImageReader: byte[]
>> > concatenateBlocks()>,AllocNode 13858 newarray (byte)[$i0] in method
>> > <com.sun.imageio.plugins.jpeg.MarkerSegment: void
>> > loadData(com.sun.imageio.plugins.jpeg.JPEGBuffer)>,AllocNode 13864
>> > newarray (byte)[$i0] in method
>> > <com.sun.imageio.plugins.jpeg.JFIFMarkerSegment$ICCMarkerSegment: void
>> > <init>(com.sun.imageio.plugins.jpeg.JFIFMarkerSegment,com.s...
>> >
>> > Is anyone familiar with this stuff?
>> >
>> > Thanks, Jochen
>> > _______________________________________________
>> > Soot-list mailing list
>> > 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
>> http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
>>
> _______________________________________________
> 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