[lld] r305811 - [PDB] Don't emit debug info associated with dead chunks
Reid Kleckner via llvm-commits
llvm-commits at lists.llvm.org
Tue Jun 20 12:58:24 PDT 2017
Looking. This suggests that yaml2obj doesn't fully initialize certain
records before writing them to disk.
On Tue, Jun 20, 2017 at 11:51 AM, Vitaly Buka <vitalybuka at google.com> wrote:
> 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/InputFile
>> s.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.cp
>> p?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/Inpu
>> ts/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/Inpu
>> ts/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/3fca07c9/attachment-0001.html>
More information about the llvm-commits
mailing list