[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 14:30:02 PDT 2017
I added some missing fields to the codeview symbol yaml mapping code in
r305842 and r305857. This made check-lld msan clean for my locally.
On Tue, Jun 20, 2017 at 12:58 PM, Reid Kleckner <rnk at google.com> wrote:
> 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?r
>>> ev=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: 2020202F44454641554C544C49423
>>> A224C4942434D5422202F44454641554C544C49423A224F4C444E414D45532220
>>> + - 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: 2020202F44454641554C544C49423
>>> A224C4942434D5422202F44454641554C544C49423A224F4C444E414D45532220
>>> + - 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/284b5bfd/attachment-0001.html>
More information about the llvm-commits
mailing list