about summary refs log tree commit diff
path: root/tests
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2024-06-29 07:12:17 +0000
committerbors <bors@rust-lang.org>2024-06-29 07:12:17 +0000
commit38d0f87a493e9ab736185d1d7d17a5c51652740f (patch)
treeb1ff96664a3535f81205dbb119eac12d5c6f67e5 /tests
parentd38cd229b75a7a608e4971c46d1fb5a99343e430 (diff)
parent4c9eeda36d24e1da8bdf74bd344cd98cb4b98c09 (diff)
downloadrust-38d0f87a493e9ab736185d1d7d17a5c51652740f.tar.gz
rust-38d0f87a493e9ab736185d1d7d17a5c51652740f.zip
Auto merge of #126698 - Oneirical:tessteract, r=Kobzol
Migrate `unknown-mod-stdin`, `issue-68794-textrel-on-minimal-lib`, `raw-dylib-cross-compilation` and `used-cdylib-macos` `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).

Seriously needs OSX/Windows try-jobs. If it fails, restore `only-linux` in `textrel-on-minimal-lib` and try again.

try-job: x86_64-mingw
try-job: x86_64-msvc
Diffstat (limited to 'tests')
-rw-r--r--tests/run-make/issue-68794-textrel-on-minimal-lib/Makefile18
-rw-r--r--tests/run-make/raw-dylib-cross-compilation/Makefile20
-rw-r--r--tests/run-make/raw-dylib-cross-compilation/rmake.rs41
-rw-r--r--tests/run-make/textrel-on-minimal-lib/bar.c (renamed from tests/run-make/issue-68794-textrel-on-minimal-lib/bar.c)0
-rw-r--r--tests/run-make/textrel-on-minimal-lib/foo.rs (renamed from tests/run-make/issue-68794-textrel-on-minimal-lib/foo.rs)0
-rw-r--r--tests/run-make/textrel-on-minimal-lib/rmake.rs31
-rw-r--r--tests/run-make/unknown-mod-stdin/Makefile8
-rw-r--r--tests/run-make/unknown-mod-stdin/rmake.rs25
-rw-r--r--tests/run-make/used-cdylib-macos/Makefile11
-rw-r--r--tests/run-make/used-cdylib-macos/rmake.rs16
10 files changed, 113 insertions, 57 deletions
diff --git a/tests/run-make/issue-68794-textrel-on-minimal-lib/Makefile b/tests/run-make/issue-68794-textrel-on-minimal-lib/Makefile
deleted file mode 100644
index 6140b39c0e2..00000000000
--- a/tests/run-make/issue-68794-textrel-on-minimal-lib/Makefile
+++ /dev/null
@@ -1,18 +0,0 @@
-# ignore-cross-compile
-# Regression test for issue #68794
-#
-# Verify that no text relocations are accidentally introduced by linking a
-# minimal rust staticlib.
-#
-# The test links a rust static library into a shared library, and checks that
-# the linker doesn't have to flag the resulting file as containing TEXTRELs.
-
-include ../tools.mk
-
-# only-linux
-
-all:
-	$(RUSTC) foo.rs
-	$(CC) bar.c $(call STATICLIB,foo) -fPIC -shared -o $(call DYLIB,bar) \
-		$(EXTRACFLAGS) $(EXTRACXXFLAGS)
-	readelf -d $(call DYLIB,bar) | grep TEXTREL; test $$? -eq 1
diff --git a/tests/run-make/raw-dylib-cross-compilation/Makefile b/tests/run-make/raw-dylib-cross-compilation/Makefile
deleted file mode 100644
index 2524f8500e1..00000000000
--- a/tests/run-make/raw-dylib-cross-compilation/Makefile
+++ /dev/null
@@ -1,20 +0,0 @@
-# Tests that raw-dylib cross compilation works correctly
-
-# needs-dlltool
-
-# i686 dlltool.exe can't product x64 binaries.
-# ignore-i686-pc-windows-gnu
-
-include ../tools.mk
-
-all:
-	# Build as x86 and make sure that we have x86 objects only.
-	$(RUSTC) --crate-type lib --crate-name i686_raw_dylib_test --target i686-pc-windows-gnu lib.rs
-	"$(LLVM_BIN_DIR)"/llvm-objdump -a $(TMPDIR)/libi686_raw_dylib_test.rlib > $(TMPDIR)/i686.objdump.txt
-	$(CGREP) "file format coff-i386" < $(TMPDIR)/i686.objdump.txt
-	$(CGREP) -v "file format coff-x86-64" < $(TMPDIR)/i686.objdump.txt
-	# Build as x64 and make sure that we have x64 objects only.
-	$(RUSTC) --crate-type lib --crate-name x64_raw_dylib_test --target x86_64-pc-windows-gnu lib.rs
-	"$(LLVM_BIN_DIR)"/llvm-objdump -a $(TMPDIR)/libx64_raw_dylib_test.rlib > $(TMPDIR)/x64.objdump.txt
-	$(CGREP) "file format coff-x86-64" < $(TMPDIR)/x64.objdump.txt
-	$(CGREP) -v "file format coff-i386" < $(TMPDIR)/x64.objdump.txt
diff --git a/tests/run-make/raw-dylib-cross-compilation/rmake.rs b/tests/run-make/raw-dylib-cross-compilation/rmake.rs
new file mode 100644
index 00000000000..3eb55546314
--- /dev/null
+++ b/tests/run-make/raw-dylib-cross-compilation/rmake.rs
@@ -0,0 +1,41 @@
+// When cross-compiling using `raw-dylib`, rustc would try to fetch some
+// very specific `dlltool` to complete the cross-compilation (such as `i686-w64-mingw32-dlltool`)
+// when Windows only calls it `dlltool`. This test performs some cross-compilation in a
+// way that previously failed due to this bug, and checks that it succeeds.
+// See https://github.com/rust-lang/rust/pull/108355
+
+//@ ignore-i686-pc-windows-gnu
+// Reason: dlltool on this distribution is unable to produce x64 binaries
+//@ needs-dlltool
+// Reason: this is the utility being checked by this test
+
+use run_make_support::{llvm_objdump, rust_lib_name, rustc};
+
+fn main() {
+    // Build as x86 and make sure that we have x86 objects only.
+    rustc()
+        .crate_type("lib")
+        .crate_name("i686_raw_dylib_test")
+        .target("i686-pc-windows-gnu")
+        .input("lib.rs")
+        .run();
+    llvm_objdump()
+        .arg("-a")
+        .input(rust_lib_name("i686_raw_dylib_test"))
+        .run()
+        .assert_stdout_contains("file format coff-i386")
+        .assert_stdout_not_contains("file format coff-x86-64");
+    // Build as x64 and make sure that we have x64 objects only.
+    rustc()
+        .crate_type("lib")
+        .crate_name("x64_raw_dylib_test")
+        .target("x86_64-pc-windows-gnu")
+        .input("lib.rs")
+        .run();
+    llvm_objdump()
+        .arg("-a")
+        .input(rust_lib_name("x64_raw_dylib_test"))
+        .run()
+        .assert_stdout_not_contains("file format coff-i386")
+        .assert_stdout_contains("file format coff-x86-64");
+}
diff --git a/tests/run-make/issue-68794-textrel-on-minimal-lib/bar.c b/tests/run-make/textrel-on-minimal-lib/bar.c
index bb4036b06e1..bb4036b06e1 100644
--- a/tests/run-make/issue-68794-textrel-on-minimal-lib/bar.c
+++ b/tests/run-make/textrel-on-minimal-lib/bar.c
diff --git a/tests/run-make/issue-68794-textrel-on-minimal-lib/foo.rs b/tests/run-make/textrel-on-minimal-lib/foo.rs
index a3e865b638e..a3e865b638e 100644
--- a/tests/run-make/issue-68794-textrel-on-minimal-lib/foo.rs
+++ b/tests/run-make/textrel-on-minimal-lib/foo.rs
diff --git a/tests/run-make/textrel-on-minimal-lib/rmake.rs b/tests/run-make/textrel-on-minimal-lib/rmake.rs
new file mode 100644
index 00000000000..eba664479f1
--- /dev/null
+++ b/tests/run-make/textrel-on-minimal-lib/rmake.rs
@@ -0,0 +1,31 @@
+// Verify that no text relocations are accidentally introduced by linking a
+// minimal rust staticlib.
+// The test links a rust static library into a shared library, and checks that
+// the linker doesn't have to flag the resulting file as containing TEXTRELs.
+// This bug otherwise breaks Android builds, which forbid TEXTRELs.
+// See https://github.com/rust-lang/rust/issues/68794
+
+//@ ignore-cross-compile
+//@ ignore-windows
+// Reason: There is no `bar.dll` produced by CC to run readobj on
+
+use run_make_support::{
+    cc, dynamic_lib_name, extra_c_flags, extra_cxx_flags, llvm_readobj, rustc, static_lib_name,
+};
+
+fn main() {
+    rustc().input("foo.rs").run();
+    cc().input("bar.c")
+        .input(static_lib_name("foo"))
+        .out_exe(&dynamic_lib_name("bar"))
+        .arg("-fPIC")
+        .arg("-shared")
+        .args(&extra_c_flags())
+        .args(&extra_cxx_flags())
+        .run();
+    llvm_readobj()
+        .input(dynamic_lib_name("bar"))
+        .arg("--dynamic")
+        .run()
+        .assert_stdout_not_contains("TEXTREL");
+}
diff --git a/tests/run-make/unknown-mod-stdin/Makefile b/tests/run-make/unknown-mod-stdin/Makefile
deleted file mode 100644
index 313b0ba837e..00000000000
--- a/tests/run-make/unknown-mod-stdin/Makefile
+++ /dev/null
@@ -1,8 +0,0 @@
-# ignore-windows
-
-include ../tools.mk
-
-all:
-	echo 'mod unknown;' | $(RUSTC) --crate-type rlib - >$(TMPDIR)/unknown-mod.stdout 2>$(TMPDIR)/unknown-mod.stderr || echo "failed successfully"
-	$(RUSTC_TEST_OP) "$(TMPDIR)"/unknown-mod.stdout unknown-mod.stdout
-	$(RUSTC_TEST_OP) "$(TMPDIR)"/unknown-mod.stderr unknown-mod.stderr
diff --git a/tests/run-make/unknown-mod-stdin/rmake.rs b/tests/run-make/unknown-mod-stdin/rmake.rs
new file mode 100644
index 00000000000..0fe5c78ed0f
--- /dev/null
+++ b/tests/run-make/unknown-mod-stdin/rmake.rs
@@ -0,0 +1,25 @@
+// Rustc displays a compilation error when it finds a `mod` (module)
+// statement referencing a file that does not exist. However, a bug from 2019
+// caused invalid `mod` statements to silently insert empty inline modules
+// instead of showing an error if the invalid `mod` statement had been passed
+// through standard input. This test checks that this bug does not make a resurgence.
+// See https://github.com/rust-lang/rust/issues/65601
+
+// NOTE: This is not a UI test, because the bug which this test
+// is checking for is specifically tied to passing
+// `mod unknown;` through standard input.
+
+use run_make_support::{diff, rustc};
+
+fn main() {
+    let out = rustc().crate_type("rlib").stdin(b"mod unknown;").arg("-").run_fail();
+    diff()
+        .actual_text("actual-stdout", out.stdout_utf8())
+        .expected_file("unknown-mod.stdout")
+        .run();
+    diff()
+        .actual_text("actual-stderr", out.stderr_utf8())
+        .expected_file("unknown-mod.stderr")
+        .normalize(r#"\\"#, "/")
+        .run();
+}
diff --git a/tests/run-make/used-cdylib-macos/Makefile b/tests/run-make/used-cdylib-macos/Makefile
deleted file mode 100644
index bdf914a1ca9..00000000000
--- a/tests/run-make/used-cdylib-macos/Makefile
+++ /dev/null
@@ -1,11 +0,0 @@
-include ../tools.mk
-
-# only-apple
-#
-# This checks that `#[used]` passes through to the linker on
-# Apple targets. This is subject to change in the future, see
-# https://github.com/rust-lang/rust/pull/93718 for discussion
-
-all:
-	$(RUSTC) -Copt-level=3 dylib_used.rs
-	nm $(TMPDIR)/libdylib_used.dylib | $(CGREP) VERY_IMPORTANT_SYMBOL
diff --git a/tests/run-make/used-cdylib-macos/rmake.rs b/tests/run-make/used-cdylib-macos/rmake.rs
new file mode 100644
index 00000000000..ad95ad640f0
--- /dev/null
+++ b/tests/run-make/used-cdylib-macos/rmake.rs
@@ -0,0 +1,16 @@
+// This checks that `#[used]` passes through to the linker on
+// Apple targets. This is subject to change in the future.
+// See https://github.com/rust-lang/rust/pull/93718
+
+//@ only-apple
+
+use run_make_support::{dynamic_lib_name, llvm_readobj, rustc};
+
+fn main() {
+    rustc().opt_level("3").input("dylib_used.rs").run();
+    llvm_readobj()
+        .input(dynamic_lib_name("dylib_used"))
+        .arg("--all")
+        .run()
+        .assert_stdout_contains("VERY_IMPORTANT_SYMBOL");
+}