summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorHeejin Ahn <aheejin@gmail.com>2022-05-26 18:55:57 -0700
committerGitHub <noreply@github.com>2022-05-26 18:55:57 -0700
commit590af8639ab4f6cfd82452b5ff2b431b470c64a5 (patch)
tree26970ab74c936d4aff1a445f4c36a4aaf3e5f2e9 /src
parent626132d69687dd4d04062009aac9b14a3d5b7738 (diff)
downloadbinaryen-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.cpp2
-rw-r--r--src/wasm/wasm-s-parser.cpp1
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