From 7d5ff8b8bd5b1bf4721fd9a3e34b2e90e670be09 Mon Sep 17 00:00:00 2001 From: Chris Denton Date: Mon, 30 Dec 2024 11:25:00 +0000 Subject: [PATCH 1/2] Windows: Enable issue 70093 link tests --- src/tools/tidy/src/issues.txt | 2 -- .../issue-70093/issue-70093.rs | 10 ---------- ...-link-directives.rs => link-directives.rs} | 1 - .../issue-70093/link-native-libraries.rs | 20 +++++++++++++++++++ 4 files changed, 20 insertions(+), 13 deletions(-) delete mode 100644 tests/ui/link-native-libs/issue-70093/issue-70093.rs rename tests/ui/link-native-libs/issue-70093/{issue-70093-link-directives.rs => link-directives.rs} (82%) create mode 100644 tests/ui/link-native-libs/issue-70093/link-native-libraries.rs diff --git a/src/tools/tidy/src/issues.txt b/src/tools/tidy/src/issues.txt index 25cd32063aab8..54de2ef83148f 100644 --- a/src/tools/tidy/src/issues.txt +++ b/src/tools/tidy/src/issues.txt @@ -2710,8 +2710,6 @@ ui/limits/issue-75158-64.rs ui/link-native-libs/issue-109144.rs ui/link-native-libs/issue-43925.rs ui/link-native-libs/issue-43926.rs -ui/link-native-libs/issue-70093/issue-70093-link-directives.rs -ui/link-native-libs/issue-70093/issue-70093.rs ui/linkage-attr/auxiliary/issue-12133-dylib.rs ui/linkage-attr/auxiliary/issue-12133-dylib2.rs ui/linkage-attr/auxiliary/issue-12133-rlib.rs diff --git a/tests/ui/link-native-libs/issue-70093/issue-70093.rs b/tests/ui/link-native-libs/issue-70093/issue-70093.rs deleted file mode 100644 index 8697423933893..0000000000000 --- a/tests/ui/link-native-libs/issue-70093/issue-70093.rs +++ /dev/null @@ -1,10 +0,0 @@ -//@ run-pass -//@ compile-flags: -Zlink-native-libraries=no -Cdefault-linker-libraries=yes -//@ ignore-windows - this will probably only work on unixish systems -//@ ignore-fuchsia - missing __libc_start_main for some reason (#84733) -//@ ignore-cross-compile - default-linker-libraries=yes doesn't play well with cross compiling - -#[link(name = "some-random-non-existent-library", kind = "static")] -extern "C" {} - -fn main() {} diff --git a/tests/ui/link-native-libs/issue-70093/issue-70093-link-directives.rs b/tests/ui/link-native-libs/issue-70093/link-directives.rs similarity index 82% rename from tests/ui/link-native-libs/issue-70093/issue-70093-link-directives.rs rename to tests/ui/link-native-libs/issue-70093/link-directives.rs index 9c60affbccd59..c67536d39e7f1 100644 --- a/tests/ui/link-native-libs/issue-70093/issue-70093-link-directives.rs +++ b/tests/ui/link-native-libs/issue-70093/link-directives.rs @@ -1,6 +1,5 @@ //@ run-pass //@ compile-flags: -Zlink-directives=no -//@ ignore-windows - this will probably only work on unixish systems //@ ignore-fuchsia - missing __libc_start_main for some reason (#84733) //@ ignore-cross-compile - default-linker-libraries=yes doesn't play well with cross compiling diff --git a/tests/ui/link-native-libs/issue-70093/link-native-libraries.rs b/tests/ui/link-native-libs/issue-70093/link-native-libraries.rs new file mode 100644 index 0000000000000..3e14e33ba3940 --- /dev/null +++ b/tests/ui/link-native-libs/issue-70093/link-native-libraries.rs @@ -0,0 +1,20 @@ +//@ run-pass +//@ compile-flags: -Zlink-native-libraries=no -Cdefault-linker-libraries=yes +//@ ignore-fuchsia - missing __libc_start_main for some reason (#84733) +//@ ignore-cross-compile - default-linker-libraries=yes doesn't play well with cross compiling + +//@ revisions: other +//@[other] ignore-msvc + +//@ revisions: msvc +// On Windows MSVC, default-linker-libraries=yes doesn't work because +// rustc drives the linker directly instead of going through another compiler. +// Therefore rustc would need to implement default-linker-libraries itself but doesn't. +// So instead we use -Clink-arg to directly set the required msvcrt.lib as a link arg. +//@[msvc] compile-flags: -Clink-arg=msvcrt.lib +//@[msvc] only-msvc + +#[link(name = "some-random-non-existent-library", kind = "static")] +extern "C" {} + +fn main() {} From dc1f2be449d5452f2f89855b7476b716bed7f671 Mon Sep 17 00:00:00 2001 From: Chris Denton Date: Tue, 31 Dec 2024 02:25:35 +0000 Subject: [PATCH 2/2] Add comments to -Zlink-* tests --- tests/ui/link-native-libs/issue-70093/link-directives.rs | 5 +++++ .../link-native-libs/issue-70093/link-native-libraries.rs | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/tests/ui/link-native-libs/issue-70093/link-directives.rs b/tests/ui/link-native-libs/issue-70093/link-directives.rs index c67536d39e7f1..1dc44c996fcd9 100644 --- a/tests/ui/link-native-libs/issue-70093/link-directives.rs +++ b/tests/ui/link-native-libs/issue-70093/link-directives.rs @@ -1,8 +1,13 @@ +// Ensure that `#[link]` attributes are entirely ignore when using `-Zlink-directives=no`. + //@ run-pass //@ compile-flags: -Zlink-directives=no //@ ignore-fuchsia - missing __libc_start_main for some reason (#84733) //@ ignore-cross-compile - default-linker-libraries=yes doesn't play well with cross compiling +// Usually these `#[link]` attribute would cause `libsome-random-non-existent-library` +// to be passed to the linker, causing it to fail because the file doesn't exist. +// However, with -Zlink-directives=no, the `#[link]` is ignored. #[link(name = "some-random-non-existent-library", kind = "static")] extern "C" {} diff --git a/tests/ui/link-native-libs/issue-70093/link-native-libraries.rs b/tests/ui/link-native-libs/issue-70093/link-native-libraries.rs index 3e14e33ba3940..b4dc9fb5cde17 100644 --- a/tests/ui/link-native-libs/issue-70093/link-native-libraries.rs +++ b/tests/ui/link-native-libs/issue-70093/link-native-libraries.rs @@ -1,3 +1,6 @@ +// Ensure that rust does not pass native libraries to the linker when +// `-Zlink-native-libraries=no` is used. + //@ run-pass //@ compile-flags: -Zlink-native-libraries=no -Cdefault-linker-libraries=yes //@ ignore-fuchsia - missing __libc_start_main for some reason (#84733) @@ -14,6 +17,9 @@ //@[msvc] compile-flags: -Clink-arg=msvcrt.lib //@[msvc] only-msvc +// Usually these `#[link]` attribute would cause `libsome-random-non-existent-library` +// to be passed to the linker, causing it to fail because the file doesn't exist. +// However, -Zlink-native-libraries=no disables that. #[link(name = "some-random-non-existent-library", kind = "static")] extern "C" {}