diff options
author | Heejin Ahn <aheejin@gmail.com> | 2022-05-26 18:55:57 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-05-26 18:55:57 -0700 |
commit | 590af8639ab4f6cfd82452b5ff2b431b470c64a5 (patch) | |
tree | 26970ab74c936d4aff1a445f4c36a4aaf3e5f2e9 /src | |
parent | 626132d69687dd4d04062009aac9b14a3d5b7738 (diff) | |
download | binaryen-590af8639ab4f6cfd82452b5ff2b431b470c64a5.tar.gz binaryen-590af8639ab4f6cfd82452b5ff2b431b470c64a5.tar.bz2 binaryen-590af8639ab4f6cfd82452b5ff2b431b470c64a5.zip |
[EH] Export tags (#4691)
This adds exported tags to `exports` section in wasm-emscripten-finalize
metadata so Emscripten can use it.
Also fixes a bug in the parser. We have only recognized the export
format of
```wasm
(tag $e2 (param f32))
(export "e2" (tag $e2))
```
and ignored this format:
```wasm
(tag $e1 (export "e1") (param i32))
```
Companion patch: https://github.com/emscripten-core/emscripten/pull/17064
Diffstat (limited to 'src')
-rw-r--r-- | src/wasm/wasm-emscripten.cpp | 2 | ||||
-rw-r--r-- | src/wasm/wasm-s-parser.cpp | 1 |
2 files changed, 2 insertions, 1 deletions
diff --git a/src/wasm/wasm-emscripten.cpp b/src/wasm/wasm-emscripten.cpp index ed2f0f430..4e37464ec 100644 --- a/src/wasm/wasm-emscripten.cpp +++ b/src/wasm/wasm-emscripten.cpp @@ -432,7 +432,7 @@ std::string EmscriptenGlueGenerator::generateEmscriptenMetadata() { meta << " \"exports\": ["; commaFirst = true; for (const auto& ex : wasm.exports) { - if (ex->kind == ExternalKind::Function) { + if (ex->kind == ExternalKind::Function || ex->kind == ExternalKind::Tag) { meta << nextElement() << '"' << ex->name.str << '"'; } } diff --git a/src/wasm/wasm-s-parser.cpp b/src/wasm/wasm-s-parser.cpp index 82329af66..dd92278c6 100644 --- a/src/wasm/wasm-s-parser.cpp +++ b/src/wasm/wasm-s-parser.cpp @@ -3668,6 +3668,7 @@ void SExpressionWasmBuilder::parseTag(Element& s, bool preParseImport) { } ex->value = tag->name; ex->kind = ExternalKind::Tag; + wasm.addExport(ex.release()); } // Parse typeuse |