diff --git a/src/lib.rs b/src/lib.rs index f3b9343ea..fd67d0be4 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -824,7 +824,7 @@ impl Build { /// Configures whether the compiler will emit position independent code. /// - /// This option defaults to `false` for `windows-gnu` targets and + /// This option defaults to `false` for `windows-gnu` and `riscv` targets and /// to `true` for all other targets. pub fn pic(&mut self, pic: bool) -> &mut Build { self.pic = Some(pic); @@ -1225,7 +1225,8 @@ impl Build { cmd.push_cc_arg("-ffunction-sections".into()); cmd.push_cc_arg("-fdata-sections".into()); } - if self.pic.unwrap_or(!target.contains("windows-gnu")) { + // Disable generation of PIC on RISC-V for now: rust-lld doesn't support this yet + if self.pic.unwrap_or(!target.contains("windows-gnu") && !target.contains("riscv")) { cmd.push_cc_arg("-fPIC".into()); // PLT only applies if code is compiled with PIC support, // and only for ELF targets.