You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Vanilla clang has been supporting WebAssembly for some time. Clang uses its own "wasm-ld" which is a hard link to ld.lld (and outputs LLD x.y.z when queried for version), but which seems to have a different CLI from both Emscripten's wasm-ld and the usual Unix-style linker.
Currently Meson just emits the usual Unix-style linker flags like --as-needed, --no-undefined and --start-group, which clang's "wasm-ld" can't understand.
What I want:
Meson should detect "wasm-ld" when the compiler is set to clang. A reliable way to do this might be
<clang command-line arguments> -Wl,
and searching the output for the string wasm-ld. Then Meson can pass link arguments in a way that "wasm-ld" accepts them.
This is "wasm-ld"'s help page as of LLD 13.0.0:
OVERVIEW: LLVM Linker
USAGE: wasm-ld.exe [options] file...
OPTIONS:
--allow-undefined-file=<value>
Allow symbols listed in <file> to be undefined in linked binary
--allow-undefined Allow undefined symbols in linked binary. This options is equivelant to --import-undefined and --unresolved-symbols=ignore-all
--Bsymbolic Bind defined symbols locally
--check-features Check feature compatibility of linked objects (default)
--color-diagnostics=[auto,always,never]
Use colors in diagnostics (default: auto)
--color-diagnostics Alias for --color-diagnostics=always
--compress-relocations Compress the relocation targets in the code section.
--demangle Demangle symbol names
--emit-relocs Generate relocations in output
--entry <entry> Name of entry point symbol
--error-limit=<value> Maximum number of errors to emit before stopping (0 = no limit)
--error-unresolved-symbols
Report unresolved symbols as errors
--experimental-pic Enable Experimental PIC
--export-all Export all symbols (normally combined with --no-gc-sections)
--export-dynamic Put symbols in the dynamic symbol table
--export-if-defined=<value>
Force a symbol to be exported, if it is defined in the input
--export-table Export function table to the environment
--export=<value> Force a symbol to be exported
-E Alias for --export-dynamic
--fatal-warnings Treat warnings as errors
--features=<value> Comma-separated used features, inferred from input objects by default.
--gc-sections Enable garbage collection of unused sections
--global-base=<value> Where to start to place global data
--growable-table Remove maximum size from function table, allowing table to grow
--help Print option help
--import-memory Import memory from the environment
--import-table Import function table from the environment
--import-undefined Turn undefined symbols into imports where possible
--initial-memory=<value>
Initial size of the linear memory
--lto-debug-pass-manager
Debug new pass manager
--lto-legacy-pass-manager
Use legacy pass manager
--lto-O<opt-level> Optimization level for LTO
--lto-partitions=<value>
Number of LTO codegen partitions
-L <dir> Add a directory to the library search path
-l <libName> Root name of library to use
--Map=<value> Print a link map to the specified file
--max-memory=<value> Maximum size of the linear memory
--merge-data-segments Enable merging data segments
--mllvm <value> Options to pass to LLVM
-M Alias for --print-map
-m <value> Set target emulation
--no-check-features Ignore feature compatibility of linked objects
--no-color-diagnostics Alias for --color-diagnostics=never
--no-demangle Do not demangle symbol names
--no-entry Do not output any entry point
--no-export-dynamic Do not put symbols in the dynamic symbol table (default)
--no-gc-sections Disable garbage collection of unused sections
--no-lto-legacy-pass-manager
Use new pass manager
--no-merge-data-segments
Disable merging data segments
--no-pie Do not create a position independent executable (default)
--no-print-gc-sections Do not list removed unused sections
--no-whole-archive Do not force load of all members in a static library (default)
-O <value> Optimize output file size
-o <path> Path to file to write output
--pie Create a position independent executable
--print-gc-sections List removed unused sections
--print-map Print a link map to the standard output
--relocatable Create relocatable object file
--reproduce=<value> Dump linker invocation and input files for debugging
--rsp-quoting=[posix,windows]
Quoting style for response files
--save-temps Save intermediate LTO compilation results
--shared-memory Use shared linear memory
--shared Build a shared object
--stack-first Place stack at start of linear memory rather than after data
--strip-all Strip all symbols
--strip-debug Strip debugging information
-S Alias for --strip-debug
-s Alias for --strip-all
--thinlto-cache-dir=<value>
Path to ThinLTO cached object file directory
--thinlto-cache-policy=<value>
Pruning policy for the ThinLTO cache
--thinlto-jobs=<value> Number of ThinLTO jobs. Default to --threads=
--threads=<value> Number of threads. '1' disables multi-threading. By default all available hardware threads are used
--trace-symbol=<value> Trace references to symbols
--trace Print the names of the input files
-t Alias for --trace
--undefined=<value> Force undefined symbol during linking
--unresolved-symbols=<value>
Determine how to handle unresolved symbols
--verbose Verbose mode
--version Display the version number and exit
-v Display the version number
--warn-unresolved-symbols
Report unresolved symbols as warnings
--whole-archive Force load of all members in a static library
--wrap=<symbol>=<symbol>
Use wrapper functions for symbol
-y <value> Alias for --trace-symbol
-z <option> Linker option extensions
The text was updated successfully, but these errors were encountered:
Vanilla clang has been supporting WebAssembly for some time. Clang uses its own "wasm-ld" which is a hard link to
ld.lld
(and outputsLLD x.y.z
when queried for version), but which seems to have a different CLI from both Emscripten'swasm-ld
and the usual Unix-style linker.Currently Meson just emits the usual Unix-style linker flags like
--as-needed
,--no-undefined
and--start-group
, which clang's "wasm-ld" can't understand.What I want:
Meson should detect "wasm-ld" when the compiler is set to clang. A reliable way to do this might be
and searching the output for the string
wasm-ld
. Then Meson can pass link arguments in a way that "wasm-ld" accepts them.This is "wasm-ld"'s help page as of LLD 13.0.0:
The text was updated successfully, but these errors were encountered: