diff --git a/compiler/rustc_target/src/spec/tests/tests_impl.rs b/compiler/rustc_target/src/spec/tests/tests_impl.rs index d03f959076d..0af599916a9 100644 --- a/compiler/rustc_target/src/spec/tests/tests_impl.rs +++ b/compiler/rustc_target/src/spec/tests/tests_impl.rs @@ -146,7 +146,8 @@ impl Target { if self.position_independent_executables && !triple.ends_with("-linuxkernel") { assert_eq!(self.relocation_model, RelocModel::Pic); } - if self.relocation_model == RelocModel::Pic { + // The UEFI targets do not support dynamic linking but still require PIC (#101377). + if self.relocation_model == RelocModel::Pic && self.os != "uefi" { assert!(self.dynamic_linking || self.position_independent_executables); } if self.static_position_independent_executables { diff --git a/compiler/rustc_target/src/spec/uefi_msvc_base.rs b/compiler/rustc_target/src/spec/uefi_msvc_base.rs index 250da03cbd2..99af7d85e1d 100644 --- a/compiler/rustc_target/src/spec/uefi_msvc_base.rs +++ b/compiler/rustc_target/src/spec/uefi_msvc_base.rs @@ -10,7 +10,7 @@ // code runs in the same environment, no process separation is supported. use crate::spec::{LinkerFlavor, LldFlavor, PanicStrategy}; -use crate::spec::{RelocModel, StackProbeType, TargetOptions}; +use crate::spec::{StackProbeType, TargetOptions}; pub fn opts() -> TargetOptions { let mut base = super::msvc_base::opts(); @@ -47,7 +47,6 @@ pub fn opts() -> TargetOptions { stack_probes: StackProbeType::Call, singlethread: true, linker: Some("rust-lld".into()), - relocation_model: RelocModel::Static, ..base } } diff --git a/src/test/codegen/abi-efiapi.rs b/src/test/codegen/abi-efiapi.rs index 4dc9d183b0b..b4fda5f8c84 100644 --- a/src/test/codegen/abi-efiapi.rs +++ b/src/test/codegen/abi-efiapi.rs @@ -24,7 +24,7 @@ trait Freeze { } #[lang="copy"] trait Copy { } -//x86_64: define dso_local win64cc void @has_efiapi +//x86_64: define win64cc void @has_efiapi //i686: define void @has_efiapi //aarch64: define dso_local void @has_efiapi //arm: define dso_local void @has_efiapi