Movatterモバイル変換


[0]ホーム

URL:


LLVM 20.0.0git
COFFYAML.cpp
Go to the documentation of this file.
1//===- COFFYAML.cpp - COFF YAMLIO implementation --------------------------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8//
9// This file defines classes for handling the YAML representation of COFF.
10//
11//===----------------------------------------------------------------------===//
12
13#include "llvm/ObjectYAML/COFFYAML.h"
14#include "llvm/ADT/StringRef.h"
15#include "llvm/Support/YAMLTraits.h"
16#include <cstdint>
17#include <cstring>
18
19#define ECase(X) IO.enumCase(Value, #X, COFF::X);
20
21namespacellvm {
22
23namespaceCOFFYAML {
24
25Section::Section() { memset(&Header, 0,sizeof(COFF::section)); }
26Symbol::Symbol() { memset(&Header, 0,sizeof(COFF::symbol)); }
27Object::Object() { memset(&Header, 0,sizeof(COFF::header)); }
28
29}// end namespace COFFYAML
30
31namespaceyaml {
32
33void ScalarEnumerationTraits<COFFYAML::COMDATType>::enumeration(
34 IO &IO, COFFYAML::COMDATType &Value) {
35 IO.enumCase(Value,"0", 0);
36ECase(IMAGE_COMDAT_SELECT_NODUPLICATES);
37ECase(IMAGE_COMDAT_SELECT_ANY);
38ECase(IMAGE_COMDAT_SELECT_SAME_SIZE);
39ECase(IMAGE_COMDAT_SELECT_EXACT_MATCH);
40ECase(IMAGE_COMDAT_SELECT_ASSOCIATIVE);
41ECase(IMAGE_COMDAT_SELECT_LARGEST);
42ECase(IMAGE_COMDAT_SELECT_NEWEST);
43}
44
45void
46ScalarEnumerationTraits<COFFYAML::WeakExternalCharacteristics>::enumeration(
47 IO &IO, COFFYAML::WeakExternalCharacteristics &Value) {
48 IO.enumCase(Value,"0", 0);
49ECase(IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY);
50ECase(IMAGE_WEAK_EXTERN_SEARCH_LIBRARY);
51ECase(IMAGE_WEAK_EXTERN_SEARCH_ALIAS);
52ECase(IMAGE_WEAK_EXTERN_ANTI_DEPENDENCY);
53}
54
55void ScalarEnumerationTraits<COFFYAML::AuxSymbolType>::enumeration(
56 IO &IO, COFFYAML::AuxSymbolType &Value) {
57ECase(IMAGE_AUX_SYMBOL_TYPE_TOKEN_DEF);
58}
59
60void ScalarEnumerationTraits<COFF::MachineTypes>::enumeration(
61 IO &IO,COFF::MachineTypes &Value) {
62ECase(IMAGE_FILE_MACHINE_UNKNOWN);
63ECase(IMAGE_FILE_MACHINE_AM33);
64ECase(IMAGE_FILE_MACHINE_AMD64);
65ECase(IMAGE_FILE_MACHINE_ARM);
66ECase(IMAGE_FILE_MACHINE_ARMNT);
67ECase(IMAGE_FILE_MACHINE_ARM64);
68ECase(IMAGE_FILE_MACHINE_ARM64EC);
69ECase(IMAGE_FILE_MACHINE_ARM64X);
70ECase(IMAGE_FILE_MACHINE_EBC);
71ECase(IMAGE_FILE_MACHINE_I386);
72ECase(IMAGE_FILE_MACHINE_IA64);
73ECase(IMAGE_FILE_MACHINE_M32R);
74ECase(IMAGE_FILE_MACHINE_MIPS16);
75ECase(IMAGE_FILE_MACHINE_MIPSFPU);
76ECase(IMAGE_FILE_MACHINE_MIPSFPU16);
77ECase(IMAGE_FILE_MACHINE_POWERPC);
78ECase(IMAGE_FILE_MACHINE_POWERPCFP);
79ECase(IMAGE_FILE_MACHINE_R4000);
80ECase(IMAGE_FILE_MACHINE_RISCV32);
81ECase(IMAGE_FILE_MACHINE_RISCV64);
82ECase(IMAGE_FILE_MACHINE_RISCV128);
83ECase(IMAGE_FILE_MACHINE_SH3);
84ECase(IMAGE_FILE_MACHINE_SH3DSP);
85ECase(IMAGE_FILE_MACHINE_SH4);
86ECase(IMAGE_FILE_MACHINE_SH5);
87ECase(IMAGE_FILE_MACHINE_THUMB);
88ECase(IMAGE_FILE_MACHINE_WCEMIPSV2);
89}
90
91void ScalarEnumerationTraits<COFF::SymbolBaseType>::enumeration(
92 IO &IO,COFF::SymbolBaseType &Value) {
93ECase(IMAGE_SYM_TYPE_NULL);
94ECase(IMAGE_SYM_TYPE_VOID);
95ECase(IMAGE_SYM_TYPE_CHAR);
96ECase(IMAGE_SYM_TYPE_SHORT);
97ECase(IMAGE_SYM_TYPE_INT);
98ECase(IMAGE_SYM_TYPE_LONG);
99ECase(IMAGE_SYM_TYPE_FLOAT);
100ECase(IMAGE_SYM_TYPE_DOUBLE);
101ECase(IMAGE_SYM_TYPE_STRUCT);
102ECase(IMAGE_SYM_TYPE_UNION);
103ECase(IMAGE_SYM_TYPE_ENUM);
104ECase(IMAGE_SYM_TYPE_MOE);
105ECase(IMAGE_SYM_TYPE_BYTE);
106ECase(IMAGE_SYM_TYPE_WORD);
107ECase(IMAGE_SYM_TYPE_UINT);
108ECase(IMAGE_SYM_TYPE_DWORD);
109}
110
111void ScalarEnumerationTraits<COFF::SymbolStorageClass>::enumeration(
112 IO &IO,COFF::SymbolStorageClass &Value) {
113ECase(IMAGE_SYM_CLASS_END_OF_FUNCTION);
114ECase(IMAGE_SYM_CLASS_NULL);
115ECase(IMAGE_SYM_CLASS_AUTOMATIC);
116ECase(IMAGE_SYM_CLASS_EXTERNAL);
117ECase(IMAGE_SYM_CLASS_STATIC);
118ECase(IMAGE_SYM_CLASS_REGISTER);
119ECase(IMAGE_SYM_CLASS_EXTERNAL_DEF);
120ECase(IMAGE_SYM_CLASS_LABEL);
121ECase(IMAGE_SYM_CLASS_UNDEFINED_LABEL);
122ECase(IMAGE_SYM_CLASS_MEMBER_OF_STRUCT);
123ECase(IMAGE_SYM_CLASS_ARGUMENT);
124ECase(IMAGE_SYM_CLASS_STRUCT_TAG);
125ECase(IMAGE_SYM_CLASS_MEMBER_OF_UNION);
126ECase(IMAGE_SYM_CLASS_UNION_TAG);
127ECase(IMAGE_SYM_CLASS_TYPE_DEFINITION);
128ECase(IMAGE_SYM_CLASS_UNDEFINED_STATIC);
129ECase(IMAGE_SYM_CLASS_ENUM_TAG);
130ECase(IMAGE_SYM_CLASS_MEMBER_OF_ENUM);
131ECase(IMAGE_SYM_CLASS_REGISTER_PARAM);
132ECase(IMAGE_SYM_CLASS_BIT_FIELD);
133ECase(IMAGE_SYM_CLASS_BLOCK);
134ECase(IMAGE_SYM_CLASS_FUNCTION);
135ECase(IMAGE_SYM_CLASS_END_OF_STRUCT);
136ECase(IMAGE_SYM_CLASS_FILE);
137ECase(IMAGE_SYM_CLASS_SECTION);
138ECase(IMAGE_SYM_CLASS_WEAK_EXTERNAL);
139ECase(IMAGE_SYM_CLASS_CLR_TOKEN);
140}
141
142void ScalarEnumerationTraits<COFF::SymbolComplexType>::enumeration(
143 IO &IO,COFF::SymbolComplexType &Value) {
144ECase(IMAGE_SYM_DTYPE_NULL);
145ECase(IMAGE_SYM_DTYPE_POINTER);
146ECase(IMAGE_SYM_DTYPE_FUNCTION);
147ECase(IMAGE_SYM_DTYPE_ARRAY);
148}
149
150void ScalarEnumerationTraits<COFF::RelocationTypeI386>::enumeration(
151 IO &IO,COFF::RelocationTypeI386 &Value) {
152ECase(IMAGE_REL_I386_ABSOLUTE);
153ECase(IMAGE_REL_I386_DIR16);
154ECase(IMAGE_REL_I386_REL16);
155ECase(IMAGE_REL_I386_DIR32);
156ECase(IMAGE_REL_I386_DIR32NB);
157ECase(IMAGE_REL_I386_SEG12);
158ECase(IMAGE_REL_I386_SECTION);
159ECase(IMAGE_REL_I386_SECREL);
160ECase(IMAGE_REL_I386_TOKEN);
161ECase(IMAGE_REL_I386_SECREL7);
162ECase(IMAGE_REL_I386_REL32);
163}
164
165void ScalarEnumerationTraits<COFF::RelocationTypeAMD64>::enumeration(
166 IO &IO,COFF::RelocationTypeAMD64 &Value) {
167ECase(IMAGE_REL_AMD64_ABSOLUTE);
168ECase(IMAGE_REL_AMD64_ADDR64);
169ECase(IMAGE_REL_AMD64_ADDR32);
170ECase(IMAGE_REL_AMD64_ADDR32NB);
171ECase(IMAGE_REL_AMD64_REL32);
172ECase(IMAGE_REL_AMD64_REL32_1);
173ECase(IMAGE_REL_AMD64_REL32_2);
174ECase(IMAGE_REL_AMD64_REL32_3);
175ECase(IMAGE_REL_AMD64_REL32_4);
176ECase(IMAGE_REL_AMD64_REL32_5);
177ECase(IMAGE_REL_AMD64_SECTION);
178ECase(IMAGE_REL_AMD64_SECREL);
179ECase(IMAGE_REL_AMD64_SECREL7);
180ECase(IMAGE_REL_AMD64_TOKEN);
181ECase(IMAGE_REL_AMD64_SREL32);
182ECase(IMAGE_REL_AMD64_PAIR);
183ECase(IMAGE_REL_AMD64_SSPAN32);
184}
185
186void ScalarEnumerationTraits<COFF::RelocationTypesMips>::enumeration(
187 IO &IO,COFF::RelocationTypesMips &Value) {
188ECase(IMAGE_REL_MIPS_ABSOLUTE);
189ECase(IMAGE_REL_MIPS_REFHALF);
190ECase(IMAGE_REL_MIPS_REFWORD);
191ECase(IMAGE_REL_MIPS_JMPADDR);
192ECase(IMAGE_REL_MIPS_REFHI);
193ECase(IMAGE_REL_MIPS_REFLO);
194ECase(IMAGE_REL_MIPS_GPREL);
195ECase(IMAGE_REL_MIPS_LITERAL);
196ECase(IMAGE_REL_MIPS_SECTION);
197ECase(IMAGE_REL_MIPS_SECREL);
198ECase(IMAGE_REL_MIPS_SECRELLO);
199ECase(IMAGE_REL_MIPS_SECRELHI);
200ECase(IMAGE_REL_MIPS_JMPADDR16);
201ECase(IMAGE_REL_MIPS_REFWORDNB);
202ECase(IMAGE_REL_MIPS_PAIR);
203}
204
205void ScalarEnumerationTraits<COFF::RelocationTypesARM>::enumeration(
206 IO &IO,COFF::RelocationTypesARM &Value) {
207ECase(IMAGE_REL_ARM_ABSOLUTE);
208ECase(IMAGE_REL_ARM_ADDR32);
209ECase(IMAGE_REL_ARM_ADDR32NB);
210ECase(IMAGE_REL_ARM_BRANCH24);
211ECase(IMAGE_REL_ARM_BRANCH11);
212ECase(IMAGE_REL_ARM_TOKEN);
213ECase(IMAGE_REL_ARM_BLX24);
214ECase(IMAGE_REL_ARM_BLX11);
215ECase(IMAGE_REL_ARM_REL32);
216ECase(IMAGE_REL_ARM_SECTION);
217ECase(IMAGE_REL_ARM_SECREL);
218ECase(IMAGE_REL_ARM_MOV32A);
219ECase(IMAGE_REL_ARM_MOV32T);
220ECase(IMAGE_REL_ARM_BRANCH20T);
221ECase(IMAGE_REL_ARM_BRANCH24T);
222ECase(IMAGE_REL_ARM_BLX23T);
223ECase(IMAGE_REL_ARM_PAIR);
224}
225
226void ScalarEnumerationTraits<COFF::RelocationTypesARM64>::enumeration(
227 IO &IO,COFF::RelocationTypesARM64 &Value) {
228ECase(IMAGE_REL_ARM64_ABSOLUTE);
229ECase(IMAGE_REL_ARM64_ADDR32);
230ECase(IMAGE_REL_ARM64_ADDR32NB);
231ECase(IMAGE_REL_ARM64_BRANCH26);
232ECase(IMAGE_REL_ARM64_PAGEBASE_REL21);
233ECase(IMAGE_REL_ARM64_REL21);
234ECase(IMAGE_REL_ARM64_PAGEOFFSET_12A);
235ECase(IMAGE_REL_ARM64_PAGEOFFSET_12L);
236ECase(IMAGE_REL_ARM64_SECREL);
237ECase(IMAGE_REL_ARM64_SECREL_LOW12A);
238ECase(IMAGE_REL_ARM64_SECREL_HIGH12A);
239ECase(IMAGE_REL_ARM64_SECREL_LOW12L);
240ECase(IMAGE_REL_ARM64_TOKEN);
241ECase(IMAGE_REL_ARM64_SECTION);
242ECase(IMAGE_REL_ARM64_ADDR64);
243ECase(IMAGE_REL_ARM64_BRANCH19);
244ECase(IMAGE_REL_ARM64_BRANCH14);
245ECase(IMAGE_REL_ARM64_REL32);
246}
247
248void ScalarEnumerationTraits<COFF::WindowsSubsystem>::enumeration(
249 IO &IO,COFF::WindowsSubsystem &Value) {
250ECase(IMAGE_SUBSYSTEM_UNKNOWN);
251ECase(IMAGE_SUBSYSTEM_NATIVE);
252ECase(IMAGE_SUBSYSTEM_WINDOWS_GUI);
253ECase(IMAGE_SUBSYSTEM_WINDOWS_CUI);
254ECase(IMAGE_SUBSYSTEM_OS2_CUI);
255ECase(IMAGE_SUBSYSTEM_POSIX_CUI);
256ECase(IMAGE_SUBSYSTEM_NATIVE_WINDOWS);
257ECase(IMAGE_SUBSYSTEM_WINDOWS_CE_GUI);
258ECase(IMAGE_SUBSYSTEM_EFI_APPLICATION);
259ECase(IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER);
260ECase(IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER);
261ECase(IMAGE_SUBSYSTEM_EFI_ROM);
262ECase(IMAGE_SUBSYSTEM_XBOX);
263ECase(IMAGE_SUBSYSTEM_WINDOWS_BOOT_APPLICATION);
264}
265#undef ECase
266
267#define BCase(X) IO.bitSetCase(Value, #X, COFF::X);
268void ScalarBitSetTraits<COFF::Characteristics>::bitset(
269 IO &IO,COFF::Characteristics &Value) {
270BCase(IMAGE_FILE_RELOCS_STRIPPED);
271BCase(IMAGE_FILE_EXECUTABLE_IMAGE);
272BCase(IMAGE_FILE_LINE_NUMS_STRIPPED);
273BCase(IMAGE_FILE_LOCAL_SYMS_STRIPPED);
274BCase(IMAGE_FILE_AGGRESSIVE_WS_TRIM);
275BCase(IMAGE_FILE_LARGE_ADDRESS_AWARE);
276BCase(IMAGE_FILE_BYTES_REVERSED_LO);
277BCase(IMAGE_FILE_32BIT_MACHINE);
278BCase(IMAGE_FILE_DEBUG_STRIPPED);
279BCase(IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP);
280BCase(IMAGE_FILE_NET_RUN_FROM_SWAP);
281BCase(IMAGE_FILE_SYSTEM);
282BCase(IMAGE_FILE_DLL);
283BCase(IMAGE_FILE_UP_SYSTEM_ONLY);
284BCase(IMAGE_FILE_BYTES_REVERSED_HI);
285}
286
287void ScalarBitSetTraits<COFF::SectionCharacteristics>::bitset(
288 IO &IO,COFF::SectionCharacteristics &Value) {
289BCase(IMAGE_SCN_TYPE_NOLOAD);
290BCase(IMAGE_SCN_TYPE_NO_PAD);
291BCase(IMAGE_SCN_CNT_CODE);
292BCase(IMAGE_SCN_CNT_INITIALIZED_DATA);
293BCase(IMAGE_SCN_CNT_UNINITIALIZED_DATA);
294BCase(IMAGE_SCN_LNK_OTHER);
295BCase(IMAGE_SCN_LNK_INFO);
296BCase(IMAGE_SCN_LNK_REMOVE);
297BCase(IMAGE_SCN_LNK_COMDAT);
298BCase(IMAGE_SCN_GPREL);
299BCase(IMAGE_SCN_MEM_PURGEABLE);
300BCase(IMAGE_SCN_MEM_16BIT);
301BCase(IMAGE_SCN_MEM_LOCKED);
302BCase(IMAGE_SCN_MEM_PRELOAD);
303BCase(IMAGE_SCN_LNK_NRELOC_OVFL);
304BCase(IMAGE_SCN_MEM_DISCARDABLE);
305BCase(IMAGE_SCN_MEM_NOT_CACHED);
306BCase(IMAGE_SCN_MEM_NOT_PAGED);
307BCase(IMAGE_SCN_MEM_SHARED);
308BCase(IMAGE_SCN_MEM_EXECUTE);
309BCase(IMAGE_SCN_MEM_READ);
310BCase(IMAGE_SCN_MEM_WRITE);
311}
312
313void ScalarBitSetTraits<COFF::DLLCharacteristics>::bitset(
314 IO &IO,COFF::DLLCharacteristics &Value) {
315BCase(IMAGE_DLL_CHARACTERISTICS_HIGH_ENTROPY_VA);
316BCase(IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE);
317BCase(IMAGE_DLL_CHARACTERISTICS_FORCE_INTEGRITY);
318BCase(IMAGE_DLL_CHARACTERISTICS_NX_COMPAT);
319BCase(IMAGE_DLL_CHARACTERISTICS_NO_ISOLATION);
320BCase(IMAGE_DLL_CHARACTERISTICS_NO_SEH);
321BCase(IMAGE_DLL_CHARACTERISTICS_NO_BIND);
322BCase(IMAGE_DLL_CHARACTERISTICS_APPCONTAINER);
323BCase(IMAGE_DLL_CHARACTERISTICS_WDM_DRIVER);
324BCase(IMAGE_DLL_CHARACTERISTICS_GUARD_CF);
325BCase(IMAGE_DLL_CHARACTERISTICS_TERMINAL_SERVER_AWARE);
326}
327#undef BCase
328
329namespace{
330
331structNSectionSelectionType {
332 NSectionSelectionType(IO &)
333 :SelectionType(COFFYAML::COMDATType(0)) {}
334 NSectionSelectionType(IO &,uint8_tC)
335 :SelectionType(COFFYAML::COMDATType(C)) {}
336
337uint8_t denormalize(IO &) {returnSelectionType; }
338
339 COFFYAML::COMDATTypeSelectionType;
340};
341
342structNWeakExternalCharacteristics {
343 NWeakExternalCharacteristics(IO &)
344 :Characteristics(COFFYAML::WeakExternalCharacteristics(0)) {}
345 NWeakExternalCharacteristics(IO &,uint32_tC)
346 :Characteristics(COFFYAML::WeakExternalCharacteristics(C)) {}
347
348uint32_t denormalize(IO &) {returnCharacteristics; }
349
350 COFFYAML::WeakExternalCharacteristics Characteristics;
351};
352
353structNSectionCharacteristics {
354 NSectionCharacteristics(IO &)
355 :Characteristics(COFF::SectionCharacteristics(0)) {}
356 NSectionCharacteristics(IO &,uint32_tC)
357 :Characteristics(COFF::SectionCharacteristics(C)) {}
358
359uint32_t denormalize(IO &) {returnCharacteristics; }
360
361COFF::SectionCharacteristicsCharacteristics;
362};
363
364structNAuxTokenType {
365 NAuxTokenType(IO &)
366 :AuxType(COFFYAML::AuxSymbolType(0)) {}
367 NAuxTokenType(IO &,uint8_tC)
368 :AuxType(COFFYAML::AuxSymbolType(C)) {}
369
370uint32_t denormalize(IO &) {returnAuxType; }
371
372 COFFYAML::AuxSymbolTypeAuxType;
373};
374
375structNStorageClass {
376 NStorageClass(IO &) :StorageClass(COFF::SymbolStorageClass(0)) {}
377 NStorageClass(IO &,uint8_t S) :StorageClass(COFF::SymbolStorageClass(S)) {}
378
379uint8_t denormalize(IO &) {returnStorageClass; }
380
381COFF::SymbolStorageClass StorageClass;
382};
383
384structNMachine {
385 NMachine(IO &) :Machine(COFF::MachineTypes(0)) {}
386 NMachine(IO &,uint16_t M) :Machine(COFF::MachineTypes(M)) {}
387
388uint16_t denormalize(IO &) {returnMachine; }
389
390COFF::MachineTypesMachine;
391};
392
393structNHeaderCharacteristics {
394 NHeaderCharacteristics(IO &) :Characteristics(COFF::Characteristics(0)) {}
395 NHeaderCharacteristics(IO &,uint16_tC)
396 :Characteristics(COFF::Characteristics(C)) {}
397
398uint16_t denormalize(IO &) {returnCharacteristics; }
399
400COFF::CharacteristicsCharacteristics;
401};
402
403template <typename RelocType>
404structNType {
405 NType(IO &) :Type(RelocType(0)) {}
406 NType(IO &,uint16_tT) :Type(RelocType(T)) {}
407
408uint16_t denormalize(IO &) {returnType; }
409
410 RelocType Type;
411};
412
413structNWindowsSubsystem {
414 NWindowsSubsystem(IO &) :Subsystem(COFF::WindowsSubsystem(0)) {}
415 NWindowsSubsystem(IO &,uint16_tC) :Subsystem(COFF::WindowsSubsystem(C)) {}
416
417uint16_t denormalize(IO &) {returnSubsystem; }
418
419COFF::WindowsSubsystemSubsystem;
420};
421
422structNDLLCharacteristics {
423 NDLLCharacteristics(IO &) :Characteristics(COFF::DLLCharacteristics(0)) {}
424 NDLLCharacteristics(IO &,uint16_tC)
425 :Characteristics(COFF::DLLCharacteristics(C)) {}
426
427uint16_t denormalize(IO &) {returnCharacteristics; }
428
429COFF::DLLCharacteristicsCharacteristics;
430};
431
432}// end anonymous namespace
433
434voidMappingTraits<COFFYAML::Relocation>::mapping(IO &IO,
435COFFYAML::Relocation &Rel) {
436 IO.mapRequired("VirtualAddress", Rel.VirtualAddress);
437 IO.mapOptional("SymbolName", Rel.SymbolName,StringRef());
438 IO.mapOptional("SymbolTableIndex", Rel.SymbolTableIndex);
439
440COFF::header &H = *static_cast<COFF::header *>(IO.getContext());
441if (H.Machine ==COFF::IMAGE_FILE_MACHINE_I386) {
442 MappingNormalization<NType<COFF::RelocationTypeI386>,uint16_t> NT(
443 IO, Rel.Type);
444 IO.mapRequired("Type", NT->Type);
445 }elseif (H.Machine ==COFF::IMAGE_FILE_MACHINE_AMD64) {
446 MappingNormalization<NType<COFF::RelocationTypeAMD64>,uint16_t> NT(
447 IO, Rel.Type);
448 IO.mapRequired("Type", NT->Type);
449 }elseif (H.Machine ==COFF::IMAGE_FILE_MACHINE_R4000) {
450 MappingNormalization<NType<COFF::RelocationTypesMips>,uint16_t> NT(
451 IO, Rel.Type);
452 IO.mapRequired("Type", NT->Type);
453 }elseif (H.Machine ==COFF::IMAGE_FILE_MACHINE_ARMNT) {
454 MappingNormalization<NType<COFF::RelocationTypesARM>,uint16_t> NT(
455 IO, Rel.Type);
456 IO.mapRequired("Type", NT->Type);
457 }elseif (COFF::isAnyArm64(H.Machine)) {
458 MappingNormalization<NType<COFF::RelocationTypesARM64>,uint16_t> NT(
459 IO, Rel.Type);
460 IO.mapRequired("Type", NT->Type);
461 }else {
462 IO.mapRequired("Type", Rel.Type);
463 }
464}
465
466voidMappingTraits<COFF::DataDirectory>::mapping(IO &IO,
467COFF::DataDirectory &DD) {
468 IO.mapRequired("RelativeVirtualAddress", DD.RelativeVirtualAddress);
469 IO.mapRequired("Size", DD.Size);
470}
471
472voidMappingTraits<COFFYAML::PEHeader>::mapping(IO &IO,
473COFFYAML::PEHeader &PH) {
474 MappingNormalization<NWindowsSubsystem, uint16_t> NWS(IO,
475 PH.Header.Subsystem);
476 MappingNormalization<NDLLCharacteristics, uint16_t> NDC(
477 IO, PH.Header.DLLCharacteristics);
478
479 IO.mapOptional("AddressOfEntryPoint", PH.Header.AddressOfEntryPoint);
480 IO.mapOptional("ImageBase", PH.Header.ImageBase);
481 IO.mapOptional("SectionAlignment", PH.Header.SectionAlignment, 1);
482 IO.mapOptional("FileAlignment", PH.Header.FileAlignment, 1);
483 IO.mapOptional("MajorOperatingSystemVersion",
484 PH.Header.MajorOperatingSystemVersion);
485 IO.mapOptional("MinorOperatingSystemVersion",
486 PH.Header.MinorOperatingSystemVersion);
487 IO.mapOptional("MajorImageVersion", PH.Header.MajorImageVersion);
488 IO.mapOptional("MinorImageVersion", PH.Header.MinorImageVersion);
489 IO.mapOptional("MajorSubsystemVersion", PH.Header.MajorSubsystemVersion);
490 IO.mapOptional("MinorSubsystemVersion", PH.Header.MinorSubsystemVersion);
491 IO.mapOptional("Subsystem", NWS->Subsystem);
492 IO.mapOptional("DLLCharacteristics", NDC->Characteristics);
493 IO.mapOptional("SizeOfStackReserve", PH.Header.SizeOfStackReserve);
494 IO.mapOptional("SizeOfStackCommit", PH.Header.SizeOfStackCommit);
495 IO.mapOptional("SizeOfHeapReserve", PH.Header.SizeOfHeapReserve);
496 IO.mapOptional("SizeOfHeapCommit", PH.Header.SizeOfHeapCommit);
497
498 IO.mapOptional("NumberOfRvaAndSize", PH.Header.NumberOfRvaAndSize,
499COFF::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]);
505 IO.mapOptional("BaseRelocationTable",
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]);
511 IO.mapOptional("LoadConfigTable",
512 PH.DataDirectories[COFF::LOAD_CONFIG_TABLE]);
513 IO.mapOptional("BoundImport", PH.DataDirectories[COFF::BOUND_IMPORT]);
514 IO.mapOptional("IAT", PH.DataDirectories[COFF::IAT]);
515 IO.mapOptional("DelayImportDescriptor",
516 PH.DataDirectories[COFF::DELAY_IMPORT_DESCRIPTOR]);
517 IO.mapOptional("ClrRuntimeHeader",
518 PH.DataDirectories[COFF::CLR_RUNTIME_HEADER]);
519}
520
521voidMappingTraits<COFF::header>::mapping(IO &IO,COFF::header &H) {
522 MappingNormalization<NMachine, uint16_t> NM(IO,H.Machine);
523 MappingNormalization<NHeaderCharacteristics, uint16_t>NC(IO,
524H.Characteristics);
525
526 IO.mapRequired("Machine", NM->Machine);
527 IO.mapOptional("Characteristics",NC->Characteristics);
528 IO.setContext(static_cast<void *>(&H));
529}
530
531voidMappingTraits<COFF::AuxiliaryFunctionDefinition>::mapping(
532 IO &IO,COFF::AuxiliaryFunctionDefinition &AFD) {
533 IO.mapRequired("TagIndex", AFD.TagIndex);
534 IO.mapRequired("TotalSize", AFD.TotalSize);
535 IO.mapRequired("PointerToLinenumber", AFD.PointerToLinenumber);
536 IO.mapRequired("PointerToNextFunction", AFD.PointerToNextFunction);
537}
538
539voidMappingTraits<COFF::AuxiliarybfAndefSymbol>::mapping(
540 IO &IO,COFF::AuxiliarybfAndefSymbol &AAS) {
541 IO.mapRequired("Linenumber", AAS.Linenumber);
542 IO.mapRequired("PointerToNextFunction", AAS.PointerToNextFunction);
543}
544
545voidMappingTraits<COFF::AuxiliaryWeakExternal>::mapping(
546 IO &IO,COFF::AuxiliaryWeakExternal &AWE) {
547 MappingNormalization<NWeakExternalCharacteristics, uint32_t> NWEC(
548 IO, AWE.Characteristics);
549 IO.mapRequired("TagIndex", AWE.TagIndex);
550 IO.mapRequired("Characteristics", NWEC->Characteristics);
551}
552
553voidMappingTraits<COFF::AuxiliarySectionDefinition>::mapping(
554 IO &IO,COFF::AuxiliarySectionDefinition &ASD) {
555 MappingNormalization<NSectionSelectionType, uint8_t> NSST(
556 IO, ASD.Selection);
557
558 IO.mapRequired("Length", ASD.Length);
559 IO.mapRequired("NumberOfRelocations", ASD.NumberOfRelocations);
560 IO.mapRequired("NumberOfLinenumbers", ASD.NumberOfLinenumbers);
561 IO.mapRequired("CheckSum", ASD.CheckSum);
562 IO.mapRequired("Number", ASD.Number);
563 IO.mapOptional("Selection", NSST->SelectionType, COFFYAML::COMDATType(0));
564}
565
566voidMappingTraits<COFF::AuxiliaryCLRToken>::mapping(
567 IO &IO,COFF::AuxiliaryCLRToken &ACT) {
568 MappingNormalization<NAuxTokenType, uint8_t> NATT(IO, ACT.AuxType);
569 IO.mapRequired("AuxType", NATT->AuxType);
570 IO.mapRequired("SymbolTableIndex", ACT.SymbolTableIndex);
571}
572
573voidMappingTraits<object::coff_load_config_code_integrity>::mapping(
574 IO &IO,object::coff_load_config_code_integrity &S) {
575 IO.mapOptional("Flags", S.Flags);
576 IO.mapOptional("Catalog", S.Catalog);
577 IO.mapOptional("CatalogOffset", S.CatalogOffset);
578}
579
580template <typename T,typename M>
581voidmapLoadConfigMember(IO &IO,T &LoadConfig,constchar *Name, M &Member) {
582// Map only members that match a specified size.
583ptrdiff_t dist =
584reinterpret_cast<char *>(&Member) -reinterpret_cast<char *>(&LoadConfig);
585if (dist < (ptrdiff_t)LoadConfig.Size)
586 IO.mapOptional(Name, Member);
587}
588
589template <typename T>voidmapLoadConfig(IO &IO,T &LoadConfig) {
590 IO.mapOptional("Size", LoadConfig.Size,
591support::ulittle32_t(sizeof(LoadConfig)));
592// The size must be large enough to fit at least the size member itself.
593if (LoadConfig.Size <sizeof(LoadConfig.Size)) {
594 IO.setError("Size must be at least " +Twine(sizeof(LoadConfig.Size)));
595return;
596 }
597
598#define MCase(X) mapLoadConfigMember(IO, LoadConfig, #X, LoadConfig.X)
599MCase(TimeDateStamp);
600MCase(MajorVersion);
601MCase(MinorVersion);
602MCase(GlobalFlagsClear);
603MCase(GlobalFlagsSet);
604MCase(CriticalSectionDefaultTimeout);
605MCase(DeCommitFreeBlockThreshold);
606MCase(DeCommitTotalFreeThreshold);
607MCase(LockPrefixTable);
608MCase(MaximumAllocationSize);
609MCase(VirtualMemoryThreshold);
610MCase(ProcessAffinityMask);
611MCase(ProcessHeapFlags);
612MCase(CSDVersion);
613MCase(DependentLoadFlags);
614MCase(EditList);
615MCase(SecurityCookie);
616MCase(SEHandlerTable);
617MCase(SEHandlerCount);
618MCase(GuardCFCheckFunction);
619MCase(GuardCFCheckDispatch);
620MCase(GuardCFFunctionTable);
621MCase(GuardCFFunctionCount);
622MCase(GuardFlags);
623MCase(CodeIntegrity);
624MCase(GuardAddressTakenIatEntryTable);
625MCase(GuardAddressTakenIatEntryCount);
626MCase(GuardLongJumpTargetTable);
627MCase(GuardLongJumpTargetCount);
628MCase(DynamicValueRelocTable);
629MCase(CHPEMetadataPointer);
630MCase(GuardRFFailureRoutine);
631MCase(GuardRFFailureRoutineFunctionPointer);
632MCase(DynamicValueRelocTableOffset);
633MCase(DynamicValueRelocTableSection);
634MCase(GuardRFVerifyStackPointerFunctionPointer);
635MCase(HotPatchTableOffset);
636MCase(EnclaveConfigurationPointer);
637MCase(VolatileMetadataPointer);
638MCase(GuardEHContinuationTable);
639MCase(GuardEHContinuationCount);
640MCase(GuardXFGCheckFunctionPointer);
641MCase(GuardXFGDispatchFunctionPointer);
642MCase(GuardXFGTableDispatchFunctionPointer);
643MCase(CastGuardOsDeterminedFailureMode);
644#undef MCase
645}
646
647voidMappingTraits<object::coff_load_configuration32>::mapping(
648 IO &IO,object::coff_load_configuration32 &S) {
649mapLoadConfig(IO, S);
650}
651
652voidMappingTraits<object::coff_load_configuration64>::mapping(
653 IO &IO,object::coff_load_configuration64 &S) {
654mapLoadConfig(IO, S);
655}
656
657voidMappingTraits<COFFYAML::SectionDataEntry>::mapping(
658 IO &IO,COFFYAML::SectionDataEntry &E) {
659 IO.mapOptional("UInt32",E.UInt32);
660 IO.mapOptional("Binary",E.Binary);
661
662COFF::header &H = *static_cast<COFF::header *>(IO.getContext());
663if (COFF::is64Bit(H.Machine))
664 IO.mapOptional("LoadConfig",E.LoadConfig64);
665else
666 IO.mapOptional("LoadConfig",E.LoadConfig32);
667}
668
669voidMappingTraits<COFFYAML::Symbol>::mapping(IO &IO,COFFYAML::Symbol &S) {
670 MappingNormalization<NStorageClass, uint8_t> NS(IO, S.Header.StorageClass);
671
672 IO.mapRequired("Name", S.Name);
673 IO.mapRequired("Value", S.Header.Value);
674 IO.mapRequired("SectionNumber", S.Header.SectionNumber);
675 IO.mapRequired("SimpleType", S.SimpleType);
676 IO.mapRequired("ComplexType", S.ComplexType);
677 IO.mapRequired("StorageClass", NS->StorageClass);
678 IO.mapOptional("FunctionDefinition", S.FunctionDefinition);
679 IO.mapOptional("bfAndefSymbol", S.bfAndefSymbol);
680 IO.mapOptional("WeakExternal", S.WeakExternal);
681 IO.mapOptional("File", S.File,StringRef());
682 IO.mapOptional("SectionDefinition", S.SectionDefinition);
683 IO.mapOptional("CLRToken", S.CLRToken);
684}
685
686voidMappingTraits<COFFYAML::Section>::mapping(IO &IO,COFFYAML::Section &Sec) {
687 MappingNormalization<NSectionCharacteristics, uint32_t>NC(
688 IO, Sec.Header.Characteristics);
689 IO.mapRequired("Name", Sec.Name);
690 IO.mapRequired("Characteristics",NC->Characteristics);
691 IO.mapOptional("VirtualAddress", Sec.Header.VirtualAddress, 0U);
692 IO.mapOptional("VirtualSize", Sec.Header.VirtualSize, 0U);
693 IO.mapOptional("Alignment", Sec.Alignment, 0U);
694
695// If this is a .debug$S .debug$T .debug$P, or .debug$H section parse the
696// semantic representation of the symbols/types. If it is any other kind
697// of section, just deal in raw bytes.
698 IO.mapOptional("SectionData", Sec.SectionData);
699if (Sec.Name ==".debug$S")
700 IO.mapOptional("Subsections", Sec.DebugS);
701elseif (Sec.Name ==".debug$T")
702 IO.mapOptional("Types", Sec.DebugT);
703elseif (Sec.Name ==".debug$P")
704 IO.mapOptional("PrecompTypes", Sec.DebugP);
705elseif (Sec.Name ==".debug$H")
706 IO.mapOptional("GlobalHashes", Sec.DebugH);
707
708 IO.mapOptional("StructuredData", Sec.StructuredData);
709
710if (!Sec.StructuredData.empty() && Sec.SectionData.binary_size()) {
711 IO.setError("StructuredData and SectionData can't be used together");
712return;
713 }
714
715 IO.mapOptional("SizeOfRawData", Sec.Header.SizeOfRawData, 0U);
716
717if (!Sec.StructuredData.empty() && Sec.Header.SizeOfRawData) {
718 IO.setError("StructuredData and SizeOfRawData can't be used together");
719return;
720 }
721
722 IO.mapOptional("Relocations", Sec.Relocations);
723}
724
725voidMappingTraits<COFFYAML::Object>::mapping(IO &IO,COFFYAML::Object &Obj) {
726 IO.mapTag("!COFF",true);
727 IO.mapOptional("OptionalHeader", Obj.OptionalHeader);
728 IO.mapRequired("header", Obj.Header);
729 IO.mapRequired("sections", Obj.Sections);
730 IO.mapRequired("symbols", Obj.Symbols);
731}
732
733}// end namespace yaml
734
735}// end namespace llvm
E
static GCRegistry::Add< CoreCLRGC > E("coreclr", "CoreCLR-compatible GC")
AuxType
COFFYAML::AuxSymbolType AuxType
Definition:COFFYAML.cpp:372
SelectionType
COFFYAML::COMDATType SelectionType
Definition:COFFYAML.cpp:339
MCase
#define MCase(X)
BCase
#define BCase(X)
Definition:COFFYAML.cpp:267
Machine
COFF::MachineTypes Machine
Definition:COFFYAML.cpp:390
Subsystem
COFF::WindowsSubsystem Subsystem
Definition:COFFYAML.cpp:419
COFFYAML.h
Name
std::string Name
Definition:ELFObjHandler.cpp:77
H
#define H(x, y, z)
Definition:MD5.cpp:57
StringRef.h
ECase
#define ECase(X)
YAMLTraits.h
T
llvm::StringRef
StringRef - Represent a constant reference to a string, i.e.
Definition:StringRef.h:51
llvm::Twine
Twine - A lightweight data structure for efficiently representing the concatenation of temporary valu...
Definition:Twine.h:81
llvm::Value
LLVM Value Representation.
Definition:Value.h:74
llvm::yaml::BinaryRef::binary_size
ArrayRef< uint8_t >::size_type binary_size() const
The number of bytes that are represented by this BinaryRef.
Definition:YAML.h:80
ptrdiff_t
uint16_t
uint32_t
uint8_t
llvm::ARM::ProfileKind::M
@ M
llvm::COFF::DLLCharacteristics
DLLCharacteristics
Definition:COFF.h:668
llvm::COFF::AuxSymbolType
AuxSymbolType
Definition:COFF.h:282
llvm::COFF::RelocationTypesMips
RelocationTypesMips
Definition:COFF.h:420
llvm::COFF::MachineTypes
MachineTypes
Definition:COFF.h:92
llvm::COFF::IMAGE_FILE_MACHINE_AMD64
@ IMAGE_FILE_MACHINE_AMD64
Definition:COFF.h:97
llvm::COFF::IMAGE_FILE_MACHINE_R4000
@ IMAGE_FILE_MACHINE_R4000
Definition:COFF.h:112
llvm::COFF::IMAGE_FILE_MACHINE_I386
@ IMAGE_FILE_MACHINE_I386
Definition:COFF.h:104
llvm::COFF::IMAGE_FILE_MACHINE_ARMNT
@ IMAGE_FILE_MACHINE_ARMNT
Definition:COFF.h:99
llvm::COFF::SectionCharacteristics
SectionCharacteristics
Definition:COFF.h:297
llvm::COFF::isAnyArm64
bool isAnyArm64(T Machine)
Definition:COFF.h:129
llvm::COFF::RelocationTypesARM64
RelocationTypesARM64
Definition:COFF.h:399
llvm::COFF::RelocationTypeAMD64
RelocationTypeAMD64
Definition:COFF.h:359
llvm::COFF::ARCHITECTURE
@ ARCHITECTURE
Definition:COFF.h:637
llvm::COFF::IAT
@ IAT
Definition:COFF.h:642
llvm::COFF::CERTIFICATE_TABLE
@ CERTIFICATE_TABLE
Definition:COFF.h:634
llvm::COFF::TLS_TABLE
@ TLS_TABLE
Definition:COFF.h:639
llvm::COFF::EXCEPTION_TABLE
@ EXCEPTION_TABLE
Definition:COFF.h:633
llvm::COFF::GLOBAL_PTR
@ GLOBAL_PTR
Definition:COFF.h:638
llvm::COFF::EXPORT_TABLE
@ EXPORT_TABLE
Definition:COFF.h:630
llvm::COFF::LOAD_CONFIG_TABLE
@ LOAD_CONFIG_TABLE
Definition:COFF.h:640
llvm::COFF::IMPORT_TABLE
@ IMPORT_TABLE
Definition:COFF.h:631
llvm::COFF::DELAY_IMPORT_DESCRIPTOR
@ DELAY_IMPORT_DESCRIPTOR
Definition:COFF.h:643
llvm::COFF::CLR_RUNTIME_HEADER
@ CLR_RUNTIME_HEADER
Definition:COFF.h:644
llvm::COFF::RESOURCE_TABLE
@ RESOURCE_TABLE
Definition:COFF.h:632
llvm::COFF::DEBUG_DIRECTORY
@ DEBUG_DIRECTORY
Definition:COFF.h:636
llvm::COFF::BASE_RELOCATION_TABLE
@ BASE_RELOCATION_TABLE
Definition:COFF.h:635
llvm::COFF::NUM_DATA_DIRECTORIES
@ NUM_DATA_DIRECTORIES
Definition:COFF.h:646
llvm::COFF::BOUND_IMPORT
@ BOUND_IMPORT
Definition:COFF.h:641
llvm::COFF::SymbolStorageClass
SymbolStorageClass
Storage class tells where and what the symbol represents.
Definition:COFF.h:217
llvm::COFF::WindowsSubsystem
WindowsSubsystem
Definition:COFF.h:649
llvm::COFF::WeakExternalCharacteristics
WeakExternalCharacteristics
Definition:COFF.h:486
llvm::COFF::is64Bit
bool is64Bit(T Machine)
Definition:COFF.h:133
llvm::COFF::RelocationTypesARM
RelocationTypesARM
Definition:COFF.h:379
llvm::COFF::RelocationTypeI386
RelocationTypeI386
Definition:COFF.h:345
llvm::COFF::SymbolBaseType
SymbolBaseType
Definition:COFF.h:253
llvm::COFF::Characteristics
Characteristics
Definition:COFF.h:137
llvm::COFF::SymbolComplexType
SymbolComplexType
Definition:COFF.h:272
llvm::CallingConv::C
@ C
The default llvm calling convention, compatible with C.
Definition:CallingConv.h:34
llvm::XCOFF::StorageClass
StorageClass
Definition:XCOFF.h:170
llvm::logicalview::LVBinaryType::COFF
@ COFF
llvm::msgpack::Type
Type
MessagePack types as defined in the standard, with the exception of Integer being divided into a sign...
Definition:MsgPackReader.h:53
llvm::yaml::mapLoadConfigMember
void mapLoadConfigMember(IO &IO, T &LoadConfig, const char *Name, M &Member)
Definition:COFFYAML.cpp:581
llvm::yaml::mapLoadConfig
void mapLoadConfig(IO &IO, T &LoadConfig)
Definition:COFFYAML.cpp:589
llvm
This is an optimization pass for GlobalISel generic memory operations.
Definition:AddressRanges.h:18
NC
#define NC
Definition:regutils.h:42
llvm::COFFYAML::Object
Definition:COFFYAML.h:116
llvm::COFFYAML::Object::OptionalHeader
std::optional< PEHeader > OptionalHeader
Definition:COFFYAML.h:117
llvm::COFFYAML::Object::Sections
std::vector< Section > Sections
Definition:COFFYAML.h:119
llvm::COFFYAML::Object::Symbols
std::vector< Symbol > Symbols
Definition:COFFYAML.h:120
llvm::COFFYAML::Object::Header
COFF::header Header
Definition:COFFYAML.h:118
llvm::COFFYAML::Object::Object
Object()
Definition:COFFYAML.cpp:27
llvm::COFFYAML::PEHeader
Definition:COFFYAML.h:110
llvm::COFFYAML::PEHeader::DataDirectories
std::optional< COFF::DataDirectory > DataDirectories[COFF::NUM_DATA_DIRECTORIES]
Definition:COFFYAML.h:113
llvm::COFFYAML::PEHeader::Header
COFF::PE32Header Header
Definition:COFFYAML.h:111
llvm::COFFYAML::Relocation
Definition:COFFYAML.h:58
llvm::COFFYAML::Relocation::VirtualAddress
uint32_t VirtualAddress
Definition:COFFYAML.h:59
llvm::COFFYAML::Relocation::SymbolName
StringRef SymbolName
Definition:COFFYAML.h:66
llvm::COFFYAML::Relocation::SymbolTableIndex
std::optional< uint32_t > SymbolTableIndex
Definition:COFFYAML.h:67
llvm::COFFYAML::Relocation::Type
uint16_t Type
Definition:COFFYAML.h:60
llvm::COFFYAML::SectionDataEntry
Definition:COFFYAML.h:70
llvm::COFFYAML::Section
Definition:COFFYAML.h:80
llvm::COFFYAML::Section::DebugS
std::vector< CodeViewYAML::YAMLDebugSubsection > DebugS
Definition:COFFYAML.h:84
llvm::COFFYAML::Section::StructuredData
std::vector< SectionDataEntry > StructuredData
Definition:COFFYAML.h:88
llvm::COFFYAML::Section::Alignment
unsigned Alignment
Definition:COFFYAML.h:82
llvm::COFFYAML::Section::Name
StringRef Name
Definition:COFFYAML.h:90
llvm::COFFYAML::Section::DebugT
std::vector< CodeViewYAML::LeafRecord > DebugT
Definition:COFFYAML.h:85
llvm::COFFYAML::Section::Section
Section()
Definition:COFFYAML.cpp:25
llvm::COFFYAML::Section::SectionData
yaml::BinaryRef SectionData
Definition:COFFYAML.h:83
llvm::COFFYAML::Section::DebugH
std::optional< CodeViewYAML::DebugHSection > DebugH
Definition:COFFYAML.h:87
llvm::COFFYAML::Section::DebugP
std::vector< CodeViewYAML::LeafRecord > DebugP
Definition:COFFYAML.h:86
llvm::COFFYAML::Section::Header
COFF::section Header
Definition:COFFYAML.h:81
llvm::COFFYAML::Section::Relocations
std::vector< Relocation > Relocations
Definition:COFFYAML.h:89
llvm::COFFYAML::Symbol
Definition:COFFYAML.h:95
llvm::COFFYAML::Symbol::WeakExternal
std::optional< COFF::AuxiliaryWeakExternal > WeakExternal
Definition:COFFYAML.h:101
llvm::COFFYAML::Symbol::Name
StringRef Name
Definition:COFFYAML.h:105
llvm::COFFYAML::Symbol::Symbol
Symbol()
Definition:COFFYAML.cpp:26
llvm::COFFYAML::Symbol::bfAndefSymbol
std::optional< COFF::AuxiliarybfAndefSymbol > bfAndefSymbol
Definition:COFFYAML.h:100
llvm::COFFYAML::Symbol::File
StringRef File
Definition:COFFYAML.h:102
llvm::COFFYAML::Symbol::ComplexType
COFF::SymbolComplexType ComplexType
Definition:COFFYAML.h:98
llvm::COFFYAML::Symbol::SectionDefinition
std::optional< COFF::AuxiliarySectionDefinition > SectionDefinition
Definition:COFFYAML.h:103
llvm::COFFYAML::Symbol::FunctionDefinition
std::optional< COFF::AuxiliaryFunctionDefinition > FunctionDefinition
Definition:COFFYAML.h:99
llvm::COFFYAML::Symbol::Header
COFF::symbol Header
Definition:COFFYAML.h:96
llvm::COFFYAML::Symbol::SimpleType
COFF::SymbolBaseType SimpleType
Definition:COFFYAML.h:97
llvm::COFFYAML::Symbol::CLRToken
std::optional< COFF::AuxiliaryCLRToken > CLRToken
Definition:COFFYAML.h:104
llvm::COFF::AuxiliaryCLRToken
Definition:COFF.h:503
llvm::COFF::AuxiliaryCLRToken::SymbolTableIndex
uint32_t SymbolTableIndex
Definition:COFF.h:506
llvm::COFF::AuxiliaryCLRToken::AuxType
uint8_t AuxType
Definition:COFF.h:504
llvm::COFF::AuxiliaryFunctionDefinition
Definition:COFF.h:464
llvm::COFF::AuxiliaryFunctionDefinition::PointerToNextFunction
uint32_t PointerToNextFunction
Definition:COFF.h:468
llvm::COFF::AuxiliaryFunctionDefinition::PointerToLinenumber
uint32_t PointerToLinenumber
Definition:COFF.h:467
llvm::COFF::AuxiliaryFunctionDefinition::TotalSize
uint32_t TotalSize
Definition:COFF.h:466
llvm::COFF::AuxiliaryFunctionDefinition::TagIndex
uint32_t TagIndex
Definition:COFF.h:465
llvm::COFF::AuxiliarySectionDefinition
Definition:COFF.h:493
llvm::COFF::AuxiliarySectionDefinition::Selection
uint8_t Selection
Definition:COFF.h:499
llvm::COFF::AuxiliarySectionDefinition::NumberOfRelocations
uint16_t NumberOfRelocations
Definition:COFF.h:495
llvm::COFF::AuxiliarySectionDefinition::NumberOfLinenumbers
uint16_t NumberOfLinenumbers
Definition:COFF.h:496
llvm::COFF::AuxiliarySectionDefinition::Length
uint32_t Length
Definition:COFF.h:494
llvm::COFF::AuxiliarySectionDefinition::Number
uint32_t Number
Definition:COFF.h:498
llvm::COFF::AuxiliarySectionDefinition::CheckSum
uint32_t CheckSum
Definition:COFF.h:497
llvm::COFF::AuxiliaryWeakExternal
Definition:COFF.h:480
llvm::COFF::AuxiliaryWeakExternal::TagIndex
uint32_t TagIndex
Definition:COFF.h:481
llvm::COFF::AuxiliaryWeakExternal::Characteristics
uint32_t Characteristics
Definition:COFF.h:482
llvm::COFF::AuxiliarybfAndefSymbol
Definition:COFF.h:472
llvm::COFF::AuxiliarybfAndefSymbol::Linenumber
uint16_t Linenumber
Definition:COFF.h:474
llvm::COFF::AuxiliarybfAndefSymbol::PointerToNextFunction
uint32_t PointerToNextFunction
Definition:COFF.h:476
llvm::COFF::DataDirectory
Definition:COFF.h:624
llvm::COFF::DataDirectory::RelativeVirtualAddress
uint32_t RelativeVirtualAddress
Definition:COFF.h:625
llvm::COFF::DataDirectory::Size
uint32_t Size
Definition:COFF.h:626
llvm::COFF::PE32Header::AddressOfEntryPoint
uint32_t AddressOfEntryPoint
Definition:COFF.h:596
llvm::COFF::PE32Header::FileAlignment
uint32_t FileAlignment
Definition:COFF.h:601
llvm::COFF::PE32Header::SizeOfStackCommit
uint64_t SizeOfStackCommit
Definition:COFF.h:616
llvm::COFF::PE32Header::SizeOfHeapReserve
uint64_t SizeOfHeapReserve
Definition:COFF.h:617
llvm::COFF::PE32Header::MinorOperatingSystemVersion
uint16_t MinorOperatingSystemVersion
Definition:COFF.h:603
llvm::COFF::PE32Header::ImageBase
uint64_t ImageBase
Definition:COFF.h:599
llvm::COFF::PE32Header::MajorSubsystemVersion
uint16_t MajorSubsystemVersion
Definition:COFF.h:606
llvm::COFF::PE32Header::MinorImageVersion
uint16_t MinorImageVersion
Definition:COFF.h:605
llvm::COFF::PE32Header::MajorOperatingSystemVersion
uint16_t MajorOperatingSystemVersion
Definition:COFF.h:602
llvm::COFF::PE32Header::DLLCharacteristics
uint16_t DLLCharacteristics
Definition:COFF.h:614
llvm::COFF::PE32Header::SizeOfStackReserve
uint64_t SizeOfStackReserve
Definition:COFF.h:615
llvm::COFF::PE32Header::MinorSubsystemVersion
uint16_t MinorSubsystemVersion
Definition:COFF.h:607
llvm::COFF::PE32Header::SectionAlignment
uint32_t SectionAlignment
Definition:COFF.h:600
llvm::COFF::PE32Header::MajorImageVersion
uint16_t MajorImageVersion
Definition:COFF.h:604
llvm::COFF::PE32Header::NumberOfRvaAndSize
uint32_t NumberOfRvaAndSize
Definition:COFF.h:621
llvm::COFF::PE32Header::Subsystem
uint16_t Subsystem
Definition:COFF.h:612
llvm::COFF::PE32Header::SizeOfHeapCommit
uint64_t SizeOfHeapCommit
Definition:COFF.h:618
llvm::COFF::header
Definition:COFF.h:64
llvm::COFF::section
Definition:COFF.h:284
llvm::COFF::section::VirtualSize
uint32_t VirtualSize
Definition:COFF.h:286
llvm::COFF::section::SizeOfRawData
uint32_t SizeOfRawData
Definition:COFF.h:288
llvm::COFF::section::Characteristics
uint32_t Characteristics
Definition:COFF.h:294
llvm::COFF::section::VirtualAddress
uint32_t VirtualAddress
Definition:COFF.h:287
llvm::COFF::symbol
Definition:COFF.h:201
llvm::COFF::symbol::StorageClass
uint8_t StorageClass
Definition:COFF.h:206
llvm::COFF::symbol::SectionNumber
int32_t SectionNumber
Definition:COFF.h:204
llvm::COFF::symbol::Value
uint32_t Value
Definition:COFF.h:203
llvm::object::coff_load_config_code_integrity
Definition:COFF.h:610
llvm::object::coff_load_config_code_integrity::Flags
support::ulittle16_t Flags
Definition:COFF.h:611
llvm::object::coff_load_config_code_integrity::Catalog
support::ulittle16_t Catalog
Definition:COFF.h:612
llvm::object::coff_load_config_code_integrity::CatalogOffset
support::ulittle32_t CatalogOffset
Definition:COFF.h:613
llvm::object::coff_load_configuration32
32-bit load config (IMAGE_LOAD_CONFIG_DIRECTORY32)
Definition:COFF.h:618
llvm::object::coff_load_configuration64
64-bit load config (IMAGE_LOAD_CONFIG_DIRECTORY64)
Definition:COFF.h:676
llvm::support::detail::packed_endian_specific_integral
Definition:Endian.h:217
llvm::yaml::MappingTraits
Definition:ModuleSummaryIndex.h:54

Generated on Thu Jul 17 2025 12:35:00 for LLVM by doxygen 1.9.6
[8]ページ先頭

©2009-2025 Movatter.jp