LLVM 24.0.0git
WasmYAML.h
Go to the documentation of this file.
1//===- WasmYAML.h - Wasm YAMLIO implementation ------------------*- C++ -*-===//
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/// \file
10/// This file declares classes for handling the YAML representation
11/// of wasm binaries.
12///
13//===----------------------------------------------------------------------===//
14
15#ifndef LLVM_OBJECTYAML_WASMYAML_H
16#define LLVM_OBJECTYAML_WASMYAML_H
17
18#include "llvm/ADT/StringRef.h"
22#include <cstdint>
23#include <memory>
24#include <vector>
25
26namespace llvm {
27namespace WasmYAML {
28
41LLVM_YAML_STRONG_TYPEDEF(uint32_t, FeaturePolicyPrefix)
42
43struct FileHeader {
44 yaml::Hex32 Version;
45};
46
47struct Limits {
48 LimitFlags Flags;
49 yaml::Hex32 Minimum;
50 yaml::Hex32 Maximum;
51 yaml::Hex32 PageSize;
52};
53
59
60struct Export {
62 ExportKind Kind;
64};
65
74
82
89
103
108
109struct Function {
111 std::vector<LocalDecl> Locals;
113};
114
116 RelocType Type;
118 // TODO(wvo): this would strictly be better as Hex64, but that will change
119 // all existing obj2yaml output.
120 yaml::Hex32 Offset;
121 int64_t Addend;
122};
123
131
136
138 std::string Name;
139 std::string Version;
140};
141
143 FeaturePolicyPrefix Prefix;
144 std::string Name;
145};
146
153
154struct Signature {
156 SignatureForm Form = wasm::WASM_TYPE_FUNC;
157 std::vector<ValueType> ParamTypes;
158 std::vector<ValueType> ReturnTypes;
159};
160
172
177
179 ComdatKind Kind;
181};
182
183struct Comdat {
185 std::vector<ComdatEntry> Entries;
186};
187
189 explicit Section(SectionType SecType) : Type(SecType) {}
190 virtual ~Section();
191
192 SectionType Type;
193 std::vector<Relocation> Relocations;
194 std::optional<uint8_t> HeaderSecSizeEncodingLen;
195};
196
199 : Section(wasm::WASM_SEC_CUSTOM), Name(Name) {}
200
201 static bool classof(const Section *S) {
202 return S->Type == wasm::WASM_SEC_CUSTOM;
203 }
204
207};
208
214
217 SymbolFlags Flags;
218};
219
221 DylinkSection() : CustomSection("dylink.0") {}
222
223 static bool classof(const Section *S) {
224 auto C = dyn_cast<CustomSection>(S);
225 return C && C->Name == "dylink.0";
226 }
227
232 std::vector<StringRef> Needed;
233 std::vector<DylinkImportInfo> ImportInfo;
234 std::vector<DylinkExportInfo> ExportInfo;
235 std::vector<StringRef> RuntimePath;
236};
237
240
241 static bool classof(const Section *S) {
242 auto C = dyn_cast<CustomSection>(S);
243 return C && C->Name == "name";
244 }
245
246 std::vector<NameEntry> FunctionNames;
247 std::vector<NameEntry> GlobalNames;
248 std::vector<NameEntry> DataSegmentNames;
249};
250
253
254 static bool classof(const Section *S) {
255 auto C = dyn_cast<CustomSection>(S);
256 return C && C->Name == "linking";
257 }
258
260 std::vector<SymbolInfo> SymbolTable;
261 std::vector<SegmentInfo> SegmentInfos;
262 std::vector<InitFunction> InitFunctions;
263 std::vector<Comdat> Comdats;
264};
265
267 ProducersSection() : CustomSection("producers") {}
268
269 static bool classof(const Section *S) {
270 auto C = dyn_cast<CustomSection>(S);
271 return C && C->Name == "producers";
272 }
273
274 std::vector<ProducerEntry> Languages;
275 std::vector<ProducerEntry> Tools;
276 std::vector<ProducerEntry> SDKs;
277};
278
280 TargetFeaturesSection() : CustomSection("target_features") {}
281
282 static bool classof(const Section *S) {
283 auto C = dyn_cast<CustomSection>(S);
284 return C && C->Name == "target_features";
285 }
286
287 std::vector<FeatureEntry> Features;
288};
289
291 TypeSection() : Section(wasm::WASM_SEC_TYPE) {}
292
293 static bool classof(const Section *S) {
294 return S->Type == wasm::WASM_SEC_TYPE;
295 }
296
297 std::vector<Signature> Signatures;
298};
299
301 ImportSection() : Section(wasm::WASM_SEC_IMPORT) {}
302
303 static bool classof(const Section *S) {
304 return S->Type == wasm::WASM_SEC_IMPORT;
305 }
306
307 std::vector<Import> Imports;
308};
309
311 FunctionSection() : Section(wasm::WASM_SEC_FUNCTION) {}
312
313 static bool classof(const Section *S) {
314 return S->Type == wasm::WASM_SEC_FUNCTION;
315 }
316
317 std::vector<uint32_t> FunctionTypes;
318};
319
321 TableSection() : Section(wasm::WASM_SEC_TABLE) {}
322
323 static bool classof(const Section *S) {
324 return S->Type == wasm::WASM_SEC_TABLE;
325 }
326
327 std::vector<Table> Tables;
328};
329
331 MemorySection() : Section(wasm::WASM_SEC_MEMORY) {}
332
333 static bool classof(const Section *S) {
334 return S->Type == wasm::WASM_SEC_MEMORY;
335 }
336
337 std::vector<Limits> Memories;
338};
339
341 TagSection() : Section(wasm::WASM_SEC_TAG) {}
342
343 static bool classof(const Section *S) {
344 return S->Type == wasm::WASM_SEC_TAG;
345 }
346
347 std::vector<uint32_t> TagTypes;
348};
349
351 GlobalSection() : Section(wasm::WASM_SEC_GLOBAL) {}
352
353 static bool classof(const Section *S) {
354 return S->Type == wasm::WASM_SEC_GLOBAL;
355 }
356
357 std::vector<Global> Globals;
358};
359
361 ExportSection() : Section(wasm::WASM_SEC_EXPORT) {}
362
363 static bool classof(const Section *S) {
364 return S->Type == wasm::WASM_SEC_EXPORT;
365 }
366
367 std::vector<Export> Exports;
368};
369
371 StartSection() : Section(wasm::WASM_SEC_START) {}
372
373 static bool classof(const Section *S) {
374 return S->Type == wasm::WASM_SEC_START;
375 }
376
378};
379
381 ElemSection() : Section(wasm::WASM_SEC_ELEM) {}
382
383 static bool classof(const Section *S) {
384 return S->Type == wasm::WASM_SEC_ELEM;
385 }
386
387 std::vector<ElemSegment> Segments;
388};
389
391 CodeSection() : Section(wasm::WASM_SEC_CODE) {}
392
393 static bool classof(const Section *S) {
394 return S->Type == wasm::WASM_SEC_CODE;
395 }
396
397 std::vector<Function> Functions;
398};
399
401 DataSection() : Section(wasm::WASM_SEC_DATA) {}
402
403 static bool classof(const Section *S) {
404 return S->Type == wasm::WASM_SEC_DATA;
405 }
406
407 std::vector<DataSegment> Segments;
408};
409
411 DataCountSection() : Section(wasm::WASM_SEC_DATACOUNT) {}
412
413 static bool classof(const Section *S) {
414 return S->Type == wasm::WASM_SEC_DATACOUNT;
415 }
416
418};
419
420struct Object {
422 std::vector<std::unique_ptr<Section>> Sections;
423};
424
425} // end namespace WasmYAML
426} // end namespace llvm
427
428LLVM_YAML_IS_SEQUENCE_VECTOR(std::unique_ptr<llvm::WasmYAML::Section>)
430LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::WasmYAML::ValueType)
451
452namespace llvm {
453namespace yaml {
454
455template <> struct MappingTraits<WasmYAML::FileHeader> {
456 LLVM_ABI static void mapping(IO &IO, WasmYAML::FileHeader &FileHdr);
457};
458
459template <> struct MappingTraits<std::unique_ptr<WasmYAML::Section>> {
460 LLVM_ABI static void mapping(IO &IO,
461 std::unique_ptr<WasmYAML::Section> &Section);
462};
463
464template <> struct MappingTraits<WasmYAML::Object> {
465 LLVM_ABI static void mapping(IO &IO, WasmYAML::Object &Object);
466};
467
468template <> struct MappingTraits<WasmYAML::Import> {
470};
471
472template <> struct MappingTraits<WasmYAML::Export> {
474};
475
476template <> struct MappingTraits<WasmYAML::Global> {
478};
479
480template <> struct ScalarBitSetTraits<WasmYAML::LimitFlags> {
481 LLVM_ABI static void bitset(IO &IO, WasmYAML::LimitFlags &Value);
482};
483
484template <> struct ScalarBitSetTraits<WasmYAML::SymbolFlags> {
485 LLVM_ABI static void bitset(IO &IO, WasmYAML::SymbolFlags &Value);
486};
487
488template <> struct ScalarEnumerationTraits<WasmYAML::SymbolKind> {
489 LLVM_ABI static void enumeration(IO &IO, WasmYAML::SymbolKind &Kind);
490};
491
492template <> struct ScalarBitSetTraits<WasmYAML::SegmentFlags> {
493 LLVM_ABI static void bitset(IO &IO, WasmYAML::SegmentFlags &Value);
494};
495
496template <> struct ScalarEnumerationTraits<WasmYAML::SectionType> {
497 LLVM_ABI static void enumeration(IO &IO, WasmYAML::SectionType &Type);
498};
499
500template <> struct MappingTraits<WasmYAML::Signature> {
501 LLVM_ABI static void mapping(IO &IO, WasmYAML::Signature &Signature);
502};
503
504template <> struct MappingTraits<WasmYAML::Table> {
505 LLVM_ABI static void mapping(IO &IO, WasmYAML::Table &Table);
506};
507
508template <> struct MappingTraits<WasmYAML::Limits> {
509 LLVM_ABI static void mapping(IO &IO, WasmYAML::Limits &Limits);
510};
511
512template <> struct MappingTraits<WasmYAML::Function> {
514};
515
516template <> struct MappingTraits<WasmYAML::Relocation> {
517 LLVM_ABI static void mapping(IO &IO, WasmYAML::Relocation &Relocation);
518};
519
520template <> struct MappingTraits<WasmYAML::NameEntry> {
521 LLVM_ABI static void mapping(IO &IO, WasmYAML::NameEntry &NameEntry);
522};
523
524template <> struct MappingTraits<WasmYAML::ProducerEntry> {
525 LLVM_ABI static void mapping(IO &IO, WasmYAML::ProducerEntry &ProducerEntry);
526};
527
528template <> struct ScalarEnumerationTraits<WasmYAML::FeaturePolicyPrefix> {
529 LLVM_ABI static void enumeration(IO &IO,
530 WasmYAML::FeaturePolicyPrefix &Prefix);
531};
532
533template <> struct MappingTraits<WasmYAML::FeatureEntry> {
534 LLVM_ABI static void mapping(IO &IO, WasmYAML::FeatureEntry &FeatureEntry);
535};
536
537template <> struct MappingTraits<WasmYAML::SegmentInfo> {
538 LLVM_ABI static void mapping(IO &IO, WasmYAML::SegmentInfo &SegmentInfo);
539};
540
541template <> struct MappingTraits<WasmYAML::LocalDecl> {
542 LLVM_ABI static void mapping(IO &IO, WasmYAML::LocalDecl &LocalDecl);
543};
544
545template <> struct MappingTraits<WasmYAML::InitExpr> {
546 LLVM_ABI static void mapping(IO &IO, WasmYAML::InitExpr &Expr);
547};
548
549template <> struct MappingTraits<WasmYAML::DataSegment> {
550 LLVM_ABI static void mapping(IO &IO, WasmYAML::DataSegment &Segment);
551};
552
553template <> struct MappingTraits<WasmYAML::ElemSegment> {
554 LLVM_ABI static void mapping(IO &IO, WasmYAML::ElemSegment &Segment);
555};
556
557template <> struct MappingTraits<WasmYAML::SymbolInfo> {
558 LLVM_ABI static void mapping(IO &IO, WasmYAML::SymbolInfo &Info);
559};
560
561template <> struct MappingTraits<WasmYAML::InitFunction> {
563};
564
565template <> struct ScalarEnumerationTraits<WasmYAML::ComdatKind> {
566 LLVM_ABI static void enumeration(IO &IO, WasmYAML::ComdatKind &Kind);
567};
568
569template <> struct MappingTraits<WasmYAML::ComdatEntry> {
570 LLVM_ABI static void mapping(IO &IO, WasmYAML::ComdatEntry &ComdatEntry);
571};
572
573template <> struct MappingTraits<WasmYAML::Comdat> {
575};
576
578 LLVM_ABI static void enumeration(IO &IO, WasmYAML::ValueType &Type);
579};
580
581template <> struct ScalarEnumerationTraits<WasmYAML::ExportKind> {
582 LLVM_ABI static void enumeration(IO &IO, WasmYAML::ExportKind &Kind);
583};
584
585template <> struct ScalarEnumerationTraits<WasmYAML::TableType> {
586 LLVM_ABI static void enumeration(IO &IO, WasmYAML::TableType &Type);
587};
588
589template <> struct ScalarEnumerationTraits<WasmYAML::Opcode> {
590 LLVM_ABI static void enumeration(IO &IO, WasmYAML::Opcode &Opcode);
591};
592
593template <> struct ScalarEnumerationTraits<WasmYAML::RelocType> {
594 LLVM_ABI static void enumeration(IO &IO, WasmYAML::RelocType &Kind);
595};
596
597template <> struct MappingTraits<WasmYAML::DylinkImportInfo> {
598 LLVM_ABI static void mapping(IO &IO, WasmYAML::DylinkImportInfo &Info);
599};
600
601template <> struct MappingTraits<WasmYAML::DylinkExportInfo> {
602 LLVM_ABI static void mapping(IO &IO, WasmYAML::DylinkExportInfo &Info);
603};
604
605} // end namespace yaml
606} // end namespace llvm
607
608#endif // LLVM_OBJECTYAML_WASMYAML_H
static GCRegistry::Add< ShadowStackGC > C("shadow-stack", "Very portable GC for uncooperative code generators")
#define LLVM_ABI
Definition Compiler.h:215
#define LLVM_YAML_IS_SEQUENCE_VECTOR(type)
Utility for declaring that a std::vector of a particular type should be considered a YAML sequence.
#define LLVM_YAML_STRONG_TYPEDEF(_base, _type)
YAML I/O does conversion based on types. But often native data types are just a typedef of built in i...
Represent a constant reference to a string, i.e.
Definition StringRef.h:56
The instances of the Type class are immutable: once they are created, they are never changed.
Definition Type.h:46
LLVM Value Representation.
Definition Value.h:75
Specialized YAMLIO scalar type for representing a binary blob.
Definition YAML.h:64
@ WASM_TYPE_FUNC
Definition Wasm.h:75
@ WASM_SEC_CODE
Definition Wasm.h:47
@ WASM_SEC_MEMORY
Definition Wasm.h:42
@ WASM_SEC_IMPORT
Definition Wasm.h:39
@ WASM_SEC_EXPORT
Definition Wasm.h:44
@ WASM_SEC_DATACOUNT
Definition Wasm.h:49
@ WASM_SEC_CUSTOM
Definition Wasm.h:37
@ WASM_SEC_FUNCTION
Definition Wasm.h:40
@ WASM_SEC_ELEM
Definition Wasm.h:46
@ WASM_SEC_START
Definition Wasm.h:45
@ WASM_SEC_TABLE
Definition Wasm.h:41
@ WASM_SEC_TYPE
Definition Wasm.h:38
@ WASM_SEC_TAG
Definition Wasm.h:50
@ WASM_SEC_GLOBAL
Definition Wasm.h:43
@ WASM_SEC_DATA
Definition Wasm.h:48
This is an optimization pass for GlobalISel generic memory operations.
decltype(auto) dyn_cast(const From &Val)
dyn_cast<X> - Return the argument parameter cast to the specified type.
Definition Casting.h:643
@ Export
Export information to summary.
Definition IPO.h:40
@ Import
Import information from summary.
Definition IPO.h:39
@ Global
Append to llvm.global_dtors.
PointerUnion< const Value *, const PseudoSourceValue * > ValueType
Implement std::hash so that hash_code can be used in STL containers.
Definition BitVector.h:878
std::vector< Function > Functions
Definition WasmYAML.h:397
static bool classof(const Section *S)
Definition WasmYAML.h:393
std::vector< ComdatEntry > Entries
Definition WasmYAML.h:185
static bool classof(const Section *S)
Definition WasmYAML.h:201
CustomSection(StringRef Name)
Definition WasmYAML.h:198
static bool classof(const Section *S)
Definition WasmYAML.h:413
std::vector< DataSegment > Segments
Definition WasmYAML.h:407
static bool classof(const Section *S)
Definition WasmYAML.h:403
yaml::BinaryRef Content
Definition WasmYAML.h:129
std::vector< ElemSegment > Segments
Definition WasmYAML.h:387
static bool classof(const Section *S)
Definition WasmYAML.h:383
std::vector< uint32_t > Functions
Definition WasmYAML.h:80
static bool classof(const Section *S)
Definition WasmYAML.h:363
std::vector< Export > Exports
Definition WasmYAML.h:367
FeaturePolicyPrefix Prefix
Definition WasmYAML.h:143
std::vector< uint32_t > FunctionTypes
Definition WasmYAML.h:317
static bool classof(const Section *S)
Definition WasmYAML.h:313
std::vector< LocalDecl > Locals
Definition WasmYAML.h:111
yaml::BinaryRef Body
Definition WasmYAML.h:112
static bool classof(const Section *S)
Definition WasmYAML.h:353
std::vector< Global > Globals
Definition WasmYAML.h:357
std::vector< Import > Imports
Definition WasmYAML.h:307
static bool classof(const Section *S)
Definition WasmYAML.h:303
wasm::WasmInitExprMVP Inst
Definition WasmYAML.h:70
yaml::BinaryRef Body
Definition WasmYAML.h:71
yaml::Hex32 Minimum
Definition WasmYAML.h:49
yaml::Hex32 PageSize
Definition WasmYAML.h:51
yaml::Hex32 Maximum
Definition WasmYAML.h:50
std::vector< InitFunction > InitFunctions
Definition WasmYAML.h:262
std::vector< SymbolInfo > SymbolTable
Definition WasmYAML.h:260
std::vector< SegmentInfo > SegmentInfos
Definition WasmYAML.h:261
static bool classof(const Section *S)
Definition WasmYAML.h:254
std::vector< Comdat > Comdats
Definition WasmYAML.h:263
std::vector< Limits > Memories
Definition WasmYAML.h:337
static bool classof(const Section *S)
Definition WasmYAML.h:333
std::vector< NameEntry > DataSegmentNames
Definition WasmYAML.h:248
static bool classof(const Section *S)
Definition WasmYAML.h:241
std::vector< NameEntry > FunctionNames
Definition WasmYAML.h:246
std::vector< NameEntry > GlobalNames
Definition WasmYAML.h:247
std::vector< std::unique_ptr< Section > > Sections
Definition WasmYAML.h:422
static bool classof(const Section *S)
Definition WasmYAML.h:269
std::vector< ProducerEntry > Tools
Definition WasmYAML.h:275
std::vector< ProducerEntry > Languages
Definition WasmYAML.h:274
std::vector< ProducerEntry > SDKs
Definition WasmYAML.h:276
Section(SectionType SecType)
Definition WasmYAML.h:189
std::optional< uint8_t > HeaderSecSizeEncodingLen
Definition WasmYAML.h:194
std::vector< Relocation > Relocations
Definition WasmYAML.h:193
std::vector< ValueType > ReturnTypes
Definition WasmYAML.h:158
std::vector< ValueType > ParamTypes
Definition WasmYAML.h:157
static bool classof(const Section *S)
Definition WasmYAML.h:373
wasm::WasmDataReference DataRef
Definition WasmYAML.h:168
wasm::WasmCommonReference CommonRef
Definition WasmYAML.h:169
static bool classof(const Section *S)
Definition WasmYAML.h:323
std::vector< Table > Tables
Definition WasmYAML.h:327
std::vector< uint32_t > TagTypes
Definition WasmYAML.h:347
static bool classof(const Section *S)
Definition WasmYAML.h:343
std::vector< FeatureEntry > Features
Definition WasmYAML.h:287
static bool classof(const Section *S)
Definition WasmYAML.h:282
static bool classof(const Section *S)
Definition WasmYAML.h:293
std::vector< Signature > Signatures
Definition WasmYAML.h:297
static LLVM_ABI void mapping(IO &IO, WasmYAML::ComdatEntry &ComdatEntry)
Definition WasmYAML.cpp:497
static LLVM_ABI void mapping(IO &IO, WasmYAML::Comdat &Comdat)
Definition WasmYAML.cpp:503
static LLVM_ABI void mapping(IO &IO, WasmYAML::DataSegment &Segment)
Definition WasmYAML.cpp:464
static LLVM_ABI void mapping(IO &IO, WasmYAML::DylinkExportInfo &Info)
Definition WasmYAML.cpp:552
static LLVM_ABI void mapping(IO &IO, WasmYAML::DylinkImportInfo &Info)
Definition WasmYAML.cpp:545
static LLVM_ABI void mapping(IO &IO, WasmYAML::ElemSegment &Segment)
Definition WasmYAML.cpp:380
static LLVM_ABI void mapping(IO &IO, WasmYAML::Export &Export)
Definition WasmYAML.cpp:415
static LLVM_ABI void mapping(IO &IO, WasmYAML::FeatureEntry &FeatureEntry)
Definition WasmYAML.cpp:350
static LLVM_ABI void mapping(IO &IO, WasmYAML::FileHeader &FileHdr)
Definition WasmYAML.cpp:32
static LLVM_ABI void mapping(IO &IO, WasmYAML::Function &Function)
Definition WasmYAML.cpp:315
static LLVM_ABI void mapping(IO &IO, WasmYAML::Global &Global)
Definition WasmYAML.cpp:422
static LLVM_ABI void mapping(IO &IO, WasmYAML::Import &Import)
Definition WasmYAML.cpp:395
static LLVM_ABI void mapping(IO &IO, WasmYAML::InitExpr &Expr)
Definition WasmYAML.cpp:430
static LLVM_ABI void mapping(IO &IO, WasmYAML::InitFunction &Init)
Definition WasmYAML.cpp:482
static LLVM_ABI void mapping(IO &IO, WasmYAML::Limits &Limits)
Definition WasmYAML.cpp:370
static LLVM_ABI void mapping(IO &IO, WasmYAML::LocalDecl &LocalDecl)
Definition WasmYAML.cpp:364
static LLVM_ABI void mapping(IO &IO, WasmYAML::NameEntry &NameEntry)
Definition WasmYAML.cpp:330
static LLVM_ABI void mapping(IO &IO, WasmYAML::Object &Object)
Definition WasmYAML.cpp:37
static LLVM_ABI void mapping(IO &IO, WasmYAML::ProducerEntry &ProducerEntry)
Definition WasmYAML.cpp:336
static LLVM_ABI void mapping(IO &IO, WasmYAML::Relocation &Relocation)
Definition WasmYAML.cpp:322
static LLVM_ABI void mapping(IO &IO, WasmYAML::SegmentInfo &SegmentInfo)
Definition WasmYAML.cpp:356
static LLVM_ABI void mapping(IO &IO, WasmYAML::Signature &Signature)
Definition WasmYAML.cpp:302
static LLVM_ABI void mapping(IO &IO, WasmYAML::SymbolInfo &Info)
Definition WasmYAML.cpp:509
static LLVM_ABI void mapping(IO &IO, WasmYAML::Table &Table)
Definition WasmYAML.cpp:309
static LLVM_ABI void mapping(IO &IO, std::unique_ptr< WasmYAML::Section > &Section)
Definition WasmYAML.cpp:168
This class should be specialized by any type that needs to be converted to/from a YAML mapping.
Definition YAMLTraits.h:63
static LLVM_ABI void bitset(IO &IO, WasmYAML::LimitFlags &Value)
Definition WasmYAML.cpp:558
static LLVM_ABI void bitset(IO &IO, WasmYAML::SegmentFlags &Value)
Definition WasmYAML.cpp:568
static LLVM_ABI void bitset(IO &IO, WasmYAML::SymbolFlags &Value)
Definition WasmYAML.cpp:577
This class should be specialized by any integer type that is a union of bit values and the YAML repre...
Definition YAMLTraits.h:124
static LLVM_ABI void enumeration(IO &IO, WasmYAML::ComdatKind &Kind)
Definition WasmYAML.cpp:488
static LLVM_ABI void enumeration(IO &IO, WasmYAML::ExportKind &Kind)
Definition WasmYAML.cpp:624
static LLVM_ABI void enumeration(IO &IO, WasmYAML::FeaturePolicyPrefix &Prefix)
Definition WasmYAML.cpp:342
static LLVM_ABI void enumeration(IO &IO, WasmYAML::Opcode &Opcode)
Definition WasmYAML.cpp:635
static LLVM_ABI void enumeration(IO &IO, WasmYAML::RelocType &Kind)
Definition WasmYAML.cpp:659
static LLVM_ABI void enumeration(IO &IO, WasmYAML::SectionType &Type)
Definition WasmYAML.cpp:282
static LLVM_ABI void enumeration(IO &IO, WasmYAML::SymbolKind &Kind)
Definition WasmYAML.cpp:596
static LLVM_ABI void enumeration(IO &IO, WasmYAML::TableType &Type)
Definition WasmYAML.cpp:648
static LLVM_ABI void enumeration(IO &IO, WasmYAML::ValueType &Type)
Definition WasmYAML.cpp:608
This class should be specialized by any integral type that converts to/from a YAML scalar where there...
Definition YAMLTraits.h:108