Skip to content

Commit

Permalink
rustc: Change wasm32-wasip2 to PIC-by-default
Browse files Browse the repository at this point in the history
This commit changes the new `wasm32-wasip2` target to being PIC by
default rather than the previous non-PIC by default. This change is
intended to make it easier for the standard library to be used in a
shared object in its precompiled form. This comes with a hypothetical
modest slowdown but it's expected that this is quite minor in most use
cases or otherwise wasm compilers and/or optimizing runtimes can elide
the cost.
  • Loading branch information
alexcrichton committed May 7, 2024
1 parent 400e754 commit 38b2bd7
Showing 1 changed file with 6 additions and 1 deletion.
7 changes: 6 additions & 1 deletion compiler/rustc_target/src/spec/targets/wasm32_wasip2.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
use crate::spec::crt_objects;
use crate::spec::LinkSelfContainedDefault;
use crate::spec::{base, Target};
use crate::spec::{base, RelocModel, Target};

pub fn target() -> Target {
let mut options = base::wasm::options();
Expand Down Expand Up @@ -54,6 +54,11 @@ pub fn target() -> Target {
// signatures.
options.entry_name = "__main_void".into();

// Default to PIC unlike base wasm. This makes precompiled objects such as
// the standard library more suitable to be used with shared libaries a la
// emscripten's dynamic linking convention.
options.relocation_model = RelocModel::Pic;

Target {
llvm_target: "wasm32-wasip2".into(),
metadata: crate::spec::TargetMetadata {
Expand Down

0 comments on commit 38b2bd7

Please sign in to comment.