<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <div class="moz-cite-prefix">It's perfectly ok to me that you submit
      the patch just as it is, as you said, it is useful.<br>
      <br>
      In the other hand, I've been thinking how to implement the final
      link behavior. The search of the entry point symbol must be done
      obviously after the input reading. I think that also after the
      resolve phase, since the " _main" symbol could be defined in a
      shared library. <span id="result_box" class="" lang="en"><span
          class="hps">One possible</span> <span class="hps">solution
          would be to</span> <span class="hps">search</span> <span
          class="hps">inside</span> <span class="hps atn">a new </span><span
          class="">Pass </span><span class="hps">before</span> the <span
          class="hps">writing.</span></span>  <span id="result_box"
        class="short_text" lang="en"><span class="hps">What do you think</span><span>?</span></span><br>
      <br>
      <br>
      On 23/08/2013 1:19, Rui Ueyama wrote:<br>
    </div>
    <blockquote
cite="mid:CAJENXgvrfmaC+tqQMXJZP-x2j9O7yscS2jHLPLr3GkEGuSZyVQ@mail.gmail.com"
      type="cite">
      <div dir="ltr">Thank you for the investigation. This is more
        complex than I thought and very interesting. This behavior needs
        to be implemented for link.exe compatibility. It doesn't make
        sense to implement this in the driver as you wrote and should be
        in the linking context.
        <div>
          <br>
        </div>
        <div>I want submit your patch for now, as it's useful. You'll be
          able to remove the code from the driver and add new code to
          the linking context. Does this sound good?<br>
          <div>
            <div>
              <div class="gmail_extra">
                <br>
                <div class="gmail_quote">On Tue, Aug 20, 2013 at 1:07
                  PM, Jesús Serrano <span dir="ltr"><<a
                      moz-do-not-send="true"
                      href="mailto:dagonoweda@gmail.com" target="_blank">dagonoweda@gmail.com</a>></span>
                  wrote:<br>
                  <blockquote class="gmail_quote" style="margin:0 0 0
                    .8ex;border-left:1px #ccc solid;padding-left:1ex">
                    <br>
                    <blockquote class="gmail_quote" style="margin:0 0 0
                      .8ex;border-left:1px #ccc solid;padding-left:1ex">
                      I've attached a new patch with this changes. Now
                      the windows driver sets the entry symbol name
                      according to the corresponding options. However,
                      this won't work in all cases. Depending onwhether
                      the crt is compiled as multibyte or unicode, the
                      entry point symbol name changes from
                      "mainCRTStartup" to "wmainCRTStartup", and the
                      same for the windows subsystem. The problem with
                      this is that the use of unicode is unknown at link
                      time (or at least I don't know how to retrieve
                      this option from object files). One possible
                      solution would be to have two entry point names in
                      the linking context, and find a symbol mathing any
                      of them, but I don't like it so much. Any ideas on
                      this?<br>
                    </blockquote>
                    <br>
                    I've looking into this, and seems that LINK.EXE
                    behavior for executable images is to "select" the
                    CRT entry point depending on the symbols defined in
                    the object files.<br>
                     If neither the subsystem nor the entry point are
                    defined in command line arguments, the linker
                    searches for the symbols "_main", "_wmain",
                    "_WinMain" and "_wWinMain". Depending on the found
                    symbols, the linker chooses the subsystem and the
                    CRT entry point, having "_main" the highest priority
                    and "_wWinMain" the lesser. This is, if "_main" is
                    defined, the subsystem will be CONSOLE and the CRT
                    entry point "_mainCRTStartup", and so on. If several
                    of these entry point symbols for the same subsystem
                    are defined, the linker chooses the symbol of higher
                    priority and prints a warning.<br>
                    If the subsystem is defined in the command line,
                    then the linker searches only for the corresponding
                    entry point symbols to choose between the unicode
                    and the multibyte CRT entry point.<br>
                    If the entry point symbol is defined in the command
                    line, but not the subsystem, the linker forces to
                    choose one and throws an error.<br>
                    <br>
                    If we want to follow this behavior, it has no sense
                    to let the driver to choose the entry point symbol
                    name. This could be handled by the linking context
                    after the file parsing or the by writer, what do you
                    think about that?<br>
                  </blockquote>
                </div>
                <br>
              </div>
            </div>
          </div>
        </div>
      </div>
    </blockquote>
    <br>
  </body>
</html>