Skip to content

Commit 06698d7

Browse files
authored
Make feature section errors into warnings (#2175)
Otherwise there is no way to view a wasm object file in binaryen.
1 parent 3d3a5a6 commit 06698d7

1 file changed

Lines changed: 18 additions & 14 deletions

File tree

src/wasm/wasm-binary.cpp

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2132,9 +2132,11 @@ void WasmBinaryBuilder::readFeatures(size_t payloadLen) {
21322132
uint8_t prefix = getInt8();
21332133
if (prefix != BinaryConsts::FeatureUsed) {
21342134
if (prefix == BinaryConsts::FeatureRequired) {
2135-
throwError("Required features not supported");
2135+
std::cerr
2136+
<< "warning: required features in feature section are ignored";
21362137
} else if (prefix == BinaryConsts::FeatureDisallowed) {
2137-
throwError("Disallowed features not supported");
2138+
std::cerr
2139+
<< "warning: disallowed features in feature section are ignored";
21382140
} else {
21392141
throwError("Unrecognized feature policy prefix");
21402142
}
@@ -2145,18 +2147,20 @@ void WasmBinaryBuilder::readFeatures(size_t payloadLen) {
21452147
throwError("ill-formed string extends beyond section");
21462148
}
21472149

2148-
if (name == BinaryConsts::UserSections::AtomicsFeature) {
2149-
wasm.features.setAtomics();
2150-
} else if (name == BinaryConsts::UserSections::BulkMemoryFeature) {
2151-
wasm.features.setBulkMemory();
2152-
} else if (name == BinaryConsts::UserSections::ExceptionHandlingFeature) {
2153-
wasm.features.setExceptionHandling();
2154-
} else if (name == BinaryConsts::UserSections::TruncSatFeature) {
2155-
wasm.features.setTruncSat();
2156-
} else if (name == BinaryConsts::UserSections::SignExtFeature) {
2157-
wasm.features.setSignExt();
2158-
} else if (name == BinaryConsts::UserSections::SIMD128Feature) {
2159-
wasm.features.setSIMD();
2150+
if (prefix != BinaryConsts::FeatureDisallowed) {
2151+
if (name == BinaryConsts::UserSections::AtomicsFeature) {
2152+
wasm.features.setAtomics();
2153+
} else if (name == BinaryConsts::UserSections::BulkMemoryFeature) {
2154+
wasm.features.setBulkMemory();
2155+
} else if (name == BinaryConsts::UserSections::ExceptionHandlingFeature) {
2156+
wasm.features.setExceptionHandling();
2157+
} else if (name == BinaryConsts::UserSections::TruncSatFeature) {
2158+
wasm.features.setTruncSat();
2159+
} else if (name == BinaryConsts::UserSections::SignExtFeature) {
2160+
wasm.features.setSignExt();
2161+
} else if (name == BinaryConsts::UserSections::SIMD128Feature) {
2162+
wasm.features.setSIMD();
2163+
}
21602164
}
21612165
}
21622166
if (pos != sectionPos + payloadLen) {

0 commit comments

Comments
 (0)