<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 14 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:"\@SimSun";
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
@font-face
        {font-family:"Calibri Light";
        panose-1:2 15 3 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        text-align:justify;
        font-size:10.5pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
code
        {mso-style-priority:99;
        font-family:SimSun;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Vorformatiert Zchn";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:SimSun;}
span.HTMLVorformatiertZchn
        {mso-style-name:"HTML Vorformatiert Zchn";
        mso-style-priority:99;
        mso-style-link:"HTML Vorformatiert";
        font-family:Consolas;}
span.E-MailFormatvorlage20
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
p.HTML, li.HTML, div.HTML
        {mso-style-name:"HTML \9884\8BBE\683C\5F0F";
        mso-style-link:"HTML \9884\8BBE\683C\5F0F Char";
        margin:0cm;
        margin-bottom:.0001pt;
        text-align:justify;
        font-size:10.5pt;
        font-family:"Calibri","sans-serif";}
span.HTMLChar
        {mso-style-name:"HTML \9884\8BBE\683C\5F0F Char";
        mso-style-priority:99;
        mso-style-link:"HTML \9884\8BBE\683C\5F0F";
        font-family:SimSun;}
span.apple-converted-space
        {mso-style-name:apple-converted-space;}
span.E-MailFormatvorlage24
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=DE link="#0563C1" vlink="#954F72" style='text-justify-trim:punctuation'><div class=WordSection1><p class=MsoNormal><span style='font-size:11.0pt;color:#1F497D'>Hi Lulu,<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt;color:#1F497D'>In the Java code you submitted, there is only an implicit downcast. For this, you do not need an explicit cast expression in Java and so Soot will not generate one in Jimple either.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt;color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt;color:#1F497D'>Best regards,<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt;color:#1F497D'> Steven<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt;color:#1F497D'><o:p> </o:p></span></p><div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal align=left style='text-align:left'><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>Von:</span></b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> soot-list-bounces@CS.McGill.CA [mailto:soot-list-bounces@CS.McGill.CA] <b>Im Auftrag von </b>lulu chen<br><b>Gesendet:</b> Dienstag, 5. Mai 2015 10:41<br><b>An:</b> soot-list@CS.McGill.CA<br><b>Betreff:</b> [Soot-list] where the upcasting in soot?<o:p></o:p></span></p></div></div><p class=MsoNormal align=left style='text-align:left'><o:p> </o:p></p><p class=MsoNormal><i><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";mso-fareast-language:ZH-CN'>Hi, all<o:p></o:p></span></i></p><pre><i><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";color:black;mso-fareast-language:ZH-CN'> I'm considering Soot to develop some dataflow analysis in java class files.</span></i><i><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";color:#222222;background:white;mso-fareast-language:ZH-CN'> I have a parent class<span class=apple-converted-space> </span></span></i><code><i><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";color:#222222;border:none windowtext 1.0pt;padding:0cm;background:#EEEEEE;mso-fareast-language:ZH-CN'>class A</span></i></code><span class=apple-converted-space><i><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";color:#222222;background:white;mso-fareast-language:ZH-CN'> </span></i></span><i><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";color:#222222;background:white;mso-fareast-language:ZH-CN'>and a child class<span class=apple-converted-space> </span></span></i><code><i><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";color:#222222;border:none windowtext 1.0pt;padding:0cm;background:#EEEEEE;mso-fareast-language:ZH-CN'>class B extends A</span></i></code><i><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";color:black;mso-fareast-language:ZH-CN'> ,<o:p></o:p></span></i></pre><p class=MsoNormal align=left style='text-align:left'><i><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";color:black;mso-fareast-language:ZH-CN'>My question is that I cannot find type cast in jimple body. The upcasting stmt a=b ,become r5=r3 (r5,r3 are the same type) , just a AssignStmt.<o:p></o:p></span></i></p><p class=MsoNormal align=left style='text-align:left'><i><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";mso-fareast-language:ZH-CN'>Ihe relationship between r2 and r5 is missing in the jimple file. How can I get the relationship between r2 and r5 ( such as castexptr).<o:p></o:p></span></i></p><pre><i><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";color:black;mso-fareast-language:ZH-CN'>My example :<o:p></o:p></span></i></pre><p class=MsoNormal align=left style='margin-left:21.0pt;mso-para-margin-left:2.0gd;text-align:left;text-autospace:none'><b><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";color:#7F0055;mso-fareast-language:ZH-CN'>public</span></b><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";color:black;mso-fareast-language:ZH-CN'> </span><b><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";color:#7F0055;mso-fareast-language:ZH-CN'>class</span></b><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";color:black;mso-fareast-language:ZH-CN'> Ctest{</span><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";mso-fareast-language:ZH-CN'><o:p></o:p></span></p><p class=MsoNormal align=left style='margin-left:21.0pt;mso-para-margin-left:2.0gd;text-align:left;text-autospace:none'><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";color:black;mso-fareast-language:ZH-CN'> </span><b><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";color:#7F0055;mso-fareast-language:ZH-CN'>public</span></b><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";color:black;mso-fareast-language:ZH-CN'> </span><b><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";color:#7F0055;mso-fareast-language:ZH-CN'>static</span></b><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";color:black;mso-fareast-language:ZH-CN'> </span><b><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";color:#7F0055;mso-fareast-language:ZH-CN'>void</span></b><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";color:black;mso-fareast-language:ZH-CN'> main(String [] </span><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";color:#6A3E3E;mso-fareast-language:ZH-CN'>args</span><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";color:black;mso-fareast-language:ZH-CN'>){</span><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";mso-fareast-language:ZH-CN'><o:p></o:p></span></p><p class=MsoNormal align=left style='margin-left:21.0pt;mso-para-margin-left:2.0gd;text-align:left;text-autospace:none'><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";color:black;mso-fareast-language:ZH-CN'> A </span><u><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";color:#6A3E3E;mso-fareast-language:ZH-CN'>a</span></u><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";color:black;mso-fareast-language:ZH-CN'> = </span><b><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";color:#7F0055;mso-fareast-language:ZH-CN'>new</span></b><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";color:black;mso-fareast-language:ZH-CN'> A();</span><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";mso-fareast-language:ZH-CN'><o:p></o:p></span></p><p class=MsoNormal align=left style='margin-left:21.0pt;mso-para-margin-left:2.0gd;text-align:left;text-autospace:none'><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";color:black;mso-fareast-language:ZH-CN'> B </span><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";color:#6A3E3E;mso-fareast-language:ZH-CN'>b</span><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";color:black;mso-fareast-language:ZH-CN'> = </span><b><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";color:#7F0055;mso-fareast-language:ZH-CN'>new</span></b><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";color:black;mso-fareast-language:ZH-CN'> B();</span><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";mso-fareast-language:ZH-CN'><o:p></o:p></span></p><p class=MsoNormal align=left style='margin-left:21.0pt;mso-para-margin-left:2.0gd;text-align:left;text-autospace:none'><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";color:black;mso-fareast-language:ZH-CN'> </span><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";color:#6A3E3E;background:yellow;mso-highlight:yellow;mso-fareast-language:ZH-CN'>a</span><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";color:black;background:yellow;mso-highlight:yellow;mso-fareast-language:ZH-CN'>=</span><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";color:#6A3E3E;background:yellow;mso-highlight:yellow;mso-fareast-language:ZH-CN'>b</span><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";color:black;background:yellow;mso-highlight:yellow;mso-fareast-language:ZH-CN'>;</span><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";mso-fareast-language:ZH-CN'><o:p></o:p></span></p><p class=MsoNormal align=left style='margin-left:21.0pt;mso-para-margin-left:2.0gd;text-align:left;text-autospace:none'><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";color:black;mso-fareast-language:ZH-CN'> }</span><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";mso-fareast-language:ZH-CN'><o:p></o:p></span></p><p class=MsoNormal align=left style='margin-left:21.0pt;mso-para-margin-left:2.0gd;text-align:left;text-autospace:none'><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";color:black;mso-fareast-language:ZH-CN'>}</span><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";mso-fareast-language:ZH-CN'><o:p></o:p></span></p><pre><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";color:black;mso-fareast-language:ZH-CN'>The Jimple body :<o:p></o:p></span></pre><p class=MsoNormal align=left style='margin-left:10.5pt;mso-para-margin-left:1.0gd;text-align:left;text-autospace:none'><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";mso-fareast-language:ZH-CN'> public static void main(java.lang.String[])<o:p></o:p></span></p><p class=MsoNormal align=left style='margin-left:10.5pt;mso-para-margin-left:1.0gd;text-align:left;text-autospace:none'><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";mso-fareast-language:ZH-CN'> {<o:p></o:p></span></p><p class=MsoNormal align=left style='margin-left:10.5pt;mso-para-margin-left:1.0gd;text-align:left;text-autospace:none'><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";mso-fareast-language:ZH-CN'> java.lang.String[] r0;<o:p></o:p></span></p><p class=MsoNormal align=left style='margin-left:10.5pt;mso-para-margin-left:1.0gd;text-align:left;text-autospace:none'><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";mso-fareast-language:ZH-CN'> A $r1, r2;<o:p></o:p></span></p><p class=MsoNormal align=left style='margin-left:10.5pt;mso-para-margin-left:1.0gd;text-align:left;text-autospace:none'><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";mso-fareast-language:ZH-CN'> B r3, $r4, r5;<o:p></o:p></span></p><p class=MsoNormal align=left style='margin-left:10.5pt;mso-para-margin-left:1.0gd;text-align:left;text-autospace:none'><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";mso-fareast-language:ZH-CN'><o:p> </o:p></span></p><p class=MsoNormal align=left style='margin-left:10.5pt;mso-para-margin-left:1.0gd;text-align:left;text-autospace:none'><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";mso-fareast-language:ZH-CN'> r0 := @parameter0: java.lang.String[];<o:p></o:p></span></p><p class=MsoNormal align=left style='margin-left:10.5pt;mso-para-margin-left:1.0gd;text-align:left;text-autospace:none'><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";mso-fareast-language:ZH-CN'> $r1 = new A;<o:p></o:p></span></p><p class=MsoNormal align=left style='margin-left:10.5pt;mso-para-margin-left:1.0gd;text-align:left;text-autospace:none'><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";mso-fareast-language:ZH-CN'> <u><span style='color:black'>specialinvoke</span></u> $r1.< A: void <u><span style='color:black'><init></span></u>()>();<o:p></o:p></span></p><p class=MsoNormal align=left style='margin-left:10.5pt;mso-para-margin-left:1.0gd;text-align:left;text-autospace:none'><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";mso-fareast-language:ZH-CN'> r2 = $r1;<o:p></o:p></span></p><p class=MsoNormal align=left style='margin-left:10.5pt;mso-para-margin-left:1.0gd;text-align:left;text-autospace:none'><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";mso-fareast-language:ZH-CN'> $r4 = new B;<o:p></o:p></span></p><p class=MsoNormal align=left style='margin-left:10.5pt;mso-para-margin-left:1.0gd;text-align:left;text-autospace:none'><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";mso-fareast-language:ZH-CN'> <u><span style='color:black'>specialinvoke</span></u> $r4.< B: void <u><span style='color:black'><init></span></u>()>();<o:p></o:p></span></p><p class=MsoNormal align=left style='margin-left:10.5pt;mso-para-margin-left:1.0gd;text-align:left;text-autospace:none'><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";mso-fareast-language:ZH-CN'> r3 = $r4;<o:p></o:p></span></p><p class=MsoNormal align=left style='margin-left:10.5pt;mso-para-margin-left:1.0gd;text-align:left;text-autospace:none'><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";mso-fareast-language:ZH-CN'> <span style='background:yellow;mso-highlight:yellow'>r5 = r3;</span><o:p></o:p></span></p><p class=MsoNormal align=left style='margin-left:10.5pt;mso-para-margin-left:1.0gd;text-align:left;text-autospace:none'><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";mso-fareast-language:ZH-CN'> return;<o:p></o:p></span></p><p class=MsoNormal align=left style='margin-left:10.5pt;mso-para-margin-left:1.0gd;text-align:left;text-indent:14.0pt'><span lang=EN-US style='font-size:14.0pt;font-family:"Calibri Light","sans-serif";mso-fareast-language:ZH-CN'> }<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-fareast-language:ZH-CN'>~lulu<o:p></o:p></span></p></div></body></html>