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:
commit
4e63822fc4
@ -1,4 +1,3 @@
|
|||||||
run-make/allocator-shim-circular-deps/Makefile
|
|
||||||
run-make/archive-duplicate-names/Makefile
|
run-make/archive-duplicate-names/Makefile
|
||||||
run-make/atomic-lock-free/Makefile
|
run-make/atomic-lock-free/Makefile
|
||||||
run-make/branch-protection-check-IBT/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-cdylib-link/Makefile
|
||||||
run-make/sanitizer-dylib-link/Makefile
|
run-make/sanitizer-dylib-link/Makefile
|
||||||
run-make/sanitizer-staticlib-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-cci-copies/Makefile
|
||||||
run-make/sepcomp-inlining/Makefile
|
run-make/sepcomp-inlining/Makefile
|
||||||
run-make/sepcomp-separate/Makefile
|
run-make/sepcomp-separate/Makefile
|
||||||
|
@ -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
|
|
16
tests/run-make/allocator-shim-circular-deps/rmake.rs
Normal file
16
tests/run-make/allocator-shim-circular-deps/rmake.rs
Normal 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();
|
||||||
|
}
|
@ -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
|
|
1
tests/run-make/separate-link-fail/foo.rs
Normal file
1
tests/run-make/separate-link-fail/foo.rs
Normal file
@ -0,0 +1 @@
|
|||||||
|
fn main() {}
|
15
tests/run-make/separate-link-fail/rmake.rs
Normal file
15
tests/run-make/separate-link-fail/rmake.rs
Normal 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");
|
||||||
|
}
|
@ -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)
|
|
14
tests/run-make/separate-link/rmake.rs
Normal file
14
tests/run-make/separate-link/rmake.rs
Normal 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");
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user