[lld] r305811 - [PDB] Don't emit debug info associated with dead chunks

Vitaly Buka via llvm-commits llvm-commits at lists.llvm.org
Tue Jun 20 11:51:43 PDT 2017


http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fast/builds/5789/steps/check-lld%20msan/logs/stdio

FAIL: lld :: COFF/pdb-comdat.test (73 of 1178)
******************** TEST 'lld :: COFF/pdb-comdat.test' FAILED
********************
Script:
--
rm -rf /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_msan/tools/lld/test/COFF/Output/pdb-comdat.test.tmp
&& mkdir -p /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_msan/tools/lld/test/COFF/Output/pdb-comdat.test.tmp
&& cd /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_msan/tools/lld/test/COFF/Output/pdb-comdat.test.tmp
/mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_msan/./bin/yaml2obj
/mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/tools/lld/test/COFF/Inputs/pdb_comdat_main.yaml
-o pdb_comdat_main.obj
/mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_msan/./bin/yaml2obj
/mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/tools/lld/test/COFF/Inputs/pdb_comdat_bar.yaml
-o pdb_comdat_bar.obj
/mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_msan/./bin/lld-link
pdb_comdat_main.obj pdb_comdat_bar.obj -out:t.exe -debug -pdb:t.pdb
-nodefaultlib -entry:main
/mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_msan/./bin/llvm-pdbutil
raw -l t.pdb | /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_msan/./bin/FileCheck
/mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/tools/lld/test/COFF/pdb-comdat.test
/mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_msan/./bin/lld-link
pdb_comdat_bar.obj pdb_comdat_main.obj -out:t.exe -debug -pdb:t.pdb
-nodefaultlib -entry:main
/mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_msan/./bin/llvm-pdbutil
raw -l t.pdb | /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_msan/./bin/FileCheck
/mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/tools/lld/test/COFF/pdb-comdat.test
--check-prefix=REORDER
--
Exit Code: 77

Command Output (stderr):
--
Uninitialized bytes in __interceptor_write at offset 692 inside
[0x720000025000, 2337)
==19002==WARNING: MemorySanitizer: use-of-uninitialized-value
    #0 0x6c107a in llvm::raw_fd_ostream::write_impl(char const*,
unsigned long) /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/Support/raw_ostream.cpp:564:19
    #1 0x49ed5b in flush
/mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/include/llvm/Support/raw_ostream.h:142:7
    #2 0x49ed5b in main
/mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/tools/yaml2obj/yaml2obj.cpp:98
    #3 0x7fde6ba3182f in __libc_start_main
(/lib/x86_64-linux-gnu/libc.so.6+0x2082f)
    #4 0x433e88 in _start
(/mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_msan/bin/yaml2obj+0x433e88)

SUMMARY: MemorySanitizer: use-of-uninitialized-value
/mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/Support/raw_ostream.cpp:564:19
in llvm::raw_fd_ostream::write_impl(char const*, unsigned long)
Exiting

--

********************
Testing: 0 .. 10.. 20.. 30.. 40.. 50.. 60.. 70.. 80.. 90..
Testing Time: 16.05s
********************
Failing Tests (1):
    lld :: COFF/pdb-comdat.test


On Tue, Jun 20, 2017 at 10:14 AM, Reid Kleckner via llvm-commits <
llvm-commits at lists.llvm.org> wrote:

> Author: rnk
> Date: Tue Jun 20 12:14:09 2017
> New Revision: 305811
>
> URL: http://llvm.org/viewvc/llvm-project?rev=305811&view=rev
> Log:
> [PDB] Don't emit debug info associated with dead chunks
>
> Summary:
> Previously we didn't add debug info chunks to the SparseChunks array, so
> they didn't participate in section GC. Now we do.
>
> Reviewers: ruiu
>
> Subscribers: aprantl, llvm-commits
>
> Differential Revision: https://reviews.llvm.org/D34356
>
> Added:
>     lld/trunk/test/COFF/Inputs/pdb_comdat_bar.yaml
>     lld/trunk/test/COFF/Inputs/pdb_comdat_main.yaml
>     lld/trunk/test/COFF/pdb-comdat.test
> Modified:
>     lld/trunk/COFF/Chunks.h
>     lld/trunk/COFF/InputFiles.cpp
>     lld/trunk/COFF/PDB.cpp
>     lld/trunk/COFF/Writer.cpp
>
> Modified: lld/trunk/COFF/Chunks.h
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/COFF/Chunks.
> h?rev=305811&r1=305810&r2=305811&view=diff
> ============================================================
> ==================
> --- lld/trunk/COFF/Chunks.h (original)
> +++ lld/trunk/COFF/Chunks.h Tue Jun 20 12:14:09 2017
> @@ -177,6 +177,12 @@ public:
>    // redundant when GC is enabled, as all comdat sections will start out
> dead.
>    void markDiscarded() { Discarded = true; }
>
> +  // True if this is a codeview debug info chunk. These will not be laid
> out in
> +  // the image. Instead they will end up in the PDB, if one is requested.
> +  bool isCodeView() const {
> +    return SectionName == ".debug" || SectionName.startswith(".debug$");
> +  }
> +
>    // Allow iteration over the bodies of this chunk's relocated symbols.
>    llvm::iterator_range<symbol_iterator> symbols() const {
>      return llvm::make_range(symbol_iterator(File, Relocs.begin()),
>
> Modified: lld/trunk/COFF/InputFiles.cpp
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/COFF/
> InputFiles.cpp?rev=305811&r1=305810&r2=305811&view=diff
> ============================================================
> ==================
> --- lld/trunk/COFF/InputFiles.cpp (original)
> +++ lld/trunk/COFF/InputFiles.cpp Tue Jun 20 12:14:09 2017
> @@ -132,17 +132,17 @@ void ObjectFile::initializeChunks() {
>      if (!Config->Debug && Name.startswith(".debug"))
>        continue;
>
> -    // CodeView sections are stored to a different vector because they are
> -    // not linked in the regular manner.
> -    if (Name == ".debug" || Name.startswith(".debug$")) {
> -      DebugChunks.push_back(make<SectionChunk>(this, Sec));
> -      continue;
> -    }
> -
>      if (Sec->Characteristics & llvm::COFF::IMAGE_SCN_LNK_REMOVE)
>        continue;
>      auto *C = make<SectionChunk>(this, Sec);
> -    Chunks.push_back(C);
> +
> +    // CodeView sections are stored to a different vector because they
> are not
> +    // linked in the regular manner.
> +    if (C->isCodeView())
> +      DebugChunks.push_back(C);
> +    else
> +      Chunks.push_back(C);
> +
>      SparseChunks[I] = C;
>    }
>  }
>
> Modified: lld/trunk/COFF/PDB.cpp
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/COFF/PDB.
> cpp?rev=305811&r1=305810&r2=305811&view=diff
> ============================================================
> ==================
> --- lld/trunk/COFF/PDB.cpp (original)
> +++ lld/trunk/COFF/PDB.cpp Tue Jun 20 12:14:09 2017
> @@ -164,10 +164,7 @@ static void addObjectsToPDB(BumpPtrAlloc
>
>      // Now do all line info.
>      for (SectionChunk *DebugChunk : File->getDebugChunks()) {
> -      // FIXME: Debug chunks do not have a correct isLive() bit.
> -      // FIXME: When linker GC is off we need to ignore debug info whose
> -      // associated symbol was discarded.
> -      if (DebugChunk->getSectionName() != ".debug$S")
> +      if (!DebugChunk->isLive() || DebugChunk->getSectionName() !=
> ".debug$S")
>          continue;
>
>        ArrayRef<uint8_t> RelocatedDebugContents =
>
> Modified: lld/trunk/COFF/Writer.cpp
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/COFF/Writer.
> cpp?rev=305811&r1=305810&r2=305811&view=diff
> ============================================================
> ==================
> --- lld/trunk/COFF/Writer.cpp (original)
> +++ lld/trunk/COFF/Writer.cpp Tue Jun 20 12:14:09 2017
> @@ -445,9 +445,12 @@ Optional<coff_symbol16> Writer::createSy
>    if (isa<DefinedRelative>(Def))
>      return None;
>
> -  if (auto *D = dyn_cast<DefinedRegular>(Def))
> -    if (!D->getChunk()->isLive())
> +  if (auto *D = dyn_cast<DefinedRegular>(Def)) {
> +    // Don't write dead symbols or symbols in codeview sections to the
> symbol
> +    // table.
> +    if (!D->getChunk()->isLive() || D->getChunk()->isCodeView())
>        return None;
> +  }
>
>    if (auto *Sym = dyn_cast<DefinedImportData>(Def))
>      if (!Sym->File->Live)
>
> Added: lld/trunk/test/COFF/Inputs/pdb_comdat_bar.yaml
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/
> Inputs/pdb_comdat_bar.yaml?rev=305811&view=auto
> ============================================================
> ==================
> --- lld/trunk/test/COFF/Inputs/pdb_comdat_bar.yaml (added)
> +++ lld/trunk/test/COFF/Inputs/pdb_comdat_bar.yaml Tue Jun 20 12:14:09
> 2017
> @@ -0,0 +1,440 @@
> +--- !COFF
> +header:
> +  Machine:         IMAGE_FILE_MACHINE_AMD64
> +  Characteristics: [  ]
> +sections:
> +  - Name:            .drectve
> +    Characteristics: [ IMAGE_SCN_LNK_INFO, IMAGE_SCN_LNK_REMOVE ]
> +    Alignment:       1
> +    SectionData:     2020202F44454641554C544C49423A
> 224C4942434D5422202F44454641554C544C49423A224F4C444E414D45532220
> +  - Name:            '.debug$S'
> +    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA,
> IMAGE_SCN_MEM_DISCARDABLE, IMAGE_SCN_MEM_READ ]
> +    Alignment:       1
> +    Subsections:
> +      - !Symbols
> +        Records:
> +          - Kind:            S_OBJNAME
> +            ObjNameSym:
> +              Signature:       0
> +              ObjectName:      'C:\src\llvm-project\build\
> pdb_comdat_bar.obj'
> +          - Kind:            S_COMPILE3
> +            Compile3Sym:
> +              Flags:           [ SecurityChecks, HotPatch ]
> +              Machine:         X64
> +              FrontendMajor:   19
> +              FrontendMinor:   0
> +              FrontendBuild:   24215
> +              FrontendQFE:     1
> +              BackendMajor:    19
> +              BackendMinor:    0
> +              BackendBuild:    24215
> +              BackendQFE:      1
> +              Version:         'Microsoft (R) Optimizing Compiler'
> +      - !Symbols
> +        Records:
> +          - Kind:            S_GPROC32_ID
> +            ProcSym:
> +              PtrParent:       0
> +              PtrEnd:          0
> +              PtrNext:         0
> +              CodeSize:        14
> +              DbgStart:        4
> +              DbgEnd:          9
> +              FunctionType:    4102
> +              Segment:         0
> +              Flags:           [  ]
> +              DisplayName:     bar
> +          - Kind:            S_FRAMEPROC
> +            FrameProcSym:
> +              TotalFrameBytes: 40
> +              PaddingFrameBytes: 0
> +              OffsetToPadding: 0
> +              BytesOfCalleeSavedRegisters: 0
> +              OffsetOfExceptionHandler: 0
> +              SectionIdOfExceptionHandler: 0
> +              Flags:           [ AsynchronousExceptionHandling,
> OptimizedForSpeed ]
> +          - Kind:            S_PROC_ID_END
> +            ScopeEndSym:
> +      - !Lines
> +        CodeSize:        14
> +        Flags:           [  ]
> +        RelocOffset:     0
> +        RelocSegment:    0
> +        Blocks:
> +          - FileName:        'c:\src\llvm-project\build\pdb_comdat_bar.c'
> +            Lines:
> +              - Offset:          0
> +                LineStart:       3
> +                IsStatement:     true
> +                EndDelta:        0
> +              - Offset:          4
> +                LineStart:       4
> +                IsStatement:     true
> +                EndDelta:        0
> +              - Offset:          9
> +                LineStart:       5
> +                IsStatement:     true
> +                EndDelta:        0
> +            Columns:
> +      - !Symbols
> +        Records:
> +          - Kind:            S_GDATA32
> +            DataSym:
> +              Type:            116
> +              DisplayName:     global
> +      - !FileChecksums
> +        Checksums:
> +          - FileName:        'c:\src\llvm-project\build\pdb_comdat_bar.c'
> +            Kind:            MD5
> +            Checksum:        365279DB4FCBEDD721BBFC3B14A953C2
> +          - FileName:        'c:\src\llvm-project\build\foo.h'
> +            Kind:            MD5
> +            Checksum:        D74D834EFAC3AE2B45E606A8320B1D5C
> +      - !StringTable
> +        Strings:
> +          - 'c:\src\llvm-project\build\pdb_comdat_bar.c'
> +          - 'c:\src\llvm-project\build\foo.h'
> +      - !Symbols
> +        Records:
> +          - Kind:            S_BUILDINFO
> +            BuildInfoSym:
> +              BuildId:         4110
> +    Relocations:
> +      - VirtualAddress:  168
> +        SymbolName:      bar
> +        Type:            IMAGE_REL_AMD64_SECREL
> +      - VirtualAddress:  172
> +        SymbolName:      bar
> +        Type:            IMAGE_REL_AMD64_SECTION
> +      - VirtualAddress:  224
> +        SymbolName:      bar
> +        Type:            IMAGE_REL_AMD64_SECREL
> +      - VirtualAddress:  228
> +        SymbolName:      bar
> +        Type:            IMAGE_REL_AMD64_SECTION
> +      - VirtualAddress:  288
> +        SymbolName:      global
> +        Type:            IMAGE_REL_AMD64_SECREL
> +      - VirtualAddress:  292
> +        SymbolName:      global
> +        Type:            IMAGE_REL_AMD64_SECTION
> +  - Name:            '.debug$T'
> +    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA,
> IMAGE_SCN_MEM_DISCARDABLE, IMAGE_SCN_MEM_READ ]
> +    Alignment:       1
> +    Types:
> +      - Kind:            LF_ARGLIST
> +        ArgList:
> +          ArgIndices:      [ 0 ]
> +      - Kind:            LF_PROCEDURE
> +        Procedure:
> +          ReturnType:      3
> +          CallConv:        NearC
> +          Options:         [ None ]
> +          ParameterCount:  0
> +          ArgumentList:    4096
> +      - Kind:            LF_POINTER
> +        Pointer:
> +          ReferentType:    4097
> +          Attrs:           65548
> +      - Kind:            LF_FUNC_ID
> +        FuncId:
> +          ParentScope:     0
> +          FunctionType:    4097
> +          Name:            foo
> +      - Kind:            LF_ARGLIST
> +        ArgList:
> +          ArgIndices:      [  ]
> +      - Kind:            LF_PROCEDURE
> +        Procedure:
> +          ReturnType:      3
> +          CallConv:        NearC
> +          Options:         [ None ]
> +          ParameterCount:  0
> +          ArgumentList:    4100
> +      - Kind:            LF_FUNC_ID
> +        FuncId:
> +          ParentScope:     0
> +          FunctionType:    4101
> +          Name:            bar
> +      - Kind:            LF_STRING_ID
> +        StringId:
> +          Id:              0
> +          String:          'C:\src\llvm-project\build'
> +      - Kind:            LF_STRING_ID
> +        StringId:
> +          Id:              0
> +          String:          'C:\PROGRA~2\MICROS~1.0\VC\Bin\amd64\cl.exe'
> +      - Kind:            LF_STRING_ID
> +        StringId:
> +          Id:              0
> +          String:          '-c -Z7 -MT -IC:\PROGRA~2\MICROS~1.0\VC\include
> -IC:\PROGRA~2\MICROS~1.0\VC\atlmfc\include -IC:\PROGRA~2\WI3CF2~1\10\include\10.0.14393.0\ucrt
> -IC:\PROGRA~2\WI3CF2~1\10\include\10.0.14393.0\shared
> -IC:\PROGRA~2\WI3CF2~1\10\include\10.0.14393.0\um'
> +      - Kind:            LF_SUBSTR_LIST
> +        StringList:
> +          StringIndices:   [ 4105 ]
> +      - Kind:            LF_STRING_ID
> +        StringId:
> +          Id:              4106
> +          String:          ' -IC:\PROGRA~2\WI3CF2~1\10\include\10.0.14393.0\winrt
> -TC -X'
> +      - Kind:            LF_STRING_ID
> +        StringId:
> +          Id:              0
> +          String:          pdb_comdat_bar.c
> +      - Kind:            LF_STRING_ID
> +        StringId:
> +          Id:              0
> +          String:          'C:\src\llvm-project\build\vc140.pdb'
> +      - Kind:            LF_BUILDINFO
> +        BuildInfo:
> +          ArgIndices:      [ 4103, 4104, 4108, 4109, 4107 ]
> +  - Name:            .bss
> +    Characteristics: [ IMAGE_SCN_CNT_UNINITIALIZED_DATA,
> IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ]
> +    Alignment:       4
> +    SectionData:     ''
> +  - Name:            '.text$mn'
> +    Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE,
> IMAGE_SCN_MEM_READ ]
> +    Alignment:       16
> +    SectionData:     4883EC28E8000000004883C428C3
> +    Relocations:
> +      - VirtualAddress:  5
> +        SymbolName:      foo
> +        Type:            IMAGE_REL_AMD64_REL32
> +  - Name:            '.text$mn'
> +    Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_LNK_COMDAT,
> IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
> +    Alignment:       16
> +    SectionData:     8B0500000000FFC0890500000000C3
> +    Relocations:
> +      - VirtualAddress:  2
> +        SymbolName:      global
> +        Type:            IMAGE_REL_AMD64_REL32
> +      - VirtualAddress:  10
> +        SymbolName:      global
> +        Type:            IMAGE_REL_AMD64_REL32
> +  - Name:            '.debug$S'
> +    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA,
> IMAGE_SCN_LNK_COMDAT, IMAGE_SCN_MEM_DISCARDABLE, IMAGE_SCN_MEM_READ ]
> +    Alignment:       1
> +    Subsections:
> +      - !Symbols
> +        Records:
> +          - Kind:            S_GPROC32_ID
> +            ProcSym:
> +              PtrParent:       0
> +              PtrEnd:          0
> +              PtrNext:         0
> +              CodeSize:        15
> +              DbgStart:        0
> +              DbgEnd:          14
> +              FunctionType:    4099
> +              Segment:         0
> +              Flags:           [  ]
> +              DisplayName:     foo
> +          - Kind:            S_FRAMEPROC
> +            FrameProcSym:
> +              TotalFrameBytes: 0
> +              PaddingFrameBytes: 0
> +              OffsetToPadding: 0
> +              BytesOfCalleeSavedRegisters: 0
> +              OffsetOfExceptionHandler: 0
> +              SectionIdOfExceptionHandler: 0
> +              Flags:           [ MarkedInline,
> AsynchronousExceptionHandling, OptimizedForSpeed ]
> +          - Kind:            S_PROC_ID_END
> +            ScopeEndSym:
> +      - !Lines
> +        CodeSize:        15
> +        Flags:           [  ]
> +        RelocOffset:     0
> +        RelocSegment:    0
> +        Blocks:
> +          - FileName:        'c:\src\llvm-project\build\foo.h'
> +            Lines:
> +              - Offset:          0
> +                LineStart:       2
> +                IsStatement:     true
> +                EndDelta:        0
> +              - Offset:          0
> +                LineStart:       3
> +                IsStatement:     true
> +                EndDelta:        0
> +              - Offset:          14
> +                LineStart:       4
> +                IsStatement:     true
> +                EndDelta:        0
> +            Columns:
> +    Relocations:
> +      - VirtualAddress:  44
> +        SymbolName:      foo
> +        Type:            IMAGE_REL_AMD64_SECREL
> +      - VirtualAddress:  48
> +        SymbolName:      foo
> +        Type:            IMAGE_REL_AMD64_SECTION
> +      - VirtualAddress:  100
> +        SymbolName:      foo
> +        Type:            IMAGE_REL_AMD64_SECREL
> +      - VirtualAddress:  104
> +        SymbolName:      foo
> +        Type:            IMAGE_REL_AMD64_SECTION
> +  - Name:            .xdata
> +    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA,
> IMAGE_SCN_MEM_READ ]
> +    Alignment:       4
> +    SectionData:     '0104010004420000'
> +  - Name:            .pdata
> +    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA,
> IMAGE_SCN_MEM_READ ]
> +    Alignment:       4
> +    SectionData:     '000000000E00000000000000'
> +    Relocations:
> +      - VirtualAddress:  0
> +        SymbolName:      '$LN3'
> +        Type:            IMAGE_REL_AMD64_ADDR32NB
> +      - VirtualAddress:  4
> +        SymbolName:      '$LN3'
> +        Type:            IMAGE_REL_AMD64_ADDR32NB
> +      - VirtualAddress:  8
> +        SymbolName:      '$unwind$bar'
> +        Type:            IMAGE_REL_AMD64_ADDR32NB
> +symbols:
> +  - Name:            .drectve
> +    Value:           0
> +    SectionNumber:   1
> +    SimpleType:      IMAGE_SYM_TYPE_NULL
> +    ComplexType:     IMAGE_SYM_DTYPE_NULL
> +    StorageClass:    IMAGE_SYM_CLASS_STATIC
> +    SectionDefinition:
> +      Length:          47
> +      NumberOfRelocations: 0
> +      NumberOfLinenumbers: 0
> +      CheckSum:        0
> +      Number:          0
> +  - Name:            '.debug$S'
> +    Value:           0
> +    SectionNumber:   2
> +    SimpleType:      IMAGE_SYM_TYPE_NULL
> +    ComplexType:     IMAGE_SYM_DTYPE_NULL
> +    StorageClass:    IMAGE_SYM_CLASS_STATIC
> +    SectionDefinition:
> +      Length:          460
> +      NumberOfRelocations: 6
> +      NumberOfLinenumbers: 0
> +      CheckSum:        0
> +      Number:          0
> +  - Name:            '.debug$T'
> +    Value:           0
> +    SectionNumber:   3
> +    SimpleType:      IMAGE_SYM_TYPE_NULL
> +    ComplexType:     IMAGE_SYM_DTYPE_NULL
> +    StorageClass:    IMAGE_SYM_CLASS_STATIC
> +    SectionDefinition:
> +      Length:          628
> +      NumberOfRelocations: 0
> +      NumberOfLinenumbers: 0
> +      CheckSum:        0
> +      Number:          0
> +  - Name:            .bss
> +    Value:           0
> +    SectionNumber:   4
> +    SimpleType:      IMAGE_SYM_TYPE_NULL
> +    ComplexType:     IMAGE_SYM_DTYPE_NULL
> +    StorageClass:    IMAGE_SYM_CLASS_STATIC
> +    SectionDefinition:
> +      Length:          4
> +      NumberOfRelocations: 0
> +      NumberOfLinenumbers: 0
> +      CheckSum:        0
> +      Number:          0
> +  - Name:            global
> +    Value:           0
> +    SectionNumber:   4
> +    SimpleType:      IMAGE_SYM_TYPE_NULL
> +    ComplexType:     IMAGE_SYM_DTYPE_NULL
> +    StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
> +  - Name:            '.text$mn'
> +    Value:           0
> +    SectionNumber:   5
> +    SimpleType:      IMAGE_SYM_TYPE_NULL
> +    ComplexType:     IMAGE_SYM_DTYPE_NULL
> +    StorageClass:    IMAGE_SYM_CLASS_STATIC
> +    SectionDefinition:
> +      Length:          14
> +      NumberOfRelocations: 1
> +      NumberOfLinenumbers: 0
> +      CheckSum:        1682752513
> +      Number:          0
> +  - Name:            '.text$mn'
> +    Value:           0
> +    SectionNumber:   6
> +    SimpleType:      IMAGE_SYM_TYPE_NULL
> +    ComplexType:     IMAGE_SYM_DTYPE_NULL
> +    StorageClass:    IMAGE_SYM_CLASS_STATIC
> +    SectionDefinition:
> +      Length:          15
> +      NumberOfRelocations: 2
> +      NumberOfLinenumbers: 0
> +      CheckSum:        1746394828
> +      Number:          0
> +      Selection:       IMAGE_COMDAT_SELECT_ANY
> +  - Name:            '.debug$S'
> +    Value:           0
> +    SectionNumber:   7
> +    SimpleType:      IMAGE_SYM_TYPE_NULL
> +    ComplexType:     IMAGE_SYM_DTYPE_NULL
> +    StorageClass:    IMAGE_SYM_CLASS_STATIC
> +    SectionDefinition:
> +      Length:          148
> +      NumberOfRelocations: 4
> +      NumberOfLinenumbers: 0
> +      CheckSum:        0
> +      Number:          6
> +      Selection:       IMAGE_COMDAT_SELECT_ASSOCIATIVE
> +  - Name:            foo
> +    Value:           0
> +    SectionNumber:   6
> +    SimpleType:      IMAGE_SYM_TYPE_NULL
> +    ComplexType:     IMAGE_SYM_DTYPE_FUNCTION
> +    StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
> +  - Name:            bar
> +    Value:           0
> +    SectionNumber:   5
> +    SimpleType:      IMAGE_SYM_TYPE_NULL
> +    ComplexType:     IMAGE_SYM_DTYPE_FUNCTION
> +    StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
> +  - Name:            '$LN3'
> +    Value:           0
> +    SectionNumber:   5
> +    SimpleType:      IMAGE_SYM_TYPE_NULL
> +    ComplexType:     IMAGE_SYM_DTYPE_NULL
> +    StorageClass:    IMAGE_SYM_CLASS_LABEL
> +  - Name:            .xdata
> +    Value:           0
> +    SectionNumber:   8
> +    SimpleType:      IMAGE_SYM_TYPE_NULL
> +    ComplexType:     IMAGE_SYM_DTYPE_NULL
> +    StorageClass:    IMAGE_SYM_CLASS_STATIC
> +    SectionDefinition:
> +      Length:          8
> +      NumberOfRelocations: 0
> +      NumberOfLinenumbers: 0
> +      CheckSum:        264583633
> +      Number:          0
> +  - Name:            '$unwind$bar'
> +    Value:           0
> +    SectionNumber:   8
> +    SimpleType:      IMAGE_SYM_TYPE_NULL
> +    ComplexType:     IMAGE_SYM_DTYPE_NULL
> +    StorageClass:    IMAGE_SYM_CLASS_STATIC
> +  - Name:            .pdata
> +    Value:           0
> +    SectionNumber:   9
> +    SimpleType:      IMAGE_SYM_TYPE_NULL
> +    ComplexType:     IMAGE_SYM_DTYPE_NULL
> +    StorageClass:    IMAGE_SYM_CLASS_STATIC
> +    SectionDefinition:
> +      Length:          12
> +      NumberOfRelocations: 3
> +      NumberOfLinenumbers: 0
> +      CheckSum:        361370162
> +      Number:          0
> +  - Name:            '$pdata$bar'
> +    Value:           0
> +    SectionNumber:   9
> +    SimpleType:      IMAGE_SYM_TYPE_NULL
> +    ComplexType:     IMAGE_SYM_DTYPE_NULL
> +    StorageClass:    IMAGE_SYM_CLASS_STATIC
> +...
>
> Added: lld/trunk/test/COFF/Inputs/pdb_comdat_main.yaml
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/
> Inputs/pdb_comdat_main.yaml?rev=305811&view=auto
> ============================================================
> ==================
> --- lld/trunk/test/COFF/Inputs/pdb_comdat_main.yaml (added)
> +++ lld/trunk/test/COFF/Inputs/pdb_comdat_main.yaml Tue Jun 20 12:14:09
> 2017
> @@ -0,0 +1,446 @@
> +--- !COFF
> +header:
> +  Machine:         IMAGE_FILE_MACHINE_AMD64
> +  Characteristics: [  ]
> +sections:
> +  - Name:            .drectve
> +    Characteristics: [ IMAGE_SCN_LNK_INFO, IMAGE_SCN_LNK_REMOVE ]
> +    Alignment:       1
> +    SectionData:     2020202F44454641554C544C49423A
> 224C4942434D5422202F44454641554C544C49423A224F4C444E414D45532220
> +  - Name:            '.debug$S'
> +    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA,
> IMAGE_SCN_MEM_DISCARDABLE, IMAGE_SCN_MEM_READ ]
> +    Alignment:       1
> +    Subsections:
> +      - !Symbols
> +        Records:
> +          - Kind:            S_OBJNAME
> +            ObjNameSym:
> +              Signature:       0
> +              ObjectName:      'C:\src\llvm-project\build\
> pdb_comdat_main.obj'
> +          - Kind:            S_COMPILE3
> +            Compile3Sym:
> +              Flags:           [ SecurityChecks, HotPatch ]
> +              Machine:         X64
> +              FrontendMajor:   19
> +              FrontendMinor:   0
> +              FrontendBuild:   24215
> +              FrontendQFE:     1
> +              BackendMajor:    19
> +              BackendMinor:    0
> +              BackendBuild:    24215
> +              BackendQFE:      1
> +              Version:         'Microsoft (R) Optimizing Compiler'
> +      - !Symbols
> +        Records:
> +          - Kind:            S_GPROC32_ID
> +            ProcSym:
> +              PtrParent:       0
> +              PtrEnd:          0
> +              PtrNext:         0
> +              CodeSize:        24
> +              DbgStart:        4
> +              DbgEnd:          19
> +              FunctionType:    4102
> +              Segment:         0
> +              Flags:           [  ]
> +              DisplayName:     main
> +          - Kind:            S_FRAMEPROC
> +            FrameProcSym:
> +              TotalFrameBytes: 40
> +              PaddingFrameBytes: 0
> +              OffsetToPadding: 0
> +              BytesOfCalleeSavedRegisters: 0
> +              OffsetOfExceptionHandler: 0
> +              SectionIdOfExceptionHandler: 0
> +              Flags:           [ AsynchronousExceptionHandling,
> OptimizedForSpeed ]
> +          - Kind:            S_PROC_ID_END
> +            ScopeEndSym:
> +      - !Lines
> +        CodeSize:        24
> +        Flags:           [  ]
> +        RelocOffset:     0
> +        RelocSegment:    0
> +        Blocks:
> +          - FileName:        'c:\src\llvm-project\build\
> pdb_comdat_main.c'
> +            Lines:
> +              - Offset:          0
> +                LineStart:       2
> +                IsStatement:     true
> +                EndDelta:        0
> +              - Offset:          4
> +                LineStart:       3
> +                IsStatement:     true
> +                EndDelta:        0
> +              - Offset:          9
> +                LineStart:       4
> +                IsStatement:     true
> +                EndDelta:        0
> +              - Offset:          14
> +                LineStart:       5
> +                IsStatement:     true
> +                EndDelta:        0
> +              - Offset:          19
> +                LineStart:       6
> +                IsStatement:     true
> +                EndDelta:        0
> +            Columns:
> +      - !Symbols
> +        Records:
> +          - Kind:            S_GDATA32
> +            DataSym:
> +              Type:            116
> +              DisplayName:     global
> +      - !FileChecksums
> +        Checksums:
> +          - FileName:        'c:\src\llvm-project\build\
> pdb_comdat_main.c'
> +            Kind:            MD5
> +            Checksum:        F969E51BBE373436D81492EB61387F36
> +          - FileName:        'c:\src\llvm-project\build\foo.h'
> +            Kind:            MD5
> +            Checksum:        D74D834EFAC3AE2B45E606A8320B1D5C
> +      - !StringTable
> +        Strings:
> +          - 'c:\src\llvm-project\build\pdb_comdat_main.c'
> +          - 'c:\src\llvm-project\build\foo.h'
> +      - !Symbols
> +        Records:
> +          - Kind:            S_BUILDINFO
> +            BuildInfoSym:
> +              BuildId:         4111
> +    Relocations:
> +      - VirtualAddress:  168
> +        SymbolName:      main
> +        Type:            IMAGE_REL_AMD64_SECREL
> +      - VirtualAddress:  172
> +        SymbolName:      main
> +        Type:            IMAGE_REL_AMD64_SECTION
> +      - VirtualAddress:  224
> +        SymbolName:      main
> +        Type:            IMAGE_REL_AMD64_SECREL
> +      - VirtualAddress:  228
> +        SymbolName:      main
> +        Type:            IMAGE_REL_AMD64_SECTION
> +      - VirtualAddress:  304
> +        SymbolName:      global
> +        Type:            IMAGE_REL_AMD64_SECREL
> +      - VirtualAddress:  308
> +        SymbolName:      global
> +        Type:            IMAGE_REL_AMD64_SECTION
> +  - Name:            '.debug$T'
> +    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA,
> IMAGE_SCN_MEM_DISCARDABLE, IMAGE_SCN_MEM_READ ]
> +    Alignment:       1
> +    Types:
> +      - Kind:            LF_ARGLIST
> +        ArgList:
> +          ArgIndices:      [ 0 ]
> +      - Kind:            LF_PROCEDURE
> +        Procedure:
> +          ReturnType:      3
> +          CallConv:        NearC
> +          Options:         [ None ]
> +          ParameterCount:  0
> +          ArgumentList:    4096
> +      - Kind:            LF_POINTER
> +        Pointer:
> +          ReferentType:    4097
> +          Attrs:           65548
> +      - Kind:            LF_FUNC_ID
> +        FuncId:
> +          ParentScope:     0
> +          FunctionType:    4097
> +          Name:            foo
> +      - Kind:            LF_ARGLIST
> +        ArgList:
> +          ArgIndices:      [  ]
> +      - Kind:            LF_PROCEDURE
> +        Procedure:
> +          ReturnType:      116
> +          CallConv:        NearC
> +          Options:         [ None ]
> +          ParameterCount:  0
> +          ArgumentList:    4100
> +      - Kind:            LF_FUNC_ID
> +        FuncId:
> +          ParentScope:     0
> +          FunctionType:    4101
> +          Name:            main
> +      - Kind:            LF_FUNC_ID
> +        FuncId:
> +          ParentScope:     0
> +          FunctionType:    4097
> +          Name:            bar
> +      - Kind:            LF_STRING_ID
> +        StringId:
> +          Id:              0
> +          String:          'C:\src\llvm-project\build'
> +      - Kind:            LF_STRING_ID
> +        StringId:
> +          Id:              0
> +          String:          'C:\PROGRA~2\MICROS~1.0\VC\Bin\amd64\cl.exe'
> +      - Kind:            LF_STRING_ID
> +        StringId:
> +          Id:              0
> +          String:          '-c -Z7 -MT -IC:\PROGRA~2\MICROS~1.0\VC\include
> -IC:\PROGRA~2\MICROS~1.0\VC\atlmfc\include -IC:\PROGRA~2\WI3CF2~1\10\include\10.0.14393.0\ucrt
> -IC:\PROGRA~2\WI3CF2~1\10\include\10.0.14393.0\shared
> -IC:\PROGRA~2\WI3CF2~1\10\include\10.0.14393.0\um'
> +      - Kind:            LF_SUBSTR_LIST
> +        StringList:
> +          StringIndices:   [ 4106 ]
> +      - Kind:            LF_STRING_ID
> +        StringId:
> +          Id:              4107
> +          String:          ' -IC:\PROGRA~2\WI3CF2~1\10\include\10.0.14393.0\winrt
> -TC -X'
> +      - Kind:            LF_STRING_ID
> +        StringId:
> +          Id:              0
> +          String:          pdb_comdat_main.c
> +      - Kind:            LF_STRING_ID
> +        StringId:
> +          Id:              0
> +          String:          'C:\src\llvm-project\build\vc140.pdb'
> +      - Kind:            LF_BUILDINFO
> +        BuildInfo:
> +          ArgIndices:      [ 4104, 4105, 4109, 4110, 4108 ]
> +  - Name:            '.text$mn'
> +    Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE,
> IMAGE_SCN_MEM_READ ]
> +    Alignment:       16
> +    SectionData:     4883EC28E800000000E800000000B82A0000004883C428C3
> +    Relocations:
> +      - VirtualAddress:  5
> +        SymbolName:      foo
> +        Type:            IMAGE_REL_AMD64_REL32
> +      - VirtualAddress:  10
> +        SymbolName:      bar
> +        Type:            IMAGE_REL_AMD64_REL32
> +  - Name:            '.text$mn'
> +    Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_LNK_COMDAT,
> IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
> +    Alignment:       16
> +    SectionData:     8B0500000000FFC0890500000000C3
> +    Relocations:
> +      - VirtualAddress:  2
> +        SymbolName:      global
> +        Type:            IMAGE_REL_AMD64_REL32
> +      - VirtualAddress:  10
> +        SymbolName:      global
> +        Type:            IMAGE_REL_AMD64_REL32
> +  - Name:            '.debug$S'
> +    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA,
> IMAGE_SCN_LNK_COMDAT, IMAGE_SCN_MEM_DISCARDABLE, IMAGE_SCN_MEM_READ ]
> +    Alignment:       1
> +    Subsections:
> +      - !Symbols
> +        Records:
> +          - Kind:            S_GPROC32_ID
> +            ProcSym:
> +              PtrParent:       0
> +              PtrEnd:          0
> +              PtrNext:         0
> +              CodeSize:        15
> +              DbgStart:        0
> +              DbgEnd:          14
> +              FunctionType:    4099
> +              Segment:         0
> +              Flags:           [  ]
> +              DisplayName:     foo
> +          - Kind:            S_FRAMEPROC
> +            FrameProcSym:
> +              TotalFrameBytes: 0
> +              PaddingFrameBytes: 0
> +              OffsetToPadding: 0
> +              BytesOfCalleeSavedRegisters: 0
> +              OffsetOfExceptionHandler: 0
> +              SectionIdOfExceptionHandler: 0
> +              Flags:           [ MarkedInline,
> AsynchronousExceptionHandling, OptimizedForSpeed ]
> +          - Kind:            S_PROC_ID_END
> +            ScopeEndSym:
> +      - !Lines
> +        CodeSize:        15
> +        Flags:           [  ]
> +        RelocOffset:     0
> +        RelocSegment:    0
> +        Blocks:
> +          - FileName:        'c:\src\llvm-project\build\foo.h'
> +            Lines:
> +              - Offset:          0
> +                LineStart:       2
> +                IsStatement:     true
> +                EndDelta:        0
> +              - Offset:          0
> +                LineStart:       3
> +                IsStatement:     true
> +                EndDelta:        0
> +              - Offset:          14
> +                LineStart:       4
> +                IsStatement:     true
> +                EndDelta:        0
> +            Columns:
> +    Relocations:
> +      - VirtualAddress:  44
> +        SymbolName:      foo
> +        Type:            IMAGE_REL_AMD64_SECREL
> +      - VirtualAddress:  48
> +        SymbolName:      foo
> +        Type:            IMAGE_REL_AMD64_SECTION
> +      - VirtualAddress:  100
> +        SymbolName:      foo
> +        Type:            IMAGE_REL_AMD64_SECREL
> +      - VirtualAddress:  104
> +        SymbolName:      foo
> +        Type:            IMAGE_REL_AMD64_SECTION
> +  - Name:            .xdata
> +    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA,
> IMAGE_SCN_MEM_READ ]
> +    Alignment:       4
> +    SectionData:     '0104010004420000'
> +  - Name:            .pdata
> +    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA,
> IMAGE_SCN_MEM_READ ]
> +    Alignment:       4
> +    SectionData:     '000000001800000000000000'
> +    Relocations:
> +      - VirtualAddress:  0
> +        SymbolName:      '$LN3'
> +        Type:            IMAGE_REL_AMD64_ADDR32NB
> +      - VirtualAddress:  4
> +        SymbolName:      '$LN3'
> +        Type:            IMAGE_REL_AMD64_ADDR32NB
> +      - VirtualAddress:  8
> +        SymbolName:      '$unwind$main'
> +        Type:            IMAGE_REL_AMD64_ADDR32NB
> +symbols:
> +  - Name:            .drectve
> +    Value:           0
> +    SectionNumber:   1
> +    SimpleType:      IMAGE_SYM_TYPE_NULL
> +    ComplexType:     IMAGE_SYM_DTYPE_NULL
> +    StorageClass:    IMAGE_SYM_CLASS_STATIC
> +    SectionDefinition:
> +      Length:          47
> +      NumberOfRelocations: 0
> +      NumberOfLinenumbers: 0
> +      CheckSum:        0
> +      Number:          0
> +  - Name:            '.debug$S'
> +    Value:           0
> +    SectionNumber:   2
> +    SimpleType:      IMAGE_SYM_TYPE_NULL
> +    ComplexType:     IMAGE_SYM_DTYPE_NULL
> +    StorageClass:    IMAGE_SYM_CLASS_STATIC
> +    SectionDefinition:
> +      Length:          480
> +      NumberOfRelocations: 6
> +      NumberOfLinenumbers: 0
> +      CheckSum:        0
> +      Number:          0
> +  - Name:            '.debug$T'
> +    Value:           0
> +    SectionNumber:   3
> +    SimpleType:      IMAGE_SYM_TYPE_NULL
> +    ComplexType:     IMAGE_SYM_DTYPE_NULL
> +    StorageClass:    IMAGE_SYM_CLASS_STATIC
> +    SectionDefinition:
> +      Length:          648
> +      NumberOfRelocations: 0
> +      NumberOfLinenumbers: 0
> +      CheckSum:        0
> +      Number:          0
> +  - Name:            '.text$mn'
> +    Value:           0
> +    SectionNumber:   4
> +    SimpleType:      IMAGE_SYM_TYPE_NULL
> +    ComplexType:     IMAGE_SYM_DTYPE_NULL
> +    StorageClass:    IMAGE_SYM_CLASS_STATIC
> +    SectionDefinition:
> +      Length:          24
> +      NumberOfRelocations: 2
> +      NumberOfLinenumbers: 0
> +      CheckSum:        492663294
> +      Number:          0
> +  - Name:            '.text$mn'
> +    Value:           0
> +    SectionNumber:   5
> +    SimpleType:      IMAGE_SYM_TYPE_NULL
> +    ComplexType:     IMAGE_SYM_DTYPE_NULL
> +    StorageClass:    IMAGE_SYM_CLASS_STATIC
> +    SectionDefinition:
> +      Length:          15
> +      NumberOfRelocations: 2
> +      NumberOfLinenumbers: 0
> +      CheckSum:        1746394828
> +      Number:          0
> +      Selection:       IMAGE_COMDAT_SELECT_ANY
> +  - Name:            '.debug$S'
> +    Value:           0
> +    SectionNumber:   6
> +    SimpleType:      IMAGE_SYM_TYPE_NULL
> +    ComplexType:     IMAGE_SYM_DTYPE_NULL
> +    StorageClass:    IMAGE_SYM_CLASS_STATIC
> +    SectionDefinition:
> +      Length:          148
> +      NumberOfRelocations: 4
> +      NumberOfLinenumbers: 0
> +      CheckSum:        0
> +      Number:          5
> +      Selection:       IMAGE_COMDAT_SELECT_ASSOCIATIVE
> +  - Name:            foo
> +    Value:           0
> +    SectionNumber:   5
> +    SimpleType:      IMAGE_SYM_TYPE_NULL
> +    ComplexType:     IMAGE_SYM_DTYPE_FUNCTION
> +    StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
> +  - Name:            bar
> +    Value:           0
> +    SectionNumber:   0
> +    SimpleType:      IMAGE_SYM_TYPE_NULL
> +    ComplexType:     IMAGE_SYM_DTYPE_FUNCTION
> +    StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
> +  - Name:            main
> +    Value:           0
> +    SectionNumber:   4
> +    SimpleType:      IMAGE_SYM_TYPE_NULL
> +    ComplexType:     IMAGE_SYM_DTYPE_FUNCTION
> +    StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
> +  - Name:            '$LN3'
> +    Value:           0
> +    SectionNumber:   4
> +    SimpleType:      IMAGE_SYM_TYPE_NULL
> +    ComplexType:     IMAGE_SYM_DTYPE_NULL
> +    StorageClass:    IMAGE_SYM_CLASS_LABEL
> +  - Name:            .xdata
> +    Value:           0
> +    SectionNumber:   7
> +    SimpleType:      IMAGE_SYM_TYPE_NULL
> +    ComplexType:     IMAGE_SYM_DTYPE_NULL
> +    StorageClass:    IMAGE_SYM_CLASS_STATIC
> +    SectionDefinition:
> +      Length:          8
> +      NumberOfRelocations: 0
> +      NumberOfLinenumbers: 0
> +      CheckSum:        264583633
> +      Number:          0
> +  - Name:            '$unwind$main'
> +    Value:           0
> +    SectionNumber:   7
> +    SimpleType:      IMAGE_SYM_TYPE_NULL
> +    ComplexType:     IMAGE_SYM_DTYPE_NULL
> +    StorageClass:    IMAGE_SYM_CLASS_STATIC
> +  - Name:            .pdata
> +    Value:           0
> +    SectionNumber:   8
> +    SimpleType:      IMAGE_SYM_TYPE_NULL
> +    ComplexType:     IMAGE_SYM_DTYPE_NULL
> +    StorageClass:    IMAGE_SYM_CLASS_STATIC
> +    SectionDefinition:
> +      Length:          12
> +      NumberOfRelocations: 3
> +      NumberOfLinenumbers: 0
> +      CheckSum:        2942184094
> +      Number:          0
> +  - Name:            '$pdata$main'
> +    Value:           0
> +    SectionNumber:   8
> +    SimpleType:      IMAGE_SYM_TYPE_NULL
> +    ComplexType:     IMAGE_SYM_DTYPE_NULL
> +    StorageClass:    IMAGE_SYM_CLASS_STATIC
> +  - Name:            global
> +    Value:           0
> +    SectionNumber:   0
> +    SimpleType:      IMAGE_SYM_TYPE_NULL
> +    ComplexType:     IMAGE_SYM_DTYPE_NULL
> +    StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
> +...
>
> Added: lld/trunk/test/COFF/pdb-comdat.test
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/
> pdb-comdat.test?rev=305811&view=auto
> ============================================================
> ==================
> --- lld/trunk/test/COFF/pdb-comdat.test (added)
> +++ lld/trunk/test/COFF/pdb-comdat.test Tue Jun 20 12:14:09 2017
> @@ -0,0 +1,52 @@
> +Consider this example program with an inline function "foo":
> +
> +==> foo.h <==
> +extern int global;
> +__inline void foo() {
> +  ++global;
> +}
> +void bar();
> +==> pdb_comdat_main.c <==
> +#include "foo.h"
> +int main(void) {
> +  foo();
> +  bar();
> +  return 42;
> +}
> +==> pdb_comdat_bar.c <==
> +#include "foo.h"
> +void bar(void) {
> +  foo();
> +}
> +
> +Both object files will contain debug info for foo, but only the debug
> info from
> +pdb_comdat_main.obj should be included in the PDB.
> +
> +RUN: rm -rf %t && mkdir -p %t && cd %t
> +RUN: yaml2obj %S/Inputs/pdb_comdat_main.yaml -o pdb_comdat_main.obj
> +RUN: yaml2obj %S/Inputs/pdb_comdat_bar.yaml -o pdb_comdat_bar.obj
> +RUN: lld-link pdb_comdat_main.obj pdb_comdat_bar.obj -out:t.exe -debug
> -pdb:t.pdb -nodefaultlib -entry:main
> +RUN: llvm-pdbutil raw -l t.pdb | FileCheck %s
> +
> +CHECK:                            Lines
> +CHECK: ============================================================
> +CHECK-LABEL:   Mod 0000 | `{{.*}}pdb_comdat_main.obj`:
> +CHECK:       c:\src\llvm-project\build\pdb_comdat_main.c (MD5:
> F969E51BBE373436D81492EB61387F36)
> +CHECK:       c:\src\llvm-project\build\foo.h (MD5:
> D74D834EFAC3AE2B45E606A8320B1D5C)
> +CHECK-LABEL:   Mod 0001 | `{{.*}}pdb_comdat_bar.obj`:
> +CHECK:       c:\src\llvm-project\build\pdb_comdat_bar.c (MD5:
> 365279DB4FCBEDD721BBFC3B14A953C2)
> +CHECK-NOT:       c:\src\llvm-project\build\foo.h
> +CHECK-LABEL:   Mod 0002 | `* Linker *`:
> +
> +Reorder the object files and verify that the other table is selected.
> +
> +RUN: lld-link pdb_comdat_bar.obj pdb_comdat_main.obj -out:t.exe -debug
> -pdb:t.pdb -nodefaultlib -entry:main
> +RUN: llvm-pdbutil raw -l t.pdb | FileCheck %s --check-prefix=REORDER
> +
> +REORDER-LABEL:   Mod 0000 | `{{.*}}pdb_comdat_bar.obj`:
> +REORDER:       c:\src\llvm-project\build\pdb_comdat_bar.c (MD5:
> 365279DB4FCBEDD721BBFC3B14A953C2)
> +REORDER:       c:\src\llvm-project\build\foo.h (MD5:
> D74D834EFAC3AE2B45E606A8320B1D5C)
> +REORDER-LABEL:   Mod 0001 | `{{.*}}pdb_comdat_main.obj`:
> +REORDER:       c:\src\llvm-project\build\pdb_comdat_main.c
> +REORDER-NOT:       c:\src\llvm-project\build\foo.h
> +REORDER-LABEL:   Mod 0002 | `* Linker *`:
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170620/3250e183/attachment-0001.html>


More information about the llvm-commits mailing list