<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>