about summary refs log tree commit diff
path: root/src/rustllvm/RustWrapper.cpp
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2017-02-10 23:50:46 +0000
committerbors <bors@rust-lang.org>2017-02-10 23:50:46 +0000
commit064a0ee131b3129fcad68570975ccc85d0fb54d0 (patch)
treed2dd7fe6c3985a6c08e9f1aeca66986467016d7d /src/rustllvm/RustWrapper.cpp
parent2425b227742bb9214d60429d1325816e0b93e152 (diff)
parentf35b598bbf3bb86f70c731b8ef981beada052a08 (diff)
downloadrust-064a0ee131b3129fcad68570975ccc85d0fb54d0.tar.gz
rust-064a0ee131b3129fcad68570975ccc85d0fb54d0.zip
Auto merge of #39490 - RReverser:em-linker, r=alexcrichton
Add Emscripten-specific linker

Emscripten claims to accept most GNU linker options, but in fact most of `-Wl,...` are useless for it and instead it requires some additional special options which are easier to handle in a separate trait.

Currently added:
 - `export_symbols`: works on executables as special Emscripten case since staticlibs/dylibs aren't compiled to JS, while exports are required to be accessible from JS.
Fixes #39171.
 - `optimize` - translates Rust's optimization level to Emscripten optimization level (whether passed via `-C opt-level=...` or `-O...`).
Fixes #36899.
 - `debuginfo` - translates debug info; Emscripten has 5 debug levels while Rust has 3, so chose to translate `-C debuginfo=1` to `-g3` (preserves whitespace, variable and function names for easy debugging).
Fixes #36901.
 - `no_default_libraries` - tells Emscripten to exclude `memcpy` and co.

TODO (in future PR): dynamic linking via `SIDE_MODULE` / `MAIN_MODULE` mechanism.
Diffstat (limited to 'src/rustllvm/RustWrapper.cpp')
0 files changed, 0 insertions, 0 deletions