[Pkg-rust-maintainers] Bug#906520: rustc: atomic failures on armel

Adrian Bunk bunk at debian.org
Fri Aug 17 23:13:50 BST 2018


Source: rustc
Version: 1.28.0+dfsg1-2
Severity: important
Tags: patch

https://buildd.debian.org/status/fetch.php?pkg=rustc&arch=armel&ver=1.28.0+dfsg1-2&stamp=1533492840&raw=0

...
==== Debian rustc test report ====
Specific test failures:
test num/mod.rs - sync::atomic::AtomicI16::fetch_max (line 188) ... FAILED
test num/mod.rs - sync::atomic::AtomicI16::fetch_max (line 201) ... FAILED
test num/mod.rs - sync::atomic::AtomicI16::fetch_min (line 188) ... FAILED
test num/mod.rs - sync::atomic::AtomicI16::fetch_min (line 203) ... FAILED
test num/mod.rs - sync::atomic::AtomicI32::fetch_max (line 188) ... FAILED
test num/mod.rs - sync::atomic::AtomicI32::fetch_max (line 201) ... FAILED
test num/mod.rs - sync::atomic::AtomicI32::fetch_min (line 203) ... FAILED
test num/mod.rs - sync::atomic::AtomicI32::fetch_min (line 188) ... FAILED
test num/mod.rs - sync::atomic::AtomicI8::fetch_max (line 188) ... FAILED
test num/mod.rs - sync::atomic::AtomicI8::fetch_max (line 201) ... FAILED
test num/mod.rs - sync::atomic::AtomicI8::fetch_min (line 188) ... FAILED
test num/mod.rs - sync::atomic::AtomicI8::fetch_min (line 203) ... FAILED
test num/mod.rs - sync::atomic::AtomicIsize::fetch_max (line 188) ... FAILED
test num/mod.rs - sync::atomic::AtomicIsize::fetch_max (line 199) ... FAILED
test num/mod.rs - sync::atomic::AtomicIsize::fetch_min (line 188) ... FAILED
test num/mod.rs - sync::atomic::AtomicIsize::fetch_min (line 201) ... FAILED
test num/mod.rs - sync::atomic::AtomicU16::fetch_max (line 188) ... FAILED
test num/mod.rs - sync::atomic::AtomicU16::fetch_max (line 201) ... FAILED
test num/mod.rs - sync::atomic::AtomicU16::fetch_min (line 188) ... FAILED
test num/mod.rs - sync::atomic::AtomicU16::fetch_min (line 203) ... FAILED
test num/mod.rs - sync::atomic::AtomicU32::fetch_max (line 188) ... FAILED
test num/mod.rs - sync::atomic::AtomicU32::fetch_max (line 201) ... FAILED
test num/mod.rs - sync::atomic::AtomicU32::fetch_min (line 203) ... FAILED
test num/mod.rs - sync::atomic::AtomicU32::fetch_min (line 188) ... FAILED
test num/mod.rs - sync::atomic::AtomicU8::fetch_max (line 188) ... FAILED
test num/mod.rs - sync::atomic::AtomicU8::fetch_max (line 201) ... FAILED
test num/mod.rs - sync::atomic::AtomicU8::fetch_min (line 188) ... FAILED
test num/mod.rs - sync::atomic::AtomicU8::fetch_min (line 203) ... FAILED
test num/mod.rs - sync::atomic::AtomicUsize::fetch_max (line 188) ... FAILED
test num/mod.rs - sync::atomic::AtomicUsize::fetch_max (line 199) ... FAILED
test num/mod.rs - sync::atomic::AtomicUsize::fetch_min (line 188) ... FAILED
test num/mod.rs - sync::atomic::AtomicUsize::fetch_min (line 201) ... FAILED
...


The fix consists of two parts:
1. remove d-armel-disable-kernel-helpers.patch
2. add u-armel-atomics-nand.patch
-------------- next part --------------
Description: Fix __sync_fetch_and_nand_* for pre-v6 ARM
 gcc changed semantics for __sync_fetch_and_nand_* in gcc 4.4,
 update to the new semantics as expected by the testsuite.
Author: Adrian Bunk <bunk at debian.org>

--- rustc-1.28.0+dfsg1.orig/src/libcompiler_builtins/src/arm_linux.rs
+++ rustc-1.28.0+dfsg1/src/libcompiler_builtins/src/arm_linux.rs
@@ -125,9 +125,9 @@ atomic_rmw!(__sync_fetch_and_xor_1, u8,
 atomic_rmw!(__sync_fetch_and_xor_2, u16, |a: u16, b: u16| a ^ b);
 atomic_rmw!(__sync_fetch_and_xor_4, u32, |a: u32, b: u32| a ^ b);
 
-atomic_rmw!(__sync_fetch_and_nand_1, u8, |a: u8, b: u8| !a & b);
-atomic_rmw!(__sync_fetch_and_nand_2, u16, |a: u16, b: u16| !a & b);
-atomic_rmw!(__sync_fetch_and_nand_4, u32, |a: u32, b: u32| !a & b);
+atomic_rmw!(__sync_fetch_and_nand_1, u8, |a: u8, b: u8| !(a & b));
+atomic_rmw!(__sync_fetch_and_nand_2, u16, |a: u16, b: u16| !(a & b));
+atomic_rmw!(__sync_fetch_and_nand_4, u32, |a: u32, b: u32| !(a & b));
 
 atomic_rmw!(__sync_fetch_and_max_1, i8, |a: i8, b: i8| if a > b { a } else { b });
 atomic_rmw!(__sync_fetch_and_max_2, i16, |a: i16, b: i16| if a > b { a } else { b });


More information about the Pkg-rust-maintainers mailing list