Create `_imp__` symbols also when doing ThinLTO When generating a rlib crate on Windows we create `dllimport` / `_imp__` symbols for each global. This effectively makes the rlib contain an import library for itself and allows them to both be dynamically and statically linked. However when doing ThinLTO we do not generate these and thus we end up with missing symbols. Microsoft's `link` can fix these up (and emits warnings), but `lld` seems to currently be unable to. This PR also does this generation for ThinLTO avoiding those issues with `lld` and also avoids the warnings on `link`. This is an workaround for https://github.com/rust-lang/rust/issues/81408. cc `@lqd`
The run-make
test suite
The run-make
test suite contains tests which are the most flexible out of all
the rust-lang/rust test suites. run-make
tests can basically contain arbitrary code, and are supported by the
run_make_support
library.
Infrastructure
There are two kinds of run-make tests:
- The new
rmake.rs
version: this allows run-make tests to be written in Rust (withrmake.rs
as the main test file). - The legacy
Makefile
version: this is what run-make tests were written with before support forrmake.rs
was introduced.
The implementation for collecting and building the rmake.rs
recipes (or
Makefile
s) are in
src/tools/compiletest/src/runtest.rs
,
in run_rmake_v2_test
and run_rmake_legacy_test
.
Rust-based run-make
tests: rmake.rs
The setup for the rmake.rs
version is a 3-stage process:
-
First, we build the
run_make_support
library in bootstrap as a tool lib. -
Then, we compile the
rmake.rs
"recipe" linking the support library and its dependencies in, and provide a bunch of env vars. We setup a directory structure withinbuild/<target>/test/run-make/
<test-name>/ rmake.exe # recipe binary rmake_out/ # sources from test sources copied over
and copy non-
rmake.rs
input support files over tormake_out/
. The support library is made available as an extern prelude. -
Finally, we run the recipe binary and set
rmake_out/
as the working directory.
Formatting
Note that files under tests/
are not formatted by ./x fmt
,
use rustfmt tests/path/to/file.rs
to format a specific file if desired.