[lld] r318548 - COFF: Stop emitting a non-standard COFF symbol table into PEs.

Shoaib Meenai via llvm-commits llvm-commits at lists.llvm.org
Mon Nov 20 11:49:27 PST 2017


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=pSxP1ALE_cRba_zZ83BiQF5TzSzMBE98EswsBx7j4J4&s=A0aCUttdwjNAxZGXHBIFZyBqRIbMiYH86WII5g5jF9Y&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=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=pSxP1ALE_cRba_zZ83BiQF5TzSzMBE98EswsBx7j4J4&s=jZ19dKjBwujuGwrPxopO48qGODXHGqhQJbOLkPx4pK4&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-3D318548-26r1-3D318547-26r2-3D318548-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=pSxP1ALE_cRba_zZ83BiQF5TzSzMBE98EswsBx7j4J4&s=opSFiYN8oSmKpVXzQRcpmiQ2M-ydGTThXCz0qttC5KY&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-3D318548-26r1-3D318547-26r2-3D318548-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=pSxP1ALE_cRba_zZ83BiQF5TzSzMBE98EswsBx7j4J4&s=_6vEkQ7n3IYqN6VY3-Au2ZMHg4fR7tVTwhGu_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-3D318548-26r1-3D318547-26r2-3D318548-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=pSxP1ALE_cRba_zZ83BiQF5TzSzMBE98EswsBx7j4J4&s=Qnnyk_hs96ntg8mmF1G_ItAWFXv2AoqxrNWLEvFlMpc&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=o3kDXzdBUE3ljQXKeTWOMw&m=pSxP1ALE_cRba_zZ83BiQF5TzSzMBE98EswsBx7j4J4&s=n2o87PxvuvNywcttrhT416tfieypdfQUIYRAVFwTTxc&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=o3kDXzdBUE3ljQXKeTWOMw&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=o3kDXzdBUE3ljQXKeTWOMw&m=pSxP1ALE_cRba_zZ83BiQF5TzSzMBE98EswsBx7j4J4&s=KDRbnngFbjOpdauA8Jklw9mLyc2Woa71PEaV2Jliv94&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=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=pSxP1ALE_cRba_zZ83BiQF5TzSzMBE98EswsBx7j4J4&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=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=pSxP1ALE_cRba_zZ83BiQF5TzSzMBE98EswsBx7j4J4&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:     B800000000000000005068000000000000000068000000000000000050E8000000000000000050E8000000000000000050E80000000000000000
    -    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:     B800000000000000005068000000000000000068000000000000000050E8000000000000000050E8000000000000000050E80000000000000000
    -    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.llvm.org_cgi-2Dbin_mailman_listinfo_llvm-2Dcommits&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=pSxP1ALE_cRba_zZ83BiQF5TzSzMBE98EswsBx7j4J4&s=vJGlQY3PnyqNpL7hx8WaJ9Yhcbo1G_M6qVrTQAs7OGA&e=
    



More information about the llvm-commits mailing list