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)

Reply via email to