Run the full stage 2 run-make test suite in x86_64-gnu-debug by jieyouxu · Pull Request #131917 · rust-lang/rust (original) (raw)

Run the full run-make test suite in the x86_64-gnu-debug CI job. This is currently the only CI job where //@ needs-force-clang-based-test will be satisfied, so some run-make tests will literally never be run otherwise. Before this PR, the CI job only ran run-make tests which contains the substring clang in its test name, which is both (1) a footgun because it's very easy to forget and (2) it masks tests that would otherwise fail (even failing to compile) because the test is skipped if doesn't have a clang in its test name.

With the environment of x86_64-gnu-debug, two run-make tests failed before this PR:

  1. tests/run-make/issue-84395-lto-embed-bitcode/rmake.rs: this was broken for a long time because objcopy in llvm bin tools was renamed to llvm-objcopy. This test was converted into a rmake.rs test, rather straight forward.
  2. tests/run-make/cross-lang-lto-riscv-abi/rmake.rs: this was broken for a long time and never worked. The old version inspected human-readable output of llvm-readobj --file-header looking for substring EF_RISCV_FLOAT_ABI_DOUBLE, but the human-readable output will only contain something like Flags: 0x5, RVC, double-float ABI, hence it will never match. This test was fixed by instead using the object crate to actually decode the ELF headers looking for the specific e_flags based on reading the RISCV ELF psABI docs.

This PR is best reviewed commit-by-commit, two commits setup the support library for functionality and two commits are for each of the failing run-make tests.

I had to bump the x86_64-gnu-debug job to be ran with a runner with larger disk space.

Part of #132034.

try-job: x86_64-gnu-debug