[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 llvm-svn: 305811
This commit is contained in:
parent
68204b83a7
commit
f5bb738f75
|
@ -177,6 +177,12 @@ public:
|
||||||
// redundant when GC is enabled, as all comdat sections will start out dead.
|
// redundant when GC is enabled, as all comdat sections will start out dead.
|
||||||
void markDiscarded() { Discarded = true; }
|
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.
|
// Allow iteration over the bodies of this chunk's relocated symbols.
|
||||||
llvm::iterator_range<symbol_iterator> symbols() const {
|
llvm::iterator_range<symbol_iterator> symbols() const {
|
||||||
return llvm::make_range(symbol_iterator(File, Relocs.begin()),
|
return llvm::make_range(symbol_iterator(File, Relocs.begin()),
|
||||||
|
|
|
@ -132,17 +132,17 @@ void ObjectFile::initializeChunks() {
|
||||||
if (!Config->Debug && Name.startswith(".debug"))
|
if (!Config->Debug && Name.startswith(".debug"))
|
||||||
continue;
|
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)
|
if (Sec->Characteristics & llvm::COFF::IMAGE_SCN_LNK_REMOVE)
|
||||||
continue;
|
continue;
|
||||||
auto *C = make<SectionChunk>(this, Sec);
|
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;
|
SparseChunks[I] = C;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -164,10 +164,7 @@ static void addObjectsToPDB(BumpPtrAllocator &Alloc, SymbolTable *Symtab,
|
||||||
|
|
||||||
// Now do all line info.
|
// Now do all line info.
|
||||||
for (SectionChunk *DebugChunk : File->getDebugChunks()) {
|
for (SectionChunk *DebugChunk : File->getDebugChunks()) {
|
||||||
// FIXME: Debug chunks do not have a correct isLive() bit.
|
if (!DebugChunk->isLive() || DebugChunk->getSectionName() != ".debug$S")
|
||||||
// FIXME: When linker GC is off we need to ignore debug info whose
|
|
||||||
// associated symbol was discarded.
|
|
||||||
if (DebugChunk->getSectionName() != ".debug$S")
|
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
ArrayRef<uint8_t> RelocatedDebugContents =
|
ArrayRef<uint8_t> RelocatedDebugContents =
|
||||||
|
|
|
@ -445,9 +445,12 @@ Optional<coff_symbol16> Writer::createSymbol(Defined *Def) {
|
||||||
if (isa<DefinedRelative>(Def))
|
if (isa<DefinedRelative>(Def))
|
||||||
return None;
|
return None;
|
||||||
|
|
||||||
if (auto *D = dyn_cast<DefinedRegular>(Def))
|
if (auto *D = dyn_cast<DefinedRegular>(Def)) {
|
||||||
if (!D->getChunk()->isLive())
|
// Don't write dead symbols or symbols in codeview sections to the symbol
|
||||||
|
// table.
|
||||||
|
if (!D->getChunk()->isLive() || D->getChunk()->isCodeView())
|
||||||
return None;
|
return None;
|
||||||
|
}
|
||||||
|
|
||||||
if (auto *Sym = dyn_cast<DefinedImportData>(Def))
|
if (auto *Sym = dyn_cast<DefinedImportData>(Def))
|
||||||
if (!Sym->File->Live)
|
if (!Sym->File->Live)
|
||||||
|
|
|
@ -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: 2020202F44454641554C544C49423A224C4942434D5422202F44454641554C544C49423A224F4C444E414D45532220
|
||||||
|
- 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
|
||||||
|
...
|
|
@ -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: 2020202F44454641554C544C49423A224C4942434D5422202F44454641554C544C49423A224F4C444E414D45532220
|
||||||
|
- 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
|
||||||
|
...
|
|
@ -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 *`:
|
Loading…
Reference in New Issue