# Target Tier Review
**Relevant issues:**
- https://github.com/rust-lang/rust-forge/issues/255
- https://github.com/rust-lang/rust/issues/113739
**Recent related changes/proposals:**
- https://github.com/rust-lang/rust/pull/115238 (MIPS to tier 3)
- https://rust-lang.zulipchat.com/#narrow/stream/131828-t-compiler/topic/Demote.20target.20.60sparc64-unknown-linux-gnu.60.20Tier.202.20-.3E.203/near/388124975 (suggestion to demote sparc)
- https://github.com/rust-lang/compiler-team/issues/668 (asmjs-unknown-emscripten removal)
- https://github.com/rust-lang/compiler-team/issues/651 (windows support changes)
- ..and some MCPs for new targets
### To-do
**In the first pass over targets:**
- [x] Create asm test for each target
- [x] Create empty platform support page where missing
- [x] Find relevant PRs
- [x] Note if index page has missing details
**In the second pass over targets:**
- [ ] Complete as much of the platform support page as possible.
- [ ] Fix missing index page details
- [ ] Add to a draft announcement a request for maintainers.
- [ ] Add to a draft issue for missing target details.
**In the final pass (after meeting/announcements):**
- [ ] Each target has a complete platform support document with target maintainers.
- [ ] Each target satisfies all of the target tier policy criteria.
- [ ] Each target has a `tests/assembly/target/<target>.rs` test which emits assembly (see template below).
**Also:**
- [ ] Check that all target groups are defined in teams repo
- [ ] Check that all platform support documents follow the template
- [x] Add a tidy check for target assembly tests and completed platform support document
- [ ] Instead of using a folder full of markdown documents, does it make sense to use a more structured representation for some of this that can be machine-checked and can generate the documentation? In-tree w/ the target definitions?
### Assembly test
This test is very basic, but it should be sufficient to demonstrate object code can be produced, while not relying on std/core.
```rust=
// assembly-output: emit-asm
// compile-flags: --target <target>
// compile-flags: <something else>
// needs-llvm-components: <something>
// only-<something>
#![feature(no_core, lang_items)]
#![no_std]
#![no_core]
#![crate_type = "lib"]
#[lang = "sized"]
trait Sized { }
pub fn test() -> u8 {
42
}
```
### Draft PR Description
```plaintext!
Fixes #113739
This pull request makes a lot of changes to our targets (nothing that affects their behaviour!) to start making sure that they all comply with our [target tier policy](https://doc.rust-lang.org/rustc/target-tier-policy.html).
- I've done a quick check to see if each target complies with our policies which don't require documentation (no onerous licensing, etc).
- Each target now has a platform support page, most of these are newly added and just have "Missing!" on them a lot. **I need your help to populate these!**
- Each target now has an assembly test in `tests/assembly/targets`, it's the same simple code in each test, it just confirms that we can in fact produce something resembling assembly given the target triple.
- I've moved some things around in `compiler/rustc_target/spec`. Previously, we had the base targets (e.g. `windows_msvc_base`, which all the Windows MSVC targets would inherit from) in the same directory as the targets themselves. I've moved these to `compiler/rustc_target/spec/base`. This change makes the implementation of a new tidy lint easier.
- Similarly, in our platform support index, we had pages like `windows_msvc.md` which would be linked to by all of the Windows MSVC targets. I've changed it so that every target has its own page, and when multiple targets were linking to one page, then only one of those targets has the content of that previous page, and the others symlink to that target. Likewise, this change makes the implementation of a new tidy lint easier.
- I've introduced a tidy lint which checks that for every target file in `compiler/rustc_target/spec`, there exists a test with the same filename in `tests/assembly/target` and platform support documentation in `src/doc/rustc/src/platform-support/`. After all of my changes, this tidy lint isn't reporting any errors.
With respect to specific targets:
- I've technically added `i386-unknown-linux-gnu` and i486-unknown-linux-gnu`. Originally added in #80662, these targets never actually got added to the compiler, the target definitions were there but the compiler never knew about them.
- NetBSD’s platform support page had some targets listed that no longer existed or had different names (e.g. `amd64` to `x86_64` and `mipsel` removed) - I’ve updated it to reflect the targets which exist.
- `i686-pc-windows-msvc` and `x86_64-pc-windows-msvc` were listed as both tier 1 and tier 3, depending on the version of Windows, which seems like a misuse of the tier system, so I've removed them from tier 3. Support for different versions of the target can be documented in the platform support page.
- `powerpc-unknown-openbsd` wasn't listed in OpenBSD's platform support page like every other OpenBSD target - I've added it but maybe I shouldn't have.
### Tier 1 w/ Host Tools
- [ ] `aarch64-unknown-linux-gnu`
- Incomplete platform support document
- [ ] `i686-pc-windows-gnu`
- Incomplete platform support document
- [ ] `i686-pc-windows-msvc`
- Incomplete platform support document
- [ ] `i686-unknown-linux-gnu`
- Incomplete platform support document
- [ ] `x86_64-apple-darwin`
- Incomplete platform support document
- [ ] `x86_64-pc-windows-gnu`
- Incomplete platform support document
- [ ] `x86_64-pc-windows-msvc`
- Incomplete platform support document
- [ ] `x86_64-unknown-linux-gnu`
- Incomplete platform support document
### Tier 2 w/ Host Tools
- [ ] `aarch64-apple-darwin`
- Relevant PRs: [#74541](https://github.com/rust-lang/rust/pull/74541)
- Incomplete platform support document
- [ ] `aarch64-pc-windows-msvc`
- Incomplete platform support document
- [ ] `aarch64-unknown-linux-musl`
- Relevant PRs: [#44779](https://github.com/rust-lang/rust/pull/44779)
- Incomplete platform support document
- [ ] `arm-unknown-linux-gnueabi`
- Incomplete platform support document
- [ ] `arm-unknown-linux-gnueabihf`
- Incomplete platform support document
- [ ] `armv7-unknown-linux-gnueabihf`
- Relevant PRs: [#30948](https://github.com/rust-lang/rust/pull/30948)
- Incomplete platform support document
- [x] `loongarch64-unknown-linux-gnu`
- [ ] `mips-unknown-linux-gnu`
- Incomplete platform support document
- [ ] `mips64-unknown-linux-gnuabi64`
- Relevant PRs: [#36024](https://github.com/rust-lang/rust/pull/36024)
- Incomplete platform support document
- [ ] `mips64el-unknown-linux-gnuabi64`
- Relevant PRs: [#36024](https://github.com/rust-lang/rust/pull/36024)
- Incomplete platform support document
- [ ] `mipsel-unknown-linux-gnu`
- Incomplete platform support document
- [ ] `powerpc-unknown-linux-gnu`
- Relevant PRs: [#20980](https://github.com/rust-lang/rust/pull/20980)
- [ ] `powerpc64-unknown-linux-gnu`
- Relevant PRs: [#30776](https://github.com/rust-lang/rust/pull/30776)
- Incomplete platform support document
- [ ] `powerpc64le-unknown-linux-gnu`
- Relevant PRs: [#30776](https://github.com/rust-lang/rust/pull/30776)
- Incomplete platform support document
- [ ] `riscv64gc-unknown-linux-gnu`
- Relevant PRs: [#66661](https://github.com/rust-lang/rust/pull/66661)
- Incomplete platform support document
- [ ] `s390x-unknown-linux-gnu`
- Relevant PRs: [#36028](https://github.com/rust-lang/rust/pull/36028)
- Incomplete platform support document
- [ ] `x86_64-unknown-freebsd`
- Incomplete platform support document
- [ ] `x86_64-unknown-illumos`
- Relevant PRs: [#71145](https://github.com/rust-lang/rust/pull/71145)
- Incomplete platform support document
- [ ] `x86_64-unknown-linux-musl`
- Relevant PRs: [#24777](https://github.com/rust-lang/rust/pull/24777)
- Incomplete platform support document
- [ ] `x86_64-unknown-netbsd`
- NetBSD's platform support page had some targets listed that no longer existed or had different names (e.g. `amd64` -> `x86_64` and `mipsel` removed) - I've updated it to reflect the targets which exist
- This target otherwise complies, it's only marked as incomplete so the above gets a look.
### Tier 2
- [ ] `aarch64-apple-ios`
- Relevant PRs: [#20699](https://github.com/rust-lang/rust/pull/20699)
- Incomplete platform support document
- [x] `aarch64-apple-ios-sim`
- [x] `aarch64-fuchsia`
- [x] `aarch64-unknown-fuchsia`
- [x] `aarch64-linux-android`
- [ ] `aarch64-unknown-none-softfloat`
- Relevant PRs: [#64589](https://github.com/rust-lang/rust/pull/64589)
- Incomplete platform support document
- [ ] `aarch64-unknown-none`
- Relevant PRs: [#53233](https://github.com/rust-lang/rust/pull/53233)
- Incomplete platform support document
- [x] `aarch64-unknown-uefi`
- [x] `arm-linux-androideabi`
- [ ] `arm-unknown-linux-musleabi`
- Relevant PRs: [#35060](https://github.com/rust-lang/rust/pull/35060)
- Incomplete platform support document
- [ ] `arm-unknown-linux-musleabihf`
- Relevant PRs: [#35060](https://github.com/rust-lang/rust/pull/35060)
- Incomplete platform support document
- [ ] `armebv7r-none-eabi`
- Relevant PRs: [#53679](https://github.com/rust-lang/rust/pull/53679)
- Incomplete platform support document
- [ ] `armebv7r-none-eabihf`
- Relevant PRs: [#53679](https://github.com/rust-lang/rust/pull/53679)
- Incomplete platform support document
- [ ] `armv5te-unknown-linux-gnueabi`
- Relevant PRs: [#37615](https://github.com/rust-lang/rust/pull/37615)
- Incomplete platform support document
- [ ] `armv5te-unknown-linux-musleabi`
- Relevant PRs: [#50423](https://github.com/rust-lang/rust/pull/50423)
- Incomplete platform support document
- [x] `armv7-linux-androideabi`
- [ ] `armv7-unknown-linux-gnueabi`
- Relevant PRs: [#63107](https://github.com/rust-lang/rust/pull/63107)
- Incomplete platform support document
- [ ] `armv7-unknown-linux-musleabi`
- Relevant PRs: [#63107](https://github.com/rust-lang/rust/pull/63107)
- Incomplete platform support document
- [ ] `armv7-unknown-linux-musleabihf`
- Relevant PRs: [#35060](https://github.com/rust-lang/rust/pull/35060)
- Incomplete platform support document
- [ ] `armv7a-none-eabi`
- Relevant PRs: [#68253](https://github.com/rust-lang/rust/pull/68253)
- Incomplete platform support document
- [ ] `armv7r-none-eabi`
- Relevant PRs: [#53679](https://github.com/rust-lang/rust/pull/53679)
- Incomplete platform support document
- [ ] `armv7r-none-eabihf`
- Relevant PRs: [#53679](https://github.com/rust-lang/rust/pull/53679)
- Incomplete platform support document
- [ ] `asmjs-unknown-emscripten`
- See https://github.com/rust-lang/compiler-team/issues/668
- Was able to make a asm test for this which is unexpected, perhaps did something wrong?
- Incomplete platform support document
- [ ] `i586-pc-windows-msvc`
- Incomplete platform support document
- [ ] `i586-unknown-linux-gnu`
- Relevant PRs: [#31629](https://github.com/rust-lang/rust/pull/31629)
- Incomplete platform support document
- [ ] `i586-unknown-linux-musl`
- Relevant PRs: [#47282](https://github.com/rust-lang/rust/pull/47282)
- Incomplete platform support document
- [x] `i686-linux-android`
- [ ] `i686-unknown-freebsd`
- Incomplete platform support document
- [ ] `i686-unknown-linux-musl`
- Relevant PRs: [#30629](https://github.com/rust-lang/rust/pull/30629)
- Incomplete platform support document
- [x] `i686-unknown-uefi`
- [ ] `mips-unknown-linux-musl`
- Relevant PRs: [#31298](https://github.com/rust-lang/rust/pull/31298)
- Incomplete platform support document
- [ ] `mips64-unknown-linux-muslabi64`
- Relevant PRs: [#63165](https://github.com/rust-lang/rust/pull/63165)
- Incomplete platform support document
- [ ] `mips64el-unknown-linux-muslabi64`
- Relevant PRs: [#63165](https://github.com/rust-lang/rust/pull/63165)
- Incomplete platform support document
- [ ] `mipsel-unknown-linux-musl`
- Relevant PRs: [#31298](https://github.com/rust-lang/rust/pull/31298)
- Incomplete platform support document
- [x] `nvptx64-nvidia-cuda`
- [ ] `riscv32i-unknown-none-elf`
- Relevant PRs: [#62784](https://github.com/rust-lang/rust/pull/62784)
- Incomplete platform support document
- [ ] `riscv32imac-unknown-none-elf`
- Relevant PRs: [#52787](https://github.com/rust-lang/rust/pull/52787)
- Incomplete platform support document
- [ ] `riscv32imc-unknown-none-elf`
- Relevant PRs: [#53822](https://github.com/rust-lang/rust/pull/53822)
- Incomplete platform support document
- [ ] `riscv64gc-unknown-none-elf`
- Relevant PRs: [#58406](https://github.com/rust-lang/rust/pull/58406)
- Incomplete platform support document
- [ ] `riscv64imac-unknown-none-elf`
- Relevant PRs: [#58406](https://github.com/rust-lang/rust/pull/58406)
- Incomplete platform support document
- [ ] `sparc64-unknown-linux-gnu`
- Relevant PRs: [#38726](https://github.com/rust-lang/rust/pull/38726)
- Incomplete platform support document
- [ ] `sparcv9-sun-solaris`
- Relevant PRs: [#39903](https://github.com/rust-lang/rust/pull/39903)
- Incomplete platform support document
- [ ] `thumbv6m-none-eabi`
- Relevant PRs: [#36874](https://github.com/rust-lang/rust/pull/36874)
- Incomplete platform support document
- [ ] `thumbv7em-none-eabi`
- Relevant PRs: [#36874](https://github.com/rust-lang/rust/pull/36874)
- Incomplete platform support document
- [ ] `thumbv7em-none-eabihf`
- Relevant PRs: [#36874](https://github.com/rust-lang/rust/pull/36874)
- Incomplete platform support document
- [ ] `thumbv7m-none-eabi`
- Relevant PRs: [#36874](https://github.com/rust-lang/rust/pull/36874)
- Incomplete platform support document
- [x] `thumbv7neon-linux-androideabi`
- [ ] `thumbv7neon-unknown-linux-gnueabihf`
- Relevant PRs: [#56947](https://github.com/rust-lang/rust/pull/56947)
- [ ] `thumbv8m.base-none-eabi`
- Relevant PRs: [#55041](https://github.com/rust-lang/rust/pull/55041)
- Incomplete platform support document
- [ ] `thumbv8m.main-none-eabi`
- Relevant PRs: [#56000](https://github.com/rust-lang/rust/pull/56000)
- Incomplete platform support document
- [ ] `thumbv8m.main-none-eabihf`
- Relevant PRs: [#56000](https://github.com/rust-lang/rust/pull/56000)
- Incomplete platform support document
- [ ] `wasm32-unknown-emscripten`
- Relevant PRs: [#36339](https://github.com/rust-lang/rust/pull/36339)
- Incomplete platform support document
- [ ] `wasm32-unknown-unknown`
- Relevant PRs: [#45905](https://github.com/rust-lang/rust/pull/45905)
- Incomplete platform support document
- [ ] `wasm32-wasi`
- Relevant PRs: [#59464](https://github.com/rust-lang/rust/pull/59464), [#105468](https://github.com/rust-lang/rust/pull/105468), [#64188](https://github.com/rust-lang/rust/pull/64188), [#65576](https://github.com/rust-lang/rust/pull/65576), [#60585](https://github.com/rust-lang/rust/pull/60585), [#60117](https://github.com/rust-lang/rust/pull/60117)
- Incomplete platform support document
- [x] `wasm32-wasi-preview1-threads`
- [ ] `x86_64-apple-ios`
- Incomplete platform support document
- [x] `x86_64-fortanix-unknown-sgx`
- [x] `x86_64-fuchsia`
- [x] `x86_64-unknown-fuchsia`
- [x] `x86_64-linux-android`
- [ ] `x86_64-pc-solaris`
- Relevant PRs: [#82216](https://github.com/rust-lang/rust/pull/82216)
- Incomplete platform support document
- [ ] `x86_64-unknown-linux-gnux32`
- Relevant PRs: [#45224](https://github.com/rust-lang/rust/pull/45224)
- Incomplete platform support document
- [x] `x86_64-unknown-none`
- [ ] `x86_64-unknown-redox`
- Relevant PRs: [#38401](https://github.com/rust-lang/rust/pull/38401)
- Incomplete platform support document
- [x] `x86_64-unknown-uefi`
### Tier 3
- [ ] `aarch64-apple-ios-macabi`
- Relevant PRs: [#63467](https://github.com/rust-lang/rust/pull/63467), [#111384](https://github.com/rust-lang/rust/pull/111384), [#106925](https://github.com/rust-lang/rust/pull/106925)
- Incomplete platform support document
- Unknown if supports host in index
- Otherwise compliant
- [ ] `aarch64-apple-tvos`
- Unknown if supports host in index
- Otherwise compliant
- [x] `aarch64-apple-watchos-sim`
- [x] `aarch64-kmc-solid_asp3`
- [x] `aarch64-nintendo-switch-freestanding`
- [x] `aarch64-pc-windows-gnullvm`
- [x] `aarch64-unknown-linux-ohos`
- [x] `aarch64-unknown-teeos`
- [x] `aarch64-unknown-nto-qnx710`
- [ ] `aarch64-unknown-freebsd`
- Incomplete platform support document
- [x] `aarch64-unknown-hermit`
- [ ] `aarch64-unknown-linux-gnu_ilp32`
- Relevant PRs: [#81455](https://github.com/rust-lang/rust/pull/81455)
- Incomplete platform support document
- [x] `aarch64-unknown-netbsd`
- [x] `aarch64-unknown-openbsd`
- [ ] `aarch64-unknown-redox`
- Relevant PRs: [#60547](https://github.com/rust-lang/rust/pull/60547)
- Incomplete platform support document
- Unknown if supports host in index
- [ ] `aarch64-uwp-windows-msvc`
- Relevant PRs: [#63155](https://github.com/rust-lang/rust/pull/63155)
- Incomplete platform support document
- Unknown if supports host in index
- [ ] `aarch64-wrs-vxworks`
- Relevant PRs: [#61946](https://github.com/rust-lang/rust/pull/61946)
- Incomplete platform support document
- Unknown if supports host in index
- [ ] `aarch64_be-unknown-linux-gnu_ilp32`
- Relevant PRs: [#81455](https://github.com/rust-lang/rust/pull/81455)
- Incomplete platform support document
- [ ] `aarch64_be-unknown-linux-gnu`
- Relevant PRs: [#81455](https://github.com/rust-lang/rust/pull/81455)
- Incomplete platform support document
- [x] `aarch64_be-unknown-netbsd`
- [ ] `arm64_32-apple-watchos`
- Naming inconsistency? `aarch64_32-apple-watchos`?
- Otherwise compliant
- [ ] `armeb-unknown-linux-gnueabi`
- Unknown if supports host in index
- Otherwise compliant
- [x] `armv4t-none-eabi`
- [ ] `armv4t-unknown-linux-gnueabi`
- Relevant PRs: [#47018](https://github.com/rust-lang/rust/pull/47018)
- Incomplete platform support document
- Table row in platform support index is incomplete
- [x] `armv5te-none-eabi`
- [ ] `armv5te-unknown-linux-uclibceabi`
- Relevant PRs: [#78142](https://github.com/rust-lang/rust/pull/78142)
- Incomplete platform support document
- Table row in platform support index is incomplete
- [ ] `armv6-unknown-freebsd`
- Incomplete platform support document
- [x] `armv6-unknown-netbsd-eabihf`
- [ ] `armv6k-nintendo-3ds`
- Relevant PRs: [#88529](https://github.com/rust-lang/rust/pull/88529), [#90494](https://github.com/rust-lang/rust/pull/90494), [#92581](https://github.com/rust-lang/rust/pull/92581), [#95341](https://github.com/rust-lang/rust/pull/95341), [#107968](https://github.com/rust-lang/rust/pull/107968)
- Table row in platform support index is incomplete (looks like it does now?)
- Otherwise compliant
- [ ] `armv7-apple-ios`
- Incomplete platform support document
- [ ] `armv7-sony-vita-newlibeabihf`
- Relevant PRs: [#105712](https://github.com/rust-lang/rust/pull/105712), [#110638](https://github.com/rust-lang/rust/pull/110638), [#111819](https://github.com/rust-lang/rust/pull/111819)
- Table row in platform support index is incomplete (looks like it does now?)
- Otherwise compliant
- [x] `armv7-unknown-linux-ohos`
- [x] `armv7-unknown-linux-uclibceabi`
- [ ] `armv7-unknown-linux-uclibceabihf`
- Unknown if supports host in index
- Otherwise compliant
- [ ] `armv7-unknown-freebsd`
- Incomplete platform support document
- [x] `armv7-unknown-netbsd-eabihf`
- [ ] `armv7-wrs-vxworks-eabihf`
- Relevant PRs: [#61946](https://github.com/rust-lang/rust/pull/61946)
- Incomplete platform support document
- Table row in platform support index is incomplete
- [x] `armv7a-kmc-solid_asp3-eabi`
- [x] `armv7a-kmc-solid_asp3-eabihf`
- [ ] `armv7a-none-eabihf`
- Relevant PRs: [#68253](https://github.com/rust-lang/rust/pull/68253)
- Incomplete platform support document
- [x] `armv7k-apple-watchos`
- [ ] `armv7s-apple-ios`
- Incomplete platform support document
- [ ] `avr-unknown-gnu-atmega328`
- Relevant PRs: [#74941](https://github.com/rust-lang/rust/pull/74941)
- Incomplete platform support document
- [ ] `bpfeb-unknown-none`
- Relevant PRs: [#79608](https://github.com/rust-lang/rust/pull/79608)
- Incomplete platform support document
- [ ] `bpfel-unknown-none`
- Relevant PRs: [#79608](https://github.com/rust-lang/rust/pull/79608)
- Incomplete platform support document
- [x] `csky-unknown-linux-gnuabiv2`
- [ ] `hexagon-unknown-linux-musl`
- Relevant PRs: [#62814](https://github.com/rust-lang/rust/pull/62814)
- Incomplete platform support document
- Table row in platform support index is incomplete
- [ ] `i386-apple-ios`
- Incomplete platform support document
- [x] `i586-pc-nto-qnx700`
- [ ] `i686-apple-darwin`
- Incomplete platform support document
- [x] `i686-pc-windows-msvc`
- Target exists in two tiers - only in Tier 3 for Windows XP
- Removed, this seems like a incorrect use of the tier system
- [x] `i686-pc-windows-gnullvm`
- [ ] `i686-unknown-haiku`
- Relevant PRs: [#36727](https://github.com/rust-lang/rust/pull/36727), [#51757](https://github.com/rust-lang/rust/pull/51757)
- Incomplete platform support document
- [x] `i686-unknown-netbsd`
- [x] `i686-unknown-openbsd`
- [ ] `i686-uwp-windows-gnu`
- Relevant PRs: [#60260](https://github.com/rust-lang/rust/pull/60260)
- Incomplete platform support document
- Table row in platform support index is incomplete
- [ ] `i686-uwp-windows-msvc`
- Relevant PRs: [#63155](https://github.com/rust-lang/rust/pull/63155)
- Incomplete platform support document
- Table row in platform support index is incomplete
- [ ] `i686-wrs-vxworks`
- Relevant PRs: [#61946](https://github.com/rust-lang/rust/pull/61946)
- Incomplete platform support document
- Table row in platform support index is incomplete
- [x] `loongarch64-unknown-none`
- [x] `loongarch64-unknown-none-softfloat`
- [x] `m68k-unknown-linux-gnu`
- [ ] `mips-unknown-linux-uclibc`
- Relevant PRs: [#35734](https://github.com/rust-lang/rust/pull/35734)
- Incomplete platform support document
- [ ] `mips64-openwrt-linux-musl`
- Table row in platform support index is incomplete
- Otherwise compliant
- [ ] `mipsel-sony-psp`
- Relevant PRs: [#72062](https://github.com/rust-lang/rust/pull/72062), [#97843](https://github.com/rust-lang/rust/pull/97843)
- Incomplete platform support document
- [x] `mipsel-sony-psx`
- [ ] `mipsel-unknown-linux-uclibc`
- Relevant PRs: [#35734](https://github.com/rust-lang/rust/pull/35734)
- Incomplete platform support document
- [ ] `mipsel-unknown-none`
- Relevant PRs: [#78676](https://github.com/rust-lang/rust/pull/78676)
- Incomplete platform support document
- [ ] `mipsisa32r6-unknown-linux-gnu`
- Table row in platform support index is incomplete
- Otherwise compliant
- [ ] `mipsisa32r6el-unknown-linux-gnu`
- Table row in platform support index is incomplete
- Otherwise compliant
- [ ] `mipsisa64r6-unknown-linux-gnuabi64`
- Table row in platform support index is incomplete
- Otherwise compliant
- [x] `mipsisa64r6el-unknown-linux-gnuabi64`
- [ ] `msp430-none-elf`
- Relevant PRs: [#43099](https://github.com/rust-lang/rust/pull/43099), [#51953](https://github.com/rust-lang/rust/pull/51953), [#55450](https://github.com/rust-lang/rust/pull/55450)
- Incomplete platform support document
- [ ] `powerpc-unknown-linux-gnuspe`
- Relevant PRs: [#48484](https://github.com/rust-lang/rust/pull/48484)
- Incomplete platform support document
- [ ] `powerpc-unknown-linux-musl`
- Relevant PRs: [#55562](https://github.com/rust-lang/rust/pull/55562)
- Incomplete platform support document
- Table row in platform support index is incomplete
- [x] `powerpc-unknown-netbsd`
- [ ] `powerpc-unknown-openbsd`
- This wasn't included in the OpenBSD platform support page with the rest of the targets - I've added it - should I have?
- [ ] `powerpc-wrs-vxworks-spe`
- Relevant PRs: [#61946](https://github.com/rust-lang/rust/pull/61946)
- Incomplete platform support document
- Table row in platform support index is incomplete
- [ ] `powerpc-wrs-vxworks`
- Relevant PRs: [#61946](https://github.com/rust-lang/rust/pull/61946)
- Incomplete platform support document
- Table row in platform support index is incomplete
- [ ] `powerpc64-unknown-freebsd`
- Incomplete platform support document
- [ ] `powerpc64le-unknown-freebsd`
- Incomplete platform support document
- [ ] `powerpc-unknown-freebsd`
- Incomplete platform support document
- [ ] `powerpc64-unknown-linux-musl`
- Relevant PRs: [#55562](https://github.com/rust-lang/rust/pull/55562)
- Incomplete platform support document
- [ ] `powerpc64-wrs-vxworks`
- Relevant PRs: [#61946](https://github.com/rust-lang/rust/pull/61946)
- Incomplete platform support document
- Table row in platform support index is incomplete
- [ ] `powerpc64le-unknown-linux-musl`
- Relevant PRs: [#51619](https://github.com/rust-lang/rust/pull/51619)
- Incomplete platform support document
- Table row in platform support index is incomplete
- [x] `powerpc64-unknown-openbsd`
- [ ] `powerpc64-ibm-aix`
- Relevant PRs: [#102293](https://github.com/rust-lang/rust/pull/102293), [compiler-team#553](https://github.com/rust-lang/compiler-team/issues/553)
- Incomplete platform support document
- Table row in platform support index is incomplete
- [ ] `riscv32gc-unknown-linux-gnu`
- Relevant PRs: [#76048](https://github.com/rust-lang/rust/pull/76048)
- Incomplete platform support document
- [ ] `riscv32gc-unknown-linux-musl`
- Relevant PRs: [#82202](https://github.com/rust-lang/rust/pull/82202)
- Incomplete platform support document
- [ ] `riscv32im-unknown-none-elf`
- Relevant PRs: [#93749](https://github.com/rust-lang/rust/pull/93749)
- Incomplete platform support document
- Target maintainer doesn't have an email, just a handle, is that okay?
- [ ] `riscv32imac-unknown-xous-elf`
- Table row in platform support index is incomplete
- Otherwise compliant
- [x] `riscv32imc-esp-espidf`
- [x] `riscv32imac-esp-espidf`
- [x] `riscv64gc-unknown-hermit`
- [ ] `riscv64gc-unknown-freebsd`
- Incomplete platform support document
- [x] `riscv64gc-unknown-fuchsia`
- [ ] `riscv64gc-unknown-linux-musl`
- Relevant PRs: [#82202](https://github.com/rust-lang/rust/pull/82202)
- Incomplete platform support document
- [x] `riscv64gc-unknown-netbsd`
- [x] `riscv64gc-unknown-openbsd`
- [x] `riscv64-linux-android`
- [ ] `s390x-unknown-linux-musl`
- Relevant PRs: [#107127](https://github.com/rust-lang/rust/pull/107127), [#82166](https://github.com/rust-lang/rust/pull/82166)
- Incomplete platform support document
- [ ] `sparc-unknown-linux-gnu`
- Relevant PRs: [#114496](https://github.com/rust-lang/rust/pull/114496), [#48297](https://github.com/rust-lang/rust/pull/48297)
- Incomplete platform support document
- [x] `sparc-unknown-none-elf`
- [x] `sparc64-unknown-netbsd`
- [x] `sparc64-unknown-openbsd`
- [x] `thumbv4t-none-eabi`
- [x] `thumbv5te-none-eabi`
- [ ] `thumbv7a-pc-windows-msvc`
- Relevant PRs: [#53621](https://github.com/rust-lang/rust/pull/53621)
- Incomplete platform support document
- Table row in platform support index is incomplete
- [ ] `thumbv7a-uwp-windows-msvc`
- Relevant PRs: [#63155](https://github.com/rust-lang/rust/pull/63155)
- Incomplete platform support document
- [ ] `thumbv7neon-unknown-linux-musleabihf`
- Relevant PRs: [#66103](https://github.com/rust-lang/rust/pull/66103)
- Incomplete platform support document
- Table row in platform support index is incomplete
- [ ] `wasm64-unknown-unknown`
- Table row in platform support index is incomplete
- Otherwise compliant
- [ ] `x86_64-apple-ios-macabi`
- Relevant PRs: [#63467](https://github.com/rust-lang/rust/pull/63467), [#111384](https://github.com/rust-lang/rust/pull/111384), [#106925](https://github.com/rust-lang/rust/pull/106925)
- Incomplete platform support document
- [ ] `x86_64-apple-tvos`
- Table row in platform support index is incomplete
- Otherwise compliant
- [x] `x86_64-apple-watchos-sim`
- [x] `x86_64-pc-nto-qnx710`
- [x] `x86_64-pc-windows-gnullvm`
- [x] `x86_64-pc-windows-msvc`
- Target exists in two tiers - only in Tier 3 for Windows XP
- Removed, this seems like a incorrect use of the tier system
- [ ] `x86_64-sun-solaris`
- Relevant PRs: [#31078](https://github.com/rust-lang/rust/pull/31078), [#82216](https://github.com/rust-lang/rust/pull/82216)
- Incomplete platform support document
- Table row in platform support index is incomplete
- [x] `x86_64-unikraft-linux-musl`
- [ ] `x86_64-unknown-dragonfly`
- Relevant PRs: [#20024](https://github.com/rust-lang/rust/pull/20024)
- Incomplete platform support document
- [ ] `x86_64-unknown-haiku`
- Relevant PRs: [#36727](https://github.com/rust-lang/rust/pull/36727), [#51757](https://github.com/rust-lang/rust/pull/51757)
- Incomplete platform support document
- [x] `x86_64-unknown-hermit`
- [ ] `x86_64-unknown-l4re-uclibc`
- Relevant PRs: [#43639](https://github.com/rust-lang/rust/pull/43639), [#85967](https://github.com/rust-lang/rust/pull/85967), [#48725](https://github.com/rust-lang/rust/pull/48725), [#44011](https://github.com/rust-lang/rust/pull/44011)
- Incomplete platform support document
- Table row in platform support index is incomplete
- [x] `x86_64-unknown-linux-ohos`
- [x] `x86_64-unknown-openbsd`
- [ ] `x86_64-uwp-windows-gnu`
- Relevant PRs: [#60260](https://github.com/rust-lang/rust/pull/60260)
- Incomplete platform support document
- [ ] `x86_64-uwp-windows-msvc`
- Relevant PRs: [#63155](https://github.com/rust-lang/rust/pull/63155)
- Incomplete platform support document
- [ ] `x86_64-wrs-vxworks`
- Relevant PRs: [#61946](https://github.com/rust-lang/rust/pull/61946)
- Incomplete platform support document
- Table row in platform support index is incomplete
- [x] `x86_64h-apple-darwin`
I intend to go through each of these to try and fix them. **Please help! If you're interested in being responsible for one of these targets, send me a PR on my fork to the branch for this PR, adding yourself and completing the platform support document.** I'll do plenty of squashing to keep the number of commits managable but I'll preserve any contributions in co-authorship.
cc rust-lang/rust-forge#255
r? @wesleywiser
```
### Working branch
https://github.com/rust-lang/rust/compare/master...davidtwco:rust:target-tier-policy-compliance
## Targets without Tiers
Both of these targets weren't in `platform-support.md` but were in the target definitions. Files for them were added in https://github.com/rust-lang/rust/pull/80662 and mentioned in release notes but never worked because the compiler never knew they existed.
- [ ] `i386-unknown-linux-gnu`
- [ ] `i486-unknown-linux-gnu`
## Targets supported by GCC but not LLVM
Thanks to @antoyo. We'll need to decide how/if we want to add support for these.
- sh (SuperH)
- there's some unofficial basic support outside of upstream LLVM, but not complete and doesn't seem to support newer SuperH arch. For embedded.
- pru (BeagleBoard Programmable Real-time Unit)
- seems like there's currently a LLVM backend in development.
- rl78 (Renesas)
- for embedded. There's LLVM support by the manufacturer that is not upstream
- rx (Renesas RX)
- for embedded.
- xtensa
- for embedded.
- microblaze
- if we confirm it's valuable for embedded
- nios2 (Altera Nios II)
- discontinued in 2024, but probably still useful for Nios V, its successor.
- m68k
- if and only if it's easier than the LLVM backend, not a priority.
- or1k (OpenRISC 1000)
- there's some unofficial basic support outside of upstream LLVM, but not complete and seems unmaintained. Seems to still have development around it, but not much active, so might not be worth.