diff options
| author | Dan Gohman <dev@sunfishcode.online> | 2022-12-06 16:50:29 -0800 |
|---|---|---|
| committer | Dan Gohman <dev@sunfishcode.online> | 2022-12-06 16:50:29 -0800 |
| commit | 3a07aa9b5e9612a0b4fd0852763c34e1f244794b (patch) | |
| tree | a77f5d811b132534dcb6149bf238ec2cd9aeb926 | |
| parent | 53728ff751df4c271d4ea565b6871057a3504fc5 (diff) | |
| download | rust-3a07aa9b5e9612a0b4fd0852763c34e1f244794b.tar.gz rust-3a07aa9b5e9612a0b4fd0852763c34e1f244794b.zip | |
Stop passing -export-dynamic to wasm-ld.
-export-dynamic was a temporary hack added in the early days of the Rust wasm32 target when Rust didn't have a way to specify wasm exports in the source code. This flag causes all global symbols, and some compiler-internal symbols, to be exported, which is often more than needed. Rust now does have a way to specify exports in the source code: `#[export_name = "..."]`. So as the original comment suggests, -export-dynamic can now be removed, allowing users to have smaller binaries and better encapsulation in their wasm32-unknown-unknown modules. It's possible that this change will require existing wasm32-unknown-unknown users will to add explicit `#[export_name = "..."]` directives to exporrt the symbols that their programs depend on having exported.
| -rw-r--r-- | compiler/rustc_target/src/spec/wasm32_unknown_unknown.rs | 7 |
1 files changed, 0 insertions, 7 deletions
diff --git a/compiler/rustc_target/src/spec/wasm32_unknown_unknown.rs b/compiler/rustc_target/src/spec/wasm32_unknown_unknown.rs index 8dad941b534..06529c2e403 100644 --- a/compiler/rustc_target/src/spec/wasm32_unknown_unknown.rs +++ b/compiler/rustc_target/src/spec/wasm32_unknown_unknown.rs @@ -33,12 +33,6 @@ pub fn target() -> Target { // For now this target just never has an entry symbol no matter the output // type, so unconditionally pass this. "--no-entry", - // Rust really needs a way for users to specify exports and imports in - // the source code. --export-dynamic isn't the right tool for this job, - // however it does have the side effect of automatically exporting a lot - // of symbols, which approximates what people want when compiling for - // wasm32-unknown-unknown expect, so use it for now. - "--export-dynamic", ], ); options.add_pre_link_args( @@ -48,7 +42,6 @@ pub fn target() -> Target { // otherwise "--target=wasm32-unknown-unknown", "-Wl,--no-entry", - "-Wl,--export-dynamic", ], ); |
