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