about summary refs log tree commit diff
diff options
context:
space:
mode:
authorTrevor Gross <t.gross35@gmail.com>2024-12-23 02:07:31 -0500
committerGitHub <noreply@github.com>2024-12-23 02:07:31 -0500
commit3acf9c93a46f7d2e602ec44a7c296f3539ac55be (patch)
tree9a9117643a4522bc5d415081bfe9f0539ad4dc54
parent0eca4dd3205a01dba4bd7b7c140ec370aff03440 (diff)
parent12b54b1e73695801713f4854d79f06f9950667fa (diff)
downloadrust-3acf9c93a46f7d2e602ec44a7c296f3539ac55be.tar.gz
rust-3acf9c93a46f7d2e602ec44a7c296f3539ac55be.zip
Rollup merge of #129220 - asomers:target-maintainer, r=tgross35
Add platform docs for FreeBSD.
-rw-r--r--src/doc/rustc/src/SUMMARY.md1
-rw-r--r--src/doc/rustc/src/platform-support.md16
-rw-r--r--src/doc/rustc/src/platform-support/freebsd.md56
3 files changed, 65 insertions, 8 deletions
diff --git a/src/doc/rustc/src/SUMMARY.md b/src/doc/rustc/src/SUMMARY.md
index 1e9f5a33fc7..9743b3ba442 100644
--- a/src/doc/rustc/src/SUMMARY.md
+++ b/src/doc/rustc/src/SUMMARY.md
@@ -81,6 +81,7 @@
     - [\*-nto-qnx-\*](platform-support/nto-qnx.md)
     - [*-unikraft-linux-musl](platform-support/unikraft-linux-musl.md)
     - [*-unknown-hermit](platform-support/hermit.md)
+    - [*-unknown-freebsd](platform-support/freebsd.md)
     - [\*-unknown-netbsd\*](platform-support/netbsd.md)
     - [*-unknown-openbsd](platform-support/openbsd.md)
     - [*-unknown-redox](platform-support/redox.md)
diff --git a/src/doc/rustc/src/platform-support.md b/src/doc/rustc/src/platform-support.md
index db6612f9fff..00ab61051c3 100644
--- a/src/doc/rustc/src/platform-support.md
+++ b/src/doc/rustc/src/platform-support.md
@@ -101,7 +101,7 @@ target | notes
 [`riscv64gc-unknown-linux-gnu`](platform-support/riscv64gc-unknown-linux-gnu.md) | RISC-V Linux (kernel 4.20, glibc 2.29)
 [`riscv64gc-unknown-linux-musl`](platform-support/riscv64gc-unknown-linux-musl.md) | RISC-V Linux (kernel 4.20, musl 1.2.3)
 [`s390x-unknown-linux-gnu`](platform-support/s390x-unknown-linux-gnu.md) | S390x Linux (kernel 3.2, glibc 2.17)
-`x86_64-unknown-freebsd` | 64-bit FreeBSD
+[`x86_64-unknown-freebsd`](platform-support/freebsd.md) | 64-bit amd64 FreeBSD
 `x86_64-unknown-illumos` | illumos
 `x86_64-unknown-linux-musl` | 64-bit Linux with musl 1.2.3
 [`x86_64-unknown-netbsd`](platform-support/netbsd.md) | NetBSD/amd64
@@ -167,7 +167,7 @@ target | std | notes
 `i586-unknown-linux-musl` | ✓ | 32-bit Linux w/o SSE, musl 1.2.3 [^x86_32-floats-x87]
 [`i686-linux-android`](platform-support/android.md) | ✓ | 32-bit x86 Android [^x86_32-floats-return-ABI]
 [`i686-pc-windows-gnullvm`](platform-support/pc-windows-gnullvm.md) | ✓ | 32-bit x86 MinGW (Windows 10+), LLVM ABI [^x86_32-floats-return-ABI]
-`i686-unknown-freebsd` | ✓ | 32-bit FreeBSD [^x86_32-floats-return-ABI]
+[`i686-unknown-freebsd`](platform-support/freebsd.md) | ✓ | 32-bit x86 FreeBSD [^x86_32-floats-return-ABI]
 `i686-unknown-linux-musl` | ✓ | 32-bit Linux with musl 1.2.3 [^x86_32-floats-return-ABI]
 [`i686-unknown-uefi`](platform-support/unknown-uefi.md) | ? | 32-bit UEFI
 [`loongarch64-unknown-none`](platform-support/loongarch-none.md) | * | LoongArch64 Bare-metal (LP64D ABI)
@@ -259,7 +259,7 @@ target | std | host | notes
 [`aarch64-unknown-teeos`](platform-support/aarch64-unknown-teeos.md) | ? |  | ARM64 TEEOS |
 [`aarch64-unknown-nto-qnx700`](platform-support/nto-qnx.md) | ? |  | ARM64 QNX Neutrino 7.0 RTOS |
 [`aarch64-unknown-nto-qnx710`](platform-support/nto-qnx.md) | ✓ |  | ARM64 QNX Neutrino 7.1 RTOS |
-`aarch64-unknown-freebsd` | ✓ | ✓ | ARM64 FreeBSD
+[`aarch64-unknown-freebsd`](platform-support/freebsd.md) | ✓ | ✓ | ARM64 FreeBSD
 [`aarch64-unknown-hermit`](platform-support/hermit.md) | ✓ |  | ARM64 Hermit
 `aarch64-unknown-illumos` | ✓ | ✓ | ARM64 illumos
 `aarch64-unknown-linux-gnu_ilp32` | ✓ | ✓ | ARM64 Linux (ILP32 ABI)
@@ -278,14 +278,14 @@ target | std | host | notes
 `armv4t-unknown-linux-gnueabi` | ? |  | Armv4T Linux
 [`armv5te-none-eabi`](platform-support/armv5te-none-eabi.md) | * |  | Bare Armv5TE
 `armv5te-unknown-linux-uclibceabi` | ? |  | Armv5TE Linux with uClibc
-`armv6-unknown-freebsd` | ✓ | ✓ | Armv6 FreeBSD
+[`armv6-unknown-freebsd`](platform-support/freebsd.md) | ✓ | ✓ | Armv6 FreeBSD
 [`armv6-unknown-netbsd-eabihf`](platform-support/netbsd.md) | ✓ | ✓ | Armv6 NetBSD w/hard-float
 [`armv6k-nintendo-3ds`](platform-support/armv6k-nintendo-3ds.md) | ? |  | Armv6k Nintendo 3DS, Horizon (Requires devkitARM toolchain)
 [`armv7-rtems-eabihf`](platform-support/armv7-rtems-eabihf.md) | ? |  | RTEMS OS for ARM BSPs
 [`armv7-sony-vita-newlibeabihf`](platform-support/armv7-sony-vita-newlibeabihf.md) | ✓ |  | Armv7-A Cortex-A9 Sony PlayStation Vita (requires VITASDK toolchain)
 [`armv7-unknown-linux-uclibceabi`](platform-support/armv7-unknown-linux-uclibceabi.md) | ✓ | ✓ | Armv7-A Linux with uClibc, softfloat
 [`armv7-unknown-linux-uclibceabihf`](platform-support/armv7-unknown-linux-uclibceabihf.md) | ✓ | ? | Armv7-A Linux with uClibc, hardfloat
-`armv7-unknown-freebsd` | ✓ | ✓ | Armv7-A FreeBSD
+[`armv7-unknown-freebsd`](platform-support/freebsd.md) | ✓ | ✓ | Armv7-A FreeBSD
 [`armv7-unknown-netbsd-eabihf`](platform-support/netbsd.md) | ✓ | ✓ | Armv7-A NetBSD w/hard-float
 [`armv7-unknown-trusty`](platform-support/trusty.md) | ? |  |
 [`armv7-wrs-vxworks-eabihf`](platform-support/vxworks.md) | ✓ |  | Armv7-A for VxWorks
@@ -344,9 +344,9 @@ target | std | host | notes
 [`powerpc-unknown-openbsd`](platform-support/powerpc-unknown-openbsd.md) | * |  |
 [`powerpc-wrs-vxworks-spe`](platform-support/vxworks.md) | ✓ |  |
 [`powerpc-wrs-vxworks`](platform-support/vxworks.md) | ✓ |  |
-`powerpc64-unknown-freebsd` | ✓ | ✓ | PPC64 FreeBSD (ELFv2)
-`powerpc64le-unknown-freebsd` | ✓ | ✓ | PPC64LE FreeBSD
-`powerpc-unknown-freebsd` | ? |   | PowerPC FreeBSD
+[`powerpc64-unknown-freebsd`](platform-support/freebsd.md) | ✓ | ✓ | PPC64 FreeBSD (ELFv2)
+[`powerpc64le-unknown-freebsd`](platform-support/freebsd.md) | ✓ | ✓ | PPC64LE FreeBSD
+[`powerpc-unknown-freebsd`](platform-support/freebsd.md) | ? |   | PowerPC FreeBSD
 `powerpc64-unknown-linux-musl` | ? |  | 64-bit PowerPC Linux with musl 1.2.3
 [`powerpc64-wrs-vxworks`](platform-support/vxworks.md) | ✓ |  |
 [`powerpc64-unknown-openbsd`](platform-support/openbsd.md) | ✓ | ✓ | OpenBSD/powerpc64
diff --git a/src/doc/rustc/src/platform-support/freebsd.md b/src/doc/rustc/src/platform-support/freebsd.md
new file mode 100644
index 00000000000..9d34d364920
--- /dev/null
+++ b/src/doc/rustc/src/platform-support/freebsd.md
@@ -0,0 +1,56 @@
+# \*-unknown-freebsd
+
+**Tier: 2/3**
+
+[FreeBSD] multi-platform 4.4BSD-based UNIX-like operating system.
+
+## Target maintainers
+
+- Alan Somers `asomers@FreeBSD.org`, https://github.com/asomers
+- Mikael Urankar `mikael@FreeBSD.org`, https://github.com/MikaelUrankar
+
+## Requirements
+
+The `x86_64-unknown-freebsd` target is Tier 2 with host tools.
+`i686-unknown-freebsd` is Tier 2 without host tools.  Other targets are Tier 3.
+See [platform-support.md](../platform-support.md) for the full list.
+
+We commit that rustc will run on all currently supported releases of
+[FreeBSD][supported-releases] .  EoL releases may be supported for a time, too.
+The same guarantees apply for the standard library and the libc crate.
+
+Specific release support matrix, as of Rust 1.82.0:
+
+| FreeBSD Release | rustc    | std      | libc    |
+| --------------- | -------- | -------- | ------- |
+| 10              | < 1.78.0 | ?        | ?       |
+| 11              | < 1.78.0 | < 1.78.0 | current |
+| 12+             | current  | current  | current |
+
+`extern "C"` uses the official calling convention of the respective
+architectures.
+
+FreeBSD OS binaries use the ELF file format.
+
+## Building Rust programs
+
+The `x86_64-unknown-freebsd` and `i686-unknown-freebsd` artifacts are
+distributed by the rust project and may be installed with rustup.  Other
+targets are built by the ports system and may be installed with
+[pkg(7)][pkg] or [ports(7)][ports].
+
+By default the `i686-unknown-freebsd` target uses SSE2 instructions.  To build
+code that does not require SSE2, build lang/rust from [ports][ports] and
+disable the `SSE2` option at build time.  That will produce non-compliant
+behavior.  See [issue #114479][x86-32-float-issue].
+
+## Testing
+
+The Rust test suite can be run natively. It can also be run from the FreeBSD
+ports tree with the `make test` command from within the lang/rust directory.
+
+[FreeBSD]: https://www.FreeBSD.org/
+[supported-releases]: https://www.freebsd.org/security/#sup
+[ports]: https://man.freebsd.org/cgi/man.cgi?query=ports
+[pkg]: https://man.freebsd.org/cgi/man.cgi?query=pkg
+[x86-32-float-issue]: https://github.com/rust-lang/rust/issues/114479