diff options
| author | Dylan DPC <99973273+Dylan-DPC@users.noreply.github.com> | 2022-10-05 17:27:33 +0530 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-10-05 17:27:33 +0530 |
| commit | 814b827efe3369ca4ae155adf2f9f299549b795f (patch) | |
| tree | ffac5db993e54529e14dbbea57654251fe9e5c95 | |
| parent | ab88c19f15fe12625524a6474e0d63ead0333be0 (diff) | |
| parent | 2d9e61f0c7ae23f485a0dd55c73bcaf5302953dd (diff) | |
| download | rust-814b827efe3369ca4ae155adf2f9f299549b795f.tar.gz rust-814b827efe3369ca4ae155adf2f9f299549b795f.zip | |
Rollup merge of #102440 - sunfishcode:sunfishcode/wasm-no-export-tls-api, r=oli-obk
Only export `__tls_*` on wasm32-unknown-unknown. From talking with `@abrown,` we aren't planning to have hosts call these `__tls_*` functions; instead, TLS initialization will be handled transparently within libc. Consequently, these functions don't need to be exported. Leave them exported on wasm32-unknown-unknown though, as wasm-bindgen does call them.
| -rw-r--r-- | compiler/rustc_codegen_ssa/src/back/linker.rs | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/compiler/rustc_codegen_ssa/src/back/linker.rs b/compiler/rustc_codegen_ssa/src/back/linker.rs index f59a753a5ce..2cd746ccb6a 100644 --- a/compiler/rustc_codegen_ssa/src/back/linker.rs +++ b/compiler/rustc_codegen_ssa/src/back/linker.rs @@ -1180,16 +1180,19 @@ impl<'a> WasmLd<'a> { // sharing memory and instantiating the module multiple times. As a // result if it were exported then we'd just have no sharing. // - // * `--export=*tls*` - when `#[thread_local]` symbols are used these - // symbols are how the TLS segments are initialized and configured. + // On wasm32-unknown-unknown, we also export symbols for glue code to use: + // * `--export=*tls*` - when `#[thread_local]` symbols are used these + // symbols are how the TLS segments are initialized and configured. if sess.target_features.contains(&sym::atomics) { cmd.arg("--shared-memory"); cmd.arg("--max-memory=1073741824"); cmd.arg("--import-memory"); - cmd.arg("--export=__wasm_init_tls"); - cmd.arg("--export=__tls_size"); - cmd.arg("--export=__tls_align"); - cmd.arg("--export=__tls_base"); + if sess.target.os == "unknown" { + cmd.arg("--export=__wasm_init_tls"); + cmd.arg("--export=__tls_size"); + cmd.arg("--export=__tls_align"); + cmd.arg("--export=__tls_base"); + } } WasmLd { cmd, sess } } |
