From eb1a2fb6d68598714c3aa07ec8a5a90f02467960 Mon Sep 17 00:00:00 2001 From: Jonathan Pallant Date: Tue, 9 Jun 2026 15:56:57 +0100 Subject: [PATCH 1/6] Add missing default compiler name for ARMv4T, ARMv5TE and ARMv6 bare-metal --- src/lib.rs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/lib.rs b/src/lib.rs index 371989a7f..9f2608ed5 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -3708,6 +3708,10 @@ impl Build { "sparc64-unknown-linux-gnu" => Some("sparc64-linux-gnu"), "sparc64-unknown-netbsd" => Some("sparc64--netbsd"), "sparcv9-sun-solaris" => Some("sparcv9-sun-solaris"), + "armv4t-none-eabi" => Some("arm-none-eabi"), + "armv5te-none-eabi" => Some("arm-none-eabi"), + "armv6-none-eabi" => Some("arm-none-eabi"), + "armv6-none-eabihf" => Some("arm-none-eabi"), "armv7a-none-eabi" => Some("arm-none-eabi"), "armv7a-none-eabihf" => Some("arm-none-eabi"), "armebv7r-none-eabi" => Some("arm-none-eabi"), @@ -3715,6 +3719,9 @@ impl Build { "armv7r-none-eabi" => Some("arm-none-eabi"), "armv7r-none-eabihf" => Some("arm-none-eabi"), "armv8r-none-eabihf" => Some("arm-none-eabi"), + "thumbv4t-none-eabi" => Some("arm-none-eabi"), + "thumbv5te-none-eabi" => Some("arm-none-eabi"), + "thumbv6-none-eabi" => Some("arm-none-eabi"), "thumbv7a-none-eabi" => Some("arm-none-eabi"), "thumbv7a-none-eabihf" => Some("arm-none-eabi"), "thumbv7r-none-eabi" => Some("arm-none-eabi"), From 5d5b40681ab58c40751dd29ff3a7060f27bd1805 Mon Sep 17 00:00:00 2001 From: Jonathan Pallant Date: Tue, 9 Jun 2026 15:57:48 +0100 Subject: [PATCH 2/6] Add clarifying comments to Arm target setup code --- src/lib.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/lib.rs b/src/lib.rs index 9f2608ed5..9e0dffba2 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -2444,9 +2444,15 @@ impl Build { cmd.args.push("-Wl,-melf_i386".into()); } + // + // Arm Target Details + // + + // Set Float ABI for all Arm bare-metal targets using EABIHF if target.arch == "arm" && target.os == "none" && target.abi == "eabihf" { cmd.args.push("-mfloat-abi=hard".into()) } + // Set -mthumb for all Thumb targets if target.full_arch.starts_with("thumb") { cmd.args.push("-mthumb".into()); } From bf5f862e776250892f4ab5824908e9e7a9d911cf Mon Sep 17 00:00:00 2001 From: Jonathan Pallant Date: Tue, 9 Jun 2026 16:01:17 +0100 Subject: [PATCH 3/6] Document and organise Arm M-Profile targets Armv7-M was moved to before Armv7E-M, as it was released before, and the later edition is a superset. --- src/lib.rs | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 9e0dffba2..3e8492176 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -2456,25 +2456,31 @@ impl Build { if target.full_arch.starts_with("thumb") { cmd.args.push("-mthumb".into()); } + // Armv6-M targets (no FPU available) if target.full_arch.starts_with("thumbv6m") { + // ARMv6S-M is an old name for "ARMv6-M with SVC support" + // before SVC support became mandatory. Some versions of GAS care + // about the difference. cmd.args.push("-march=armv6s-m".into()); } + // Armv7-M targets (no FPU available) + if target.full_arch.starts_with("thumbv7m") { + cmd.args.push("-march=armv7-m".into()); + } + // Armv7E-M targets if target.full_arch.starts_with("thumbv7em") { cmd.args.push("-march=armv7e-m".into()); - if target.abi == "eabihf" { cmd.args.push("-mfpu=fpv4-sp-d16".into()) } } - if target.full_arch.starts_with("thumbv7m") { - cmd.args.push("-march=armv7-m".into()); - } + // Armv8-M Baseline (no FPU available) if target.full_arch.starts_with("thumbv8m.base") { cmd.args.push("-march=armv8-m.base".into()); } + // Armv8-M Mainline targets if target.full_arch.starts_with("thumbv8m.main") { cmd.args.push("-march=armv8-m.main".into()); - if target.abi == "eabihf" { cmd.args.push("-mfpu=fpv5-sp-d16".into()) } From 93ff14a074b904c29c67dad039beea3cf1ea14ef Mon Sep 17 00:00:00 2001 From: Jonathan Pallant Date: Tue, 9 Jun 2026 16:02:33 +0100 Subject: [PATCH 4/6] Document and organise Armv7-A and Armv7-R targets Removes redundant options, and adds Thumb target support. --- src/lib.rs | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 3e8492176..df8d44eb6 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -2485,29 +2485,26 @@ impl Build { cmd.args.push("-mfpu=fpv5-sp-d16".into()) } } - if target.full_arch.starts_with("armebv7r") | target.full_arch.starts_with("armv7r") + // ARMv7-R targets + if target.full_arch.starts_with("armebv7r") + || target.full_arch.starts_with("armv7r") + || target.full_arch.starts_with("thumbv7r") { if target.full_arch.starts_with("armeb") { cmd.args.push("-mbig-endian".into()); - } else { - cmd.args.push("-mlittle-endian".into()); } - - // ARM mode - cmd.args.push("-marm".into()); - - // R Profile cmd.args.push("-march=armv7-r".into()); - if target.abi == "eabihf" { // lowest common denominator FPU // (see Cortex-R4 technical reference manual) cmd.args.push("-mfpu=vfpv3-d16".into()) } } - if target.full_arch.starts_with("armv7a") { + // Armv7-A targets + if target.full_arch.starts_with("armv7a") + || target.full_arch.starts_with("thumbv7a") + { cmd.args.push("-march=armv7-a".into()); - if target.abi == "eabihf" { // lowest common denominator FPU cmd.args.push("-mfpu=vfpv3-d16".into()); From b6289fa1ee0aab4cd3f241d8ab914540cb603ede Mon Sep 17 00:00:00 2001 From: Jonathan Pallant Date: Tue, 9 Jun 2026 16:03:43 +0100 Subject: [PATCH 5/6] Add ARMv6 support --- src/lib.rs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/lib.rs b/src/lib.rs index df8d44eb6..e9e63e02d 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -2485,6 +2485,17 @@ impl Build { cmd.args.push("-mfpu=fpv5-sp-d16".into()) } } + // ARMv6 targets + if target.full_arch.starts_with("armv6") + || (target.full_arch.starts_with("thumbv6") + && !target.full_arch.starts_with("thumbv6m")) + { + cmd.args.push("-march=armv6".into()); + if target.abi == "eabihf" { + // lowest common denominator FPU + cmd.args.push("-mfpu=vfpv2".into()); + } + } // ARMv7-R targets if target.full_arch.starts_with("armebv7r") || target.full_arch.starts_with("armv7r") From fa1aa64bcf085f2d23f8c7c01f6a7e18febc8c88 Mon Sep 17 00:00:00 2001 From: Jonathan Pallant Date: Tue, 9 Jun 2026 16:03:52 +0100 Subject: [PATCH 6/6] Add Armv8-R support --- src/lib.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/lib.rs b/src/lib.rs index e9e63e02d..e230a3801 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -2521,6 +2521,16 @@ impl Build { cmd.args.push("-mfpu=vfpv3-d16".into()); } } + // Armv8-R targets + if target.full_arch.starts_with("armv8r") + || target.full_arch.starts_with("thumbv8r") + { + cmd.args.push("-march=armv8-r".into()); + if target.abi == "eabihf" { + cmd.args.push("-mfpu=fp-armv8".into()) + } + } + if target.arch == "riscv32" || target.arch == "riscv64" { // get the 32i/32imac/32imc/64gc/64imac/... part let arch = &target.full_arch[5..];