<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Hi Nick,<br>
    <br>
    <blockquote
      cite="mid:FFC1B85C-A0CA-4735-9D45-86A812A08862@apple.com"
      type="cite">
      <blockquote type="cite">
        <pre wrap="">
The YAML writer does not have anything to add here.

The problem can be solved by having the YAML writer append a list of undefined atoms specified by the -u option, but the problem I have is each flavor has extra command line options
for which it wants to create a DefinedAtom/UndefinedAtom. The flavor also may want to add extra linker internal files in the future.

I prefer addImplicitFiles calling the reader to add more files, which means addFiles API moves to the reader.
</pre>
      </blockquote>
      <pre wrap="">But won’t that fail too if you were using a YAML Reader and ELF Writer?  
</pre>
    </blockquote>
    Yeah :(<br>
    <blockquote
      cite="mid:FFC1B85C-A0CA-4735-9D45-86A812A08862@apple.com"
      type="cite">
      <pre wrap="">
Since we are talking about files/atoms that are created because of command line options, perhaps the Driver should be creating the files/atoms. </pre>
    </blockquote>
    Currently the Driver has a notion of all the files that it processes
    are all Linker Inputs. InputGraph could have an additional function,
    to just add to it a list of files created implicitly by the linker.
    The UniversalDriver can then look at this list and append the list
    of files to the vector of files and then process the InputFiles.<br>
    <br>
    <blockquote
      cite="mid:FFC1B85C-A0CA-4735-9D45-86A812A08862@apple.com"
      type="cite">
      <pre wrap=""> In the case of -u, it would be nice to group them all in one file named “command line option -u” so that any error messages about undefined symbols says the references was from “command line option -u”  (as opposed to the -u UndefinedAtoms come from a generic internal file). </pre>
    </blockquote>
    Agree.<br>
    <blockquote
      cite="mid:FFC1B85C-A0CA-4735-9D45-86A812A08862@apple.com"
      type="cite">
      <pre wrap=""> Also for the case of -u, the Driver can make generic UndefinedAtoms. </pre>
    </blockquote>
    ELF would want to treat the undefined symbols as a weak undefined
    symbols. So the driver cant create undefined atoms.<br>
    <br>
    Below is an example :-<br>
    <br>
    $cat 1.c<br>
    int _start() { return 0; }<br>
    $gcc -c 1.c<br>
    $ld -u myundef 1.o<br>
    ==> Does not throw any error, the resolver was hinted that <i>myundef
    </i>was a undefined weak symbol.<br>
    <blockquote
      cite="mid:FFC1B85C-A0CA-4735-9D45-86A812A08862@apple.com"
      type="cite">
      <pre wrap=""> Other options may need platform specific atoms which may be created with the help of static Writer methods.
</pre>
    </blockquote>
    We wouldnt be able to override the functionality with each flavor,
    if we have a static method, or you had thought of something else ?<br>
    <br>
    Thanks<br>
    <br>
    Shankar Easwaran<br>
    <pre class="moz-signature" cols="72">-- 
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by the Linux Foundation</pre>
  </body>
</html>