[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