summaryrefslogtreecommitdiff
path: root/test/lit/help/wasm-split.test
blob: 362c20d8475d81198b493df9ef64489452ed37dc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
;; RUN: wasm-split --help | filecheck %s

;; 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:

;; Skip standard tool options

;; CHECK:        --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                            Use the prototype nominal type system
;; CHECK-NEXT:                                        instead of the normal equirecursive type
;; CHECK-NEXT:                                        system.
;; 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:   --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, regardless
;; CHECK-NEXT:                                        of any profile. You can also pass a file
;; CHECK-NEXT:                                        with a list of functions separated by new
;; CHECK-NEXT:                                        lines. To do this, prepend @ before
;; CHECK-NEXT:                                        filename (--keep-funcs @myfile) 
;; CHECK-NEXT:
;; CHECK-NEXT:   --split-funcs                        [split] Comma-separated list of functions
;; CHECK-NEXT:                                        to split into the secondary module,
;; CHECK-NEXT:                                        regardless of any profile. If there is no
;; CHECK-NEXT:                                        profile, then this defaults to all
;; CHECK-NEXT:                                        functions defined in the module. You can
;; CHECK-NEXT:                                        also pass a file with a list of functions
;; CHECK-NEXT:                                        separated by new lines. To do this,
;; CHECK-NEXT:                                        prepend @ before filename (--split-funcs
;; CHECK-NEXT:                                        @myfile) 
;; 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] The namespace from which to
;; CHECK-NEXT:                                        import objects from the primary module
;; CHECK-NEXT:                                        into the secondary module.
;; 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:   --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:   --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:   --verbose,-v                         Verbose output mode. Prints the functions
;; CHECK-NEXT:                                        that will be kept and split out when
;; CHECK-NEXT:                                        splitting a module.