Bug#1095866: llvm-toolchain-19: unsoundness/miscompilations on i386
Simon McVittie
smcv at debian.org
Fri Apr 25 10:56:20 BST 2025
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)
More information about the Pkg-llvm-team
mailing list