<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:x="urn:schemas-microsoft-com:office:excel" xmlns:p="urn:schemas-microsoft-com:office:powerpoint" xmlns:a="urn:schemas-microsoft-com:office:access" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema" xmlns:b="urn:schemas-microsoft-com:office:publisher" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:c="urn:schemas-microsoft-com:office:component:spreadsheet" xmlns:odc="urn:schemas-microsoft-com:office:odc" xmlns:oa="urn:schemas-microsoft-com:office:activation" xmlns:html="http://www.w3.org/TR/REC-html40" xmlns:q="http://schemas.xmlsoap.org/soap/envelope/" xmlns:rtc="http://microsoft.com/officenet/conferencing" xmlns:D="DAV:" xmlns:Repl="http://schemas.microsoft.com/repl/" xmlns:mt="http://schemas.microsoft.com/sharepoint/soap/meetings/" xmlns:x2="http://schemas.microsoft.com/office/excel/2003/xml" xmlns:ppda="http://www.passport.com/NameSpace.xsd" xmlns:ois="http://schemas.microsoft.com/sharepoint/soap/ois/" xmlns:dir="http://schemas.microsoft.com/sharepoint/soap/directory/" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:dsp="http://schemas.microsoft.com/sharepoint/dsp" xmlns:udc="http://schemas.microsoft.com/data/udc" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sub="http://schemas.microsoft.com/sharepoint/soap/2002/1/alerts/" xmlns:ec="http://www.w3.org/2001/04/xmlenc#" xmlns:sp="http://schemas.microsoft.com/sharepoint/" xmlns:sps="http://schemas.microsoft.com/sharepoint/soap/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:udcs="http://schemas.microsoft.com/data/udc/soap" xmlns:udcxf="http://schemas.microsoft.com/data/udc/xmlfile" xmlns:udcp2p="http://schemas.microsoft.com/data/udc/parttopart" xmlns:st="" xmlns:st1="urn:schemas-microsoft-com:office:smarttags" 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 11 (filtered medium)">
<base href="x-msg://14347/">
<!--[if !mso]>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<![endif]--><o:SmartTagType
 namespaceuri="urn:schemas-microsoft-com:office:smarttags" name="City"/>
<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
 name="place"/>
<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
 name="PersonName"/>
<!--[if !mso]>
<style>
st1\:*{behavior:url(#default#ieooui) }
</style>
<![endif]-->
<style>
<!--a:link
        {mso-style-priority:99;}
span.MSOHYPERLINK
        {mso-style-priority:99;}
a:visited
        {mso-style-priority:99;}
span.MSOHYPERLINKFOLLOWED
        {mso-style-priority:99;}
p.MSOACETATE
        {mso-style-priority:99;}
li.MSOACETATE
        {mso-style-priority:99;}
div.MSOACETATE
        {mso-style-priority:99;}
span.BALLOONTEXTCHAR
        {mso-style-priority:99;}

 /* Font Definitions */
 @font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:blue;
        text-decoration:underline;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:8.0pt;
        font-family:Tahoma;}
p.balloontext, li.balloontext, div.balloontext
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
span.balloontextchar
        {font-family:Tahoma;}
span.EmailStyle20
        {mso-style-type:personal;
        font-family:Arial;
        color:navy;}
span.EmailStyle21
        {mso-style-type:personal;
        font-family:Calibri;
        color:#1F497D;}
span.EmailStyle22
        {mso-style-type:personal;
        font-family:Arial;
        color:navy;}
span.EmailStyle24
        {mso-style-type:personal-reply;
        font-family:Arial;
        color:navy;}
@page Section1
        {size:595.3pt 841.9pt;
        margin:2.0cm 42.5pt 2.0cm 3.0cm;}
div.Section1
        {page:Section1;}
-->
</style>

</head>

<body lang=RU link=blue vlink=blue style='word-wrap: break-word;-webkit-nbsp-mode: space;
-webkit-line-break: after-white-space'>

<div class=Section1>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'>Hi Jim,<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'>Thank you for the update.
You wrote an interesting idea. If we continue to follow it, I think the best
way is move an implementation of the getPointerToNamedFunction() from JIT/MCJIT
to DefaultJITMemoryManager.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'>And
JIT/MCJIT::getPointerToNamedFunction() just will do something like:<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'>  if
(!isSymbolSearchingDisabled()) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'>    JMM->getPointerToNamedFunction(...);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'>  }<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'>So we can delete MCJIT/Intercept.cpp
and store only JIT/Intercept.cpp.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'>That do you think about
it?<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'>Regards,<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'>Danil<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p>

<div>

<div class=MsoNormal align=center style='text-align:center'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>

<hr size=2 width="100%" align=center tabindex=-1>

</span></font></div>

<p class=MsoNormal><b><font size=2 face=Tahoma><span lang=EN-US
style='font-size:10.0pt;font-family:Tahoma;font-weight:bold'>From:</span></font></b><font
size=2 face=Tahoma><span lang=EN-US style='font-size:10.0pt;font-family:Tahoma'>
<st1:PersonName w:st="on">Jim Grosbach</st1:PersonName>
[mailto:grosbach@apple.com] <br>
<b><span style='font-weight:bold'>Sent:</span></b> Tuesday, March 06, 2012
10:40 PM<br>
<b><span style='font-weight:bold'>To:</span></b> Danil Malyshev<br>
<b><span style='font-weight:bold'>Cc:</span></b> Kaylor, A</span></font><font
size=2 face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'>ndrew; <st1:PersonName
w:st="on">llvm-commits@cs.uiuc.edu</st1:PersonName><br>
<b><span style='font-weight:bold'>Subject:</span></b> Re: RuntimeDyLd new
features</span></font><o:p></o:p></p>

</div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p> </o:p></span></font></p>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>Hi Danil,<o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p> </o:p></span></font></p>

</div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>Ack, sorry! I lost track of where things stood and didn't realize you
were waiting for me. Mea culpa.<o:p></o:p></span></font></p>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p> </o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>I like the general idea of putting the guts of the logic for symbol in
the memory manager interface, as you're right, that's the piece that actually
knows about the target.  The RTDyldMemoryManager is just an interface
specification, not an implementation of anything. I like the idea of using that
for the conduit. The only thing I don't care for is the idea that the
memory manager should call into the ExecutionEngine. I don't think that's
right. I would instead do it the other way around. We'd add the interface
to RTDyldMemoryManger and JITMemoryManager, both. The MCJITMemoryManager
implementation would tie the two together via:<o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>uint64_t getExternalSymbolAddr(…) {<o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>  return JMM->getExternalSymbolAddr(…);<o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>}<o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p> </o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>The DefaultJITMemoryManager() would, as it does now, consider itself a
hosted environment and do whatever appropriate symbol lookup is needed. There's
some legacy horribleness in MCJIT/Intercept.cpp that would all go away via
this, which would be fantastic.<o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p> </o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>It seems OK to me for RuntimeDyld to call this function whenever it
sees a symbol it doesn't know. Theoretically, that should allow everything to
"just work" for external symbols in a hosted environment without any
extra fiddling by the client process. For a remote target, there will be a
custom JITMemoryManager implementation anyway to handle the remote allocation
and such, so that can be handled there, too.<o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p> </o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p> </o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>Regards,<o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>-Jim<o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p> </o:p></span></font></p>

</div>

<div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p> </o:p></span></font></p>

</div>

<div>

<div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>On Mar 6, 2012, at 9:00 AM, Danil Malyshev <<a
href="mailto:dmalyshev@accesssoftek.com">dmalyshev@accesssoftek.com</a>>
wrote:<o:p></o:p></span></font></p>

</div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><br>
<br>
<o:p></o:p></span></font></p>

<u1:smarttagtype namespaceuri="urn:schemas-microsoft-com:office:smarttags" name="City"><u1:smarttagtype namespaceuri="urn:schemas-microsoft-com:office:smarttags" name="place"><u1:smarttagtype namespaceuri="urn:schemas-microsoft-com:office:smarttags" name="PersonName"><!--[if gte mso 9]><xml>
    <u1:shapedefaults u2:ext="edit" spidmax="1026"/>
</xml><![endif]--><!--[if gte mso 9]><xml>
    <u1:shapelayout u3:ext="edit">
     <u1:idmap u3:ext="edit" data="1"/>
    </u1:shapelayout>
</xml><![endif]-->

<div link=blue vlink=blue>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'>Hi Andrew,<u1:p></u1:p></span></font><o:p></o:p></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'><u1:p> </u1:p></span></font><o:p></o:p></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'><u1:p> </u1:p></span></font><o:p></o:p></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'>I'm waiting for Jim's
response, but can submit the changed patch tomorrow.<u1:p></u1:p></span></font><o:p></o:p></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'><u1:p> </u1:p></span></font><o:p></o:p></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'><u1:p> </u1:p></span></font><o:p></o:p></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'>Regards,<u1:p></u1:p></span></font><o:p></o:p></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'>Danil<u1:p></u1:p></span></font><o:p></o:p></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'><u1:p> </u1:p></span></font><o:p></o:p></p>

<div>

<div class=MsoNormal align=center style='text-align:center'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>

<hr size=2 width="100%" align=center tabindex=-1>

</span></font></div>

<p class=MsoNormal><b><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma;font-weight:bold'>From:</span></font></b><font size=2
face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'> Kaylor, Andrew [mailto:andrew.kaylor@intel.com]
<br>
<b><span style='font-weight:bold'>Sent:</span></b> Tuesday, March 06, 2012 8:46
PM<br>
<b><span style='font-weight:bold'>To:</span></b> Danil Malyshev; <st1:personname u4:st="on"><st1:PersonName
w:st="on">Jim Grosbach</st1:personname></st1:PersonName><br>
<b><span style='font-weight:bold'>Cc:</span></b> <st1:personname u4:st="on"><a
href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a></st1:personname><br>
<b><span style='font-weight:bold'>Subject:</span></b> RE: RuntimeDyLd new
features</span></font><u1:p></u1:p><o:p></o:p></p>

</div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><u1:p> </u1:p><o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'>Hi Danil,<u1:p></u1:p></span></font><o:p></o:p></p>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'><u1:p> </u1:p></span></font><o:p></o:p></p>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'>What is the current status
of your patch?  Are you waiting for a response from Jim or will you be
re-submitting something soon?<u1:p></u1:p></span></font><o:p></o:p></p>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'><u1:p> </u1:p></span></font><o:p></o:p></p>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'>I have a set of
changes merged with your latest patch and I’m hoping to minimize any
conflicts in our ongoing work.<u1:p></u1:p></span></font><o:p></o:p></p>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'><u1:p> </u1:p></span></font><o:p></o:p></p>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'>Thanks,<u1:p></u1:p></span></font><o:p></o:p></p>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'>Andy<u1:p></u1:p></span></font><o:p></o:p></p>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'><u1:p> </u1:p></span></font><o:p></o:p></p>

<div>

<div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm'>

<p class=MsoNormal><b><font size=2 face=Tahoma><span lang=EN-US
style='font-size:10.0pt;font-family:Tahoma;font-weight:bold'>From:</span></font></b><font
size=2 face=Tahoma><span lang=EN-US style='font-size:10.0pt;font-family:Tahoma'>
Danil Malyshev [mailto:dmalyshev@accesssoftek.com] <br>
<b><span style='font-weight:bold'>Sent:</span></b> Tuesday, February 28, 2012
12:46 PM<br>
<b><span style='font-weight:bold'>To:</span></b> <st1:personname u4:st="on"><st1:PersonName
w:st="on">Jim Grosbach</st1:personname></st1:PersonName>; Kaylor, Andrew<br>
<b><span style='font-weight:bold'>Cc:</span></b> <st1:personname u4:st="on"><a
href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a></st1:personname><br>
<b><span style='font-weight:bold'>Subject:</span></b> RE: RuntimeDyLd new
features<u1:p></u1:p></span></font><o:p></o:p></p>

</div>

</div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-US
style='font-size:12.0pt'><u1:p> </u1:p></span><o:p></o:p></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'>Hello Jim,<u1:p></u1:p></span></font><o:p></o:p></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'><u1:p> </u1:p></span></font><o:p></o:p></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'>As variant, add the
GetExternalSymbolAddr() to the RTDyldMemoryManager.<u1:p></u1:p></span></font><o:p></o:p></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'>The memory manager linked
to a target system, its emit sections to the target system, so its can known
external symbol addresses.<u1:p></u1:p></span></font><o:p></o:p></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'>The MCJITMemoryManager
will use ExecutionEngine for getting addresses, another memory manager will use
their methods, or just return 0 if this feature not supported.<u1:p></u1:p></span></font><o:p></o:p></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'>I can add these changes
to the patch quickly.<u1:p></u1:p></span></font><o:p></o:p></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'><u1:p> </u1:p></span></font><o:p></o:p></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'><u1:p> </u1:p></span></font><o:p></o:p></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'>Thank you,<u1:p></u1:p></span></font><o:p></o:p></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'>Danil<u1:p></u1:p></span></font><o:p></o:p></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'><u1:p> </u1:p></span></font><o:p></o:p></p>

<div>

<div class=MsoNormal align=center style='text-align:center'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>

<hr size=2 width="100%" align=center>

</span></font></div>

<p class=MsoNormal><b><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma;font-weight:bold'>From:</span></font></b><font size=2
face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'> <st1:personname u4:st="on"><st1:PersonName
w:st="on">Jim Grosbach</st1:personname></st1:PersonName> [<a
href="mailto:grosbach@apple.com">mailto:grosbach@apple.com</a>] <br>
<b><span style='font-weight:bold'>Sent:</span></b> Tuesday, February 28, 2012
4:36 AM<br>
<b><span style='font-weight:bold'>To:</span></b> Kaylor, Andrew<br>
<b><span style='font-weight:bold'>Cc:</span></b> Danil Malyshev; <a
href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<b><span style='font-weight:bold'>Subject:</span></b> Re: RuntimeDyLd new
features</span></font><u1:p></u1:p><o:p></o:p></p>

</div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><u1:p> </u1:p><o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><u1:p> </u1:p><o:p></o:p></span></font></p>

<div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>On Feb 23, 2012, at 2:08 PM, "Kaylor, Andrew" <<a
href="mailto:andrew.kaylor@intel.com">andrew.kaylor@intel.com</a>> wrote:<u1:p></u1:p><o:p></o:p></span></font></p>

</div>

<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'><u1:p> </u1:p><o:p></o:p></span></font></p>

<div>

<div>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'>These changes look
good to me.</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'>The test-globall.ll
test is failing because your code doesn’t handle sections without bits in
the object image and needing zero-initialization (at least, that’s why it
fails on ELF).  I believe that the stubs.ll and test-common-symbols.ll
tests are both failing because common symbols aren’t being properly
handled.</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'>As I mentioned
before, I think the common symbol issue requires a bit of restructuring to
allow format specific handling of part of the common symbol processing.  I
have a fix ready which addresses this for ELF and would provide most of the fix
and the necessary interface to fix it on MachO.  Basically, my fix makes a
list of common symbols, allocates memory for the common symbols and calls a
virtual function to update the symbol address in the SymbolRef.  MachO
would just need an implementation of the function to test a symbol to see if it
is a common symbol, and an implementation of the function to update the address.</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'>I also have a
general fix ready for the nobits/zero-init problem.</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'>Therefore, I think
it would be OK to have this patch committed as is, with the understanding that
these problems would be fixed shortly afterward.  Again, that is assuming
that the changes are otherwise acceptable to Jim.</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'> </span></font><o:p></o:p></p>

</div>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><u1:p> </u1:p><o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>I'm generally OK with that, with one exception. Adding a back-reference
to the ExecutionEngine to RuntimeDyld is a pretty bad layering violation, as
alluded to in the code comments. I'm not comfortable with that part going in
as-is.<u1:p></u1:p><o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><u1:p> </u1:p><o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>We need an interface to the RuntimeDyld which will allow the client to
query for unresolved symbols and to<u1:p></u1:p><o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>a) provide an address for them if they are true external symbols, or<u1:p></u1:p><o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>b) provide a module which supplies the symbols.<u1:p></u1:p><o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><u1:p> </u1:p><o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>In a normal hosted JIT environment, the second option is our vector to
lazy compilation. The JIT builds the entry point, then queries for unresolved symbols.
It creates a module containing each that has a compile-stub as an instantiation.<u1:p></u1:p><o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><u1:p> </u1:p><o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>The key is that the behavior is driven top-down from the client. There
shouldn't be calls back up from the RuntimeDyld to either the JIT or the
ExecutionEngine.<u1:p></u1:p><o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><u1:p> </u1:p><o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>-Jim<u1:p></u1:p><o:p></o:p></span></font></p>

</div>

<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'><u1:p> </u1:p><o:p></o:p></span></font></p>

<div>

<div>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'>I would like to
discuss the way that the MCJIT-specific tests are handled, but we can talk
about that later.</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'>-Andy</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm;
border-width:initial;border-color:initial;border-image: initial'>

<div>

<p class=MsoNormal><b><font size=2 color=black face=Tahoma><span lang=EN-US
style='font-size:10.0pt;font-family:Tahoma;color:black;font-weight:bold'>From:</span></font></b><span
class=apple-converted-space><font size=2 color=black face=Tahoma><span
lang=EN-US style='font-size:10.0pt;font-family:Tahoma;color:black'> </span></font></span><font
size=2 color=black face=Tahoma><span lang=EN-US style='font-size:10.0pt;
font-family:Tahoma;color:black'>Danil Malyshev [<a
href="mailto:dmalyshev@accesssoftek.com">mailto:dmalyshev@accesssoftek.com</a>]<span
class=apple-converted-space> </span><br>
<b><span style='font-weight:bold'>Sent:</span></b><span
class=apple-converted-space> </span>Wednesday, February 22, 2012 4:08 PM<br>
<b><span style='font-weight:bold'>To:</span></b><span
class=apple-converted-space> <st1:personname u4:st="on"></span><st1:PersonName
w:st="on">Jim Grosbach</st1:personname></st1:PersonName>; Kaylor, Andrew; <a
href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<b><span style='font-weight:bold'>Subject:</span></b><span
class=apple-converted-space> </span>RE: RuntimeDyLd new features</span></font><o:p></o:p></p>

</div>

</div>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
lang=EN-US style='font-size:12.0pt;color:black'> <u1:p></u1:p></span></font><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'>Hi Jim,</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'>The MCJIT with changed
RuntimeDyLd passes most of ExecutionEngine tests on Mac OS, except of 3 tests:
stubs.ll, test-common-symbols.ll and test-global.ll.</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'>And I will work to ensure
that these three tests are also passed.</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'>Please look
01-RuntimeDyLd-02.patch of the previous letter, can I commit it?</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'>Regards,</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'>Danil</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<div class=MsoNormal align=center style='text-align:center'><font size=3
color=black face="Times New Roman"><span style='font-size:12.0pt;color:black'>

<hr size=2 width="100%" align=center>

</span></font></div>

<div>

<p class=MsoNormal><b><font size=2 color=black face=Tahoma><span
style='font-size:10.0pt;font-family:Tahoma;color:black;font-weight:bold'>From:</span></font></b><span
class=apple-converted-space><font size=2 color=black face=Tahoma><span
style='font-size:10.0pt;font-family:Tahoma;color:black'> </span></font></span><font
size=2 color=black face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma;
color:black'>Kaylor, Andrew [<a href="mailto:andrew.kaylor@intel.com">mailto:andrew.kaylor@intel.com</a>]<span
class=apple-converted-space> </span><br>
<b><span style='font-weight:bold'>Sent:</span></b><span
class=apple-converted-space> </span>Saturday, February 18, 2012 5:41 AM<br>
<b><span style='font-weight:bold'>To:</span></b><span
class=apple-converted-space> </span>Danil Malyshev; <a
href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<b><span style='font-weight:bold'>Cc:</span></b><span
class=apple-converted-space> <st1:personname u4:st="on"></span><st1:PersonName
w:st="on">Jim Grosbach</st1:personname></st1:PersonName><br>
<b><span style='font-weight:bold'>Subject:</span></b><span
class=apple-converted-space> </span>RE: RuntimeDyLd new features</span></font><o:p></o:p></p>

</div>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt;color:black'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'>Hi Danil,</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'>I’d like to
make clear that if Jim is OK with the impact of your patch on MachO JIT loading
then I’d be happy for you to proceed with your patch, incorporating my comments
below, and we will withdraw our previous uncommitted patch and I will merge the
GDB JIT debugging integration code we have with your changes after they have
been committed.</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'>Thanks,</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'>Andy</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm;
border-width:initial;border-color:initial;border-image: initial'>

<div>

<p class=MsoNormal><b><font size=2 color=black face=Tahoma><span lang=EN-US
style='font-size:10.0pt;font-family:Tahoma;color:black;font-weight:bold'>From:</span></font></b><span
class=apple-converted-space><font size=2 color=black face=Tahoma><span
lang=EN-US style='font-size:10.0pt;font-family:Tahoma;color:black'> </span></font></span><font
size=2 color=black face=Tahoma><span lang=EN-US style='font-size:10.0pt;
font-family:Tahoma;color:black'><a
href="mailto:llvm-commits-bounces@cs.uiuc.edu">llvm-commits-bounces@cs.uiuc.edu</a>
[<a href="mailto:llvm-commits-bounces@cs.uiuc.edu">mailto:llvm-commits-bounces@cs.uiuc.edu</a>]<span
class=apple-converted-space> </span><b><span style='font-weight:bold'>On
Behalf Of<span class=apple-converted-space> </span></span></b>Kaylor,
Andrew<br>
<b><span style='font-weight:bold'>Sent:</span></b><span
class=apple-converted-space> </span>Tuesday, February 14, 2012 4:53 PM<br>
<b><span style='font-weight:bold'>To:</span></b><span
class=apple-converted-space> </span>Danil Malyshev; <a
href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<b><span style='font-weight:bold'>Subject:</span></b><span
class=apple-converted-space> </span>Re: [llvm-commits] RuntimeDyLd new
features</span></font><o:p></o:p></p>

</div>

</div>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
lang=EN-US style='font-size:12.0pt;color:black'> <u1:p></u1:p></span></font><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'>Hi Danil,</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'>I've been working
with your patch also.  Mostly, it looks pretty good.  I've been able
to layer most of our added functionality on top of it, and I have GDB
integration working and our integration tests passing.  There are a few
issues I'd like to bring up, however.</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'>The first thing I saw
with your patch is that I had problems loading images that were generated with
debug information included.  In particular, applying relocations to debug
sections using the actual addresses of the debug sections causes
problems.  This is really a small issue because, as you mentioned, debug
sections don't need to be loaded.  I worked around this problem by adding
a new member function to SectionRef to query whether or not the section is
required for execution.  This is fairly trivial for ELF.</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'>A related problem is
that your code does not properly handle sections which are only represented by
a header in the ELF image (that is, SHT_NOBITS sections) or sections which need
to be zero-initialized.  I worked around these problems using the existing
isBSS() member in SectionRef, but it would probably be better to split these
two concepts.</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'>Similarly, your code
does not handle symbols which are marked as relative to the SHN_COMMON
section.  Fixing this is a bit more complicated.  I think we can
probably build a table of these symbols in the RuntimeDyldImpl class by adding
a new member to SectionRef, but we'll need deeper access to the format-specific
classes to update the symbol addresses.  I'm working on an implementation
of this for ELF.</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'>The code which loads
the sections is currently assuming pointer-sized alignment for all
sections.  I ran into a case using floating point numbers where 16-byte
alignment was required.  This is a fairly simple fix as the alignment
value is accessible through SectionRef.</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'>I think it would be
worthwhile adding an function to SectionRef to query whether or not a section
contains code rather than the current algorithmic method you are using.</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'>In a few places you
are using uintptr_t or uint8_t* in places that will restrict cross-architecture
JITing.  The TargetAddr in the SectionEntry structure is an example that
comes to mind.</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'>The distinction
between code and data for memory allocation will be important going
forward.  I think it would be better to fix the existing bug that to disable
the specific allocations.</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'>In
RuntimeDyld::loadObject, in the "parse and process relocations loop"
"SectionID == 0" is used to identify sections that need to be looked
up, but zero is a valid SectionID.  For that section, it goes into the
lookup for every relocation.</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'>I'm continuing to
work on integrating our code, including some that hasn't yet been submitted to
the list for review, with your changes.  I need to go over what I've done with
the rest of my co-workers, but I wanted to give you a progress update now.</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'>-Andy</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm;
border-width:initial;border-color:initial;border-image: initial'>

<div>

<p class=MsoNormal><b><font size=2 color=black face=Tahoma><span lang=EN-US
style='font-size:10.0pt;font-family:Tahoma;color:black;font-weight:bold'>From:</span></font></b><span
class=apple-converted-space><font size=2 color=black face=Tahoma><span
lang=EN-US style='font-size:10.0pt;font-family:Tahoma;color:black'> </span></font></span><font
size=2 color=black face=Tahoma><span lang=EN-US style='font-size:10.0pt;
font-family:Tahoma;color:black'>Danil Malyshev [<a
href="mailto:dmalyshev@accesssoftek.com">mailto:dmalyshev@accesssoftek.com</a>]<span
class=apple-converted-space> </span><br>
<b><span style='font-weight:bold'>Sent:</span></b><span
class=apple-converted-space> </span>Tuesday, February 14, 2012 10:30 AM<br>
<b><span style='font-weight:bold'>To:</span></b><span
class=apple-converted-space> </span>Kaylor, Andrew; <a
href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<b><span style='font-weight:bold'>Cc:</span></b><span
class=apple-converted-space> <st1:personname u4:st="on"></span><st1:PersonName
w:st="on">Jim Grosbach</st1:personname></st1:PersonName><br>
<b><span style='font-weight:bold'>Subject:</span></b><span
class=apple-converted-space> </span>RE: RuntimeDyLd new features</span></font><o:p></o:p></p>

</div>

</div>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
lang=EN-US style='font-size:12.0pt;color:black'> <u1:p></u1:p></span></font><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'>Hi Andrew,</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'>Thank you for the
detailed explanation.</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'>I have carefully studied
your patch and DyldELFObject.</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'>A gdb support is very
important and it's actually a big step for MCJIT. I like your patch, its
loadObject() looks faster than my. But I see one big conceptual problem.</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'>The RuntimeDyLd was
developed as a linker, which is able to prepare data for running on another
platform. The RuntimeDyldMachO largely implements it.</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'>In the RuntimeDyldELF you
went the other way. Now it is very far from remote execution. And even if the
object file will be emitted with RTDyldMemoryManager, it is not a good idea:
(1) remote execution doesn't need many parts of object file, such as debugging
information, headers, section table and etc, (2) some sections is code and must
has execution permit, some sections is data without execution permit, so the
best way is use a different methods for emits different type of sections.</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'>If your patch will be
committed, we obtain a RuntimeDyldMachO and RuntimeDyldELF, which different
principles and a different results. And most likely, for ELF will never be
fully realization for remote execution.</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'>I think another ways will
be better, just for instance, two possible solutions:</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'>1. Always emits the
sections required to execution with a RTDyldMemoryManager. Resolve relocation
in these sections. And if the isDebugging flag is set, then in addition, DyldELFObject::rebaseObject
make his job, except that for the sections stored by the RTDyldMemoryManager
write the correct address.</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'>2. Check the debug flag
at first, before load object file. If it set, just use your realization of
loadObject, otherwise - use normal way with RTDyldMemoryManager.</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'>Both alternatives have
their shortcomings, perhaps you find another solution. Also, I would be glad to
hear that Jim thinks about it.</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'>Now I trying to merge
your patch with my.</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'>Regards,</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'>Danil</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<div class=MsoNormal align=center style='text-align:center'><font size=3
color=black face="Times New Roman"><span style='font-size:12.0pt;color:black'>

<hr size=2 width="100%" align=center>

</span></font></div>

<div>

<p class=MsoNormal><b><font size=2 color=black face=Tahoma><span
style='font-size:10.0pt;font-family:Tahoma;color:black;font-weight:bold'>From:</span></font></b><span
class=apple-converted-space><font size=2 color=black face=Tahoma><span
style='font-size:10.0pt;font-family:Tahoma;color:black'> </span></font></span><font
size=2 color=black face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma;
color:black'>Kaylor, Andrew [<a href="mailto:andrew.kaylor@intel.com">mailto:andrew.kaylor@intel.com</a>]<span
class=apple-converted-space> </span><br>
<b><span style='font-weight:bold'>Sent:</span></b><span
class=apple-converted-space> </span>Thursday, February 09, 2012 4:56 AM<br>
<b><span style='font-weight:bold'>To:</span></b><span
class=apple-converted-space> </span>Danil Malyshev; <a
href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<b><span style='font-weight:bold'>Subject:</span></b><span
class=apple-converted-space> </span>RE: RuntimeDyLd new features</span></font><o:p></o:p></p>

</div>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt;color:black'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=black face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:black'>Hi Danil,</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=black face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:black'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=black face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:black'>Thanks for your
efforts in this area.  As Eli Bendersky mentioned, we have a patch out for
review in this area also.  I'm hopeful that we can find a convergence
between our code, your code and the code that <st1:personname u4:st="on"><st1:PersonName
w:st="on">Jim Grosbach</st1:personname></st1:PersonName> has put in place.</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=black face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:black'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=black face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:black'>Unfortunately, we have
been submitting our code in small chunks for ease of review and to keep things
stable, and it may not be obvious from what we've put out for review what our
intentions were or our intended solutions to the problems that were left
open.  I'd like to take this opportunity to discuss the direction we we're
heading and see how it might align with what you and Jim have done.</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=black face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:black'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=black face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:black'>Let me first explain
what we have done, and then I'll offer specific comments on your code and possible
next steps.</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=black face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:black'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=black face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:black'>We have had two
primary goals: (1) to get MCJIT generated code to work correctly on Intel
architecture and help pave the way for other implementations and (2) enable
source-level debugging of JITed code with GDB.  This second goal seems to
be dropping from view, but it places a few constraints on the eventual
implementation.  We've had GDB integration working, BTW.</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=black face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:black'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=black face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:black'>In order to get GDB to
handle JITed code, we need to register an ELF object image through an interface
GDB defines.  As you might expect, GDB has some peculiar expectations for
what this ELF object image should look like.  In particular, we need to
set a flag in the ELF header and update the sh_addr members in the section
headers to reflect the address where the section contents reside in memory.</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=black face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:black'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=black face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:black'>Our most recent patch
(<a
href="http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20120130/135997.html"><font
color=purple><span style='color:purple'>http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20120130/135997.html</span></font></a>,
not yet committed) begins by copying the entire ELF image emitted by the MC
code generator into an executable buffer.  This was intended as a
temporary step toward our eventual solution.  It enabled us to perform
relocations in-place on the object and execute functions in place (thus
eliminating an extra copy that was previously being done).  We were in the
process of implementing a smarter section-based approach, but <st1:personname u4:st="on"><st1:PersonName
w:st="on">Jim Grosbach</st1:personname></st1:PersonName> was implementing a
similar approach in parallel and our submission ended up appearing out of step
in this regard.</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=black face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:black'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=black face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:black'>So that's our
background.  Now, returning to your patch....</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=black face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:black'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=black face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:black'>I like the idea of
combining as much common code as possible into the RuntimeDyldImpl class. 
I'm interested to hear from users of the MachO loader if your implementation
has lost any of the specialization that they need.  I think it's a
promising approach.  There are some ELF-specific details that we will need
to have incorporated to re-enable GDB integration, but I expect that we'll be
able to find a way to work that in with a few well-placed overloaded function
calls.</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=black face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:black'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=black face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:black'>I have some
reservations about the use of the basic ObjectFile interface, which has some
serious limitations.  We've been working toward exposing the ELFObjectFile
template for use in the runtime loading process (as well as other unrelated
uses).  It may be that this is something that can be generalized enough to
fit with your approach.  My main concern in this regard is that we need to
be able to update specific entries in the ELF image, as described above.</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=black face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:black'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=black face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:black'>A related issue is
that section loading can be refined with some ELF-specific details.  Some
sections need to have memory allocated for their contents.  Other sections
can be left in place in the originally generated image.  There is a good
bit of unnecessary copying going on in the existing implementation, and I'm not
clear to what extent your patch addresses that.  Before the object is
loaded, it is copied into a new buffer and then the contents of each section
are copied again as we go.  What I'd like is for the runtime loaders to
use the buffer into which the object is originally generated and only make
copies where it is strictly necessary.  This isn't necessarily something
you need to do for your work to be acceptable, but I mention it as a likely
next step.</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=black face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:black'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=black face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:black'>Over the next few days
I intend to apply your patch locally and try to merge our work into it. 
I'll provide additional feedback as I get a better feel for what you've done.</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=black face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:black'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=black face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:black'>-Andy</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color="#1f497d" face=Calibri><span lang=EN-US
style='font-size:11.0pt;font-family:Calibri;color:#1F497D'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm;
border-width:initial;border-color:initial;border-image: initial'>

<div>

<p class=MsoNormal><b><font size=2 color=black face=Tahoma><span lang=EN-US
style='font-size:10.0pt;font-family:Tahoma;color:black;font-weight:bold'>From:</span></font></b><span
class=apple-converted-space><font size=2 color=black face=Tahoma><span
lang=EN-US style='font-size:10.0pt;font-family:Tahoma;color:black'> </span></font></span><font
size=2 color=black face=Tahoma><span lang=EN-US style='font-size:10.0pt;
font-family:Tahoma;color:black'><a
href="mailto:llvm-commits-bounces@cs.uiuc.edu">llvm-commits-bounces@cs.uiuc.edu</a>
[<a href="mailto:llvm-commits-bounces@cs.uiuc.edu">mailto:llvm-commits-bounces@cs.uiuc.edu</a>]<span
class=apple-converted-space> </span><b><span style='font-weight:bold'>On
Behalf Of<span class=apple-converted-space> </span></span></b>Danil
Malyshev<br>
<b><span style='font-weight:bold'>Sent:</span></b><span
class=apple-converted-space> </span>Tuesday, February 07, 2012 12:24 PM<br>
<b><span style='font-weight:bold'>To:</span></b><span
class=apple-converted-space> </span><a
href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<b><span style='font-weight:bold'>Subject:</span></b><span
class=apple-converted-space> </span>[llvm-commits] RuntimeDyLd new features</span></font><o:p></o:p></p>

</div>

</div>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
lang=EN-US style='font-size:12.0pt;color:black'> <u1:p></u1:p></span></font><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><font size=2 color=black face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:black'>Hello everyone,</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=black face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:black'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=black face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:black'>Please review the
RuntimeDyLd-01.patch.</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=black face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:black'>This patch makes the
following changes:</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=black face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:black'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=black face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:black'>1. The main works will made
in the RuntimeDyLdImpl with uses the ObjectFile class. RuntimeDyLdMachO and
RuntimeDyLdELF now only parses relocations and resolve it. This is allows to
make improvements of the RuntimeDyLd more easily. In addition the support for
COFF can be easily added.</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=black face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:black'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=black face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:black'>2. Added ARM relocations
to RuntimeDyLdELF.</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=black face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:black'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=black face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:black'>3. Added support for
stub functions for the ARM, allowing to do a <st1:city u4:st="on"><st1:place u4:st="on"><st1:City
w:st="on"><st1:place w:st="on">long branch</st1:place></st1:city></st1:place></st1:City>.</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=black face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:black'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=black face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:black'>4. Added support for
external functions that are not loaded from the object files, but can be loaded
from external libraries. Now MCJIT can correctly execute the code containing
the printf, putc, and etc.</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=black face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:black'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=black face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:black'>5. The sections emitted
instead functions, thanks <st1:personname u4:st="on"><st1:PersonName w:st="on">Jim
 Grosbach</st1:personname></st1:PersonName>. MemoryManager.startFunctionBody()
and MemoryManager.endFunctionBody() have been removed.</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=black face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:black'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=black face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:black'>6. MCJITMemoryManager.allocateDataSection()
and MCJITMemoryManager. allocateCodeSection() used JMM->allocateSpace()
instead of JMM->allocateCodeSection() and JMM->allocateDataSection(),
because I got an error: "Cannot allocate an allocated block!" with
object file contains more than one code or data sections.</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=black face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:black'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=black face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:black'>7. Fixed
ELF::R_X86_64_PC32 relocation for the case when RealOffset is negative value.</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=black face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:black'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=black face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:black'>8. Added new testing
folder: ExecutionEngine/MCJIT because mcjit tests can be running only for x86
and arm and it's can be filtered with dg.exp.</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=black face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:black'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=black face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:black'>Tested in Ubuntu x86_64,
Ubuntu armv7 and MacOS 64.</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=black face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:black'> </span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=black face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:black'>Thank you,</span></font><o:p></o:p></p>

</div>

<u1:p></u1:p>

<div>

<p class=MsoNormal><font size=2 color=black face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:black'>Danil</span></font><o:p></o:p></p>

</div>

</div>

</div>

<u1:p></u1:p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><u1:p> </u1:p><o:p></o:p></span></font></p>

</div>

</div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p> </o:p></span></font></p>

</div>

</div>

</u1:smarttagtype></u1:smarttagtype></u1:smarttagtype></div>

</body>

</html>