[Pkg-rust-maintainers] Bug#881845: rustc: FTBFS on mips*: test failures

James Cowgill jcowgill at debian.org
Fri Feb 2 12:14:03 UTC 2018


Hi,

On 11/01/18 20:16, Emilio Pozuelo Monfort wrote:
> On 17/11/17 13:25, James Cowgill wrote:
>> Hi,
>>
>> On 15/11/17 17:30, Emilio Pozuelo Monfort wrote:
>>> Source: rustc
>>> Version: 1.21.0+dfsg1-3
>>> Severity: important
>>>
>>> Hi,
>>>
>>> Sometime ago I asked about rustc bootstrap status on mips*:
>>>
>>> 17:08 < infinity0> mips* fail many tests last time i tried, ~3 months ago, i didn't want to ship it, i haven't had time to check since
>>>
>>> >From https://buildd.debian.org/status/fetch.php?pkg=rustc&arch=mips&ver=1.14.0%2Bdfsg1-3&stamp=1484077706&raw=0
>>>
>>> test net::tcp::tests::timeouts ... FAILED
>>> test net::udp::tests::timeouts ... FAILED
>>> test sys::imp::ext::net::test::timeouts ... FAILED
>>>
>>> Looks like timeouts are broken on rust/mips?
>>>
>>> mips64el has different errors:
>>>
>>> test f32::f32::tanh_0 ... FAILED
>>> test f64::f64::tanh_0 ... FAILED
>>> test io::error::Error::from_raw_os_error_0 ... FAILED
>>>
>>> Maybe the mips porters can take a look? (debian-mips@ on Cc). Note those
>>> errors are for 1.14.0, you'll want to try with a newer version first and
>>> see what's the current status.
>>
>> I just tried building the latest rustc on mips64el. As I expected, I hit
>> this LLVM bug again where any code using atomics will hang:
>>
>> https://bugs.llvm.org/show_bug.cgi?id=32020
>>
>> I'll see if I can get Simon to have a look at it again.
> 
> FTR:
> 
> According to our conversation over IRC, there's a patch for the above bug, but
> mips64el is now affected by https://github.com/rust-lang/rust/issues/47290
> 
> mips(el) may be fine now with that patch, or they may not :P

I have been looking at the state of rust support on mips over the last
weeks or so. These are the major issues:

Hanging atomics (mips, mipsel, mips64el)
====
This is an LLVM bug which happens on all mips.

https://github.com/rust-lang/rust/issues/39013
https://bugs.llvm.org/show_bug.cgi?id=32020

I have attached the most recent iteration of Simon's LLVM fix for this
along with some of my adjustments to it and a backport to LLVM 4.0 I
used for testing with rust.

LLVM 128-bit integer isues (mips, mipsel)
====
128-bit integer arithmetic is broken in LLVM 4 on 32-bit MIPS. This has
been fixed in LLVM 5. Unfortunately this bug has caused the upstream
stage0 compiler to break badly so you may need to apply the fix and
cross build your own stage0 until upstream binaries have moved to LLVM >= 5.

https://github.com/rust-lang/rust/issues/41222
https://bugs.llvm.org/show_bug.cgi?id=32713
https://reviews.llvm.org/rL305389

llvm.powi.f64 broken (mips64el)
====
>>> test f32::f32::tanh_0 ... FAILED
>>> test f64::f64::tanh_0 ... FAILED

This is caused by the llvm.powi.f64 intrinsic being broken for negative
powers. Thankfully this is not a very serious bug.

Fixed here:
https://bugs.llvm.org/show_bug.cgi?id=36061
https://reviews.llvm.org/D42537

No 64-bit Rust ABI support (mips64el)
====
The biggest issue with Rust itself is the lack of working FFI support
for 64-bit mips.

My attempt at implementing this:
https://github.com/rust-lang/rust/issues/47290
https://github.com/rust-lang/rust/pull/47964

Other issues
====
>>> test net::tcp::tests::timeouts ... FAILED
>>> test net::udp::tests::timeouts ... FAILED
>>> test sys::imp::ext::net::test::timeouts ... FAILED

As I wrote in https://github.com/rust-lang/rust/issues/39013, these are
big endian specific. I haven't had the chance to test rust on big endian
yet.

>>> test io::error::Error::from_raw_os_error_0 ... FAILED

Fixed in https://github.com/rust-lang/rust/pull/47874

Some FPU errors only happen on Loongson. In theory, enabling FPXX in
LLVM should have fixed this, but I have not investigated it very far.

There are a few other failing tests where the test itself is broken. I
will try to submit fixes to ignore / adjust the tests soon.

Thanks,
James
-------------- next part --------------
A non-text attachment was scrubbed...
Name: llvm-mips-atomic-bpo4.0.patch
Type: text/x-patch
Size: 72537 bytes
Desc: not available
URL: <http://lists.alioth.debian.org/pipermail/pkg-rust-maintainers/attachments/20180202/c93f1642/attachment-0003.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: llvm-mips-atomic-bpo4.0-adjustments.patch
Type: text/x-patch
Size: 5033 bytes
Desc: not available
URL: <http://lists.alioth.debian.org/pipermail/pkg-rust-maintainers/attachments/20180202/c93f1642/attachment-0004.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: llvm-mips-atomic-original.patch
Type: text/x-patch
Size: 72497 bytes
Desc: not available
URL: <http://lists.alioth.debian.org/pipermail/pkg-rust-maintainers/attachments/20180202/c93f1642/attachment-0005.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <http://lists.alioth.debian.org/pipermail/pkg-rust-maintainers/attachments/20180202/c93f1642/attachment-0001.sig>


More information about the Pkg-rust-maintainers mailing list