# // Compile with clang-cl -m32 /Z7 /GS- /c t.obj pdb-framedata.cpp # # int func(int x, int y) { # return x + y; # } # # int main(int argc, char **argv) { # return func(argc, argc+1); # } # RUN: yaml2obj %s -o %t.obj # RUN: lld-link %t.obj -debug -entry:main -nodefaultlib -debug -out:%t.exe -pdb:%t.pdb # RUN: llvm-pdbutil dump -fpo %t.pdb | FileCheck %s # CHECK: New FPO Data # CHECK-NEXT: ============================================================ # CHECK-NEXT: RVA | Code | Locals | Params | Stack | Prolog | Saved Regs | Has SEH | Has C++EH | Start | Program # CHECK-NEXT: 00001000 | 31 | 0 | 8 | 0 | 6 | 0 | false | false | false | $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = # CHECK-NEXT: 00001001 | 30 | 0 | 8 | 0 | 5 | 4 | false | false | false | $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = # CHECK-NEXT: 00001003 | 28 | 0 | 8 | 0 | 3 | 4 | false | false | false | $T0 $ebp 4 + = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = # CHECK-NEXT: 00001020 | 53 | 0 | 8 | 0 | 7 | 0 | false | false | false | $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = # CHECK-NEXT: 00001021 | 52 | 0 | 8 | 0 | 6 | 4 | false | false | false | $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = # CHECK-NEXT: 00001023 | 50 | 0 | 8 | 0 | 4 | 4 | false | false | false | $T0 $ebp 4 + = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = # CHECK-NEXT: 00001024 | 49 | 0 | 8 | 0 | 3 | 8 | false | false | false | $T0 $ebp 4 + = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = $esi $T0 8 - ^ = --- !COFF header: Machine: IMAGE_FILE_MACHINE_I386 Characteristics: [ ] sections: - Name: .text Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ] Alignment: 16 SectionData: 5589E583EC088B450C8B4D088B550803550C8945FC89D0894DF883C4085DC3905589E55683EC148B450C8B4D08C745F8000000008B550883C2018B7508893424895424048945F4894DF0E80000000083C4145E5DC3 Relocations: - VirtualAddress: 75 SymbolName: '?func@@YAHHH@Z' Type: IMAGE_REL_I386_REL32 - Name: .data Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ] Alignment: 4 SectionData: '' - Name: .bss Characteristics: [ IMAGE_SCN_CNT_UNINITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ] Alignment: 4 SectionData: '' - Name: .drectve Characteristics: [ IMAGE_SCN_LNK_INFO, IMAGE_SCN_LNK_REMOVE ] Alignment: 1 SectionData: 202F44454641554C544C49423A6C6962636D742E6C6962202F44454641554C544C49423A6F6C646E616D65732E6C6962 - Name: '.debug$S' Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_DISCARDABLE, IMAGE_SCN_MEM_READ ] Alignment: 4 Subsections: - !Symbols Records: - Kind: S_COMPILE3 Compile3Sym: Flags: [ ] Machine: Pentium3 FrontendMajor: 8 FrontendMinor: 0 FrontendBuild: 0 FrontendQFE: 0 BackendMajor: 8000 BackendMinor: 0 BackendBuild: 0 BackendQFE: 0 Version: 'clang version 8.0.0 ' - !FrameData Frames: - CodeSize: 31 FrameFunc: '$T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = ' LocalSize: 0 MaxStackSize: 0 ParamsSize: 8 PrologSize: 6 RvaStart: 0 SavedRegsSize: 0 - CodeSize: 30 FrameFunc: '$T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = ' LocalSize: 0 MaxStackSize: 0 ParamsSize: 8 PrologSize: 5 RvaStart: 1 SavedRegsSize: 4 - CodeSize: 28 FrameFunc: '$T0 $ebp 4 + = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = ' LocalSize: 0 MaxStackSize: 0 ParamsSize: 8 PrologSize: 3 RvaStart: 3 SavedRegsSize: 4 - !Symbols Records: - Kind: S_GPROC32_ID ProcSym: CodeSize: 31 DbgStart: 0 DbgEnd: 0 FunctionType: 4098 Flags: [ ] DisplayName: func - Kind: S_LOCAL LocalSym: Type: 116 Flags: [ IsParameter ] VarName: x - Kind: S_DEFRANGE_REGISTER_REL DefRangeRegisterRelSym: Register: 22 Flags: 0 BasePointerOffset: 8 Range: OffsetStart: 12 ISectStart: 0 Range: 19 Gaps: - Kind: S_LOCAL LocalSym: Type: 116 Flags: [ IsParameter ] VarName: y - Kind: S_DEFRANGE_REGISTER_REL DefRangeRegisterRelSym: Register: 22 Flags: 0 BasePointerOffset: 12 Range: OffsetStart: 12 ISectStart: 0 Range: 19 Gaps: - Kind: S_PROC_ID_END ScopeEndSym: - !Lines CodeSize: 31 Flags: [ ] RelocOffset: 0 RelocSegment: 0 Blocks: - FileName: 'D:\src\llvmbuild\cl\Debug\x64\pdb-framedata.cpp' Lines: - Offset: 0 LineStart: 3 IsStatement: false EndDelta: 0 - Offset: 12 LineStart: 4 IsStatement: false EndDelta: 0 Columns: - !FrameData Frames: - CodeSize: 53 FrameFunc: '$T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = ' LocalSize: 0 MaxStackSize: 0 ParamsSize: 8 PrologSize: 7 RvaStart: 0 SavedRegsSize: 0 - CodeSize: 52 FrameFunc: '$T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = ' LocalSize: 0 MaxStackSize: 0 ParamsSize: 8 PrologSize: 6 RvaStart: 1 SavedRegsSize: 4 - CodeSize: 50 FrameFunc: '$T0 $ebp 4 + = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = ' LocalSize: 0 MaxStackSize: 0 ParamsSize: 8 PrologSize: 4 RvaStart: 3 SavedRegsSize: 4 - CodeSize: 49 FrameFunc: '$T0 $ebp 4 + = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = $esi $T0 8 - ^ = ' LocalSize: 0 MaxStackSize: 0 ParamsSize: 8 PrologSize: 3 RvaStart: 4 SavedRegsSize: 8 - !Symbols Records: - Kind: S_GPROC32_ID ProcSym: CodeSize: 53 DbgStart: 0 DbgEnd: 0 FunctionType: 4102 Flags: [ ] DisplayName: main - Kind: S_LOCAL LocalSym: Type: 116 Flags: [ IsParameter ] VarName: argc - Kind: S_DEFRANGE_REGISTER_REL DefRangeRegisterRelSym: Register: 22 Flags: 0 BasePointerOffset: 8 Range: OffsetStart: 52 ISectStart: 0 Range: 33 Gaps: - Kind: S_LOCAL LocalSym: Type: 4099 Flags: [ IsParameter ] VarName: argv - Kind: S_DEFRANGE_REGISTER_REL DefRangeRegisterRelSym: Register: 22 Flags: 0 BasePointerOffset: 12 Range: OffsetStart: 52 ISectStart: 0 Range: 33 Gaps: - Kind: S_PROC_ID_END ScopeEndSym: - !Lines CodeSize: 53 Flags: [ ] RelocOffset: 0 RelocSegment: 0 Blocks: - FileName: 'D:\src\llvmbuild\cl\Debug\x64\pdb-framedata.cpp' Lines: - Offset: 0 LineStart: 7 IsStatement: false EndDelta: 0 - Offset: 20 LineStart: 8 IsStatement: false EndDelta: 0 Columns: - !FileChecksums Checksums: - FileName: 'D:\src\llvmbuild\cl\Debug\x64\pdb-framedata.cpp' Kind: MD5 Checksum: A611B73E19B77B02646FAAF7CAEB025D - !StringTable Strings: - 'D:\src\llvmbuild\cl\Debug\x64\pdb-framedata.cpp' - '$T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = ' - '$T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = ' - '$T0 $ebp 4 + = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = ' - '$T0 $ebp 4 + = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = $esi $T0 8 - ^ = ' - '' Relocations: - VirtualAddress: 68 SymbolName: '?func@@YAHHH@Z' Type: IMAGE_REL_I386_DIR32NB - VirtualAddress: 208 SymbolName: '?func@@YAHHH@Z' Type: IMAGE_REL_I386_SECREL - VirtualAddress: 212 SymbolName: '?func@@YAHHH@Z' Type: IMAGE_REL_I386_SECTION - VirtualAddress: 244 SymbolName: .text Type: IMAGE_REL_I386_SECREL - VirtualAddress: 248 SymbolName: .text Type: IMAGE_REL_I386_SECTION - VirtualAddress: 276 SymbolName: .text Type: IMAGE_REL_I386_SECREL - VirtualAddress: 280 SymbolName: .text Type: IMAGE_REL_I386_SECTION - VirtualAddress: 296 SymbolName: '?func@@YAHHH@Z' Type: IMAGE_REL_I386_SECREL - VirtualAddress: 300 SymbolName: '?func@@YAHHH@Z' Type: IMAGE_REL_I386_SECTION - VirtualAddress: 344 SymbolName: _main Type: IMAGE_REL_I386_DIR32NB - VirtualAddress: 516 SymbolName: _main Type: IMAGE_REL_I386_SECREL - VirtualAddress: 520 SymbolName: _main Type: IMAGE_REL_I386_SECTION - VirtualAddress: 555 SymbolName: .text Type: IMAGE_REL_I386_SECREL - VirtualAddress: 559 SymbolName: .text Type: IMAGE_REL_I386_SECTION - VirtualAddress: 590 SymbolName: .text Type: IMAGE_REL_I386_SECREL - VirtualAddress: 594 SymbolName: .text Type: IMAGE_REL_I386_SECTION - VirtualAddress: 612 SymbolName: _main Type: IMAGE_REL_I386_SECREL - VirtualAddress: 616 SymbolName: _main Type: IMAGE_REL_I386_SECTION - Name: '.debug$T' Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_DISCARDABLE, IMAGE_SCN_MEM_READ ] Alignment: 4 Types: - Kind: LF_ARGLIST ArgList: ArgIndices: [ 116, 116 ] - Kind: LF_PROCEDURE Procedure: ReturnType: 116 CallConv: NearC Options: [ None ] ParameterCount: 2 ArgumentList: 4096 - Kind: LF_FUNC_ID FuncId: ParentScope: 0 FunctionType: 4097 Name: func - Kind: LF_POINTER Pointer: ReferentType: 1136 Attrs: 32778 - Kind: LF_ARGLIST ArgList: ArgIndices: [ 116, 4099 ] - Kind: LF_PROCEDURE Procedure: ReturnType: 116 CallConv: NearC Options: [ None ] ParameterCount: 2 ArgumentList: 4100 - Kind: LF_FUNC_ID FuncId: ParentScope: 0 FunctionType: 4101 Name: main - Name: .llvm_addrsig Characteristics: [ IMAGE_SCN_LNK_REMOVE ] Alignment: 1 SectionData: 0F symbols: - Name: .text Value: 0 SectionNumber: 1 SimpleType: IMAGE_SYM_TYPE_NULL ComplexType: IMAGE_SYM_DTYPE_NULL StorageClass: IMAGE_SYM_CLASS_STATIC SectionDefinition: Length: 85 NumberOfRelocations: 1 NumberOfLinenumbers: 0 CheckSum: 1989857796 Number: 1 - Name: .data Value: 0 SectionNumber: 2 SimpleType: IMAGE_SYM_TYPE_NULL ComplexType: IMAGE_SYM_DTYPE_NULL StorageClass: IMAGE_SYM_CLASS_STATIC SectionDefinition: Length: 0 NumberOfRelocations: 0 NumberOfLinenumbers: 0 CheckSum: 0 Number: 2 - Name: .bss Value: 0 SectionNumber: 3 SimpleType: IMAGE_SYM_TYPE_NULL ComplexType: IMAGE_SYM_DTYPE_NULL StorageClass: IMAGE_SYM_CLASS_STATIC SectionDefinition: Length: 0 NumberOfRelocations: 0 NumberOfLinenumbers: 0 CheckSum: 0 Number: 3 - Name: .drectve Value: 0 SectionNumber: 4 SimpleType: IMAGE_SYM_TYPE_NULL ComplexType: IMAGE_SYM_DTYPE_NULL StorageClass: IMAGE_SYM_CLASS_STATIC SectionDefinition: Length: 48 NumberOfRelocations: 0 NumberOfLinenumbers: 0 CheckSum: 149686238 Number: 4 - Name: '.debug$S' Value: 0 SectionNumber: 5 SimpleType: IMAGE_SYM_TYPE_NULL ComplexType: IMAGE_SYM_DTYPE_NULL StorageClass: IMAGE_SYM_CLASS_STATIC SectionDefinition: Length: 988 NumberOfRelocations: 18 NumberOfLinenumbers: 0 CheckSum: 2571438511 Number: 5 - Name: '.debug$T' Value: 0 SectionNumber: 6 SimpleType: IMAGE_SYM_TYPE_NULL ComplexType: IMAGE_SYM_DTYPE_NULL StorageClass: IMAGE_SYM_CLASS_STATIC SectionDefinition: Length: 120 NumberOfRelocations: 0 NumberOfLinenumbers: 0 CheckSum: 3148269371 Number: 6 - Name: .llvm_addrsig Value: 0 SectionNumber: 7 SimpleType: IMAGE_SYM_TYPE_NULL ComplexType: IMAGE_SYM_DTYPE_NULL StorageClass: IMAGE_SYM_CLASS_STATIC SectionDefinition: Length: 1 NumberOfRelocations: 0 NumberOfLinenumbers: 0 CheckSum: 2428444049 Number: 7 - Name: '@feat.00' Value: 1 SectionNumber: -1 SimpleType: IMAGE_SYM_TYPE_NULL ComplexType: IMAGE_SYM_DTYPE_NULL StorageClass: IMAGE_SYM_CLASS_STATIC - Name: '?func@@YAHHH@Z' Value: 0 SectionNumber: 1 SimpleType: IMAGE_SYM_TYPE_NULL ComplexType: IMAGE_SYM_DTYPE_FUNCTION StorageClass: IMAGE_SYM_CLASS_EXTERNAL - Name: _main Value: 32 SectionNumber: 1 SimpleType: IMAGE_SYM_TYPE_NULL ComplexType: IMAGE_SYM_DTYPE_FUNCTION StorageClass: IMAGE_SYM_CLASS_EXTERNAL ...