Lines Matching full:coff
1 //===- COFFYAML.cpp - COFF YAMLIO implementation --------------------------===//
9 // This file defines classes for handling the YAML representation of COFF.
19 #define ECase(X) IO.enumCase(Value, #X, COFF::X);
25 Section::Section() { memset(&Header, 0, sizeof(COFF::section)); }
26 Symbol::Symbol() { memset(&Header, 0, sizeof(COFF::symbol)); }
27 Object::Object() { memset(&Header, 0, sizeof(COFF::header)); }
60 void ScalarEnumerationTraits<COFF::MachineTypes>::enumeration(
61 IO &IO, COFF::MachineTypes &Value) {
91 void ScalarEnumerationTraits<COFF::SymbolBaseType>::enumeration(
92 IO &IO, COFF::SymbolBaseType &Value) {
111 void ScalarEnumerationTraits<COFF::SymbolStorageClass>::enumeration(
112 IO &IO, COFF::SymbolStorageClass &Value) {
142 void ScalarEnumerationTraits<COFF::SymbolComplexType>::enumeration(
143 IO &IO, COFF::SymbolComplexType &Value) {
150 void ScalarEnumerationTraits<COFF::RelocationTypeI386>::enumeration(
151 IO &IO, COFF::RelocationTypeI386 &Value) {
165 void ScalarEnumerationTraits<COFF::RelocationTypeAMD64>::enumeration(
166 IO &IO, COFF::RelocationTypeAMD64 &Value) {
186 void ScalarEnumerationTraits<COFF::RelocationTypesMips>::enumeration(
187 IO &IO, COFF::RelocationTypesMips &Value) {
205 void ScalarEnumerationTraits<COFF::RelocationTypesARM>::enumeration(
206 IO &IO, COFF::RelocationTypesARM &Value) {
226 void ScalarEnumerationTraits<COFF::RelocationTypesARM64>::enumeration(
227 IO &IO, COFF::RelocationTypesARM64 &Value) {
248 void ScalarEnumerationTraits<COFF::WindowsSubsystem>::enumeration(
249 IO &IO, COFF::WindowsSubsystem &Value) {
267 #define BCase(X) IO.bitSetCase(Value, #X, COFF::X);
268 void ScalarBitSetTraits<COFF::Characteristics>::bitset(
269 IO &IO, COFF::Characteristics &Value) {
287 void ScalarBitSetTraits<COFF::SectionCharacteristics>::bitset(
288 IO &IO, COFF::SectionCharacteristics &Value) {
313 void ScalarBitSetTraits<COFF::DLLCharacteristics>::bitset(
314 IO &IO, COFF::DLLCharacteristics &Value) {
355 : Characteristics(COFF::SectionCharacteristics(0)) {}
357 : Characteristics(COFF::SectionCharacteristics(C)) {}
361 COFF::SectionCharacteristics Characteristics;
376 NStorageClass(IO &) : StorageClass(COFF::SymbolStorageClass(0)) {}
377 NStorageClass(IO &, uint8_t S) : StorageClass(COFF::SymbolStorageClass(S)) {}
381 COFF::SymbolStorageClass StorageClass;
385 NMachine(IO &) : Machine(COFF::MachineTypes(0)) {}
386 NMachine(IO &, uint16_t M) : Machine(COFF::MachineTypes(M)) {}
390 COFF::MachineTypes Machine;
394 NHeaderCharacteristics(IO &) : Characteristics(COFF::Characteristics(0)) {}
396 : Characteristics(COFF::Characteristics(C)) {}
400 COFF::Characteristics Characteristics;
414 NWindowsSubsystem(IO &) : Subsystem(COFF::WindowsSubsystem(0)) {}
415 NWindowsSubsystem(IO &, uint16_t C) : Subsystem(COFF::WindowsSubsystem(C)) {}
419 COFF::WindowsSubsystem Subsystem;
423 NDLLCharacteristics(IO &) : Characteristics(COFF::DLLCharacteristics(0)) {}
425 : Characteristics(COFF::DLLCharacteristics(C)) {}
429 COFF::DLLCharacteristics Characteristics;
440 COFF::header &H = *static_cast<COFF::header *>(IO.getContext());
441 if (H.Machine == COFF::IMAGE_FILE_MACHINE_I386) {
442 MappingNormalization<NType<COFF::RelocationTypeI386>, uint16_t> NT(
445 } else if (H.Machine == COFF::IMAGE_FILE_MACHINE_AMD64) {
446 MappingNormalization<NType<COFF::RelocationTypeAMD64>, uint16_t> NT(
449 } else if (H.Machine == COFF::IMAGE_FILE_MACHINE_R4000) {
450 MappingNormalization<NType<COFF::RelocationTypesMips>, uint16_t> NT(
453 } else if (H.Machine == COFF::IMAGE_FILE_MACHINE_ARMNT) {
454 MappingNormalization<NType<COFF::RelocationTypesARM>, uint16_t> NT(
457 } else if (COFF::isAnyArm64(H.Machine)) {
458 MappingNormalization<NType<COFF::RelocationTypesARM64>, uint16_t> NT(
466 void MappingTraits<COFF::DataDirectory>::mapping(IO &IO,
467 COFF::DataDirectory &DD) {
499 COFF::NUM_DATA_DIRECTORIES + 1);
500 IO.mapOptional("ExportTable", PH.DataDirectories[COFF::EXPORT_TABLE]);
501 IO.mapOptional("ImportTable", PH.DataDirectories[COFF::IMPORT_TABLE]);
502 IO.mapOptional("ResourceTable", PH.DataDirectories[COFF::RESOURCE_TABLE]);
503 IO.mapOptional("ExceptionTable", PH.DataDirectories[COFF::EXCEPTION_TABLE]);
504 IO.mapOptional("CertificateTable", PH.DataDirectories[COFF::CERTIFICATE_TABLE]);
506 PH.DataDirectories[COFF::BASE_RELOCATION_TABLE]);
507 IO.mapOptional("Debug", PH.DataDirectories[COFF::DEBUG_DIRECTORY]);
508 IO.mapOptional("Architecture", PH.DataDirectories[COFF::ARCHITECTURE]);
509 IO.mapOptional("GlobalPtr", PH.DataDirectories[COFF::GLOBAL_PTR]);
510 IO.mapOptional("TlsTable", PH.DataDirectories[COFF::TLS_TABLE]);
512 PH.DataDirectories[COFF::LOAD_CONFIG_TABLE]);
513 IO.mapOptional("BoundImport", PH.DataDirectories[COFF::BOUND_IMPORT]);
514 IO.mapOptional("IAT", PH.DataDirectories[COFF::IAT]);
516 PH.DataDirectories[COFF::DELAY_IMPORT_DESCRIPTOR]);
518 PH.DataDirectories[COFF::CLR_RUNTIME_HEADER]);
521 void MappingTraits<COFF::header>::mapping(IO &IO, COFF::header &H) {
531 void MappingTraits<COFF::AuxiliaryFunctionDefinition>::mapping(
532 IO &IO, COFF::AuxiliaryFunctionDefinition &AFD) {
539 void MappingTraits<COFF::AuxiliarybfAndefSymbol>::mapping(
540 IO &IO, COFF::AuxiliarybfAndefSymbol &AAS) {
545 void MappingTraits<COFF::AuxiliaryWeakExternal>::mapping(
546 IO &IO, COFF::AuxiliaryWeakExternal &AWE) {
553 void MappingTraits<COFF::AuxiliarySectionDefinition>::mapping(
554 IO &IO, COFF::AuxiliarySectionDefinition &ASD) {
566 void MappingTraits<COFF::AuxiliaryCLRToken>::mapping(
567 IO &IO, COFF::AuxiliaryCLRToken &ACT) {
662 COFF::header &H = *static_cast<COFF::header *>(IO.getContext());
663 if (COFF::is64Bit(H.Machine))
726 IO.mapTag("!COFF", true);