| # // 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 |
| ... |