static void CommentInfoMapping(IO &IO, CommentInfo &I) { IO.mapOptional("Kind", I.Kind, SmallString<16>()); IO.mapOptional("Text", I.Text, SmallString<64>()); IO.mapOptional("Name", I.Name, SmallString<16>()); IO.mapOptional("Direction", I.Direction, SmallString<8>()); IO.mapOptional("ParamName", I.ParamName, SmallString<16>()); IO.mapOptional("CloseName", I.CloseName, SmallString<16>()); IO.mapOptional("SelfClosing", I.SelfClosing, false); IO.mapOptional("Explicit", I.Explicit, false); IO.mapOptional("Args", I.Args, llvm::SmallVector<SmallString<16>, 4>()); IO.mapOptional("AttrKeys", I.AttrKeys, llvm::SmallVector<SmallString<16>, 4>()); IO.mapOptional("AttrValues", I.AttrValues, llvm::SmallVector<SmallString<16>, 4>()); IO.mapOptional("Children", I.Children); }
void MappingTraits<WasmYAML::Relocation>::mapping( IO &IO, WasmYAML::Relocation &Relocation) { IO.mapRequired("Type", Relocation.Type); IO.mapRequired("Index", Relocation.Index); IO.mapRequired("Offset", Relocation.Offset); IO.mapOptional("Addend", Relocation.Addend, 0); }
void MappingContextTraits<PdbInlineeSite, SerializationContext>::mapping( IO &IO, PdbInlineeSite &Obj, SerializationContext &Context) { IO.mapRequired("FileName", Obj.FileName); IO.mapRequired("LineNum", Obj.SourceLineNum); IO.mapRequired("Inlinee", Obj.Inlinee); IO.mapOptional("ExtraFiles", Obj.ExtraFiles); }
void MappingTraits<ELFYAML::Relocation>::mapping(IO &IO, ELFYAML::Relocation &Rel) { IO.mapRequired("Offset", Rel.Offset); IO.mapRequired("Symbol", Rel.Symbol); IO.mapRequired("Type", Rel.Type); IO.mapOptional("Addend", Rel.Addend); }
void MappingTraits<WasmYAML::DataSegment>::mapping( IO &IO, WasmYAML::DataSegment &Segment) { IO.mapOptional("SectionOffset", Segment.SectionOffset); IO.mapRequired("MemoryIndex", Segment.MemoryIndex); IO.mapRequired("Offset", Segment.Offset); IO.mapRequired("Content", Segment.Content); }
void MappingTraits<WasmYAML::Object>::mapping(IO &IO, WasmYAML::Object &Object) { IO.setContext(&Object); IO.mapTag("!WASM", true); IO.mapRequired("FileHeader", Object.Header); IO.mapOptional("Sections", Object.Sections); IO.setContext(nullptr); }
void MappingTraits<PointerRecord>::mapping(IO &IO, PointerRecord &Ptr) { IO.mapRequired("ReferentType", Ptr.ReferentType); IO.mapRequired("PtrKind", Ptr.PtrKind); IO.mapRequired("Mode", Ptr.Mode); IO.mapRequired("Options", Ptr.Options); IO.mapRequired("Size", Ptr.Size); IO.mapOptional("MemberInfo", Ptr.MemberInfo); }
void MappingTraits<PdbDbiStream>::mapping(IO &IO, PdbDbiStream &Obj) { IO.mapOptional("VerHeader", Obj.VerHeader, PdbDbiV70); IO.mapOptional("Age", Obj.Age, 1U); IO.mapOptional("BuildNumber", Obj.BuildNumber, uint16_t(0U)); IO.mapOptional("PdbDllVersion", Obj.PdbDllVersion, 0U); IO.mapOptional("PdbDllRbld", Obj.PdbDllRbld, uint16_t(0U)); IO.mapOptional("Flags", Obj.Flags, uint16_t(1U)); IO.mapOptional("MachineType", Obj.MachineType, PDB_Machine::x86); IO.mapOptional("Modules", Obj.ModInfos); }
void MappingTraits<DiagnosticInfoOptimizationBase *>::mapping( IO &io, DiagnosticInfoOptimizationBase *&OptDiag) { assert(io.outputting() && "input not yet implemented"); if (io.mapTag("!Passed", (OptDiag->getKind() == DK_OptimizationRemark || OptDiag->getKind() == DK_MachineOptimizationRemark))) ; else if (io.mapTag( "!Missed", (OptDiag->getKind() == DK_OptimizationRemarkMissed || OptDiag->getKind() == DK_MachineOptimizationRemarkMissed))) ; else if (io.mapTag( "!Analysis", (OptDiag->getKind() == DK_OptimizationRemarkAnalysis || OptDiag->getKind() == DK_MachineOptimizationRemarkAnalysis))) ; else if (io.mapTag("!AnalysisFPCommute", OptDiag->getKind() == DK_OptimizationRemarkAnalysisFPCommute)) ; else if (io.mapTag("!AnalysisAliasing", OptDiag->getKind() == DK_OptimizationRemarkAnalysisAliasing)) ; else if (io.mapTag("!Failure", OptDiag->getKind() == DK_OptimizationFailure)) ; else llvm_unreachable("Unknown remark type"); // These are read-only for now. DiagnosticLocation DL = OptDiag->getLocation(); StringRef FN = GlobalValue::dropLLVMManglingEscape(OptDiag->getFunction().getName()); StringRef PassName(OptDiag->PassName); io.mapRequired("Pass", PassName); io.mapRequired("Name", OptDiag->RemarkName); if (!io.outputting() || DL.isValid()) io.mapOptional("DebugLoc", DL); io.mapRequired("Function", FN); io.mapOptional("Hotness", OptDiag->Hotness); io.mapOptional("Args", OptDiag->Args); }
static void mapping(IO &io, Symbol& sym) { io.mapRequired("name", sym.name); io.mapRequired("type", sym.type); io.mapOptional("scope", sym.scope, SymbolScope(0)); io.mapOptional("sect", sym.sect, (uint8_t)0); if (sym.type == llvm::MachO::N_UNDF) { // In undef symbols, desc field contains alignment/ordinal info // which is better represented as a hex vaule. uint16_t t1 = sym.desc; Hex16 t2 = t1; io.mapOptional("desc", t2, Hex16(0)); sym.desc = t2; } else { // In defined symbols, desc fit is a set of option bits. io.mapOptional("desc", sym.desc, SymbolDesc(0)); } io.mapRequired("value", sym.value); }
static void mapping(IO &io, clang::PrintableTemplightEntryBegin &Entry) { bool b = true; io.mapRequired("IsBegin", b); // must be converted to string before, due to some BS with yaml traits. std::string kind = clang::InstantiationKindStrings[Entry.InstantiationKind]; io.mapRequired("Kind", kind); io.mapOptional("Name", Entry.Name); std::string loc = Entry.FileName + "|" + std::to_string(Entry.Line) + "|" + std::to_string(Entry.Column); io.mapOptional("Location", loc); io.mapRequired("TimeStamp", Entry.TimeStamp); io.mapOptional("MemoryUsage", Entry.MemoryUsage); std::string ori = Entry.TempOri_FileName + "|" + std::to_string(Entry.TempOri_Line) + "|" + std::to_string(Entry.TempOri_Column); io.mapOptional("TemplateOrigin", ori); }
void MappingTraits<PdbObject>::mapping(IO &IO, PdbObject &Obj) { // Create a single serialization context that will be passed through the // entire process of serializing / deserializing a Tpi Stream. This is // especially important when we are going from Pdb -> Yaml because we need // to maintain state in a TypeTableBuilder across mappings, and at the end of // the entire process, we need to have one TypeTableBuilder that has every // record. pdb::yaml::SerializationContext Context(IO, Obj.Allocator); IO.mapOptional("MSF", Obj.Headers); IO.mapOptional("StreamSizes", Obj.StreamSizes); IO.mapOptional("StreamMap", Obj.StreamMap); IO.mapOptional("StringTable", Obj.StringTable); IO.mapOptional("PdbStream", Obj.PdbStream); IO.mapOptionalWithContext("DbiStream", Obj.DbiStream, Context); IO.mapOptionalWithContext("TpiStream", Obj.TpiStream, Context); IO.mapOptionalWithContext("IpiStream", Obj.IpiStream, Context); }
static void sectionMapping(IO &IO, ELFYAML::MipsABIFlags &Section) { commonSectionMapping(IO, Section); IO.mapOptional("Version", Section.Version, Hex16(0)); IO.mapRequired("ISA", Section.ISALevel); IO.mapOptional("ISARevision", Section.ISARevision, Hex8(0)); IO.mapOptional("ISAExtension", Section.ISAExtension, ELFYAML::MIPS_AFL_EXT(Mips::AFL_EXT_NONE)); IO.mapOptional("ASEs", Section.ASEs, ELFYAML::MIPS_AFL_ASE(0)); IO.mapOptional("FpABI", Section.FpABI, ELFYAML::MIPS_ABI_FP(Mips::Val_GNU_MIPS_ABI_FP_ANY)); IO.mapOptional("GPRSize", Section.GPRSize, ELFYAML::MIPS_AFL_REG(Mips::AFL_REG_NONE)); IO.mapOptional("CPR1Size", Section.CPR1Size, ELFYAML::MIPS_AFL_REG(Mips::AFL_REG_NONE)); IO.mapOptional("CPR2Size", Section.CPR2Size, ELFYAML::MIPS_AFL_REG(Mips::AFL_REG_NONE)); IO.mapOptional("Flags1", Section.Flags1, ELFYAML::MIPS_AFL_FLAGS1(0)); IO.mapOptional("Flags2", Section.Flags2, Hex32(0)); }
void MappingTraits<MachOYAML::LoadCommand>::mapping( IO &IO, MachOYAML::LoadCommand &LoadCommand) { IO.mapRequired( "cmd", (MachO::LoadCommandType &)LoadCommand.Data.load_command_data.cmd); IO.mapRequired("cmdsize", LoadCommand.Data.load_command_data.cmdsize); #define HANDLE_LOAD_COMMAND(LCName, LCValue, LCStruct) \ case MachO::LCName: \ MappingTraits<MachO::LCStruct>::mapping(IO, \ LoadCommand.Data.LCStruct##_data); \ mapLoadCommandData<MachO::LCStruct>(IO, LoadCommand); \ break; switch (LoadCommand.Data.load_command_data.cmd) { #include "llvm/Support/MachO.def" } IO.mapOptional("PayloadBytes", LoadCommand.PayloadBytes); IO.mapOptional("ZeroPadBytes", LoadCommand.ZeroPadBytes, (uint64_t)0ull); }
void MappingTraits<ELFYAML::Symbol>::mapping(IO &IO, ELFYAML::Symbol &Symbol) { IO.mapOptional("Name", Symbol.Name, StringRef()); IO.mapOptional("Type", Symbol.Type, ELFYAML::ELF_STT(0)); IO.mapOptional("Section", Symbol.Section, StringRef()); IO.mapOptional("Index", Symbol.Index); IO.mapOptional("Value", Symbol.Value, Hex64(0)); IO.mapOptional("Size", Symbol.Size, Hex64(0)); MappingNormalization<NormalizedOther, uint8_t> Keys(IO, Symbol.Other); IO.mapOptional("Visibility", Keys->Visibility, ELFYAML::ELF_STV(0)); IO.mapOptional("Other", Keys->Other, ELFYAML::ELF_STO(0)); }
void MappingTraits<MachOYAML::FatArch>::mapping(IO &IO, MachOYAML::FatArch &FatArch) { IO.mapRequired("cputype", FatArch.cputype); IO.mapRequired("cpusubtype", FatArch.cpusubtype); IO.mapRequired("offset", FatArch.offset); IO.mapRequired("size", FatArch.size); IO.mapRequired("align", FatArch.align); IO.mapOptional("reserved", FatArch.reserved, static_cast<llvm::yaml::Hex32>(0)); }
void MappingTraits<PdbDbiStream>::mapping(IO &IO, PdbDbiStream &Obj) { IO.mapRequired("VerHeader", Obj.VerHeader); IO.mapRequired("Age", Obj.Age); IO.mapRequired("BuildNumber", Obj.BuildNumber); IO.mapRequired("PdbDllVersion", Obj.PdbDllVersion); IO.mapRequired("PdbDllRbld", Obj.PdbDllRbld); IO.mapRequired("Flags", Obj.Flags); IO.mapRequired("MachineType", Obj.MachineType); IO.mapOptional("Modules", Obj.ModInfos); }
void MappingContextTraits<PdbDbiStream, pdb::yaml::SerializationContext>::mapping(IO &IO, PdbDbiStream &Obj, pdb::yaml::SerializationContext &Context) { IO.mapOptional("VerHeader", Obj.VerHeader, PdbDbiV70); IO.mapOptional("Age", Obj.Age, 1U); IO.mapOptional("BuildNumber", Obj.BuildNumber, uint16_t(0U)); IO.mapOptional("PdbDllVersion", Obj.PdbDllVersion, 0U); IO.mapOptional("PdbDllRbld", Obj.PdbDllRbld, uint16_t(0U)); IO.mapOptional("Flags", Obj.Flags, uint16_t(1U)); IO.mapOptional("MachineType", Obj.MachineType, PDB_Machine::x86); IO.mapOptionalWithContext("Modules", Obj.ModInfos, Context); }
void MappingTraits<MachOYAML::FileHeader>::mapping( IO &IO, MachOYAML::FileHeader &FileHdr) { IO.mapRequired("magic", FileHdr.magic); IO.mapRequired("cputype", FileHdr.cputype); IO.mapRequired("cpusubtype", FileHdr.cpusubtype); IO.mapRequired("filetype", FileHdr.filetype); IO.mapRequired("ncmds", FileHdr.ncmds); IO.mapRequired("sizeofcmds", FileHdr.sizeofcmds); IO.mapRequired("flags", FileHdr.flags); IO.mapOptional("reserved", FileHdr.reserved, static_cast<llvm::yaml::Hex32>(0xDEADBEEFu)); }
static void mapping(IO &IO, RecordInfo &I) { SymbolInfoMapping(IO, I); IO.mapOptional("TagType", I.TagType, clang::TagTypeKind::TTK_Struct); IO.mapOptional("Members", I.Members); IO.mapOptional("Parents", I.Parents, llvm::SmallVector<Reference, 4>()); IO.mapOptional("VirtualParents", I.VirtualParents, llvm::SmallVector<Reference, 4>()); IO.mapOptional("ChildRecords", I.ChildRecords, std::vector<Reference>()); IO.mapOptional("ChildFunctions", I.ChildFunctions); IO.mapOptional("ChildEnums", I.ChildEnums); }
static void mapping(IO &io, Relocation &reloc) { io.mapRequired("offset", reloc.offset); io.mapOptional("scattered", reloc.scattered, false); io.mapRequired("type", reloc.type); io.mapRequired("length", reloc.length); io.mapRequired("pc-rel", reloc.pcRel); if ( !reloc.scattered ) io.mapRequired("extern", reloc.isExtern); if ( reloc.scattered ) io.mapRequired("value", reloc.value); if ( !reloc.scattered ) io.mapRequired("symbol", reloc.symbol); }
void MappingTraits<MachOYAML::ExportEntry>::mapping( IO &IO, MachOYAML::ExportEntry &ExportEntry) { IO.mapRequired("TerminalSize", ExportEntry.TerminalSize); IO.mapOptional("NodeOffset", ExportEntry.NodeOffset); IO.mapOptional("Name", ExportEntry.Name); IO.mapOptional("Flags", ExportEntry.Flags); IO.mapOptional("Address", ExportEntry.Address); IO.mapOptional("Other", ExportEntry.Other); IO.mapOptional("ImportName", ExportEntry.ImportName); IO.mapOptional("Children", ExportEntry.Children); }
static void mapping(IO &YamlIO, KernelArg::Metadata &A) { YamlIO.mapRequired(KeyName::ArgSize, A.Size); YamlIO.mapRequired(KeyName::ArgAlign, A.Align); YamlIO.mapOptional(KeyName::ArgPointeeAlign, A.PointeeAlign, 0U); YamlIO.mapRequired(KeyName::ArgKind, A.Kind); YamlIO.mapRequired(KeyName::ArgValueType, A.ValueType); YamlIO.mapOptional(KeyName::ArgTypeName, A.TypeName, std::string()); YamlIO.mapOptional(KeyName::ArgName, A.Name, std::string()); YamlIO.mapOptional(KeyName::ArgAddrQual, A.AddrQual, INVALID_ADDR_QUAL); YamlIO.mapOptional(KeyName::ArgAccQual, A.AccQual, INVALID_ACC_QUAL); YamlIO.mapOptional(KeyName::ArgIsVolatile, A.IsVolatile, uint8_t(0)); YamlIO.mapOptional(KeyName::ArgIsConst, A.IsConst, uint8_t(0)); YamlIO.mapOptional(KeyName::ArgIsRestrict, A.IsRestrict, uint8_t(0)); YamlIO.mapOptional(KeyName::ArgIsPipe, A.IsPipe, uint8_t(0)); }
static void mapping(IO &IO, ClangTidyOptions &Options) { MappingNormalization<NOptionMap, ClangTidyOptions::OptionMap> NOpts( IO, Options.CheckOptions); IO.mapOptional("Checks", Options.Checks); IO.mapOptional("WarningsAsErrors", Options.WarningsAsErrors); IO.mapOptional("HeaderFilterRegex", Options.HeaderFilterRegex); IO.mapOptional("AnalyzeTemporaryDtors", Options.AnalyzeTemporaryDtors); IO.mapOptional("User", Options.User); IO.mapOptional("CheckOptions", NOpts->Options); IO.mapOptional("ExtraArgs", Options.ExtraArgs); IO.mapOptional("ExtraArgsBefore", Options.ExtraArgsBefore); }
void MappingTraits<MachOYAML::Object>::mapping(IO &IO, MachOYAML::Object &Object) { // If the context isn't already set, tag the document as !mach-o. // For Fat files there will be a different tag so they can be differentiated. if (!IO.getContext()) { IO.setContext(&Object); } IO.mapTag("!mach-o", true); IO.mapOptional("IsLittleEndian", Object.IsLittleEndian, sys::IsLittleEndianHost); Object.DWARF.IsLittleEndian = Object.IsLittleEndian; IO.mapRequired("FileHeader", Object.Header); IO.mapOptional("LoadCommands", Object.LoadCommands); if(!Object.LinkEdit.isEmpty() || !IO.outputting()) IO.mapOptional("LinkEditData", Object.LinkEdit); if(!Object.DWARF.isEmpty() || !IO.outputting()) IO.mapOptional("DWARF", Object.DWARF); if (IO.getContext() == &Object) IO.setContext(nullptr); }
static void commonSectionMapping(IO &IO, ELFYAML::Section &Section) { IO.mapOptional("Name", Section.Name, StringRef()); IO.mapRequired("Type", Section.Type); IO.mapOptional("Flags", Section.Flags, ELFYAML::ELF_SHF(0)); IO.mapOptional("Address", Section.Address, Hex64(0)); IO.mapOptional("Link", Section.Link, StringRef()); IO.mapOptional("AddressAlign", Section.AddressAlign, Hex64(0)); IO.mapOptional("Info", Section.Info, StringRef()); }
static void mapping(IO &io, ::swift::sma::EnumDecl &ED) { io.mapRequired("Name", ED.Name); io.mapOptional("GenericSignature", ED.TheGenericSignature); io.mapOptional("RawType", ED.RawType); io.mapOptional("ConformsToProtocols", ED.ConformsToProtocols); io.mapOptional("Attributes", ED.Attributes, ::swift::sma::DeclAttributes()); io.mapOptional("Cases", ED.Cases); io.mapOptional("NestedDecls", ED.Decls, ::swift::sma::NestedDecls()); }
static void mapping(IO &YamlIO, Kernel::Metadata &K) { YamlIO.mapRequired(KeyName::KernelName, K.Name); YamlIO.mapOptional(KeyName::Language, K.Language, std::string()); YamlIO.mapOptional(KeyName::LanguageVersion, K.LanguageVersion); YamlIO.mapOptional(KeyName::ReqdWorkGroupSize, K.ReqdWorkGroupSize); YamlIO.mapOptional(KeyName::WorkGroupSizeHint, K.WorkGroupSizeHint); YamlIO.mapOptional(KeyName::VecTypeHint, K.VecTypeHint, std::string()); YamlIO.mapOptional(KeyName::KernelIndex, K.KernelIndex, INVALID_KERNEL_INDEX); YamlIO.mapOptional(KeyName::NoPartialWorkGroups, K.NoPartialWorkGroups, uint8_t(0)); YamlIO.mapOptional(KeyName::Args, K.Args); }
void MappingTraits<MachOYAML::Section>::mapping(IO &IO, MachOYAML::Section &Section) { IO.mapRequired("sectname", Section.sectname); IO.mapRequired("segname", Section.segname); IO.mapRequired("addr", Section.addr); IO.mapRequired("size", Section.size); IO.mapRequired("offset", Section.offset); IO.mapRequired("align", Section.align); IO.mapRequired("reloff", Section.reloff); IO.mapRequired("nreloc", Section.nreloc); IO.mapRequired("flags", Section.flags); IO.mapRequired("reserved1", Section.reserved1); IO.mapRequired("reserved2", Section.reserved2); IO.mapOptional("reserved3", Section.reserved3); }
void MappingTraits<ELFYAML::Section>::mapping(IO &IO, ELFYAML::Section &Section) { IO.mapOptional("Name", Section.Name, StringRef()); IO.mapRequired("Type", Section.Type); IO.mapOptional("Flags", Section.Flags, ELFYAML::ELF_SHF(0)); IO.mapOptional("Address", Section.Address, Hex64(0)); IO.mapOptional("Content", Section.Content); IO.mapOptional("Link", Section.Link); IO.mapOptional("AddressAlign", Section.AddressAlign, Hex64(0)); }