From 3b0362f964305261cbf73f07f30e87f4e6488a65 Mon Sep 17 00:00:00 2001 From: Jiewen Yao Date: Tue, 12 Jan 2021 16:48:50 +0800 Subject: [PATCH] Support UEFI: fix object generation type for UEFI target. --- src/lib.rs | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 2de245717..6c8c30546 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1490,10 +1490,11 @@ impl Build { cmd.push_cc_arg("-fdata-sections".into()); } // Disable generation of PIC on bare-metal for now: rust-lld doesn't support this yet - if self - .pic - .unwrap_or(!target.contains("windows") && !target.contains("-none-")) - { + if self.pic.unwrap_or( + !target.contains("windows") + && !target.contains("-none-") + && !target.contains("uefi"), + ) { cmd.push_cc_arg("-fPIC".into()); // PLT only applies if code is compiled with PIC support, // and only for ELF targets. @@ -1556,6 +1557,12 @@ impl Build { cmd.args.push( format!("--target={}", target.replace("riscv64gc", "riscv64")).into(), ); + } else if target.contains("uefi") { + if target.contains("x86_64") { + cmd.args.push("--target=x86_64-unknown-windows-gnu".into()); + } else if target.contains("i686") { + cmd.args.push("--target=i686-unknown-windows-gnu".into()) + } } else { cmd.args.push(format!("--target={}", target).into()); }