Lines Matching full:io

19 #define ECase(X) IO.enumCase(Value, #X, COFF::X);
34 IO &IO, COFFYAML::COMDATType &Value) {
35 IO.enumCase(Value, "0", 0);
47 IO &IO, COFFYAML::WeakExternalCharacteristics &Value) {
48 IO.enumCase(Value, "0", 0);
56 IO &IO, COFFYAML::AuxSymbolType &Value) {
61 IO &IO, COFF::MachineTypes &Value) {
92 IO &IO, COFF::SymbolBaseType &Value) {
112 IO &IO, COFF::SymbolStorageClass &Value) {
143 IO &IO, COFF::SymbolComplexType &Value) {
151 IO &IO, COFF::RelocationTypeI386 &Value) {
166 IO &IO, COFF::RelocationTypeAMD64 &Value) {
187 IO &IO, COFF::RelocationTypesARM &Value) {
208 IO &IO, COFF::RelocationTypesARM64 &Value) {
230 IO &IO, COFF::WindowsSubsystem &Value) {
248 #define BCase(X) IO.bitSetCase(Value, #X, COFF::X);
250 IO &IO, COFF::Characteristics &Value) {
269 IO &IO, COFF::SectionCharacteristics &Value) {
295 IO &IO, COFF::DLLCharacteristics &Value) {
313 NSectionSelectionType(IO &)
315 NSectionSelectionType(IO &, uint8_t C)
318 uint8_t denormalize(IO &) { return SelectionType; }
324 NWeakExternalCharacteristics(IO &)
326 NWeakExternalCharacteristics(IO &, uint32_t C)
329 uint32_t denormalize(IO &) { return Characteristics; }
335 NSectionCharacteristics(IO &)
337 NSectionCharacteristics(IO &, uint32_t C)
340 uint32_t denormalize(IO &) { return Characteristics; }
346 NAuxTokenType(IO &)
348 NAuxTokenType(IO &, uint8_t C)
351 uint32_t denormalize(IO &) { return AuxType; }
357 NStorageClass(IO &) : StorageClass(COFF::SymbolStorageClass(0)) {}
358 NStorageClass(IO &, uint8_t S) : StorageClass(COFF::SymbolStorageClass(S)) {}
360 uint8_t denormalize(IO &) { return StorageClass; }
366 NMachine(IO &) : Machine(COFF::MachineTypes(0)) {}
367 NMachine(IO &, uint16_t M) : Machine(COFF::MachineTypes(M)) {}
369 uint16_t denormalize(IO &) { return Machine; }
375 NHeaderCharacteristics(IO &) : Characteristics(COFF::Characteristics(0)) {}
376 NHeaderCharacteristics(IO &, uint16_t C)
379 uint16_t denormalize(IO &) { return Characteristics; }
386 NType(IO &) : Type(RelocType(0)) {}
387 NType(IO &, uint16_t T) : Type(RelocType(T)) {}
389 uint16_t denormalize(IO &) { return Type; }
395 NWindowsSubsystem(IO &) : Subsystem(COFF::WindowsSubsystem(0)) {}
396 NWindowsSubsystem(IO &, uint16_t C) : Subsystem(COFF::WindowsSubsystem(C)) {}
398 uint16_t denormalize(IO &) { return Subsystem; }
404 NDLLCharacteristics(IO &) : Characteristics(COFF::DLLCharacteristics(0)) {}
405 NDLLCharacteristics(IO &, uint16_t C)
408 uint16_t denormalize(IO &) { return Characteristics; }
415 void MappingTraits<COFFYAML::Relocation>::mapping(IO &IO,
417 IO.mapRequired("VirtualAddress", Rel.VirtualAddress);
418 IO.mapOptional("SymbolName", Rel.SymbolName, StringRef());
419 IO.mapOptional("SymbolTableIndex", Rel.SymbolTableIndex);
421 COFF::header &H = *static_cast<COFF::header *>(IO.getContext());
424 IO, Rel.Type);
425 IO.mapRequired("Type", NT->Type);
428 IO, Rel.Type);
429 IO.mapRequired("Type", NT->Type);
432 IO, Rel.Type);
433 IO.mapRequired("Type", NT->Type);
436 IO, Rel.Type);
437 IO.mapRequired("Type", NT->Type);
439 IO.mapRequired("Type", Rel.Type);
443 void MappingTraits<COFF::DataDirectory>::mapping(IO &IO,
445 IO.mapRequired("RelativeVirtualAddress", DD.RelativeVirtualAddress);
446 IO.mapRequired("Size", DD.Size);
449 void MappingTraits<COFFYAML::PEHeader>::mapping(IO &IO,
451 MappingNormalization<NWindowsSubsystem, uint16_t> NWS(IO,
454 IO, PH.Header.DLLCharacteristics);
456 IO.mapOptional("AddressOfEntryPoint", PH.Header.AddressOfEntryPoint);
457 IO.mapOptional("ImageBase", PH.Header.ImageBase);
458 IO.mapOptional("SectionAlignment", PH.Header.SectionAlignment, 1);
459 IO.mapOptional("FileAlignment", PH.Header.FileAlignment, 1);
460 IO.mapOptional("MajorOperatingSystemVersion",
462 IO.mapOptional("MinorOperatingSystemVersion",
464 IO.mapOptional("MajorImageVersion", PH.Header.MajorImageVersion);
465 IO.mapOptional("MinorImageVersion", PH.Header.MinorImageVersion);
466 IO.mapOptional("MajorSubsystemVersion", PH.Header.MajorSubsystemVersion);
467 IO.mapOptional("MinorSubsystemVersion", PH.Header.MinorSubsystemVersion);
468 IO.mapOptional("Subsystem", NWS->Subsystem);
469 IO.mapOptional("DLLCharacteristics", NDC->Characteristics);
470 IO.mapOptional("SizeOfStackReserve", PH.Header.SizeOfStackReserve);
471 IO.mapOptional("SizeOfStackCommit", PH.Header.SizeOfStackCommit);
472 IO.mapOptional("SizeOfHeapReserve", PH.Header.SizeOfHeapReserve);
473 IO.mapOptional("SizeOfHeapCommit", PH.Header.SizeOfHeapCommit);
475 IO.mapOptional("NumberOfRvaAndSize", PH.Header.NumberOfRvaAndSize,
477 IO.mapOptional("ExportTable", PH.DataDirectories[COFF::EXPORT_TABLE]);
478 IO.mapOptional("ImportTable", PH.DataDirectories[COFF::IMPORT_TABLE]);
479 IO.mapOptional("ResourceTable", PH.DataDirectories[COFF::RESOURCE_TABLE]);
480 IO.mapOptional("ExceptionTable", PH.DataDirectories[COFF::EXCEPTION_TABLE]);
481 IO.mapOptional("CertificateTable", PH.DataDirectories[COFF::CERTIFICATE_TABLE]);
482 IO.mapOptional("BaseRelocationTable",
484 IO.mapOptional("Debug", PH.DataDirectories[COFF::DEBUG_DIRECTORY]);
485 IO.mapOptional("Architecture", PH.DataDirectories[COFF::ARCHITECTURE]);
486 IO.mapOptional("GlobalPtr", PH.DataDirectories[COFF::GLOBAL_PTR]);
487 IO.mapOptional("TlsTable", PH.DataDirectories[COFF::TLS_TABLE]);
488 IO.mapOptional("LoadConfigTable",
490 IO.mapOptional("BoundImport", PH.DataDirectories[COFF::BOUND_IMPORT]);
491 IO.mapOptional("IAT", PH.DataDirectories[COFF::IAT]);
492 IO.mapOptional("DelayImportDescriptor",
494 IO.mapOptional("ClrRuntimeHeader",
498 void MappingTraits<COFF::header>::mapping(IO &IO, COFF::header &H) {
499 MappingNormalization<NMachine, uint16_t> NM(IO, H.Machine);
500 MappingNormalization<NHeaderCharacteristics, uint16_t> NC(IO,
503 IO.mapRequired("Machine", NM->Machine);
504 IO.mapOptional("Characteristics", NC->Characteristics);
505 IO.setContext(static_cast<void *>(&H));
509 IO &IO, COFF::AuxiliaryFunctionDefinition &AFD) {
510 IO.mapRequired("TagIndex", AFD.TagIndex);
511 IO.mapRequired("TotalSize", AFD.TotalSize);
512 IO.mapRequired("PointerToLinenumber", AFD.PointerToLinenumber);
513 IO.mapRequired("PointerToNextFunction", AFD.PointerToNextFunction);
517 IO &IO, COFF::AuxiliarybfAndefSymbol &AAS) {
518 IO.mapRequired("Linenumber", AAS.Linenumber);
519 IO.mapRequired("PointerToNextFunction", AAS.PointerToNextFunction);
523 IO &IO, COFF::AuxiliaryWeakExternal &AWE) {
525 IO, AWE.Characteristics);
526 IO.mapRequired("TagIndex", AWE.TagIndex);
527 IO.mapRequired("Characteristics", NWEC->Characteristics);
531 IO &IO, COFF::AuxiliarySectionDefinition &ASD) {
533 IO, ASD.Selection);
535 IO.mapRequired("Length", ASD.Length);
536 IO.mapRequired("NumberOfRelocations", ASD.NumberOfRelocations);
537 IO.mapRequired("NumberOfLinenumbers", ASD.NumberOfLinenumbers);
538 IO.mapRequired("CheckSum", ASD.CheckSum);
539 IO.mapRequired("Number", ASD.Number);
540 IO.mapOptional("Selection", NSST->SelectionType, COFFYAML::COMDATType(0));
544 IO &IO, COFF::AuxiliaryCLRToken &ACT) {
545 MappingNormalization<NAuxTokenType, uint8_t> NATT(IO, ACT.AuxType);
546 IO.mapRequired("AuxType", NATT->AuxType);
547 IO.mapRequired("SymbolTableIndex", ACT.SymbolTableIndex);
551 IO &IO, object::coff_load_config_code_integrity &S) {
552 IO.mapOptional("Flags", S.Flags);
553 IO.mapOptional("Catalog", S.Catalog);
554 IO.mapOptional("CatalogOffset", S.CatalogOffset);
558 void mapLoadConfigMember(IO &IO, T &LoadConfig, const char *Name, M &Member) {
563 IO.mapOptional(Name, Member);
566 template <typename T> void mapLoadConfig(IO &IO, T &LoadConfig) {
567 IO.mapOptional("Size", LoadConfig.Size,
571 IO.setError("Size must be at least " + Twine(sizeof(LoadConfig.Size)));
575 #define MCase(X) mapLoadConfigMember(IO, LoadConfig, #X, LoadConfig.X)
625 IO &IO, object::coff_load_configuration32 &S) {
626 mapLoadConfig(IO, S);
630 IO &IO, object::coff_load_configuration64 &S) {
631 mapLoadConfig(IO, S);
635 IO &IO, COFFYAML::SectionDataEntry &E) {
636 IO.mapOptional("UInt32", E.UInt32);
637 IO.mapOptional("Binary", E.Binary);
639 COFF::header &H = *static_cast<COFF::header *>(IO.getContext());
641 IO.mapOptional("LoadConfig", E.LoadConfig64);
643 IO.mapOptional("LoadConfig", E.LoadConfig32);
646 void MappingTraits<COFFYAML::Symbol>::mapping(IO &IO, COFFYAML::Symbol &S) {
647 MappingNormalization<NStorageClass, uint8_t> NS(IO, S.Header.StorageClass);
649 IO.mapRequired("Name", S.Name);
650 IO.mapRequired("Value", S.Header.Value);
651 IO.mapRequired("SectionNumber", S.Header.SectionNumber);
652 IO.mapRequired("SimpleType", S.SimpleType);
653 IO.mapRequired("ComplexType", S.ComplexType);
654 IO.mapRequired("StorageClass", NS->StorageClass);
655 IO.mapOptional("FunctionDefinition", S.FunctionDefinition);
656 IO.mapOptional("bfAndefSymbol", S.bfAndefSymbol);
657 IO.mapOptional("WeakExternal", S.WeakExternal);
658 IO.mapOptional("File", S.File, StringRef());
659 IO.mapOptional("SectionDefinition", S.SectionDefinition);
660 IO.mapOptional("CLRToken", S.CLRToken);
663 void MappingTraits<COFFYAML::Section>::mapping(IO &IO, COFFYAML::Section &Sec) {
665 IO, Sec.Header.Characteristics);
666 IO.mapRequired("Name", Sec.Name);
667 IO.mapRequired("Characteristics", NC->Characteristics);
668 IO.mapOptional("VirtualAddress", Sec.Header.VirtualAddress, 0U);
669 IO.mapOptional("VirtualSize", Sec.Header.VirtualSize, 0U);
670 IO.mapOptional("Alignment", Sec.Alignment, 0U);
675 IO.mapOptional("SectionData", Sec.SectionData);
677 IO.mapOptional("Subsections", Sec.DebugS);
679 IO.mapOptional("Types", Sec.DebugT);
681 IO.mapOptional("PrecompTypes", Sec.DebugP);
683 IO.mapOptional("GlobalHashes", Sec.DebugH);
685 IO.mapOptional("StructuredData", Sec.StructuredData);
688 IO.setError("StructuredData and SectionData can't be used together");
692 IO.mapOptional("SizeOfRawData", Sec.Header.SizeOfRawData, 0U);
695 IO.setError("StructuredData and SizeOfRawData can't be used together");
699 IO.mapOptional("Relocations", Sec.Relocations);
702 void MappingTraits<COFFYAML::Object>::mapping(IO &IO, COFFYAML::Object &Obj) {
703 IO.mapTag("!COFF", true);
704 IO.mapOptional("OptionalHeader", Obj.OptionalHeader);
705 IO.mapRequired("header", Obj.Header);
706 IO.mapRequired("sections", Obj.Sections);
707 IO.mapRequired("symbols", Obj.Symbols);