Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rollup of 7 pull requests #129348

Closed
wants to merge 20 commits into from
Closed
Changes from 3 commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
01b68b7
add `Thread::{into_raw, from_raw}`
ibraheemdev Jul 12, 2022
78caecf
Special case DUMMY_SP to emit line 0/column 0 locations on DWARF plat…
khuey Aug 4, 2024
e587855
Use Span::is_dummy().
khuey Aug 4, 2024
5dc4a19
Fix warning.
khuey Aug 4, 2024
803cbaf
Add f16 and f128 to tests/ui/consts/const-float-bits-conv.rs
rezwanahmedsami Aug 17, 2024
9f39427
Added #[cfg(target_arch = x86_64)] to f16 and f128
rezwanahmedsami Aug 18, 2024
35752cf
Update `library/Cargo.toml` in weekly job
tgross35 Aug 19, 2024
76fbf0a
Test wholearchive on rust staticlib
ChrisDenton Aug 18, 2024
3c735a0
Add a test.
khuey Aug 20, 2024
4e9725c
Add a comment.
khuey Aug 20, 2024
9d7574f
rustdoc: animate the `:target` highlight
notriddle Aug 19, 2024
40af214
Make import libraries compatible with wholearchive
ChrisDenton Aug 19, 2024
c78e7fa
Do not ICE on non-ADT rcvr type when looking for crate version collision
estebank Aug 18, 2024
b234f17
Rollup merge of #97524 - ibraheemdev:thread-raw, r=joshtriplett
tgross35 Aug 21, 2024
e147e30
Rollup merge of #128627 - khuey:DUMMY_SP-line-no, r=nnethercote
tgross35 Aug 21, 2024
61cc570
Rollup merge of #129190 - rezwanahmedsami:master, r=tgross35
tgross35 Aug 21, 2024
aca99a2
Rollup merge of #129250 - estebank:issue-129205, r=compiler-errors
tgross35 Aug 21, 2024
114c21f
Rollup merge of #129257 - ChrisDenton:rename-null-descriptor, r=jieyouxu
tgross35 Aug 21, 2024
e3012a0
Rollup merge of #129264 - tgross35:dependencies-ci-library, r=Kobzol
tgross35 Aug 21, 2024
8e4e58c
Rollup merge of #129284 - notriddle:notriddle/animate-target=light, r…
tgross35 Aug 21, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions Cargo.lock
Original file line number Diff line number Diff line change
@@ -195,9 +195,9 @@ dependencies = [

[[package]]
name = "ar_archive_writer"
version = "0.4.0"
version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "de11a9d32db3327f981143bdf699ade4d637c6887b13b97e6e91a9154666963c"
checksum = "01667f6f40216b9a0b2945e05fed5f1ad0ab6470e69cb9378001e37b1c0668e4"
dependencies = [
"object 0.36.3",
]
2 changes: 1 addition & 1 deletion compiler/rustc_codegen_ssa/Cargo.toml
Original file line number Diff line number Diff line change
@@ -5,7 +5,7 @@ edition = "2021"

[dependencies]
# tidy-alphabetical-start
ar_archive_writer = "0.4.0"
ar_archive_writer = "0.4.2"
arrayvec = { version = "0.7", default-features = false }
bitflags = "2.4.1"
cc = "1.0.90"
6 changes: 5 additions & 1 deletion compiler/rustc_codegen_ssa/src/back/archive.rs
Original file line number Diff line number Diff line change
@@ -108,7 +108,11 @@ pub trait ArchiveBuilderBuilder {
&exports,
machine,
!sess.target.is_like_msvc,
/*comdat=*/ false,
// Enable compatibility with MSVC's `/WHOLEARCHIVE` flag.
// Without this flag a duplicate symbol error would be emitted
// when linking a rust staticlib using `/WHOLEARCHIVE`.
// See #129020
true,
) {
sess.dcx()
.emit_fatal(ErrorCreatingImportLibrary { lib_name, error: error.to_string() });
1 change: 1 addition & 0 deletions tests/run-make/msvc-wholearchive/c.c
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
// This page is intentionally left blank
4 changes: 4 additions & 0 deletions tests/run-make/msvc-wholearchive/dll.def
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
LIBRARY dll
EXPORTS
hello
number
52 changes: 52 additions & 0 deletions tests/run-make/msvc-wholearchive/rmake.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
//! This is a regression test for #129020
//! It ensures we can use `/WHOLEARCHIVE` to link a rust staticlib into DLL
//! using the MSVC linker
//@ only-msvc
// Reason: this is testing the MSVC linker

use std::path::PathBuf;

use run_make_support::{cc, cmd, env_var, extra_c_flags, rustc};

fn main() {
// Build the staticlib
rustc().crate_type("staticlib").input("static.rs").output("static.lib").run();
// Build an empty object to pass to the linker.
cc().input("c.c").output("c.obj").args(["-c"]).run();

// Find the C toolchain's linker.
let mut linker = PathBuf::from(env_var("CC"));
let linker_flavour = if linker.file_stem().is_some_and(|s| s == "cl") {
linker.set_file_name("link.exe");
"msvc"
} else if linker.file_stem().is_some_and(|s| s == "clang-cl") {
linker.set_file_name("lld-link.exe");
"llvm"
} else {
panic!("unknown C toolchain");
};

// As a sanity check, make sure this works without /WHOLEARCHIVE.
// Otherwise the actual test failure may be caused by something else.
cmd(&linker)
.args(["c.obj", "./static.lib", "-dll", "-def:dll.def", "-out:dll.dll"])
.args(extra_c_flags())
.run();

// FIXME(@ChrisDenton): this doesn't currently work with llvm's lld-link for other reasons.
// May need LLVM patches.
if linker_flavour == "msvc" {
// Link in the staticlib using `/WHOLEARCHIVE` and produce a DLL.
cmd(&linker)
.args([
"c.obj",
"-WHOLEARCHIVE:./static.lib",
"-dll",
"-def:dll.def",
"-out:dll_whole_archive.dll",
])
.args(extra_c_flags())
.run();
}
}
9 changes: 9 additions & 0 deletions tests/run-make/msvc-wholearchive/static.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#[no_mangle]
pub extern "C" fn hello() {
println!("Hello world!");
}

#[no_mangle]
pub extern "C" fn number() -> u32 {
42
}