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

MSVC targets should use COFF as their archive format #123467

Merged
merged 1 commit into from Apr 6, 2024

Conversation

dpaoliello
Copy link
Contributor

While adding support for Arm64EC I ran into an issue where the standard library's rlib was missing the "EC Symbol Table" which is required for the MSVC linker to find import library symbols (generated by Rust's raw-dylib feature) when building for EC.

The root cause of the issue is that LLVM only generated symbol tables (including the EC Symbol Table) if the ArchiveKind is COFF, but the MSVC targets didn't set their archive format, so it was defaulting to GNU.

@rustbot
Copy link
Collaborator

rustbot commented Apr 4, 2024

r? @Kobzol

rustbot has assigned @Kobzol.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

@rustbot rustbot added A-testsuite Area: The testsuite used to check the correctness of rustc S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-infra Relevant to the infrastructure team, which will review and decide on the PR/issue. labels Apr 4, 2024
@dpaoliello
Copy link
Contributor Author

r? @wesleywiser
(Sorry, forgot that rustbot assigns reviewers even on draft PRs)

@rustbot rustbot assigned wesleywiser and unassigned Kobzol Apr 4, 2024
@rust-log-analyzer

This comment has been minimized.

@dpaoliello dpaoliello force-pushed the archcoff branch 2 times, most recently from 66d76fe to d95b6c1 Compare April 4, 2024 19:21
@rust-log-analyzer

This comment has been minimized.

@rust-log-analyzer

This comment has been minimized.

@dpaoliello
Copy link
Contributor Author

FYI, successful Windows build in CI: https://github.com/rust-lang/rust/actions/runs/8560549847?pr=123467

@dpaoliello dpaoliello marked this pull request as ready for review April 4, 2024 21:57
@rustbot
Copy link
Collaborator

rustbot commented Apr 4, 2024

These commits modify compiler targets.
(See the Target Tier Policy.)

@dpaoliello
Copy link
Contributor Author

@rustbot label -T-infra

@rustbot rustbot removed the T-infra Relevant to the infrastructure team, which will review and decide on the PR/issue. label Apr 4, 2024
@wesleywiser
Copy link
Member

@bors r+ rollup

@bors
Copy link
Contributor

bors commented Apr 5, 2024

📌 Commit 9d70907 has been approved by wesleywiser

It is now in the queue for this repository.

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Apr 5, 2024
bors added a commit to rust-lang-ci/rust that referenced this pull request Apr 6, 2024
…iaskrgr

Rollup of 7 pull requests

Successful merges:

 - rust-lang#123294 (Require LLVM_CONFIG to be set in rustc_llvm/build.rs)
 - rust-lang#123467 (MSVC targets should use COFF as their archive format)
 - rust-lang#123498 (explaining `DefKind::Field`)
 - rust-lang#123519 (Improve cfg and check-cfg configuration)
 - rust-lang#123525 (CFI: Don't rewrite ty::Dynamic directly)
 - rust-lang#123526 (Do not ICE when calling incorrectly defined `transmute` intrinsic)
 - rust-lang#123528 (Hide async_gen_internals from standard library documentation)

r? `@ghost`
`@rustbot` modify labels: rollup
@bors bors merged commit 84569f9 into rust-lang:master Apr 6, 2024
11 checks passed
@rustbot rustbot added this to the 1.79.0 milestone Apr 6, 2024
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Apr 6, 2024
Rollup merge of rust-lang#123467 - dpaoliello:archcoff, r=wesleywiser

MSVC targets should use COFF as their archive format

While adding support for Arm64EC I ran into an issue where the standard library's rlib was missing the "EC Symbol Table" which is required for the MSVC linker to find import library symbols (generated by Rust's `raw-dylib` feature) when building for EC.

The root cause of the issue is that LLVM only generated symbol tables (including the EC Symbol Table) if the `ArchiveKind` is `COFF`, but the MSVC targets didn't set their archive format, so it was defaulting to GNU.
@dpaoliello dpaoliello deleted the archcoff branch April 6, 2024 15:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-testsuite Area: The testsuite used to check the correctness of rustc S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants