<div dir="ltr">From my reading on how gnuld handles PE/COFF<div>It uses a linker script that describes how it lays out its idata section.</div><div>>From i386pe.x</div><div><pre style="color:rgb(0,0,0);word-wrap:break-word;white-space:pre-wrap">  .idata BLOCK(__section_alignment__) :
  {
    /* This cannot currently be handled with grouped sections.
        See pe.em:sort_sections.  */
    SORT(*)(.idata$2)
    SORT(*)(.idata$3)
    /* These zeroes mark the end of the import list.  */
    LONG (0); LONG (0); LONG (0); LONG (0); LONG (0);
    SORT(*)(.idata$4)
    SORT(*)(.idata$5)
    SORT(*)(.idata$6)
    SORT(*)(.idata$7)
  }</pre><pre style="word-wrap:break-word"><div style="color:rgb(34,34,34);white-space:normal;font-family:arial,sans-serif">UnderĀ ld/emultempl/pep.em in binutils it describes how it converts the MS import library to its format.</div><div><font face="arial, sans-serif"><span style="white-space:normal">see here <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__github.com_bminor_binutils-2Dgdb_blob_master_ld_emultempl_pep.em-23L1625&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=BRKw0nKMJg2dxwzgt72mbUrSdd-RKjp-PckuSGwCwv8&s=B2eVhAmNJ-0P4U19nDx3esPCYbfxwe_2HVuX4mXpdJ0&e=">http://github.com/bminor/binutils-gdb/blob/master/ld/emultempl/pep.em#L1625</a><br></span></font></div><div style="color:rgb(34,34,34);white-space:normal;font-family:arial,sans-serif">From the code in this function and the rest of pep.em we can see how it handles it.</div><div style="color:rgb(34,34,34);white-space:normal;font-family:arial,sans-serif">I'm sure this will make more sense to you however as you know what the MS format is.</div><div style="color:rgb(34,34,34);white-space:normal;font-family:arial,sans-serif"><br></div><div style="color:rgb(34,34,34);white-space:normal;font-family:arial,sans-serif">I assume the conversion will have to go the other way for us</div><div style="color:rgb(34,34,34);white-space:normal;font-family:arial,sans-serif">I think the most notable thing is the use of idata7 instead of idata6 for the dll name</div><div style="color:rgb(34,34,34);white-space:normal;font-family:arial,sans-serif">We could use that as a check?</div><div style="color:rgb(34,34,34);white-space:normal;font-family:arial,sans-serif">Then hijack it pulling out the function names once we see this being used and insert it into the sections like a MS generated one</div><div style="color:rgb(34,34,34);white-space:normal;font-family:arial,sans-serif"><br></div><div style="color:rgb(34,34,34);white-space:normal;font-family:arial,sans-serif">You might have a much cleaner solution however. :)</div><div style="color:rgb(34,34,34);white-space:normal;font-family:arial,sans-serif"><br></div><div style="color:rgb(34,34,34);white-space:normal;font-family:arial,sans-serif">If this isn't enough insight into what you need I can do more digging.</div><div style="color:rgb(34,34,34);white-space:normal;font-family:arial,sans-serif">Just ping me and let me know</div></pre></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Aug 4, 2015 at 3:15 AM, Rui Ueyama <span dir="ltr"><<a href="mailto:ruiu@google.com" target="_blank">ruiu@google.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">ruiu added a comment.<br>
<br>
Do you know anything about how GNU ld handles these import libraries? My<br>
linker is able to read it and construct .idata section, but the resulting<br>
.idata section is not going to be in correct format. If GNU linker is able<br>
to generate a correct .idata section from this type of import libraries,<br>
there must be something I'm missing in my linker.<br>
<br>
<br>
<a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__reviews.llvm.org_D11724&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=BRKw0nKMJg2dxwzgt72mbUrSdd-RKjp-PckuSGwCwv8&s=J7tUqGbZv-lJGzFApiqllPezkxgmhvMAJTfCqV579T8&e=" rel="noreferrer" target="_blank">http://reviews.llvm.org/D11724</a><br>
<br>
<br>
<br>
</blockquote></div><br></div>