33 IO.mapRequired(
"Version", FileHdr.
Version);
39 IO.mapTag(
"!WASM",
true);
40 IO.mapRequired(
"FileHeader",
Object.Header);
41 IO.mapOptional(
"Sections",
Object.Sections);
42 IO.setContext(
nullptr);
46 IO.mapRequired(
"Type",
Section.Type);
47 IO.mapOptional(
"Relocations",
Section.Relocations);
52 IO.mapRequired(
"Name",
Section.Name);
53 IO.mapRequired(
"MemorySize",
Section.MemorySize);
54 IO.mapRequired(
"MemoryAlignment",
Section.MemoryAlignment);
55 IO.mapRequired(
"TableSize",
Section.TableSize);
56 IO.mapRequired(
"TableAlignment",
Section.TableAlignment);
57 IO.mapRequired(
"Needed",
Section.Needed);
62 IO.mapRequired(
"Name",
Section.Name);
63 IO.mapOptional(
"FunctionNames",
Section.FunctionNames);
64 IO.mapOptional(
"GlobalNames",
Section.GlobalNames);
65 IO.mapOptional(
"DataSegmentNames",
Section.DataSegmentNames);
70 IO.mapRequired(
"Name",
Section.Name);
71 IO.mapRequired(
"Version",
Section.Version);
72 IO.mapOptional(
"SymbolTable",
Section.SymbolTable);
73 IO.mapOptional(
"SegmentInfo",
Section.SegmentInfos);
74 IO.mapOptional(
"InitFunctions",
Section.InitFunctions);
75 IO.mapOptional(
"Comdats",
Section.Comdats);
80 IO.mapRequired(
"Name",
Section.Name);
81 IO.mapOptional(
"Languages",
Section.Languages);
82 IO.mapOptional(
"Tools",
Section.Tools);
83 IO.mapOptional(
"SDKs",
Section.SDKs);
88 IO.mapRequired(
"Name",
Section.Name);
89 IO.mapRequired(
"Features",
Section.Features);
94 IO.mapRequired(
"Name",
Section.Name);
95 IO.mapRequired(
"Payload",
Section.Payload);
100 IO.mapOptional(
"Signatures",
Section.Signatures);
105 IO.mapOptional(
"Imports",
Section.Imports);
110 IO.mapOptional(
"FunctionTypes",
Section.FunctionTypes);
115 IO.mapOptional(
"Tables",
Section.Tables);
120 IO.mapOptional(
"Memories",
Section.Memories);
125 IO.mapOptional(
"Events",
Section.Events);
130 IO.mapOptional(
"Globals",
Section.Globals);
135 IO.mapOptional(
"Exports",
Section.Exports);
140 IO.mapOptional(
"StartFunction",
Section.StartFunction);
145 IO.mapOptional(
"Segments",
Section.Segments);
150 IO.mapRequired(
"Functions",
Section.Functions);
155 IO.mapRequired(
"Segments",
Section.Segments);
160 IO.mapRequired(
"Count",
Section.Count);
164 IO &IO, std::unique_ptr<WasmYAML::Section> &
Section) {
174 if (IO.outputting()) {
175 auto CustomSection = cast<WasmYAML::CustomSection>(
Section.get());
181 if (!IO.outputting())
185 if (!IO.outputting())
189 if (!IO.outputting())
193 if (!IO.outputting())
197 if (!IO.outputting())
201 if (!IO.outputting())
208 if (!IO.outputting())
213 if (!IO.outputting())
218 if (!IO.outputting())
223 if (!IO.outputting())
228 if (!IO.outputting())
233 if (!IO.outputting())
238 if (!IO.outputting())
243 if (!IO.outputting())
248 if (!IO.outputting())
253 if (!IO.outputting())
258 if (!IO.outputting())
263 if (!IO.outputting())
268 if (!IO.outputting())
279 #define ECase(X) IO.enumCase(Type, #X, wasm::WASM_SEC_##X);
299 IO.mapRequired(
"Index", Signature.
Index);
300 IO.mapRequired(
"ParamTypes", Signature.
ParamTypes);
301 IO.mapRequired(
"ReturnTypes", Signature.
ReturnTypes);
305 IO.mapRequired(
"Index", Table.
Index);
306 IO.mapRequired(
"ElemType", Table.
ElemType);
312 IO.mapRequired(
"Index",
Function.Index);
313 IO.mapRequired(
"Locals",
Function.Locals);
314 IO.mapRequired(
"Body",
Function.Body);
319 IO.mapRequired(
"Type", Relocation.
Type);
320 IO.mapRequired(
"Index", Relocation.
Index);
321 IO.mapRequired(
"Offset", Relocation.
Offset);
322 IO.mapOptional(
"Addend", Relocation.
Addend, 0);
327 IO.mapRequired(
"Index", NameEntry.
Index);
328 IO.mapRequired(
"Name", NameEntry.
Name);
333 IO.mapRequired(
"Name", ProducerEntry.
Name);
334 IO.mapRequired(
"Version", ProducerEntry.
Version);
338 IO &IO, WasmYAML::FeaturePolicyPrefix &
Kind) {
339 #define ECase(X) IO.enumCase(Kind, #X, wasm::WASM_FEATURE_PREFIX_##X);
348 IO.mapRequired(
"Prefix", FeatureEntry.
Prefix);
349 IO.mapRequired(
"Name", FeatureEntry.
Name);
354 IO.mapRequired(
"Index", SegmentInfo.
Index);
355 IO.mapRequired(
"Name", SegmentInfo.
Name);
356 IO.mapRequired(
"Alignment", SegmentInfo.
Alignment);
357 IO.mapRequired(
"Flags", SegmentInfo.
Flags);
362 IO.mapRequired(
"Type", LocalDecl.
Type);
363 IO.mapRequired(
"Count", LocalDecl.
Count);
368 if (!IO.outputting() || Limits.
Flags)
369 IO.mapOptional(
"Flags", Limits.
Flags);
370 IO.mapRequired(
"Initial", Limits.
Initial);
372 IO.mapOptional(
"Maximum", Limits.
Maximum);
377 IO.mapRequired(
"Offset", Segment.
Offset);
378 IO.mapRequired(
"Functions", Segment.
Functions);
383 IO.mapRequired(
"Module",
Import.Module);
384 IO.mapRequired(
"Field",
Import.Field);
385 IO.mapRequired(
"Kind",
Import.Kind);
387 IO.mapRequired(
"SigIndex",
Import.SigIndex);
389 IO.mapRequired(
"GlobalType",
Import.GlobalImport.Type);
390 IO.mapRequired(
"GlobalMutable",
Import.GlobalImport.Mutable);
392 IO.mapRequired(
"EventAttribute",
Import.EventImport.Attribute);
393 IO.mapRequired(
"EventSigIndex",
Import.EventImport.SigIndex);
395 IO.mapRequired(
"Table",
Import.TableImport);
397 IO.mapRequired(
"Memory",
Import.Memory);
405 IO.mapRequired(
"Name", Export.Name);
406 IO.mapRequired(
"Kind", Export.Kind);
407 IO.mapRequired(
"Index", Export.Index);
412 IO.mapRequired(
"Index", Global.Index);
413 IO.mapRequired(
"Type", Global.Type);
414 IO.mapRequired(
"Mutable", Global.Mutable);
415 IO.mapRequired(
"InitExpr", Global.InitExpr);
421 IO.mapRequired(
"Opcode",
Op);
441 IO.mapRequired(
"Type", Ty);
450 IO.mapRequired(
"InitFlags", Segment.
InitFlags);
452 IO.mapRequired(
"MemoryIndex", Segment.
MemoryIndex);
457 IO.mapRequired(
"Offset", Segment.
Offset);
462 IO.mapRequired(
"Content", Segment.
Content);
467 IO.mapRequired(
"Priority",
Init.Priority);
468 IO.mapRequired(
"Symbol",
Init.Symbol);
472 IO &IO, WasmYAML::ComdatKind &
Kind) {
473 #define ECase(X) IO.enumCase(Kind, #X, wasm::WASM_COMDAT_##X);
482 IO.mapRequired(
"Kind", ComdatEntry.
Kind);
483 IO.mapRequired(
"Index", ComdatEntry.
Index);
488 IO.mapRequired(
"Name",
Comdat.Name);
489 IO.mapRequired(
"Entries",
Comdat.Entries);
494 IO.mapRequired(
"Index",
Info.Index);
495 IO.mapRequired(
"Kind",
Info.Kind);
497 IO.mapRequired(
"Name",
Info.Name);
498 IO.mapRequired(
"Flags",
Info.Flags);
500 IO.mapRequired(
"Function",
Info.ElementIndex);
502 IO.mapRequired(
"Global",
Info.ElementIndex);
504 IO.mapRequired(
"Table",
Info.ElementIndex);
506 IO.mapRequired(
"Event",
Info.ElementIndex);
509 IO.mapRequired(
"Segment",
Info.DataRef.Segment);
510 IO.mapOptional(
"Offset",
Info.DataRef.Offset, 0u);
511 IO.mapRequired(
"Size",
Info.DataRef.Size);
514 IO.mapRequired(
"Section",
Info.ElementIndex);
521 IO.mapRequired(
"Index", Event.
Index);
522 IO.mapRequired(
"Attribute", Event.
Attribute);
523 IO.mapRequired(
"SigIndex", Event.
SigIndex);
527 IO &IO, WasmYAML::LimitFlags &
Value) {
528 #define BCase(X) IO.bitSetCase(Value, #X, wasm::WASM_LIMITS_FLAG_##X)
536 IO &IO, WasmYAML::SegmentFlags &
Value) {}
540 #define BCaseMask(M, X) \
541 IO.maskedBitSetCase(Value, #X, wasm::WASM_SYMBOL_##X, wasm::WASM_SYMBOL_##M)
546 BCaseMask(VISIBILITY_MASK, VISIBILITY_HIDDEN);
556 #define ECase(X) IO.enumCase(Kind, #X, wasm::WASM_SYMBOL_TYPE_##X);
568 #define ECase(X) IO.enumCase(Type, #X, wasm::WASM_TYPE_##X);
581 IO &IO, WasmYAML::ExportKind &
Kind) {
582 #define ECase(X) IO.enumCase(Kind, #X, wasm::WASM_EXTERNAL_##X);
592 IO &IO, WasmYAML::Opcode &Code) {
593 #define ECase(X) IO.enumCase(Code, #X, wasm::WASM_OPCODE_##X);
605 IO &IO, WasmYAML::TableType &
Type) {
606 #define ECase(X) IO.enumCase(Type, #X, wasm::WASM_TYPE_##X);
613 IO &IO, WasmYAML::RelocType &
Type) {
614 #define WASM_RELOC(name, value) IO.enumCase(Type, #name, wasm::name);
615 #include "llvm/BinaryFormat/WasmRelocs.def"
617 IO.enumFallback<Hex32>(
Type);