Your message dated Fri, 02 Apr 2021 11:55:55 +0000
with message-id <[email protected]>
and subject line unblock rust-compiler-builtins
has caused the Debian Bug report #986282,
regarding unblock: rust-compiler-builtins/0.1.26-3
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)


-- 
986282: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=986282
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
User: [email protected]
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 <[email protected]>  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 <[email protected]>
+ 2019-2021 Debian Rust Maintainers 
<[email protected]>
  2019 kpcyrd <[email protected]>
 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 <[email protected]>
- 2020 kpcyrd <[email protected]>
+ 2020-2021 Debian Rust Maintainers 
<[email protected]>
+ 2020-2021 kpcyrd <[email protected]>
 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 <[email protected]>
+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

--- End Message ---
--- Begin Message ---
Unblocked.

--- End Message ---

Reply via email to