diff options
Diffstat (limited to 'src/wasm/wasm-binary.cpp')
-rw-r--r-- | src/wasm/wasm-binary.cpp | 180 |
1 files changed, 90 insertions, 90 deletions
diff --git a/src/wasm/wasm-binary.cpp b/src/wasm/wasm-binary.cpp index 782979520..3cceaef46 100644 --- a/src/wasm/wasm-binary.cpp +++ b/src/wasm/wasm-binary.cpp @@ -86,7 +86,7 @@ void WasmBinaryWriter::write() { } #endif - writeLateUserSections(); + writeLateCustomSections(); writeFeaturesSection(); } @@ -186,8 +186,8 @@ void WasmBinaryWriter::finishSection(int32_t start) { } } -int32_t -WasmBinaryWriter::startSubsection(BinaryConsts::UserSections::Subsection code) { +int32_t WasmBinaryWriter::startSubsection( + BinaryConsts::CustomSections::Subsection code) { return startSection(code); } @@ -799,13 +799,13 @@ void WasmBinaryWriter::writeTags() { void WasmBinaryWriter::writeNames() { BYN_TRACE("== writeNames\n"); - auto start = startSection(BinaryConsts::Section::User); - writeInlineString(BinaryConsts::UserSections::Name); + auto start = startSection(BinaryConsts::Section::Custom); + writeInlineString(BinaryConsts::CustomSections::Name); // module name if (emitModuleName && wasm->name.is()) { auto substart = - startSubsection(BinaryConsts::UserSections::Subsection::NameModule); + startSubsection(BinaryConsts::CustomSections::Subsection::NameModule); writeEscapedName(wasm->name.str); finishSubsection(substart); } @@ -819,7 +819,7 @@ void WasmBinaryWriter::writeNames() { // function names { auto substart = - startSubsection(BinaryConsts::UserSections::Subsection::NameFunction); + startSubsection(BinaryConsts::CustomSections::Subsection::NameFunction); o << U32LEB(indexes.functionIndexes.size()); Index emitted = 0; auto add = [&](Function* curr) { @@ -855,7 +855,7 @@ void WasmBinaryWriter::writeNames() { if (functionsWithLocalNames.size() > 0) { // Otherwise emit those functions but only include locals with a name. auto substart = - startSubsection(BinaryConsts::UserSections::Subsection::NameLocal); + startSubsection(BinaryConsts::CustomSections::Subsection::NameLocal); o << U32LEB(functionsWithLocalNames.size()); Index emitted = 0; for (auto& [index, func] : functionsWithLocalNames) { @@ -906,7 +906,7 @@ void WasmBinaryWriter::writeNames() { } if (!namedTypes.empty()) { auto substart = - startSubsection(BinaryConsts::UserSections::Subsection::NameType); + startSubsection(BinaryConsts::CustomSections::Subsection::NameType); o << U32LEB(namedTypes.size()); for (auto type : namedTypes) { o << U32LEB(indexedTypes.indices[type]); @@ -932,7 +932,7 @@ void WasmBinaryWriter::writeNames() { if (tablesWithNames.size() > 0) { auto substart = - startSubsection(BinaryConsts::UserSections::Subsection::NameTable); + startSubsection(BinaryConsts::CustomSections::Subsection::NameTable); o << U32LEB(tablesWithNames.size()); for (auto& [index, table] : tablesWithNames) { @@ -959,7 +959,7 @@ void WasmBinaryWriter::writeNames() { assert(checked == indexes.memoryIndexes.size()); if (memoriesWithNames.size() > 0) { auto substart = - startSubsection(BinaryConsts::UserSections::Subsection::NameMemory); + startSubsection(BinaryConsts::CustomSections::Subsection::NameMemory); o << U32LEB(memoriesWithNames.size()); for (auto& [index, memory] : memoriesWithNames) { o << U32LEB(index); @@ -984,7 +984,7 @@ void WasmBinaryWriter::writeNames() { assert(checked == indexes.globalIndexes.size()); if (globalsWithNames.size() > 0) { auto substart = - startSubsection(BinaryConsts::UserSections::Subsection::NameGlobal); + startSubsection(BinaryConsts::CustomSections::Subsection::NameGlobal); o << U32LEB(globalsWithNames.size()); for (auto& [index, global] : globalsWithNames) { o << U32LEB(index); @@ -1008,7 +1008,7 @@ void WasmBinaryWriter::writeNames() { if (elemsWithNames.size() > 0) { auto substart = - startSubsection(BinaryConsts::UserSections::Subsection::NameElem); + startSubsection(BinaryConsts::CustomSections::Subsection::NameElem); o << U32LEB(elemsWithNames.size()); for (auto& [index, elem] : elemsWithNames) { @@ -1031,7 +1031,7 @@ void WasmBinaryWriter::writeNames() { if (count) { auto substart = - startSubsection(BinaryConsts::UserSections::Subsection::NameData); + startSubsection(BinaryConsts::CustomSections::Subsection::NameData); o << U32LEB(count); for (Index i = 0; i < wasm->dataSegments.size(); i++) { auto& seg = wasm->dataSegments[i]; @@ -1058,7 +1058,7 @@ void WasmBinaryWriter::writeNames() { } if (!relevantTypes.empty()) { auto substart = - startSubsection(BinaryConsts::UserSections::Subsection::NameField); + startSubsection(BinaryConsts::CustomSections::Subsection::NameField); o << U32LEB(relevantTypes.size()); for (Index i = 0; i < relevantTypes.size(); i++) { auto type = relevantTypes[i]; @@ -1086,7 +1086,7 @@ void WasmBinaryWriter::writeNames() { if (count) { auto substart = - startSubsection(BinaryConsts::UserSections::Subsection::NameTag); + startSubsection(BinaryConsts::CustomSections::Subsection::NameTag); o << U32LEB(count); for (Index i = 0; i < wasm->tags.size(); i++) { auto& tag = wasm->tags[i]; @@ -1104,8 +1104,8 @@ void WasmBinaryWriter::writeNames() { void WasmBinaryWriter::writeSourceMapUrl() { BYN_TRACE("== writeSourceMapUrl\n"); - auto start = startSection(BinaryConsts::Section::User); - writeInlineString(BinaryConsts::UserSections::SourceMapUrl); + auto start = startSection(BinaryConsts::Section::Custom); + writeInlineString(BinaryConsts::CustomSections::SourceMapUrl); writeInlineString(sourceMapUrl.c_str()); finishSection(start); } @@ -1173,16 +1173,16 @@ void WasmBinaryWriter::writeSourceMapEpilog() { *sourceMap << "\"}"; } -void WasmBinaryWriter::writeLateUserSections() { - for (auto& section : wasm->userSections) { - if (section.name != BinaryConsts::UserSections::Dylink) { - writeUserSection(section); +void WasmBinaryWriter::writeLateCustomSections() { + for (auto& section : wasm->customSections) { + if (section.name != BinaryConsts::CustomSections::Dylink) { + writeCustomSection(section); } } } -void WasmBinaryWriter::writeUserSection(const UserSection& section) { - auto start = startSection(BinaryConsts::User); +void WasmBinaryWriter::writeCustomSection(const CustomSection& section) { + auto start = startSection(BinaryConsts::Custom); writeInlineString(section.name.c_str()); for (size_t i = 0; i < section.data.size(); i++) { o << uint8_t(section.data[i]); @@ -1200,37 +1200,37 @@ void WasmBinaryWriter::writeFeaturesSection() { auto toString = [](FeatureSet::Feature f) { switch (f) { case FeatureSet::Atomics: - return BinaryConsts::UserSections::AtomicsFeature; + return BinaryConsts::CustomSections::AtomicsFeature; case FeatureSet::MutableGlobals: - return BinaryConsts::UserSections::MutableGlobalsFeature; + return BinaryConsts::CustomSections::MutableGlobalsFeature; case FeatureSet::TruncSat: - return BinaryConsts::UserSections::TruncSatFeature; + return BinaryConsts::CustomSections::TruncSatFeature; case FeatureSet::SIMD: - return BinaryConsts::UserSections::SIMD128Feature; + return BinaryConsts::CustomSections::SIMD128Feature; case FeatureSet::BulkMemory: - return BinaryConsts::UserSections::BulkMemoryFeature; + return BinaryConsts::CustomSections::BulkMemoryFeature; case FeatureSet::SignExt: - return BinaryConsts::UserSections::SignExtFeature; + return BinaryConsts::CustomSections::SignExtFeature; case FeatureSet::ExceptionHandling: - return BinaryConsts::UserSections::ExceptionHandlingFeature; + return BinaryConsts::CustomSections::ExceptionHandlingFeature; case FeatureSet::TailCall: - return BinaryConsts::UserSections::TailCallFeature; + return BinaryConsts::CustomSections::TailCallFeature; case FeatureSet::ReferenceTypes: - return BinaryConsts::UserSections::ReferenceTypesFeature; + return BinaryConsts::CustomSections::ReferenceTypesFeature; case FeatureSet::Multivalue: - return BinaryConsts::UserSections::MultivalueFeature; + return BinaryConsts::CustomSections::MultivalueFeature; case FeatureSet::GC: - return BinaryConsts::UserSections::GCFeature; + return BinaryConsts::CustomSections::GCFeature; case FeatureSet::Memory64: - return BinaryConsts::UserSections::Memory64Feature; + return BinaryConsts::CustomSections::Memory64Feature; case FeatureSet::RelaxedSIMD: - return BinaryConsts::UserSections::RelaxedSIMDFeature; + return BinaryConsts::CustomSections::RelaxedSIMDFeature; case FeatureSet::ExtendedConst: - return BinaryConsts::UserSections::ExtendedConstFeature; + return BinaryConsts::CustomSections::ExtendedConstFeature; case FeatureSet::Strings: - return BinaryConsts::UserSections::StringsFeature; + return BinaryConsts::CustomSections::StringsFeature; case FeatureSet::MultiMemories: - return BinaryConsts::UserSections::MultiMemoriesFeature; + return BinaryConsts::CustomSections::MultiMemoriesFeature; default: WASM_UNREACHABLE("unexpected feature flag"); } @@ -1240,8 +1240,8 @@ void WasmBinaryWriter::writeFeaturesSection() { wasm->features.iterFeatures( [&](FeatureSet::Feature f) { features.push_back(toString(f)); }); - auto start = startSection(BinaryConsts::User); - writeInlineString(BinaryConsts::UserSections::TargetFeatures); + auto start = startSection(BinaryConsts::Custom); + writeInlineString(BinaryConsts::CustomSections::TargetFeatures); o << U32LEB(features.size()); for (auto& f : features) { o << uint8_t(BinaryConsts::FeatureUsed); @@ -1255,8 +1255,8 @@ void WasmBinaryWriter::writeLegacyDylinkSection() { return; } - auto start = startSection(BinaryConsts::User); - writeInlineString(BinaryConsts::UserSections::Dylink); + auto start = startSection(BinaryConsts::Custom); + writeInlineString(BinaryConsts::CustomSections::Dylink); o << U32LEB(wasm->dylinkSection->memorySize); o << U32LEB(wasm->dylinkSection->memoryAlignment); o << U32LEB(wasm->dylinkSection->tableSize); @@ -1278,11 +1278,11 @@ void WasmBinaryWriter::writeDylinkSection() { return; } - auto start = startSection(BinaryConsts::User); - writeInlineString(BinaryConsts::UserSections::Dylink0); + auto start = startSection(BinaryConsts::Custom); + writeInlineString(BinaryConsts::CustomSections::Dylink0); auto substart = - startSubsection(BinaryConsts::UserSections::Subsection::DylinkMemInfo); + startSubsection(BinaryConsts::CustomSections::Subsection::DylinkMemInfo); o << U32LEB(wasm->dylinkSection->memorySize); o << U32LEB(wasm->dylinkSection->memoryAlignment); o << U32LEB(wasm->dylinkSection->tableSize); @@ -1291,7 +1291,7 @@ void WasmBinaryWriter::writeDylinkSection() { if (wasm->dylinkSection->neededDynlibs.size()) { substart = - startSubsection(BinaryConsts::UserSections::Subsection::DylinkNeeded); + startSubsection(BinaryConsts::CustomSections::Subsection::DylinkNeeded); o << U32LEB(wasm->dylinkSection->neededDynlibs.size()); for (auto& neededDynlib : wasm->dylinkSection->neededDynlibs) { writeInlineString(neededDynlib.str); @@ -1592,7 +1592,7 @@ bool WasmBinaryBuilder::hasDWARFSections() { throwError("Section extends beyond end of input"); } auto oldPos = pos; - if (sectionCode == BinaryConsts::Section::User) { + if (sectionCode == BinaryConsts::Section::Custom) { auto sectionName = getInlineString(); if (Debug::isDWARFSection(sectionName)) { has = true; @@ -1632,7 +1632,7 @@ void WasmBinaryBuilder::read() { // note the section in the list of seen sections, as almost no sections can // appear more than once, and verify those that shouldn't do not. - if (sectionCode != BinaryConsts::Section::User && + if (sectionCode != BinaryConsts::Section::Custom && sectionCode != BinaryConsts::Section::Code) { if (!seenSections.insert(BinaryConsts::Section(sectionCode)).second) { throwError("section seen more than once: " + @@ -1687,7 +1687,7 @@ void WasmBinaryBuilder::read() { readTags(); break; default: { - readUserSection(payloadLen); + readCustomSection(payloadLen); if (pos > oldPos + payloadLen) { throwError("bad user section size, started at " + std::to_string(oldPos) + " plus payload " + @@ -1710,8 +1710,8 @@ void WasmBinaryBuilder::read() { processNames(); } -void WasmBinaryBuilder::readUserSection(size_t payloadLen) { - BYN_TRACE("== readUserSection\n"); +void WasmBinaryBuilder::readCustomSection(size_t payloadLen) { + BYN_TRACE("== readCustomSection\n"); auto oldPos = pos; Name sectionName = getInlineString(); size_t read = pos - oldPos; @@ -1719,27 +1719,27 @@ void WasmBinaryBuilder::readUserSection(size_t payloadLen) { throwError("bad user section size"); } payloadLen -= read; - if (sectionName.equals(BinaryConsts::UserSections::Name)) { + if (sectionName.equals(BinaryConsts::CustomSections::Name)) { if (debugInfo) { readNames(payloadLen); } else { pos += payloadLen; } - } else if (sectionName.equals(BinaryConsts::UserSections::TargetFeatures)) { + } else if (sectionName.equals(BinaryConsts::CustomSections::TargetFeatures)) { readFeatures(payloadLen); - } else if (sectionName.equals(BinaryConsts::UserSections::Dylink)) { + } else if (sectionName.equals(BinaryConsts::CustomSections::Dylink)) { readDylink(payloadLen); - } else if (sectionName.equals(BinaryConsts::UserSections::Dylink0)) { + } else if (sectionName.equals(BinaryConsts::CustomSections::Dylink0)) { readDylink0(payloadLen); } else { // an unfamiliar custom section - if (sectionName.equals(BinaryConsts::UserSections::Linking)) { + if (sectionName.equals(BinaryConsts::CustomSections::Linking)) { std::cerr << "warning: linking section is present, so this is not a standard " "wasm file - binaryen cannot handle this properly!\n"; } - wasm.userSections.resize(wasm.userSections.size() + 1); - auto& section = wasm.userSections.back(); + wasm.customSections.resize(wasm.customSections.size() + 1); + auto& section = wasm.customSections.back(); section.name = sectionName.str; auto data = getByteView(payloadLen); section.data = {data.begin(), data.end()}; @@ -3328,10 +3328,10 @@ void WasmBinaryBuilder::readNames(size_t payloadLen) { lastType = nameType; auto subsectionSize = getU32LEB(); auto subsectionPos = pos; - if (nameType == BinaryConsts::UserSections::Subsection::NameModule) { + using Subsection = BinaryConsts::CustomSections::Subsection; + if (nameType == Subsection::NameModule) { wasm.name = getInlineString(); - } else if (nameType == - BinaryConsts::UserSections::Subsection::NameFunction) { + } else if (nameType == Subsection::NameFunction) { auto num = getU32LEB(); NameProcessor processor; for (size_t i = 0; i < num; i++) { @@ -3347,7 +3347,7 @@ void WasmBinaryBuilder::readNames(size_t payloadLen) { << std::to_string(index) << std::endl; } } - } else if (nameType == BinaryConsts::UserSections::Subsection::NameLocal) { + } else if (nameType == Subsection::NameLocal) { auto numFuncs = getU32LEB(); for (size_t i = 0; i < numFuncs; i++) { auto funcIndex = getU32LEB(); @@ -3384,7 +3384,7 @@ void WasmBinaryBuilder::readNames(size_t payloadLen) { } } } - } else if (nameType == BinaryConsts::UserSections::Subsection::NameType) { + } else if (nameType == Subsection::NameType) { auto num = getU32LEB(); NameProcessor processor; for (size_t i = 0; i < num; i++) { @@ -3400,7 +3400,7 @@ void WasmBinaryBuilder::readNames(size_t payloadLen) { << std::to_string(index) << std::endl; } } - } else if (nameType == BinaryConsts::UserSections::Subsection::NameTable) { + } else if (nameType == Subsection::NameTable) { auto num = getU32LEB(); NameProcessor processor; for (size_t i = 0; i < num; i++) { @@ -3423,7 +3423,7 @@ void WasmBinaryBuilder::readNames(size_t payloadLen) { << std::to_string(index) << std::endl; } } - } else if (nameType == BinaryConsts::UserSections::Subsection::NameElem) { + } else if (nameType == Subsection::NameElem) { auto num = getU32LEB(); NameProcessor processor; for (size_t i = 0; i < num; i++) { @@ -3440,7 +3440,7 @@ void WasmBinaryBuilder::readNames(size_t payloadLen) { << std::to_string(index) << std::endl; } } - } else if (nameType == BinaryConsts::UserSections::Subsection::NameMemory) { + } else if (nameType == Subsection::NameMemory) { auto num = getU32LEB(); NameProcessor processor; for (size_t i = 0; i < num; i++) { @@ -3456,7 +3456,7 @@ void WasmBinaryBuilder::readNames(size_t payloadLen) { << std::to_string(index) << std::endl; } } - } else if (nameType == BinaryConsts::UserSections::Subsection::NameData) { + } else if (nameType == Subsection::NameData) { auto num = getU32LEB(); NameProcessor processor; for (size_t i = 0; i < num; i++) { @@ -3472,7 +3472,7 @@ void WasmBinaryBuilder::readNames(size_t payloadLen) { << std::to_string(index) << std::endl; } } - } else if (nameType == BinaryConsts::UserSections::Subsection::NameGlobal) { + } else if (nameType == Subsection::NameGlobal) { auto num = getU32LEB(); NameProcessor processor; for (size_t i = 0; i < num; i++) { @@ -3488,7 +3488,7 @@ void WasmBinaryBuilder::readNames(size_t payloadLen) { << std::to_string(index) << std::endl; } } - } else if (nameType == BinaryConsts::UserSections::Subsection::NameField) { + } else if (nameType == Subsection::NameField) { auto numTypes = getU32LEB(); for (size_t i = 0; i < numTypes; i++) { auto typeIndex = getU32LEB(); @@ -3508,7 +3508,7 @@ void WasmBinaryBuilder::readNames(size_t payloadLen) { } } } - } else if (nameType == BinaryConsts::UserSections::Subsection::NameTag) { + } else if (nameType == Subsection::NameTag) { auto num = getU32LEB(); NameProcessor processor; for (size_t i = 0; i < num; i++) { @@ -3563,37 +3563,37 @@ void WasmBinaryBuilder::readFeatures(size_t payloadLen) { } FeatureSet feature; - if (name == BinaryConsts::UserSections::AtomicsFeature) { + if (name == BinaryConsts::CustomSections::AtomicsFeature) { feature = FeatureSet::Atomics; - } else if (name == BinaryConsts::UserSections::BulkMemoryFeature) { + } else if (name == BinaryConsts::CustomSections::BulkMemoryFeature) { feature = FeatureSet::BulkMemory; - } else if (name == BinaryConsts::UserSections::ExceptionHandlingFeature) { + } else if (name == BinaryConsts::CustomSections::ExceptionHandlingFeature) { feature = FeatureSet::ExceptionHandling; - } else if (name == BinaryConsts::UserSections::MutableGlobalsFeature) { + } else if (name == BinaryConsts::CustomSections::MutableGlobalsFeature) { feature = FeatureSet::MutableGlobals; - } else if (name == BinaryConsts::UserSections::TruncSatFeature) { + } else if (name == BinaryConsts::CustomSections::TruncSatFeature) { feature = FeatureSet::TruncSat; - } else if (name == BinaryConsts::UserSections::SignExtFeature) { + } else if (name == BinaryConsts::CustomSections::SignExtFeature) { feature = FeatureSet::SignExt; - } else if (name == BinaryConsts::UserSections::SIMD128Feature) { + } else if (name == BinaryConsts::CustomSections::SIMD128Feature) { feature = FeatureSet::SIMD; - } else if (name == BinaryConsts::UserSections::TailCallFeature) { + } else if (name == BinaryConsts::CustomSections::TailCallFeature) { feature = FeatureSet::TailCall; - } else if (name == BinaryConsts::UserSections::ReferenceTypesFeature) { + } else if (name == BinaryConsts::CustomSections::ReferenceTypesFeature) { feature = FeatureSet::ReferenceTypes; - } else if (name == BinaryConsts::UserSections::MultivalueFeature) { + } else if (name == BinaryConsts::CustomSections::MultivalueFeature) { feature = FeatureSet::Multivalue; - } else if (name == BinaryConsts::UserSections::GCFeature) { + } else if (name == BinaryConsts::CustomSections::GCFeature) { feature = FeatureSet::GC; - } else if (name == BinaryConsts::UserSections::Memory64Feature) { + } else if (name == BinaryConsts::CustomSections::Memory64Feature) { feature = FeatureSet::Memory64; - } else if (name == BinaryConsts::UserSections::RelaxedSIMDFeature) { + } else if (name == BinaryConsts::CustomSections::RelaxedSIMDFeature) { feature = FeatureSet::RelaxedSIMD; - } else if (name == BinaryConsts::UserSections::ExtendedConstFeature) { + } else if (name == BinaryConsts::CustomSections::ExtendedConstFeature) { feature = FeatureSet::ExtendedConst; - } else if (name == BinaryConsts::UserSections::StringsFeature) { + } else if (name == BinaryConsts::CustomSections::StringsFeature) { feature = FeatureSet::Strings; - } else if (name == BinaryConsts::UserSections::MultiMemoriesFeature) { + } else if (name == BinaryConsts::CustomSections::MultiMemoriesFeature) { feature = FeatureSet::MultiMemories; } else { // Silently ignore unknown features (this may be and old binaryen running @@ -3651,13 +3651,13 @@ void WasmBinaryBuilder::readDylink0(size_t payloadLen) { lastType = dylinkType; auto subsectionSize = getU32LEB(); auto subsectionPos = pos; - if (dylinkType == BinaryConsts::UserSections::Subsection::DylinkMemInfo) { + if (dylinkType == BinaryConsts::CustomSections::Subsection::DylinkMemInfo) { wasm.dylinkSection->memorySize = getU32LEB(); wasm.dylinkSection->memoryAlignment = getU32LEB(); wasm.dylinkSection->tableSize = getU32LEB(); wasm.dylinkSection->tableAlignment = getU32LEB(); } else if (dylinkType == - BinaryConsts::UserSections::Subsection::DylinkNeeded) { + BinaryConsts::CustomSections::Subsection::DylinkNeeded) { size_t numNeededDynlibs = getU32LEB(); for (size_t i = 0; i < numNeededDynlibs; ++i) { wasm.dylinkSection->neededDynlibs.push_back(getInlineString()); |