<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content="text/html; charset=gb2312" http-equiv=Content-Type>
<META name=GENERATOR content="MSHTML 8.00.6001.18828">
<STYLE>@font-face {
        font-family: 宋体;
}
@font-face {
        font-family: Verdana;
}
@font-face {
        font-family: @宋体;
}
@page Section1 {size: 595.3pt 841.9pt; margin: 72.0pt 90.0pt 72.0pt 90.0pt; layout-grid: 15.6pt; }
P.MsoNormal {
        TEXT-JUSTIFY: inter-ideograph; TEXT-ALIGN: justify; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Times New Roman"; FONT-SIZE: 10.5pt
}
LI.MsoNormal {
        TEXT-JUSTIFY: inter-ideograph; TEXT-ALIGN: justify; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Times New Roman"; FONT-SIZE: 10.5pt
}
DIV.MsoNormal {
        TEXT-JUSTIFY: inter-ideograph; TEXT-ALIGN: justify; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Times New Roman"; FONT-SIZE: 10.5pt
}
A:link {
        COLOR: blue; TEXT-DECORATION: underline
}
SPAN.MsoHyperlink {
        COLOR: blue; TEXT-DECORATION: underline
}
A:visited {
        COLOR: purple; TEXT-DECORATION: underline
}
SPAN.MsoHyperlinkFollowed {
        COLOR: purple; TEXT-DECORATION: underline
}
SPAN.EmailStyle17 {
        FONT-STYLE: normal; FONT-FAMILY: Verdana; COLOR: windowtext; FONT-WEIGHT: normal; TEXT-DECORATION: none; mso-style-type: personal-compose
}
DIV.Section1 {
        page: Section1
}
UNKNOWN {
        FONT-SIZE: 10pt
}
BLOCKQUOTE {
        MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; MARGIN-LEFT: 2em
}
OL {
        MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px
}
UL {
        MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px
}
</STYLE>
</HEAD>
<BODY style="MARGIN: 10px; FONT-FAMILY: verdana; FONT-SIZE: 10pt">
<DIV><FONT color=#000080 size=2 face=Verdana>Hi, John Criswell!</FONT></DIV>
<DIV><FONT color=#000080></FONT> </DIV>
<DIV style="TEXT-INDENT: 2em"><FONT color=#000080>Thank you for your detailed 
and fast reply.</FONT></DIV>
<DIV style="TEXT-INDENT: 2em"><FONT color=#000080>I will update my proposal 
following your suggestion as soon as possible.</FONT></DIV>
<DIV style="TEXT-INDENT: 2em"><FONT color=#000080></FONT> </DIV>
<DIV><FONT color=#000080>Best Regards!</FONT></DIV>
<DIV><FONT color=#000080>Qiuping</FONT></DIV>
<DIV><FONT color=#000080 size=2 face=Verdana></FONT> </DIV>
<DIV><FONT color=#000080 size=2 face=Verdana></FONT> </DIV>
<DIV><FONT color=#c0c0c0 size=2 face=Verdana>2010-04-08 </FONT></DIV><FONT 
color=#000080 size=2 face=Verdana>
<HR style="WIDTH: 100px" align=left color=#b5c4df SIZE=1>
</FONT>
<DIV><FONT color=#c0c0c0 size=2 face=Verdana><SPAN>yiqiuping1986</SPAN> 
</FONT></DIV>
<HR color=#b5c4df SIZE=1>

<DIV><FONT size=2 face=Verdana><STRONG>发件人:</STRONG> John Criswell </FONT></DIV>
<DIV><FONT size=2 face=Verdana><STRONG>发送时间:</STRONG> 2010-04-07  23:57:29 
</FONT></DIV>
<DIV><FONT size=2 face=Verdana><STRONG>收件人:</STRONG> yiqiuping1986 </FONT></DIV>
<DIV><FONT size=2 face=Verdana><STRONG>抄送:</STRONG> llvmdev </FONT></DIV>
<DIV><FONT size=2 face=Verdana><STRONG>主题:</STRONG> Re: summer of code idea— 
update the SAFECode project to the new LLVM API </FONT></DIV>
<DIV><FONT size=2 face=Verdana></FONT> </DIV>
<DIV><FONT size=2 face=Verdana>
<DIV>yiqiuping1986 wrote:</DIV>
<DIV>> Hi, John Criswell!</DIV>
<DIV>> You have said to me that SAFECode had not been maintained for several</DIV>
<DIV>> years,</DIV>
<DIV></DIV>
<DIV>Just to clarify, SAFECode *has* been and *is* maintained (primarily by</DIV>
<DIV>me). The release_26 branch in the SVN repository works with LLVM 2.6,</DIV>
<DIV>and mainline is working (with some regressions) with the upcoming LLVM</DIV>
<DIV>2.7. You can subscribe to the SVA Commits mailing list</DIV>
<DIV>(http://lists.cs.uiuc.edu/mailman/listinfo/sva-commits) to get email</DIV>
<DIV>whenever a commit is made to SAFECode.</DIV>
<DIV></DIV>
<DIV>However, there is an inter-procedural static array bounds checking pass</DIV>
<DIV>that comprises a small component of SAFECode. It is an optional</DIV>
<DIV>component, so SAFECode works without it, but SAFECode would work better</DIV>
<DIV>if this static array bounds checking pass were working.</DIV>
<DIV></DIV>
<DIV>This inter-procedural static array bounds checking pass in SAFECode has</DIV>
<DIV>not been maintained and needs to 1) be updated to work with LLVM</DIV>
<DIV>2.6/2.7; 2) have its bugs fixed; and 3) improved so that it has better</DIV>
<DIV>performance (i.e., no repeated fork()/exec() for constraint solving).</DIV>
<DIV></DIV>
<DIV></DIV>
<DIV></DIV>
<DIV>> now I have submitted my proposal for updating the SAFCode project to</DIV>
<DIV>> the new LLVM APIs.</DIV>
<DIV>> If you are still interested in the topic and willing to guid my</DIV>
<DIV>> project, I will be very happy.</DIV>
<DIV>> Now I'm waiting for you comments.</DIV>
<DIV>> Here is my proposal:</DIV>
<DIV>> http://socghop.appspot.com/gsoc/student_proposal/show/google/gsoc2010/easyqiu/t127038894856</DIV>
<DIV></DIV>
<DIV>Looking back at my previous email, I see that I was unclear. SAFECode,</DIV>
<DIV>as a whole, is up-to-date with LLVM. However, it is missing its static</DIV>
<DIV>array bounds checking pass (because that specific pass has not been</DIV>
<DIV>maintained). What I was suggesting is that, as a GSoC project, you could</DIV>
<DIV>update the static array bounds checking code from the SAFECode project.</DIV>
<DIV></DIV>
<DIV>With that in mind, here is what I think you should do:</DIV>
<DIV></DIV>
<DIV>1) Update your "Check bounds overflow bugs in C programs based on LLVM"</DIV>
<DIV>proposal</DIV>
<DIV>(http://socghop.appspot.com/gsoc/student_proposal/show/google/gsoc2010/easyqiu/t126993884556).</DIV>
<DIV>In it, state that</DIV>
<DIV>a) you are specifically interested in implementing *static* array bounds</DIV>
<DIV>checking</DIV>
<DIV>b) there is old code in the SAFECode project which you may reuse to</DIV>
<DIV>build your static array bounds checking pass</DIV>
<DIV>c) you will investigate whether any of the static array bounds checking</DIV>
<DIV>code in SAFECode is useful. If it is, you can reuse it. Otherwise, you</DIV>
<DIV>will develop something new.</DIV>
<DIV>d) remove the comment about Edwin Torok's pass being intra-procedural.</DIV>
<DIV>He has told us (or at least me) that his analysis is inter-procedural.</DIV>
<DIV>e) you can list me as a potential mentor, if you like.</DIV>
<DIV></DIV>
<DIV>2) Delete the "Update the SAFECode project to the new LLVM API"</DIV>
<DIV>proposal. SAFECode, as a whole, works with LLVM 2.6/2.7. Reusing the old</DIV>
<DIV>static array bounds checking pass from SAFECode can be merged into your</DIV>
<DIV>bounds checking proposal (as I stated above).</DIV>
<DIV></DIV>
<DIV>3) In all of your proposals, you should state why the mentor would be a</DIV>
<DIV>good mentor. In my case, you can state that I am a past LLVM contributor</DIV>
<DIV>and that I am the primary maintainer of the SAFECode project (which uses</DIV>
<DIV>LLVM extensively).</DIV>
<DIV></DIV>
<DIV>4) In your ABCD proposal, did you copy the text describing the ABCD</DIV>
<DIV>algorithm from the ABCD paper? If so, don't do that; describe the</DIV>
<DIV>algorithm in your own words (even if your English isn't perfect). It</DIV>
<DIV>will show that you understand the algorithm and prevent you from being</DIV>
<DIV>accused of plagiarism.</DIV>
<DIV></DIV>
<DIV>5) Cite sources. If your proposal states that you are going to implement</DIV>
<DIV>an algorithm described in a paper, specify exactly which paper it is.</DIV>
<DIV>That way, the proposal reviewer can look at the paper.</DIV>
<DIV></DIV>
<DIV>-- John T.</DIV>
<DIV></DIV>
<DIV></DIV>
<DIV></DIV>
<DIV>> 2010-04-07</DIV>
<DIV>> ------------------------------------------------------------------------</DIV>
<DIV>> yiqiuping1986</DIV>
<DIV>> ------------------------------------------------------------------------</DIV>
<DIV>> *发件人:* John Criswell</DIV>
<DIV>> *发送时间:* 2010-03-30 22:42:53</DIV>
<DIV>> *收件人:* John Regehr</DIV>
<DIV>> *抄送:* 易秋萍; llvmdev@cs.uiuc.edu</DIV>
<DIV>> *主题:* Re: [LLVMdev]summer_of_code_idea_—_checking_bounds_overflow_bugs</DIV>
<DIV>> John Regehr wrote:</DIV>
<DIV>> > Qiuping,</DIV>
<DIV>> ></DIV>
<DIV>> > Have you looked at what has already been done? I would expect that</DIV>
<DIV>> taking</DIV>
<DIV>> > previous work such as this:</DIV>
<DIV>> ></DIV>
<DIV>> > http://llvm.org/pubs/2006-05-24-SAFECode-BoundsCheck.html</DIV>
<DIV>> ></DIV>
<DIV>> > and integrating into current LLVM would be a better idea than starting</DIV>
<DIV>> > over.</DIV>
<DIV>> ></DIV>
<DIV>> This code is publicly available from the SAFECode project (see</DIV>
<DIV>> http://safecode.cs.illinois.edu to see how to get it). However, it has</DIV>
<DIV>> not been maintained well over the years and is currently disabled.</DIV>
<DIV>> Getting it to work again with LLVM 2.6 or replacing it with something</DIV>
<DIV>> better would be nice.</DIV>
<DIV>> I'm writing up a response to this project idea as I'm willing to mentor</DIV>
<DIV>> it; I'll send it out shortly.</DIV>
<DIV>> -- John T.</DIV>
<DIV>> > John</DIV>
<DIV>> ></DIV>
<DIV>> ></DIV>
<DIV>> > On Tue, 30 Mar 2010, ??? wrote:</DIV>
<DIV>> ></DIV>
<DIV>> ></DIV>
<DIV>> >> Hi,</DIV>
<DIV>> >></DIV>
<DIV>> >> Some days ago I am interested in detecting undefined behaviors</DIV>
<DIV>> >></DIV>
<DIV>> >> in C programs based on Clang. After several days? investigation, I</DIV>
<DIV>> think</DIV>
<DIV>> >></DIV>
<DIV>> >> checking bounds overflow bugs is more interesting, because bounds</DIV>
<DIV>> >></DIV>
<DIV>> >> overflow is one of the most frequently encountered errors in C</DIV>
<DIV>> programs.</DIV>
<DIV>> >></DIV>
<DIV>> >> For example, performing pointer arithmetic without checking bounds</DIV>
<DIV>> >></DIV>
<DIV>> >> can cause bounds overflow. To increase the accuracy of finding bugs,</DIV>
<DIV>> >></DIV>
<DIV>> >> I want to write several passes, based on slicing, inline and summary</DIV>
<DIV>> >> function</DIV>
<DIV>> >></DIV>
<DIV>> >> / (partial) transition function, to implement intre-procedural</DIV>
<DIV>> analysis.</DIV>
<DIV>> >></DIV>
<DIV>> >> Does some person have interest in the project? I need a mentor,</DIV>
<DIV>> >></DIV>
<DIV>> >> and wait for your reply.</DIV>
<DIV>> >></DIV>
<DIV>> >></DIV>
<DIV>> >></DIV>
<DIV>> >> Best Reagards!</DIV>
<DIV>> >></DIV>
<DIV>> >></DIV>
<DIV>> >></DIV>
<DIV>> >> Qiuping Yi</DIV>
<DIV>> >></DIV>
<DIV>> >></DIV>
<DIV>> >></DIV>
<DIV>> > ></DIV>
<DIV>> _______________________________________________</DIV>
<DIV>> LLVM Developers mailing list</DIV>
<DIV>> LLVMdev@cs.uiuc.edu http://llvm.cs.uiuc.edu</DIV>
<DIV>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</DIV>
<DIV></DIV></FONT></DIV></BODY></HTML>