Skip to content

Commit 079fe19

Browse files
committed
Add more detail regarding i686 and FreeBSD version requirements
1 parent f73c7be commit 079fe19

File tree

2 files changed

+30
-13
lines changed

2 files changed

+30
-13
lines changed

src/doc/rustc/src/platform-support.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ target | notes
100100
[`riscv64gc-unknown-linux-gnu`](platform-support/riscv64gc-unknown-linux-gnu.md) | RISC-V Linux (kernel 4.20, glibc 2.29)
101101
[`riscv64gc-unknown-linux-musl`](platform-support/riscv64gc-unknown-linux-musl.md) | RISC-V Linux (kernel 4.20, musl 1.2.3)
102102
`s390x-unknown-linux-gnu` | S390x Linux (kernel 3.2, glibc 2.17)
103-
[`x86_64-unknown-freebsd`](platform-support/freebsd.md) | 64-bit FreeBSD
103+
[`x86_64-unknown-freebsd`](platform-support/freebsd.md) | 64-bit amd64 FreeBSD
104104
`x86_64-unknown-illumos` | illumos
105105
`x86_64-unknown-linux-musl` | 64-bit Linux with musl 1.2.3
106106
[`x86_64-unknown-netbsd`](platform-support/netbsd.md) | NetBSD/amd64
@@ -166,7 +166,7 @@ target | std | notes
166166
`i586-unknown-linux-musl` | ✓ | 32-bit Linux w/o SSE, musl 1.2.3 [^x86_32-floats-x87]
167167
[`i686-linux-android`](platform-support/android.md) | ✓ | 32-bit x86 Android [^x86_32-floats-return-ABI]
168168
[`i686-pc-windows-gnullvm`](platform-support/pc-windows-gnullvm.md) | ✓ | 32-bit x86 MinGW (Windows 10+), LLVM ABI [^x86_32-floats-return-ABI]
169-
[`i686-unknown-freebsd`](platform-support/freebsd.md) | ✓ | 32-bit FreeBSD [^x86_32-floats-return-ABI]
169+
[`i686-unknown-freebsd`](platform-support/freebsd.md) | ✓ | 32-bit x86 FreeBSD [^x86_32-floats-return-ABI]
170170
`i686-unknown-linux-musl` | ✓ | 32-bit Linux with musl 1.2.3 [^x86_32-floats-return-ABI]
171171
[`i686-unknown-uefi`](platform-support/unknown-uefi.md) | ? | 32-bit UEFI
172172
[`loongarch64-unknown-none`](platform-support/loongarch-none.md) | * | LoongArch64 Bare-metal (LP64D ABI)

src/doc/rustc/src/platform-support/freebsd.md

+28-11
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@
44

55
[FreeBSD] multi-platform 4.4BSD-based UNIX-like operating system.
66

7-
[FreeBSD]: https://www.FreeBSD.org/
8-
97
## Target maintainers
108

119
- Alan Somers `asomers@FreeBSD.org`, https://github.com/asomers
@@ -17,23 +15,42 @@ The `x86_64-unknown-freebsd` target is Tier 2 with host tools.
1715
`i686-unknown-freebsd` is Tier 2 without host tools. Other targets are Tier 3.
1816
See [platform-support.md](../platform-support.md) for the full list.
1917

20-
On all architectures, rustc requires FreeBSD version 12 or later to run and
21-
produces binaries that require FreeBSD version 12, too. Prior to Rust 1.78.0,
22-
rustc would run on FreeBSD 10 or later, but build binaries that required
23-
FreeBSD 11. libc requires FreeBSD 11 or later.
18+
We commit that rustc will run on all currently supported releases of
19+
FreeBSD[supported-releases] . EoL releases may be supported for a time, too.
20+
The same guarantees apply for the standard library and the libc crate.
21+
22+
Specific release support matrix, as of Rust 1.82.0:
23+
24+
| FreeBSD Release | rustc | std | libc |
25+
| --------------- | -------- | -------- | ------- |
26+
| 10 | < 1.78.0 | ? | ? |
27+
| 11 | < 1.78.0 | < 1.78.0 | current |
28+
| 12+ | current | current | current |
2429

25-
`extern "C"` uses the official calling convention of the respective architectures.
30+
`extern "C"` uses the official calling convention of the respective
31+
architectures.
2632

2733
FreeBSD OS binaries use the ELF file format.
2834

2935
## Building Rust programs
3036

31-
The `x86_64-unknown-freebsd` artifacts are distributed by the rust project and
32-
may be installed with rustup. Other targets are built by the ports system and
33-
may be installed with [pkg(7)](https://man.freebsd.org/cgi/man.cgi?query=pkg)
34-
or [ports(7)](https://man.freebsd.org/cgi/man.cgi?query=ports).
37+
The `x86_64-unknown-freebsd` and `i686-unknown-freebsd` artifacts are
38+
distributed by the rust project and may be installed with rustup. Other
39+
targets are built by the ports system and may be installed with
40+
[pkg(7)][pkg] or [ports(7)][ports].
41+
42+
By default the `i686-unknown-freebsd` target uses SSE2 instructions. To build
43+
code that does not require SSE2, build lang/rust from ports[ports] and disable the
44+
`SSE2` option at build time. That will produce non-compliant behavior. See
45+
[issue #114479][x86-32-float-issue].
3546

3647
## Testing
3748

3849
The Rust test suite can be run natively. It can also be run from the ports tree
3950
with the `make test` command from within the lang/rust directory.
51+
52+
[FreeBSD]: https://www.FreeBSD.org/
53+
[supported-releases]: https://www.freebsd.org/security/#sup
54+
[ports]: https://man.freebsd.org/cgi/man.cgi?query=ports
55+
[pkg]: https://man.freebsd.org/cgi/man.cgi?query=pkg
56+
[x86-32-float-issue]: https://github.com/rust-lang/rust/issues/114479

0 commit comments

Comments
 (0)