| ;; RUN: wasm-split --help | filecheck %s |
| ;; CHECK: ================================================================================ |
| ;; CHECK-NEXT: wasm-split INFILES |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: Split a module into a primary module and a secondary module, or instrument a |
| ;; CHECK-NEXT: module to gather a profile that can inform future splitting, or manage such |
| ;; CHECK-NEXT: profiles. Options that are only accepted in particular modes are marked with the |
| ;; CHECK-NEXT: accepted "[<modes>]" in their descriptions. |
| ;; CHECK-NEXT: ================================================================================ |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: wasm-split options: |
| ;; CHECK-NEXT: ------------------- |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --split Split an input module into two output |
| ;; CHECK-NEXT: modules. The default mode. |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --instrument Instrument an input module to allow it to |
| ;; CHECK-NEXT: generate a profile that can be used to |
| ;; CHECK-NEXT: guide splitting. |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --merge-profiles Merge multiple profiles for the same |
| ;; CHECK-NEXT: module into a single profile. |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --print-profile [print-profile] Print profile contents in |
| ;; CHECK-NEXT: a human-readable format. |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --profile [split] The profile to use to guide |
| ;; CHECK-NEXT: splitting. |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --keep-funcs [split] Comma-separated list of functions |
| ;; CHECK-NEXT: to keep in the primary module. The rest |
| ;; CHECK-NEXT: will be split out. Cannot be used with |
| ;; CHECK-NEXT: --profile or --split-funcs. You can also |
| ;; CHECK-NEXT: pass a file with one function per line by |
| ;; CHECK-NEXT: passing @filename. |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --split-funcs [split] Comma-separated list of functions |
| ;; CHECK-NEXT: to split out to the secondary module. The |
| ;; CHECK-NEXT: rest will be kept. Cannot be used with |
| ;; CHECK-NEXT: --profile or --keep-funcs. You can also |
| ;; CHECK-NEXT: pass a file with one function per line by |
| ;; CHECK-NEXT: passing @filename. |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --primary-output,-o1 [split] Output file for the primary |
| ;; CHECK-NEXT: module. |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --secondary-output,-o2 [split] Output file for the secondary |
| ;; CHECK-NEXT: module. |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --symbolmap [split] Write a symbol map file for each |
| ;; CHECK-NEXT: of the output modules. |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --placeholdermap [split] Write a file mapping placeholder |
| ;; CHECK-NEXT: indices to the function names. |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --import-namespace [split, instrument] When provided as an |
| ;; CHECK-NEXT: option for module splitting, the |
| ;; CHECK-NEXT: namespace from which to import objects |
| ;; CHECK-NEXT: from the primary module into the |
| ;; CHECK-NEXT: secondary module. In instrument mode, |
| ;; CHECK-NEXT: refers to the namespace from which to |
| ;; CHECK-NEXT: import the secondary memory, if any. |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --placeholder-namespace [split] The namespace from which to |
| ;; CHECK-NEXT: import placeholder functions into the |
| ;; CHECK-NEXT: primary module. |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --asyncify [split] Transform the module to support |
| ;; CHECK-NEXT: unwinding the stack from placeholder |
| ;; CHECK-NEXT: functions and rewinding it once the |
| ;; CHECK-NEXT: secondary module has been loaded. |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --export-prefix [split] An identifying prefix to prepend |
| ;; CHECK-NEXT: to new export names created by module |
| ;; CHECK-NEXT: splitting. |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --profile-export [instrument] The export name of the |
| ;; CHECK-NEXT: function the embedder calls to write the |
| ;; CHECK-NEXT: profile into memory. Defaults to |
| ;; CHECK-NEXT: `__write_profile`. |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --in-memory [instrument] Store profile information in |
| ;; CHECK-NEXT: memory (starting at address 0 and taking |
| ;; CHECK-NEXT: one byte per function) rather than |
| ;; CHECK-NEXT: globals (the default) so that it can be |
| ;; CHECK-NEXT: shared between multiple threads. Users |
| ;; CHECK-NEXT: are responsible for ensuring that the |
| ;; CHECK-NEXT: module does not use the initial memory |
| ;; CHECK-NEXT: region for anything else. |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --in-secondary-memory [instrument] Store profile information in |
| ;; CHECK-NEXT: a separate memory, rather than in module |
| ;; CHECK-NEXT: main memory or globals (the default). |
| ;; CHECK-NEXT: With this option, users do not need to |
| ;; CHECK-NEXT: reserve the initial memory region for |
| ;; CHECK-NEXT: profile data and the data can be shared |
| ;; CHECK-NEXT: between multiple threads. |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --secondary-memory-name [instrument] The name of the secondary |
| ;; CHECK-NEXT: memory created to store profile |
| ;; CHECK-NEXT: information. |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --emit-module-names [split, instrument] Emit module names, |
| ;; CHECK-NEXT: even if not emitting the rest of the |
| ;; CHECK-NEXT: names section. Can help differentiate the |
| ;; CHECK-NEXT: modules in stack traces. This option will |
| ;; CHECK-NEXT: be removed once simpler ways of naming |
| ;; CHECK-NEXT: modules are widely available. See |
| ;; CHECK-NEXT: https://bugs.chromium.org/p/v8/issues/detail?id=11808. |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --initial-table [split, instrument] A hack to ensure the |
| ;; CHECK-NEXT: split and instrumented modules have the |
| ;; CHECK-NEXT: same table size when using Emscripten's |
| ;; CHECK-NEXT: SPLIT_MODULE mode with dynamic linking. |
| ;; CHECK-NEXT: TODO: Figure out a more elegant solution |
| ;; CHECK-NEXT: for that use case and remove this. |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --emit-text,-S [split, instrument] Emit text instead of |
| ;; CHECK-NEXT: binary for the output file or files. |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --debuginfo,-g [split, instrument] Emit names section in |
| ;; CHECK-NEXT: wasm binary (or full debuginfo in wast) |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --output,-o [instrument, merge-profiles] Output file. |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --unescape,-u Un-escape function names (in |
| ;; CHECK-NEXT: print-profile output) |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --verbose,-v Verbose output mode. Prints the functions |
| ;; CHECK-NEXT: that will be kept and split out when |
| ;; CHECK-NEXT: splitting a module. |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: Tool options: |
| ;; CHECK-NEXT: ------------- |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --mvp-features,-mvp Disable all non-MVP features |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --all-features,-all Enable all features |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --detect-features (deprecated - this flag does nothing) |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --quiet,-q Emit less verbose output and hide trivial |
| ;; CHECK-NEXT: warnings. |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --experimental-poppy Parse wast files as Poppy IR for testing |
| ;; CHECK-NEXT: purposes. |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --enable-sign-ext Enable sign extension operations |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --disable-sign-ext Disable sign extension operations |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --enable-threads Enable atomic operations |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --disable-threads Disable atomic operations |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --enable-mutable-globals Enable mutable globals |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --disable-mutable-globals Disable mutable globals |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --enable-nontrapping-float-to-int Enable nontrapping float-to-int |
| ;; CHECK-NEXT: operations |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --disable-nontrapping-float-to-int Disable nontrapping float-to-int |
| ;; CHECK-NEXT: operations |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --enable-simd Enable SIMD operations and types |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --disable-simd Disable SIMD operations and types |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --enable-bulk-memory Enable bulk memory operations |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --disable-bulk-memory Disable bulk memory operations |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --enable-exception-handling Enable exception handling operations |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --disable-exception-handling Disable exception handling operations |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --enable-tail-call Enable tail call operations |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --disable-tail-call Disable tail call operations |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --enable-reference-types Enable reference types |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --disable-reference-types Disable reference types |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --enable-multivalue Enable multivalue functions |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --disable-multivalue Disable multivalue functions |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --enable-gc Enable garbage collection |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --disable-gc Disable garbage collection |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --enable-memory64 Enable memory64 |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --disable-memory64 Disable memory64 |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --enable-gc-nn-locals Enable GC non-null locals |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --disable-gc-nn-locals Disable GC non-null locals |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --enable-relaxed-simd Enable relaxed SIMD |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --disable-relaxed-simd Disable relaxed SIMD |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --enable-extended-const Enable extended const expressions |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --disable-extended-const Disable extended const expressions |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --enable-strings Enable strings |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --disable-strings Disable strings |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --enable-multi-memories Enable multi-memories |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --disable-multi-memories Disable multi-memories |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --enable-typed-function-references Deprecated compatibility flag |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --disable-typed-function-references Deprecated compatibility flag |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --no-validation,-n Disables validation, assumes inputs are |
| ;; CHECK-NEXT: correct |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --pass-arg,-pa An argument passed along to optimization |
| ;; CHECK-NEXT: passes being run. Must be in the form |
| ;; CHECK-NEXT: KEY@VALUE |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --nominal Force all GC type definitions to be |
| ;; CHECK-NEXT: parsed as nominal. |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --structural Force all GC type definitions to be |
| ;; CHECK-NEXT: parsed as structural (i.e. |
| ;; CHECK-NEXT: equirecursive). This is the default. |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --hybrid Force all GC type definitions to be |
| ;; CHECK-NEXT: parsed using the isorecursive hybrid type |
| ;; CHECK-NEXT: system. |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: General options: |
| ;; CHECK-NEXT: ---------------- |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --version Output version information and exit |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --help,-h Show this help message and exit |
| ;; CHECK-NEXT: |
| ;; CHECK-NEXT: --debug,-d Print debug information to stderr |
| ;; CHECK-NEXT: |