<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><br><div><div>On Mar 17, 2014, at 4:34 PM, Shankar Easwaran <<a href="mailto:shankare@codeaurora.org">shankare@codeaurora.org</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">
<meta content="text/html; charset=windows-1252" http-equiv="Content-Type">
<div text="#000000" bgcolor="#FFFFFF">
<div class="moz-cite-prefix">On 3/17/2014 6:24 PM, Nick Kledzik
wrote:<br>
</div>
<blockquote cite="mid:2EC57BE8-706A-4B8F-8DA6-6D93F58A5287@apple.com" type="cite">
<meta http-equiv="Content-Type" content="text/html;
charset=windows-1252">
<br>
<div>
<div>On Mar 17, 2014, at 3:48 PM, Shankar Easwaran <<a moz-do-not-send="true" href="mailto:shankare@codeaurora.org">shankare@codeaurora.org</a>>
wrote:</div>
<br class="Apple-interchange-newline">
<blockquote type="cite">
<div text="#000000" bgcolor="#FFFFFF">
<blockquote cite="mid:AF0C5235-C9B3-4E27-8640-053EE3D7015E@apple.com" type="cite" style="font-family: Helvetica; font-size:
12px; font-style: normal; font-variant: normal;
font-weight: normal; letter-spacing: normal; line-height:
normal; orphans: auto; text-align: start; text-indent:
0px; text-transform: none; white-space: normal; widows:
auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">
<div>I think the solution:</div>
<div>1) keep the existing canonical form for an atom graph
that Passes process</div>
<div>2) make the ELF Writer smart that when it writes
relocatable object files, to synthesize undefined
symbols for references into group children</div>
<div>3) Have the YAML Reader be dumb and not synthesize
any undefines. Test cases for groups that want
undefines will need to explicitly have them in the yaml.
This also enables you to write test cases that test the
error case where an indirection though an undefine is
not used.</div>
<div><br>
</div>
<div><br>
</div>
</blockquote>
<span style="font-family: Helvetica; font-size: 12px;
font-style: normal; font-variant: normal; font-weight:
normal; letter-spacing: normal; line-height: normal;
orphans: auto; text-align: start; text-indent: 0px;
text-transform: none; white-space: normal; widows: auto;
word-spacing: 0px; -webkit-text-stroke-width: 0px;
background-color: rgb(255, 255, 255); float: none;
display: inline !important;">The below steps as in the
command line would not work though.</span><br style="font-family: Helvetica; font-size: 12px;
font-style: normal; font-variant: normal; font-weight:
normal; letter-spacing: normal; line-height: normal;
orphans: auto; text-align: start; text-indent: 0px;
text-transform: none; white-space: normal; widows: auto;
word-spacing: 0px; -webkit-text-stroke-width: 0px;">
<br style="font-family: Helvetica; font-size: 12px;
font-style: normal; font-variant: normal; font-weight:
normal; letter-spacing: normal; line-height: normal;
orphans: auto; text-align: start; text-indent: 0px;
text-transform: none; white-space: normal; widows: auto;
word-spacing: 0px; -webkit-text-stroke-width: 0px;">
<span style="font-family: Helvetica; font-size: 12px;
font-style: normal; font-variant: normal; font-weight:
normal; letter-spacing: normal; line-height: normal;
orphans: auto; text-align: start; text-indent: 0px;
text-transform: none; white-space: normal; widows: auto;
word-spacing: 0px; -webkit-text-stroke-width: 0px;
background-color: rgb(255, 255, 255); float: none;
display: inline !important;">lld -flavor gnu -target
x86_64 group.o --output-filetype=yaml --noinhibit-exec<span class="Apple-converted-space"> </span></span><br style="font-family: Helvetica; font-size: 12px;
font-style: normal; font-variant: normal; font-weight:
normal; letter-spacing: normal; line-height: normal;
orphans: auto; text-align: start; text-indent: 0px;
text-transform: none; white-space: normal; widows: auto;
word-spacing: 0px; -webkit-text-stroke-width: 0px;">
<br style="font-family: Helvetica; font-size: 12px;
font-style: normal; font-variant: normal; font-weight:
normal; letter-spacing: normal; line-height: normal;
orphans: auto; text-align: start; text-indent: 0px;
text-transform: none; white-space: normal; widows: auto;
word-spacing: 0px; -webkit-text-stroke-width: 0px;">
<span style="font-family: Helvetica; font-size: 12px;
font-style: normal; font-variant: normal; font-weight:
normal; letter-spacing: normal; line-height: normal;
orphans: auto; text-align: start; text-indent: 0px;
text-transform: none; white-space: normal; widows: auto;
word-spacing: 0px; -webkit-text-stroke-width: 0px;
background-color: rgb(255, 255, 255); float: none;
display: inline !important;">(Input file is processed by
the ELF reader, convert the read files to YAML files,
re-read the files from YAML back into atoms)</span><br style="font-family: Helvetica; font-size: 12px;
font-style: normal; font-variant: normal; font-weight:
normal; letter-spacing: normal; line-height: normal;
orphans: auto; text-align: start; text-indent: 0px;
text-transform: none; white-space: normal; widows: auto;
word-spacing: 0px; -webkit-text-stroke-width: 0px;">
<br style="font-family: Helvetica; font-size: 12px;
font-style: normal; font-variant: normal; font-weight:
normal; letter-spacing: normal; line-height: normal;
orphans: auto; text-align: start; text-indent: 0px;
text-transform: none; white-space: normal; widows: auto;
word-spacing: 0px; -webkit-text-stroke-width: 0px;">
<span style="font-family: Helvetica; font-size: 12px;
font-style: normal; font-variant: normal; font-weight:
normal; letter-spacing: normal; line-height: normal;
orphans: auto; text-align: start; text-indent: 0px;
text-transform: none; white-space: normal; widows: auto;
word-spacing: 0px; -webkit-text-stroke-width: 0px;
background-color: rgb(255, 255, 255); float: none;
display: inline !important;">As the YAML reader wouldnt
synthesize undefined atoms ? Its like a chicken-egg
problem.</span><br style="font-family: Helvetica;
font-size: 12px; font-style: normal; font-variant: normal;
font-weight: normal; letter-spacing: normal; line-height:
normal; orphans: auto; text-align: start; text-indent:
0px; text-transform: none; white-space: normal; widows:
auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">
</div>
</blockquote>
<div>Think of the YAML Reader and Writer as dumb. They just
convert in-memory-objects <-> yaml. Undefined are
never synthesized (point 3 above). If you want to write test
cases for groups in yaml, you’ll need to explicitly add the
UndefineAtom in the yaml file. <br>
</div>
</div>
</blockquote>
<br>
You are right that if the YAML reader and writer is used for
testing, as well as the Native reader/writer. The problem will
appear when the linker emittted YAML/Native file (after the resolver
is complete) is used in a separate link, isnt it ?<br>
<br>
Is this a usecase that we would not be supporting ?</div></blockquote></div><div>Basically, you told the linker to do its job and link together object files as if making a final executable, then use an option to the linker to save the atom graph as yaml or native. Then try to use that atom graph later as if it is a input relocatable object.</div><div><br></div><div>The only use case I find interesting is once the native format settings down and someone wants to convert a file to it. It would be good to have a way to do that. If need be, we could write a Pass that re-inserts UndefinedAtoms for references to group owned atoms and get that pass to run just when doing that conversion.</div><div><br></div><div>-Nick</div><div><br></div></body></html>