Control: retitle -1 llvm-toolchain-19: unsoundness/miscompilations on i386
Control: block 1095863 by -1
On Thu, 13 Feb 2025 at 07:51:29 +0100, Fabian Grünbichler wrote:
- Debian's i386 baseline is currently 32-bit x86 without MMX or SSE (i686)
- Debian's LLVM and rustc packages accordingly patch their i686 targets to
remove SSE support, which would be part of that target's baseline upstream
otherwise [0,1]
- Upstream LLVM and rustc consider this combination unsound and unfixable (for
IMHO valid reasons) because it can cause subtle miscompilations leading to
runtime crashes, in addition to the (usual, expected) different semantics of
x87 and SSE2 floating point implementations [2,3]
This was discussed further with the release team in
https://bugs.debian.org/1095863 where I outlined some additional
options, not all of which had been mentioned as possibilities in #1095862.
The release team have chosen to keep the baseline as "officially" 32-bit
x86 without MMX or SSE, but allow rustc (and LLVM if necessary) to
intentionally violate that baseline in order to produce working code.
Paul Gevers wrote in
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1095863#70:
On 13-02-2025 17:32, Simon McVittie wrote:
- Officially keep current baseline, intentionally violate the baseline in
rustc (and maybe LLVM?) so that rustc produces working code, and
have the release team announce that the resulting baseline violations
are not to be considered RC bugs
I think we're effectively going with this option, given the upload in
[1] that we are aware of and didn't object to.
[1]
https://tracker.debian.org/news/1627384/accepted-llvm-toolchain-18-11818-17-source-into-unstable/
However I'm a bit confused about the status of implementing this. There
have been uploads of llvm-toolchain-18 and rustc selecting pentium4
rather than i686 as their baseline, but rustc seems to use libLLVM
version 19 (the same as llvm-defaults), and there has been no upload of
llvm-toolchain-19 with an equivalent change.
Was the rustc upload sufficient to address this problem for Rust code,
or is an upload of llvm-toolchain-19 also needed?
Will llvm-toolchain-20 prereleases (in experimental) also need an
upload? The llvm-toolchain-20 package doesn't seem to have a bug open
yet - should we clone this one?
smcv
(not a release team member)