diff options
Diffstat (limited to 'lib/ObjectYAML/WasmYAML.cpp')
-rw-r--r-- | lib/ObjectYAML/WasmYAML.cpp | 41 |
1 files changed, 39 insertions, 2 deletions
diff --git a/lib/ObjectYAML/WasmYAML.cpp b/lib/ObjectYAML/WasmYAML.cpp index 6a68cd265ad8..8687f22949a2 100644 --- a/lib/ObjectYAML/WasmYAML.cpp +++ b/lib/ObjectYAML/WasmYAML.cpp @@ -58,8 +58,9 @@ static void sectionMapping(IO &IO, WasmYAML::LinkingSection &Section) { commonSectionMapping(IO, Section); IO.mapRequired("Name", Section.Name); IO.mapRequired("DataSize", Section.DataSize); - IO.mapRequired("DataAlignment", Section.DataAlignment); - IO.mapRequired("SymbolInfo", Section.SymbolInfos); + IO.mapOptional("SymbolInfo", Section.SymbolInfos); + IO.mapOptional("SegmentInfo", Section.SegmentInfos); + IO.mapOptional("InitFunctions", Section.InitFunctions); } static void sectionMapping(IO &IO, WasmYAML::CustomSection &Section) { @@ -265,6 +266,14 @@ void MappingTraits<WasmYAML::NameEntry>::mapping( IO.mapRequired("Name", NameEntry.Name); } +void MappingTraits<WasmYAML::SegmentInfo>::mapping( + IO &IO, WasmYAML::SegmentInfo &SegmentInfo) { + IO.mapRequired("Index", SegmentInfo.Index); + IO.mapRequired("Name", SegmentInfo.Name); + IO.mapRequired("Alignment", SegmentInfo.Alignment); + IO.mapRequired("Flags", SegmentInfo.Flags); +} + void MappingTraits<WasmYAML::LocalDecl>::mapping( IO &IO, WasmYAML::LocalDecl &LocalDecl) { IO.mapRequired("Type", LocalDecl.Type); @@ -351,12 +360,40 @@ void MappingTraits<WasmYAML::DataSegment>::mapping( IO.mapRequired("Content", Segment.Content); } +void MappingTraits<WasmYAML::InitFunction>::mapping( + IO &IO, WasmYAML::InitFunction &Init) { + IO.mapRequired("Priority", Init.Priority); + IO.mapRequired("FunctionIndex", Init.FunctionIndex); +} + void MappingTraits<WasmYAML::SymbolInfo>::mapping(IO &IO, WasmYAML::SymbolInfo &Info) { IO.mapRequired("Name", Info.Name); IO.mapRequired("Flags", Info.Flags); } +void ScalarBitSetTraits<WasmYAML::LimitFlags>::bitset( + IO &IO, WasmYAML::LimitFlags &Value) { +#define BCase(X) IO.bitSetCase(Value, #X, wasm::WASM_LIMITS_FLAG_##X) + BCase(HAS_MAX); +#undef BCase +} + +void ScalarBitSetTraits<WasmYAML::SegmentFlags>::bitset( + IO &IO, WasmYAML::SegmentFlags &Value) { +} + +void ScalarBitSetTraits<WasmYAML::SymbolFlags>::bitset( + IO &IO, WasmYAML::SymbolFlags &Value) { +#define BCaseMask(M, X) IO.maskedBitSetCase(Value, #X, wasm::WASM_SYMBOL_##X, wasm::WASM_SYMBOL_##M) + //BCaseMask(BINDING_MASK, BINDING_GLOBAL); + BCaseMask(BINDING_MASK, BINDING_WEAK); + BCaseMask(BINDING_MASK, BINDING_LOCAL); + //BCaseMask(VISIBILITY_MASK, VISIBILITY_DEFAULT); + BCaseMask(VISIBILITY_MASK, VISIBILITY_HIDDEN); +#undef BCaseMask +} + void ScalarEnumerationTraits<WasmYAML::ValueType>::enumeration( IO &IO, WasmYAML::ValueType &Type) { #define ECase(X) IO.enumCase(Type, #X, wasm::WASM_TYPE_##X); |