@@ -34,7 +34,7 @@ target | notes
3434-------|-------
3535[ ` aarch64-apple-darwin ` ] ( platform-support/apple-darwin.md ) | ARM64 macOS (11.0+, Big Sur+)
3636` 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 ]
3838` i686-unknown-linux-gnu ` | 32-bit Linux (kernel 3.2+, glibc 2.17+, Pentium 4) [ ^ x86_32-floats-return-ABI ]
3939[ ` x86_64-apple-darwin ` ] ( platform-support/apple-darwin.md ) | 64-bit macOS (10.12+, Sierra+)
4040[ ` x86_64-pc-windows-gnu ` ] ( platform-support/windows-gnu.md ) | 64-bit MinGW (Windows 10+, Windows Server 2016+)
@@ -43,6 +43,8 @@ target | notes
4343
4444[ ^ 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 ] .
4545
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+
4648[ 77071 ] : https://github.com/rust-lang/rust/issues/77071
4749[ x86-32-float-return-issue ] : https://github.com/rust-lang/rust/issues/115567
4850
@@ -95,7 +97,7 @@ target | notes
9597[ ` armv7-unknown-linux-ohos ` ] ( platform-support/openharmony.md ) | Armv7-A OpenHarmony
9698[ ` loongarch64-unknown-linux-gnu ` ] ( platform-support/loongarch-linux.md ) | LoongArch64 Linux, LP64D ABI (kernel 5.19, glibc 2.36)
9799[ ` 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 ]
99101` powerpc-unknown-linux-gnu ` | PowerPC Linux (kernel 3.2, glibc 2.17)
100102` powerpc64-unknown-linux-gnu ` | PPC64 Linux (kernel 3.2, glibc 2.17)
101103[ ` 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
169171[ ` i686-pc-windows-gnullvm ` ] ( platform-support/windows-gnullvm.md ) | ✓ | 32-bit x86 MinGW (Windows 10+, Pentium 4), LLVM ABI [ ^ x86_32-floats-return-ABI ]
170172[ ` i686-unknown-freebsd ` ] ( platform-support/freebsd.md ) | ✓ | 32-bit x86 FreeBSD (Pentium 4) [ ^ x86_32-floats-return-ABI ]
171173` 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 ]
173175[ ` loongarch64-unknown-none ` ] ( platform-support/loongarch-none.md ) | * | LoongArch64 Bare-metal (LP64D ABI)
174176[ ` loongarch64-unknown-none-softfloat ` ] ( platform-support/loongarch-none.md ) | * | LoongArch64 Bare-metal (LP64S ABI)
175177[ ` 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
317319[ ` i686-unknown-netbsd ` ] ( platform-support/netbsd.md ) | ✓ | ✓ | NetBSD/i386 (Pentium 4) [ ^ x86_32-floats-return-ABI ]
318320[ ` i686-unknown-openbsd ` ] ( platform-support/openbsd.md ) | ✓ | ✓ | 32-bit OpenBSD (Pentium 4) [ ^ x86_32-floats-return-ABI ]
319321` 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 ]
321323[ ` 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 ]
323325[ ` i686-wrs-vxworks ` ] ( platform-support/vxworks.md ) | ✓ | | [ ^ x86_32-floats-return-ABI ]
324326[ ` loongarch64-unknown-linux-ohos ` ] ( platform-support/openharmony.md ) | ✓ | | LoongArch64 OpenHarmony
325327[ ` m68k-unknown-linux-gnu ` ] ( platform-support/m68k-unknown-linux-gnu.md ) | ? | | Motorola 680x0 Linux
0 commit comments