diff options
| author | bors <bors@rust-lang.org> | 2018-08-27 06:30:10 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2018-08-27 06:30:10 +0000 |
| commit | 7625c031670bf33e2fb23816736ff10aa2ee6733 (patch) | |
| tree | e6daff0bb42f38609e4502091170b04387b5b2a0 | |
| parent | 3a2c603eeabad012298f391f09c0b526eabeb5af (diff) | |
| parent | d65a64e31b8a5007b4ee0fb1dbd4cad2176859ab (diff) | |
| download | rust-7625c031670bf33e2fb23816736ff10aa2ee6733.tar.gz rust-7625c031670bf33e2fb23816736ff10aa2ee6733.zip | |
Auto merge of #53648 - japaric:thumb-lld, r=alexcrichton
change the default linker of the ARM Cortex-M targets to rust-lld so users won't need an external linker to build programs This will break nightly builds. We discussed this within the embedded WG and with the embedded community in rust-embedded/wg#160 and there was consensus in that this breaking change is worthwhile and that we should do it now before it becomes impossible to do without breaking stable builds. We have already written an announcement (see rust-embedded/wg#196) that explains the breakage and instructs the users how to fix their builds. The TL;DR is that they can switch to the old behavior by passing the `-C linker` flag to rustc. We'll post the announcement as soon as this change makes into nightly. closes rust-embedded/wg#160 r? @alexcrichton
| -rw-r--r-- | src/librustc_target/spec/thumb_base.rs | 5 | ||||
| -rw-r--r-- | src/librustc_target/spec/thumbv6m_none_eabi.rs | 4 | ||||
| -rw-r--r-- | src/librustc_target/spec/thumbv7em_none_eabi.rs | 4 | ||||
| -rw-r--r-- | src/librustc_target/spec/thumbv7em_none_eabihf.rs | 4 | ||||
| -rw-r--r-- | src/librustc_target/spec/thumbv7m_none_eabi.rs | 4 |
5 files changed, 10 insertions, 11 deletions
diff --git a/src/librustc_target/spec/thumb_base.rs b/src/librustc_target/spec/thumb_base.rs index fdaf1dc6110..4c9a4764eff 100644 --- a/src/librustc_target/spec/thumb_base.rs +++ b/src/librustc_target/spec/thumb_base.rs @@ -42,9 +42,8 @@ pub fn opts() -> TargetOptions { // See rust-lang/rfcs#1645 for a discussion about these defaults TargetOptions { executables: true, - // In 99%+ of cases, we want to use the `arm-none-eabi-gcc` compiler (there aren't many - // options around) - linker: Some("arm-none-eabi-gcc".to_string()), + // In most cases, LLD is good enough + linker: Some("rust-lld".to_string()), // Because these devices have very little resources having an unwinder is too onerous so we // default to "abort" because the "unwind" strategy is very rare. panic_strategy: PanicStrategy::Abort, diff --git a/src/librustc_target/spec/thumbv6m_none_eabi.rs b/src/librustc_target/spec/thumbv6m_none_eabi.rs index bfac1ba45e1..99034277abd 100644 --- a/src/librustc_target/spec/thumbv6m_none_eabi.rs +++ b/src/librustc_target/spec/thumbv6m_none_eabi.rs @@ -10,7 +10,7 @@ // Targets the Cortex-M0, Cortex-M0+ and Cortex-M1 processors (ARMv6-M architecture) -use spec::{LinkerFlavor, Target, TargetOptions, TargetResult}; +use spec::{LinkerFlavor, LldFlavor, Target, TargetOptions, TargetResult}; pub fn target() -> TargetResult { Ok(Target { @@ -23,7 +23,7 @@ pub fn target() -> TargetResult { target_os: "none".to_string(), target_env: String::new(), target_vendor: String::new(), - linker_flavor: LinkerFlavor::Gcc, + linker_flavor: LinkerFlavor::Lld(LldFlavor::Ld), options: TargetOptions { // The ARMv6-M architecture doesn't support unaligned loads/stores so we disable them diff --git a/src/librustc_target/spec/thumbv7em_none_eabi.rs b/src/librustc_target/spec/thumbv7em_none_eabi.rs index 0207f38dea8..17fad29dd29 100644 --- a/src/librustc_target/spec/thumbv7em_none_eabi.rs +++ b/src/librustc_target/spec/thumbv7em_none_eabi.rs @@ -19,7 +19,7 @@ // To opt-in to hardware accelerated floating point operations, you can use, for example, // `-C target-feature=+vfp4` or `-C target-cpu=cortex-m4`. -use spec::{LinkerFlavor, Target, TargetOptions, TargetResult}; +use spec::{LinkerFlavor, LldFlavor, Target, TargetOptions, TargetResult}; pub fn target() -> TargetResult { Ok(Target { @@ -32,7 +32,7 @@ pub fn target() -> TargetResult { target_os: "none".to_string(), target_env: String::new(), target_vendor: String::new(), - linker_flavor: LinkerFlavor::Gcc, + linker_flavor: LinkerFlavor::Lld(LldFlavor::Ld), options: TargetOptions { max_atomic_width: Some(32), diff --git a/src/librustc_target/spec/thumbv7em_none_eabihf.rs b/src/librustc_target/spec/thumbv7em_none_eabihf.rs index bb1a42f0e28..02ede112ed3 100644 --- a/src/librustc_target/spec/thumbv7em_none_eabihf.rs +++ b/src/librustc_target/spec/thumbv7em_none_eabihf.rs @@ -18,7 +18,7 @@ // // To opt into double precision hardware support, use the `-C target-feature=-fp-only-sp` flag. -use spec::{LinkerFlavor, Target, TargetOptions, TargetResult}; +use spec::{LinkerFlavor, LldFlavor, Target, TargetOptions, TargetResult}; pub fn target() -> TargetResult { Ok(Target { @@ -31,7 +31,7 @@ pub fn target() -> TargetResult { target_os: "none".to_string(), target_env: String::new(), target_vendor: String::new(), - linker_flavor: LinkerFlavor::Gcc, + linker_flavor: LinkerFlavor::Lld(LldFlavor::Ld), options: TargetOptions { // `+vfp4` is the lowest common denominator between the Cortex-M4 (vfp4-16) and the diff --git a/src/librustc_target/spec/thumbv7m_none_eabi.rs b/src/librustc_target/spec/thumbv7m_none_eabi.rs index 1eac13afd9a..f4fffade163 100644 --- a/src/librustc_target/spec/thumbv7m_none_eabi.rs +++ b/src/librustc_target/spec/thumbv7m_none_eabi.rs @@ -10,7 +10,7 @@ // Targets the Cortex-M3 processor (ARMv7-M) -use spec::{LinkerFlavor, Target, TargetOptions, TargetResult}; +use spec::{LinkerFlavor, LldFlavor, Target, TargetOptions, TargetResult}; pub fn target() -> TargetResult { Ok(Target { @@ -23,7 +23,7 @@ pub fn target() -> TargetResult { target_os: "none".to_string(), target_env: String::new(), target_vendor: String::new(), - linker_flavor: LinkerFlavor::Gcc, + linker_flavor: LinkerFlavor::Lld(LldFlavor::Ld), options: TargetOptions { max_atomic_width: Some(32), |
