mirror of
https://github.com/rust-lang/rust
synced 2024-10-06 08:40:35 +00:00
Rollup merge of #126805 - Oneirical:weaves-of-testiny, r=Kobzol
Migrate `pdb-alt-path`, `mismatching-target-triples` and `mingw-export-call-convention` `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). Needs MSVC try jobs. try-job: x86_64-mingw try-job: x86_64-msvc
This commit is contained in:
commit
06aeb679f6
|
@ -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
|
||||
|
|
|
@ -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
|
13
tests/run-make/mingw-export-call-convention/rmake.rs
Normal file
13
tests/run-make/mingw-export-call-convention/rmake.rs
Normal file
|
@ -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");
|
||||
}
|
|
@ -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'
|
15
tests/run-make/mismatching-target-triples/rmake.rs
Normal file
15
tests/run-make/mismatching-target-triples/rmake.rs
Normal file
|
@ -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"#,
|
||||
);
|
||||
}
|
|
@ -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
|
39
tests/run-make/pdb-alt-path/rmake.rs
Normal file
39
tests/run-make/pdb-alt-path/rmake.rs
Normal file
|
@ -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");
|
||||
}
|
Loading…
Reference in a new issue