[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#986282: marked as done (unblock: rust-compiler-builtins/0.1.26-3)



Your message dated Fri, 02 Apr 2021 11:55:55 +0000
with message-id <E1lSIP5-0007j3-Ez@respighi.debian.org>
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 owner@bugs.debian.org
immediately.)


-- 
986282: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=986282
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
User: release.debian.org@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 <plugwash@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-maintainers@alioth-lists.debian.net>
+ 2019-2021 Debian Rust Maintainers <pkg-rust-maintainers@alioth-lists.debian.net>
  2019 kpcyrd <git@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-maintainers@alioth-lists.debian.net>
- 2020 kpcyrd <git@rxv.cc>
+ 2020-2021 Debian Rust Maintainers <pkg-rust-maintainers@alioth-lists.debian.net>
+ 2020-2021 kpcyrd <git@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 <alex@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

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

--- End Message ---

Reply to: