From c51072483a0fb28c17f40f66025d5ac4b902b4b8 Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Mon, 6 Jul 2026 08:33:53 +0000 Subject: [PATCH 1/2] Change rustc-abi in custom targets to softfloat rust-lang/rust#157151 removed the `x86-softfloat` compatibility alias that was introduced in rust-lang/rust#151154. Nightlies from 2026-07-05 onward reject `"rustc-abi": "x86-softfloat"` with: invalid rustc abi: 'x86-softfloat'. allowed values: 'x86-sse2', 'powerpc-spe', 'softfloat' Switch the three custom JSON target specs to the canonical `softfloat` value. Co-Authored-By: Claude Opus 4.8 (1M context) --- Changelog.md | 2 ++ example-kernel/x86_64-example-kernel.json | 2 +- test-kernel/x86_64-test-kernel.json | 2 +- x86_64-bootloader.json | 2 +- 4 files changed, 5 insertions(+), 3 deletions(-) diff --git a/Changelog.md b/Changelog.md index 9cccee57..666a532f 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,5 +1,7 @@ # Unreleased +- change `rustc-abi` in custom targets from `x86-softfloat` to `softfloat`, following [rust-lang/rust#157151](https://github.com/rust-lang/rust/pull/157151) + # 0.9.34 – 2026-02-01 This release is compatible with Rust nightlies starting with `nightly-2026-02-01`. diff --git a/example-kernel/x86_64-example-kernel.json b/example-kernel/x86_64-example-kernel.json index 4b172a61..4d247937 100644 --- a/example-kernel/x86_64-example-kernel.json +++ b/example-kernel/x86_64-example-kernel.json @@ -12,5 +12,5 @@ "panic-strategy": "abort", "disable-redzone": true, "features": "-mmx,-sse,+soft-float", - "rustc-abi": "x86-softfloat" + "rustc-abi": "softfloat" } diff --git a/test-kernel/x86_64-test-kernel.json b/test-kernel/x86_64-test-kernel.json index 4b172a61..4d247937 100644 --- a/test-kernel/x86_64-test-kernel.json +++ b/test-kernel/x86_64-test-kernel.json @@ -12,5 +12,5 @@ "panic-strategy": "abort", "disable-redzone": true, "features": "-mmx,-sse,+soft-float", - "rustc-abi": "x86-softfloat" + "rustc-abi": "softfloat" } diff --git a/x86_64-bootloader.json b/x86_64-bootloader.json index 8136047a..d8f3718a 100644 --- a/x86_64-bootloader.json +++ b/x86_64-bootloader.json @@ -19,5 +19,5 @@ "panic-strategy": "abort", "executables": true, "relocation-model": "static", - "rustc-abi": "x86-softfloat" + "rustc-abi": "softfloat" } From ccb0ad37fc29c56fb4898f22e0de020f7845c135 Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Mon, 6 Jul 2026 10:14:09 +0000 Subject: [PATCH 2/2] CI: use rust-objcopy instead of cargo objcopy The newer nightly (>= 2026-07-05) requires `-Zunstable-options` to load custom JSON target specs. `cargo objcopy` runs an internal `rustc --target x86_64-bootloader.json --print cfg` probe (via rustc-cfg) that doesn't pass the flag and ignores RUSTFLAGS, so it fails to load the target, silently exits 0, and never produces `bootloader.bin` -- causing the later QEMU step to fail with "No such file or directory". `rust-objcopy` is the same tool from cargo-binutils but skips the target probe (we pass explicit ELF input/output paths), so it works without the flag. Co-Authored-By: Claude Opus 4.8 (1M context) --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 53de4a22..9303e1e7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -51,7 +51,7 @@ jobs: KERNEL_MANIFEST: "test-kernel/Cargo.toml" - name: 'Convert Bootloader ELF to Binary' - run: cargo objcopy -- -I elf64-x86-64 -O binary --binary-architecture=i386:x86-64 target/x86_64-bootloader/release/bootloader target/x86_64-bootloader/release/bootloader.bin + run: rust-objcopy -I elf64-x86-64 -O binary --binary-architecture=i386:x86-64 target/x86_64-bootloader/release/bootloader target/x86_64-bootloader/release/bootloader.bin # install QEMU - name: Install QEMU (Linux)