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);
}
Esempio n. 2
0
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);
}
Esempio n. 3
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);
}
Esempio n. 4
0
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);
}
Esempio n. 5
0
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);
}
Esempio n. 6
0
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);
}
Esempio n. 7
0
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);
}
Esempio n. 8
0
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);
 }
Esempio n. 12
0
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);
}
Esempio n. 13
0
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));
}
Esempio n. 14
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);
}
Esempio n. 15
0
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));
}
Esempio n. 16
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));
}
Esempio n. 17
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);
}
Esempio n. 18
0
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);
}
Esempio n. 19
0
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);
 }
Esempio n. 22
0
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);
}
Esempio n. 23
0
 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));
 }
Esempio n. 24
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);
 }
Esempio n. 25
0
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);
}
Esempio n. 26
0
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());
}
Esempio n. 27
0
 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());
 }
Esempio n. 28
0
 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);
 }
Esempio n. 29
0
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);
}
Esempio n. 30
0
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));
}