Rollup merge of #126644 - Oneirical:testla-coil, r=jieyouxu
Rewrite `extern-flag-rename-transitive`. `debugger-visualizer-dep-info`, `metadata-flag-frobs-symbols`, `extern-overrides-distribution` and `forced-unwind-terminate-pof` `run-make` tests to rmake Part of #121876 and the associated [Google Summer of Code project](https://blog.rust-lang.org/2024/05/01/gsoc-2024-selected-projects.html). try-job: dist-x86_64-apple
This commit is contained in:
commit
bbf94b29fb
@ -73,6 +73,12 @@ pub fn opt_level(&mut self, option: &str) -> &mut Self {
|
|||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Incorporate a hashed string to mangled symbols.
|
||||||
|
pub fn metadata(&mut self, meta: &str) -> &mut Self {
|
||||||
|
self.cmd.arg(format!("-Cmetadata={meta}"));
|
||||||
|
self
|
||||||
|
}
|
||||||
|
|
||||||
/// Add a suffix in each output filename.
|
/// Add a suffix in each output filename.
|
||||||
pub fn extra_filename(&mut self, suffix: &str) -> &mut Self {
|
pub fn extra_filename(&mut self, suffix: &str) -> &mut Self {
|
||||||
self.cmd.arg(format!("-Cextra-filename={suffix}"));
|
self.cmd.arg(format!("-Cextra-filename={suffix}"));
|
||||||
|
@ -20,7 +20,6 @@ run-make/cross-lang-lto-pgo-smoketest/Makefile
|
|||||||
run-make/cross-lang-lto-upstream-rlibs/Makefile
|
run-make/cross-lang-lto-upstream-rlibs/Makefile
|
||||||
run-make/cross-lang-lto/Makefile
|
run-make/cross-lang-lto/Makefile
|
||||||
run-make/debug-assertions/Makefile
|
run-make/debug-assertions/Makefile
|
||||||
run-make/debugger-visualizer-dep-info/Makefile
|
|
||||||
run-make/dep-info-doesnt-run-much/Makefile
|
run-make/dep-info-doesnt-run-much/Makefile
|
||||||
run-make/dep-info-spaces/Makefile
|
run-make/dep-info-spaces/Makefile
|
||||||
run-make/dep-info/Makefile
|
run-make/dep-info/Makefile
|
||||||
@ -37,7 +36,6 @@ run-make/export-executable-symbols/Makefile
|
|||||||
run-make/extern-diff-internal-name/Makefile
|
run-make/extern-diff-internal-name/Makefile
|
||||||
run-make/extern-flag-disambiguates/Makefile
|
run-make/extern-flag-disambiguates/Makefile
|
||||||
run-make/extern-flag-pathless/Makefile
|
run-make/extern-flag-pathless/Makefile
|
||||||
run-make/extern-flag-rename-transitive/Makefile
|
|
||||||
run-make/extern-fn-explicit-align/Makefile
|
run-make/extern-fn-explicit-align/Makefile
|
||||||
run-make/extern-fn-generic/Makefile
|
run-make/extern-fn-generic/Makefile
|
||||||
run-make/extern-fn-mangle/Makefile
|
run-make/extern-fn-mangle/Makefile
|
||||||
@ -48,10 +46,8 @@ run-make/extern-fn-with-packed-struct/Makefile
|
|||||||
run-make/extern-fn-with-union/Makefile
|
run-make/extern-fn-with-union/Makefile
|
||||||
run-make/extern-multiple-copies/Makefile
|
run-make/extern-multiple-copies/Makefile
|
||||||
run-make/extern-multiple-copies2/Makefile
|
run-make/extern-multiple-copies2/Makefile
|
||||||
run-make/extern-overrides-distribution/Makefile
|
|
||||||
run-make/extra-filename-with-temp-outputs/Makefile
|
run-make/extra-filename-with-temp-outputs/Makefile
|
||||||
run-make/fmt-write-bloat/Makefile
|
run-make/fmt-write-bloat/Makefile
|
||||||
run-make/forced-unwind-terminate-pof/Makefile
|
|
||||||
run-make/foreign-double-unwind/Makefile
|
run-make/foreign-double-unwind/Makefile
|
||||||
run-make/foreign-exceptions/Makefile
|
run-make/foreign-exceptions/Makefile
|
||||||
run-make/foreign-rust-exceptions/Makefile
|
run-make/foreign-rust-exceptions/Makefile
|
||||||
@ -113,7 +109,6 @@ run-make/macos-fat-archive/Makefile
|
|||||||
run-make/manual-link/Makefile
|
run-make/manual-link/Makefile
|
||||||
run-make/many-crates-but-no-match/Makefile
|
run-make/many-crates-but-no-match/Makefile
|
||||||
run-make/metadata-dep-info/Makefile
|
run-make/metadata-dep-info/Makefile
|
||||||
run-make/metadata-flag-frobs-symbols/Makefile
|
|
||||||
run-make/min-global-align/Makefile
|
run-make/min-global-align/Makefile
|
||||||
run-make/mingw-export-call-convention/Makefile
|
run-make/mingw-export-call-convention/Makefile
|
||||||
run-make/mismatching-target-triples/Makefile
|
run-make/mismatching-target-triples/Makefile
|
||||||
|
@ -1,9 +0,0 @@
|
|||||||
include ../tools.mk
|
|
||||||
|
|
||||||
# This test makes sure that files referenced via #[debugger_visualizer] are
|
|
||||||
# included in `--emit dep-info` output.
|
|
||||||
|
|
||||||
all:
|
|
||||||
$(RUSTC) --emit dep-info main.rs
|
|
||||||
$(CGREP) "foo.py" < $(TMPDIR)/main.d
|
|
||||||
$(CGREP) "my_visualizers/bar.natvis" < $(TMPDIR)/main.d
|
|
11
tests/run-make/debugger-visualizer-dep-info/rmake.rs
Normal file
11
tests/run-make/debugger-visualizer-dep-info/rmake.rs
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
// This test checks that files referenced via #[debugger_visualizer] are
|
||||||
|
// included in `--emit dep-info` output.
|
||||||
|
// See https://github.com/rust-lang/rust/pull/111641
|
||||||
|
|
||||||
|
use run_make_support::{invalid_utf8_contains, rustc};
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
rustc().emit("dep-info").input("main.rs").run();
|
||||||
|
invalid_utf8_contains("main.d", "foo.py");
|
||||||
|
invalid_utf8_contains("main.d", "my_visualizers/bar.natvis");
|
||||||
|
}
|
@ -1,7 +0,0 @@
|
|||||||
include ../tools.mk
|
|
||||||
|
|
||||||
all:
|
|
||||||
$(RUSTC) foo.rs
|
|
||||||
$(RUSTC) bar.rs
|
|
||||||
$(RUSTC) baz.rs --extern a=$(TMPDIR)/libfoo.rlib
|
|
||||||
|
|
14
tests/run-make/extern-flag-rename-transitive/rmake.rs
Normal file
14
tests/run-make/extern-flag-rename-transitive/rmake.rs
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
// In this test, baz.rs is looking for an extern crate "a" which
|
||||||
|
// does not exist, and can only run through the --extern rustc flag
|
||||||
|
// defining that the "a" crate is in fact just "foo". This test
|
||||||
|
// checks that the --extern flag takes precedence over the extern
|
||||||
|
// crate statement in the code.
|
||||||
|
// See https://github.com/rust-lang/rust/pull/52723
|
||||||
|
|
||||||
|
use run_make_support::{rust_lib_name, rustc};
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
rustc().input("foo.rs").run();
|
||||||
|
rustc().input("bar.rs").run();
|
||||||
|
rustc().input("baz.rs").extern_("a", rust_lib_name("foo")).run();
|
||||||
|
}
|
@ -1,6 +0,0 @@
|
|||||||
# ignore-cross-compile
|
|
||||||
include ../tools.mk
|
|
||||||
|
|
||||||
all:
|
|
||||||
$(RUSTC) libc.rs -Cmetadata=foo
|
|
||||||
$(RUSTC) main.rs --extern libc=$(TMPDIR)/liblibc.rlib
|
|
14
tests/run-make/extern-overrides-distribution/rmake.rs
Normal file
14
tests/run-make/extern-overrides-distribution/rmake.rs
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
// The --extern flag should override any "crate_type" declarations in the
|
||||||
|
// Rust files themselves. In this test, libc is compiled as "lib", but
|
||||||
|
// main.rs will only run with an rlib, which checks if the --extern flag
|
||||||
|
// is successfully overriding the default behaviour.
|
||||||
|
// See https://github.com/rust-lang/rust/pull/21782
|
||||||
|
|
||||||
|
//@ ignore-cross-compile
|
||||||
|
|
||||||
|
use run_make_support::{rust_lib_name, rustc};
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
rustc().input("libc.rs").metadata("foo").run();
|
||||||
|
rustc().input("main.rs").extern_("libc", rust_lib_name("libc")).run();
|
||||||
|
}
|
@ -1,9 +0,0 @@
|
|||||||
# ignore-cross-compile
|
|
||||||
# only-linux
|
|
||||||
include ../tools.mk
|
|
||||||
|
|
||||||
all: foo
|
|
||||||
$(call RUN,foo) | $(CGREP) -v "cannot unwind"
|
|
||||||
|
|
||||||
foo: foo.rs
|
|
||||||
$(RUSTC) $<
|
|
16
tests/run-make/forced-unwind-terminate-pof/rmake.rs
Normal file
16
tests/run-make/forced-unwind-terminate-pof/rmake.rs
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
// During a forced unwind, crossing the non-Plain Old Frame
|
||||||
|
// would define the forced unwind as undefined behaviour, and
|
||||||
|
// immediately abort the unwinding process. This test checks
|
||||||
|
// that the forced unwinding takes precedence.
|
||||||
|
// See https://github.com/rust-lang/rust/issues/101469
|
||||||
|
|
||||||
|
//@ ignore-cross-compile
|
||||||
|
//@ ignore-windows
|
||||||
|
//Reason: pthread (POSIX threads) is not available on Windows
|
||||||
|
|
||||||
|
use run_make_support::{run, rustc};
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
rustc().input("foo.rs").run();
|
||||||
|
run("foo").assert_stdout_not_contains("cannot unwind");
|
||||||
|
}
|
@ -1,11 +0,0 @@
|
|||||||
# ignore-cross-compile
|
|
||||||
include ../tools.mk
|
|
||||||
|
|
||||||
all:
|
|
||||||
$(RUSTC) foo.rs -C metadata=a -C extra-filename=-a
|
|
||||||
$(RUSTC) foo.rs -C metadata=b -C extra-filename=-b
|
|
||||||
$(RUSTC) bar.rs \
|
|
||||||
--extern foo1=$(TMPDIR)/libfoo-a.rlib \
|
|
||||||
--extern foo2=$(TMPDIR)/libfoo-b.rlib \
|
|
||||||
--print link-args
|
|
||||||
$(call RUN,bar)
|
|
20
tests/run-make/metadata-flag-frobs-symbols/rmake.rs
Normal file
20
tests/run-make/metadata-flag-frobs-symbols/rmake.rs
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
// In this test, foo.rs is compiled twice with different hashes tied to its
|
||||||
|
// symbols thanks to the metadata flag. bar.rs then ensures that the memory locations
|
||||||
|
// of foo's symbols are different even though they came from the same original source code.
|
||||||
|
// This checks that the metadata flag is doing its job.
|
||||||
|
// See https://github.com/rust-lang/rust/issues/14471
|
||||||
|
|
||||||
|
//@ ignore-cross-compile
|
||||||
|
|
||||||
|
use run_make_support::{run, rust_lib_name, rustc};
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
rustc().input("foo.rs").metadata("a").extra_filename("-a").run();
|
||||||
|
rustc().input("foo.rs").metadata("b").extra_filename("-b").run();
|
||||||
|
rustc()
|
||||||
|
.input("bar.rs")
|
||||||
|
.extern_("foo1", rust_lib_name("foo-a"))
|
||||||
|
.extern_("foo2", rust_lib_name("foo-b"))
|
||||||
|
.run();
|
||||||
|
run("bar");
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user