Index: lld/COFF/PDB.cpp =================================================================== --- lld/COFF/PDB.cpp +++ lld/COFF/PDB.cpp @@ -47,6 +47,7 @@ #include "llvm/Object/COFF.h" #include "llvm/Support/BinaryByteStream.h" #include "llvm/Support/Endian.h" +#include "llvm/Support/FormatVariadic.h" #include "llvm/Support/JamCRC.h" #include "llvm/Support/Path.h" #include "llvm/Support/ScopedPrinter.h" @@ -412,6 +413,35 @@ } } +static void +recordStringTableReferenceAtOffset(MutableArrayRef Contents, + uint32_t Offset, + std::vector &StrTableRefs) { + Contents = + Contents.drop_front(Offset).take_front(sizeof(support::ulittle32_t)); + ulittle32_t *Index = reinterpret_cast(Contents.data()); + StrTableRefs.push_back(Index); +} + +static void +recordStringTableReferences(SymbolKind Kind, MutableArrayRef Contents, + std::vector &StrTableRefs) { + // For now we only handle S_FILESTATIC, but we may need the same logic for + // S_DEFRANGE and S_DEFRANGE_SUBFIELD. However, I cannot seem to generate any + // PDBs that contain these types of records, so because of the uncertainty + // they are omitted here until we can prove that it's necessary. + switch (Kind) { + case SymbolKind::S_FILESTATIC: + // FileStaticSym::ModFileOffset + recordStringTableReferenceAtOffset(Contents, 4, StrTableRefs); + break; + case SymbolKind::S_DEFRANGE: + case SymbolKind::S_DEFRANGE_SUBFIELD: + __debugbreak(); + break; + } +} + static SymbolKind symbolKind(ArrayRef RecordData) { const RecordPrefix *Prefix = reinterpret_cast(RecordData.data()); @@ -628,6 +658,7 @@ pdb::GSIStreamBuilder &GsiBuilder, const CVIndexMap &IndexMap, TypeCollection &IDTable, + std::vector &StringTableRefs, BinaryStreamRef SymData) { // FIXME: Improve error recovery by warning and skipping records when // possible. @@ -656,6 +687,10 @@ // "real" symbols in a PDB. translateIdSymbols(NewData, IDTable); + // If this record refers to an offset in the object file's string table, + // add that item to the global PDB string table and re-write the index. + recordStringTableReferences(Sym.kind(), Contents, StringTableRefs); + SymbolKind NewKind = symbolKind(NewData); // Fill in "Parent" and "End" fields by maintaining a stack of scopes. @@ -710,6 +745,9 @@ const CVIndexMap &IndexMap = mergeDebugT(File, ObjectIndexMap); // Now do all live .debug$S sections. + DebugStringTableSubsectionRef CVStrTab; + DebugChecksumsSubsectionRef Checksums; + std::vector StringTableReferences; for (SectionChunk *DebugChunk : File->getDebugChunks()) { if (!DebugChunk->isLive() || DebugChunk->getSectionName() != ".debug$S") continue; @@ -723,14 +761,20 @@ BinaryStreamReader Reader(RelocatedDebugContents, support::little); ExitOnErr(Reader.readArray(Subsections, RelocatedDebugContents.size())); - DebugStringTableSubsectionRef CVStrTab; - DebugChecksumsSubsectionRef Checksums; for (const DebugSubsectionRecord &SS : Subsections) { switch (SS.kind()) { - case DebugSubsectionKind::StringTable: + case DebugSubsectionKind::StringTable: { + auto Data = SS.getRecordData(); + ArrayRef Buffer; + cantFail(Data.readLongestContiguousChunk(0, Buffer)); + assert(!CVStrTab.valid() && + "Encountered multiple string table subsections!"); ExitOnErr(CVStrTab.initialize(SS.getRecordData())); break; + } case DebugSubsectionKind::FileChecksums: + assert(!Checksums.valid() && + "Encountered multiple checksum subsections!"); ExitOnErr(Checksums.initialize(SS.getRecordData())); break; case DebugSubsectionKind::Lines: @@ -741,10 +785,12 @@ case DebugSubsectionKind::Symbols: if (Config->DebugGHashes) { mergeSymbolRecords(Alloc, File, Builder.getGsiBuilder(), IndexMap, - GlobalIDTable, SS.getRecordData()); + GlobalIDTable, StringTableReferences, + SS.getRecordData()); } else { mergeSymbolRecords(Alloc, File, Builder.getGsiBuilder(), IndexMap, - IDTable, SS.getRecordData()); + IDTable, StringTableReferences, + SS.getRecordData()); } break; default: @@ -752,25 +798,47 @@ break; } } + } - if (Checksums.valid()) { - // Make a new file checksum table that refers to offsets in the PDB-wide - // string table. Generally the string table subsection appears after the - // checksum table, so we have to do this after looping over all the - // subsections. - if (!CVStrTab.valid()) - fatal(".debug$S sections must have both a string table subsection " - "and a checksum subsection table or neither"); - auto NewChecksums = make_unique(PDBStrTab); - for (FileChecksumEntry &FC : Checksums) { - StringRef FileName = ExitOnErr(CVStrTab.getString(FC.FileNameOffset)); - ExitOnErr(Builder.getDbiBuilder().addModuleSourceFile(*File->ModuleDBI, - FileName)); - NewChecksums->addChecksum(FileName, FC.Kind, FC.Checksum); - } - File->ModuleDBI->addDebugSubsection(std::move(NewChecksums)); + // We should have seen all debug subsections across the entire object file now + // which means that if a StringTable subsection and Checksums subsection were + // present, now is the time to handle them. + if (!CVStrTab.valid()) { + if (Checksums.valid()) + fatal(".debug$S sections with a checksums subsection must also contain a " + "string table subsection"); + + if (!StringTableReferences.empty()) + warn("No StringTable subsection was encountered, but there are string " + "table references"); + return; + } + + // Rewrite each string table reference based on the value that the string + // assumes in the final PDB. + for (ulittle32_t *Ref : StringTableReferences) { + auto ExpectedString = CVStrTab.getString(*Ref); + if (!ExpectedString) { + warn("Invalid string table reference"); + consumeError(ExpectedString.takeError()); + continue; } + + *Ref = PDBStrTab.insert(*ExpectedString); + } + + // Make a new file checksum table that refers to offsets in the PDB-wide + // string table. Generally the string table subsection appears after the + // checksum table, so we have to do this after looping over all the + // subsections. + auto NewChecksums = make_unique(PDBStrTab); + for (FileChecksumEntry &FC : Checksums) { + StringRef FileName = ExitOnErr(CVStrTab.getString(FC.FileNameOffset)); + ExitOnErr(Builder.getDbiBuilder().addModuleSourceFile(*File->ModuleDBI, + FileName)); + NewChecksums->addChecksum(FileName, FC.Kind, FC.Checksum); } + File->ModuleDBI->addDebugSubsection(std::move(NewChecksums)); } static PublicSym32 createPublic(Defined *Def) { Index: lld/test/COFF/Inputs/pdb-file-statics-a.yaml =================================================================== --- /dev/null +++ lld/test/COFF/Inputs/pdb-file-statics-a.yaml @@ -0,0 +1,1816 @@ +--- !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 + SectionData: 04000000F1000000680000002A00011100000000443A5C7372635C6C6C766D6275696C645C636C5C44656275675C7836345C612E6F626A003A003C1101600000D00013000B00CB63000013000B00CB6300004D6963726F736F667420285229204F7074696D697A696E6720436F6D70696C657200F1000000470300000E000C117400000000000000000078002D000811611000005F5F76635F617474726962757465733A3A6576656E745F736F757263654174747269627574650039000811591000005F5F76635F617474726962757465733A3A6576656E745F736F757263654174747269627574653A3A6F7074696D697A655F650035000811561000005F5F76635F617474726962757465733A3A6576656E745F736F757263654174747269627574653A3A747970655F65003E000811521000005F5F76635F617474726962757465733A3A68656C7065725F617474726962757465733A3A76315F616C747479706541747472696275746500460008114C1000005F5F76635F617474726962757465733A3A68656C7065725F617474726962757465733A3A76315F616C74747970654174747269627574653A3A747970655F650039000811481000005F5F76635F617474726962757465733A3A68656C7065725F617474726962757465733A3A75736167654174747269627574650042000811421000005F5F76635F617474726962757465733A3A68656C7065725F617474726962757465733A3A75736167654174747269627574653A3A75736167655F65002A0008113E1000005F5F76635F617474726962757465733A3A746872656164696E674174747269627574650037000811361000005F5F76635F617474726962757465733A3A746872656164696E674174747269627574653A3A746872656164696E675F65002D000811321000005F5F76635F617474726962757465733A3A616767726567617461626C6541747472696275746500350008112A1000005F5F76635F617474726962757465733A3A616767726567617461626C654174747269627574653A3A747970655F65002F000811261000005F5F76635F617474726962757465733A3A6576656E745F726563656976657241747472696275746500370008111C1000005F5F76635F617474726962757465733A3A6576656E745F72656365697665724174747269627574653A3A747970655F650027000811181000005F5F76635F617474726962757465733A3A6D6F64756C65417474726962757465002F0008110A1000005F5F76635F617474726962757465733A3A6D6F64756C654174747269627574653A3A747970655F650000F400000018000000010000001001108D915B38B79821EA2169DBD317C2590000F60000001000000000000000031000000000000006000000F30000004900000000643A5C7372635C6C6C766D6275696C645C636C5C64656275675C7836345C612E63707000443A5C7372635C6C6C766D6275696C645C636C5C44656275675C7836345C612E6F626A00000000F10000000800000006004C116B100000 + Subsections: + - !Symbols + Records: + - Kind: S_OBJNAME + ObjNameSym: + Signature: 0 + ObjectName: 'D:\src\llvmbuild\cl\Debug\x64\a.obj' + - Kind: S_COMPILE3 + Compile3Sym: + Flags: [ SecurityChecks, HotPatch ] + Machine: X64 + FrontendMajor: 19 + FrontendMinor: 11 + FrontendBuild: 25547 + FrontendQFE: 0 + BackendMajor: 19 + BackendMinor: 11 + BackendBuild: 25547 + BackendQFE: 0 + Version: 'Microsoft (R) Optimizing Compiler' + - !Symbols + Records: + - Kind: S_LDATA32 + DataSym: + Type: 116 + DisplayName: x + - Kind: S_UDT + UDTSym: + Type: 4193 + UDTName: '__vc_attributes::event_sourceAttribute' + - Kind: S_UDT + UDTSym: + Type: 4185 + UDTName: '__vc_attributes::event_sourceAttribute::optimize_e' + - Kind: S_UDT + UDTSym: + Type: 4182 + UDTName: '__vc_attributes::event_sourceAttribute::type_e' + - Kind: S_UDT + UDTSym: + Type: 4178 + UDTName: '__vc_attributes::helper_attributes::v1_alttypeAttribute' + - Kind: S_UDT + UDTSym: + Type: 4172 + UDTName: '__vc_attributes::helper_attributes::v1_alttypeAttribute::type_e' + - Kind: S_UDT + UDTSym: + Type: 4168 + UDTName: '__vc_attributes::helper_attributes::usageAttribute' + - Kind: S_UDT + UDTSym: + Type: 4162 + UDTName: '__vc_attributes::helper_attributes::usageAttribute::usage_e' + - Kind: S_UDT + UDTSym: + Type: 4158 + UDTName: '__vc_attributes::threadingAttribute' + - Kind: S_UDT + UDTSym: + Type: 4150 + UDTName: '__vc_attributes::threadingAttribute::threading_e' + - Kind: S_UDT + UDTSym: + Type: 4146 + UDTName: '__vc_attributes::aggregatableAttribute' + - Kind: S_UDT + UDTSym: + Type: 4138 + UDTName: '__vc_attributes::aggregatableAttribute::type_e' + - Kind: S_UDT + UDTSym: + Type: 4134 + UDTName: '__vc_attributes::event_receiverAttribute' + - Kind: S_UDT + UDTSym: + Type: 4124 + UDTName: '__vc_attributes::event_receiverAttribute::type_e' + - Kind: S_UDT + UDTSym: + Type: 4120 + UDTName: '__vc_attributes::moduleAttribute' + - Kind: S_UDT + UDTSym: + Type: 4106 + UDTName: '__vc_attributes::moduleAttribute::type_e' + - !FileChecksums + Checksums: + - FileName: 'd:\src\llvmbuild\cl\debug\x64\a.cpp' + Kind: MD5 + Checksum: 108D915B38B79821EA2169DBD317C259 + - !InlineeLines + HasExtraFiles: false + Sites: + - FileName: 'd:\src\llvmbuild\cl\debug\x64\a.cpp' + LineNum: 6 + Inlinee: 4099 + - !StringTable + Strings: + - 'd:\src\llvmbuild\cl\debug\x64\a.cpp' + - 'D:\src\llvmbuild\cl\Debug\x64\a.obj' + - !Symbols + Records: + - Kind: S_BUILDINFO + BuildInfoSym: + BuildId: 4203 + Relocations: + - VirtualAddress: 132 + SymbolName: '?x@@3HA' + Type: IMAGE_REL_AMD64_SECREL + - VirtualAddress: 136 + SymbolName: '?x@@3HA' + Type: IMAGE_REL_AMD64_SECTION + - Name: '.debug$T' + Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_DISCARDABLE, IMAGE_SCN_MEM_READ ] + Alignment: 1 + SectionData: 040000000A00011201000000740000000E0008100300000000000100001000000A000210700600000C0001000E00011600000000011000006100F2F10E0001120200000074000000021000000E0008107400000000000200041000001200011600000000051000006D61696E00F3F2F10E00011600000000011000006200F2F15E0005150000800200000000000000000000000000005F5F76635F617474726962757465733A3A6D6F64756C65417474726962757465002E3F41556D6F64756C65417474726962757465405F5F76635F61747472696275746573404000F3F2F15A000312021503000100646C6C00F2F102150300020065786500F2F10215030003007365727669636500F2F1021503000400756E73706563696669656400F2F102150300020045584500F2F10215030003005345525649434500F2F1660007150600080274000000091000005F5F76635F617474726962757465733A3A6D6F64756C654174747269627574653A3A747970655F65002E3F415734747970655F65406D6F64756C65417474726962757465405F5F76635F61747472696275746573404000F15200051600000000643A5C7372635C6C6C766D6275696C645C636C5C64656275675C7836345C707265646566696E656420632B2B20617474726962757465732028636F6D70696C657220696E7465726E616C29000E0006160A1000000B100000E20100000A000110700000000100F2F10A0002100D1000000C000100420001120F0000000A1000000E1000000E1000000E10000074000000300000000E100000740000000E1000000E1000007400000030000000300000000E1000000E1000000A000210081000000C0401001A00091003000000081000001010000000020F000F100000000000000A000112010000000A1000001A00091003000000081000001010000000020100121000000000000006000112000000001A0009100300000008100000101000000002000014100000000000001A00061203000000111000000300000013100000030000001510000062010312101500000A100000747970655F6500F10F150300161000006D6F64756C65417474726962757465000D1503000A10000000007479706500F10D1503000E10000008006E616D6500F10D1503000E100000100076657273696F6E00F2F10D1503000E10000018007575696400F10D1503007400000020006C63696400F10D150300300000002400636F6E74726F6C00F2F10D1503000E100000280068656C70737472696E6700F3F2F10D15030074000000300068656C70737472696E67636F6E74657874000D1503000E100000380068656C70737472696E67646C6C000D1503000E100000400068656C7066696C6500F10D15030074000000480068656C70636F6E7465787400F2F10D150300300000004C0068696464656E00F3F2F10D150300300000004D007265737472696374656400F3F2F10D1503000E1000005000637573746F6D00F3F2F10D1503000E10000058007265736F757263655F6E616D65005E0005151300120217100000000000000000000060005F5F76635F617474726962757465733A3A6D6F64756C65417474726962757465002E3F41556D6F64756C65417474726962757465405F5F76635F61747472696275746573404000F3F2F10E000616181000000B100000E10100006E0005150000800200000000000000000000000000005F5F76635F617474726962757465733A3A6576656E745F7265636569766572417474726962757465002E3F41556576656E745F7265636569766572417474726962757465405F5F76635F61747472696275746573404000F3F2F12E0003120215030000006E617469766500F3F2F1021503000100636F6D00F2F10215030002006D616E6167656400F2F17600071503000802740000001B1000005F5F76635F617474726962757465733A3A6576656E745F72656365697665724174747269627574653A3A747970655F65002E3F415734747970655F65406576656E745F7265636569766572417474726962757465405F5F76635F61747472696275746573404000F10E0006161C1000000B100000880000000E000112020000001C100000300000000A0002101A1000000C0401001A000910030000001A1000001F100000000202001E100000000000000A000112010000001C1000001A000910030000001A1000001F1000000002010021100000000000001A000910030000001A1000001F1000000002000014100000000000001A0006120300000020100000030000002210000003000000231000005E000312101500001C100000747970655F6500F10F150300241000006576656E745F7265636569766572417474726962757465000D1503001C10000000007479706500F10D1503003000000004006C61796F75745F646570656E64656E7400F16E0005150600120225100000000000000000000008005F5F76635F617474726962757465733A3A6576656E745F7265636569766572417474726962757465002E3F41556576656E745F7265636569766572417474726962757465405F5F76635F61747472696275746573404000F3F2F10E000616261000000B100000870000006A0005150000800200000000000000000000000000005F5F76635F617474726962757465733A3A616767726567617461626C65417474726962757465002E3F4155616767726567617461626C65417474726962757465405F5F76635F61747472696275746573404000F3F2F12E0003120215030000006E6576657200021503000100616C6C6F77656400F2F1021503000200616C7761797300F3F2F1720007150300080274000000291000005F5F76635F617474726962757465733A3A616767726567617461626C654174747269627574653A3A747970655F65002E3F415734747970655F6540616767726567617461626C65417474726962757465405F5F76635F61747472696275746573404000F10E0006162A1000000B100000210200000A000112010000002A1000000A000210281000000C0401001A00091003000000281000002D100000000201002C100000000000001A00091003000000281000002D10000000020000141000000000000012000612030000002E100000030000002F10000042000312101500002A100000747970655F6500F10F15020030100000616767726567617461626C6541747472696275746500F2F10D1503002A10000000007479706500F16A0005150400120231100000000000000000000004005F5F76635F617474726962757465733A3A616767726567617461626C65417474726962757465002E3F4155616767726567617461626C65417474726962757465405F5F76635F61747472696275746573404000F3F2F10E000616321000000B10000020020000620005150000800200000000000000000000000000005F5F76635F617474726962757465733A3A746872656164696E67417474726962757465002E3F4155746872656164696E67417474726962757465405F5F76635F61747472696275746573404000F14A00031202150300010061706172746D656E740002150300020073696E676C6500F3F2F10215030003006672656500F10215030004006E65757472616C00F2F1021503000500626F746800F1760007150500080274000000351000005F5F76635F617474726962757465733A3A746872656164696E674174747269627574653A3A746872656164696E675F65002E3F415734746872656164696E675F6540746872656164696E67417474726962757465405F5F76635F61747472696275746573404000F10E000616361000000B100000A70100000A00011201000000361000000A000210341000000C0401001A0009100300000034100000391000000002010038100000000000001A00091003000000341000003910000000020000141000000000000012000612030000003A100000030000003B100000420003121015000036100000746872656164696E675F65000F1502003C100000746872656164696E6741747472696275746500F10D15030036100000000076616C75650062000515040012023D100000000000000000000004005F5F76635F617474726962757465733A3A746872656164696E67417474726962757465002E3F4155746872656164696E67417474726962757465405F5F76635F61747472696275746573404000F10E0006163E1000000B100000A60100007E0005150000800200000000000000000000000000005F5F76635F617474726962757465733A3A68656C7065725F617474726962757465733A3A7573616765417474726962757465002E3F415575736167654174747269627574654068656C7065725F61747472696275746573405F5F76635F61747472696275746573404000F202031202150300000065416E7955736167650002150300010065436F436C61737355736167650002150300020065434F4D496E74657266616365557361676500F3F2F102150300060065496E74657266616365557361676500F2F1021503000800654D656D626572557361676500F1021503001000654D6574686F64557361676500F102150300200065496E746572666163654D6574686F6455736167650002150300400065496E746572666163654D656D62657255736167650002150300800065436F436C6173734D656D626572557361676500F2F102150300000165436F436C6173734D6574686F64557361676500F2F102150300000365476C6F62616C4D6574686F64557361676500F3F2F102150300000465476C6F62616C44617461557361676500F102150300000865436C617373557361676500F2F102150300001065496E74657266616365506172616D65746572557361676500F1021503000030654D6574686F64506172616D657465725573616765000215030000406549444C4D6F64756C65557361676500F2F1021503000280008065416E6F6E796D6F75735573616765000215030004800000010065547970656465665573616765000215030004800000020065556E696F6E557361676500F2F10215030004800000040065456E756D557361676500F3F2F10215030004800000080065446566696E65546167557361676500F2F10215030004800000100065537472756374557361676500F102150300048000002000654C6F63616C557361676500F2F1021503000480000040006550726F7065727479557361676500F3F2F102150300048000008000654576656E74557361676500F2F1021503000480000000016554656D706C617465557361676500F3F2F102150300048000000001654D6F64756C65557361676500F10215030004800000000265496C6C6567616C55736167650002150300048000000004654173796E6368726F6E6F7573557361676500F3F2F1021503000480FF7F3F0065416E7949444C557361676500F18A0007151E00080274000000411000005F5F76635F617474726962757465733A3A68656C7065725F617474726962757465733A3A75736167654174747269627574653A3A75736167655F65002E3F41573475736167655F654075736167654174747269627574654068656C7065725F61747472696275746573405F5F76635F617474726962757465734040000E000616421000000B100000330000000A00011201000000750000000A000210401000000C0401001A0009100300000040100000451000000002010044100000000000003A000312101500004210000075736167655F65001115030046100000757361676541747472696275746500F10D15030075000000000076616C7565007E0005150300120247100000000000000000000004005F5F76635F617474726962757465733A3A68656C7065725F617474726962757465733A3A7573616765417474726962757465002E3F415575736167654174747269627574654068656C7065725F61747472696275746573405F5F76635F617474726962757465734040000E000616481000000B100000310000008A0005150000800200000000000000000000000000005F5F76635F617474726962757465733A3A68656C7065725F617474726962757465733A3A76315F616C7474797065417474726962757465002E3F415576315F616C74747970654174747269627574654068656C7065725F61747472696275746573405F5F76635F61747472696275746573404000F2F14200031202150300000065426F6F6C65616E00F102150300010065496E746567657200F102150300020065466C6F617400F3F2F102150300030065446F75626C6500F2F19200071504000802740000004B1000005F5F76635F617474726962757465733A3A68656C7065725F617474726962757465733A3A76315F616C74747970654174747269627574653A3A747970655F65002E3F415734747970655F654076315F616C74747970654174747269627574654068656C7065725F61747472696275746573405F5F76635F617474726962757465734040000E0006164C1000000B100000260000000A000112010000004C1000000A0002104A1000000C0401001A000910030000004A1000004F100000000201004E100000000000003E000312101500004C100000747970655F6500F1111503005010000076315F616C7474797065417474726962757465000D1503004C10000000007479706500F18A0005150300120251100000000000000000000004005F5F76635F617474726962757465733A3A68656C7065725F617474726962757465733A3A76315F616C7474797065417474726962757465002E3F415576315F616C74747970654174747269627574654068656C7065725F61747472696275746573405F5F76635F61747472696275746573404000F2F10E000616521000000B100000250000006A0005150000800200000000000000000000000000005F5F76635F617474726962757465733A3A6576656E745F736F75726365417474726962757465002E3F41556576656E745F736F75726365417474726962757465405F5F76635F61747472696275746573404000F3F2F12E0003120215030000006E617469766500F3F2F1021503000100636F6D00F2F10215030002006D616E6167656400F2F1720007150300080274000000551000005F5F76635F617474726962757465733A3A6576656E745F736F757263654174747269627574653A3A747970655F65002E3F415734747970655F65406576656E745F736F75726365417474726962757465405F5F76635F61747472696275746573404000F10E000616561000000B100000760400001A00031202150300000073706565640002150300010073697A6500F17A0007150200080274000000581000005F5F76635F617474726962757465733A3A6576656E745F736F757263654174747269627574653A3A6F7074696D697A655F65002E3F4157346F7074696D697A655F65406576656E745F736F75726365417474726962757465405F5F76635F61747472696275746573404000F10E000616591000000B100000790400000A00011201000000561000000A000210541000000C0401001A00091003000000541000005C100000000201005B100000000000001A00091003000000541000005C10000000020000141000000000000012000612030000005D100000030000005E1000007E0003121015000056100000747970655F6500F110150000591000006F7074696D697A655F6500F10F1502005F1000006576656E745F736F7572636541747472696275746500F2F10D1503005610000000007479706500F10D1503005910000004006F7074696D697A6500F10D1503003000000008006465636F7261746500F16A000515070012026010000000000000000000000C005F5F76635F617474726962757465733A3A6576656E745F736F75726365417474726962757465002E3F41556576656E745F736F75726365417474726962757465405F5F76635F61747472696275746573404000F3F2F10E000616611000000B100000750400002600051600000000443A5C7372635C6C6C766D6275696C645C636C5C44656275675C78363400F2F17A00051600000000433A5C50726F6772616D2046696C65732028783836295C4D6963726F736F66742056697375616C2053747564696F5C323031375C50726F66657373696F6E616C5C56435C546F6F6C735C4D5356435C31342E31312E32353530335C62696E5C486F73745836345C7836345C636C2E65786500F2F1FA000516000000002D5A37202D4F31202D63202D4D54202D4922433A5C50726F6772616D2046696C65732028783836295C4D6963726F736F66742056697375616C2053747564696F5C323031375C50726F66657373696F6E616C5C56435C546F6F6C735C4D5356435C31342E31312E32353530335C41544C4D46435C696E636C75646522202D4922433A5C50726F6772616D2046696C65732028783836295C4D6963726F736F66742056697375616C2053747564696F5C323031375C50726F66657373696F6E616C5C56435C546F6F6C735C4D5356435C31342E31312E32353530335C696E636C75646522202D4922433A5C50726F6772616D00F2F10A010516000000002046696C65732028783836295C57696E646F7773204B6974735C4E4554465853444B5C342E362E315C696E636C7564655C756D22202D4922433A5C50726F6772616D2046696C65732028783836295C57696E646F7773204B6974735C31305C696E636C7564655C31302E302E31363239392E305C7563727422202D4922433A5C50726F6772616D2046696C65732028783836295C57696E646F7773204B6974735C31305C696E636C7564655C31302E302E31363239392E305C73686172656422202D4922433A5C50726F6772616D2046696C65732028783836295C57696E646F7773204B6974735C31305C696E636C7564655C31302E302E31363239392E305C756D22000E0004160200000065100000661000005600051667100000202D4922433A5C50726F6772616D2046696C65732028783836295C57696E646F7773204B6974735C31305C696E636C7564655C31302E302E31363239392E305C77696E727422202D5450202D5800F2F10E00051600000000612E63707000F2F12E00051600000000443A5C7372635C6C6C766D6275696C645C636C5C44656275675C7836345C76633134302E706462001A00031605006310000064100000691000006A10000068100000F2F1 + Types: + - Kind: LF_ARGLIST + ArgList: + ArgIndices: [ 116 ] + - Kind: LF_PROCEDURE + Procedure: + ReturnType: 3 + CallConv: NearC + Options: [ None ] + ParameterCount: 1 + ArgumentList: 4096 + - Kind: LF_POINTER + Pointer: + ReferentType: 1648 + Attrs: 65548 + - Kind: LF_FUNC_ID + FuncId: + ParentScope: 0 + FunctionType: 4097 + Name: a + - Kind: LF_ARGLIST + ArgList: + ArgIndices: [ 116, 4098 ] + - 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 + - Kind: LF_FUNC_ID + FuncId: + ParentScope: 0 + FunctionType: 4097 + Name: b + - Kind: LF_STRUCTURE + Class: + MemberCount: 0 + Options: [ None, ForwardReference, HasUniqueName ] + FieldList: 0 + Name: '__vc_attributes::moduleAttribute' + UniqueName: '.?AUmoduleAttribute@__vc_attributes@@' + DerivationList: 0 + VTableShape: 0 + Size: 0 + - Kind: LF_FIELDLIST + FieldList: + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 1 + Name: dll + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 2 + Name: exe + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 3 + Name: service + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 4 + Name: unspecified + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 2 + Name: EXE + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 3 + Name: SERVICE + - Kind: LF_ENUM + Enum: + NumEnumerators: 6 + Options: [ None, Nested, HasUniqueName ] + FieldList: 4105 + Name: '__vc_attributes::moduleAttribute::type_e' + UniqueName: '.?AW4type_e@moduleAttribute@__vc_attributes@@' + UnderlyingType: 116 + - Kind: LF_STRING_ID + StringId: + Id: 0 + String: 'd:\src\llvmbuild\cl\debug\x64\predefined c++ attributes (compiler internal)' + - Kind: LF_UDT_SRC_LINE + UdtSourceLine: + UDT: 4106 + SourceFile: 4107 + LineNumber: 482 + - Kind: LF_MODIFIER + Modifier: + ModifiedType: 112 + Modifiers: [ None, Const ] + - Kind: LF_POINTER + Pointer: + ReferentType: 4109 + Attrs: 65548 + - Kind: LF_ARGLIST + ArgList: + ArgIndices: [ 4106, 4110, 4110, 4110, 116, 48, 4110, 116, + 4110, 4110, 116, 48, 48, 4110, 4110 ] + - Kind: LF_POINTER + Pointer: + ReferentType: 4104 + Attrs: 66572 + - Kind: LF_MFUNCTION + MemberFunction: + ReturnType: 3 + ClassType: 4104 + ThisType: 4112 + CallConv: NearC + Options: [ None, Constructor ] + ParameterCount: 15 + ArgumentList: 4111 + ThisPointerAdjustment: 0 + - Kind: LF_ARGLIST + ArgList: + ArgIndices: [ 4106 ] + - Kind: LF_MFUNCTION + MemberFunction: + ReturnType: 3 + ClassType: 4104 + ThisType: 4112 + CallConv: NearC + Options: [ None, Constructor ] + ParameterCount: 1 + ArgumentList: 4114 + ThisPointerAdjustment: 0 + - Kind: LF_ARGLIST + ArgList: + ArgIndices: [ ] + - Kind: LF_MFUNCTION + MemberFunction: + ReturnType: 3 + ClassType: 4104 + ThisType: 4112 + CallConv: NearC + Options: [ None, Constructor ] + ParameterCount: 0 + ArgumentList: 4116 + ThisPointerAdjustment: 0 + - Kind: LF_METHODLIST + MethodOverloadList: + Methods: + - Type: 4113 + Attrs: 3 + VFTableOffset: -1 + Name: '' + - Type: 4115 + Attrs: 3 + VFTableOffset: -1 + Name: '' + - Type: 4117 + Attrs: 3 + VFTableOffset: -1 + Name: '' + - Kind: LF_FIELDLIST + FieldList: + - Kind: LF_NESTTYPE + NestedType: + Type: 4106 + Name: type_e + - Kind: LF_METHOD + OverloadedMethod: + NumOverloads: 3 + MethodList: 4118 + Name: moduleAttribute + - Kind: LF_MEMBER + DataMember: + Attrs: 3 + Type: 4106 + FieldOffset: 0 + Name: type + - Kind: LF_MEMBER + DataMember: + Attrs: 3 + Type: 4110 + FieldOffset: 8 + Name: name + - Kind: LF_MEMBER + DataMember: + Attrs: 3 + Type: 4110 + FieldOffset: 16 + Name: version + - Kind: LF_MEMBER + DataMember: + Attrs: 3 + Type: 4110 + FieldOffset: 24 + Name: uuid + - Kind: LF_MEMBER + DataMember: + Attrs: 3 + Type: 116 + FieldOffset: 32 + Name: lcid + - Kind: LF_MEMBER + DataMember: + Attrs: 3 + Type: 48 + FieldOffset: 36 + Name: control + - Kind: LF_MEMBER + DataMember: + Attrs: 3 + Type: 4110 + FieldOffset: 40 + Name: helpstring + - Kind: LF_MEMBER + DataMember: + Attrs: 3 + Type: 116 + FieldOffset: 48 + Name: helpstringcontext + - Kind: LF_MEMBER + DataMember: + Attrs: 3 + Type: 4110 + FieldOffset: 56 + Name: helpstringdll + - Kind: LF_MEMBER + DataMember: + Attrs: 3 + Type: 4110 + FieldOffset: 64 + Name: helpfile + - Kind: LF_MEMBER + DataMember: + Attrs: 3 + Type: 116 + FieldOffset: 72 + Name: helpcontext + - Kind: LF_MEMBER + DataMember: + Attrs: 3 + Type: 48 + FieldOffset: 76 + Name: hidden + - Kind: LF_MEMBER + DataMember: + Attrs: 3 + Type: 48 + FieldOffset: 77 + Name: restricted + - Kind: LF_MEMBER + DataMember: + Attrs: 3 + Type: 4110 + FieldOffset: 80 + Name: custom + - Kind: LF_MEMBER + DataMember: + Attrs: 3 + Type: 4110 + FieldOffset: 88 + Name: resource_name + - Kind: LF_STRUCTURE + Class: + MemberCount: 19 + Options: [ None, HasConstructorOrDestructor, ContainsNestedClass, HasUniqueName ] + FieldList: 4119 + Name: '__vc_attributes::moduleAttribute' + UniqueName: '.?AUmoduleAttribute@__vc_attributes@@' + DerivationList: 0 + VTableShape: 0 + Size: 96 + - Kind: LF_UDT_SRC_LINE + UdtSourceLine: + UDT: 4120 + SourceFile: 4107 + LineNumber: 481 + - Kind: LF_STRUCTURE + Class: + MemberCount: 0 + Options: [ None, ForwardReference, HasUniqueName ] + FieldList: 0 + Name: '__vc_attributes::event_receiverAttribute' + UniqueName: '.?AUevent_receiverAttribute@__vc_attributes@@' + DerivationList: 0 + VTableShape: 0 + Size: 0 + - Kind: LF_FIELDLIST + FieldList: + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 0 + Name: native + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 1 + Name: com + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 2 + Name: managed + - Kind: LF_ENUM + Enum: + NumEnumerators: 3 + Options: [ None, Nested, HasUniqueName ] + FieldList: 4123 + Name: '__vc_attributes::event_receiverAttribute::type_e' + UniqueName: '.?AW4type_e@event_receiverAttribute@__vc_attributes@@' + UnderlyingType: 116 + - Kind: LF_UDT_SRC_LINE + UdtSourceLine: + UDT: 4124 + SourceFile: 4107 + LineNumber: 136 + - Kind: LF_ARGLIST + ArgList: + ArgIndices: [ 4124, 48 ] + - Kind: LF_POINTER + Pointer: + ReferentType: 4122 + Attrs: 66572 + - Kind: LF_MFUNCTION + MemberFunction: + ReturnType: 3 + ClassType: 4122 + ThisType: 4127 + CallConv: NearC + Options: [ None, Constructor ] + ParameterCount: 2 + ArgumentList: 4126 + ThisPointerAdjustment: 0 + - Kind: LF_ARGLIST + ArgList: + ArgIndices: [ 4124 ] + - Kind: LF_MFUNCTION + MemberFunction: + ReturnType: 3 + ClassType: 4122 + ThisType: 4127 + CallConv: NearC + Options: [ None, Constructor ] + ParameterCount: 1 + ArgumentList: 4129 + ThisPointerAdjustment: 0 + - Kind: LF_MFUNCTION + MemberFunction: + ReturnType: 3 + ClassType: 4122 + ThisType: 4127 + CallConv: NearC + Options: [ None, Constructor ] + ParameterCount: 0 + ArgumentList: 4116 + ThisPointerAdjustment: 0 + - Kind: LF_METHODLIST + MethodOverloadList: + Methods: + - Type: 4128 + Attrs: 3 + VFTableOffset: -1 + Name: '' + - Type: 4130 + Attrs: 3 + VFTableOffset: -1 + Name: '' + - Type: 4131 + Attrs: 3 + VFTableOffset: -1 + Name: '' + - Kind: LF_FIELDLIST + FieldList: + - Kind: LF_NESTTYPE + NestedType: + Type: 4124 + Name: type_e + - Kind: LF_METHOD + OverloadedMethod: + NumOverloads: 3 + MethodList: 4132 + Name: event_receiverAttribute + - Kind: LF_MEMBER + DataMember: + Attrs: 3 + Type: 4124 + FieldOffset: 0 + Name: type + - Kind: LF_MEMBER + DataMember: + Attrs: 3 + Type: 48 + FieldOffset: 4 + Name: layout_dependent + - Kind: LF_STRUCTURE + Class: + MemberCount: 6 + Options: [ None, HasConstructorOrDestructor, ContainsNestedClass, HasUniqueName ] + FieldList: 4133 + Name: '__vc_attributes::event_receiverAttribute' + UniqueName: '.?AUevent_receiverAttribute@__vc_attributes@@' + DerivationList: 0 + VTableShape: 0 + Size: 8 + - Kind: LF_UDT_SRC_LINE + UdtSourceLine: + UDT: 4134 + SourceFile: 4107 + LineNumber: 135 + - Kind: LF_STRUCTURE + Class: + MemberCount: 0 + Options: [ None, ForwardReference, HasUniqueName ] + FieldList: 0 + Name: '__vc_attributes::aggregatableAttribute' + UniqueName: '.?AUaggregatableAttribute@__vc_attributes@@' + DerivationList: 0 + VTableShape: 0 + Size: 0 + - Kind: LF_FIELDLIST + FieldList: + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 0 + Name: never + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 1 + Name: allowed + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 2 + Name: always + - Kind: LF_ENUM + Enum: + NumEnumerators: 3 + Options: [ None, Nested, HasUniqueName ] + FieldList: 4137 + Name: '__vc_attributes::aggregatableAttribute::type_e' + UniqueName: '.?AW4type_e@aggregatableAttribute@__vc_attributes@@' + UnderlyingType: 116 + - Kind: LF_UDT_SRC_LINE + UdtSourceLine: + UDT: 4138 + SourceFile: 4107 + LineNumber: 545 + - Kind: LF_ARGLIST + ArgList: + ArgIndices: [ 4138 ] + - Kind: LF_POINTER + Pointer: + ReferentType: 4136 + Attrs: 66572 + - Kind: LF_MFUNCTION + MemberFunction: + ReturnType: 3 + ClassType: 4136 + ThisType: 4141 + CallConv: NearC + Options: [ None, Constructor ] + ParameterCount: 1 + ArgumentList: 4140 + ThisPointerAdjustment: 0 + - Kind: LF_MFUNCTION + MemberFunction: + ReturnType: 3 + ClassType: 4136 + ThisType: 4141 + CallConv: NearC + Options: [ None, Constructor ] + ParameterCount: 0 + ArgumentList: 4116 + ThisPointerAdjustment: 0 + - Kind: LF_METHODLIST + MethodOverloadList: + Methods: + - Type: 4142 + Attrs: 3 + VFTableOffset: -1 + Name: '' + - Type: 4143 + Attrs: 3 + VFTableOffset: -1 + Name: '' + - Kind: LF_FIELDLIST + FieldList: + - Kind: LF_NESTTYPE + NestedType: + Type: 4138 + Name: type_e + - Kind: LF_METHOD + OverloadedMethod: + NumOverloads: 2 + MethodList: 4144 + Name: aggregatableAttribute + - Kind: LF_MEMBER + DataMember: + Attrs: 3 + Type: 4138 + FieldOffset: 0 + Name: type + - Kind: LF_STRUCTURE + Class: + MemberCount: 4 + Options: [ None, HasConstructorOrDestructor, ContainsNestedClass, HasUniqueName ] + FieldList: 4145 + Name: '__vc_attributes::aggregatableAttribute' + UniqueName: '.?AUaggregatableAttribute@__vc_attributes@@' + DerivationList: 0 + VTableShape: 0 + Size: 4 + - Kind: LF_UDT_SRC_LINE + UdtSourceLine: + UDT: 4146 + SourceFile: 4107 + LineNumber: 544 + - Kind: LF_STRUCTURE + Class: + MemberCount: 0 + Options: [ None, ForwardReference, HasUniqueName ] + FieldList: 0 + Name: '__vc_attributes::threadingAttribute' + UniqueName: '.?AUthreadingAttribute@__vc_attributes@@' + DerivationList: 0 + VTableShape: 0 + Size: 0 + - Kind: LF_FIELDLIST + FieldList: + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 1 + Name: apartment + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 2 + Name: single + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 3 + Name: free + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 4 + Name: neutral + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 5 + Name: both + - Kind: LF_ENUM + Enum: + NumEnumerators: 5 + Options: [ None, Nested, HasUniqueName ] + FieldList: 4149 + Name: '__vc_attributes::threadingAttribute::threading_e' + UniqueName: '.?AW4threading_e@threadingAttribute@__vc_attributes@@' + UnderlyingType: 116 + - Kind: LF_UDT_SRC_LINE + UdtSourceLine: + UDT: 4150 + SourceFile: 4107 + LineNumber: 423 + - Kind: LF_ARGLIST + ArgList: + ArgIndices: [ 4150 ] + - Kind: LF_POINTER + Pointer: + ReferentType: 4148 + Attrs: 66572 + - Kind: LF_MFUNCTION + MemberFunction: + ReturnType: 3 + ClassType: 4148 + ThisType: 4153 + CallConv: NearC + Options: [ None, Constructor ] + ParameterCount: 1 + ArgumentList: 4152 + ThisPointerAdjustment: 0 + - Kind: LF_MFUNCTION + MemberFunction: + ReturnType: 3 + ClassType: 4148 + ThisType: 4153 + CallConv: NearC + Options: [ None, Constructor ] + ParameterCount: 0 + ArgumentList: 4116 + ThisPointerAdjustment: 0 + - Kind: LF_METHODLIST + MethodOverloadList: + Methods: + - Type: 4154 + Attrs: 3 + VFTableOffset: -1 + Name: '' + - Type: 4155 + Attrs: 3 + VFTableOffset: -1 + Name: '' + - Kind: LF_FIELDLIST + FieldList: + - Kind: LF_NESTTYPE + NestedType: + Type: 4150 + Name: threading_e + - Kind: LF_METHOD + OverloadedMethod: + NumOverloads: 2 + MethodList: 4156 + Name: threadingAttribute + - Kind: LF_MEMBER + DataMember: + Attrs: 3 + Type: 4150 + FieldOffset: 0 + Name: value + - Kind: LF_STRUCTURE + Class: + MemberCount: 4 + Options: [ None, HasConstructorOrDestructor, ContainsNestedClass, HasUniqueName ] + FieldList: 4157 + Name: '__vc_attributes::threadingAttribute' + UniqueName: '.?AUthreadingAttribute@__vc_attributes@@' + DerivationList: 0 + VTableShape: 0 + Size: 4 + - Kind: LF_UDT_SRC_LINE + UdtSourceLine: + UDT: 4158 + SourceFile: 4107 + LineNumber: 422 + - Kind: LF_STRUCTURE + Class: + MemberCount: 0 + Options: [ None, ForwardReference, HasUniqueName ] + FieldList: 0 + Name: '__vc_attributes::helper_attributes::usageAttribute' + UniqueName: '.?AUusageAttribute@helper_attributes@__vc_attributes@@' + DerivationList: 0 + VTableShape: 0 + Size: 0 + - Kind: LF_FIELDLIST + FieldList: + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 0 + Name: eAnyUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 1 + Name: eCoClassUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 2 + Name: eCOMInterfaceUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 6 + Name: eInterfaceUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 8 + Name: eMemberUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 16 + Name: eMethodUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 32 + Name: eInterfaceMethodUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 64 + Name: eInterfaceMemberUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 128 + Name: eCoClassMemberUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 256 + Name: eCoClassMethodUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 768 + Name: eGlobalMethodUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 1024 + Name: eGlobalDataUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 2048 + Name: eClassUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 4096 + Name: eInterfaceParameterUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 12288 + Name: eMethodParameterUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 16384 + Name: eIDLModuleUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 32768 + Name: eAnonymousUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 65536 + Name: eTypedefUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 131072 + Name: eUnionUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 262144 + Name: eEnumUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 524288 + Name: eDefineTagUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 1048576 + Name: eStructUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 2097152 + Name: eLocalUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 4194304 + Name: ePropertyUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 8388608 + Name: eEventUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 16777216 + Name: eTemplateUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 16777216 + Name: eModuleUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 33554432 + Name: eIllegalUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 67108864 + Name: eAsynchronousUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 4161535 + Name: eAnyIDLUsage + - Kind: LF_ENUM + Enum: + NumEnumerators: 30 + Options: [ None, Nested, HasUniqueName ] + FieldList: 4161 + Name: '__vc_attributes::helper_attributes::usageAttribute::usage_e' + UniqueName: '.?AW4usage_e@usageAttribute@helper_attributes@__vc_attributes@@' + UnderlyingType: 116 + - Kind: LF_UDT_SRC_LINE + UdtSourceLine: + UDT: 4162 + SourceFile: 4107 + LineNumber: 51 + - Kind: LF_ARGLIST + ArgList: + ArgIndices: [ 117 ] + - Kind: LF_POINTER + Pointer: + ReferentType: 4160 + Attrs: 66572 + - Kind: LF_MFUNCTION + MemberFunction: + ReturnType: 3 + ClassType: 4160 + ThisType: 4165 + CallConv: NearC + Options: [ None, Constructor ] + ParameterCount: 1 + ArgumentList: 4164 + ThisPointerAdjustment: 0 + - Kind: LF_FIELDLIST + FieldList: + - Kind: LF_NESTTYPE + NestedType: + Type: 4162 + Name: usage_e + - Kind: LF_ONEMETHOD + OneMethod: + Type: 4166 + Attrs: 3 + VFTableOffset: -1 + Name: usageAttribute + - Kind: LF_MEMBER + DataMember: + Attrs: 3 + Type: 117 + FieldOffset: 0 + Name: value + - Kind: LF_STRUCTURE + Class: + MemberCount: 3 + Options: [ None, HasConstructorOrDestructor, ContainsNestedClass, HasUniqueName ] + FieldList: 4167 + Name: '__vc_attributes::helper_attributes::usageAttribute' + UniqueName: '.?AUusageAttribute@helper_attributes@__vc_attributes@@' + DerivationList: 0 + VTableShape: 0 + Size: 4 + - Kind: LF_UDT_SRC_LINE + UdtSourceLine: + UDT: 4168 + SourceFile: 4107 + LineNumber: 49 + - Kind: LF_STRUCTURE + Class: + MemberCount: 0 + Options: [ None, ForwardReference, HasUniqueName ] + FieldList: 0 + Name: '__vc_attributes::helper_attributes::v1_alttypeAttribute' + UniqueName: '.?AUv1_alttypeAttribute@helper_attributes@__vc_attributes@@' + DerivationList: 0 + VTableShape: 0 + Size: 0 + - Kind: LF_FIELDLIST + FieldList: + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 0 + Name: eBoolean + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 1 + Name: eInteger + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 2 + Name: eFloat + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 3 + Name: eDouble + - Kind: LF_ENUM + Enum: + NumEnumerators: 4 + Options: [ None, Nested, HasUniqueName ] + FieldList: 4171 + Name: '__vc_attributes::helper_attributes::v1_alttypeAttribute::type_e' + UniqueName: '.?AW4type_e@v1_alttypeAttribute@helper_attributes@__vc_attributes@@' + UnderlyingType: 116 + - Kind: LF_UDT_SRC_LINE + UdtSourceLine: + UDT: 4172 + SourceFile: 4107 + LineNumber: 38 + - Kind: LF_ARGLIST + ArgList: + ArgIndices: [ 4172 ] + - Kind: LF_POINTER + Pointer: + ReferentType: 4170 + Attrs: 66572 + - Kind: LF_MFUNCTION + MemberFunction: + ReturnType: 3 + ClassType: 4170 + ThisType: 4175 + CallConv: NearC + Options: [ None, Constructor ] + ParameterCount: 1 + ArgumentList: 4174 + ThisPointerAdjustment: 0 + - Kind: LF_FIELDLIST + FieldList: + - Kind: LF_NESTTYPE + NestedType: + Type: 4172 + Name: type_e + - Kind: LF_ONEMETHOD + OneMethod: + Type: 4176 + Attrs: 3 + VFTableOffset: -1 + Name: v1_alttypeAttribute + - Kind: LF_MEMBER + DataMember: + Attrs: 3 + Type: 4172 + FieldOffset: 0 + Name: type + - Kind: LF_STRUCTURE + Class: + MemberCount: 3 + Options: [ None, HasConstructorOrDestructor, ContainsNestedClass, HasUniqueName ] + FieldList: 4177 + Name: '__vc_attributes::helper_attributes::v1_alttypeAttribute' + UniqueName: '.?AUv1_alttypeAttribute@helper_attributes@__vc_attributes@@' + DerivationList: 0 + VTableShape: 0 + Size: 4 + - Kind: LF_UDT_SRC_LINE + UdtSourceLine: + UDT: 4178 + SourceFile: 4107 + LineNumber: 37 + - Kind: LF_STRUCTURE + Class: + MemberCount: 0 + Options: [ None, ForwardReference, HasUniqueName ] + FieldList: 0 + Name: '__vc_attributes::event_sourceAttribute' + UniqueName: '.?AUevent_sourceAttribute@__vc_attributes@@' + DerivationList: 0 + VTableShape: 0 + Size: 0 + - Kind: LF_FIELDLIST + FieldList: + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 0 + Name: native + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 1 + Name: com + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 2 + Name: managed + - Kind: LF_ENUM + Enum: + NumEnumerators: 3 + Options: [ None, Nested, HasUniqueName ] + FieldList: 4181 + Name: '__vc_attributes::event_sourceAttribute::type_e' + UniqueName: '.?AW4type_e@event_sourceAttribute@__vc_attributes@@' + UnderlyingType: 116 + - Kind: LF_UDT_SRC_LINE + UdtSourceLine: + UDT: 4182 + SourceFile: 4107 + LineNumber: 1142 + - Kind: LF_FIELDLIST + FieldList: + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 0 + Name: speed + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 1 + Name: size + - Kind: LF_ENUM + Enum: + NumEnumerators: 2 + Options: [ None, Nested, HasUniqueName ] + FieldList: 4184 + Name: '__vc_attributes::event_sourceAttribute::optimize_e' + UniqueName: '.?AW4optimize_e@event_sourceAttribute@__vc_attributes@@' + UnderlyingType: 116 + - Kind: LF_UDT_SRC_LINE + UdtSourceLine: + UDT: 4185 + SourceFile: 4107 + LineNumber: 1145 + - Kind: LF_ARGLIST + ArgList: + ArgIndices: [ 4182 ] + - Kind: LF_POINTER + Pointer: + ReferentType: 4180 + Attrs: 66572 + - Kind: LF_MFUNCTION + MemberFunction: + ReturnType: 3 + ClassType: 4180 + ThisType: 4188 + CallConv: NearC + Options: [ None, Constructor ] + ParameterCount: 1 + ArgumentList: 4187 + ThisPointerAdjustment: 0 + - Kind: LF_MFUNCTION + MemberFunction: + ReturnType: 3 + ClassType: 4180 + ThisType: 4188 + CallConv: NearC + Options: [ None, Constructor ] + ParameterCount: 0 + ArgumentList: 4116 + ThisPointerAdjustment: 0 + - Kind: LF_METHODLIST + MethodOverloadList: + Methods: + - Type: 4189 + Attrs: 3 + VFTableOffset: -1 + Name: '' + - Type: 4190 + Attrs: 3 + VFTableOffset: -1 + Name: '' + - Kind: LF_FIELDLIST + FieldList: + - Kind: LF_NESTTYPE + NestedType: + Type: 4182 + Name: type_e + - Kind: LF_NESTTYPE + NestedType: + Type: 4185 + Name: optimize_e + - Kind: LF_METHOD + OverloadedMethod: + NumOverloads: 2 + MethodList: 4191 + Name: event_sourceAttribute + - Kind: LF_MEMBER + DataMember: + Attrs: 3 + Type: 4182 + FieldOffset: 0 + Name: type + - Kind: LF_MEMBER + DataMember: + Attrs: 3 + Type: 4185 + FieldOffset: 4 + Name: optimize + - Kind: LF_MEMBER + DataMember: + Attrs: 3 + Type: 48 + FieldOffset: 8 + Name: decorate + - Kind: LF_STRUCTURE + Class: + MemberCount: 7 + Options: [ None, HasConstructorOrDestructor, ContainsNestedClass, HasUniqueName ] + FieldList: 4192 + Name: '__vc_attributes::event_sourceAttribute' + UniqueName: '.?AUevent_sourceAttribute@__vc_attributes@@' + DerivationList: 0 + VTableShape: 0 + Size: 12 + - Kind: LF_UDT_SRC_LINE + UdtSourceLine: + UDT: 4193 + SourceFile: 4107 + LineNumber: 1141 + - Kind: LF_STRING_ID + StringId: + Id: 0 + String: 'D:\src\llvmbuild\cl\Debug\x64' + - Kind: LF_STRING_ID + StringId: + Id: 0 + String: 'C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.11.25503\bin\HostX64\x64\cl.exe' + - Kind: LF_STRING_ID + StringId: + Id: 0 + String: '-Z7 -O1 -c -MT -I"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.11.25503\ATLMFC\include" -I"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.11.25503\include" -I"C:\Program' + - Kind: LF_STRING_ID + StringId: + Id: 0 + String: ' Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\ucrt" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\shared" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\um"' + - Kind: LF_SUBSTR_LIST + StringList: + StringIndices: [ 4197, 4198 ] + - Kind: LF_STRING_ID + StringId: + Id: 4199 + String: ' -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\winrt" -TP -X' + - Kind: LF_STRING_ID + StringId: + Id: 0 + String: a.cpp + - Kind: LF_STRING_ID + StringId: + Id: 0 + String: 'D:\src\llvmbuild\cl\Debug\x64\vc140.pdb' + - Kind: LF_BUILDINFO + BuildInfo: + ArgIndices: [ 4195, 4196, 4201, 4202, 4200 ] + - 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_LNK_COMDAT, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ] + Alignment: 4 + SectionData: 4883EC288B0D0000000085C97405E8000000004883C428C3 + Relocations: + - VirtualAddress: 6 + SymbolName: '?x@@3HA' + Type: IMAGE_REL_AMD64_REL32 + - VirtualAddress: 15 + SymbolName: '?b@@YAXH@Z' + 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 + SectionData: 04000000F1000000B9000000270047110000000000000000000000001800000004000000130000000310000000000000000080610011003E117400000001005F5F666F726D616C000E004111120000000000000000000A0006004411300000000A005A1101000000071000000E0053117400000025000000000678000E004111120000000A000000000009001C00121028000000000000000000000000000000000000000000004A01001500111130000000740000004F015F5F666F726D616C0002004F11000000F20000003800000000000000000000001800000000000000040000002C000000000000000500008004000000060000800E000000070000801300000008000080 + Subsections: + - !Symbols + Records: + - Kind: S_GPROC32_ID + ProcSym: + CodeSize: 24 + DbgStart: 4 + DbgEnd: 19 + FunctionType: 4099 + Flags: [ HasOptimizedDebugInfo ] + DisplayName: a + - Kind: S_LOCAL + LocalSym: + Type: 116 + Flags: [ IsParameter ] + VarName: __formal + - Kind: S_DEFRANGE_REGISTER + DefRangeRegisterSym: + - Kind: S_DEFRANGE_FRAMEPOINTER_REL_FULL_SCOPE + DefRangeFramePointerRelFullScopeSym: + - Kind: S_CALLEES + CallerSym: + FuncID: [ 4103 ] + - Kind: S_FILESTATIC + FileStaticSym: + Index: 116 + ModFilenameOffset: 37 + Flags: [ IsEnregisteredGlobal, IsEnregisteredStatic ] + Name: x + - Kind: S_DEFRANGE_REGISTER + DefRangeRegisterSym: + - Kind: S_FRAMEPROC + FrameProcSym: + TotalFrameBytes: 40 + PaddingFrameBytes: 0 + OffsetToPadding: 0 + BytesOfCalleeSavedRegisters: 0 + OffsetOfExceptionHandler: 0 + SectionIdOfExceptionHandler: 0 + Flags: [ AsynchronousExceptionHandling, Inlined ] + - Kind: S_REGREL32 + RegRelativeSym: + Offset: 48 + Type: 116 + Register: RSP + VarName: __formal + - Kind: S_PROC_ID_END + ScopeEndSym: + - !Lines + CodeSize: 24 + Flags: [ ] + RelocOffset: 0 + RelocSegment: 0 + Blocks: + - FileName: 'd:\src\llvmbuild\cl\debug\x64\a.cpp' + Lines: + - Offset: 0 + LineStart: 5 + IsStatement: true + EndDelta: 0 + - Offset: 4 + LineStart: 6 + IsStatement: true + EndDelta: 0 + - Offset: 14 + LineStart: 7 + IsStatement: true + EndDelta: 0 + - Offset: 19 + LineStart: 8 + IsStatement: true + EndDelta: 0 + Columns: + Relocations: + - VirtualAddress: 44 + SymbolName: '?a@@YAXH@Z' + Type: IMAGE_REL_AMD64_SECREL + - VirtualAddress: 48 + SymbolName: '?a@@YAXH@Z' + Type: IMAGE_REL_AMD64_SECTION + - VirtualAddress: 80 + SymbolName: '?a@@YAXH@Z' + Type: IMAGE_REL_AMD64_SECREL + - VirtualAddress: 84 + SymbolName: '?a@@YAXH@Z' + Type: IMAGE_REL_AMD64_SECTION + - VirtualAddress: 132 + SymbolName: '?a@@YAXH@Z' + Type: IMAGE_REL_AMD64_SECREL + - VirtualAddress: 136 + SymbolName: '?a@@YAXH@Z' + Type: IMAGE_REL_AMD64_SECTION + - VirtualAddress: 208 + SymbolName: '?a@@YAXH@Z' + Type: IMAGE_REL_AMD64_SECREL + - VirtualAddress: 212 + SymbolName: '?a@@YAXH@Z' + Type: IMAGE_REL_AMD64_SECTION + - Name: '.text$mn' + Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_LNK_COMDAT, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ] + Alignment: 4 + SectionData: 4883EC288B050000000085C0740D8BC8E8000000008B05000000004883C428C3 + Relocations: + - VirtualAddress: 6 + SymbolName: '?x@@3HA' + Type: IMAGE_REL_AMD64_REL32 + - VirtualAddress: 17 + SymbolName: '?b@@YAXH@Z' + Type: IMAGE_REL_AMD64_REL32 + - VirtualAddress: 23 + SymbolName: '?x@@3HA' + 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 + SectionData: 04000000F1000000390100002A00471100000000000000000000000020000000040000001B00000006100000000000000000806D61696E000D003E1174000000010061726763000E0041111200000000000000000010000E004111120001001B0000000000050006004411300000000D003E1102100000010061726776000E0041114B01000000000000000015000E0041114B0101001B00000000000500060044113800000015004D110000000000000000031000000B0406020C0D0A0A005A11010000000710000002004E110E00531174000000250000000006780012004111110000000A000000000016000B0006001C00121028000000000000000000000000000000000000000000004201000A00681101000000031000001100111130000000740000004F0161726763001100111138000000021000004F01617267760002004F11000000F200000030000000000000000000000020000000000000000300000024000000000000000A000080040000000B0000801B0000000D000080 + Subsections: + - !Symbols + Records: + - Kind: S_GPROC32_ID + ProcSym: + CodeSize: 32 + DbgStart: 4 + DbgEnd: 27 + FunctionType: 4102 + Flags: [ HasOptimizedDebugInfo ] + DisplayName: main + - Kind: S_LOCAL + LocalSym: + Type: 116 + Flags: [ IsParameter ] + VarName: argc + - Kind: S_DEFRANGE_REGISTER + DefRangeRegisterSym: + - Kind: S_DEFRANGE_REGISTER + DefRangeRegisterSym: + - Kind: S_DEFRANGE_FRAMEPOINTER_REL_FULL_SCOPE + DefRangeFramePointerRelFullScopeSym: + - Kind: S_LOCAL + LocalSym: + Type: 4098 + Flags: [ IsParameter ] + VarName: argv + - Kind: S_DEFRANGE_REGISTER + DefRangeRegisterSym: + - Kind: S_DEFRANGE_REGISTER + DefRangeRegisterSym: + - Kind: S_DEFRANGE_FRAMEPOINTER_REL_FULL_SCOPE + DefRangeFramePointerRelFullScopeSym: + - Kind: S_INLINESITE + InlineSiteSym: + Inlinee: 4099 + - Kind: S_CALLEES + CallerSym: + FuncID: [ 4103 ] + - Kind: S_INLINESITE_END + ScopeEndSym: + - Kind: S_FILESTATIC + FileStaticSym: + Index: 116 + ModFilenameOffset: 37 + Flags: [ IsEnregisteredGlobal, IsEnregisteredStatic ] + Name: x + - Kind: S_DEFRANGE_REGISTER + DefRangeRegisterSym: + - Kind: S_FRAMEPROC + FrameProcSym: + TotalFrameBytes: 40 + PaddingFrameBytes: 0 + OffsetToPadding: 0 + BytesOfCalleeSavedRegisters: 0 + OffsetOfExceptionHandler: 0 + SectionIdOfExceptionHandler: 0 + Flags: [ AsynchronousExceptionHandling ] + - Kind: S_INLINEES + CallerSym: + FuncID: [ 4099 ] + - Kind: S_REGREL32 + RegRelativeSym: + Offset: 48 + Type: 116 + Register: RSP + VarName: argc + - Kind: S_REGREL32 + RegRelativeSym: + Offset: 56 + Type: 4098 + Register: RSP + VarName: argv + - Kind: S_PROC_ID_END + ScopeEndSym: + - !Lines + CodeSize: 32 + Flags: [ ] + RelocOffset: 0 + RelocSegment: 0 + Blocks: + - FileName: 'd:\src\llvmbuild\cl\debug\x64\a.cpp' + Lines: + - Offset: 0 + LineStart: 10 + IsStatement: true + EndDelta: 0 + - Offset: 4 + LineStart: 11 + IsStatement: true + EndDelta: 0 + - Offset: 27 + LineStart: 13 + IsStatement: true + EndDelta: 0 + Columns: + Relocations: + - VirtualAddress: 44 + SymbolName: main + Type: IMAGE_REL_AMD64_SECREL + - VirtualAddress: 48 + SymbolName: main + Type: IMAGE_REL_AMD64_SECTION + - VirtualAddress: 79 + SymbolName: main + Type: IMAGE_REL_AMD64_SECREL + - VirtualAddress: 83 + SymbolName: main + Type: IMAGE_REL_AMD64_SECTION + - VirtualAddress: 95 + SymbolName: main + Type: IMAGE_REL_AMD64_SECREL + - VirtualAddress: 99 + SymbolName: main + Type: IMAGE_REL_AMD64_SECTION + - VirtualAddress: 134 + SymbolName: main + Type: IMAGE_REL_AMD64_SECREL + - VirtualAddress: 138 + SymbolName: main + Type: IMAGE_REL_AMD64_SECTION + - VirtualAddress: 150 + SymbolName: main + Type: IMAGE_REL_AMD64_SECREL + - VirtualAddress: 154 + SymbolName: main + Type: IMAGE_REL_AMD64_SECTION + - VirtualAddress: 229 + SymbolName: main + Type: IMAGE_REL_AMD64_SECREL + - VirtualAddress: 233 + SymbolName: main + Type: IMAGE_REL_AMD64_SECTION + - VirtualAddress: 336 + SymbolName: main + Type: IMAGE_REL_AMD64_SECREL + - VirtualAddress: 340 + SymbolName: main + Type: IMAGE_REL_AMD64_SECTION + - Name: .xdata + Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_LNK_COMDAT, IMAGE_SCN_MEM_READ ] + Alignment: 4 + SectionData: '0104010004420000' + - Name: .pdata + Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_LNK_COMDAT, IMAGE_SCN_MEM_READ ] + Alignment: 4 + SectionData: '000000001800000000000000' + Relocations: + - VirtualAddress: 0 + SymbolName: '$LN5' + Type: IMAGE_REL_AMD64_ADDR32NB + - VirtualAddress: 4 + SymbolName: '$LN5' + Type: IMAGE_REL_AMD64_ADDR32NB + - VirtualAddress: 8 + SymbolName: '$unwind$?a@@YAXH@Z' + Type: IMAGE_REL_AMD64_ADDR32NB + - Name: .xdata + Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_LNK_COMDAT, IMAGE_SCN_MEM_READ ] + Alignment: 4 + SectionData: '0104010004420000' + - Name: .pdata + Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_LNK_COMDAT, IMAGE_SCN_MEM_READ ] + Alignment: 4 + SectionData: '000000002000000000000000' + Relocations: + - VirtualAddress: 0 + SymbolName: '$LN7' + Type: IMAGE_REL_AMD64_ADDR32NB + - VirtualAddress: 4 + SymbolName: '$LN7' + Type: IMAGE_REL_AMD64_ADDR32NB + - VirtualAddress: 8 + SymbolName: '$unwind$main' + Type: IMAGE_REL_AMD64_ADDR32NB +symbols: + - Name: '@comp.id' + Value: 17130443 + SectionNumber: -1 + SimpleType: IMAGE_SYM_TYPE_NULL + ComplexType: IMAGE_SYM_DTYPE_NULL + StorageClass: IMAGE_SYM_CLASS_STATIC + - Name: '@feat.00' + Value: 2147484048 + SectionNumber: -1 + SimpleType: IMAGE_SYM_TYPE_NULL + ComplexType: IMAGE_SYM_DTYPE_NULL + StorageClass: IMAGE_SYM_CLASS_STATIC + - 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: 1120 + NumberOfRelocations: 2 + 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: 6700 + 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: '?x@@3HA' + Value: 0 + SectionNumber: 4 + SimpleType: IMAGE_SYM_TYPE_NULL + ComplexType: IMAGE_SYM_DTYPE_NULL + StorageClass: IMAGE_SYM_CLASS_STATIC + - Name: '.text$mn' + Value: 0 + SectionNumber: 5 + SimpleType: IMAGE_SYM_TYPE_NULL + ComplexType: IMAGE_SYM_DTYPE_NULL + StorageClass: IMAGE_SYM_CLASS_STATIC + SectionDefinition: + Length: 24 + NumberOfRelocations: 2 + NumberOfLinenumbers: 0 + CheckSum: 211387054 + Number: 0 + Selection: IMAGE_COMDAT_SELECT_NODUPLICATES + - Name: '.debug$S' + Value: 0 + SectionNumber: 6 + SimpleType: IMAGE_SYM_TYPE_NULL + ComplexType: IMAGE_SYM_DTYPE_NULL + StorageClass: IMAGE_SYM_CLASS_STATIC + SectionDefinition: + Length: 264 + NumberOfRelocations: 8 + NumberOfLinenumbers: 0 + CheckSum: 0 + Number: 5 + Selection: IMAGE_COMDAT_SELECT_ASSOCIATIVE + - Name: '.text$mn' + Value: 0 + SectionNumber: 7 + SimpleType: IMAGE_SYM_TYPE_NULL + ComplexType: IMAGE_SYM_DTYPE_NULL + StorageClass: IMAGE_SYM_CLASS_STATIC + SectionDefinition: + Length: 32 + NumberOfRelocations: 3 + NumberOfLinenumbers: 0 + CheckSum: 3834856183 + Number: 0 + Selection: IMAGE_COMDAT_SELECT_NODUPLICATES + - Name: '.debug$S' + Value: 0 + SectionNumber: 8 + SimpleType: IMAGE_SYM_TYPE_NULL + ComplexType: IMAGE_SYM_DTYPE_NULL + StorageClass: IMAGE_SYM_CLASS_STATIC + SectionDefinition: + Length: 384 + NumberOfRelocations: 14 + NumberOfLinenumbers: 0 + CheckSum: 0 + Number: 7 + Selection: IMAGE_COMDAT_SELECT_ASSOCIATIVE + - Name: '?b@@YAXH@Z' + Value: 0 + SectionNumber: 0 + SimpleType: IMAGE_SYM_TYPE_NULL + ComplexType: IMAGE_SYM_DTYPE_FUNCTION + StorageClass: IMAGE_SYM_CLASS_EXTERNAL + - Name: '?a@@YAXH@Z' + Value: 0 + SectionNumber: 5 + SimpleType: IMAGE_SYM_TYPE_NULL + ComplexType: IMAGE_SYM_DTYPE_FUNCTION + StorageClass: IMAGE_SYM_CLASS_EXTERNAL + - Name: main + Value: 0 + SectionNumber: 7 + SimpleType: IMAGE_SYM_TYPE_NULL + ComplexType: IMAGE_SYM_DTYPE_FUNCTION + StorageClass: IMAGE_SYM_CLASS_EXTERNAL + - Name: '$LN5' + Value: 0 + SectionNumber: 5 + SimpleType: IMAGE_SYM_TYPE_NULL + ComplexType: IMAGE_SYM_DTYPE_NULL + StorageClass: IMAGE_SYM_CLASS_LABEL + - Name: '$LN7' + Value: 0 + SectionNumber: 7 + SimpleType: IMAGE_SYM_TYPE_NULL + ComplexType: IMAGE_SYM_DTYPE_NULL + StorageClass: IMAGE_SYM_CLASS_LABEL + - Name: .xdata + Value: 0 + SectionNumber: 9 + 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: 5 + Selection: IMAGE_COMDAT_SELECT_ASSOCIATIVE + - Name: '$unwind$?a@@YAXH@Z' + Value: 0 + SectionNumber: 9 + SimpleType: IMAGE_SYM_TYPE_NULL + ComplexType: IMAGE_SYM_DTYPE_NULL + StorageClass: IMAGE_SYM_CLASS_STATIC + - Name: .pdata + Value: 0 + SectionNumber: 10 + 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: 5 + Selection: IMAGE_COMDAT_SELECT_ASSOCIATIVE + - Name: '$pdata$?a@@YAXH@Z' + Value: 0 + SectionNumber: 10 + SimpleType: IMAGE_SYM_TYPE_NULL + ComplexType: IMAGE_SYM_DTYPE_NULL + StorageClass: IMAGE_SYM_CLASS_STATIC + - Name: .xdata + Value: 0 + SectionNumber: 11 + 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: 7 + Selection: IMAGE_COMDAT_SELECT_ASSOCIATIVE + - Name: '$unwind$main' + Value: 0 + SectionNumber: 11 + SimpleType: IMAGE_SYM_TYPE_NULL + ComplexType: IMAGE_SYM_DTYPE_NULL + StorageClass: IMAGE_SYM_CLASS_STATIC + - Name: .pdata + Value: 0 + SectionNumber: 12 + SimpleType: IMAGE_SYM_TYPE_NULL + ComplexType: IMAGE_SYM_DTYPE_NULL + StorageClass: IMAGE_SYM_CLASS_STATIC + SectionDefinition: + Length: 12 + NumberOfRelocations: 3 + NumberOfLinenumbers: 0 + CheckSum: 4185285206 + Number: 7 + Selection: IMAGE_COMDAT_SELECT_ASSOCIATIVE + - Name: '$pdata$main' + Value: 0 + SectionNumber: 12 + SimpleType: IMAGE_SYM_TYPE_NULL + ComplexType: IMAGE_SYM_DTYPE_NULL + StorageClass: IMAGE_SYM_CLASS_STATIC +... Index: lld/test/COFF/Inputs/pdb-file-statics-b.yaml =================================================================== --- /dev/null +++ lld/test/COFF/Inputs/pdb-file-statics-b.yaml @@ -0,0 +1,1540 @@ +--- !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 + SectionData: 04000000F1000000680000002A00011100000000443A5C7372635C6C6C766D6275696C645C636C5C44656275675C7836345C622E6F626A003A003C1101600000D00013000B00CB63000013000B00CB6300004D6963726F736F667420285229204F7074696D697A696E6720436F6D70696C657200F1000000470300000E000C117400000000000000000079002D0008115D1000005F5F76635F617474726962757465733A3A6576656E745F736F757263654174747269627574650039000811551000005F5F76635F617474726962757465733A3A6576656E745F736F757263654174747269627574653A3A6F7074696D697A655F650035000811521000005F5F76635F617474726962757465733A3A6576656E745F736F757263654174747269627574653A3A747970655F65003E0008114E1000005F5F76635F617474726962757465733A3A68656C7065725F617474726962757465733A3A76315F616C74747970654174747269627574650046000811481000005F5F76635F617474726962757465733A3A68656C7065725F617474726962757465733A3A76315F616C74747970654174747269627574653A3A747970655F650039000811441000005F5F76635F617474726962757465733A3A68656C7065725F617474726962757465733A3A757361676541747472696275746500420008113E1000005F5F76635F617474726962757465733A3A68656C7065725F617474726962757465733A3A75736167654174747269627574653A3A75736167655F65002A0008113A1000005F5F76635F617474726962757465733A3A746872656164696E674174747269627574650037000811321000005F5F76635F617474726962757465733A3A746872656164696E674174747269627574653A3A746872656164696E675F65002D0008112E1000005F5F76635F617474726962757465733A3A616767726567617461626C654174747269627574650035000811261000005F5F76635F617474726962757465733A3A616767726567617461626C654174747269627574653A3A747970655F65002F000811221000005F5F76635F617474726962757465733A3A6576656E745F72656365697665724174747269627574650037000811181000005F5F76635F617474726962757465733A3A6576656E745F72656365697665724174747269627574653A3A747970655F650027000811141000005F5F76635F617474726962757465733A3A6D6F64756C65417474726962757465002F000811061000005F5F76635F617474726962757465733A3A6D6F64756C654174747269627574653A3A747970655F650000F4000000180000000100000010012B9F08E2C7D63D3033E1997500CE3C530000F30000004900000000643A5C7372635C6C6C766D6275696C645C636C5C64656275675C7836345C622E63707000443A5C7372635C6C6C766D6275696C645C636C5C44656275675C7836345C622E6F626A00000000F10000000800000006004C1167100000 + Subsections: + - !Symbols + Records: + - Kind: S_OBJNAME + ObjNameSym: + Signature: 0 + ObjectName: 'D:\src\llvmbuild\cl\Debug\x64\b.obj' + - Kind: S_COMPILE3 + Compile3Sym: + Flags: [ SecurityChecks, HotPatch ] + Machine: X64 + FrontendMajor: 19 + FrontendMinor: 11 + FrontendBuild: 25547 + FrontendQFE: 0 + BackendMajor: 19 + BackendMinor: 11 + BackendBuild: 25547 + BackendQFE: 0 + Version: 'Microsoft (R) Optimizing Compiler' + - !Symbols + Records: + - Kind: S_LDATA32 + DataSym: + Type: 116 + DisplayName: y + - Kind: S_UDT + UDTSym: + Type: 4189 + UDTName: '__vc_attributes::event_sourceAttribute' + - Kind: S_UDT + UDTSym: + Type: 4181 + UDTName: '__vc_attributes::event_sourceAttribute::optimize_e' + - Kind: S_UDT + UDTSym: + Type: 4178 + UDTName: '__vc_attributes::event_sourceAttribute::type_e' + - Kind: S_UDT + UDTSym: + Type: 4174 + UDTName: '__vc_attributes::helper_attributes::v1_alttypeAttribute' + - Kind: S_UDT + UDTSym: + Type: 4168 + UDTName: '__vc_attributes::helper_attributes::v1_alttypeAttribute::type_e' + - Kind: S_UDT + UDTSym: + Type: 4164 + UDTName: '__vc_attributes::helper_attributes::usageAttribute' + - Kind: S_UDT + UDTSym: + Type: 4158 + UDTName: '__vc_attributes::helper_attributes::usageAttribute::usage_e' + - Kind: S_UDT + UDTSym: + Type: 4154 + UDTName: '__vc_attributes::threadingAttribute' + - Kind: S_UDT + UDTSym: + Type: 4146 + UDTName: '__vc_attributes::threadingAttribute::threading_e' + - Kind: S_UDT + UDTSym: + Type: 4142 + UDTName: '__vc_attributes::aggregatableAttribute' + - Kind: S_UDT + UDTSym: + Type: 4134 + UDTName: '__vc_attributes::aggregatableAttribute::type_e' + - Kind: S_UDT + UDTSym: + Type: 4130 + UDTName: '__vc_attributes::event_receiverAttribute' + - Kind: S_UDT + UDTSym: + Type: 4120 + UDTName: '__vc_attributes::event_receiverAttribute::type_e' + - Kind: S_UDT + UDTSym: + Type: 4116 + UDTName: '__vc_attributes::moduleAttribute' + - Kind: S_UDT + UDTSym: + Type: 4102 + UDTName: '__vc_attributes::moduleAttribute::type_e' + - !FileChecksums + Checksums: + - FileName: 'd:\src\llvmbuild\cl\debug\x64\b.cpp' + Kind: MD5 + Checksum: 2B9F08E2C7D63D3033E1997500CE3C53 + - !StringTable + Strings: + - 'd:\src\llvmbuild\cl\debug\x64\b.cpp' + - 'D:\src\llvmbuild\cl\Debug\x64\b.obj' + - !Symbols + Records: + - Kind: S_BUILDINFO + BuildInfoSym: + BuildId: 4199 + Relocations: + - VirtualAddress: 132 + SymbolName: '?y@@3HA' + Type: IMAGE_REL_AMD64_SECREL + - VirtualAddress: 136 + SymbolName: '?y@@3HA' + Type: IMAGE_REL_AMD64_SECTION + - Name: '.debug$T' + Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_DISCARDABLE, IMAGE_SCN_MEM_READ ] + Alignment: 1 + SectionData: 040000000A00011201000000740000000E0008100300000000000100001000000E00011600000000011000006200F2F10E00011600000000011000006100F2F15E0005150000800200000000000000000000000000005F5F76635F617474726962757465733A3A6D6F64756C65417474726962757465002E3F41556D6F64756C65417474726962757465405F5F76635F61747472696275746573404000F3F2F15A000312021503000100646C6C00F2F102150300020065786500F2F10215030003007365727669636500F2F1021503000400756E73706563696669656400F2F102150300020045584500F2F10215030003005345525649434500F2F1660007150600080274000000051000005F5F76635F617474726962757465733A3A6D6F64756C654174747269627574653A3A747970655F65002E3F415734747970655F65406D6F64756C65417474726962757465405F5F76635F61747472696275746573404000F15200051600000000643A5C7372635C6C6C766D6275696C645C636C5C64656275675C7836345C707265646566696E656420632B2B20617474726962757465732028636F6D70696C657220696E7465726E616C29000E0006160610000007100000E20100000A000110700000000100F2F10A000210091000000C000100420001120F000000061000000A1000000A1000000A10000074000000300000000A100000740000000A1000000A1000007400000030000000300000000A1000000A1000000A000210041000000C0401001A00091003000000041000000C10000000020F000B100000000000000A00011201000000061000001A00091003000000041000000C100000000201000E1000000000000006000112000000001A00091003000000041000000C1000000002000010100000000000001A000612030000000D100000030000000F1000000300000011100000620103121015000006100000747970655F6500F10F150300121000006D6F64756C65417474726962757465000D1503000610000000007479706500F10D1503000A10000008006E616D6500F10D1503000A100000100076657273696F6E00F2F10D1503000A10000018007575696400F10D1503007400000020006C63696400F10D150300300000002400636F6E74726F6C00F2F10D1503000A100000280068656C70737472696E6700F3F2F10D15030074000000300068656C70737472696E67636F6E74657874000D1503000A100000380068656C70737472696E67646C6C000D1503000A100000400068656C7066696C6500F10D15030074000000480068656C70636F6E7465787400F2F10D150300300000004C0068696464656E00F3F2F10D150300300000004D007265737472696374656400F3F2F10D1503000A1000005000637573746F6D00F3F2F10D1503000A10000058007265736F757263655F6E616D65005E0005151300120213100000000000000000000060005F5F76635F617474726962757465733A3A6D6F64756C65417474726962757465002E3F41556D6F64756C65417474726962757465405F5F76635F61747472696275746573404000F3F2F10E0006161410000007100000E10100006E0005150000800200000000000000000000000000005F5F76635F617474726962757465733A3A6576656E745F7265636569766572417474726962757465002E3F41556576656E745F7265636569766572417474726962757465405F5F76635F61747472696275746573404000F3F2F12E0003120215030000006E617469766500F3F2F1021503000100636F6D00F2F10215030002006D616E6167656400F2F1760007150300080274000000171000005F5F76635F617474726962757465733A3A6576656E745F72656365697665724174747269627574653A3A747970655F65002E3F415734747970655F65406576656E745F7265636569766572417474726962757465405F5F76635F61747472696275746573404000F10E0006161810000007100000880000000E0001120200000018100000300000000A000210161000000C0401001A00091003000000161000001B100000000202001A100000000000000A00011201000000181000001A00091003000000161000001B100000000201001D100000000000001A00091003000000161000001B1000000002000010100000000000001A000612030000001C100000030000001E100000030000001F1000005E0003121015000018100000747970655F6500F10F150300201000006576656E745F7265636569766572417474726962757465000D1503001810000000007479706500F10D1503003000000004006C61796F75745F646570656E64656E7400F16E0005150600120221100000000000000000000008005F5F76635F617474726962757465733A3A6576656E745F7265636569766572417474726962757465002E3F41556576656E745F7265636569766572417474726962757465405F5F76635F61747472696275746573404000F3F2F10E0006162210000007100000870000006A0005150000800200000000000000000000000000005F5F76635F617474726962757465733A3A616767726567617461626C65417474726962757465002E3F4155616767726567617461626C65417474726962757465405F5F76635F61747472696275746573404000F3F2F12E0003120215030000006E6576657200021503000100616C6C6F77656400F2F1021503000200616C7761797300F3F2F1720007150300080274000000251000005F5F76635F617474726962757465733A3A616767726567617461626C654174747269627574653A3A747970655F65002E3F415734747970655F6540616767726567617461626C65417474726962757465405F5F76635F61747472696275746573404000F10E0006162610000007100000210200000A00011201000000261000000A000210241000000C0401001A0009100300000024100000291000000002010028100000000000001A00091003000000241000002910000000020000101000000000000012000612030000002A100000030000002B100000420003121015000026100000747970655F6500F10F1502002C100000616767726567617461626C6541747472696275746500F2F10D1503002610000000007479706500F16A000515040012022D100000000000000000000004005F5F76635F617474726962757465733A3A616767726567617461626C65417474726962757465002E3F4155616767726567617461626C65417474726962757465405F5F76635F61747472696275746573404000F3F2F10E0006162E1000000710000020020000620005150000800200000000000000000000000000005F5F76635F617474726962757465733A3A746872656164696E67417474726962757465002E3F4155746872656164696E67417474726962757465405F5F76635F61747472696275746573404000F14A00031202150300010061706172746D656E740002150300020073696E676C6500F3F2F10215030003006672656500F10215030004006E65757472616C00F2F1021503000500626F746800F1760007150500080274000000311000005F5F76635F617474726962757465733A3A746872656164696E674174747269627574653A3A746872656164696E675F65002E3F415734746872656164696E675F6540746872656164696E67417474726962757465405F5F76635F61747472696275746573404000F10E0006163210000007100000A70100000A00011201000000321000000A000210301000000C0401001A0009100300000030100000351000000002010034100000000000001A0009100300000030100000351000000002000010100000000000001200061203000000361000000300000037100000420003121015000032100000746872656164696E675F65000F15020038100000746872656164696E6741747472696275746500F10D15030032100000000076616C756500620005150400120239100000000000000000000004005F5F76635F617474726962757465733A3A746872656164696E67417474726962757465002E3F4155746872656164696E67417474726962757465405F5F76635F61747472696275746573404000F10E0006163A10000007100000A60100007E0005150000800200000000000000000000000000005F5F76635F617474726962757465733A3A68656C7065725F617474726962757465733A3A7573616765417474726962757465002E3F415575736167654174747269627574654068656C7065725F61747472696275746573405F5F76635F61747472696275746573404000F202031202150300000065416E7955736167650002150300010065436F436C61737355736167650002150300020065434F4D496E74657266616365557361676500F3F2F102150300060065496E74657266616365557361676500F2F1021503000800654D656D626572557361676500F1021503001000654D6574686F64557361676500F102150300200065496E746572666163654D6574686F6455736167650002150300400065496E746572666163654D656D62657255736167650002150300800065436F436C6173734D656D626572557361676500F2F102150300000165436F436C6173734D6574686F64557361676500F2F102150300000365476C6F62616C4D6574686F64557361676500F3F2F102150300000465476C6F62616C44617461557361676500F102150300000865436C617373557361676500F2F102150300001065496E74657266616365506172616D65746572557361676500F1021503000030654D6574686F64506172616D657465725573616765000215030000406549444C4D6F64756C65557361676500F2F1021503000280008065416E6F6E796D6F75735573616765000215030004800000010065547970656465665573616765000215030004800000020065556E696F6E557361676500F2F10215030004800000040065456E756D557361676500F3F2F10215030004800000080065446566696E65546167557361676500F2F10215030004800000100065537472756374557361676500F102150300048000002000654C6F63616C557361676500F2F1021503000480000040006550726F7065727479557361676500F3F2F102150300048000008000654576656E74557361676500F2F1021503000480000000016554656D706C617465557361676500F3F2F102150300048000000001654D6F64756C65557361676500F10215030004800000000265496C6C6567616C55736167650002150300048000000004654173796E6368726F6E6F7573557361676500F3F2F1021503000480FF7F3F0065416E7949444C557361676500F18A0007151E000802740000003D1000005F5F76635F617474726962757465733A3A68656C7065725F617474726962757465733A3A75736167654174747269627574653A3A75736167655F65002E3F41573475736167655F654075736167654174747269627574654068656C7065725F61747472696275746573405F5F76635F617474726962757465734040000E0006163E10000007100000330000000A00011201000000750000000A0002103C1000000C0401001A000910030000003C100000411000000002010040100000000000003A000312101500003E10000075736167655F65001115030042100000757361676541747472696275746500F10D15030075000000000076616C7565007E0005150300120243100000000000000000000004005F5F76635F617474726962757465733A3A68656C7065725F617474726962757465733A3A7573616765417474726962757465002E3F415575736167654174747269627574654068656C7065725F61747472696275746573405F5F76635F617474726962757465734040000E0006164410000007100000310000008A0005150000800200000000000000000000000000005F5F76635F617474726962757465733A3A68656C7065725F617474726962757465733A3A76315F616C7474797065417474726962757465002E3F415576315F616C74747970654174747269627574654068656C7065725F61747472696275746573405F5F76635F61747472696275746573404000F2F14200031202150300000065426F6F6C65616E00F102150300010065496E746567657200F102150300020065466C6F617400F3F2F102150300030065446F75626C6500F2F1920007150400080274000000471000005F5F76635F617474726962757465733A3A68656C7065725F617474726962757465733A3A76315F616C74747970654174747269627574653A3A747970655F65002E3F415734747970655F654076315F616C74747970654174747269627574654068656C7065725F61747472696275746573405F5F76635F617474726962757465734040000E0006164810000007100000260000000A00011201000000481000000A000210461000000C0401001A00091003000000461000004B100000000201004A100000000000003E0003121015000048100000747970655F6500F1111503004C10000076315F616C7474797065417474726962757465000D1503004810000000007479706500F18A000515030012024D100000000000000000000004005F5F76635F617474726962757465733A3A68656C7065725F617474726962757465733A3A76315F616C7474797065417474726962757465002E3F415576315F616C74747970654174747269627574654068656C7065725F61747472696275746573405F5F76635F61747472696275746573404000F2F10E0006164E10000007100000250000006A0005150000800200000000000000000000000000005F5F76635F617474726962757465733A3A6576656E745F736F75726365417474726962757465002E3F41556576656E745F736F75726365417474726962757465405F5F76635F61747472696275746573404000F3F2F12E0003120215030000006E617469766500F3F2F1021503000100636F6D00F2F10215030002006D616E6167656400F2F1720007150300080274000000511000005F5F76635F617474726962757465733A3A6576656E745F736F757263654174747269627574653A3A747970655F65002E3F415734747970655F65406576656E745F736F75726365417474726962757465405F5F76635F61747472696275746573404000F10E0006165210000007100000760400001A00031202150300000073706565640002150300010073697A6500F17A0007150200080274000000541000005F5F76635F617474726962757465733A3A6576656E745F736F757263654174747269627574653A3A6F7074696D697A655F65002E3F4157346F7074696D697A655F65406576656E745F736F75726365417474726962757465405F5F76635F61747472696275746573404000F10E0006165510000007100000790400000A00011201000000521000000A000210501000000C0401001A0009100300000050100000581000000002010057100000000000001A000910030000005010000058100000000200001010000000000000120006120300000059100000030000005A1000007E0003121015000052100000747970655F6500F110150000551000006F7074696D697A655F6500F10F1502005B1000006576656E745F736F7572636541747472696275746500F2F10D1503005210000000007479706500F10D1503005510000004006F7074696D697A6500F10D1503003000000008006465636F7261746500F16A000515070012025C10000000000000000000000C005F5F76635F617474726962757465733A3A6576656E745F736F75726365417474726962757465002E3F41556576656E745F736F75726365417474726962757465405F5F76635F61747472696275746573404000F3F2F10E0006165D10000007100000750400002600051600000000443A5C7372635C6C6C766D6275696C645C636C5C44656275675C78363400F2F17A00051600000000433A5C50726F6772616D2046696C65732028783836295C4D6963726F736F66742056697375616C2053747564696F5C323031375C50726F66657373696F6E616C5C56435C546F6F6C735C4D5356435C31342E31312E32353530335C62696E5C486F73745836345C7836345C636C2E65786500F2F1FA000516000000002D5A37202D4F31202D63202D4D54202D4922433A5C50726F6772616D2046696C65732028783836295C4D6963726F736F66742056697375616C2053747564696F5C323031375C50726F66657373696F6E616C5C56435C546F6F6C735C4D5356435C31342E31312E32353530335C41544C4D46435C696E636C75646522202D4922433A5C50726F6772616D2046696C65732028783836295C4D6963726F736F66742056697375616C2053747564696F5C323031375C50726F66657373696F6E616C5C56435C546F6F6C735C4D5356435C31342E31312E32353530335C696E636C75646522202D4922433A5C50726F6772616D00F2F10A010516000000002046696C65732028783836295C57696E646F7773204B6974735C4E4554465853444B5C342E362E315C696E636C7564655C756D22202D4922433A5C50726F6772616D2046696C65732028783836295C57696E646F7773204B6974735C31305C696E636C7564655C31302E302E31363239392E305C7563727422202D4922433A5C50726F6772616D2046696C65732028783836295C57696E646F7773204B6974735C31305C696E636C7564655C31302E302E31363239392E305C73686172656422202D4922433A5C50726F6772616D2046696C65732028783836295C57696E646F7773204B6974735C31305C696E636C7564655C31302E302E31363239392E305C756D22000E0004160200000061100000621000005600051663100000202D4922433A5C50726F6772616D2046696C65732028783836295C57696E646F7773204B6974735C31305C696E636C7564655C31302E302E31363239392E305C77696E727422202D5450202D5800F2F10E00051600000000622E63707000F2F12E00051600000000443A5C7372635C6C6C766D6275696C645C636C5C44656275675C7836345C76633134302E706462001A00031605005F10000060100000651000006610000064100000F2F1 + Types: + - Kind: LF_ARGLIST + ArgList: + ArgIndices: [ 116 ] + - Kind: LF_PROCEDURE + Procedure: + ReturnType: 3 + CallConv: NearC + Options: [ None ] + ParameterCount: 1 + ArgumentList: 4096 + - Kind: LF_FUNC_ID + FuncId: + ParentScope: 0 + FunctionType: 4097 + Name: b + - Kind: LF_FUNC_ID + FuncId: + ParentScope: 0 + FunctionType: 4097 + Name: a + - Kind: LF_STRUCTURE + Class: + MemberCount: 0 + Options: [ None, ForwardReference, HasUniqueName ] + FieldList: 0 + Name: '__vc_attributes::moduleAttribute' + UniqueName: '.?AUmoduleAttribute@__vc_attributes@@' + DerivationList: 0 + VTableShape: 0 + Size: 0 + - Kind: LF_FIELDLIST + FieldList: + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 1 + Name: dll + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 2 + Name: exe + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 3 + Name: service + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 4 + Name: unspecified + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 2 + Name: EXE + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 3 + Name: SERVICE + - Kind: LF_ENUM + Enum: + NumEnumerators: 6 + Options: [ None, Nested, HasUniqueName ] + FieldList: 4101 + Name: '__vc_attributes::moduleAttribute::type_e' + UniqueName: '.?AW4type_e@moduleAttribute@__vc_attributes@@' + UnderlyingType: 116 + - Kind: LF_STRING_ID + StringId: + Id: 0 + String: 'd:\src\llvmbuild\cl\debug\x64\predefined c++ attributes (compiler internal)' + - Kind: LF_UDT_SRC_LINE + UdtSourceLine: + UDT: 4102 + SourceFile: 4103 + LineNumber: 482 + - Kind: LF_MODIFIER + Modifier: + ModifiedType: 112 + Modifiers: [ None, Const ] + - Kind: LF_POINTER + Pointer: + ReferentType: 4105 + Attrs: 65548 + - Kind: LF_ARGLIST + ArgList: + ArgIndices: [ 4102, 4106, 4106, 4106, 116, 48, 4106, 116, + 4106, 4106, 116, 48, 48, 4106, 4106 ] + - Kind: LF_POINTER + Pointer: + ReferentType: 4100 + Attrs: 66572 + - Kind: LF_MFUNCTION + MemberFunction: + ReturnType: 3 + ClassType: 4100 + ThisType: 4108 + CallConv: NearC + Options: [ None, Constructor ] + ParameterCount: 15 + ArgumentList: 4107 + ThisPointerAdjustment: 0 + - Kind: LF_ARGLIST + ArgList: + ArgIndices: [ 4102 ] + - Kind: LF_MFUNCTION + MemberFunction: + ReturnType: 3 + ClassType: 4100 + ThisType: 4108 + CallConv: NearC + Options: [ None, Constructor ] + ParameterCount: 1 + ArgumentList: 4110 + ThisPointerAdjustment: 0 + - Kind: LF_ARGLIST + ArgList: + ArgIndices: [ ] + - Kind: LF_MFUNCTION + MemberFunction: + ReturnType: 3 + ClassType: 4100 + ThisType: 4108 + CallConv: NearC + Options: [ None, Constructor ] + ParameterCount: 0 + ArgumentList: 4112 + ThisPointerAdjustment: 0 + - Kind: LF_METHODLIST + MethodOverloadList: + Methods: + - Type: 4109 + Attrs: 3 + VFTableOffset: -1 + Name: '' + - Type: 4111 + Attrs: 3 + VFTableOffset: -1 + Name: '' + - Type: 4113 + Attrs: 3 + VFTableOffset: -1 + Name: '' + - Kind: LF_FIELDLIST + FieldList: + - Kind: LF_NESTTYPE + NestedType: + Type: 4102 + Name: type_e + - Kind: LF_METHOD + OverloadedMethod: + NumOverloads: 3 + MethodList: 4114 + Name: moduleAttribute + - Kind: LF_MEMBER + DataMember: + Attrs: 3 + Type: 4102 + FieldOffset: 0 + Name: type + - Kind: LF_MEMBER + DataMember: + Attrs: 3 + Type: 4106 + FieldOffset: 8 + Name: name + - Kind: LF_MEMBER + DataMember: + Attrs: 3 + Type: 4106 + FieldOffset: 16 + Name: version + - Kind: LF_MEMBER + DataMember: + Attrs: 3 + Type: 4106 + FieldOffset: 24 + Name: uuid + - Kind: LF_MEMBER + DataMember: + Attrs: 3 + Type: 116 + FieldOffset: 32 + Name: lcid + - Kind: LF_MEMBER + DataMember: + Attrs: 3 + Type: 48 + FieldOffset: 36 + Name: control + - Kind: LF_MEMBER + DataMember: + Attrs: 3 + Type: 4106 + FieldOffset: 40 + Name: helpstring + - Kind: LF_MEMBER + DataMember: + Attrs: 3 + Type: 116 + FieldOffset: 48 + Name: helpstringcontext + - Kind: LF_MEMBER + DataMember: + Attrs: 3 + Type: 4106 + FieldOffset: 56 + Name: helpstringdll + - Kind: LF_MEMBER + DataMember: + Attrs: 3 + Type: 4106 + FieldOffset: 64 + Name: helpfile + - Kind: LF_MEMBER + DataMember: + Attrs: 3 + Type: 116 + FieldOffset: 72 + Name: helpcontext + - Kind: LF_MEMBER + DataMember: + Attrs: 3 + Type: 48 + FieldOffset: 76 + Name: hidden + - Kind: LF_MEMBER + DataMember: + Attrs: 3 + Type: 48 + FieldOffset: 77 + Name: restricted + - Kind: LF_MEMBER + DataMember: + Attrs: 3 + Type: 4106 + FieldOffset: 80 + Name: custom + - Kind: LF_MEMBER + DataMember: + Attrs: 3 + Type: 4106 + FieldOffset: 88 + Name: resource_name + - Kind: LF_STRUCTURE + Class: + MemberCount: 19 + Options: [ None, HasConstructorOrDestructor, ContainsNestedClass, HasUniqueName ] + FieldList: 4115 + Name: '__vc_attributes::moduleAttribute' + UniqueName: '.?AUmoduleAttribute@__vc_attributes@@' + DerivationList: 0 + VTableShape: 0 + Size: 96 + - Kind: LF_UDT_SRC_LINE + UdtSourceLine: + UDT: 4116 + SourceFile: 4103 + LineNumber: 481 + - Kind: LF_STRUCTURE + Class: + MemberCount: 0 + Options: [ None, ForwardReference, HasUniqueName ] + FieldList: 0 + Name: '__vc_attributes::event_receiverAttribute' + UniqueName: '.?AUevent_receiverAttribute@__vc_attributes@@' + DerivationList: 0 + VTableShape: 0 + Size: 0 + - Kind: LF_FIELDLIST + FieldList: + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 0 + Name: native + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 1 + Name: com + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 2 + Name: managed + - Kind: LF_ENUM + Enum: + NumEnumerators: 3 + Options: [ None, Nested, HasUniqueName ] + FieldList: 4119 + Name: '__vc_attributes::event_receiverAttribute::type_e' + UniqueName: '.?AW4type_e@event_receiverAttribute@__vc_attributes@@' + UnderlyingType: 116 + - Kind: LF_UDT_SRC_LINE + UdtSourceLine: + UDT: 4120 + SourceFile: 4103 + LineNumber: 136 + - Kind: LF_ARGLIST + ArgList: + ArgIndices: [ 4120, 48 ] + - Kind: LF_POINTER + Pointer: + ReferentType: 4118 + Attrs: 66572 + - Kind: LF_MFUNCTION + MemberFunction: + ReturnType: 3 + ClassType: 4118 + ThisType: 4123 + CallConv: NearC + Options: [ None, Constructor ] + ParameterCount: 2 + ArgumentList: 4122 + ThisPointerAdjustment: 0 + - Kind: LF_ARGLIST + ArgList: + ArgIndices: [ 4120 ] + - Kind: LF_MFUNCTION + MemberFunction: + ReturnType: 3 + ClassType: 4118 + ThisType: 4123 + CallConv: NearC + Options: [ None, Constructor ] + ParameterCount: 1 + ArgumentList: 4125 + ThisPointerAdjustment: 0 + - Kind: LF_MFUNCTION + MemberFunction: + ReturnType: 3 + ClassType: 4118 + ThisType: 4123 + CallConv: NearC + Options: [ None, Constructor ] + ParameterCount: 0 + ArgumentList: 4112 + ThisPointerAdjustment: 0 + - Kind: LF_METHODLIST + MethodOverloadList: + Methods: + - Type: 4124 + Attrs: 3 + VFTableOffset: -1 + Name: '' + - Type: 4126 + Attrs: 3 + VFTableOffset: -1 + Name: '' + - Type: 4127 + Attrs: 3 + VFTableOffset: -1 + Name: '' + - Kind: LF_FIELDLIST + FieldList: + - Kind: LF_NESTTYPE + NestedType: + Type: 4120 + Name: type_e + - Kind: LF_METHOD + OverloadedMethod: + NumOverloads: 3 + MethodList: 4128 + Name: event_receiverAttribute + - Kind: LF_MEMBER + DataMember: + Attrs: 3 + Type: 4120 + FieldOffset: 0 + Name: type + - Kind: LF_MEMBER + DataMember: + Attrs: 3 + Type: 48 + FieldOffset: 4 + Name: layout_dependent + - Kind: LF_STRUCTURE + Class: + MemberCount: 6 + Options: [ None, HasConstructorOrDestructor, ContainsNestedClass, HasUniqueName ] + FieldList: 4129 + Name: '__vc_attributes::event_receiverAttribute' + UniqueName: '.?AUevent_receiverAttribute@__vc_attributes@@' + DerivationList: 0 + VTableShape: 0 + Size: 8 + - Kind: LF_UDT_SRC_LINE + UdtSourceLine: + UDT: 4130 + SourceFile: 4103 + LineNumber: 135 + - Kind: LF_STRUCTURE + Class: + MemberCount: 0 + Options: [ None, ForwardReference, HasUniqueName ] + FieldList: 0 + Name: '__vc_attributes::aggregatableAttribute' + UniqueName: '.?AUaggregatableAttribute@__vc_attributes@@' + DerivationList: 0 + VTableShape: 0 + Size: 0 + - Kind: LF_FIELDLIST + FieldList: + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 0 + Name: never + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 1 + Name: allowed + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 2 + Name: always + - Kind: LF_ENUM + Enum: + NumEnumerators: 3 + Options: [ None, Nested, HasUniqueName ] + FieldList: 4133 + Name: '__vc_attributes::aggregatableAttribute::type_e' + UniqueName: '.?AW4type_e@aggregatableAttribute@__vc_attributes@@' + UnderlyingType: 116 + - Kind: LF_UDT_SRC_LINE + UdtSourceLine: + UDT: 4134 + SourceFile: 4103 + LineNumber: 545 + - Kind: LF_ARGLIST + ArgList: + ArgIndices: [ 4134 ] + - Kind: LF_POINTER + Pointer: + ReferentType: 4132 + Attrs: 66572 + - Kind: LF_MFUNCTION + MemberFunction: + ReturnType: 3 + ClassType: 4132 + ThisType: 4137 + CallConv: NearC + Options: [ None, Constructor ] + ParameterCount: 1 + ArgumentList: 4136 + ThisPointerAdjustment: 0 + - Kind: LF_MFUNCTION + MemberFunction: + ReturnType: 3 + ClassType: 4132 + ThisType: 4137 + CallConv: NearC + Options: [ None, Constructor ] + ParameterCount: 0 + ArgumentList: 4112 + ThisPointerAdjustment: 0 + - Kind: LF_METHODLIST + MethodOverloadList: + Methods: + - Type: 4138 + Attrs: 3 + VFTableOffset: -1 + Name: '' + - Type: 4139 + Attrs: 3 + VFTableOffset: -1 + Name: '' + - Kind: LF_FIELDLIST + FieldList: + - Kind: LF_NESTTYPE + NestedType: + Type: 4134 + Name: type_e + - Kind: LF_METHOD + OverloadedMethod: + NumOverloads: 2 + MethodList: 4140 + Name: aggregatableAttribute + - Kind: LF_MEMBER + DataMember: + Attrs: 3 + Type: 4134 + FieldOffset: 0 + Name: type + - Kind: LF_STRUCTURE + Class: + MemberCount: 4 + Options: [ None, HasConstructorOrDestructor, ContainsNestedClass, HasUniqueName ] + FieldList: 4141 + Name: '__vc_attributes::aggregatableAttribute' + UniqueName: '.?AUaggregatableAttribute@__vc_attributes@@' + DerivationList: 0 + VTableShape: 0 + Size: 4 + - Kind: LF_UDT_SRC_LINE + UdtSourceLine: + UDT: 4142 + SourceFile: 4103 + LineNumber: 544 + - Kind: LF_STRUCTURE + Class: + MemberCount: 0 + Options: [ None, ForwardReference, HasUniqueName ] + FieldList: 0 + Name: '__vc_attributes::threadingAttribute' + UniqueName: '.?AUthreadingAttribute@__vc_attributes@@' + DerivationList: 0 + VTableShape: 0 + Size: 0 + - Kind: LF_FIELDLIST + FieldList: + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 1 + Name: apartment + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 2 + Name: single + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 3 + Name: free + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 4 + Name: neutral + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 5 + Name: both + - Kind: LF_ENUM + Enum: + NumEnumerators: 5 + Options: [ None, Nested, HasUniqueName ] + FieldList: 4145 + Name: '__vc_attributes::threadingAttribute::threading_e' + UniqueName: '.?AW4threading_e@threadingAttribute@__vc_attributes@@' + UnderlyingType: 116 + - Kind: LF_UDT_SRC_LINE + UdtSourceLine: + UDT: 4146 + SourceFile: 4103 + LineNumber: 423 + - Kind: LF_ARGLIST + ArgList: + ArgIndices: [ 4146 ] + - Kind: LF_POINTER + Pointer: + ReferentType: 4144 + Attrs: 66572 + - Kind: LF_MFUNCTION + MemberFunction: + ReturnType: 3 + ClassType: 4144 + ThisType: 4149 + CallConv: NearC + Options: [ None, Constructor ] + ParameterCount: 1 + ArgumentList: 4148 + ThisPointerAdjustment: 0 + - Kind: LF_MFUNCTION + MemberFunction: + ReturnType: 3 + ClassType: 4144 + ThisType: 4149 + CallConv: NearC + Options: [ None, Constructor ] + ParameterCount: 0 + ArgumentList: 4112 + ThisPointerAdjustment: 0 + - Kind: LF_METHODLIST + MethodOverloadList: + Methods: + - Type: 4150 + Attrs: 3 + VFTableOffset: -1 + Name: '' + - Type: 4151 + Attrs: 3 + VFTableOffset: -1 + Name: '' + - Kind: LF_FIELDLIST + FieldList: + - Kind: LF_NESTTYPE + NestedType: + Type: 4146 + Name: threading_e + - Kind: LF_METHOD + OverloadedMethod: + NumOverloads: 2 + MethodList: 4152 + Name: threadingAttribute + - Kind: LF_MEMBER + DataMember: + Attrs: 3 + Type: 4146 + FieldOffset: 0 + Name: value + - Kind: LF_STRUCTURE + Class: + MemberCount: 4 + Options: [ None, HasConstructorOrDestructor, ContainsNestedClass, HasUniqueName ] + FieldList: 4153 + Name: '__vc_attributes::threadingAttribute' + UniqueName: '.?AUthreadingAttribute@__vc_attributes@@' + DerivationList: 0 + VTableShape: 0 + Size: 4 + - Kind: LF_UDT_SRC_LINE + UdtSourceLine: + UDT: 4154 + SourceFile: 4103 + LineNumber: 422 + - Kind: LF_STRUCTURE + Class: + MemberCount: 0 + Options: [ None, ForwardReference, HasUniqueName ] + FieldList: 0 + Name: '__vc_attributes::helper_attributes::usageAttribute' + UniqueName: '.?AUusageAttribute@helper_attributes@__vc_attributes@@' + DerivationList: 0 + VTableShape: 0 + Size: 0 + - Kind: LF_FIELDLIST + FieldList: + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 0 + Name: eAnyUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 1 + Name: eCoClassUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 2 + Name: eCOMInterfaceUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 6 + Name: eInterfaceUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 8 + Name: eMemberUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 16 + Name: eMethodUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 32 + Name: eInterfaceMethodUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 64 + Name: eInterfaceMemberUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 128 + Name: eCoClassMemberUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 256 + Name: eCoClassMethodUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 768 + Name: eGlobalMethodUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 1024 + Name: eGlobalDataUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 2048 + Name: eClassUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 4096 + Name: eInterfaceParameterUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 12288 + Name: eMethodParameterUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 16384 + Name: eIDLModuleUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 32768 + Name: eAnonymousUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 65536 + Name: eTypedefUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 131072 + Name: eUnionUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 262144 + Name: eEnumUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 524288 + Name: eDefineTagUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 1048576 + Name: eStructUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 2097152 + Name: eLocalUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 4194304 + Name: ePropertyUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 8388608 + Name: eEventUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 16777216 + Name: eTemplateUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 16777216 + Name: eModuleUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 33554432 + Name: eIllegalUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 67108864 + Name: eAsynchronousUsage + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 4161535 + Name: eAnyIDLUsage + - Kind: LF_ENUM + Enum: + NumEnumerators: 30 + Options: [ None, Nested, HasUniqueName ] + FieldList: 4157 + Name: '__vc_attributes::helper_attributes::usageAttribute::usage_e' + UniqueName: '.?AW4usage_e@usageAttribute@helper_attributes@__vc_attributes@@' + UnderlyingType: 116 + - Kind: LF_UDT_SRC_LINE + UdtSourceLine: + UDT: 4158 + SourceFile: 4103 + LineNumber: 51 + - Kind: LF_ARGLIST + ArgList: + ArgIndices: [ 117 ] + - Kind: LF_POINTER + Pointer: + ReferentType: 4156 + Attrs: 66572 + - Kind: LF_MFUNCTION + MemberFunction: + ReturnType: 3 + ClassType: 4156 + ThisType: 4161 + CallConv: NearC + Options: [ None, Constructor ] + ParameterCount: 1 + ArgumentList: 4160 + ThisPointerAdjustment: 0 + - Kind: LF_FIELDLIST + FieldList: + - Kind: LF_NESTTYPE + NestedType: + Type: 4158 + Name: usage_e + - Kind: LF_ONEMETHOD + OneMethod: + Type: 4162 + Attrs: 3 + VFTableOffset: -1 + Name: usageAttribute + - Kind: LF_MEMBER + DataMember: + Attrs: 3 + Type: 117 + FieldOffset: 0 + Name: value + - Kind: LF_STRUCTURE + Class: + MemberCount: 3 + Options: [ None, HasConstructorOrDestructor, ContainsNestedClass, HasUniqueName ] + FieldList: 4163 + Name: '__vc_attributes::helper_attributes::usageAttribute' + UniqueName: '.?AUusageAttribute@helper_attributes@__vc_attributes@@' + DerivationList: 0 + VTableShape: 0 + Size: 4 + - Kind: LF_UDT_SRC_LINE + UdtSourceLine: + UDT: 4164 + SourceFile: 4103 + LineNumber: 49 + - Kind: LF_STRUCTURE + Class: + MemberCount: 0 + Options: [ None, ForwardReference, HasUniqueName ] + FieldList: 0 + Name: '__vc_attributes::helper_attributes::v1_alttypeAttribute' + UniqueName: '.?AUv1_alttypeAttribute@helper_attributes@__vc_attributes@@' + DerivationList: 0 + VTableShape: 0 + Size: 0 + - Kind: LF_FIELDLIST + FieldList: + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 0 + Name: eBoolean + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 1 + Name: eInteger + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 2 + Name: eFloat + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 3 + Name: eDouble + - Kind: LF_ENUM + Enum: + NumEnumerators: 4 + Options: [ None, Nested, HasUniqueName ] + FieldList: 4167 + Name: '__vc_attributes::helper_attributes::v1_alttypeAttribute::type_e' + UniqueName: '.?AW4type_e@v1_alttypeAttribute@helper_attributes@__vc_attributes@@' + UnderlyingType: 116 + - Kind: LF_UDT_SRC_LINE + UdtSourceLine: + UDT: 4168 + SourceFile: 4103 + LineNumber: 38 + - Kind: LF_ARGLIST + ArgList: + ArgIndices: [ 4168 ] + - Kind: LF_POINTER + Pointer: + ReferentType: 4166 + Attrs: 66572 + - Kind: LF_MFUNCTION + MemberFunction: + ReturnType: 3 + ClassType: 4166 + ThisType: 4171 + CallConv: NearC + Options: [ None, Constructor ] + ParameterCount: 1 + ArgumentList: 4170 + ThisPointerAdjustment: 0 + - Kind: LF_FIELDLIST + FieldList: + - Kind: LF_NESTTYPE + NestedType: + Type: 4168 + Name: type_e + - Kind: LF_ONEMETHOD + OneMethod: + Type: 4172 + Attrs: 3 + VFTableOffset: -1 + Name: v1_alttypeAttribute + - Kind: LF_MEMBER + DataMember: + Attrs: 3 + Type: 4168 + FieldOffset: 0 + Name: type + - Kind: LF_STRUCTURE + Class: + MemberCount: 3 + Options: [ None, HasConstructorOrDestructor, ContainsNestedClass, HasUniqueName ] + FieldList: 4173 + Name: '__vc_attributes::helper_attributes::v1_alttypeAttribute' + UniqueName: '.?AUv1_alttypeAttribute@helper_attributes@__vc_attributes@@' + DerivationList: 0 + VTableShape: 0 + Size: 4 + - Kind: LF_UDT_SRC_LINE + UdtSourceLine: + UDT: 4174 + SourceFile: 4103 + LineNumber: 37 + - Kind: LF_STRUCTURE + Class: + MemberCount: 0 + Options: [ None, ForwardReference, HasUniqueName ] + FieldList: 0 + Name: '__vc_attributes::event_sourceAttribute' + UniqueName: '.?AUevent_sourceAttribute@__vc_attributes@@' + DerivationList: 0 + VTableShape: 0 + Size: 0 + - Kind: LF_FIELDLIST + FieldList: + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 0 + Name: native + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 1 + Name: com + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 2 + Name: managed + - Kind: LF_ENUM + Enum: + NumEnumerators: 3 + Options: [ None, Nested, HasUniqueName ] + FieldList: 4177 + Name: '__vc_attributes::event_sourceAttribute::type_e' + UniqueName: '.?AW4type_e@event_sourceAttribute@__vc_attributes@@' + UnderlyingType: 116 + - Kind: LF_UDT_SRC_LINE + UdtSourceLine: + UDT: 4178 + SourceFile: 4103 + LineNumber: 1142 + - Kind: LF_FIELDLIST + FieldList: + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 0 + Name: speed + - Kind: LF_ENUMERATE + Enumerator: + Attrs: 3 + Value: 1 + Name: size + - Kind: LF_ENUM + Enum: + NumEnumerators: 2 + Options: [ None, Nested, HasUniqueName ] + FieldList: 4180 + Name: '__vc_attributes::event_sourceAttribute::optimize_e' + UniqueName: '.?AW4optimize_e@event_sourceAttribute@__vc_attributes@@' + UnderlyingType: 116 + - Kind: LF_UDT_SRC_LINE + UdtSourceLine: + UDT: 4181 + SourceFile: 4103 + LineNumber: 1145 + - Kind: LF_ARGLIST + ArgList: + ArgIndices: [ 4178 ] + - Kind: LF_POINTER + Pointer: + ReferentType: 4176 + Attrs: 66572 + - Kind: LF_MFUNCTION + MemberFunction: + ReturnType: 3 + ClassType: 4176 + ThisType: 4184 + CallConv: NearC + Options: [ None, Constructor ] + ParameterCount: 1 + ArgumentList: 4183 + ThisPointerAdjustment: 0 + - Kind: LF_MFUNCTION + MemberFunction: + ReturnType: 3 + ClassType: 4176 + ThisType: 4184 + CallConv: NearC + Options: [ None, Constructor ] + ParameterCount: 0 + ArgumentList: 4112 + ThisPointerAdjustment: 0 + - Kind: LF_METHODLIST + MethodOverloadList: + Methods: + - Type: 4185 + Attrs: 3 + VFTableOffset: -1 + Name: '' + - Type: 4186 + Attrs: 3 + VFTableOffset: -1 + Name: '' + - Kind: LF_FIELDLIST + FieldList: + - Kind: LF_NESTTYPE + NestedType: + Type: 4178 + Name: type_e + - Kind: LF_NESTTYPE + NestedType: + Type: 4181 + Name: optimize_e + - Kind: LF_METHOD + OverloadedMethod: + NumOverloads: 2 + MethodList: 4187 + Name: event_sourceAttribute + - Kind: LF_MEMBER + DataMember: + Attrs: 3 + Type: 4178 + FieldOffset: 0 + Name: type + - Kind: LF_MEMBER + DataMember: + Attrs: 3 + Type: 4181 + FieldOffset: 4 + Name: optimize + - Kind: LF_MEMBER + DataMember: + Attrs: 3 + Type: 48 + FieldOffset: 8 + Name: decorate + - Kind: LF_STRUCTURE + Class: + MemberCount: 7 + Options: [ None, HasConstructorOrDestructor, ContainsNestedClass, HasUniqueName ] + FieldList: 4188 + Name: '__vc_attributes::event_sourceAttribute' + UniqueName: '.?AUevent_sourceAttribute@__vc_attributes@@' + DerivationList: 0 + VTableShape: 0 + Size: 12 + - Kind: LF_UDT_SRC_LINE + UdtSourceLine: + UDT: 4189 + SourceFile: 4103 + LineNumber: 1141 + - Kind: LF_STRING_ID + StringId: + Id: 0 + String: 'D:\src\llvmbuild\cl\Debug\x64' + - Kind: LF_STRING_ID + StringId: + Id: 0 + String: 'C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.11.25503\bin\HostX64\x64\cl.exe' + - Kind: LF_STRING_ID + StringId: + Id: 0 + String: '-Z7 -O1 -c -MT -I"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.11.25503\ATLMFC\include" -I"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.11.25503\include" -I"C:\Program' + - Kind: LF_STRING_ID + StringId: + Id: 0 + String: ' Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\ucrt" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\shared" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\um"' + - Kind: LF_SUBSTR_LIST + StringList: + StringIndices: [ 4193, 4194 ] + - Kind: LF_STRING_ID + StringId: + Id: 4195 + String: ' -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\winrt" -TP -X' + - Kind: LF_STRING_ID + StringId: + Id: 0 + String: b.cpp + - Kind: LF_STRING_ID + StringId: + Id: 0 + String: 'D:\src\llvmbuild\cl\Debug\x64\vc140.pdb' + - Kind: LF_BUILDINFO + BuildInfo: + ArgIndices: [ 4191, 4192, 4197, 4198, 4196 ] + - 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_LNK_COMDAT, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ] + Alignment: 4 + SectionData: 4883EC288B0D0000000085C97405E8000000004883C428C3 + Relocations: + - VirtualAddress: 6 + SymbolName: '?y@@3HA' + Type: IMAGE_REL_AMD64_REL32 + - VirtualAddress: 15 + SymbolName: '?a@@YAXH@Z' + 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 + SectionData: 04000000F1000000B9000000270047110000000000000000000000001800000004000000130000000210000000000000000080620011003E117400000001005F5F666F726D616C000E004111120000000000000000000A0006004411300000000A005A1101000000031000000E0053117400000025000000000679000E004111120000000A000000000009001C00121028000000000000000000000000000000000000000000004201001500111130000000740000004F015F5F666F726D616C0002004F11000000F20000003800000000000000000000001800000000000000040000002C000000000000000500008004000000060000800E000000070000801300000008000080 + Subsections: + - !Symbols + Records: + - Kind: S_GPROC32_ID + ProcSym: + CodeSize: 24 + DbgStart: 4 + DbgEnd: 19 + FunctionType: 4098 + Flags: [ HasOptimizedDebugInfo ] + DisplayName: b + - Kind: S_LOCAL + LocalSym: + Type: 116 + Flags: [ IsParameter ] + VarName: __formal + - Kind: S_DEFRANGE_REGISTER + DefRangeRegisterSym: + - Kind: S_DEFRANGE_FRAMEPOINTER_REL_FULL_SCOPE + DefRangeFramePointerRelFullScopeSym: + - Kind: S_CALLEES + CallerSym: + FuncID: [ 4099 ] + - Kind: S_FILESTATIC + FileStaticSym: + Index: 116 + ModFilenameOffset: 37 + Flags: [ IsEnregisteredGlobal, IsEnregisteredStatic ] + Name: y + - Kind: S_DEFRANGE_REGISTER + DefRangeRegisterSym: + - Kind: S_FRAMEPROC + FrameProcSym: + TotalFrameBytes: 40 + PaddingFrameBytes: 0 + OffsetToPadding: 0 + BytesOfCalleeSavedRegisters: 0 + OffsetOfExceptionHandler: 0 + SectionIdOfExceptionHandler: 0 + Flags: [ AsynchronousExceptionHandling ] + - Kind: S_REGREL32 + RegRelativeSym: + Offset: 48 + Type: 116 + Register: RSP + VarName: __formal + - Kind: S_PROC_ID_END + ScopeEndSym: + - !Lines + CodeSize: 24 + Flags: [ ] + RelocOffset: 0 + RelocSegment: 0 + Blocks: + - FileName: 'd:\src\llvmbuild\cl\debug\x64\b.cpp' + Lines: + - Offset: 0 + LineStart: 5 + IsStatement: true + EndDelta: 0 + - Offset: 4 + LineStart: 6 + IsStatement: true + EndDelta: 0 + - Offset: 14 + LineStart: 7 + IsStatement: true + EndDelta: 0 + - Offset: 19 + LineStart: 8 + IsStatement: true + EndDelta: 0 + Columns: + Relocations: + - VirtualAddress: 44 + SymbolName: '?b@@YAXH@Z' + Type: IMAGE_REL_AMD64_SECREL + - VirtualAddress: 48 + SymbolName: '?b@@YAXH@Z' + Type: IMAGE_REL_AMD64_SECTION + - VirtualAddress: 80 + SymbolName: '?b@@YAXH@Z' + Type: IMAGE_REL_AMD64_SECREL + - VirtualAddress: 84 + SymbolName: '?b@@YAXH@Z' + Type: IMAGE_REL_AMD64_SECTION + - VirtualAddress: 132 + SymbolName: '?b@@YAXH@Z' + Type: IMAGE_REL_AMD64_SECREL + - VirtualAddress: 136 + SymbolName: '?b@@YAXH@Z' + Type: IMAGE_REL_AMD64_SECTION + - VirtualAddress: 208 + SymbolName: '?b@@YAXH@Z' + Type: IMAGE_REL_AMD64_SECREL + - VirtualAddress: 212 + SymbolName: '?b@@YAXH@Z' + Type: IMAGE_REL_AMD64_SECTION + - Name: .xdata + Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_LNK_COMDAT, IMAGE_SCN_MEM_READ ] + Alignment: 4 + SectionData: '0104010004420000' + - Name: .pdata + Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_LNK_COMDAT, IMAGE_SCN_MEM_READ ] + Alignment: 4 + SectionData: '000000001800000000000000' + Relocations: + - VirtualAddress: 0 + SymbolName: '$LN5' + Type: IMAGE_REL_AMD64_ADDR32NB + - VirtualAddress: 4 + SymbolName: '$LN5' + Type: IMAGE_REL_AMD64_ADDR32NB + - VirtualAddress: 8 + SymbolName: '$unwind$?b@@YAXH@Z' + Type: IMAGE_REL_AMD64_ADDR32NB +symbols: + - Name: '@comp.id' + Value: 17130443 + SectionNumber: -1 + SimpleType: IMAGE_SYM_TYPE_NULL + ComplexType: IMAGE_SYM_DTYPE_NULL + StorageClass: IMAGE_SYM_CLASS_STATIC + - Name: '@feat.00' + Value: 2147484048 + SectionNumber: -1 + SimpleType: IMAGE_SYM_TYPE_NULL + ComplexType: IMAGE_SYM_DTYPE_NULL + StorageClass: IMAGE_SYM_CLASS_STATIC + - 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: 1096 + NumberOfRelocations: 2 + 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: 6636 + 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: '?y@@3HA' + Value: 0 + SectionNumber: 4 + SimpleType: IMAGE_SYM_TYPE_NULL + ComplexType: IMAGE_SYM_DTYPE_NULL + StorageClass: IMAGE_SYM_CLASS_STATIC + - Name: '.text$mn' + Value: 0 + SectionNumber: 5 + SimpleType: IMAGE_SYM_TYPE_NULL + ComplexType: IMAGE_SYM_DTYPE_NULL + StorageClass: IMAGE_SYM_CLASS_STATIC + SectionDefinition: + Length: 24 + NumberOfRelocations: 2 + NumberOfLinenumbers: 0 + CheckSum: 211387054 + Number: 0 + Selection: IMAGE_COMDAT_SELECT_NODUPLICATES + - Name: '.debug$S' + Value: 0 + SectionNumber: 6 + SimpleType: IMAGE_SYM_TYPE_NULL + ComplexType: IMAGE_SYM_DTYPE_NULL + StorageClass: IMAGE_SYM_CLASS_STATIC + SectionDefinition: + Length: 264 + NumberOfRelocations: 8 + NumberOfLinenumbers: 0 + CheckSum: 0 + Number: 5 + Selection: IMAGE_COMDAT_SELECT_ASSOCIATIVE + - Name: '?a@@YAXH@Z' + Value: 0 + SectionNumber: 0 + SimpleType: IMAGE_SYM_TYPE_NULL + ComplexType: IMAGE_SYM_DTYPE_FUNCTION + StorageClass: IMAGE_SYM_CLASS_EXTERNAL + - Name: '?b@@YAXH@Z' + Value: 0 + SectionNumber: 5 + SimpleType: IMAGE_SYM_TYPE_NULL + ComplexType: IMAGE_SYM_DTYPE_FUNCTION + StorageClass: IMAGE_SYM_CLASS_EXTERNAL + - Name: '$LN5' + Value: 0 + SectionNumber: 5 + 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: 5 + Selection: IMAGE_COMDAT_SELECT_ASSOCIATIVE + - Name: '$unwind$?b@@YAXH@Z' + 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: 5 + Selection: IMAGE_COMDAT_SELECT_ASSOCIATIVE + - Name: '$pdata$?b@@YAXH@Z' + Value: 0 + SectionNumber: 8 + SimpleType: IMAGE_SYM_TYPE_NULL + ComplexType: IMAGE_SYM_DTYPE_NULL + StorageClass: IMAGE_SYM_CLASS_STATIC +... Index: lld/test/COFF/pdb-file-static.test =================================================================== --- /dev/null +++ lld/test/COFF/pdb-file-static.test @@ -0,0 +1,51 @@ +# RUN: yaml2obj %S/Inputs/pdb-file-statics-a.yaml > %t.a.obj +# RUN: yaml2obj %S/Inputs/pdb-file-statics-b.yaml > %t.b.obj +# RUN: lld-link %t.a.obj %t.b.obj /nodefaultlib /entry:main /debug /pdb:%t.pdb +# RUN: llvm-pdbutil dump -symbols %t.pdb | FileCheck %s + +# S_FILESTATIC records are unique in that they refer to the string table, but +# they do *not* go through the file checksums table. They refer directly to +# the string table. This makes for special handling in the linker, so it +# deserves a custom test. + +# Clang doesn't currently generate these records, but MSVC does, so we have to +# be able to correctly link them. These records are only generated when +# optimizations are turned on. + +# // a.cpp +# // cl.exe /Z7 /O1 /c a.cpp +# static int x = 0; +# +# void b(int); +# +# void a(int) { +# if (x) +# b(x); +# } +# +# int main(int argc, char **argv) { +# a(argc); +# return x; +# } +# +# // b.cpp +# // cl.exe /Z7 /O1 /c a.cpp +# void a(int); +# +# static int y = 0; +# +# void b(int) { +# if (y) +# a(y); +# } + +# CHECK: Symbols +# CHECK: ============================================================ +# CHECK-LABEL: Mod 0000 | `{{.*}}a.obj`: +# CHECK: 232 | S_FILESTATIC [size = 16] `x` +# CHECK-NEXT: type = 0x0074 (int), file name = 1 (D:\src\llvmbuild\cl\Debug\x64\a.obj), flags = enreg global | enreg static +# CHECK: Mod 0001 | `{{.*}}b.obj`: +# CHECK: 232 | S_FILESTATIC [size = 16] `y` +# CHECK-NEXT: type = 0x0074 (int), file name = 73 (D:\src\llvmbuild\cl\Debug\x64\b.obj), flags = enreg global | enreg static +# CHECK-LABEL: Mod 0002 | `* Linker *`: + Index: lld/test/COFF/pdb-file-static.yaml =================================================================== --- /dev/null +++ lld/test/COFF/pdb-file-static.yaml @@ -0,0 +1,297 @@ +# RUN: yaml2obj %s -o %t.obj +# RUN: lld-link %t.obj -nodefaultlib -entry:main -debug -out:%t.exe -pdb:%t.pdb +# RUN: llvm-pdbutil dump -symbols %t.pdb | FileCheck %s + +# To regenerate the object file: +# $ cat symbol-types.c +# struct Foo { int x; }; +# typedef struct Foo UDT_Foo; +# UDT_Foo global_foo = {42}; +# int main() { return global_foo.x; } +# $ cl -c -Z7 symbol-types.c + +# Note that the type of 'global' goes from 0x1005 in the object file to 0x1004 +# in the PDB because the LF_FUNC_ID is moved to the id stream. + +# CHECK-LABEL: Global Symbols +# CHECK-NEXT: ============================================================ +# CHECK-NEXT: Records +# CHECK-NEXT: 48 | S_PROCREF [size = 20] `main` +# CHECK-NEXT: module = 1, sum name = 0, offset = 116 +# CHECK-NEXT: 68 | S_GDATA32 [size = 28] `global_foo` +# CHECK-NEXT: type = 0x1004 (Foo), addr = 0001:0000 + +# CHECK: Symbols +# CHECK: ============================================================ +# CHECK-LABEL: Mod 0000 | `{{.*}}pdb-symbol-types.yaml.tmp.obj`: +# CHECK: 4 | S_OBJNAME [size = 52] sig=0, `C:\src\llvm-project\build\symbol-types.obj` +# CHECK: 56 | S_COMPILE3 [size = 60] +# CHECK: machine = intel x86-x64, Ver = Microsoft (R) Optimizing Compiler, language = c +# CHECK: frontend = 19.0.24215.1, backend = 19.0.24215.1 +# CHECK: flags = security checks | hot patchable +# CHECK: 116 | S_GPROC32 [size = 44] `main` +# CHECK: parent = 0, end = 192, addr = 0002:0000, code size = 7 +# CHECK: debug start = 0, debug end = 6, flags = none +# CHECK: 160 | S_FRAMEPROC [size = 32] +# CHECK: size = 0, padding size = 0, offset to padding = 0 +# CHECK: bytes of callee saved registers = 0, exception handler addr = 0000:0000 +# CHECK: flags = has async eh | opt speed +# CHECK: 192 | S_END [size = 4] +# CHECK: 196 | S_BUILDINFO [size = 8] BuildId = `0x100A` +# CHECK-LABEL: Mod 0001 | `* Linker *`: + +--- !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\symbol-types.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' + - Kind: S_FILESTATIC + FileStaticSym: + Index: 0x1000 + ModFilenameOffset: 44 + Flags: none + Name: 'DummySym' + - !FileChecksums + Checksums: + - FileName: 'c:\src\llvm-project\build\symbol-types.c' + Kind: MD5 + Checksum: F833E1A4909FF6FEC5689A664F3BE725 + - !StringTable + Strings: + - 'c:\src\llvm-project\build\symbol-types.c' + - 'DummyString' + - !Symbols + Records: + - Kind: S_BUILDINFO + BuildInfoSym: + BuildId: 4111 + Relocations: + - VirtualAddress: 164 + SymbolName: main + Type: IMAGE_REL_AMD64_SECREL + - VirtualAddress: 168 + SymbolName: main + Type: IMAGE_REL_AMD64_SECTION + - VirtualAddress: 220 + SymbolName: main + Type: IMAGE_REL_AMD64_SECREL + - VirtualAddress: 224 + SymbolName: main + Type: IMAGE_REL_AMD64_SECTION + - VirtualAddress: 284 + SymbolName: global_foo + Type: IMAGE_REL_AMD64_SECREL + - VirtualAddress: 288 + SymbolName: global_foo + 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: 116 + CallConv: NearC + Options: [ None ] + ParameterCount: 0 + ArgumentList: 4096 + - Kind: LF_FUNC_ID + FuncId: + ParentScope: 0 + FunctionType: 4097 + Name: main + - Kind: LF_STRUCTURE + Class: + MemberCount: 0 + Options: [ None, ForwardReference, HasUniqueName ] + FieldList: 0 + Name: Foo + UniqueName: '.?AUFoo@@' + DerivationList: 0 + VTableShape: 0 + Size: 0 + - Kind: LF_FIELDLIST + FieldList: + - Kind: LF_MEMBER + DataMember: + Attrs: 3 + Type: 116 + FieldOffset: 0 + Name: x + - Kind: LF_STRUCTURE + Class: + MemberCount: 1 + Options: [ None, HasUniqueName ] + FieldList: 4100 + Name: Foo + UniqueName: '.?AUFoo@@' + DerivationList: 0 + VTableShape: 0 + Size: 4 + - Kind: LF_STRING_ID + StringId: + Id: 0 + String: 'c:\src\llvm-project\build\symbol-types.c' + - Kind: LF_UDT_SRC_LINE + UdtSourceLine: + UDT: 4101 + SourceFile: 4102 + LineNumber: 1 + - 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: symbol-types.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: .data + Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ] + Alignment: 4 + SectionData: 2A000000 + - Name: '.text$mn' + Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ] + Alignment: 16 + SectionData: 8B0500000000C3 + Relocations: + - VirtualAddress: 2 + SymbolName: global_foo + Type: IMAGE_REL_AMD64_REL32 +symbols: + - Name: '@comp.id' + Value: 17063575 + SectionNumber: -1 + SimpleType: IMAGE_SYM_TYPE_NULL + ComplexType: IMAGE_SYM_DTYPE_NULL + StorageClass: IMAGE_SYM_CLASS_STATIC + - Name: '@feat.00' + Value: 2147484048 + SectionNumber: -1 + SimpleType: IMAGE_SYM_TYPE_NULL + ComplexType: IMAGE_SYM_DTYPE_NULL + StorageClass: IMAGE_SYM_CLASS_STATIC + - 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: 432 + 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: 732 + NumberOfRelocations: 0 + NumberOfLinenumbers: 0 + CheckSum: 0 + Number: 0 + - Name: .data + 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: 3482275674 + Number: 0 + - Name: global_foo + 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: 7 + NumberOfRelocations: 1 + NumberOfLinenumbers: 0 + CheckSum: 3635526833 + Number: 0 + - Name: main + Value: 0 + SectionNumber: 5 + SimpleType: IMAGE_SYM_TYPE_NULL + ComplexType: IMAGE_SYM_DTYPE_FUNCTION + StorageClass: IMAGE_SYM_CLASS_EXTERNAL +... Index: llvm/tools/llvm-pdbutil/DumpOutputStyle.h =================================================================== --- llvm/tools/llvm-pdbutil/DumpOutputStyle.h +++ llvm/tools/llvm-pdbutil/DumpOutputStyle.h @@ -75,6 +75,8 @@ Error dumpSymbolStats(); Error dumpUdtStats(); Error dumpStringTable(); + Error dumpStringTableFromPdb(); + Error dumpStringTableFromObj(); Error dumpLines(); Error dumpInlineeLines(); Error dumpXmi(); Index: llvm/tools/llvm-pdbutil/DumpOutputStyle.cpp =================================================================== --- llvm/tools/llvm-pdbutil/DumpOutputStyle.cpp +++ llvm/tools/llvm-pdbutil/DumpOutputStyle.cpp @@ -848,14 +848,7 @@ return Error::success(); } -Error DumpOutputStyle::dumpStringTable() { - printHeader(P, "String Table"); - - if (File.isObj()) { - P.formatLine("Dumping string table is not supported for object files"); - return Error::success(); - } - +Error DumpOutputStyle::dumpStringTableFromPdb() { AutoIndent Indent(P); auto IS = getPdb().getStringTable(); if (!IS) { @@ -895,6 +888,36 @@ return Error::success(); } +Error DumpOutputStyle::dumpStringTableFromObj() { + iterateModuleSubsections( + File, PrintScope{P, 4}, + [&](uint32_t Modi, const SymbolGroup &Strings, + DebugStringTableSubsectionRef &Strings2) { + BinaryStreamRef StringTableBuffer = Strings2.getBuffer(); + BinaryStreamReader Reader(StringTableBuffer); + while (Reader.bytesRemaining() > 0) { + StringRef Str; + uint32_t Offset = Reader.getOffset(); + cantFail(Reader.readCString(Str)); + if (Str.empty()) + continue; + + P.formatLine("{0} | {1}", fmt_align(Offset, AlignStyle::Right, 4), + Str); + } + }); + return Error::success(); +} + +Error DumpOutputStyle::dumpStringTable() { + printHeader(P, "String Table"); + + if (File.isPdb()) + return dumpStringTableFromPdb(); + + return dumpStringTableFromObj(); +} + static void buildDepSet(LazyRandomTypeCollection &Types, ArrayRef Indices, std::map &DepSet) { @@ -1124,6 +1147,7 @@ File, PrintScope{P, 2}, [&](uint32_t Modi, const SymbolGroup &Strings, DebugSymbolsSubsectionRef &Symbols) { + Dumper.setSymbolGroup(&Strings); for (auto Symbol : Symbols) { if (auto EC = Visitor.visitSymbolRecord(Symbol)) { SymbolError = llvm::make_unique(std::move(EC)); @@ -1165,8 +1189,8 @@ SymbolVisitorCallbackPipeline Pipeline; SymbolDeserializer Deserializer(nullptr, CodeViewContainer::Pdb); - MinimalSymbolDumper Dumper(P, opts::dump::DumpSymRecordBytes, Ids, - Types); + MinimalSymbolDumper Dumper(P, opts::dump::DumpSymRecordBytes, Strings, + Ids, Types); Pipeline.addCallbackToPipeline(Deserializer); Pipeline.addCallbackToPipeline(Dumper); Index: llvm/tools/llvm-pdbutil/MinimalSymbolDumper.h =================================================================== --- llvm/tools/llvm-pdbutil/MinimalSymbolDumper.h +++ llvm/tools/llvm-pdbutil/MinimalSymbolDumper.h @@ -19,6 +19,7 @@ namespace pdb { class LinePrinter; +class SymbolGroup; class MinimalSymbolDumper : public codeview::SymbolVisitorCallbacks { public: @@ -26,11 +27,19 @@ codeview::LazyRandomTypeCollection &Ids, codeview::LazyRandomTypeCollection &Types) : P(P), RecordBytes(RecordBytes), Ids(Ids), Types(Types) {} + MinimalSymbolDumper(LinePrinter &P, bool RecordBytes, + const SymbolGroup &SymGroup, + codeview::LazyRandomTypeCollection &Ids, + codeview::LazyRandomTypeCollection &Types) + : P(P), RecordBytes(RecordBytes), SymGroup(&SymGroup), Ids(Ids), + Types(Types) {} Error visitSymbolBegin(codeview::CVSymbol &Record) override; Error visitSymbolBegin(codeview::CVSymbol &Record, uint32_t Offset) override; Error visitSymbolEnd(codeview::CVSymbol &Record) override; + void setSymbolGroup(const SymbolGroup *Group) { SymGroup = Group; } + #define SYMBOL_RECORD(EnumName, EnumVal, Name) \ virtual Error visitKnownRecord(codeview::CVSymbol &CVR, \ codeview::Name &Record) override; @@ -45,6 +54,7 @@ LinePrinter &P; bool RecordBytes; + const SymbolGroup *SymGroup = nullptr; codeview::LazyRandomTypeCollection &Ids; codeview::LazyRandomTypeCollection &Types; }; Index: llvm/tools/llvm-pdbutil/MinimalSymbolDumper.cpp =================================================================== --- llvm/tools/llvm-pdbutil/MinimalSymbolDumper.cpp +++ llvm/tools/llvm-pdbutil/MinimalSymbolDumper.cpp @@ -10,6 +10,7 @@ #include "MinimalSymbolDumper.h" #include "FormatUtil.h" +#include "InputFile.h" #include "LinePrinter.h" #include "llvm/DebugInfo/CodeView/CVRecord.h" @@ -18,6 +19,7 @@ #include "llvm/DebugInfo/CodeView/LazyRandomTypeCollection.h" #include "llvm/DebugInfo/CodeView/SymbolRecord.h" #include "llvm/DebugInfo/CodeView/TypeRecord.h" +#include "llvm/DebugInfo/PDB/Native/PDBStringTable.h" #include "llvm/Support/FormatVariadic.h" using namespace llvm; @@ -450,6 +452,17 @@ Error MinimalSymbolDumper::visitKnownRecord(CVSymbol &CVR, FileStaticSym &FS) { P.format(" `{0}`", FS.Name); AutoIndent Indent(P, 7); + if (SymGroup) { + Expected FileName = + SymGroup->getNameFromStringTable(FS.ModFilenameOffset); + if (FileName) { + P.formatLine("type = {0}, file name = {1} ({2}), flags = {3}", + typeIndex(FS.Index), FS.ModFilenameOffset, *FileName, + formatLocalSymFlags(P.getIndentLevel() + 9, FS.Flags)); + } + return Error::success(); + } + P.formatLine("type = {0}, file name offset = {1}, flags = {2}", typeIndex(FS.Index), FS.ModFilenameOffset, formatLocalSymFlags(P.getIndentLevel() + 9, FS.Flags));