-
Notifications
You must be signed in to change notification settings - Fork 13k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
mk: Don't pass -msoft-float on mips-gnu #34841
Conversation
Soon the LLVM upgrade (rust-lang#34743) will require an updated CMake installation, and the easiest way to do this was to upgrade the Ubuntu version of the bots to 16.04. This in turn brings in a new MIPS compiler on the linux-cross builder, which is now from the "official" ubuntu repositories. Unfortunately these new compilers don't support compiling with the `-msoft-float` flag like we're currently passing, causing compiles to fail. This commit removes these flags as it's not clear *why* they're being passed, as the mipsel targets also don't have it. At least if it's not supported by a debian default compiler, perhaps it's not too relevant to support?
r? @aturon (rust_highfive has picked a reviewer for you, use r? to override) |
Confirmed that this passes our suite of auto bots in dev with the updated images the LLVM upgrade will use, just need to see if it passes our current auto bots... |
@bors r+ p=1 |
📌 Commit 5f43817 has been approved by |
mk: Don't pass -msoft-float on mips-gnu Soon the LLVM upgrade (#34743) will require an updated CMake installation, and the easiest way to do this was to upgrade the Ubuntu version of the bots to 16.04. This in turn brings in a new MIPS compiler on the linux-cross builder, which is now from the "official" ubuntu repositories. Unfortunately these new compilers don't support compiling with the `-msoft-float` flag like we're currently passing, causing compiles to fail. This commit removes these flags as it's not clear *why* they're being passed, as the mipsel targets also don't have it. At least if it's not supported by a debian default compiler, perhaps it's not too relevant to support?
Right now two MIPS targets in the compiler, `mips-unknown-linux-{gnu,musl}` both generate object files using the soft-float ABI through LLVM by default. This is also expressed as the `-C soft-float` codegen option and otherwise isn't used for any other target in the compiler. This option was added quite some time ago (back in rust-lang#9617), and nowadays it's more appropriate to be done through a codegen option. This is motivated by rust-lang#34743 which necessitated an upgrade in the CMake installation on our bots which necessitated an upgrade in the Ubuntu version which invalidated the MIPS compilers we were using. The new MIPS compilers (coming from Debian I believe) all have hard float enabled by default and soft float support not built in. This meant that we couldn't upgrade the bots until rust-lang#34841 landed because otherwise we would fail to compile C code as the `-msoft-float` option wouldn't work. Unfortunately, though, this means that once we upgrade the bots the C code we're compiling will be compiled for hard float and the Rust code will be compiled for soft float, a bad mismatch! This PR remedies the situation such that Rust will compile with hard float as well. If this lands it will likely produce broken nightlies for a day or two while we get around to upgrading the bots because the current C toolchain only produces soft-float binaries, and now rust will be hard-float. Hopefully, though, the upgrade can go smoothly!
rustc: Remove soft-float from MIPS targets Right now two MIPS targets in the compiler, `mips-unknown-linux-{gnu,musl}` both generate object files using the soft-float ABI through LLVM by default. This is also expressed as the `-C soft-float` codegen option and otherwise isn't used for any other target in the compiler. This option was added quite some time ago (back in rust-lang#9617), and nowadays it's more appropriate to be done through a codegen option. This is motivated by rust-lang#34743 which necessitated an upgrade in the CMake installation on our bots which necessitated an upgrade in the Ubuntu version which invalidated the MIPS compilers we were using. The new MIPS compilers (coming from Debian I believe) all have hard float enabled by default and soft float support not built in. This meant that we couldn't upgrade the bots until rust-lang#34841 landed because otherwise we would fail to compile C code as the `-msoft-float` option wouldn't work. Unfortunately, though, this means that once we upgrade the bots the C code we're compiling will be compiled for hard float and the Rust code will be compiled for soft float, a bad mismatch! This PR remedies the situation such that Rust will compile with hard float as well. If this lands it will likely produce broken nightlies for a day or two while we get around to upgrading the bots because the current C toolchain only produces soft-float binaries, and now rust will be hard-float. Hopefully, though, the upgrade can go smoothly!
The update of the builder images has unfortunately caused the beta build to now fail due to this PR not being available:
As a result I'm nominating for beta and tagging beta-accepted as well to unbreak the build |
Backport rust-lang#34841 to beta
Soon the LLVM upgrade (#34743) will require an updated CMake installation, and
the easiest way to do this was to upgrade the Ubuntu version of the bots to
16.04. This in turn brings in a new MIPS compiler on the linux-cross builder,
which is now from the "official" ubuntu repositories. Unfortunately these
new compilers don't support compiling with the
-msoft-float
flag like we'recurrently passing, causing compiles to fail.
This commit removes these flags as it's not clear why they're being passed, as
the mipsel targets also don't have it. At least if it's not supported by a
debian default compiler, perhaps it's not too relevant to support?