Skip to content

Commit 12b54b1

Browse files
committed
Add platform docs for FreeBSD.
1 parent 303e8bd commit 12b54b1

File tree

3 files changed

+65
-8
lines changed

3 files changed

+65
-8
lines changed

src/doc/rustc/src/SUMMARY.md

+1
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@
8181
- [\*-nto-qnx-\*](platform-support/nto-qnx.md)
8282
- [*-unikraft-linux-musl](platform-support/unikraft-linux-musl.md)
8383
- [*-unknown-hermit](platform-support/hermit.md)
84+
- [*-unknown-freebsd](platform-support/freebsd.md)
8485
- [\*-unknown-netbsd\*](platform-support/netbsd.md)
8586
- [*-unknown-openbsd](platform-support/openbsd.md)
8687
- [*-unknown-redox](platform-support/redox.md)

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

+8-8
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ target | notes
101101
[`riscv64gc-unknown-linux-gnu`](platform-support/riscv64gc-unknown-linux-gnu.md) | RISC-V Linux (kernel 4.20, glibc 2.29)
102102
[`riscv64gc-unknown-linux-musl`](platform-support/riscv64gc-unknown-linux-musl.md) | RISC-V Linux (kernel 4.20, musl 1.2.3)
103103
[`s390x-unknown-linux-gnu`](platform-support/s390x-unknown-linux-gnu.md) | S390x Linux (kernel 3.2, glibc 2.17)
104-
`x86_64-unknown-freebsd` | 64-bit FreeBSD
104+
[`x86_64-unknown-freebsd`](platform-support/freebsd.md) | 64-bit amd64 FreeBSD
105105
`x86_64-unknown-illumos` | illumos
106106
`x86_64-unknown-linux-musl` | 64-bit Linux with musl 1.2.3
107107
[`x86_64-unknown-netbsd`](platform-support/netbsd.md) | NetBSD/amd64
@@ -167,7 +167,7 @@ target | std | notes
167167
`i586-unknown-linux-musl` | ✓ | 32-bit Linux w/o SSE, musl 1.2.3 [^x86_32-floats-x87]
168168
[`i686-linux-android`](platform-support/android.md) | ✓ | 32-bit x86 Android [^x86_32-floats-return-ABI]
169169
[`i686-pc-windows-gnullvm`](platform-support/pc-windows-gnullvm.md) | ✓ | 32-bit x86 MinGW (Windows 10+), LLVM ABI [^x86_32-floats-return-ABI]
170-
`i686-unknown-freebsd` | ✓ | 32-bit FreeBSD [^x86_32-floats-return-ABI]
170+
[`i686-unknown-freebsd`](platform-support/freebsd.md) | ✓ | 32-bit x86 FreeBSD [^x86_32-floats-return-ABI]
171171
`i686-unknown-linux-musl` | ✓ | 32-bit Linux with musl 1.2.3 [^x86_32-floats-return-ABI]
172172
[`i686-unknown-uefi`](platform-support/unknown-uefi.md) | ? | 32-bit UEFI
173173
[`loongarch64-unknown-none`](platform-support/loongarch-none.md) | * | LoongArch64 Bare-metal (LP64D ABI)
@@ -259,7 +259,7 @@ target | std | host | notes
259259
[`aarch64-unknown-teeos`](platform-support/aarch64-unknown-teeos.md) | ? | | ARM64 TEEOS |
260260
[`aarch64-unknown-nto-qnx700`](platform-support/nto-qnx.md) | ? | | ARM64 QNX Neutrino 7.0 RTOS |
261261
[`aarch64-unknown-nto-qnx710`](platform-support/nto-qnx.md) | ✓ | | ARM64 QNX Neutrino 7.1 RTOS |
262-
`aarch64-unknown-freebsd` | ✓ | ✓ | ARM64 FreeBSD
262+
[`aarch64-unknown-freebsd`](platform-support/freebsd.md) | ✓ | ✓ | ARM64 FreeBSD
263263
[`aarch64-unknown-hermit`](platform-support/hermit.md) | ✓ | | ARM64 Hermit
264264
`aarch64-unknown-illumos` | ✓ | ✓ | ARM64 illumos
265265
`aarch64-unknown-linux-gnu_ilp32` | ✓ | ✓ | ARM64 Linux (ILP32 ABI)
@@ -278,14 +278,14 @@ target | std | host | notes
278278
`armv4t-unknown-linux-gnueabi` | ? | | Armv4T Linux
279279
[`armv5te-none-eabi`](platform-support/armv5te-none-eabi.md) | * | | Bare Armv5TE
280280
`armv5te-unknown-linux-uclibceabi` | ? | | Armv5TE Linux with uClibc
281-
`armv6-unknown-freebsd` | ✓ | ✓ | Armv6 FreeBSD
281+
[`armv6-unknown-freebsd`](platform-support/freebsd.md) | ✓ | ✓ | Armv6 FreeBSD
282282
[`armv6-unknown-netbsd-eabihf`](platform-support/netbsd.md) | ✓ | ✓ | Armv6 NetBSD w/hard-float
283283
[`armv6k-nintendo-3ds`](platform-support/armv6k-nintendo-3ds.md) | ? | | Armv6k Nintendo 3DS, Horizon (Requires devkitARM toolchain)
284284
[`armv7-rtems-eabihf`](platform-support/armv7-rtems-eabihf.md) | ? | | RTEMS OS for ARM BSPs
285285
[`armv7-sony-vita-newlibeabihf`](platform-support/armv7-sony-vita-newlibeabihf.md) | ✓ | | Armv7-A Cortex-A9 Sony PlayStation Vita (requires VITASDK toolchain)
286286
[`armv7-unknown-linux-uclibceabi`](platform-support/armv7-unknown-linux-uclibceabi.md) | ✓ | ✓ | Armv7-A Linux with uClibc, softfloat
287287
[`armv7-unknown-linux-uclibceabihf`](platform-support/armv7-unknown-linux-uclibceabihf.md) | ✓ | ? | Armv7-A Linux with uClibc, hardfloat
288-
`armv7-unknown-freebsd` | ✓ | ✓ | Armv7-A FreeBSD
288+
[`armv7-unknown-freebsd`](platform-support/freebsd.md) | ✓ | ✓ | Armv7-A FreeBSD
289289
[`armv7-unknown-netbsd-eabihf`](platform-support/netbsd.md) | ✓ | ✓ | Armv7-A NetBSD w/hard-float
290290
[`armv7-unknown-trusty`](platform-support/trusty.md) | ? | |
291291
[`armv7-wrs-vxworks-eabihf`](platform-support/vxworks.md) | ✓ | | Armv7-A for VxWorks
@@ -344,9 +344,9 @@ target | std | host | notes
344344
[`powerpc-unknown-openbsd`](platform-support/powerpc-unknown-openbsd.md) | * | |
345345
[`powerpc-wrs-vxworks-spe`](platform-support/vxworks.md) | ✓ | |
346346
[`powerpc-wrs-vxworks`](platform-support/vxworks.md) | ✓ | |
347-
`powerpc64-unknown-freebsd` | ✓ | ✓ | PPC64 FreeBSD (ELFv2)
348-
`powerpc64le-unknown-freebsd` | ✓ | ✓ | PPC64LE FreeBSD
349-
`powerpc-unknown-freebsd` | ? | | PowerPC FreeBSD
347+
[`powerpc64-unknown-freebsd`](platform-support/freebsd.md) | ✓ | ✓ | PPC64 FreeBSD (ELFv2)
348+
[`powerpc64le-unknown-freebsd`](platform-support/freebsd.md) | ✓ | ✓ | PPC64LE FreeBSD
349+
[`powerpc-unknown-freebsd`](platform-support/freebsd.md) | ? | | PowerPC FreeBSD
350350
`powerpc64-unknown-linux-musl` | ? | | 64-bit PowerPC Linux with musl 1.2.3
351351
[`powerpc64-wrs-vxworks`](platform-support/vxworks.md) | ✓ | |
352352
[`powerpc64-unknown-openbsd`](platform-support/openbsd.md) | ✓ | ✓ | OpenBSD/powerpc64
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
# \*-unknown-freebsd
2+
3+
**Tier: 2/3**
4+
5+
[FreeBSD] multi-platform 4.4BSD-based UNIX-like operating system.
6+
7+
## Target maintainers
8+
9+
- Alan Somers `asomers@FreeBSD.org`, https://github.com/asomers
10+
- Mikael Urankar `mikael@FreeBSD.org`, https://github.com/MikaelUrankar
11+
12+
## Requirements
13+
14+
The `x86_64-unknown-freebsd` target is Tier 2 with host tools.
15+
`i686-unknown-freebsd` is Tier 2 without host tools. Other targets are Tier 3.
16+
See [platform-support.md](../platform-support.md) for the full list.
17+
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 |
29+
30+
`extern "C"` uses the official calling convention of the respective
31+
architectures.
32+
33+
FreeBSD OS binaries use the ELF file format.
34+
35+
## Building Rust programs
36+
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
44+
disable the `SSE2` option at build time. That will produce non-compliant
45+
behavior. See [issue #114479][x86-32-float-issue].
46+
47+
## Testing
48+
49+
The Rust test suite can be run natively. It can also be run from the FreeBSD
50+
ports tree 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)