Update run-make test
This commit is contained in:
parent
db0b491258
commit
4bdd671358
5 changed files with 25 additions and 4 deletions
2
tests/run-make/linker-warning/bar.rs
Normal file
2
tests/run-make/linker-warning/bar.rs
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
#[repr(C)]
|
||||
pub struct Bar(u32);
|
||||
2
tests/run-make/linker-warning/foo.rs
Normal file
2
tests/run-make/linker-warning/foo.rs
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
#[repr(C)]
|
||||
pub struct Foo(u32);
|
||||
|
|
@ -1 +1,10 @@
|
|||
fn main() {}
|
||||
unsafe extern "C" {
|
||||
#[cfg(only_foo)]
|
||||
fn does_not_exist(p: *const u8) -> *const foo::Foo;
|
||||
#[cfg(not(only_foo))]
|
||||
fn does_not_exist(p: *const bar::Bar) -> *const foo::Foo;
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let _ = unsafe { does_not_exist(core::ptr::null()) };
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ fn run_rustc() -> Rustc {
|
|||
.arg("-Clink-self-contained=-linker")
|
||||
.arg("-Zunstable-options")
|
||||
.arg("-Wlinker-messages")
|
||||
.args(["--extern", "foo", "--extern", "bar"])
|
||||
.output("main")
|
||||
.linker("./fake-linker");
|
||||
if run_make_support::target() == "x86_64-unknown-linux-gnu" {
|
||||
|
|
@ -21,8 +22,10 @@ fn run_rustc() -> Rustc {
|
|||
}
|
||||
|
||||
fn main() {
|
||||
// first, compile our linker
|
||||
// first, compile our linker and our dependencies
|
||||
rustc().arg("fake-linker.rs").output("fake-linker").run();
|
||||
rustc().arg("foo.rs").crate_type("rlib").run();
|
||||
rustc().arg("bar.rs").crate_type("rlib").run();
|
||||
|
||||
// Run rustc with our fake linker, and make sure it shows warnings
|
||||
let warnings = run_rustc().link_arg("run_make_warn").run();
|
||||
|
|
@ -48,7 +51,8 @@ fn main() {
|
|||
let out = run_rustc().link_arg("run_make_error").run_fail();
|
||||
out.assert_stderr_contains("fake-linker")
|
||||
.assert_stderr_contains("object files omitted")
|
||||
.assert_stderr_contains_regex(r"\{")
|
||||
.assert_stderr_contains("/{libfoo,libbar}.rlib\"")
|
||||
.assert_stderr_contains("-*}.rlib\"")
|
||||
.assert_stderr_not_contains(r".rcgu.o")
|
||||
.assert_stderr_not_contains_regex(r"lib(/|\\\\)libstd");
|
||||
|
||||
|
|
@ -68,6 +72,10 @@ fn main() {
|
|||
.run();
|
||||
}
|
||||
|
||||
// Make sure a single dependency doesn't use brace expansion.
|
||||
let out1 = run_rustc().cfg("only_foo").link_arg("run_make_error").run_fail();
|
||||
out1.assert_stderr_contains("fake-linker").assert_stderr_contains("/libfoo.rlib\"");
|
||||
|
||||
// Make sure we show linker warnings even across `-Z no-link`
|
||||
rustc()
|
||||
.arg("-Zno-link")
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
error: linking with `./fake-linker` failed: exit status: 1
|
||||
|
|
||||
= note: "./fake-linker" "-m64" "/symbols.o" "<2 object files omitted>" "-Wl,--as-needed" "-Wl,-Bstatic" "<sysroot>/lib/rustlib/x86_64-unknown-linux-gnu/lib/{libstd-*,libpanic_unwind-*,libobject-*,libmemchr-*,libaddr2line-*,libgimli-*,librustc_demangle-*,libstd_detect-*,libhashbrown-*,librustc_std_workspace_alloc-*,libminiz_oxide-*,libadler2-*,libunwind-*,libcfg_if-*,liblibc-*,librustc_std_workspace_core-*,liballoc-*,libcore-*,libcompiler_builtins-*}.rlib" "-Wl,-Bdynamic" "-lgcc_s" "-lutil" "-lrt" "-lpthread" "-lm" "-ldl" "-lc" "-L" "/raw-dylibs" "-Wl,--eh-frame-hdr" "-Wl,-z,noexecstack" "-L" "/build-root/test/run-make/linker-warning/rmake_out" "-L" "<sysroot>/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-o" "main" "-Wl,--gc-sections" "-pie" "-Wl,-z,relro,-z,now" "-nodefaultlibs" "run_make_error"
|
||||
= note: "./fake-linker" "-m64" "/symbols.o" "<2 object files omitted>" "-Wl,--as-needed" "-Wl,-Bstatic" "/build-root/test/run-make/linker-warning/rmake_out/{libfoo,libbar}.rlib" "<sysroot>/lib/rustlib/x86_64-unknown-linux-gnu/lib/{libstd-*,libpanic_unwind-*,libobject-*,libmemchr-*,libaddr2line-*,libgimli-*,librustc_demangle-*,libstd_detect-*,libhashbrown-*,librustc_std_workspace_alloc-*,libminiz_oxide-*,libadler2-*,libunwind-*,libcfg_if-*,liblibc-*,librustc_std_workspace_core-*,liballoc-*,libcore-*,libcompiler_builtins-*}.rlib" "-Wl,-Bdynamic" "-lgcc_s" "-lutil" "-lrt" "-lpthread" "-lm" "-ldl" "-lc" "-L" "/raw-dylibs" "-Wl,--eh-frame-hdr" "-Wl,-z,noexecstack" "-L" "/build-root/test/run-make/linker-warning/rmake_out" "-L" "<sysroot>/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-o" "main" "-Wl,--gc-sections" "-pie" "-Wl,-z,relro,-z,now" "-nodefaultlibs" "run_make_error"
|
||||
= note: some arguments are omitted. use `--verbose` to show all linker arguments
|
||||
= note: error: baz
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue