20 #define ECase(X) IO.enumCase(Value, #X, COFF::X); 34 void ScalarEnumerationTraits<COFFYAML::COMDATType>::enumeration(
36 IO.enumCase(Value,
"0", 0);
47 ScalarEnumerationTraits<COFFYAML::WeakExternalCharacteristics>::enumeration(
49 IO.enumCase(Value,
"0", 0);
55 void ScalarEnumerationTraits<COFFYAML::AuxSymbolType>::enumeration(
60 void ScalarEnumerationTraits<COFF::MachineTypes>::enumeration(
86 void ScalarEnumerationTraits<COFF::SymbolBaseType>::enumeration(
106 void ScalarEnumerationTraits<COFF::SymbolStorageClass>::enumeration(
137 void ScalarEnumerationTraits<COFF::SymbolComplexType>::enumeration(
145 void ScalarEnumerationTraits<COFF::RelocationTypeI386>::enumeration(
160 void ScalarEnumerationTraits<COFF::RelocationTypeAMD64>::enumeration(
181 void ScalarEnumerationTraits<COFF::RelocationTypesARM>::enumeration(
200 void ScalarEnumerationTraits<COFF::RelocationTypesARM64>::enumeration(
221 void ScalarEnumerationTraits<COFF::WindowsSubsystem>::enumeration(
240 #define BCase(X) IO.bitSetCase(Value, #X, COFF::X); 241 void ScalarBitSetTraits<COFF::Characteristics>::bitset(
260 void ScalarBitSetTraits<COFF::SectionCharacteristics>::bitset(
286 void ScalarBitSetTraits<COFF::DLLCharacteristics>::bitset(
304 struct NSectionSelectionType {
305 NSectionSelectionType(IO &)
307 NSectionSelectionType(IO &, uint8_t
C)
315 struct NWeakExternalCharacteristics {
316 NWeakExternalCharacteristics(IO &)
318 NWeakExternalCharacteristics(IO &,
uint32_t C)
326 struct NSectionCharacteristics {
327 NSectionCharacteristics(IO &)
329 NSectionCharacteristics(IO &,
uint32_t C)
337 struct NAuxTokenType {
340 NAuxTokenType(IO &, uint8_t
C)
348 struct NStorageClass {
361 uint16_t denormalize(IO &) {
return Machine; }
366 struct NHeaderCharacteristics {
368 NHeaderCharacteristics(IO &, uint16_t
C)
376 template <
typename RelocType>
378 NType(IO &) : Type(RelocType(0)) {}
379 NType(IO &, uint16_t
T) : Type(RelocType(T)) {}
381 uint16_t denormalize(IO &) {
return Type; }
386 struct NWindowsSubsystem {
390 uint16_t denormalize(IO &) {
return Subsystem; }
395 struct NDLLCharacteristics {
397 NDLLCharacteristics(IO &, uint16_t
C)
415 MappingNormalization<NType<COFF::RelocationTypeI386>, uint16_t> NT(
417 IO.mapRequired(
"Type", NT->Type);
419 MappingNormalization<NType<COFF::RelocationTypeAMD64>, uint16_t> NT(
421 IO.mapRequired(
"Type", NT->Type);
423 MappingNormalization<NType<COFF::RelocationTypesARM>, uint16_t> NT(
425 IO.mapRequired(
"Type", NT->Type);
427 MappingNormalization<NType<COFF::RelocationTypesARM64>, uint16_t> NT(
429 IO.mapRequired(
"Type", NT->Type);
431 IO.mapRequired(
"Type", Rel.
Type);
438 IO.mapRequired(
"Size", DD.
Size);
443 MappingNormalization<NWindowsSubsystem, uint16_t> NWS(IO,
445 MappingNormalization<NDLLCharacteristics, uint16_t> NDC(
452 IO.mapRequired(
"MajorOperatingSystemVersion",
454 IO.mapRequired(
"MinorOperatingSystemVersion",
460 IO.mapRequired(
"Subsystem", NWS->Subsystem);
461 IO.mapRequired(
"DLLCharacteristics", NDC->Characteristics);
472 IO.mapOptional(
"BaseRelocationTable",
478 IO.mapOptional(
"LoadConfigTable",
482 IO.mapOptional(
"DelayImportDescriptor",
484 IO.mapOptional(
"ClrRuntimeHeader",
489 MappingNormalization<NMachine, uint16_t> NM(IO, H.
Machine);
490 MappingNormalization<NHeaderCharacteristics, uint16_t>
NC(IO,
493 IO.mapRequired(
"Machine", NM->Machine);
494 IO.mapOptional(
"Characteristics", NC->Characteristics);
495 IO.setContext(static_cast<void *>(&H));
500 IO.mapRequired(
"TagIndex", AFD.
TagIndex);
501 IO.mapRequired(
"TotalSize", AFD.
TotalSize);
514 MappingNormalization<NWeakExternalCharacteristics, uint32_t> NWEC(
516 IO.mapRequired(
"TagIndex", AWE.
TagIndex);
517 IO.mapRequired(
"Characteristics", NWEC->Characteristics);
522 MappingNormalization<NSectionSelectionType, uint8_t> NSST(
525 IO.mapRequired(
"Length", ASD.
Length);
528 IO.mapRequired(
"CheckSum", ASD.
CheckSum);
529 IO.mapRequired(
"Number", ASD.
Number);
535 MappingNormalization<NAuxTokenType, uint8_t> NATT(IO, ACT.
AuxType);
536 IO.mapRequired(
"AuxType", NATT->AuxType);
543 IO.mapRequired(
"Name", S.
Name);
548 IO.mapRequired(
"StorageClass", NS->StorageClass);
554 IO.mapOptional(
"CLRToken", S.
CLRToken);
558 MappingNormalization<NSectionCharacteristics, uint32_t>
NC(
560 IO.mapRequired(
"Name", Sec.
Name);
561 IO.mapRequired(
"Characteristics", NC->Characteristics);
564 IO.mapOptional(
"Alignment", Sec.
Alignment, 0U);
570 if (Sec.
Name ==
".debug$S")
571 IO.mapOptional(
"Subsections", Sec.
DebugS);
572 else if (Sec.
Name ==
".debug$T")
573 IO.mapOptional(
"Types", Sec.
DebugT);
574 else if (Sec.
Name ==
".debug$P")
575 IO.mapOptional(
"PrecompTypes", Sec.
DebugP);
576 else if (Sec.
Name ==
".debug$H")
577 IO.mapOptional(
"GlobalHashes", Sec.
DebugH);
583 IO.mapTag(
"!COFF",
true);
585 IO.mapRequired(
"header", Obj.
Header);
586 IO.mapRequired(
"sections", Obj.
Sections);
587 IO.mapRequired(
"symbols", Obj.
Symbols);
Debugging info has been removed.
Isolation aware, but do not isolate the image.
The Windows GUI subsystem.
The POSIX character subsystem.
WeakExternalCharacteristics
COFF::SymbolBaseType SimpleType
This class represents lattice values for constants.
Physical end of function.
uint32_t SymbolTableIndex
Optional< COFF::AuxiliarybfAndefSymbol > bfAndefSymbol
Used with void pointers and functions.
An EFI driver with boot services.
Code integrity checks are enforced.
COFF::SymbolStorageClass StorageClass
No complex type; simple scalar variable.
An unsigned integer of natural size.
Machine is based on a 32bit word architecture.
".bf" or ".ef" - beginning or end of function
An 8-byte floating-point number.
std::vector< Relocation > Relocations
Aggressively trim working set. This is deprecated and must be 0.
An unsigned 4-byte integer.
External symbol in dmert public lib.
std::vector< Section > Sections
Big endian: the MSB precedes the LSB in memory.
ASLR with 64 bit address space.
COFFYAML::COMDATType SelectionType
The file does not contain base relocations and must be loaded at its preferred base.
COFF::MachineTypes Machine
Does not use structured exception handling (SEH).
uint16_t NumberOfRelocations
std::vector< CodeViewYAML::LeafRecord > DebugP
COFF::WindowsSubsystem Subsystem
Image can handle > 2GiB addresses.
Line number, reformatted as symbol.
No type information or unknown base type.
Little endian: the LSB precedes the MSB in memory.
A member of enumeration (a specific value).
Native Windows 9x driver.
COFF line numbers have been stripped.
Device drivers and native Windows processes.
yaml::BinaryRef SectionData
The image file is a system file, not a user program.
Optional< COFF::AuxiliaryFunctionDefinition > FunctionDefinition
COFFYAML::AuxSymbolType AuxType
std::vector< CodeViewYAML::LeafRecord > DebugT
Optional< COFF::AuxiliaryCLRToken > CLRToken
Image supports Control Flow Guard.
uint32_t PointerToNextFunction
An EFI driver with run-time services.
uint32_t RelativeVirtualAddress
SymbolStorageClass
Storage class tells where and what the symbol represents.
".bb" or ".eb" - beginning or end of block
A byte; unsigned 1-byte integer.
If the image is on removable media, fully load it and copy it to swap.
If the image is on network media, fully load it and copy it to swap.
The file is valid and can be run.
A natural integer type on the target.
The OS/2 character subsytem.
COFF symbol table entries for local symbols have been removed.
DLL can be relocated at load time.
Optional< COFF::AuxiliaryWeakExternal > WeakExternal
COFFYAML::WeakExternalCharacteristics Characteristics
This file should only be run on a uniprocessor machine.
A 4-byte floating-point number.
A word; unsigned 2-byte integer.
uint32_t PointerToNextFunction
The Windows character subsystem.
uint32_t PointerToLinenumber
std::vector< CodeViewYAML::YAMLDebugSubsection > DebugS
Optional< uint32_t > SymbolTableIndex
LLVM Value Representation.
std::vector< Symbol > Symbols
A character (signed byte).
StringRef - Represent a constant reference to a string, i.e.
COFF::SymbolComplexType ComplexType
Optional< CodeViewYAML::DebugHSection > DebugH
Optional< PEHeader > OptionalHeader
uint16_t NumberOfLinenumbers
Optional< COFF::AuxiliarySectionDefinition > SectionDefinition
A function that returns a base type.