@@ -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