146225b19SZachary Turner //===- SymbolRecordMapping.cpp -----------------------------------*- C++-*-===// 246225b19SZachary Turner // 346225b19SZachary Turner // The LLVM Compiler Infrastructure 446225b19SZachary Turner // 546225b19SZachary Turner // This file is distributed under the University of Illinois Open Source 646225b19SZachary Turner // License. See LICENSE.TXT for details. 746225b19SZachary Turner // 846225b19SZachary Turner //===----------------------------------------------------------------------===// 946225b19SZachary Turner 1046225b19SZachary Turner #include "llvm/DebugInfo/CodeView/SymbolRecordMapping.h" 1146225b19SZachary Turner 1246225b19SZachary Turner using namespace llvm; 1346225b19SZachary Turner using namespace llvm::codeview; 1446225b19SZachary Turner 1546225b19SZachary Turner #define error(X) \ 1646225b19SZachary Turner if (auto EC = X) \ 1746225b19SZachary Turner return EC; 1846225b19SZachary Turner 1946225b19SZachary Turner namespace { 2046225b19SZachary Turner struct MapGap { 2146225b19SZachary Turner Error operator()(CodeViewRecordIO &IO, LocalVariableAddrGap &Gap) const { 2246225b19SZachary Turner error(IO.mapInteger(Gap.GapStartOffset)); 2346225b19SZachary Turner error(IO.mapInteger(Gap.Range)); 2446225b19SZachary Turner return Error::success(); 2546225b19SZachary Turner } 2646225b19SZachary Turner }; 2746225b19SZachary Turner } 2846225b19SZachary Turner 2946225b19SZachary Turner static Error mapLocalVariableAddrRange(CodeViewRecordIO &IO, 3046225b19SZachary Turner LocalVariableAddrRange &Range) { 3146225b19SZachary Turner error(IO.mapInteger(Range.OffsetStart)); 3246225b19SZachary Turner error(IO.mapInteger(Range.ISectStart)); 3346225b19SZachary Turner error(IO.mapInteger(Range.Range)); 3446225b19SZachary Turner return Error::success(); 3546225b19SZachary Turner } 3646225b19SZachary Turner 3746225b19SZachary Turner Error SymbolRecordMapping::visitSymbolBegin(CVSymbol &Record) { 3846225b19SZachary Turner error(IO.beginRecord(MaxRecordLength - sizeof(RecordPrefix))); 3946225b19SZachary Turner return Error::success(); 4046225b19SZachary Turner } 4146225b19SZachary Turner 4246225b19SZachary Turner Error SymbolRecordMapping::visitSymbolEnd(CVSymbol &Record) { 43ebd3ae83SZachary Turner error(IO.padToAlignment(alignOf(Container))); 4446225b19SZachary Turner error(IO.endRecord()); 4546225b19SZachary Turner return Error::success(); 4646225b19SZachary Turner } 4746225b19SZachary Turner 4846225b19SZachary Turner Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR, BlockSym &Block) { 4946225b19SZachary Turner 5046225b19SZachary Turner error(IO.mapInteger(Block.Parent)); 5146225b19SZachary Turner error(IO.mapInteger(Block.End)); 5246225b19SZachary Turner error(IO.mapInteger(Block.CodeSize)); 5346225b19SZachary Turner error(IO.mapInteger(Block.CodeOffset)); 5446225b19SZachary Turner error(IO.mapInteger(Block.Segment)); 5546225b19SZachary Turner error(IO.mapStringZ(Block.Name)); 5646225b19SZachary Turner 5746225b19SZachary Turner return Error::success(); 5846225b19SZachary Turner } 5946225b19SZachary Turner 6046225b19SZachary Turner Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR, Thunk32Sym &Thunk) { 6146225b19SZachary Turner 6246225b19SZachary Turner error(IO.mapInteger(Thunk.Parent)); 6346225b19SZachary Turner error(IO.mapInteger(Thunk.End)); 6446225b19SZachary Turner error(IO.mapInteger(Thunk.Next)); 6546225b19SZachary Turner error(IO.mapInteger(Thunk.Offset)); 6646225b19SZachary Turner error(IO.mapInteger(Thunk.Segment)); 6746225b19SZachary Turner error(IO.mapInteger(Thunk.Length)); 6846225b19SZachary Turner error(IO.mapEnum(Thunk.Thunk)); 6946225b19SZachary Turner error(IO.mapStringZ(Thunk.Name)); 7046225b19SZachary Turner error(IO.mapByteVectorTail(Thunk.VariantData)); 7146225b19SZachary Turner 7246225b19SZachary Turner return Error::success(); 7346225b19SZachary Turner } 7446225b19SZachary Turner 7546225b19SZachary Turner Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR, 7646225b19SZachary Turner TrampolineSym &Tramp) { 7746225b19SZachary Turner 7846225b19SZachary Turner error(IO.mapEnum(Tramp.Type)); 7946225b19SZachary Turner error(IO.mapInteger(Tramp.Size)); 8046225b19SZachary Turner error(IO.mapInteger(Tramp.ThunkOffset)); 8146225b19SZachary Turner error(IO.mapInteger(Tramp.TargetOffset)); 8246225b19SZachary Turner error(IO.mapInteger(Tramp.ThunkSection)); 8346225b19SZachary Turner error(IO.mapInteger(Tramp.TargetSection)); 8446225b19SZachary Turner 8546225b19SZachary Turner return Error::success(); 8646225b19SZachary Turner } 8746225b19SZachary Turner 8846225b19SZachary Turner Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR, 8946225b19SZachary Turner SectionSym &Section) { 9046225b19SZachary Turner uint8_t Padding = 0; 9146225b19SZachary Turner 9246225b19SZachary Turner error(IO.mapInteger(Section.SectionNumber)); 9346225b19SZachary Turner error(IO.mapInteger(Section.Alignment)); 9446225b19SZachary Turner error(IO.mapInteger(Padding)); 9546225b19SZachary Turner error(IO.mapInteger(Section.Rva)); 9646225b19SZachary Turner error(IO.mapInteger(Section.Length)); 9746225b19SZachary Turner error(IO.mapInteger(Section.Characteristics)); 9846225b19SZachary Turner error(IO.mapStringZ(Section.Name)); 9946225b19SZachary Turner 10046225b19SZachary Turner return Error::success(); 10146225b19SZachary Turner } 10246225b19SZachary Turner 10346225b19SZachary Turner Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR, 10446225b19SZachary Turner CoffGroupSym &CoffGroup) { 10546225b19SZachary Turner 10646225b19SZachary Turner error(IO.mapInteger(CoffGroup.Size)); 10746225b19SZachary Turner error(IO.mapInteger(CoffGroup.Characteristics)); 10846225b19SZachary Turner error(IO.mapInteger(CoffGroup.Offset)); 10946225b19SZachary Turner error(IO.mapInteger(CoffGroup.Segment)); 11046225b19SZachary Turner error(IO.mapStringZ(CoffGroup.Name)); 11146225b19SZachary Turner 11246225b19SZachary Turner return Error::success(); 11346225b19SZachary Turner } 11446225b19SZachary Turner 11546225b19SZachary Turner Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR, 11646225b19SZachary Turner BPRelativeSym &BPRel) { 11746225b19SZachary Turner 11846225b19SZachary Turner error(IO.mapInteger(BPRel.Offset)); 11946225b19SZachary Turner error(IO.mapInteger(BPRel.Type)); 12046225b19SZachary Turner error(IO.mapStringZ(BPRel.Name)); 12146225b19SZachary Turner 12246225b19SZachary Turner return Error::success(); 12346225b19SZachary Turner } 12446225b19SZachary Turner 12546225b19SZachary Turner Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR, 12646225b19SZachary Turner BuildInfoSym &BuildInfo) { 12746225b19SZachary Turner 12846225b19SZachary Turner error(IO.mapInteger(BuildInfo.BuildId)); 12946225b19SZachary Turner 13046225b19SZachary Turner return Error::success(); 13146225b19SZachary Turner } 13246225b19SZachary Turner 13346225b19SZachary Turner Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR, 13446225b19SZachary Turner CallSiteInfoSym &CallSiteInfo) { 13546225b19SZachary Turner uint16_t Padding = 0; 13646225b19SZachary Turner 13746225b19SZachary Turner error(IO.mapInteger(CallSiteInfo.CodeOffset)); 13846225b19SZachary Turner error(IO.mapInteger(CallSiteInfo.Segment)); 13946225b19SZachary Turner error(IO.mapInteger(Padding)); 14046225b19SZachary Turner error(IO.mapInteger(CallSiteInfo.Type)); 14146225b19SZachary Turner 14246225b19SZachary Turner return Error::success(); 14346225b19SZachary Turner } 14446225b19SZachary Turner 14546225b19SZachary Turner Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR, 14646225b19SZachary Turner EnvBlockSym &EnvBlock) { 14746225b19SZachary Turner 14846225b19SZachary Turner uint8_t Reserved = 0; 14946225b19SZachary Turner error(IO.mapInteger(Reserved)); 15046225b19SZachary Turner error(IO.mapStringZVectorZ(EnvBlock.Fields)); 15146225b19SZachary Turner 15246225b19SZachary Turner return Error::success(); 15346225b19SZachary Turner } 15446225b19SZachary Turner 15546225b19SZachary Turner Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR, 15646225b19SZachary Turner FileStaticSym &FileStatic) { 15746225b19SZachary Turner 15846225b19SZachary Turner error(IO.mapInteger(FileStatic.Index)); 15946225b19SZachary Turner error(IO.mapInteger(FileStatic.ModFilenameOffset)); 16046225b19SZachary Turner error(IO.mapEnum(FileStatic.Flags)); 16146225b19SZachary Turner error(IO.mapStringZ(FileStatic.Name)); 16246225b19SZachary Turner 16346225b19SZachary Turner return Error::success(); 16446225b19SZachary Turner } 16546225b19SZachary Turner 16646225b19SZachary Turner Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR, ExportSym &Export) { 16746225b19SZachary Turner 16846225b19SZachary Turner error(IO.mapInteger(Export.Ordinal)); 16946225b19SZachary Turner error(IO.mapEnum(Export.Flags)); 17046225b19SZachary Turner error(IO.mapStringZ(Export.Name)); 17146225b19SZachary Turner 17246225b19SZachary Turner return Error::success(); 17346225b19SZachary Turner } 17446225b19SZachary Turner 17546225b19SZachary Turner Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR, 17646225b19SZachary Turner Compile2Sym &Compile2) { 17746225b19SZachary Turner 17846225b19SZachary Turner error(IO.mapEnum(Compile2.Flags)); 17946225b19SZachary Turner error(IO.mapEnum(Compile2.Machine)); 18046225b19SZachary Turner error(IO.mapInteger(Compile2.VersionFrontendMajor)); 18146225b19SZachary Turner error(IO.mapInteger(Compile2.VersionFrontendMinor)); 18246225b19SZachary Turner error(IO.mapInteger(Compile2.VersionFrontendBuild)); 18346225b19SZachary Turner error(IO.mapInteger(Compile2.VersionBackendMajor)); 18446225b19SZachary Turner error(IO.mapInteger(Compile2.VersionBackendMinor)); 18546225b19SZachary Turner error(IO.mapInteger(Compile2.VersionBackendBuild)); 18646225b19SZachary Turner error(IO.mapStringZ(Compile2.Version)); 18746225b19SZachary Turner error(IO.mapStringZVectorZ(Compile2.ExtraStrings)); 18846225b19SZachary Turner 18946225b19SZachary Turner return Error::success(); 19046225b19SZachary Turner } 19146225b19SZachary Turner 19246225b19SZachary Turner Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR, 19346225b19SZachary Turner Compile3Sym &Compile3) { 19446225b19SZachary Turner 19546225b19SZachary Turner error(IO.mapEnum(Compile3.Flags)); 19646225b19SZachary Turner error(IO.mapEnum(Compile3.Machine)); 19746225b19SZachary Turner error(IO.mapInteger(Compile3.VersionFrontendMajor)); 19846225b19SZachary Turner error(IO.mapInteger(Compile3.VersionFrontendMinor)); 19946225b19SZachary Turner error(IO.mapInteger(Compile3.VersionFrontendBuild)); 20046225b19SZachary Turner error(IO.mapInteger(Compile3.VersionFrontendQFE)); 20146225b19SZachary Turner error(IO.mapInteger(Compile3.VersionBackendMajor)); 20246225b19SZachary Turner error(IO.mapInteger(Compile3.VersionBackendMinor)); 20346225b19SZachary Turner error(IO.mapInteger(Compile3.VersionBackendBuild)); 20446225b19SZachary Turner error(IO.mapInteger(Compile3.VersionBackendQFE)); 20546225b19SZachary Turner error(IO.mapStringZ(Compile3.Version)); 20646225b19SZachary Turner 20746225b19SZachary Turner return Error::success(); 20846225b19SZachary Turner } 20946225b19SZachary Turner 21046225b19SZachary Turner Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR, 21146225b19SZachary Turner ConstantSym &Constant) { 21246225b19SZachary Turner 21346225b19SZachary Turner error(IO.mapInteger(Constant.Type)); 21446225b19SZachary Turner error(IO.mapEncodedInteger(Constant.Value)); 21546225b19SZachary Turner error(IO.mapStringZ(Constant.Name)); 21646225b19SZachary Turner 21746225b19SZachary Turner return Error::success(); 21846225b19SZachary Turner } 21946225b19SZachary Turner 22046225b19SZachary Turner Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR, DataSym &Data) { 22146225b19SZachary Turner 22246225b19SZachary Turner error(IO.mapInteger(Data.Type)); 22346225b19SZachary Turner error(IO.mapInteger(Data.DataOffset)); 22446225b19SZachary Turner error(IO.mapInteger(Data.Segment)); 22546225b19SZachary Turner error(IO.mapStringZ(Data.Name)); 22646225b19SZachary Turner 22746225b19SZachary Turner return Error::success(); 22846225b19SZachary Turner } 22946225b19SZachary Turner 23046225b19SZachary Turner Error SymbolRecordMapping::visitKnownRecord( 23146225b19SZachary Turner CVSymbol &CVR, DefRangeFramePointerRelSym &DefRangeFramePointerRel) { 23246225b19SZachary Turner 23346225b19SZachary Turner error(IO.mapInteger(DefRangeFramePointerRel.Offset)); 23446225b19SZachary Turner error(mapLocalVariableAddrRange(IO, DefRangeFramePointerRel.Range)); 23546225b19SZachary Turner error(IO.mapVectorTail(DefRangeFramePointerRel.Gaps, MapGap())); 23646225b19SZachary Turner 23746225b19SZachary Turner return Error::success(); 23846225b19SZachary Turner } 23946225b19SZachary Turner 24046225b19SZachary Turner Error SymbolRecordMapping::visitKnownRecord( 24146225b19SZachary Turner CVSymbol &CVR, 24246225b19SZachary Turner DefRangeFramePointerRelFullScopeSym &DefRangeFramePointerRelFullScope) { 24346225b19SZachary Turner 24446225b19SZachary Turner error(IO.mapInteger(DefRangeFramePointerRelFullScope.Offset)); 24546225b19SZachary Turner 24646225b19SZachary Turner return Error::success(); 24746225b19SZachary Turner } 24846225b19SZachary Turner 24946225b19SZachary Turner Error SymbolRecordMapping::visitKnownRecord( 25046225b19SZachary Turner CVSymbol &CVR, DefRangeRegisterRelSym &DefRangeRegisterRel) { 25146225b19SZachary Turner 25246225b19SZachary Turner error(IO.mapObject(DefRangeRegisterRel.Hdr.Register)); 25346225b19SZachary Turner error(IO.mapObject(DefRangeRegisterRel.Hdr.Flags)); 25446225b19SZachary Turner error(IO.mapObject(DefRangeRegisterRel.Hdr.BasePointerOffset)); 25546225b19SZachary Turner error(mapLocalVariableAddrRange(IO, DefRangeRegisterRel.Range)); 25646225b19SZachary Turner error(IO.mapVectorTail(DefRangeRegisterRel.Gaps, MapGap())); 25746225b19SZachary Turner 25846225b19SZachary Turner return Error::success(); 25946225b19SZachary Turner } 26046225b19SZachary Turner 26146225b19SZachary Turner Error SymbolRecordMapping::visitKnownRecord( 26246225b19SZachary Turner CVSymbol &CVR, DefRangeRegisterSym &DefRangeRegister) { 26346225b19SZachary Turner 26446225b19SZachary Turner error(IO.mapObject(DefRangeRegister.Hdr.Register)); 26546225b19SZachary Turner error(IO.mapObject(DefRangeRegister.Hdr.MayHaveNoName)); 26646225b19SZachary Turner error(mapLocalVariableAddrRange(IO, DefRangeRegister.Range)); 26746225b19SZachary Turner error(IO.mapVectorTail(DefRangeRegister.Gaps, MapGap())); 26846225b19SZachary Turner 26946225b19SZachary Turner return Error::success(); 27046225b19SZachary Turner } 27146225b19SZachary Turner 27246225b19SZachary Turner Error SymbolRecordMapping::visitKnownRecord( 27346225b19SZachary Turner CVSymbol &CVR, DefRangeSubfieldRegisterSym &DefRangeSubfieldRegister) { 27446225b19SZachary Turner 27546225b19SZachary Turner error(IO.mapObject(DefRangeSubfieldRegister.Hdr.Register)); 27646225b19SZachary Turner error(IO.mapObject(DefRangeSubfieldRegister.Hdr.MayHaveNoName)); 27746225b19SZachary Turner error(IO.mapObject(DefRangeSubfieldRegister.Hdr.OffsetInParent)); 27846225b19SZachary Turner error(mapLocalVariableAddrRange(IO, DefRangeSubfieldRegister.Range)); 27946225b19SZachary Turner error(IO.mapVectorTail(DefRangeSubfieldRegister.Gaps, MapGap())); 28046225b19SZachary Turner 28146225b19SZachary Turner return Error::success(); 28246225b19SZachary Turner } 28346225b19SZachary Turner 28446225b19SZachary Turner Error SymbolRecordMapping::visitKnownRecord( 28546225b19SZachary Turner CVSymbol &CVR, DefRangeSubfieldSym &DefRangeSubfield) { 28646225b19SZachary Turner 28746225b19SZachary Turner error(IO.mapInteger(DefRangeSubfield.Program)); 28846225b19SZachary Turner error(IO.mapInteger(DefRangeSubfield.OffsetInParent)); 28946225b19SZachary Turner error(mapLocalVariableAddrRange(IO, DefRangeSubfield.Range)); 29046225b19SZachary Turner error(IO.mapVectorTail(DefRangeSubfield.Gaps, MapGap())); 29146225b19SZachary Turner 29246225b19SZachary Turner return Error::success(); 29346225b19SZachary Turner } 29446225b19SZachary Turner 29546225b19SZachary Turner Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR, 29646225b19SZachary Turner DefRangeSym &DefRange) { 29746225b19SZachary Turner 29846225b19SZachary Turner error(IO.mapInteger(DefRange.Program)); 29946225b19SZachary Turner error(mapLocalVariableAddrRange(IO, DefRange.Range)); 30046225b19SZachary Turner error(IO.mapVectorTail(DefRange.Gaps, MapGap())); 30146225b19SZachary Turner 30246225b19SZachary Turner return Error::success(); 30346225b19SZachary Turner } 30446225b19SZachary Turner 30546225b19SZachary Turner Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR, 30646225b19SZachary Turner FrameCookieSym &FrameCookie) { 30746225b19SZachary Turner 30846225b19SZachary Turner error(IO.mapInteger(FrameCookie.CodeOffset)); 30946225b19SZachary Turner error(IO.mapInteger(FrameCookie.Register)); 31063055455SZachary Turner error(IO.mapEnum(FrameCookie.CookieKind)); 31146225b19SZachary Turner error(IO.mapInteger(FrameCookie.Flags)); 31246225b19SZachary Turner 31346225b19SZachary Turner return Error::success(); 31446225b19SZachary Turner } 31546225b19SZachary Turner 31646225b19SZachary Turner Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR, 31746225b19SZachary Turner FrameProcSym &FrameProc) { 31846225b19SZachary Turner error(IO.mapInteger(FrameProc.TotalFrameBytes)); 31946225b19SZachary Turner error(IO.mapInteger(FrameProc.PaddingFrameBytes)); 32046225b19SZachary Turner error(IO.mapInteger(FrameProc.OffsetToPadding)); 32146225b19SZachary Turner error(IO.mapInteger(FrameProc.BytesOfCalleeSavedRegisters)); 32246225b19SZachary Turner error(IO.mapInteger(FrameProc.OffsetOfExceptionHandler)); 32346225b19SZachary Turner error(IO.mapInteger(FrameProc.SectionIdOfExceptionHandler)); 32446225b19SZachary Turner error(IO.mapEnum(FrameProc.Flags)); 32546225b19SZachary Turner 32646225b19SZachary Turner return Error::success(); 32746225b19SZachary Turner } 32846225b19SZachary Turner 32946225b19SZachary Turner Error SymbolRecordMapping::visitKnownRecord( 33046225b19SZachary Turner CVSymbol &CVR, HeapAllocationSiteSym &HeapAllocSite) { 33146225b19SZachary Turner 33246225b19SZachary Turner error(IO.mapInteger(HeapAllocSite.CodeOffset)); 33346225b19SZachary Turner error(IO.mapInteger(HeapAllocSite.Segment)); 33446225b19SZachary Turner error(IO.mapInteger(HeapAllocSite.CallInstructionSize)); 33546225b19SZachary Turner error(IO.mapInteger(HeapAllocSite.Type)); 33646225b19SZachary Turner 33746225b19SZachary Turner return Error::success(); 33846225b19SZachary Turner } 33946225b19SZachary Turner 34046225b19SZachary Turner Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR, 34146225b19SZachary Turner InlineSiteSym &InlineSite) { 34246225b19SZachary Turner 34346225b19SZachary Turner error(IO.mapInteger(InlineSite.Parent)); 34446225b19SZachary Turner error(IO.mapInteger(InlineSite.End)); 34546225b19SZachary Turner error(IO.mapInteger(InlineSite.Inlinee)); 34646225b19SZachary Turner error(IO.mapByteVectorTail(InlineSite.AnnotationData)); 34746225b19SZachary Turner 34846225b19SZachary Turner return Error::success(); 34946225b19SZachary Turner } 35046225b19SZachary Turner 35146225b19SZachary Turner Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR, 35246225b19SZachary Turner RegisterSym &Register) { 35346225b19SZachary Turner 35446225b19SZachary Turner error(IO.mapInteger(Register.Index)); 35546225b19SZachary Turner error(IO.mapEnum(Register.Register)); 35646225b19SZachary Turner error(IO.mapStringZ(Register.Name)); 35746225b19SZachary Turner 35846225b19SZachary Turner return Error::success(); 35946225b19SZachary Turner } 36046225b19SZachary Turner 36146225b19SZachary Turner Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR, 36246225b19SZachary Turner PublicSym32 &Public) { 36346225b19SZachary Turner 36418d90e17SReid Kleckner error(IO.mapEnum(Public.Flags)); 36546225b19SZachary Turner error(IO.mapInteger(Public.Offset)); 36646225b19SZachary Turner error(IO.mapInteger(Public.Segment)); 36746225b19SZachary Turner error(IO.mapStringZ(Public.Name)); 36846225b19SZachary Turner 36946225b19SZachary Turner return Error::success(); 37046225b19SZachary Turner } 37146225b19SZachary Turner 37246225b19SZachary Turner Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR, 37346225b19SZachary Turner ProcRefSym &ProcRef) { 37446225b19SZachary Turner 37546225b19SZachary Turner error(IO.mapInteger(ProcRef.SumName)); 37646225b19SZachary Turner error(IO.mapInteger(ProcRef.SymOffset)); 37746225b19SZachary Turner error(IO.mapInteger(ProcRef.Module)); 37846225b19SZachary Turner error(IO.mapStringZ(ProcRef.Name)); 37946225b19SZachary Turner 38046225b19SZachary Turner return Error::success(); 38146225b19SZachary Turner } 38246225b19SZachary Turner 38346225b19SZachary Turner Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR, LabelSym &Label) { 38446225b19SZachary Turner 38546225b19SZachary Turner error(IO.mapInteger(Label.CodeOffset)); 38646225b19SZachary Turner error(IO.mapInteger(Label.Segment)); 38746225b19SZachary Turner error(IO.mapEnum(Label.Flags)); 38846225b19SZachary Turner error(IO.mapStringZ(Label.Name)); 38946225b19SZachary Turner 39046225b19SZachary Turner return Error::success(); 39146225b19SZachary Turner } 39246225b19SZachary Turner 39346225b19SZachary Turner Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR, LocalSym &Local) { 39446225b19SZachary Turner error(IO.mapInteger(Local.Type)); 39546225b19SZachary Turner error(IO.mapEnum(Local.Flags)); 39646225b19SZachary Turner error(IO.mapStringZ(Local.Name)); 39746225b19SZachary Turner 39846225b19SZachary Turner return Error::success(); 39946225b19SZachary Turner } 40046225b19SZachary Turner 40146225b19SZachary Turner Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR, 40246225b19SZachary Turner ObjNameSym &ObjName) { 40346225b19SZachary Turner 40446225b19SZachary Turner error(IO.mapInteger(ObjName.Signature)); 40546225b19SZachary Turner error(IO.mapStringZ(ObjName.Name)); 40646225b19SZachary Turner 40746225b19SZachary Turner return Error::success(); 40846225b19SZachary Turner } 40946225b19SZachary Turner 41046225b19SZachary Turner Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR, ProcSym &Proc) { 41146225b19SZachary Turner error(IO.mapInteger(Proc.Parent)); 41246225b19SZachary Turner error(IO.mapInteger(Proc.End)); 41346225b19SZachary Turner error(IO.mapInteger(Proc.Next)); 41446225b19SZachary Turner error(IO.mapInteger(Proc.CodeSize)); 41546225b19SZachary Turner error(IO.mapInteger(Proc.DbgStart)); 41646225b19SZachary Turner error(IO.mapInteger(Proc.DbgEnd)); 41746225b19SZachary Turner error(IO.mapInteger(Proc.FunctionType)); 41846225b19SZachary Turner error(IO.mapInteger(Proc.CodeOffset)); 41946225b19SZachary Turner error(IO.mapInteger(Proc.Segment)); 42046225b19SZachary Turner error(IO.mapEnum(Proc.Flags)); 42146225b19SZachary Turner error(IO.mapStringZ(Proc.Name)); 42246225b19SZachary Turner return Error::success(); 42346225b19SZachary Turner } 42446225b19SZachary Turner 42546225b19SZachary Turner Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR, 42646225b19SZachary Turner ScopeEndSym &ScopeEnd) { 42746225b19SZachary Turner return Error::success(); 42846225b19SZachary Turner } 42946225b19SZachary Turner 43046225b19SZachary Turner Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR, CallerSym &Caller) { 43146225b19SZachary Turner error(IO.mapVectorN<uint32_t>( 43246225b19SZachary Turner Caller.Indices, 43346225b19SZachary Turner [](CodeViewRecordIO &IO, TypeIndex &N) { return IO.mapInteger(N); })); 43446225b19SZachary Turner return Error::success(); 43546225b19SZachary Turner } 43646225b19SZachary Turner 43746225b19SZachary Turner Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR, 43846225b19SZachary Turner RegRelativeSym &RegRel) { 43946225b19SZachary Turner 44046225b19SZachary Turner error(IO.mapInteger(RegRel.Offset)); 44146225b19SZachary Turner error(IO.mapInteger(RegRel.Type)); 44263055455SZachary Turner error(IO.mapEnum(RegRel.Register)); 44346225b19SZachary Turner error(IO.mapStringZ(RegRel.Name)); 44446225b19SZachary Turner 44546225b19SZachary Turner return Error::success(); 44646225b19SZachary Turner } 44746225b19SZachary Turner 44846225b19SZachary Turner Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR, 44946225b19SZachary Turner ThreadLocalDataSym &Data) { 45046225b19SZachary Turner 45146225b19SZachary Turner error(IO.mapInteger(Data.Type)); 45246225b19SZachary Turner error(IO.mapInteger(Data.DataOffset)); 45346225b19SZachary Turner error(IO.mapInteger(Data.Segment)); 45446225b19SZachary Turner error(IO.mapStringZ(Data.Name)); 45546225b19SZachary Turner 45646225b19SZachary Turner return Error::success(); 45746225b19SZachary Turner } 45846225b19SZachary Turner 45946225b19SZachary Turner Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR, UDTSym &UDT) { 46046225b19SZachary Turner 46146225b19SZachary Turner error(IO.mapInteger(UDT.Type)); 46246225b19SZachary Turner error(IO.mapStringZ(UDT.Name)); 46346225b19SZachary Turner 46446225b19SZachary Turner return Error::success(); 46546225b19SZachary Turner } 466*ee8a7200SAlexandre Ganea 467*ee8a7200SAlexandre Ganea Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR, 468*ee8a7200SAlexandre Ganea UsingNamespaceSym &UN) { 469*ee8a7200SAlexandre Ganea 470*ee8a7200SAlexandre Ganea error(IO.mapStringZ(UN.Name)); 471*ee8a7200SAlexandre Ganea 472*ee8a7200SAlexandre Ganea return Error::success(); 473*ee8a7200SAlexandre Ganea } 474