diff options
author | Heejin Ahn <aheejin@users.noreply.github.com> | 2018-02-07 14:36:56 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-02-07 14:36:56 -0800 |
commit | 7c4fe0bc095e067c8605f60a66664bd58bac3ac5 (patch) | |
tree | f61db693f26815c2766d957721b051974154a59d /src/tools/s2wasm.cpp | |
parent | a3232460dd4dc63b0ed39a68f0bebecc805572d4 (diff) | |
download | binaryen-7c4fe0bc095e067c8605f60a66664bd58bac3ac5.tar.gz binaryen-7c4fe0bc095e067c8605f60a66664bd58bac3ac5.tar.bz2 binaryen-7c4fe0bc095e067c8605f60a66664bd58bac3ac5.zip |
Emscripten addFunction support for Wasm backend (#1395)
This adds necessary command line options for addFunction support, and generates required jsCall imports and generates jsCall thunk functions.
Diffstat (limited to 'src/tools/s2wasm.cpp')
-rw-r--r-- | src/tools/s2wasm.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/tools/s2wasm.cpp b/src/tools/s2wasm.cpp index d4e7731c5..a2c4e4a38 100644 --- a/src/tools/s2wasm.cpp +++ b/src/tools/s2wasm.cpp @@ -41,6 +41,7 @@ int main(int argc, const char *argv[]) { std::string startFunction; std::vector<std::string> archiveLibraries; TrapMode trapMode = TrapMode::Allow; + unsigned numReservedFunctionPointers = 0; Options options("s2wasm", "Link .s file into .wast"); options.extra["validate"] = "wasm"; options @@ -121,6 +122,14 @@ int main(int argc, const char *argv[]) { } o->extra["validate"] = argument; }) + .add("--emscripten-reserved-function-pointers", "", + "Number of reserved function pointers for emscripten addFunction " + "support", + Options::Arguments::One, + [&numReservedFunctionPointers](Options *o, + const std::string &argument) { + numReservedFunctionPointers = std::stoi(argument); + }) .add_positional("INFILE", Options::Arguments::One, [](Options *o, const std::string& argument) { o->extra["infile"] = argument; @@ -189,7 +198,8 @@ int main(int argc, const char *argv[]) { allowMemoryGrowth, linker.getStackPointerAddress(), linker.getStaticBump(), - linker.getOutput().getInitializerFunctions()); + linker.getOutput().getInitializerFunctions(), + numReservedFunctionPointers); } if (options.extra["validate"] != "none") { |