Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Auto merge of #100260 - ehuss:compiletest-target-cfg, r=Mark-Simulacrum
compiletest: use target cfg instead of hard-coded tables This changes compiletest to use `rustc --print=cfg` to dynamically determine the properties of a target when matching `ignore` and `only` rules instead of using hard-coded tables or target-triple parsing (which don't always follow the `<arch><sub>-<vendor>-<sys>-<abi>` pattern). The benefit here is that it will more accurately match the target properties, and not require maintaining these extra tables. This also adds matching the `target_family` in ignore rules. The primary benefit here is so that `ignore-wasm` works as expected (matching all wasm-like targets). There were already several tests that had `ignore-wasm` in them (which previously had no effect), so it is evident that some people expected that to work. This also adds `ignore-unix/only-unix`. There is some risk that this changes the behavior from before since the tables aren't quite the same as the target properties. However, I did fairly extensive comparisons to see what would be different. https://gist.github.com/ehuss/5bf7ab347605160cefb6f84ba5ea5f6b contains a full list of differences for all targets for all tests. I do not think any of the affected target/test combinations are things that are actually tested in CI. I tested several of the more unusual test images (test-various, dist-various-1, wasm32), and they seem fine. A summary of most of the reasons behind the differences: - wasm64-unknown-unknown wasm32-wasi now match "wasm" - Targets now match "gnu" because they have target_env=gnu - aarch64-wrs-vxworks - armv7-wrs-vxworks-eabihf - i686-wrs-vxworks - powerpc-wrs-vxworks - powerpc64-wrs-vxworks - x86_64-wrs-vxworks - wasm64-unknown-unknown now matches wasm64 - x86_64-unknown-none-linuxkernel no longer matches "linux", but will match "gnu" and "none" - Various arm targets now match "aarch64" or "arm": - arm64_32-apple-watchos - armebv7r-none-eabi - armv6-unknown-freebsd - armv6-unknown-netbsd-eabihf - armv6k-nintendo-3ds - armv7-wrs-vxworks-eabihf - armv7a-kmc-solid_asp3-eabi - armv7a-kmc-solid_asp3-eabihf - armv7a-none-eabi - armv7a-none-eabihf - armv7k-apple-watchos - armv7r-none-eabi - armv7r-none-eabihf - Now matches "thumb" and "arm" - thumbv4t-none-eabi - thumbv6m-none-eabi - thumbv7a-pc-windows-msvc - thumbv7a-uwp-windows-msvc - thumbv7em-none-eabi - thumbv7em-none-eabihf - thumbv7m-none-eabi - thumbv7neon-linux-androideabi - thumbv7neon-unknown-linux-gnueabihf - thumbv7neon-unknown-linux-musleabihf - thumbv8m.base-none-eabi - thumbv8m.main-none-eabi - asmjs-unknown-emscripten now matches "wasm32" because that it is its defined arch - avr-unknown-gnu-atmega328 now matches "none" (because target_os="none") - now matches 64bit: - bpfeb-unknown-none - bpfel-unknown-none - sparcv9-sun-solaris - now matches endian-big: - m68k-unknown-linux-gnu - now matches 16bit: - msp430-none-elf - now matches 32bit: - arm64_32-apple-watchos - now matches riscv32 (and needs-asm-support): - riscv32gc-unknown-linux-gnu - riscv32gc-unknown-linux-musl - riscv32i-unknown-none-elf - riscv32im-unknown-none-elf - riscv32imac-unknown-none-elf - riscv32imac-unknown-xous-elf - riscv32imc-esp-espidf - riscv32imc-unknown-none-elf - riscv64imac-unknown-none-elf
- Loading branch information