Auto merge of #126607 - Oneirical:the-testern-world, r=jieyouxu

Rewrite `separate-link`, `separate-link-fail` and `allocator-shim-circular-deps` `run-make` tests to `ui` or `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).
This commit is contained in:
bors 2024-06-18 23:38:09 +00:00
commit 4e63822fc4
8 changed files with 46 additions and 29 deletions

View file

@ -1,4 +1,3 @@
run-make/allocator-shim-circular-deps/Makefile
run-make/archive-duplicate-names/Makefile
run-make/atomic-lock-free/Makefile
run-make/branch-protection-check-IBT/Makefile
@ -185,8 +184,6 @@ run-make/rustdoc-io-error/Makefile
run-make/sanitizer-cdylib-link/Makefile
run-make/sanitizer-dylib-link/Makefile
run-make/sanitizer-staticlib-link/Makefile
run-make/separate-link-fail/Makefile
run-make/separate-link/Makefile
run-make/sepcomp-cci-copies/Makefile
run-make/sepcomp-inlining/Makefile
run-make/sepcomp-separate/Makefile

View file

@ -1,12 +0,0 @@
# This test is designed to intentionally introduce a circular dependency scenario to check that a specific compiler bug doesn't make a resurgence.
# The bug in question arose when at least one crate required a global allocator, and that crate was placed after the one defining it in the linker order.
# The generated symbols.o should not result in any linker errors.
# See https://github.com/rust-lang/rust/issues/112715
# ignore-cross-compile
include ../tools.mk
all:
rm -rf $(TMPDIR) && mkdir $(TMPDIR)
$(RUSTC) my_lib.rs
$(RUSTC) main.rs --test --extern my_lib=$(TMPDIR)/libmy_lib.rlib

View file

@ -0,0 +1,16 @@
// This test is designed to intentionally introduce a circular dependency scenario to check
// that a specific compiler bug doesn't make a resurgence.
// The bug in question arose when at least one crate
// required a global allocator, and that crate was placed after
// the one defining it in the linker order.
// The generated symbols.o should not result in any linker errors.
// See https://github.com/rust-lang/rust/issues/112715
//@ ignore-cross-compile
use run_make_support::{rust_lib_name, rustc};
fn main() {
rustc().input("my_lib.rs").run();
rustc().input("main.rs").arg("--test").extern_("my_lib", rust_lib_name("my_lib")).run();
}

View file

@ -1,7 +0,0 @@
include ../tools.mk
all:
echo 'fn main(){}' > $(TMPDIR)/main.rs
# Make sure that this fails
! $(RUSTC) -Z link-only $(TMPDIR)/main.rs 2> $(TMPDIR)/stderr.txt
$(CGREP) "The input does not look like a .rlink file" < $(TMPDIR)/stderr.txt

View file

@ -0,0 +1 @@
fn main() {}

View file

@ -0,0 +1,15 @@
// rustc usually wants Rust code as its input. The flag `link-only` is one
// exception, where a .rlink file is instead requested. The compiler should
// fail when the user is wrongly passing the original Rust code
// instead of the generated .rlink file when this flag is on.
// https://github.com/rust-lang/rust/issues/95297
use run_make_support::rustc;
fn main() {
rustc()
.arg("-Zlink-only")
.input("foo.rs")
.run_fail()
.assert_stderr_contains("The input does not look like a .rlink file");
}

View file

@ -1,7 +0,0 @@
# ignore-cross-compile
include ../tools.mk
all:
echo 'fn main(){}' | $(RUSTC) -Z no-link -
$(RUSTC) -Z link-only $(TMPDIR)/rust_out.rlink
$(call RUN,rust_out)

View file

@ -0,0 +1,14 @@
// The compiler flags no-link (and by extension, link-only) used to be broken
// due to changes in encoding/decoding. This was patched, and this test checks
// that these flags are not broken again, resulting in successful compilation.
// See https://github.com/rust-lang/rust/issues/77857
//@ ignore-cross-compile
use run_make_support::{run, rustc};
fn main() {
rustc().stdin(b"fn main(){}").arg("-Zno-link").arg("-").run();
rustc().arg("-Zlink-only").input("rust_out.rlink").run();
run("rust_out");
}