@@ -34,7 +34,7 @@ target | notes
34
34
-------|-------
35
35
[ ` aarch64-apple-darwin ` ] ( platform-support/apple-darwin.md ) | ARM64 macOS (11.0+, Big Sur+)
36
36
` aarch64-unknown-linux-gnu ` | ARM64 Linux (kernel 4.1, glibc 2.17+)
37
- ` i686-pc-windows-msvc ` | 32-bit MSVC (Windows 10+, Windows Server 2016+, Pentium 4) [ ^ x86_32-floats-return-ABI ]
37
+ ` i686-pc-windows-msvc ` | 32-bit MSVC (Windows 10+, Windows Server 2016+, Pentium 4) [ ^ x86_32-floats-return-ABI ] [ ^ win32-msvc-alignment ]
38
38
` i686-unknown-linux-gnu ` | 32-bit Linux (kernel 3.2+, glibc 2.17+, Pentium 4) [ ^ x86_32-floats-return-ABI ]
39
39
[ ` x86_64-apple-darwin ` ] ( platform-support/apple-darwin.md ) | 64-bit macOS (10.12+, Sierra+)
40
40
[ ` x86_64-pc-windows-gnu ` ] ( platform-support/windows-gnu.md ) | 64-bit MinGW (Windows 10+, Windows Server 2016+)
@@ -43,6 +43,8 @@ target | notes
43
43
44
44
[ ^ x86_32-floats-return-ABI ] : Due to limitations of the C ABI, floating-point support on ` i686 ` targets is non-compliant: floating-point return values are passed via an x87 register, so NaN payload bits can be lost. Functions with the default Rust ABI are not affected. See [ issue #115567 ] [ x86-32-float-return-issue ] .
45
45
46
+ [ ^ win32-msvc-alignment ] : Due to non-standard behavior of MSVC, native C code on this target can cause types with an alignment of more than 4 bytes to be incorrectly aligned to only 4 bytes (this affects, e.g., ` u64 ` and ` i64 ` ). Rust applies some mitigations to reduce the impact of this issue, but this can still cause unsoundness due to unsafe code that (correctly) assumes that references are always properly aligned. See [ issue #112480 ] ( https://github.com/rust-lang/rust/issues/112480 ) .
47
+
46
48
[ 77071 ] : https://github.com/rust-lang/rust/issues/77071
47
49
[ x86-32-float-return-issue ] : https://github.com/rust-lang/rust/issues/115567
48
50
@@ -95,7 +97,7 @@ target | notes
95
97
[ ` armv7-unknown-linux-ohos ` ] ( platform-support/openharmony.md ) | Armv7-A OpenHarmony
96
98
[ ` loongarch64-unknown-linux-gnu ` ] ( platform-support/loongarch-linux.md ) | LoongArch64 Linux, LP64D ABI (kernel 5.19, glibc 2.36)
97
99
[ ` loongarch64-unknown-linux-musl ` ] ( platform-support/loongarch-linux.md ) | LoongArch64 Linux, LP64D ABI (kernel 5.19, musl 1.2.5)
98
- [ ` i686-pc-windows-gnu ` ] ( platform-support/windows-gnu.md ) | 32-bit MinGW (Windows 10+, Windows Server 2016+, Pentium 4) [ ^ x86_32-floats-return-ABI ]
100
+ [ ` i686-pc-windows-gnu ` ] ( platform-support/windows-gnu.md ) | 32-bit MinGW (Windows 10+, Windows Server 2016+, Pentium 4) [ ^ x86_32-floats-return-ABI ] [ ^ win32-msvc-alignment ]
99
101
` powerpc-unknown-linux-gnu ` | PowerPC Linux (kernel 3.2, glibc 2.17)
100
102
` powerpc64-unknown-linux-gnu ` | PPC64 Linux (kernel 3.2, glibc 2.17)
101
103
[ ` powerpc64le-unknown-linux-gnu ` ] ( platform-support/powerpc64le-unknown-linux-gnu.md ) | PPC64LE Linux (kernel 3.10, glibc 2.17)
@@ -169,7 +171,7 @@ target | std | notes
169
171
[ ` i686-pc-windows-gnullvm ` ] ( platform-support/windows-gnullvm.md ) | ✓ | 32-bit x86 MinGW (Windows 10+, Pentium 4), LLVM ABI [ ^ x86_32-floats-return-ABI ]
170
172
[ ` i686-unknown-freebsd ` ] ( platform-support/freebsd.md ) | ✓ | 32-bit x86 FreeBSD (Pentium 4) [ ^ x86_32-floats-return-ABI ]
171
173
` i686-unknown-linux-musl ` | ✓ | 32-bit Linux with musl 1.2.3 (Pentium 4) [ ^ x86_32-floats-return-ABI ]
172
- [ ` i686-unknown-uefi ` ] ( platform-support/unknown-uefi.md ) | ? | 32-bit UEFI (Pentium 4, softfloat)
174
+ [ ` i686-unknown-uefi ` ] ( platform-support/unknown-uefi.md ) | ? | 32-bit UEFI (Pentium 4, softfloat) [ ^ win32-msvc-alignment ]
173
175
[ ` loongarch64-unknown-none ` ] ( platform-support/loongarch-none.md ) | * | LoongArch64 Bare-metal (LP64D ABI)
174
176
[ ` loongarch64-unknown-none-softfloat ` ] ( platform-support/loongarch-none.md ) | * | LoongArch64 Bare-metal (LP64S ABI)
175
177
[ ` nvptx64-nvidia-cuda ` ] ( platform-support/nvptx64-nvidia-cuda.md ) | * | --emit=asm generates PTX code that [ runs on NVIDIA GPUs]
@@ -317,9 +319,9 @@ target | std | host | notes
317
319
[ ` i686-unknown-netbsd ` ] ( platform-support/netbsd.md ) | ✓ | ✓ | NetBSD/i386 (Pentium 4) [ ^ x86_32-floats-return-ABI ]
318
320
[ ` i686-unknown-openbsd ` ] ( platform-support/openbsd.md ) | ✓ | ✓ | 32-bit OpenBSD (Pentium 4) [ ^ x86_32-floats-return-ABI ]
319
321
` i686-uwp-windows-gnu ` | ✓ | | [ ^ x86_32-floats-return-ABI ]
320
- [ ` i686-uwp-windows-msvc ` ] ( platform-support/uwp-windows-msvc.md ) | ✓ | | [ ^ x86_32-floats-return-ABI ]
322
+ [ ` i686-uwp-windows-msvc ` ] ( platform-support/uwp-windows-msvc.md ) | ✓ | | [ ^ x86_32-floats-return-ABI ] [ ^ win32-msvc-alignment ]
321
323
[ ` i686-win7-windows-gnu ` ] ( platform-support/win7-windows-gnu.md ) | ✓ | | 32-bit Windows 7 support [ ^ x86_32-floats-return-ABI ]
322
- [ ` i686-win7-windows-msvc ` ] ( platform-support/win7-windows-msvc.md ) | ✓ | | 32-bit Windows 7 support [ ^ x86_32-floats-return-ABI ]
324
+ [ ` i686-win7-windows-msvc ` ] ( platform-support/win7-windows-msvc.md ) | ✓ | | 32-bit Windows 7 support [ ^ x86_32-floats-return-ABI ] [ ^ win32-msvc-alignment ]
323
325
[ ` i686-wrs-vxworks ` ] ( platform-support/vxworks.md ) | ✓ | | [ ^ x86_32-floats-return-ABI ]
324
326
[ ` loongarch64-unknown-linux-ohos ` ] ( platform-support/openharmony.md ) | ✓ | | LoongArch64 OpenHarmony
325
327
[ ` m68k-unknown-linux-gnu ` ] ( platform-support/m68k-unknown-linux-gnu.md ) | ? | | Motorola 680x0 Linux
0 commit comments