From fdb899ba4bd5dffab4eec9ea575991ec5499a527 Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Mon, 8 Mar 2021 17:46:03 -0800 Subject: [PATCH] WASI: Switch to crt1-command.o to enable support for new-style commands This switches Rust's WASI target to use crt1-command.o instead of crt1.o, which enables support for new-style commands. By default, new-style commands work the same way as old-style commands, so nothing immediately changes here, but this will be needed by later changes to enable support for typed arguments. See here for more information on new-style commands: - https://github.com/WebAssembly/wasi-libc/pull/203 - https://reviews.llvm.org/D81689 --- compiler/rustc_target/src/spec/crt_objects.rs | 10 ++++++---- src/bootstrap/compile.rs | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/compiler/rustc_target/src/spec/crt_objects.rs b/compiler/rustc_target/src/spec/crt_objects.rs index 51a48147e6b62..2fc9ab29f92f4 100644 --- a/compiler/rustc_target/src/spec/crt_objects.rs +++ b/compiler/rustc_target/src/spec/crt_objects.rs @@ -108,11 +108,13 @@ pub(super) fn post_mingw() -> CrtObjects { } pub(super) fn pre_wasi_fallback() -> CrtObjects { + // Use crt1-command.o instead of crt1.o to enable support for new-style + // commands. See https://reviews.llvm.org/D81689 for more info. new(&[ - (LinkOutputKind::DynamicNoPicExe, &["crt1.o"]), - (LinkOutputKind::DynamicPicExe, &["crt1.o"]), - (LinkOutputKind::StaticNoPicExe, &["crt1.o"]), - (LinkOutputKind::StaticPicExe, &["crt1.o"]), + (LinkOutputKind::DynamicNoPicExe, &["crt1-command.o"]), + (LinkOutputKind::DynamicPicExe, &["crt1-command.o"]), + (LinkOutputKind::StaticNoPicExe, &["crt1-command.o"]), + (LinkOutputKind::StaticPicExe, &["crt1-command.o"]), (LinkOutputKind::WasiReactorExe, &["crt1-reactor.o"]), ]) } diff --git a/src/bootstrap/compile.rs b/src/bootstrap/compile.rs index 24800b7886d94..9398f211721b8 100644 --- a/src/bootstrap/compile.rs +++ b/src/bootstrap/compile.rs @@ -210,7 +210,7 @@ fn copy_self_contained_objects( panic!("Target {:?} does not have a \"wasi-root\" key", target.triple) }) .join("lib/wasm32-wasi"); - for &obj in &["crt1.o", "crt1-reactor.o"] { + for &obj in &["crt1-command.o", "crt1-reactor.o"] { copy_and_stamp( builder, &libdir_self_contained,