-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Description
I propose the following requirement for a target to be Tier 1 or Tier 2:
For a target P using architecture A (target_arch
) to be Tier 2, there must exist a target T that has the same architecture (same target_arch
) that supports the following requirements:
- mainline QEMU supports that target, such that
cargo test --target=T
. - Rust's source-based code coverage must work for that target. (Presently this means that profiler builtins are enabled for the target.)
- If there is a target that A--linux-gnu and/or A--linux-musl that would meet these requirements, then one (ideally both) of these targets must be made Tier 2 before, or at the same time, as any other target with the same architecture.
- P and T must have the same calling convention / ABI.
In other words, I propose that in order for a target to be considered Tier 2 (or higher), it must be possible for us to actually run tests measure code coverage metrics for that architecture without jumping through hoops. I am not asking that every tier 2 (or higher) target support profiling because that might not be practical for us to do, e.g. aarch64-apple-ios or aarch64-pc-windows-*.
Currently there are many Tier 2 targets with architectures for which no target for that architecture supports profiler builtins. Examples: powerpc, powerpc64le, loongarch64.
Currently there are some Tier 2 targets with architectures for which it is difficult to get QEMU working. Examples: loongarch64 requires (AFAICT) either building their custom toolchain from source or using their provided binaries, which is not practical.
/cc @joshtriplett