[Pkg-rust-maintainers] Bug#973414: rustc: produces non-baseline opcodes for compiler_builtins::int::udiv::__udivmoddi4 on i386
James Addison
jay at jp-hosting.net
Wed Mar 29 18:43:45 BST 2023
Package: rustc
Followup-For: Bug #973414
X-Debbugs-Cc: debian-toolchain at lists.debian.org, martin-eric.racine at iki.fi, fierelier at gmail.com
Control: severity -1 serious
Control: tags -1 patch
A caution: there's a good chance I'm wasting everyone's time with this patch
and much of the preceding commentary about it.
However, I'd feel more comfortable raising this commotion about it and then
being talked down reasonably than I would if I didn't attempt to apply what I
feel is a fix.
Worth noting: it could still be an incorrect fix; this area is somewhat beyond
my expertise. That's a reasonable reason to reject it too, because I don't
think anyone would want it to be applied and cause long-term problems.
Anyhow: Dear Maintainer, please find attached a patch that may address this
issue that I feel may be release critical for bookworm, per Debian's
architecture policy guidelines.
-------------- next part --------------
Description: match rustc i686 specification to Debian 9 i386 baseline
Since Debian 9 (stretch), the baseline architecture specification for
i386 package has been the i686 (Pentium P6), with neither MMX nor SSE
instruction set extensions.
.
This is a lower baseline than the Pentium 4 default in Rust 1.63,
and also lower than the Pentium Pro default previously specified in
Debian's packaging for that version.
.
Upstream's definition of i686 appears to have converged on a
different meaning, so this patch doesn't currently seem to be worth
offering upstream (author's opinion here).
.
There are some downsides to this patch; performance of the Rust
tooling and code built with it on Debian i386 will be suboptimal
when using the defaults. Again, author's opinion: I think it's
worthwhile so that Debian is viable on baseline hardware.
.
Ref: https://wiki.debian.org/ArchitectureSpecificsMemo#i386-1
Author: James Addison <jay at jp-hosting.net>
Last-Update: Wed 29 Mar 18:24:38 BST 2023
Bug: https://bugs.debian.org/973414
Forwarded: not-needed
X-Not-Forwarded-Because: upstream consensus on i686 differs
---
--- rustc-1.63.0+dfsg1.orig/compiler/rustc_target/src/spec/i686_unknown_linux_gnu.rs
+++ rustc-1.63.0+dfsg1/compiler/rustc_target/src/spec/i686_unknown_linux_gnu.rs
@@ -2,7 +2,7 @@ use crate::spec::{LinkerFlavor, StackPro
pub fn target() -> Target {
let mut base = super::linux_gnu_base::opts();
- base.cpu = "pentium4".into();
+ base.cpu = "i686".into();
base.max_atomic_width = Some(64);
base.pre_link_args.entry(LinkerFlavor::Gcc).or_default().push("-m32".into());
// don't use probe-stack=inline-asm until rust#83139 and rust#84667 are resolved
More information about the Pkg-rust-maintainers
mailing list