about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/tools/tidy/src/allowed_run_make_makefiles.txt3
-rw-r--r--tests/run-make/mingw-export-call-convention/Makefile9
-rw-r--r--tests/run-make/mingw-export-call-convention/rmake.rs13
-rw-r--r--tests/run-make/mismatching-target-triples/Makefile11
-rw-r--r--tests/run-make/mismatching-target-triples/rmake.rs15
-rw-r--r--tests/run-make/pdb-alt-path/Makefile20
-rw-r--r--tests/run-make/pdb-alt-path/rmake.rs39
7 files changed, 67 insertions, 43 deletions
diff --git a/src/tools/tidy/src/allowed_run_make_makefiles.txt b/src/tools/tidy/src/allowed_run_make_makefiles.txt
index 73ef7c5ba25..6ea4b84d08c 100644
--- a/src/tools/tidy/src/allowed_run_make_makefiles.txt
+++ b/src/tools/tidy/src/allowed_run_make_makefiles.txt
@@ -100,8 +100,6 @@ run-make/macos-fat-archive/Makefile
 run-make/manual-link/Makefile
 run-make/metadata-dep-info/Makefile
 run-make/min-global-align/Makefile
-run-make/mingw-export-call-convention/Makefile
-run-make/mismatching-target-triples/Makefile
 run-make/missing-crate-dependency/Makefile
 run-make/mixing-libs/Makefile
 run-make/msvc-opt-minsize/Makefile
@@ -120,7 +118,6 @@ run-make/pass-linker-flags-flavor/Makefile
 run-make/pass-linker-flags-from-dep/Makefile
 run-make/pass-linker-flags/Makefile
 run-make/pass-non-c-like-enum-to-c/Makefile
-run-make/pdb-alt-path/Makefile
 run-make/pdb-buildinfo-cl-cmd/Makefile
 run-make/pgo-gen-lto/Makefile
 run-make/pgo-gen-no-imp-symbols/Makefile
diff --git a/tests/run-make/mingw-export-call-convention/Makefile b/tests/run-make/mingw-export-call-convention/Makefile
deleted file mode 100644
index 4a60059cc54..00000000000
--- a/tests/run-make/mingw-export-call-convention/Makefile
+++ /dev/null
@@ -1,9 +0,0 @@
-include ../tools.mk
-
-# only-windows-gnu
-
-all:
-	$(RUSTC) foo.rs
-	# FIXME: we should make sure __stdcall calling convention is used here
-	# but that only works with LLD right now
-	nm -g "$(call IMPLIB,foo)" | $(CGREP) bar
diff --git a/tests/run-make/mingw-export-call-convention/rmake.rs b/tests/run-make/mingw-export-call-convention/rmake.rs
new file mode 100644
index 00000000000..d1fb745a64d
--- /dev/null
+++ b/tests/run-make/mingw-export-call-convention/rmake.rs
@@ -0,0 +1,13 @@
+// On windows-gnu, symbol exporting used to fail to export names
+// with no_mangle. #72049 brought this feature up to par with msvc,
+// and this test checks that the symbol "bar" is successfully exported.
+// See https://github.com/rust-lang/rust/issues/50176
+
+//@ only-x86_64-pc-windows-gnu
+
+use run_make_support::{llvm_readobj, rustc};
+
+fn main() {
+    rustc().input("foo.rs").run();
+    llvm_readobj().arg("--all").input("libfoo.dll.a").run().assert_stdout_contains("bar");
+}
diff --git a/tests/run-make/mismatching-target-triples/Makefile b/tests/run-make/mismatching-target-triples/Makefile
deleted file mode 100644
index 409388e0414..00000000000
--- a/tests/run-make/mismatching-target-triples/Makefile
+++ /dev/null
@@ -1,11 +0,0 @@
-include ../tools.mk
-
-# Issue #10814
-#
-# these are no_std to avoid having to have the standard library or any
-# linkers/assemblers for the relevant platform
-
-all:
-	$(RUSTC) foo.rs --target=i686-unknown-linux-gnu
-	$(RUSTC) bar.rs --target=x86_64-unknown-linux-gnu 2>&1 \
-		| $(CGREP) 'couldn'"'"'t find crate `foo` with expected target triple x86_64-unknown-linux-gnu'
diff --git a/tests/run-make/mismatching-target-triples/rmake.rs b/tests/run-make/mismatching-target-triples/rmake.rs
new file mode 100644
index 00000000000..6f41eac8cda
--- /dev/null
+++ b/tests/run-make/mismatching-target-triples/rmake.rs
@@ -0,0 +1,15 @@
+// In this test, foo links against 32-bit architecture, and then, bar, which depends
+// on foo, links against 64-bit architecture, causing a metadata mismatch due to the
+// differences in target architectures. This used to cause an internal compiler error,
+// now replaced by a clearer normal error message. This test checks that this aforementioned
+// error message is used.
+// See https://github.com/rust-lang/rust/issues/10814
+
+use run_make_support::rustc;
+
+fn main() {
+    rustc().input("foo.rs").target("i686-unknown-linux-gnu").run();
+    rustc().input("bar.rs").target("x86_64-unknown-linux-gnu").run_fail().assert_stderr_contains(
+        r#"couldn't find crate `foo` with expected target triple x86_64-unknown-linux-gnu"#,
+    );
+}
diff --git a/tests/run-make/pdb-alt-path/Makefile b/tests/run-make/pdb-alt-path/Makefile
deleted file mode 100644
index 7a0ae3bf2ef..00000000000
--- a/tests/run-make/pdb-alt-path/Makefile
+++ /dev/null
@@ -1,20 +0,0 @@
-include ../tools.mk
-
-# only-windows-msvc
-
-all:
-	# Test that we don't have the full path to the PDB file in the binary
-	$(RUSTC) main.rs -g --crate-name my_crate_name --crate-type bin -Cforce-frame-pointers
-	$(CGREP) "my_crate_name.pdb" < $(TMPDIR)/my_crate_name.exe
-	$(CGREP) -v "\\my_crate_name.pdb" < $(TMPDIR)/my_crate_name.exe
-
-	# Test that backtraces still can find debuginfo by checking that they contain symbol names and
-	# source locations.
-	$(TMPDIR)/my_crate_name.exe &> $(TMPDIR)/backtrace.txt
-	$(CGREP) "my_crate_name::fn_in_backtrace" < $(TMPDIR)/backtrace.txt
-	$(CGREP) "main.rs:15" < $(TMPDIR)/backtrace.txt
-
-	# Test that explicitly passed `-Clink-arg=/PDBALTPATH:...` is respected
-	$(RUSTC) main.rs -g --crate-name my_crate_name --crate-type bin -Clink-arg=/PDBALTPATH:abcdefg.pdb -Cforce-frame-pointers
-	$(CGREP) "abcdefg.pdb" < $(TMPDIR)/my_crate_name.exe
-	$(CGREP) -v "my_crate_name.pdb" < $(TMPDIR)/my_crate_name.exe
diff --git a/tests/run-make/pdb-alt-path/rmake.rs b/tests/run-make/pdb-alt-path/rmake.rs
new file mode 100644
index 00000000000..6311d6d9ed7
--- /dev/null
+++ b/tests/run-make/pdb-alt-path/rmake.rs
@@ -0,0 +1,39 @@
+// The information inside a .exe file contains a string of the PDB file name.
+// This could be a security concern if the full path was exposed, as it could
+// reveal information about the filesystem where the bin was first compiled.
+// This should only be overridden by `-Clink-arg=/PDBALTPATH:...` - this test
+// checks that no full file paths are exposed and that the override flag is respected.
+// See https://github.com/rust-lang/rust/pull/121297
+
+//@ only-x86_64-pc-windows-msvc
+
+use run_make_support::{bin_name, invalid_utf8_contains, invalid_utf8_not_contains, run, rustc};
+
+fn main() {
+    // Test that we don't have the full path to the PDB file in the binary
+    rustc()
+        .input("main.rs")
+        .arg("-g")
+        .crate_name("my_crate_name")
+        .crate_type("bin")
+        .arg("-Cforce-frame-pointers")
+        .run();
+    invalid_utf8_contains(&bin_name("my_crate_name"), "my_crate_name.pdb");
+    invalid_utf8_not_contains(&bin_name("my_crate_name"), r#"\my_crate_name.pdb"#);
+    // Test that backtraces still can find debuginfo by checking that they contain symbol names and
+    // source locations.
+    let out = run(&bin_name("my_crate_name"));
+    out.assert_stdout_contains("my_crate_name::fn_in_backtrace");
+    out.assert_stdout_contains("main.rs:15");
+    // Test that explicitly passed `-Clink-arg=/PDBALTPATH:...` is respected
+    rustc()
+        .input("main.rs")
+        .arg("-g")
+        .crate_name("my_crate_name")
+        .crate_type("bin")
+        .link_arg("/PDBALTPATH:abcdefg.pdb")
+        .arg("-Cforce-frame-pointers")
+        .run();
+    invalid_utf8_contains(&bin_name("my_crate_name"), "abcdefg.pdb");
+    invalid_utf8_not_contains(&bin_name("my_crate_name"), "my_crate_name.pdb");
+}