<div dir="ltr">Patch: <a href="https://reviews.llvm.org/D40264">https://reviews.llvm.org/D40264</a><br></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Nov 20, 2017 at 12:15 PM, Peter Collingbourne <span dir="ltr"><<a href="mailto:peter@pcc.me.uk" target="_blank">peter@pcc.me.uk</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">We could make it conditional on /debug:dwarf. I'll try to come up with a patch that does that.<div><br></div><div>Peter<br><div class="gmail_extra"><div><div class="h5"><br><div class="gmail_quote">On Mon, Nov 20, 2017 at 11:49 AM, Shoaib Meenai <span dir="ltr"><<a href="mailto:smeenai@fb.com" target="_blank">smeenai@fb.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">This breaks using COFF with DWARF :( Could we consider emitting the symbol<br>
table if a flag is given, rather than omitting it unconditionally?<br>
<br>
(I know that in an ideal world we'd just be using PDBs instead of DWARF and<br>
then this wouldn't be an issue. Unfortunately, the world I live in is far from<br>
ideal.)<br>
<span><br>
On 11/17/17, 11:51 AM, "llvm-commits on behalf of Peter Collingbourne via llvm-commits" <<a href="mailto:llvm-commits-bounces@lists.llvm.org" target="_blank">llvm-commits-bounces@lists.ll<wbr>vm.org</a> on behalf of <a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>> wrote:<br>
<br>
    Author: pcc<br>
    Date: Fri Nov 17 11:51:20 2017<br>
    New Revision: 318548<br>
<br>
</span>    URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject-3Frev-3D318548-26view-3Drev&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=pSxP1ALE_cRba_zZ83BiQF5TzSzMBE98EswsBx7j4J4&s=A0aCUttdwjNAxZGXHBIFZyBqRIbMiYH86WII5g5jF9Y&e=" rel="noreferrer" target="_blank">https://urldefense.proofpoint.<wbr>com/v2/url?u=http-3A__llvm.org<wbr>_viewvc_llvm-2Dproject-3Frev-<wbr>3D318548-26view-3Drev&d=DwIGaQ<wbr>&c=5VD0RTtNlTh3ycd41b3MUw&r=o3<wbr>kDXzdBUE3ljQXKeTWOMw&m=pSxP1AL<wbr>E_cRba_zZ83BiQF5TzSzMBE98EswsB<wbr>x7j4J4&s=A0aCUttdwjNAxZGXHBIFZ<wbr>yBqRIbMiYH86WII5g5jF9Y&e=</a><br>
<span>    Log:<br>
    COFF: Stop emitting a non-standard COFF symbol table into PEs.<br>
<br>
    Now that our support for PDB emission is reasonably good, there is<br>
    no longer a need to emit a COFF symbol table.<br>
<br>
    Also fix a bug where we would fail to emit a string table for long<br>
    section names if /debug was not specified.<br>
<br>
</span>    Differential Revision: <a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__reviews.llvm.org_D40189&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=pSxP1ALE_cRba_zZ83BiQF5TzSzMBE98EswsBx7j4J4&s=jZ19dKjBwujuGwrPxopO48qGODXHGqhQJbOLkPx4pK4&e=" rel="noreferrer" target="_blank">https://urldefense.proofpoint.<wbr>com/v2/url?u=https-3A__reviews<wbr>.llvm.org_D40189&d=DwIGaQ&c=5V<wbr>D0RTtNlTh3ycd41b3MUw&r=o3kDXzd<wbr>BUE3ljQXKeTWOMw&m=pSxP1ALE_<wbr>cRba_zZ83BiQF5TzSzMBE98EswsBx7<wbr>j4J4&s=jZ19dKjBwujuGwrPxopO48q<wbr>GODXHGqhQJbOLkPx4pK4&e=</a><br>
<span><br>
    Removed:<br>
        lld/trunk/test/COFF/strtab-siz<wbr>e.s<br>
        lld/trunk/test/COFF/symtab.tes<wbr>t<br>
    Modified:<br>
        lld/trunk/COFF/Driver.cpp<br>
        lld/trunk/COFF/Options.td<br>
        lld/trunk/COFF/Writer.cpp<br>
        lld/trunk/test/COFF/delayimpor<wbr>ts32.test<br>
        lld/trunk/test/COFF/long-secti<wbr>on-name.test<br>
        lld/trunk/test/COFF/lto-opt-le<wbr>vel.ll<br>
<br>
    Modified: lld/trunk/COFF/Driver.cpp<br>
</span>    URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_lld_trunk_COFF_Driver.cpp-3Frev-3D318548-26r1-3D318547-26r2-3D318548-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=pSxP1ALE_cRba_zZ83BiQF5TzSzMBE98EswsBx7j4J4&s=opSFiYN8oSmKpVXzQRcpmiQ2M-ydGTThXCz0qttC5KY&e=" rel="noreferrer" target="_blank">https://urldefense.proofpoint.<wbr>com/v2/url?u=http-3A__llvm.org<wbr>_viewvc_llvm-2Dproject_lld_tru<wbr>nk_COFF_Driver.cpp-3Frev-3D318<wbr>548-26r1-3D318547-26r2-3D31854<wbr>8-26view-3Ddiff&d=DwIGaQ&c=5VD<wbr>0RTtNlTh3ycd41b3MUw&r=o3kDXzdB<wbr>UE3ljQXKeTWOMw&m=pSxP1ALE_<wbr>cRba_zZ83BiQF5TzSzMBE98EswsBx7<wbr>j4J4&s=<wbr>opSFiYN8oSmKpVXzQRcpmiQ2M-ydGT<wbr>ThXCz0qttC5KY&e=</a><br>
<span>    ==============================<wbr>==============================<wbr>==================<br>
    --- lld/trunk/COFF/Driver.cpp (original)<br>
    +++ lld/trunk/COFF/Driver.cpp Fri Nov 17 11:51:20 2017<br>
    @@ -1012,8 +1012,6 @@ void LinkerDriver::link(ArrayRef<co<wbr>nst c<br>
           Args.hasFlag(OPT_allowisolati<wbr>on, OPT_allowisolation_no, true);<br>
       Config->NxCompat = Args.hasFlag(OPT_nxcompat, OPT_nxcompat_no, true);<br>
       Config->TerminalServerAware = Args.hasFlag(OPT_tsaware, OPT_tsaware_no, true);<br>
    -  if (Args.hasArg(OPT_nosymtab))<br>
    -    Config->WriteSymtab = false;<br>
<br>
       Config->MapFile = getMapFile(Args);<br>
<br>
<br>
    Modified: lld/trunk/COFF/Options.td<br>
</span>    URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_lld_trunk_COFF_Options.td-3Frev-3D318548-26r1-3D318547-26r2-3D318548-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=pSxP1ALE_cRba_zZ83BiQF5TzSzMBE98EswsBx7j4J4&s=_6vEkQ7n3IYqN6VY3-Au2ZMHg4fR7tVTwhGu_dISLMM&e=" rel="noreferrer" target="_blank">https://urldefense.proofpoint.<wbr>com/v2/url?u=http-3A__llvm.org<wbr>_viewvc_llvm-2Dproject_lld_tru<wbr>nk_COFF_Options.td-3Frev-3D318<wbr>548-26r1-3D318547-26r2-3D31854<wbr>8-26view-3Ddiff&d=DwIGaQ&c=5VD<wbr>0RTtNlTh3ycd41b3MUw&r=o3kDXzdB<wbr>UE3ljQXKeTWOMw&m=pSxP1ALE_<wbr>cRba_zZ83BiQF5TzSzMBE98EswsBx7<wbr>j4J4&s=_6vEkQ7n3IYqN6VY3-Au2ZM<wbr>Hg4fR7tVTwhGu_dISLMM&e=</a><br>
<span>    ==============================<wbr>==============================<wbr>==================<br>
    --- lld/trunk/COFF/Options.td (original)<br>
    +++ lld/trunk/COFF/Options.td Fri Nov 17 11:51:20 2017<br>
    @@ -120,7 +120,6 @@ def help_q : Flag<["/?", "-?"], "">, Ali<br>
     def debug_dwarf : F<"debug:dwarf">;<br>
     def export_all_symbols : F<"export-all-symbols">;<br>
     def nopdb : F<"nopdb">, HelpText<"Disable PDB generation for DWARF users">;<br>
    -def nosymtab : F<"nosymtab">;<br>
     def lldmingw : F<"lldmingw">;<br>
     def msvclto : F<"msvclto">;<br>
     def output_def : Joined<["/", "-"], "output-def:">;<br>
<br>
    Modified: lld/trunk/COFF/Writer.cpp<br>
</span>    URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_lld_trunk_COFF_Writer.cpp-3Frev-3D318548-26r1-3D318547-26r2-3D318548-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=pSxP1ALE_cRba_zZ83BiQF5TzSzMBE98EswsBx7j4J4&s=Qnnyk_hs96ntg8mmF1G_ItAWFXv2AoqxrNWLEvFlMpc&e=" rel="noreferrer" target="_blank">https://urldefense.proofpoint.<wbr>com/v2/url?u=http-3A__llvm.org<wbr>_viewvc_llvm-2Dproject_lld_tru<wbr>nk_COFF_Writer.cpp-3Frev-3D318<wbr>548-26r1-3D318547-26r2-3D31854<wbr>8-26view-3Ddiff&d=DwIGaQ&c=5VD<wbr>0RTtNlTh3ycd41b3MUw&r=o3kDXzdB<wbr>UE3ljQXKeTWOMw&m=pSxP1ALE_<wbr>cRba_zZ83BiQF5TzSzMBE98EswsBx7<wbr>j4J4&s=Qnnyk_hs96ntg8mmF1G_ItA<wbr>WFXv2AoqxrNWLEvFlMpc&e=</a><br>
<div><div class="m_8458220251746600236h5">    ==============================<wbr>==============================<wbr>==================<br>
    --- lld/trunk/COFF/Writer.cpp (original)<br>
    +++ lld/trunk/COFF/Writer.cpp Fri Nov 17 11:51:20 2017<br>
    @@ -118,7 +118,7 @@ private:<br>
       void createExportTable();<br>
       void assignAddresses();<br>
       void removeEmptySections();<br>
    -  void createSymbolAndStringTable();<br>
    +  void createStringTable();<br>
       void openFile(StringRef OutputPath);<br>
       template <typename PEHeaderTy> void writeHeader();<br>
       void createSEHTable(OutputSection *RData);<br>
    @@ -127,9 +127,6 @@ private:<br>
       void writeBuildId();<br>
       void sortExceptionTable();<br>
<br>
    -  llvm::Optional<coff_symbol16> createSymbol(Defined *D);<br>
    -  size_t addEntryToStringTable(StringRe<wbr>f Str);<br>
    -<br>
       OutputSection *findSection(StringRef Name);<br>
       OutputSection *createSection(StringRef Name);<br>
       void addBaserels(OutputSection *Dest);<br>
    @@ -154,7 +151,7 @@ private:<br>
       ArrayRef<uint8_t> SectionTable;<br>
<br>
       uint64_t FileSize;<br>
    -  uint32_t PointerToSymbolTable = 0;<br>
    +  uint32_t PointerToStringTable = 0;<br>
       uint64_t SizeOfImage;<br>
       uint64_t SizeOfHeaders;<br>
     };<br>
    @@ -293,7 +290,7 @@ void Writer::run() {<br>
       assignAddresses();<br>
       removeEmptySections();<br>
       setSectionPermissions();<br>
    -  createSymbolAndStringTable();<br>
    +  createStringTable();<br>
<br>
       // We must do this before opening the output file, as it depends on being able<br>
       // to read the contents of the existing output file.<br>
    @@ -470,72 +467,7 @@ void Writer::removeEmptySections() {<br>
         Sec->SectionIndex = Idx++;<br>
     }<br>
<br>
    -size_t Writer::addEntryToStringTable(<wbr>StringRef Str) {<br>
    -  assert(Str.size() > COFF::NameSize);<br>
    -  size_t OffsetOfEntry = Strtab.size() + 4; // +4 for the size field<br>
    -  Strtab.insert(Strtab.end(), Str.begin(), Str.end());<br>
    -  Strtab.push_back('\0');<br>
    -  return OffsetOfEntry;<br>
    -}<br>
    -<br>
    -Optional<coff_symbol16> Writer::createSymbol(Defined *Def) {<br>
    -  // Relative symbols are unrepresentable in a COFF symbol table.<br>
    -  if (isa<DefinedSynthetic>(Def))<br>
    -    return None;<br>
    -<br>
    -  // Don't write dead symbols or symbols in codeview sections to the symbol<br>
    -  // table.<br>
    -  if (!Def->isLive())<br>
    -    return None;<br>
    -  if (auto *D = dyn_cast<DefinedRegular>(Def))<br>
    -    if (D->getChunk()->isCodeView())<br>
    -      return None;<br>
    -<br>
    -  coff_symbol16 Sym;<br>
    -  StringRef Name = Def->getName();<br>
    -  if (Name.size() > COFF::NameSize) {<br>
    -    Sym.Name.Offset.Zeroes = 0;<br>
    -    Sym.Name.Offset.Offset = addEntryToStringTable(Name);<br>
    -  } else {<br>
    -    memset(Sym.Name.ShortName, 0, COFF::NameSize);<br>
    -    memcpy(Sym.Name.ShortName, Name.data(), Name.size());<br>
    -  }<br>
    -<br>
    -  if (auto *D = dyn_cast<DefinedCOFF>(Def)) {<br>
    -    COFFSymbolRef Ref = D->getCOFFSymbol();<br>
    -    Sym.Type = Ref.getType();<br>
    -    Sym.StorageClass = Ref.getStorageClass();<br>
    -  } else {<br>
    -    Sym.Type = IMAGE_SYM_TYPE_NULL;<br>
    -    Sym.StorageClass = IMAGE_SYM_CLASS_EXTERNAL;<br>
    -  }<br>
    -  Sym.NumberOfAuxSymbols = 0;<br>
    -<br>
    -  switch (Def->kind()) {<br>
    -  case Symbol::DefinedAbsoluteKind:<br>
    -    Sym.Value = Def->getRVA();<br>
    -    Sym.SectionNumber = IMAGE_SYM_ABSOLUTE;<br>
    -    break;<br>
    -  default: {<br>
    -    uint64_t RVA = Def->getRVA();<br>
    -    OutputSection *Sec = nullptr;<br>
    -    for (OutputSection *S : OutputSections) {<br>
    -      if (S->getRVA() > RVA)<br>
    -        break;<br>
    -      Sec = S;<br>
    -    }<br>
    -    Sym.Value = RVA - Sec->getRVA();<br>
    -    Sym.SectionNumber = Sec->SectionIndex;<br>
    -    break;<br>
    -  }<br>
    -  }<br>
    -  return Sym;<br>
    -}<br>
    -<br>
    -void Writer::createSymbolAndStringT<wbr>able() {<br>
    -  if (!Config->Debug || !Config->WriteSymtab)<br>
    -    return;<br>
    -<br>
    +void Writer::createStringTable() {<br>
       // Name field in the section table is 8 byte long. Longer names need<br>
       // to be written to the string table. First, construct string table.<br>
       for (OutputSection *Sec : OutputSections) {<br>
    @@ -549,31 +481,19 @@ void Writer::createSymbolAndStringT<wbr>able(<br>
         // to libunwind.<br>
         if ((Sec->getPermissions() & IMAGE_SCN_MEM_DISCARDABLE) == 0)<br>
           continue;<br>
    -    Sec->setStringTableOff(addEntr<wbr>yToStringTable(Name));<br>
    +    Sec->setStringTableOff(Strtab.<wbr>size() + 4); // +4 for the size field<br>
    +    Strtab.insert(Strtab.end(), Name.begin(), Name.end());<br>
    +    Strtab.push_back('\0');<br>
       }<br>
<br>
    -  for (ObjFile *File : ObjFile::Instances) {<br>
    -    for (Symbol *B : File->getSymbols()) {<br>
    -      auto *D = dyn_cast<Defined>(B);<br>
    -      if (!D || D->WrittenToSymtab)<br>
    -        continue;<br>
    -      D->WrittenToSymtab = true;<br>
    -<br>
    -      if (Optional<coff_symbol16> Sym = createSymbol(D))<br>
    -        OutputSymtab.push_back(*Sym);<br>
    -    }<br>
    -  }<br>
    +  if (Strtab.empty())<br>
    +    return;<br>
<br>
       OutputSection *LastSection = OutputSections.back();<br>
    -  // We position the symbol table to be adjacent to the end of the last section.<br>
    -  uint64_t FileOff = LastSection->getFileOff() +<br>
    -                     alignTo(LastSection->getRawSi<wbr>ze(), SectorSize);<br>
    -  if (!OutputSymtab.empty()) {<br>
    -    PointerToSymbolTable = FileOff;<br>
    -    FileOff += OutputSymtab.size() * sizeof(coff_symbol16);<br>
    -  }<br>
    -  FileOff += Strtab.size() + 4;<br>
    -  FileSize = alignTo(FileOff, SectorSize);<br>
    +  // We position the string table to be adjacent to the end of the last section.<br>
    +  PointerToStringTable = LastSection->getFileOff() +<br>
    +                         alignTo(LastSection->getRawSi<wbr>ze(), SectorSize);<br>
    +  FileSize = alignTo(PointerToStringTable + Strtab.size() + 4, SectorSize);<br>
     }<br>
<br>
     // Visits all sections to assign incremental, non-overlapping RVAs and<br>
    @@ -760,22 +680,18 @@ template <typename PEHeaderTy> void Writ<br>
       SectionTable = ArrayRef<uint8_t>(<br>
           Buf - OutputSections.size() * sizeof(coff_section), Buf);<br>
<br>
    -  if (OutputSymtab.empty())<br>
    +  // The string table normally follows the symbol table, but because we always<br>
    +  // emit an empty symbol table, the string table appears at the location of the<br>
    +  // symbol table.<br>
    +  COFF->PointerToSymbolTable = PointerToStringTable;<br>
    +  COFF->NumberOfSymbols = 0;<br>
    +  if (Strtab.empty())<br>
         return;<br>
<br>
    -  COFF->PointerToSymbolTable = PointerToSymbolTable;<br>
    -  uint32_t NumberOfSymbols = OutputSymtab.size();<br>
    -  COFF->NumberOfSymbols = NumberOfSymbols;<br>
    -  auto *SymbolTable = reinterpret_cast<coff_symbol16 *>(<br>
    -      Buffer->getBufferStart() + COFF->PointerToSymbolTable);<br>
    -  for (size_t I = 0; I != NumberOfSymbols; ++I)<br>
    -    SymbolTable[I] = OutputSymtab[I];<br>
    -  // Create the string table, it follows immediately after the symbol table.<br>
    -  // The first 4 bytes is length including itself.<br>
    -  Buf = reinterpret_cast<uint8_t *>(&SymbolTable[NumberOfSymbol<wbr>s]);<br>
    -  write32le(Buf, Strtab.size() + 4);<br>
    -  if (!Strtab.empty())<br>
    -    memcpy(Buf + 4, Strtab.data(), Strtab.size());<br>
    +  auto *StringTable = Buffer->getBufferStart() + PointerToStringTable;<br>
    +  // Create the string table. The first 4 bytes is length including itself.<br>
    +  write32le(StringTable, Strtab.size() + 4);<br>
    +  memcpy(StringTable + 4, Strtab.data(), Strtab.size());<br>
     }<br>
<br>
     void Writer::openFile(StringRef Path) {<br>
<br>
    Modified: lld/trunk/test/COFF/delayimpor<wbr>ts32.test<br>
</div></div>    URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_lld_trunk_test_COFF_delayimports32.test-3Frev-3D318548-26r1-3D318547-26r2-3D318548-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=pSxP1ALE_cRba_zZ83BiQF5TzSzMBE98EswsBx7j4J4&s=n2o87PxvuvNywcttrhT416tfieypdfQUIYRAVFwTTxc&e=" rel="noreferrer" target="_blank">https://urldefense.proofpoint.<wbr>com/v2/url?u=http-3A__llvm.org<wbr>_viewvc_llvm-2Dproject_lld_tru<wbr>nk_test_COFF_delayimports32.<wbr>test-3Frev-3D318548-26r1-<wbr>3D318547-26r2-3D318548-26view-<wbr>3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3<wbr>ycd41b3MUw&r=o3kDXzdBUE3ljQXKe<wbr>TWOMw&m=pSxP1ALE_cRba_zZ83BiQF<wbr>5TzSzMBE98EswsBx7j4J4&s=n2o87P<wbr>xvuvNywcttrhT416tfieypdfQUIYRA<wbr>VFwTTxc&e=</a><br>
<span>    ==============================<wbr>==============================<wbr>==================<br>
    --- lld/trunk/test/COFF/delayimpor<wbr>ts32.test (original)<br>
    +++ lld/trunk/test/COFF/delayimpor<wbr>ts32.test Fri Nov 17 11:51:20 2017<br>
    @@ -73,7 +73,7 @@ BASEREL-NEXT: ]<br>
<br>
     DISASM:      202b:      68 20 10 40 00  pushl   $4198432<br>
     DISASM-NEXT: 2030:      68 00 40 40 00  pushl   $4210688<br>
    -DISASM-NEXT: 2035:      e8 c6 ff ff ff  calll   -58 <_main@0><br>
    +DISASM-NEXT: 2035:      e8 c6 ff ff ff  calll   -58 <.text><br>
     DISASM-NEXT: 203a:      5a      popl    %edx<br>
     DISASM-NEXT: 203b:      59      popl    %ecx<br>
     DISASM-NEXT: 203c:      ff e0   jmpl    *%eax<br>
    @@ -81,7 +81,7 @@ DISASM-NEXT: 203e:      51      pushl<br>
     DISASM-NEXT: 203f:      52      pushl   %edx<br>
     DISASM-NEXT: 2040:      68 24 10 40 00  pushl   $4198436<br>
     DISASM-NEXT: 2045:      68 00 40 40 00  pushl   $4210688<br>
    -DISASM-NEXT: 204a:      e8 b1 ff ff ff  calll   -79 <_main@0><br>
    +DISASM-NEXT: 204a:      e8 b1 ff ff ff  calll   -79 <.text><br>
     DISASM-NEXT: 204f:      5a      popl    %edx<br>
     DISASM-NEXT: 2050:      59      popl    %ecx<br>
     DISASM-NEXT: 2051:      ff e0   jmpl    *%eax<br>
<br>
    Modified: lld/trunk/test/COFF/long-secti<wbr>on-name.test<br>
</span>    URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_lld_trunk_test_COFF_long-2Dsection-2Dname.test-3Frev-3D318548-26r1-3D318547-26r2-3D318548-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=pSxP1ALE_cRba_zZ83BiQF5TzSzMBE98EswsBx7j4J4&s=wFi0GRfV4dAuvYL06ig1NAnGOdqmvzEBXlwpiKtYt9o&e=" rel="noreferrer" target="_blank">https://urldefense.proofpoint.<wbr>com/v2/url?u=http-3A__llvm.org<wbr>_viewvc_llvm-2Dproject_lld_tru<wbr>nk_test_COFF_long-2Dsection-<wbr>2Dname.test-3Frev-3D318548-<wbr>26r1-3D318547-26r2-3D318548-<wbr>26view-3Ddiff&d=DwIGaQ&c=5VD0R<wbr>TtNlTh3ycd41b3MUw&r=o3kDXzdBUE<wbr>3ljQXKeTWOMw&m=pSxP1ALE_cRba_z<wbr>Z83BiQF5TzSzMBE98EswsBx7j4J4&s<wbr>=wFi0GRfV4dAuvYL06ig1NAnGOdqmv<wbr>zEBXlwpiKtYt9o&e=</a><br>
<span>    ==============================<wbr>==============================<wbr>==================<br>
    --- lld/trunk/test/COFF/long-secti<wbr>on-name.test (original)<br>
    +++ lld/trunk/test/COFF/long-secti<wbr>on-name.test Fri Nov 17 11:51:20 2017<br>
    @@ -1,6 +1,8 @@<br>
     # RUN: yaml2obj < %s > %t.obj<br>
    -# RUN: lld-link /debug /out:%t.exe /entry:main %t.obj<br>
    +# RUN: lld-link /out:%t.exe /entry:main %t.obj<br>
     # RUN: llvm-readobj -sections %t.exe | FileCheck %s<br>
    +# RUN: lld-link /debug /out:%t2.exe /entry:main %t.obj<br>
    +# RUN: llvm-readobj -sections %t2.exe | FileCheck %s<br>
<br>
     # CHECK: Name: .eh_fram (<br>
     # CHECK: Name: .data_long_section_name<br>
<br>
    Modified: lld/trunk/test/COFF/lto-opt-le<wbr>vel.ll<br>
</span>    URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_lld_trunk_test_COFF_lto-2Dopt-2Dlevel.ll-3Frev-3D318548-26r1-3D318547-26r2-3D318548-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=pSxP1ALE_cRba_zZ83BiQF5TzSzMBE98EswsBx7j4J4&s=KDRbnngFbjOpdauA8Jklw9mLyc2Woa71PEaV2Jliv94&e=" rel="noreferrer" target="_blank">https://urldefense.proofpoint.<wbr>com/v2/url?u=http-3A__llvm.org<wbr>_viewvc_llvm-2Dproject_lld_tru<wbr>nk_test_COFF_lto-2Dopt-2Dlevel<wbr>.ll-3Frev-3D318548-26r1-<wbr>3D318547-26r2-3D318548-26view-<wbr>3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3<wbr>ycd41b3MUw&r=o3kDXzdBUE3ljQXKe<wbr>TWOMw&m=pSxP1ALE_cRba_zZ83BiQF<wbr>5TzSzMBE98EswsBx7j4J4&s=KDRbnn<wbr>gFbjOpdauA8Jklw9mLyc2Woa71PEaV<wbr>2Jliv94&e=</a><br>
<span>    ==============================<wbr>==============================<wbr>==================<br>
    --- lld/trunk/test/COFF/lto-opt-le<wbr>vel.ll (original)<br>
    +++ lld/trunk/test/COFF/lto-opt-le<wbr>vel.ll Fri Nov 17 11:51:20 2017<br>
    @@ -1,10 +1,10 @@<br>
     ; RUN: llvm-as -o %t.obj %s<br>
    -; RUN: lld-link /out:%t0.exe /entry:main /subsystem:console /opt:lldlto=0 /debug %t.obj<br>
    -; RUN: llvm-nm %t0.exe | FileCheck --check-prefix=CHECK-O0 %s<br>
    -; RUN: lld-link /out:%t2.exe /entry:main /subsystem:console /opt:lldlto=2 /debug %t.obj<br>
    -; RUN: llvm-nm %t2.exe | FileCheck --check-prefix=CHECK-O2 %s<br>
    -; RUN: lld-link /out:%t2a.exe /entry:main /subsystem:console /debug %t.obj<br>
    -; RUN: llvm-nm %t2a.exe | FileCheck --check-prefix=CHECK-O2 %s<br>
    +; RUN: lld-link /out:%t0.exe /entry:main /subsystem:console /opt:lldlto=0 /lldmap:%t0.map %t.obj<br>
    +; RUN: FileCheck --check-prefix=CHECK-O0 %s < %t0.map<br>
    +; RUN: lld-link /out:%t2.exe /entry:main /subsystem:console /opt:lldlto=2 /lldmap:%t2.map %t.obj<br>
    +; RUN: FileCheck --check-prefix=CHECK-O2 %s < %t2.map<br>
    +; RUN: lld-link /out:%t2a.exe /entry:main /subsystem:console /lldmap:%t2a.map %t.obj<br>
    +; RUN: FileCheck --check-prefix=CHECK-O2 %s < %t2a.map<br>
<br>
     target datalayout = "e-m:w-i64:64-f80:128-n8:16:32<wbr>:64-S128"<br>
     target triple = "x86_64-pc-windows-msvc"<br>
<br>
    Removed: lld/trunk/test/COFF/strtab-siz<wbr>e.s<br>
</span>    URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_lld_trunk_test_COFF_strtab-2Dsize.s-3Frev-3D318547-26view-3Dauto&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=pSxP1ALE_cRba_zZ83BiQF5TzSzMBE98EswsBx7j4J4&s=nzD-FEGWws76abgAvhIJZ3K_U9PQeS_-ec_RDZhuQ20&e=" rel="noreferrer" target="_blank">https://urldefense.proofpoint.<wbr>com/v2/url?u=http-3A__llvm.org<wbr>_viewvc_llvm-2Dproject_lld_tru<wbr>nk_test_COFF_strtab-2Dsize.s-<wbr>3Frev-3D318547-26view-3Dauto&<wbr>d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3<wbr>MUw&r=o3kDXzdBUE3ljQXKeTWOMw&<wbr>m=pSxP1ALE_cRba_zZ83BiQF5TzSzM<wbr>BE98EswsBx7j4J4&s=nzD-<wbr>FEGWws76abgAvhIJZ3K_U9PQeS_-<wbr>ec_RDZhuQ20&e=</a><br>
<div><div class="m_8458220251746600236h5">    ==============================<wbr>==============================<wbr>==================<br>
    --- lld/trunk/test/COFF/strtab-siz<wbr>e.s (original)<br>
    +++ lld/trunk/test/COFF/strtab-siz<wbr>e.s (removed)<br>
    @@ -1,216 +0,0 @@<br>
    -# REQEUIRES: x86<br>
    -<br>
    -# Test that the strtab size is included in the allocation even if the<br>
    -# strtab itself is empty. To achieve this, we need a number of symbols N<br>
    -# where alignTo(N*18, 512) < alignTo(N*18 + 4, 512), where the first<br>
    -# positive N fulfilling that is 199.<br>
    -<br>
    -# RUN: llvm-mc -triple=x86_64-windows-msvc %s -filetype=obj -o %t.obj<br>
    -# RUN: lld-link -out:%t.exe -entry:main %t.obj -debug<br>
    -<br>
    -# If the size of the strtab isn't allocated for, llvm-readobj would<br>
    -# output SymbolCount: 0 (and dumpbin.exe would error out with "invalid file<br>
    -# or disk full, cannot seek to 0x1602").<br>
    -<br>
    -# RUN: llvm-readobj -file-headers %t.exe | FileCheck %s<br>
    -# CHECK: SymbolCount: 199<br>
    -<br>
    -.global main<br>
    -.text<br>
    -main:<br>
    -sym0:<br>
    -sym1:<br>
    -sym2:<br>
    -sym3:<br>
    -sym4:<br>
    -sym5:<br>
    -sym6:<br>
    -sym7:<br>
    -sym8:<br>
    -sym9:<br>
    -sym10:<br>
    -sym11:<br>
    -sym12:<br>
    -sym13:<br>
    -sym14:<br>
    -sym15:<br>
    -sym16:<br>
    -sym17:<br>
    -sym18:<br>
    -sym19:<br>
    -sym20:<br>
    -sym21:<br>
    -sym22:<br>
    -sym23:<br>
    -sym24:<br>
    -sym25:<br>
    -sym26:<br>
    -sym27:<br>
    -sym28:<br>
    -sym29:<br>
    -sym30:<br>
    -sym31:<br>
    -sym32:<br>
    -sym33:<br>
    -sym34:<br>
    -sym35:<br>
    -sym36:<br>
    -sym37:<br>
    -sym38:<br>
    -sym39:<br>
    -sym40:<br>
    -sym41:<br>
    -sym42:<br>
    -sym43:<br>
    -sym44:<br>
    -sym45:<br>
    -sym46:<br>
    -sym47:<br>
    -sym48:<br>
    -sym49:<br>
    -sym50:<br>
    -sym51:<br>
    -sym52:<br>
    -sym53:<br>
    -sym54:<br>
    -sym55:<br>
    -sym56:<br>
    -sym57:<br>
    -sym58:<br>
    -sym59:<br>
    -sym60:<br>
    -sym61:<br>
    -sym62:<br>
    -sym63:<br>
    -sym64:<br>
    -sym65:<br>
    -sym66:<br>
    -sym67:<br>
    -sym68:<br>
    -sym69:<br>
    -sym70:<br>
    -sym71:<br>
    -sym72:<br>
    -sym73:<br>
    -sym74:<br>
    -sym75:<br>
    -sym76:<br>
    -sym77:<br>
    -sym78:<br>
    -sym79:<br>
    -sym80:<br>
    -sym81:<br>
    -sym82:<br>
    -sym83:<br>
    -sym84:<br>
    -sym85:<br>
    -sym86:<br>
    -sym87:<br>
    -sym88:<br>
    -sym89:<br>
    -sym90:<br>
    -sym91:<br>
    -sym92:<br>
    -sym93:<br>
    -sym94:<br>
    -sym95:<br>
    -sym96:<br>
    -sym97:<br>
    -sym98:<br>
    -sym99:<br>
    -sym100:<br>
    -sym101:<br>
    -sym102:<br>
    -sym103:<br>
    -sym104:<br>
    -sym105:<br>
    -sym106:<br>
    -sym107:<br>
    -sym108:<br>
    -sym109:<br>
    -sym110:<br>
    -sym111:<br>
    -sym112:<br>
    -sym113:<br>
    -sym114:<br>
    -sym115:<br>
    -sym116:<br>
    -sym117:<br>
    -sym118:<br>
    -sym119:<br>
    -sym120:<br>
    -sym121:<br>
    -sym122:<br>
    -sym123:<br>
    -sym124:<br>
    -sym125:<br>
    -sym126:<br>
    -sym127:<br>
    -sym128:<br>
    -sym129:<br>
    -sym130:<br>
    -sym131:<br>
    -sym132:<br>
    -sym133:<br>
    -sym134:<br>
    -sym135:<br>
    -sym136:<br>
    -sym137:<br>
    -sym138:<br>
    -sym139:<br>
    -sym140:<br>
    -sym141:<br>
    -sym142:<br>
    -sym143:<br>
    -sym144:<br>
    -sym145:<br>
    -sym146:<br>
    -sym147:<br>
    -sym148:<br>
    -sym149:<br>
    -sym150:<br>
    -sym151:<br>
    -sym152:<br>
    -sym153:<br>
    -sym154:<br>
    -sym155:<br>
    -sym156:<br>
    -sym157:<br>
    -sym158:<br>
    -sym159:<br>
    -sym160:<br>
    -sym161:<br>
    -sym162:<br>
    -sym163:<br>
    -sym164:<br>
    -sym165:<br>
    -sym166:<br>
    -sym167:<br>
    -sym168:<br>
    -sym169:<br>
    -sym170:<br>
    -sym171:<br>
    -sym172:<br>
    -sym173:<br>
    -sym174:<br>
    -sym175:<br>
    -sym176:<br>
    -sym177:<br>
    -sym178:<br>
    -sym179:<br>
    -sym180:<br>
    -sym181:<br>
    -sym182:<br>
    -sym183:<br>
    -sym184:<br>
    -sym185:<br>
    -sym186:<br>
    -sym187:<br>
    -sym188:<br>
    -sym189:<br>
    -sym190:<br>
    -sym191:<br>
    -sym192:<br>
    -sym193:<br>
    -sym194:<br>
    -  ret<br>
<br>
    Removed: lld/trunk/test/COFF/symtab.tes<wbr>t<br>
</div></div>    URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_lld_trunk_test_COFF_symtab.test-3Frev-3D318547-26view-3Dauto&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=pSxP1ALE_cRba_zZ83BiQF5TzSzMBE98EswsBx7j4J4&s=A88Bq62VVKMc8R5Fs3316J7LQ3-y2rxXbIGbwmmMAYE&e=" rel="noreferrer" target="_blank">https://urldefense.proofpoint.<wbr>com/v2/url?u=http-3A__llvm.org<wbr>_viewvc_llvm-2Dproject_lld_tru<wbr>nk_test_COFF_symtab.test-3Frev<wbr>-3D318547-26view-3Dauto&d=<wbr>DwIGaQ&c=5VD0RTtNlTh3ycd41b3MU<wbr>w&r=o3kDXzdBUE3ljQXKeTWOMw&m=p<wbr>SxP1ALE_cRba_zZ83BiQF5TzSzMBE9<wbr>8EswsBx7j4J4&s=<wbr>A88Bq62VVKMc8R5Fs3316J7LQ3-y2r<wbr>xXbIGbwmmMAYE&e=</a><br>
<div><div class="m_8458220251746600236h5">    ==============================<wbr>==============================<wbr>==================<br>
    --- lld/trunk/test/COFF/symtab.tes<wbr>t (original)<br>
    +++ lld/trunk/test/COFF/symtab.tes<wbr>t (removed)<br>
    @@ -1,236 +0,0 @@<br>
    -# RUN: yaml2obj < %s > %t.obj<br>
    -# RUN: lld-link /debug /out:%t.exe /entry:main %t.obj %p/Inputs/std64.lib<br>
    -# RUN: llvm-readobj -symbols %t.exe | FileCheck %s<br>
    -# RUN: lld-link /debug /opt:noref /out:%t.exe /entry:main %t.obj %p/Inputs/std64.lib<br>
    -# RUN: llvm-readobj -symbols %t.exe | FileCheck %s<br>
    -<br>
    -# RUN: lld-link /debug /nosymtab /out:%t.exe /entry:main %t.obj %p/Inputs/std64.lib<br>
    -# RUN: llvm-readobj -symbols %t.exe | FileCheck -check-prefix=NO %s<br>
    -<br>
    -# CHECK:      Symbols [<br>
    -# CHECK-NEXT:   Symbol {<br>
    -# CHECK-NEXT:     Name: .text<br>
    -# CHECK-NEXT:     Value: 0<br>
    -# CHECK-NEXT:     Section: .text (2)<br>
    -# CHECK-NEXT:     BaseType: Null (0x0)<br>
    -# CHECK-NEXT:     ComplexType: Null (0x0)<br>
    -# CHECK-NEXT:     StorageClass: Static (0x3)<br>
    -# CHECK-NEXT:     AuxSymbolCount: 0<br>
    -# CHECK-NEXT:   }<br>
    -# CHECK-NEXT:   Symbol {<br>
    -# CHECK-NEXT:     Name: .text2<br>
    -# CHECK-NEXT:     Value: 0<br>
    -# CHECK-NEXT:     Section: .text (2)<br>
    -# CHECK-NEXT:     BaseType: Null (0x0)<br>
    -# CHECK-NEXT:     ComplexType: Null (0x0)<br>
    -# CHECK-NEXT:     StorageClass: Static (0x3)<br>
    -# CHECK-NEXT:     AuxSymbolCount: 0<br>
    -# CHECK-NEXT:   }<br>
    -# CHECK-NEXT:   Symbol {<br>
    -# CHECK-NEXT:     Name: .data<br>
    -# CHECK-NEXT:     Value: 0<br>
    -# CHECK-NEXT:     Section: .data (1)<br>
    -# CHECK-NEXT:     BaseType: Null (0x0)<br>
    -# CHECK-NEXT:     ComplexType: Null (0x0)<br>
    -# CHECK-NEXT:     StorageClass: Static (0x3)<br>
    -# CHECK-NEXT:     AuxSymbolCount: 0<br>
    -# CHECK-NEXT:   }<br>
    -# CHECK-NEXT:   Symbol {<br>
    -# CHECK-NEXT:     Name: MessageBoxA<br>
    -# CHECK-NEXT:     Value: 80<br>
    -# CHECK-NEXT:     Section: .text (2)<br>
    -# CHECK-NEXT:     BaseType: Null (0x0)<br>
    -# CHECK-NEXT:     ComplexType: Null (0x0)<br>
    -# CHECK-NEXT:     StorageClass: External (0x2)<br>
    -# CHECK-NEXT:     AuxSymbolCount: 0<br>
    -# CHECK-NEXT:   }<br>
    -# CHECK-NEXT:   Symbol {<br>
    -# CHECK-NEXT:     Name: ExitProcess<br>
    -# CHECK-NEXT:     Value: 64<br>
    -# CHECK-NEXT:     Section: .text (2)<br>
    -# CHECK-NEXT:     BaseType: Null (0x0)<br>
    -# CHECK-NEXT:     ComplexType: Null (0x0)<br>
    -# CHECK-NEXT:     StorageClass: External (0x2)<br>
    -# CHECK-NEXT:     AuxSymbolCount: 0<br>
    -# CHECK-NEXT:   }<br>
    -# CHECK-NEXT:   Symbol {<br>
    -# CHECK-NEXT:     Name: message<br>
    -# CHECK-NEXT:     Value: 6<br>
    -# CHECK-NEXT:     Section: .text2 (3)<br>
    -# CHECK-NEXT:     BaseType: Null (0x0)<br>
    -# CHECK-NEXT:     ComplexType: Null (0x0)<br>
    -# CHECK-NEXT:     StorageClass: Static (0x3)<br>
    -# CHECK-NEXT:     AuxSymbolCount: 0<br>
    -# CHECK-NEXT:   }<br>
    -# CHECK-NEXT:   Symbol {<br>
    -# CHECK-NEXT:     Name: main<br>
    -# CHECK-NEXT:     Value: 0<br>
    -# CHECK-NEXT:     Section: .text (2)<br>
    -# CHECK-NEXT:     BaseType: Null (0x0)<br>
    -# CHECK-NEXT:     ComplexType: Null (0x0)<br>
    -# CHECK-NEXT:     StorageClass: External (0x2)<br>
    -# CHECK-NEXT:     AuxSymbolCount: 0<br>
    -# CHECK-NEXT:   }<br>
    -# CHECK-NEXT:   Symbol {<br>
    -# CHECK-NEXT:     Name: caption<br>
    -# CHECK-NEXT:     Value: 0<br>
    -# CHECK-NEXT:     Section: .text2 (3)<br>
    -# CHECK-NEXT:     BaseType: Null (0x0)<br>
    -# CHECK-NEXT:     ComplexType: Null (0x0)<br>
    -# CHECK-NEXT:     StorageClass: Static (0x3)<br>
    -# CHECK-NEXT:     AuxSymbolCount: 0<br>
    -# CHECK-NEXT:   }<br>
    -# CHECK-NEXT:   Symbol {<br>
    -# CHECK-NEXT:     Name: abs_symbol<br>
    -# CHECK-NEXT:     Value: 2662186735<br>
    -# CHECK-NEXT:     Section: IMAGE_SYM_ABSOLUTE (-1)<br>
    -# CHECK-NEXT:     BaseType: Null (0x0)<br>
    -# CHECK-NEXT:     ComplexType: Null (0x0)<br>
    -# CHECK-NEXT:     StorageClass: External (0x2)<br>
    -# CHECK-NEXT:     AuxSymbolCount: 0<br>
    -# CHECK-NEXT:   }<br>
    -# CHECK-NEXT: ]<br>
    -<br>
    -# NO: Symbols [<br>
    -<br>
    ---- !COFF<br>
    -header:<br>
    -  Machine:         IMAGE_FILE_MACHINE_AMD64<br>
    -  Characteristics: []<br>
    -sections:<br>
    -  - Name:            .text<br>
    -    Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]<br>
    -    Alignment:       4096<br>
    -    SectionData:     <wbr>B80000000000000000506800000000<wbr>0000000068000000000000000050E8<wbr>000000000000000050E80000000000<wbr>00000050E80000000000000000<br>
    -    Relocations:<br>
    -      - VirtualAddress:  0<br>
    -        SymbolName:      abs_symbol<br>
    -        Type:            IMAGE_REL_AMD64_ADDR64<br>
    -      - VirtualAddress:  7<br>
    -        SymbolName:      caption<br>
    -        Type:            IMAGE_REL_AMD64_ADDR64<br>
    -      - VirtualAddress:  12<br>
    -        SymbolName:      message<br>
    -        Type:            IMAGE_REL_AMD64_ADDR64<br>
    -      - VirtualAddress:  18<br>
    -        SymbolName:      MessageBoxA<br>
    -        Type:            IMAGE_REL_AMD64_REL32<br>
    -      - VirtualAddress:  24<br>
    -        SymbolName:      ExitProcess<br>
    -        Type:            IMAGE_REL_AMD64_REL32<br>
    -      - VirtualAddress:  30<br>
    -        SymbolName:      __ImageBase<br>
    -        Type:            IMAGE_REL_AMD64_ADDR64<br>
    -  - Name:            .text2<br>
    -    Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]<br>
    -    Alignment:       4096<br>
    -    SectionData:     <wbr>B80000000000000000506800000000<wbr>0000000068000000000000000050E8<wbr>000000000000000050E80000000000<wbr>00000050E80000000000000000<br>
    -    Relocations:<br>
    -      - VirtualAddress:  0<br>
    -        SymbolName:      abs_symbol<br>
    -        Type:            IMAGE_REL_AMD64_ADDR64<br>
    -      - VirtualAddress:  7<br>
    -        SymbolName:      caption<br>
    -        Type:            IMAGE_REL_AMD64_ADDR64<br>
    -      - VirtualAddress:  12<br>
    -        SymbolName:      message<br>
    -        Type:            IMAGE_REL_AMD64_ADDR64<br>
    -      - VirtualAddress:  18<br>
    -        SymbolName:      MessageBoxA<br>
    -        Type:            IMAGE_REL_AMD64_REL32<br>
    -      - VirtualAddress:  24<br>
    -        SymbolName:      ExitProcess<br>
    -        Type:            IMAGE_REL_AMD64_REL32<br>
    -      - VirtualAddress:  30<br>
    -        SymbolName:      __ImageBase<br>
    -        Type:            IMAGE_REL_AMD64_ADDR64<br>
    -  - Name:            .data<br>
    -    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA<wbr>, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ]<br>
    -    Alignment:       4<br>
    -    SectionData:     <wbr>48656C6C6F0048656C6C6F20576F72<wbr>6C6400<br>
    -symbols:<br>
    -  - Name:            "@<a href="http://comp.id" rel="noreferrer" target="_blank">comp.id</a>"<br>
    -    Value:           10394907<br>
    -    SectionNumber:   65535<br>
    -    SimpleType:      IMAGE_SYM_TYPE_NULL<br>
    -    ComplexType:     IMAGE_SYM_DTYPE_NULL<br>
    -    StorageClass:    IMAGE_SYM_CLASS_STATIC<br>
    -  - Name:            .text<br>
    -    Value:           0<br>
    -    SectionNumber:   1<br>
    -    SimpleType:      IMAGE_SYM_TYPE_NULL<br>
    -    ComplexType:     IMAGE_SYM_DTYPE_NULL<br>
    -    StorageClass:    IMAGE_SYM_CLASS_STATIC<br>
    -    SectionDefinition:<br>
    -      Length:          28<br>
    -      NumberOfRelocations: 6<br>
    -      NumberOfLinenumbers: 0<br>
    -      CheckSum:        0<br>
    -      Number:          0<br>
    -  - Name:            .text2<br>
    -    Value:           0<br>
    -    SectionNumber:   1<br>
    -    SimpleType:      IMAGE_SYM_TYPE_NULL<br>
    -    ComplexType:     IMAGE_SYM_DTYPE_NULL<br>
    -    StorageClass:    IMAGE_SYM_CLASS_STATIC<br>
    -    SectionDefinition:<br>
    -      Length:          28<br>
    -      NumberOfRelocations: 6<br>
    -      NumberOfLinenumbers: 0<br>
    -      CheckSum:        0<br>
    -      Number:          0<br>
    -  - Name:            .data<br>
    -    Value:           0<br>
    -    SectionNumber:   3<br>
    -    SimpleType:      IMAGE_SYM_TYPE_NULL<br>
    -    ComplexType:     IMAGE_SYM_DTYPE_NULL<br>
    -    StorageClass:    IMAGE_SYM_CLASS_STATIC<br>
    -    SectionDefinition:<br>
    -      Length:          18<br>
    -      NumberOfRelocations: 0<br>
    -      NumberOfLinenumbers: 0<br>
    -      CheckSum:        0<br>
    -      Number:          0<br>
    -  - Name:            MessageBoxA<br>
    -    Value:           0<br>
    -    SectionNumber:   0<br>
    -    SimpleType:      IMAGE_SYM_TYPE_NULL<br>
    -    ComplexType:     IMAGE_SYM_DTYPE_NULL<br>
    -    StorageClass:    IMAGE_SYM_CLASS_EXTERNAL<br>
    -  - Name:            ExitProcess<br>
    -    Value:           0<br>
    -    SectionNumber:   0<br>
    -    SimpleType:      IMAGE_SYM_TYPE_NULL<br>
    -    ComplexType:     IMAGE_SYM_DTYPE_NULL<br>
    -    StorageClass:    IMAGE_SYM_CLASS_EXTERNAL<br>
    -  - Name:            message<br>
    -    Value:           6<br>
    -    SectionNumber:   2<br>
    -    SimpleType:      IMAGE_SYM_TYPE_NULL<br>
    -    ComplexType:     IMAGE_SYM_DTYPE_NULL<br>
    -    StorageClass:    IMAGE_SYM_CLASS_STATIC<br>
    -  - Name:            main<br>
    -    Value:           0<br>
    -    SectionNumber:   1<br>
    -    SimpleType:      IMAGE_SYM_TYPE_NULL<br>
    -    ComplexType:     IMAGE_SYM_DTYPE_NULL<br>
    -    StorageClass:    IMAGE_SYM_CLASS_EXTERNAL<br>
    -  - Name:            caption<br>
    -    Value:           0<br>
    -    SectionNumber:   2<br>
    -    SimpleType:      IMAGE_SYM_TYPE_NULL<br>
    -    ComplexType:     IMAGE_SYM_DTYPE_NULL<br>
    -    StorageClass:    IMAGE_SYM_CLASS_STATIC<br>
    -  - Name:            abs_symbol<br>
    -    Value:           0xDEADBEEF<br>
    -    SectionNumber:   -1<br>
    -    SimpleType:      IMAGE_SYM_TYPE_NULL<br>
    -    ComplexType:     IMAGE_SYM_DTYPE_NULL<br>
    -    StorageClass:    IMAGE_SYM_CLASS_EXTERNAL<br>
    -  - Name:            __ImageBase<br>
    -    Value:           0<br>
    -    SectionNumber:   0<br>
    -    SimpleType:      IMAGE_SYM_TYPE_NULL<br>
    -    ComplexType:     IMAGE_SYM_DTYPE_NULL<br>
    -    StorageClass:    IMAGE_SYM_CLASS_EXTERNAL<br>
    -...<br>
<br>
<br>
    ______________________________<wbr>_________________<br>
    llvm-commits mailing list<br>
    <a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><br>
</div></div>    <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.llvm.org_cgi-2Dbin_mailman_listinfo_llvm-2Dcommits&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=pSxP1ALE_cRba_zZ83BiQF5TzSzMBE98EswsBx7j4J4&s=vJGlQY3PnyqNpL7hx8WaJ9Yhcbo1G_M6qVrTQAs7OGA&e=" rel="noreferrer" target="_blank">https://urldefense.proofpoint.<wbr>com/v2/url?u=http-3A__lists.ll<wbr>vm.org_cgi-2Dbin_mailman_listi<wbr>nfo_llvm-2Dcommits&d=DwIGaQ&c=<wbr>5VD0RTtNlTh3ycd41b3MUw&r=o3kDX<wbr>zdBUE3ljQXKeTWOMw&m=pSxP1ALE_<wbr>cRba_zZ83BiQF5TzSzMBE98EswsBx7<wbr>j4J4&s=vJGlQY3PnyqNpL7hx8WaJ9Y<wbr>hcbo1G_M6qVrTQAs7OGA&e=</a><br>
<br>
<br>
</blockquote></div><br><br clear="all"><div><br></div></div></div><span class="HOEnZb"><font color="#888888">-- <br><div class="m_8458220251746600236gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">-- <div>Peter</div></div></div>
</font></span></div></div></div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">-- <div>Peter</div></div></div>
</div>