-
Notifications
You must be signed in to change notification settings - Fork 12.9k
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
Start adding an aarch64-pc-windows-msvc
target
#53173
Conversation
cc @froydnj |
r? @sfackler (rust_highfive has picked a reviewer for you, use r? to override) |
The job Click to expand the log.
I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact |
Given the test file in LLVM repo, shouldn't this call |
Perhaps! I'm thinking though it's probably best to stick to the convention we already have for our MSVC targets |
Ping from triage @sfackler. This PR requires your review. |
cc #52659 |
/// | ||
/// This allows you to conveniently provide a long list `#[cfg]`'d blocks of code | ||
/// without having to rewrite each clause multiple times. | ||
macro_rules! cfg_if { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Don't we already pull the cfg_if crate in?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nah unfortunately for libstd it's trickier, so it's just inlined here in our facade crates
|
||
// FIXME: this shouldn't be panic=abort, it should be panic=unwind | ||
base.panic_strategy = PanicStrategy::Abort; | ||
base.linker = Some("rust-lld".to_owned()); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is the use of LLD a fixme or the right long term approach?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sort of! Using LLD would be nice in that it's likely faster than link.exe and we can fix bugs more easily (and probably use more features), but for the time being it's a FIXME in that the native linker aborted earlier than I expected.
I suspect that long term we'll be using link.exe like the other MSVC targets unless we have strong reasons to not do so. (like now with it being seemingly buggy)
@bors r+ |
📌 Commit 5863dee3d340145d34f1515f61e26e9f1a289ead has been approved by |
⌛ Testing commit 5863dee3d340145d34f1515f61e26e9f1a289ead with merge ff6daf7b6024ad7716f56115af6116620b56f0c2... |
💔 Test failed - status-travis |
The job Click to expand the log.
I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact |
This commit adds the necessary definitions for target specs and such as well as the necessary support in libstd to compile basic `aarch64-pc-windows-msvc` binaries. The target is not currently built on CI, but it can be built locally with: ./configure --target=aarch64-pc-windows-msvc --set rust.lld ./x.py build src/libstd --target aarch64-pc-windows-msvc Currently this fails to build `libtest` due to a linker bug (seemingly in LLD?) which hasn't been investigate yet. Otherwise though with libstd you can build a hello world program (linked with LLD). I've not tried to execute it yet, but it at least links! Full support for this target is still a long road ahead, but this is hopefully a good stepping stone to get started. Points of note about this target are: * Currently defaults to `panic=abort` as support is still landing in LLVM for SEH on AArch64. * Currently defaults to LLD as a linker as I was able to get farther with it than I was with `link.exe`
5863dee
to
fccc04d
Compare
@bors: r=sfackler |
📌 Commit fccc04d has been approved by |
⌛ Testing commit fccc04d with merge bd69a2b419784a95663514816db52c1048607a71... |
💔 Test failed - status-travis |
The job Click to expand the log.
I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact |
Start adding an `aarch64-pc-windows-msvc` target This commit adds the necessary definitions for target specs and such as well as the necessary support in libstd to compile basic `aarch64-pc-windows-msvc` binaries. The target is not currently built on CI, but it can be built locally with: ./configure --target=aarch64-pc-windows-msvc --set rust.lld ./x.py build src/libstd --target aarch64-pc-windows-msvc Currently this fails to build `libtest` due to a linker bug (seemingly in LLD?) which hasn't been investigate yet. Otherwise though with libstd you can build a hello world program (linked with LLD). I've not tried to execute it yet, but it at least links! Full support for this target is still a long road ahead, but this is hopefully a good stepping stone to get started. Points of note about this target are: * Currently defaults to `panic=abort` as support is still landing in LLVM for SEH on AArch64. * Currently defaults to LLD as a linker as I was able to get farther with it than I was with `link.exe`
☀️ Test successful - status-appveyor, status-travis |
…dorn This is the LLVM target name that's getting used in rust-lang/rust#53173.
…dorn This is the LLVM target name that's getting used in rust-lang/rust#53173.
…dorn This is the LLVM target name that's getting used in rust-lang/rust#53173. UltraBlame original commit: aebd6f51d2e5125b1a0be102a6f1c93fa377425f
…dorn This is the LLVM target name that's getting used in rust-lang/rust#53173. UltraBlame original commit: aebd6f51d2e5125b1a0be102a6f1c93fa377425f
…dorn This is the LLVM target name that's getting used in rust-lang/rust#53173. UltraBlame original commit: aebd6f51d2e5125b1a0be102a6f1c93fa377425f
This commit adds the necessary definitions for target specs and such as well as
the necessary support in libstd to compile basic
aarch64-pc-windows-msvc
binaries. The target is not currently built on CI, but it can be built locally
with:
Currently this fails to build
libtest
due to a linker bug (seemingly in LLD?)which hasn't been investigate yet. Otherwise though with libstd you can build a
hello world program (linked with LLD). I've not tried to execute it yet, but it
at least links!
Full support for this target is still a long road ahead, but this is hopefully a
good stepping stone to get started.
Points of note about this target are:
panic=abort
as support is still landing in LLVM forSEH on AArch64.
than I was with
link.exe