Package: release.debian.org Severity: normal User: release.debian....@packages.debian.org Usertags: unblock
Please unblock package rust-compiler-builtins rust-compiler-builtins 0.1.26-2 FTBFS on armhf (and presumablly also armel but I did not test that). Rust upstream have renamed the old assembler support from asm! to llvm_asm! in preperation for the introduction of a new assembler syntax. This breaks the build of rust-compiler-builtins on arm (tested on armhf but presumablly also affects armel). rust-compiler-builtins uses inline asm in the arm implementations. There is also some inline asm in the x86 and x86-64 implementations, but said asm is not used when building for linux. Upstream fixed this some time ago, https://github.com/rust-lang/compiler-builtins/commit/cde22bc180391e75de1c189fe29f442ada86ccde but unfortunately the new version was never uploaded to Debian and given that it's a key package, it's too late for new upstream versions now. The upstream commit also included some unrelated changes. I therefore took the upstream commit, removed changes unrelated to the asm change and applied it to the Debian package. I left in the changes to the non-linux asm blocks figuring it was sensible to treat the asm change as one unit. unblock rust-compiler-builtins/0.1.26-3 -- System Information: Debian Release: 10.5 APT prefers stable-updates APT policy: (500, 'stable-updates'), (500, 'oldoldstable'), (500, 'stable') Architecture: amd64 (x86_64) Foreign Architectures: i386 Kernel: Linux 4.19.0-10-amd64 (SMP w/4 CPU cores) Kernel taint flags: TAINT_OOT_MODULE, TAINT_UNSIGNED_MODULE Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8), LANGUAGE=en_GB:en (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Init: systemd (via /run/systemd/system) LSM: AppArmor: enabled
diff -Nru rust-compiler-builtins-0.1.26/debian/cargo-checksum.json rust-compiler-builtins-0.1.26/debian/cargo-checksum.json --- rust-compiler-builtins-0.1.26/debian/cargo-checksum.json 2020-04-12 21:42:44.000000000 +0000 +++ rust-compiler-builtins-0.1.26/debian/cargo-checksum.json 2021-04-01 11:34:12.000000000 +0000 @@ -1 +1 @@ -{"package":"036b035e9ebcd705affece16319223d19f229e2358be6e3b7b094e57193312e6","files":{}} +{"package":"Could not get crate checksum","files":{}} diff -Nru rust-compiler-builtins-0.1.26/debian/changelog rust-compiler-builtins-0.1.26/debian/changelog --- rust-compiler-builtins-0.1.26/debian/changelog 2020-04-12 21:42:44.000000000 +0000 +++ rust-compiler-builtins-0.1.26/debian/changelog 2021-04-01 11:34:12.000000000 +0000 @@ -1,3 +1,12 @@ +rust-compiler-builtins (0.1.26-3) unstable; urgency=medium + + * Team upload. + * Package compiler_builtins 0.1.26 from crates.io using debcargo 2.4.2 + * Apply upstream changes to replace asm with llvm_asm and hence + fix FTBFS on arm (Closes: 985810). + + -- Peter Michael Green <plugw...@debian.org> Thu, 01 Apr 2021 11:34:12 +0000 + rust-compiler-builtins (0.1.26-2) unstable; urgency=medium * Team upload. diff -Nru rust-compiler-builtins-0.1.26/debian/copyright rust-compiler-builtins-0.1.26/debian/copyright --- rust-compiler-builtins-0.1.26/debian/copyright 2020-04-12 21:42:44.000000000 +0000 +++ rust-compiler-builtins-0.1.26/debian/copyright 2021-04-01 11:34:12.000000000 +0000 @@ -57,7 +57,7 @@ Files: debian/* Copyright: - 2019 Debian Rust Maintainers <pkg-rust-maintain...@alioth-lists.debian.net> + 2019-2021 Debian Rust Maintainers <pkg-rust-maintain...@alioth-lists.debian.net> 2019 kpcyrd <g...@rxv.cc> License: MIT or Apache-2.0 diff -Nru rust-compiler-builtins-0.1.26/debian/copyright.debcargo.hint rust-compiler-builtins-0.1.26/debian/copyright.debcargo.hint --- rust-compiler-builtins-0.1.26/debian/copyright.debcargo.hint 2020-04-12 21:42:44.000000000 +0000 +++ rust-compiler-builtins-0.1.26/debian/copyright.debcargo.hint 2021-04-01 11:34:12.000000000 +0000 @@ -413,8 +413,8 @@ Files: debian/* Copyright: - 2020 Debian Rust Maintainers <pkg-rust-maintain...@alioth-lists.debian.net> - 2020 kpcyrd <g...@rxv.cc> + 2020-2021 Debian Rust Maintainers <pkg-rust-maintain...@alioth-lists.debian.net> + 2020-2021 kpcyrd <g...@rxv.cc> License: MIT or Apache-2.0 License: Apache-2.0 diff -Nru rust-compiler-builtins-0.1.26/debian/patches/series rust-compiler-builtins-0.1.26/debian/patches/series --- rust-compiler-builtins-0.1.26/debian/patches/series 1970-01-01 00:00:00.000000000 +0000 +++ rust-compiler-builtins-0.1.26/debian/patches/series 2021-04-01 11:34:12.000000000 +0000 @@ -0,0 +1 @@ +use-llvm_asm.patch \ No newline at end of file diff -Nru rust-compiler-builtins-0.1.26/debian/patches/use-llvm_asm.patch rust-compiler-builtins-0.1.26/debian/patches/use-llvm_asm.patch --- rust-compiler-builtins-0.1.26/debian/patches/use-llvm_asm.patch 1970-01-01 00:00:00.000000000 +0000 +++ rust-compiler-builtins-0.1.26/debian/patches/use-llvm_asm.patch 2021-04-01 11:34:12.000000000 +0000 @@ -0,0 +1,305 @@ +Patch to fix asm related FTBFS by switching from asm! to llvm_asm! + +This patch is Based on the upstream commit referenced below with +non-asm related changes removed. + +commit cde22bc180391e75de1c189fe29f442ada86ccde +Author: Alex Crichton <a...@alexcrichton.com> +Date: Wed Apr 29 15:30:10 2020 -0500 + +diff --git a/examples/intrinsics.rs b/examples/intrinsics.rs +index 5ceebe1..82762e0 100644 +--- a/examples/intrinsics.rs ++++ b/examples/intrinsics.rs +@@ -6,7 +6,7 @@ + #![allow(unused_features)] + #![cfg_attr(thumb, no_main)] + #![deny(dead_code)] +-#![feature(asm)] ++#![feature(llvm_asm)] + #![feature(lang_items)] + #![feature(start)] + #![feature(allocator_api)] +@@ -280,7 +280,7 @@ fn run() { + + // A copy of "test::black_box". Used to prevent LLVM from optimizing away the intrinsics during LTO + fn bb<T>(dummy: T) -> T { +- unsafe { asm!("" : : "r"(&dummy)) } ++ unsafe { llvm_asm!("" : : "r"(&dummy)) } + dummy + } + +diff --git a/src/arm.rs b/src/arm.rs +index 4cf73ef..190bba7 100644 +--- a/src/arm.rs ++++ b/src/arm.rs +@@ -8,13 +8,15 @@ use core::intrinsics; + #[naked] + #[cfg_attr(not(feature = "mangled-names"), no_mangle)] + pub unsafe fn __aeabi_uidivmod() { +- asm!("push {lr} +- sub sp, sp, #4 +- mov r2, sp +- bl __udivmodsi4 +- ldr r1, [sp] +- add sp, sp, #4 +- pop {pc}" ::: "memory" : "volatile"); ++ llvm_asm!(" ++ push {lr} ++ sub sp, sp, #4 ++ mov r2, sp ++ bl __udivmodsi4 ++ ldr r1, [sp] ++ add sp, sp, #4 ++ pop {pc} ++ " ::: "memory" : "volatile"); + intrinsics::unreachable(); + } + +@@ -22,13 +24,15 @@ pub unsafe fn __aeabi_uidivmod() { + #[naked] + #[cfg_attr(not(feature = "mangled-names"), no_mangle)] + pub unsafe fn __aeabi_uidivmod() { +- asm!("push {lr} +- sub sp, sp, #4 +- mov r2, sp +- bl ___udivmodsi4 +- ldr r1, [sp] +- add sp, sp, #4 +- pop {pc}" ::: "memory" : "volatile"); ++ llvm_asm!(" ++ push {lr} ++ sub sp, sp, #4 ++ mov r2, sp ++ bl ___udivmodsi4 ++ ldr r1, [sp] ++ add sp, sp, #4 ++ pop {pc} ++ " ::: "memory" : "volatile"); + intrinsics::unreachable(); + } + +@@ -36,15 +40,17 @@ pub unsafe fn __aeabi_uidivmod() { + #[naked] + #[cfg_attr(not(feature = "mangled-names"), no_mangle)] + pub unsafe fn __aeabi_uldivmod() { +- asm!("push {r4, lr} +- sub sp, sp, #16 +- add r4, sp, #8 +- str r4, [sp] +- bl __udivmoddi4 +- ldr r2, [sp, #8] +- ldr r3, [sp, #12] +- add sp, sp, #16 +- pop {r4, pc}" ::: "memory" : "volatile"); ++ llvm_asm!(" ++ push {r4, lr} ++ sub sp, sp, #16 ++ add r4, sp, #8 ++ str r4, [sp] ++ bl __udivmoddi4 ++ ldr r2, [sp, #8] ++ ldr r3, [sp, #12] ++ add sp, sp, #16 ++ pop {r4, pc} ++ " ::: "memory" : "volatile"); + intrinsics::unreachable(); + } + +@@ -52,15 +58,17 @@ pub unsafe fn __aeabi_uldivmod() { + #[naked] + #[cfg_attr(not(feature = "mangled-names"), no_mangle)] + pub unsafe fn __aeabi_uldivmod() { +- asm!("push {r4, lr} +- sub sp, sp, #16 +- add r4, sp, #8 +- str r4, [sp] +- bl ___udivmoddi4 +- ldr r2, [sp, #8] +- ldr r3, [sp, #12] +- add sp, sp, #16 +- pop {r4, pc}" ::: "memory" : "volatile"); ++ llvm_asm!(" ++ push {r4, lr} ++ sub sp, sp, #16 ++ add r4, sp, #8 ++ str r4, [sp] ++ bl ___udivmoddi4 ++ ldr r2, [sp, #8] ++ ldr r3, [sp, #12] ++ add sp, sp, #16 ++ pop {r4, pc} ++ " ::: "memory" : "volatile"); + intrinsics::unreachable(); + } + +@@ -68,12 +76,14 @@ pub unsafe fn __aeabi_uldivmod() { + #[naked] + #[cfg_attr(not(feature = "mangled-names"), no_mangle)] + pub unsafe fn __aeabi_idivmod() { +- asm!("push {r0, r1, r4, lr} +- bl __aeabi_idiv +- pop {r1, r2} +- muls r2, r2, r0 +- subs r1, r1, r2 +- pop {r4, pc}" ::: "memory" : "volatile"); ++ llvm_asm!(" ++ push {r0, r1, r4, lr} ++ bl __aeabi_idiv ++ pop {r1, r2} ++ muls r2, r2, r0 ++ subs r1, r1, r2 ++ pop {r4, pc} ++ " ::: "memory" : "volatile"); + intrinsics::unreachable(); + } + +@@ -81,12 +91,14 @@ pub unsafe fn __aeabi_idivmod() { + #[naked] + #[cfg_attr(not(feature = "mangled-names"), no_mangle)] + pub unsafe fn __aeabi_idivmod() { +- asm!("push {r0, r1, r4, lr} +- bl ___aeabi_idiv +- pop {r1, r2} +- muls r2, r2, r0 +- subs r1, r1, r2 +- pop {r4, pc}" ::: "memory" : "volatile"); ++ llvm_asm!(" ++ push {r0, r1, r4, lr} ++ bl ___aeabi_idiv ++ pop {r1, r2} ++ muls r2, r2, r0 ++ subs r1, r1, r2 ++ pop {r4, pc} ++ " ::: "memory" : "volatile"); + intrinsics::unreachable(); + } + +@@ -94,15 +106,17 @@ pub unsafe fn __aeabi_idivmod() { + #[naked] + #[cfg_attr(not(feature = "mangled-names"), no_mangle)] + pub unsafe fn __aeabi_ldivmod() { +- asm!("push {r4, lr} +- sub sp, sp, #16 +- add r4, sp, #8 +- str r4, [sp] +- bl __divmoddi4 +- ldr r2, [sp, #8] +- ldr r3, [sp, #12] +- add sp, sp, #16 +- pop {r4, pc}" ::: "memory" : "volatile"); ++ llvm_asm!(" ++ push {r4, lr} ++ sub sp, sp, #16 ++ add r4, sp, #8 ++ str r4, [sp] ++ bl __divmoddi4 ++ ldr r2, [sp, #8] ++ ldr r3, [sp, #12] ++ add sp, sp, #16 ++ pop {r4, pc} ++ " ::: "memory" : "volatile"); + intrinsics::unreachable(); + } + +@@ -110,15 +124,17 @@ pub unsafe fn __aeabi_ldivmod() { + #[naked] + #[cfg_attr(not(feature = "mangled-names"), no_mangle)] + pub unsafe fn __aeabi_ldivmod() { +- asm!("push {r4, lr} +- sub sp, sp, #16 +- add r4, sp, #8 +- str r4, [sp] +- bl ___divmoddi4 +- ldr r2, [sp, #8] +- ldr r3, [sp, #12] +- add sp, sp, #16 +- pop {r4, pc}" ::: "memory" : "volatile"); ++ llvm_asm!(" ++ push {r4, lr} ++ sub sp, sp, #16 ++ add r4, sp, #8 ++ str r4, [sp] ++ bl ___divmoddi4 ++ ldr r2, [sp, #8] ++ ldr r3, [sp, #12] ++ add sp, sp, #16 ++ pop {r4, pc} ++ " ::: "memory" : "volatile"); + intrinsics::unreachable(); + } + +diff --git a/src/lib.rs b/src/lib.rs +index e57a5ef..0ca770b 100644 +--- a/src/lib.rs ++++ b/src/lib.rs +@@ -1,6 +1,6 @@ + #![cfg_attr(feature = "compiler-builtins", compiler_builtins)] + #![feature(abi_unadjusted)] +-#![feature(asm)] ++#![feature(llvm_asm)] + #![feature(global_asm)] + #![feature(cfg_target_has_atomic)] + #![feature(compiler_builtins)] +diff --git a/src/x86.rs b/src/x86.rs +index 035c0a3..5511c45 100644 +--- a/src/x86.rs ++++ b/src/x86.rs +@@ -12,7 +12,7 @@ use core::intrinsics; + #[naked] + #[no_mangle] + pub unsafe fn ___chkstk_ms() { +- asm!(" ++ llvm_asm!(" + push %ecx + push %eax + cmp $$0x1000,%eax +@@ -38,7 +38,7 @@ pub unsafe fn ___chkstk_ms() { + #[naked] + #[no_mangle] + pub unsafe fn __alloca() { +- asm!("jmp ___chkstk // Jump to ___chkstk since fallthrough may be unreliable" ++ llvm_asm!("jmp ___chkstk // Jump to ___chkstk since fallthrough may be unreliable" + ::: "memory" : "volatile"); + intrinsics::unreachable(); + } +@@ -47,7 +47,7 @@ pub unsafe fn __alloca() { + #[naked] + #[no_mangle] + pub unsafe fn ___chkstk() { +- asm!(" ++ llvm_asm!(" + push %ecx + cmp $$0x1000,%eax + lea 8(%esp),%ecx // esp before calling this routine -> ecx +diff --git a/src/x86_64.rs b/src/x86_64.rs +index 6940f8d..6a0cd56 100644 +--- a/src/x86_64.rs ++++ b/src/x86_64.rs +@@ -12,7 +12,7 @@ use core::intrinsics; + #[naked] + #[no_mangle] + pub unsafe fn ___chkstk_ms() { +- asm!(" ++ llvm_asm!(" + push %rcx + push %rax + cmp $$0x1000,%rax +@@ -37,7 +37,7 @@ pub unsafe fn ___chkstk_ms() { + #[naked] + #[no_mangle] + pub unsafe fn __alloca() { +- asm!("mov %rcx,%rax // x64 _alloca is a normal function with parameter in rcx ++ llvm_asm!("mov %rcx,%rax // x64 _alloca is a normal function with parameter in rcx + jmp ___chkstk // Jump to ___chkstk since fallthrough may be unreliable" + ::: "memory" : "volatile"); + intrinsics::unreachable(); +@@ -47,7 +47,7 @@ pub unsafe fn __alloca() { + #[naked] + #[no_mangle] + pub unsafe fn ___chkstk() { +- asm!( ++ llvm_asm!( + " + push %rcx + cmp $$0x1000,%rax