351 lines · yaml
1# RUN: yaml2obj %s -o %t.obj2# RUN: lld-link %t.obj -nodefaultlib -entry:main -debug -out:%t.exe -pdb:%t.pdb3# RUN: llvm-pdbutil dump -symbols -globals %t.pdb | FileCheck %s4 5# To regenerate the object file:6# $ cat symbol-types.c7# struct Foo { int x; };8# typedef struct Foo UDT_Foo;9# UDT_Foo global_foo = {42};10# int main() { return global_foo.x; }11# $ cl -c -Z7 symbol-types.c12 13# Note that the type of 'global' goes from 0x1005 in the object file to 0x100414# in the PDB because the LF_FUNC_ID is moved to the id stream.15 16# CHECK-LABEL: Global Symbols17# CHECK-NEXT: ============================================================18# CHECK-NEXT: Records19# CHECK-NEXT: 48 | S_PROCREF [size = 20] `main`20# CHECK-NEXT: module = 1, sum name = 0, offset = 11621# CHECK-NEXT: 96 | S_UDT [size = 16] `UDT_Foo`22# CHECK-NEXT: original type = 0x100423# CHECK-NEXT: 112 | S_UDT [size = 12] `Foo`24# CHECK-NEXT: original type = 0x100425# CHECK-NEXT: 68 | S_GDATA32 [size = 28] `global_foo`26# CHECK-NEXT: type = 0x1004 (Foo), addr = 0003:000027 28# CHECK: Symbols29# CHECK: ============================================================30# CHECK-LABEL: Mod 0000 | `{{.*}}pdb-symbol-types.yaml.tmp.obj`:31# CHECK: 4 | S_OBJNAME [size = 52] sig=0, `C:\src\llvm-project\build\symbol-types.obj`32# CHECK: 56 | S_COMPILE3 [size = 60]33# CHECK: machine = intel x86-x64, Ver = Microsoft (R) Optimizing Compiler, language = c34# CHECK: frontend = 19.0.24215.1, backend = 19.0.24215.135# CHECK: flags = security checks | hot patchable36# CHECK: 116 | S_GPROC32 [size = 44] `main`37# CHECK: parent = 0, end = 192, addr = 0001:0000, code size = 738# CHECK: debug start = 0, debug end = 6, flags = none39# CHECK: 160 | S_FRAMEPROC [size = 32]40# CHECK: size = 0, padding size = 0, offset to padding = 041# CHECK: bytes of callee saved registers = 0, exception handler addr = 0000:000042# CHECK: flags = has async eh | opt speed43# CHECK: 192 | S_END [size = 4]44# CHECK: 196 | S_BUILDINFO [size = 8] BuildId = `0x100A`45# CHECK-LABEL: Mod 0001 | `* Linker *`:46 47--- !COFF48header:49 Machine: IMAGE_FILE_MACHINE_AMD6450 Characteristics: [ ]51sections:52 - Name: .drectve53 Characteristics: [ IMAGE_SCN_LNK_INFO, IMAGE_SCN_LNK_REMOVE ]54 Alignment: 155 SectionData: 2020202F44454641554C544C49423A224C4942434D5422202F44454641554C544C49423A224F4C444E414D4553222056 - Name: '.debug$S'57 Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_DISCARDABLE, IMAGE_SCN_MEM_READ ]58 Alignment: 159 Subsections:60 - !Symbols61 Records:62 - Kind: S_OBJNAME63 ObjNameSym:64 Signature: 065 ObjectName: 'C:\src\llvm-project\build\symbol-types.obj'66 - Kind: S_COMPILE367 Compile3Sym:68 Flags: [ SecurityChecks, HotPatch ]69 Machine: X6470 FrontendMajor: 1971 FrontendMinor: 072 FrontendBuild: 2421573 FrontendQFE: 174 BackendMajor: 1975 BackendMinor: 076 BackendBuild: 2421577 BackendQFE: 178 Version: 'Microsoft (R) Optimizing Compiler'79 - !Symbols80 Records:81 - Kind: S_GPROC32_ID82 ProcSym:83 CodeSize: 784 DbgStart: 085 DbgEnd: 686 FunctionType: 409887 Flags: [ ]88 DisplayName: main89 - Kind: S_FRAMEPROC90 FrameProcSym:91 TotalFrameBytes: 092 PaddingFrameBytes: 093 OffsetToPadding: 094 BytesOfCalleeSavedRegisters: 095 OffsetOfExceptionHandler: 096 SectionIdOfExceptionHandler: 097 Flags: [ AsynchronousExceptionHandling, OptimizedForSpeed ]98 - Kind: S_PROC_ID_END99 ScopeEndSym:100 - !Lines101 CodeSize: 7102 Flags: [ ]103 RelocOffset: 0104 RelocSegment: 0105 Blocks:106 - FileName: 'c:\src\llvm-project\build\symbol-types.c'107 Lines:108 - Offset: 0109 LineStart: 4110 IsStatement: true111 EndDelta: 0112 - Offset: 0113 LineStart: 5114 IsStatement: true115 EndDelta: 0116 - Offset: 6117 LineStart: 6118 IsStatement: true119 EndDelta: 0120 Columns:121 - !Symbols122 Records:123 - Kind: S_GDATA32124 DataSym:125 Type: 4101126 DisplayName: global_foo127 - Kind: S_UDT128 UDTSym:129 Type: 4101130 UDTName: UDT_Foo131 - Kind: S_UDT132 UDTSym:133 Type: 4101134 UDTName: Foo135 - !FileChecksums136 Checksums:137 - FileName: 'c:\src\llvm-project\build\symbol-types.c'138 Kind: MD5139 Checksum: F833E1A4909FF6FEC5689A664F3BE725140 - !StringTable141 Strings:142 - 'c:\src\llvm-project\build\symbol-types.c'143 - !Symbols144 Records:145 - Kind: S_BUILDINFO146 BuildInfoSym:147 BuildId: 4111148 Relocations:149 - VirtualAddress: 164150 SymbolName: main151 Type: IMAGE_REL_AMD64_SECREL152 - VirtualAddress: 168153 SymbolName: main154 Type: IMAGE_REL_AMD64_SECTION155 - VirtualAddress: 220156 SymbolName: main157 Type: IMAGE_REL_AMD64_SECREL158 - VirtualAddress: 224159 SymbolName: main160 Type: IMAGE_REL_AMD64_SECTION161 - VirtualAddress: 284162 SymbolName: global_foo163 Type: IMAGE_REL_AMD64_SECREL164 - VirtualAddress: 288165 SymbolName: global_foo166 Type: IMAGE_REL_AMD64_SECTION167 - Name: '.debug$T'168 Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_DISCARDABLE, IMAGE_SCN_MEM_READ ]169 Alignment: 1170 Types:171 - Kind: LF_ARGLIST172 ArgList:173 ArgIndices: [ 0 ]174 - Kind: LF_PROCEDURE175 Procedure:176 ReturnType: 116177 CallConv: NearC178 Options: [ None ]179 ParameterCount: 0180 ArgumentList: 4096181 - Kind: LF_FUNC_ID182 FuncId:183 ParentScope: 0184 FunctionType: 4097185 Name: main186 - Kind: LF_STRUCTURE187 Class:188 MemberCount: 0189 Options: [ None, ForwardReference, HasUniqueName ]190 FieldList: 0191 Name: Foo192 UniqueName: '.?AUFoo@@'193 DerivationList: 0194 VTableShape: 0195 Size: 0196 - Kind: LF_FIELDLIST197 FieldList:198 - Kind: LF_MEMBER199 DataMember:200 Attrs: 3201 Type: 116202 FieldOffset: 0203 Name: x204 - Kind: LF_STRUCTURE205 Class:206 MemberCount: 1207 Options: [ None, HasUniqueName ]208 FieldList: 4100209 Name: Foo210 UniqueName: '.?AUFoo@@'211 DerivationList: 0212 VTableShape: 0213 Size: 4214 - Kind: LF_STRING_ID215 StringId:216 Id: 0217 String: 'c:\src\llvm-project\build\symbol-types.c'218 - Kind: LF_UDT_SRC_LINE219 UdtSourceLine:220 UDT: 4101221 SourceFile: 4102222 LineNumber: 1223 - Kind: LF_STRING_ID224 StringId:225 Id: 0226 String: 'C:\src\llvm-project\build'227 - Kind: LF_STRING_ID228 StringId:229 Id: 0230 String: 'C:\PROGRA~2\MICROS~1.0\VC\Bin\amd64\cl.exe'231 - Kind: LF_STRING_ID232 StringId:233 Id: 0234 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'235 - Kind: LF_SUBSTR_LIST236 StringList:237 StringIndices: [ 4106 ]238 - Kind: LF_STRING_ID239 StringId:240 Id: 4107241 String: ' -IC:\PROGRA~2\WI3CF2~1\10\include\10.0.14393.0\winrt -TC -X'242 - Kind: LF_STRING_ID243 StringId:244 Id: 0245 String: symbol-types.c246 - Kind: LF_STRING_ID247 StringId:248 Id: 0249 String: 'C:\src\llvm-project\build\vc140.pdb'250 - Kind: LF_BUILDINFO251 BuildInfo:252 ArgIndices: [ 4104, 4105, 4109, 4110, 4108 ]253 - Name: .data254 Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ]255 Alignment: 4256 SectionData: 2A000000257 - Name: '.text$mn'258 Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]259 Alignment: 16260 SectionData: 8B0500000000C3261 Relocations:262 - VirtualAddress: 2263 SymbolName: global_foo264 Type: IMAGE_REL_AMD64_REL32265symbols:266 - Name: '@comp.id'267 Value: 17063575268 SectionNumber: -1269 SimpleType: IMAGE_SYM_TYPE_NULL270 ComplexType: IMAGE_SYM_DTYPE_NULL271 StorageClass: IMAGE_SYM_CLASS_STATIC272 - Name: '@feat.00'273 Value: 2147484048274 SectionNumber: -1275 SimpleType: IMAGE_SYM_TYPE_NULL276 ComplexType: IMAGE_SYM_DTYPE_NULL277 StorageClass: IMAGE_SYM_CLASS_STATIC278 - Name: .drectve279 Value: 0280 SectionNumber: 1281 SimpleType: IMAGE_SYM_TYPE_NULL282 ComplexType: IMAGE_SYM_DTYPE_NULL283 StorageClass: IMAGE_SYM_CLASS_STATIC284 SectionDefinition:285 Length: 47286 NumberOfRelocations: 0287 NumberOfLinenumbers: 0288 CheckSum: 0289 Number: 0290 - Name: '.debug$S'291 Value: 0292 SectionNumber: 2293 SimpleType: IMAGE_SYM_TYPE_NULL294 ComplexType: IMAGE_SYM_DTYPE_NULL295 StorageClass: IMAGE_SYM_CLASS_STATIC296 SectionDefinition:297 Length: 432298 NumberOfRelocations: 6299 NumberOfLinenumbers: 0300 CheckSum: 0301 Number: 0302 - Name: '.debug$T'303 Value: 0304 SectionNumber: 3305 SimpleType: IMAGE_SYM_TYPE_NULL306 ComplexType: IMAGE_SYM_DTYPE_NULL307 StorageClass: IMAGE_SYM_CLASS_STATIC308 SectionDefinition:309 Length: 732310 NumberOfRelocations: 0311 NumberOfLinenumbers: 0312 CheckSum: 0313 Number: 0314 - Name: .data315 Value: 0316 SectionNumber: 4317 SimpleType: IMAGE_SYM_TYPE_NULL318 ComplexType: IMAGE_SYM_DTYPE_NULL319 StorageClass: IMAGE_SYM_CLASS_STATIC320 SectionDefinition:321 Length: 4322 NumberOfRelocations: 0323 NumberOfLinenumbers: 0324 CheckSum: 3482275674325 Number: 0326 - Name: global_foo327 Value: 0328 SectionNumber: 4329 SimpleType: IMAGE_SYM_TYPE_NULL330 ComplexType: IMAGE_SYM_DTYPE_NULL331 StorageClass: IMAGE_SYM_CLASS_EXTERNAL332 - Name: '.text$mn'333 Value: 0334 SectionNumber: 5335 SimpleType: IMAGE_SYM_TYPE_NULL336 ComplexType: IMAGE_SYM_DTYPE_NULL337 StorageClass: IMAGE_SYM_CLASS_STATIC338 SectionDefinition:339 Length: 7340 NumberOfRelocations: 1341 NumberOfLinenumbers: 0342 CheckSum: 3635526833343 Number: 0344 - Name: main345 Value: 0346 SectionNumber: 5347 SimpleType: IMAGE_SYM_TYPE_NULL348 ComplexType: IMAGE_SYM_DTYPE_FUNCTION349 StorageClass: IMAGE_SYM_CLASS_EXTERNAL350...351