Lines Matching full:io

79 void ScalarEnumerationTraits<SymbolKind>::enumeration(IO &io,
83 io.enumCase(Value, E.Name.str().c_str(), E.Value);
86 void ScalarBitSetTraits<CompileSym2Flags>::bitset(IO &io,
90 io.bitSetCase(Flags, E.Name.str().c_str(),
95 void ScalarBitSetTraits<CompileSym3Flags>::bitset(IO &io,
99 io.bitSetCase(Flags, E.Name.str().c_str(),
104 void ScalarBitSetTraits<ExportFlags>::bitset(IO &io, ExportFlags &Flags) {
107 io.bitSetCase(Flags, E.Name.str().c_str(),
112 void ScalarBitSetTraits<PublicSymFlags>::bitset(IO &io, PublicSymFlags &Flags) {
115 io.bitSetCase(Flags, E.Name.str().c_str(),
120 void ScalarBitSetTraits<LocalSymFlags>::bitset(IO &io, LocalSymFlags &Flags) {
123 io.bitSetCase(Flags, E.Name.str().c_str(),
128 void ScalarBitSetTraits<ProcSymFlags>::bitset(IO &io, ProcSymFlags &Flags) {
131 io.bitSetCase(Flags, E.Name.str().c_str(),
137 IO &io, FrameProcedureOptions &Flags) {
140 io.bitSetCase(Flags, E.Name.str().c_str(),
145 void ScalarEnumerationTraits<CPUType>::enumeration(IO &io, CPUType &Cpu) {
148 io.enumCase(Cpu, E.Name.str().c_str(), static_cast<CPUType>(E.Value));
152 void ScalarEnumerationTraits<RegisterId>::enumeration(IO &io, RegisterId &Reg) {
153 const auto *Header = static_cast<COFF::header *>(io.getContext());
154 assert(Header && "The IO context is not initialized");
180 io.enumCase(Reg, E.Name.str().c_str(), static_cast<RegisterId>(E.Value));
182 io.enumFallback<Hex16>(Reg);
186 IO &io, TrampolineType &Tramp) {
189 io.enumCase(Tramp, E.Name.str().c_str(),
194 void ScalarEnumerationTraits<ThunkOrdinal>::enumeration(IO &io,
198 io.enumCase(Ord, E.Name.str().c_str(), static_cast<ThunkOrdinal>(E.Value));
203 IO &io, FrameCookieKind &FC) {
206 io.enumCase(FC, E.Name.str().c_str(),
212 IO &io, JumpTableEntrySize &FC) {
215 io.enumCase(FC, E.Name.str().c_str(),
223 static void mapping(IO &io, LocalVariableAddrRange &Range) {
224 io.mapRequired("OffsetStart", Range.OffsetStart);
225 io.mapRequired("ISectStart", Range.ISectStart);
226 io.mapRequired("Range", Range.Range);
230 static void mapping(IO &io, LocalVariableAddrGap &Gap) {
231 io.mapRequired("GapStartOffset", Gap.GapStartOffset);
232 io.mapRequired("Range", Gap.Range);
248 virtual void map(yaml::IO &io) = 0;
259 void map(yaml::IO &io) override;
277 void map(yaml::IO &io) override;
300 template <> void SymbolRecordImpl<ScopeEndSym>::map(IO &IO) {}
302 void UnknownSymbolRecord::map(yaml::IO &io) {
304 if (io.outputting())
306 io.mapRequired("Data", Binary);
307 if (!io.outputting()) {
316 template <> void SymbolRecordImpl<Thunk32Sym>::map(IO &IO) {
317 IO.mapRequired("Parent", Symbol.Parent);
318 IO.mapRequired("End", Symbol.End);
319 IO.mapRequired("Next", Symbol.Next);
320 IO.mapRequired("Off", Symbol.Offset);
321 IO.mapRequired("Seg", Symbol.Segment);
322 IO.mapRequired("Len", Symbol.Length);
323 IO.mapRequired("Ordinal", Symbol.Thunk);
326 template <> void SymbolRecordImpl<TrampolineSym>::map(IO &IO) {
327 IO.mapRequired("Type", Symbol.Type);
328 IO.mapRequired("Size", Symbol.Size);
329 IO.mapRequired("ThunkOff", Symbol.ThunkOffset);
330 IO.mapRequired("TargetOff", Symbol.TargetOffset);
331 IO.mapRequired("ThunkSection", Symbol.ThunkSection);
332 IO.mapRequired("TargetSection", Symbol.TargetSection);
335 template <> void SymbolRecordImpl<SectionSym>::map(IO &IO) {
336 IO.mapRequired("SectionNumber", Symbol.SectionNumber);
337 IO.mapRequired("Alignment", Symbol.Alignment);
338 IO.mapRequired("Rva", Symbol.Rva);
339 IO.mapRequired("Length", Symbol.Length);
340 IO.mapRequired("Characteristics", Symbol.Characteristics);
341 IO.mapRequired("Name", Symbol.Name);
344 template <> void SymbolRecordImpl<CoffGroupSym>::map(IO &IO) {
345 IO.mapRequired("Size", Symbol.Size);
346 IO.mapRequired("Characteristics", Symbol.Characteristics);
347 IO.mapRequired("Offset", Symbol.Offset);
348 IO.mapRequired("Segment", Symbol.Segment);
349 IO.mapRequired("Name", Symbol.Name);
352 template <> void SymbolRecordImpl<ExportSym>::map(IO &IO) {
353 IO.mapRequired("Ordinal", Symbol.Ordinal);
354 IO.mapRequired("Flags", Symbol.Flags);
355 IO.mapRequired("Name", Symbol.Name);
358 template <> void SymbolRecordImpl<ProcSym>::map(IO &IO) {
359 IO.mapOptional("PtrParent", Symbol.Parent, 0U);
360 IO.mapOptional("PtrEnd", Symbol.End, 0U);
361 IO.mapOptional("PtrNext", Symbol.Next, 0U);
362 IO.mapRequired("CodeSize", Symbol.CodeSize);
363 IO.mapRequired("DbgStart", Symbol.DbgStart);
364 IO.mapRequired("DbgEnd", Symbol.DbgEnd);
365 IO.mapRequired("FunctionType", Symbol.FunctionType);
366 IO.mapOptional("Offset", Symbol.CodeOffset, 0U);
367 IO.mapOptional("Segment", Symbol.Segment, uint16_t(0));
368 IO.mapRequired("Flags", Symbol.Flags);
369 IO.mapRequired("DisplayName", Symbol.Name);
372 template <> void SymbolRecordImpl<RegisterSym>::map(IO &IO) {
373 IO.mapRequired("Type", Symbol.Index);
374 IO.mapRequired("Seg", Symbol.Register);
375 IO.mapRequired("Name", Symbol.Name);
378 template <> void SymbolRecordImpl<PublicSym32>::map(IO &IO) {
379 IO.mapRequired("Flags", Symbol.Flags);
380 IO.mapOptional("Offset", Symbol.Offset, 0U);
381 IO.mapOptional("Segment", Symbol.Segment, uint16_t(0));
382 IO.mapRequired("Name", Symbol.Name);
385 template <> void SymbolRecordImpl<ProcRefSym>::map(IO &IO) {
386 IO.mapRequired("SumName", Symbol.SumName);
387 IO.mapRequired("SymOffset", Symbol.SymOffset);
388 IO.mapRequired("Mod", Symbol.Module);
389 IO.mapRequired("Name", Symbol.Name);
392 template <> void SymbolRecordImpl<EnvBlockSym>::map(IO &IO) {
393 IO.mapRequired("Entries", Symbol.Fields);
396 template <> void SymbolRecordImpl<InlineSiteSym>::map(IO &IO) {
397 IO.mapOptional("PtrParent", Symbol.Parent, 0U);
398 IO.mapOptional("PtrEnd", Symbol.End, 0U);
399 IO.mapRequired("Inlinee", Symbol.Inlinee);
403 template <> void SymbolRecordImpl<LocalSym>::map(IO &IO) {
404 IO.mapRequired("Type", Symbol.Type);
405 IO.mapRequired("Flags", Symbol.Flags);
407 IO.mapRequired("VarName", Symbol.Name);
410 template <> void SymbolRecordImpl<DefRangeSym>::map(IO &IO) {
411 IO.mapRequired("Program", Symbol.Program);
412 IO.mapRequired("Range", Symbol.Range);
413 IO.mapRequired("Gaps", Symbol.Gaps);
416 template <> void SymbolRecordImpl<DefRangeSubfieldSym>::map(IO &IO) {
417 IO.mapRequired("Program", Symbol.Program);
418 IO.mapRequired("OffsetInParent", Symbol.OffsetInParent);
419 IO.mapRequired("Range", Symbol.Range);
420 IO.mapRequired("Gaps", Symbol.Gaps);
423 template <> void SymbolRecordImpl<DefRangeRegisterSym>::map(IO &IO) {
424 IO.mapRequired("Register", Symbol.Hdr.Register);
425 IO.mapRequired("MayHaveNoName", Symbol.Hdr.MayHaveNoName);
426 IO.mapRequired("Range", Symbol.Range);
427 IO.mapRequired("Gaps", Symbol.Gaps);
430 template <> void SymbolRecordImpl<DefRangeFramePointerRelSym>::map(IO &IO) {
431 IO.mapRequired("Offset", Symbol.Hdr.Offset);
432 IO.mapRequired("Range", Symbol.Range);
433 IO.mapRequired("Gaps", Symbol.Gaps);
436 template <> void SymbolRecordImpl<DefRangeSubfieldRegisterSym>::map(IO &IO) {
437 IO.mapRequired("Register", Symbol.Hdr.Register);
438 IO.mapRequired("MayHaveNoName", Symbol.Hdr.MayHaveNoName);
439 IO.mapRequired("OffsetInParent", Symbol.Hdr.OffsetInParent);
440 IO.mapRequired("Range", Symbol.Range);
441 IO.mapRequired("Gaps", Symbol.Gaps);
445 void SymbolRecordImpl<DefRangeFramePointerRelFullScopeSym>::map(IO &IO) {
446 IO.mapRequired("Register", Symbol.Offset);
449 template <> void SymbolRecordImpl<DefRangeRegisterRelSym>::map(IO &IO) {
450 IO.mapRequired("Register", Symbol.Hdr.Register);
451 IO.mapRequired("Flags", Symbol.Hdr.Flags);
452 IO.mapRequired("BasePointerOffset", Symbol.Hdr.BasePointerOffset);
453 IO.mapRequired("Range", Symbol.Range);
454 IO.mapRequired("Gaps", Symbol.Gaps);
457 template <> void SymbolRecordImpl<BlockSym>::map(IO &IO) {
458 IO.mapOptional("PtrParent", Symbol.Parent, 0U);
459 IO.mapOptional("PtrEnd", Symbol.End, 0U);
460 IO.mapRequired("CodeSize", Symbol.CodeSize);
461 IO.mapOptional("Offset", Symbol.CodeOffset, 0U);
462 IO.mapOptional("Segment", Symbol.Segment, uint16_t(0));
463 IO.mapRequired("BlockName", Symbol.Name);
466 template <> void SymbolRecordImpl<LabelSym>::map(IO &IO) {
467 IO.mapOptional("Offset", Symbol.CodeOffset, 0U);
468 IO.mapOptional("Segment", Symbol.Segment, uint16_t(0));
469 IO.mapRequired("Flags", Symbol.Flags);
470 IO.mapRequired("DisplayName", Symbol.Name);
473 template <> void SymbolRecordImpl<ObjNameSym>::map(IO &IO) {
474 IO.mapRequired("Signature", Symbol.Signature);
475 IO.mapRequired("ObjectName", Symbol.Name);
478 template <> void SymbolRecordImpl<Compile2Sym>::map(IO &IO) {
479 IO.mapRequired("Flags", Symbol.Flags);
480 IO.mapRequired("Machine", Symbol.Machine);
481 IO.mapRequired("FrontendMajor", Symbol.VersionFrontendMajor);
482 IO.mapRequired("FrontendMinor", Symbol.VersionFrontendMinor);
483 IO.mapRequired("FrontendBuild", Symbol.VersionFrontendBuild);
484 IO.mapRequired("BackendMajor", Symbol.VersionBackendMajor);
485 IO.mapRequired("BackendMinor", Symbol.VersionBackendMinor);
486 IO.mapRequired("BackendBuild", Symbol.VersionBackendBuild);
487 IO.mapRequired("Version", Symbol.Version);
490 template <> void SymbolRecordImpl<Compile3Sym>::map(IO &IO) {
491 IO.mapRequired("Flags", Symbol.Flags);
492 IO.mapRequired("Machine", Symbol.Machine);
493 IO.mapRequired("FrontendMajor", Symbol.VersionFrontendMajor);
494 IO.mapRequired("FrontendMinor", Symbol.VersionFrontendMinor);
495 IO.mapRequired("FrontendBuild", Symbol.VersionFrontendBuild);
496 IO.mapRequired("FrontendQFE", Symbol.VersionFrontendQFE);
497 IO.mapRequired("BackendMajor", Symbol.VersionBackendMajor);
498 IO.mapRequired("BackendMinor", Symbol.VersionBackendMinor);
499 IO.mapRequired("BackendBuild", Symbol.VersionBackendBuild);
500 IO.mapRequired("BackendQFE", Symbol.VersionBackendQFE);
501 IO.mapRequired("Version", Symbol.Version);
504 template <> void SymbolRecordImpl<FrameProcSym>::map(IO &IO) {
505 IO.mapRequired("TotalFrameBytes", Symbol.TotalFrameBytes);
506 IO.mapRequired("PaddingFrameBytes", Symbol.PaddingFrameBytes);
507 IO.mapRequired("OffsetToPadding", Symbol.OffsetToPadding);
508 IO.mapRequired("BytesOfCalleeSavedRegisters",
510 IO.mapRequired("OffsetOfExceptionHandler", Symbol.OffsetOfExceptionHandler);
511 IO.mapRequired("SectionIdOfExceptionHandler",
513 IO.mapRequired("Flags", Symbol.Flags);
516 template <> void SymbolRecordImpl<CallSiteInfoSym>::map(IO &IO) {
517 IO.mapOptional("Offset", Symbol.CodeOffset, 0U);
518 IO.mapOptional("Segment", Symbol.Segment, uint16_t(0));
519 IO.mapRequired("Type", Symbol.Type);
522 template <> void SymbolRecordImpl<FileStaticSym>::map(IO &IO) {
523 IO.mapRequired("Index", Symbol.Index);
524 IO.mapRequired("ModFilenameOffset", Symbol.ModFilenameOffset);
525 IO.mapRequired("Flags", Symbol.Flags);
526 IO.mapRequired("Name", Symbol.Name);
529 template <> void SymbolRecordImpl<HeapAllocationSiteSym>::map(IO &IO) {
530 IO.mapOptional("Offset", Symbol.CodeOffset, 0U);
531 IO.mapOptional("Segment", Symbol.Segment, uint16_t(0));
532 IO.mapRequired("CallInstructionSize", Symbol.CallInstructionSize);
533 IO.mapRequired("Type", Symbol.Type);
536 template <> void SymbolRecordImpl<FrameCookieSym>::map(IO &IO) {
537 IO.mapRequired("Register", Symbol.Register);
538 IO.mapRequired("CookieKind", Symbol.CookieKind);
539 IO.mapRequired("Flags", Symbol.Flags);
542 template <> void SymbolRecordImpl<CallerSym>::map(IO &IO) {
543 IO.mapRequired("FuncID", Symbol.Indices);
546 template <> void SymbolRecordImpl<UDTSym>::map(IO &IO) {
547 IO.mapRequired("Type", Symbol.Type);
548 IO.mapRequired("UDTName", Symbol.Name);
551 template <> void SymbolRecordImpl<BuildInfoSym>::map(IO &IO) {
552 IO.mapRequired("BuildId", Symbol.BuildId);
555 template <> void SymbolRecordImpl<BPRelativeSym>::map(IO &IO) {
556 IO.mapRequired("Offset", Symbol.Offset);
557 IO.mapRequired("Type", Symbol.Type);
558 IO.mapRequired("VarName", Symbol.Name);
561 template <> void SymbolRecordImpl<RegRelativeSym>::map(IO &IO) {
562 IO.mapRequired("Offset", Symbol.Offset);
563 IO.mapRequired("Type", Symbol.Type);
564 IO.mapRequired("Register", Symbol.Register);
565 IO.mapRequired("VarName", Symbol.Name);
568 template <> void SymbolRecordImpl<ConstantSym>::map(IO &IO) {
569 IO.mapRequired("Type", Symbol.Type);
570 IO.mapRequired("Value", Symbol.Value);
571 IO.mapRequired("Name", Symbol.Name);
574 template <> void SymbolRecordImpl<DataSym>::map(IO &IO) {
575 IO.mapRequired("Type", Symbol.Type);
576 IO.mapOptional("Offset", Symbol.DataOffset, 0U);
577 IO.mapOptional("Segment", Symbol.Segment, uint16_t(0));
578 IO.mapRequired("DisplayName", Symbol.Name);
581 template <> void SymbolRecordImpl<ThreadLocalDataSym>::map(IO &IO) {
582 IO.mapRequired("Type", Symbol.Type);
583 IO.mapOptional("Offset", Symbol.DataOffset, 0U);
584 IO.mapOptional("Segment", Symbol.Segment, uint16_t(0));
585 IO.mapRequired("DisplayName", Symbol.Name);
588 template <> void SymbolRecordImpl<UsingNamespaceSym>::map(IO &IO) {
589 IO.mapRequired("Namespace", Symbol.Name);
592 template <> void SymbolRecordImpl<AnnotationSym>::map(IO &IO) {
593 IO.mapOptional("Offset", Symbol.CodeOffset, 0U);
594 IO.mapOptional("Segment", Symbol.Segment, uint16_t(0));
595 IO.mapRequired("Strings", Symbol.Strings);
598 template <> void SymbolRecordImpl<JumpTableSym>::map(IO &IO) {
599 IO.mapRequired("BaseOffset", Symbol.BaseOffset);
600 IO.mapRequired("BaseSegment", Symbol.BaseSegment);
601 IO.mapRequired("SwitchType", Symbol.SwitchType);
602 IO.mapRequired("BranchOffset", Symbol.BranchOffset);
603 IO.mapRequired("TableOffset", Symbol.TableOffset);
604 IO.mapRequired("BranchSegment", Symbol.BranchSegment);
605 IO.mapRequired("TableSegment", Symbol.TableSegment);
606 IO.mapRequired("EntriesCount", Symbol.EntriesCount);
622 static void mapping(IO &io, SymbolRecordBase &Record) { Record.map(io); }
656 static void mapSymbolRecordImpl(IO &IO, const char *Class, SymbolKind Kind,
658 if (!IO.outputting())
661 IO.mapRequired(Class, *Obj.Symbol);
665 IO &IO, CodeViewYAML::SymbolRecord &Obj) {
667 if (IO.outputting())
669 IO.mapRequired("Kind", Kind);
673 mapSymbolRecordImpl<SymbolRecordImpl<ClassName>>(IO, #ClassName, Kind, \
681 mapSymbolRecordImpl<UnknownSymbolRecord>(IO, "UnknownSym", Kind, Obj);