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

Properly define va_arg and va_list for aarch64-apple-darwin #78126

Merged
merged 2 commits into from
Oct 26, 2020

Conversation

shepmaster
Copy link
Member

@shepmaster shepmaster commented Oct 20, 2020

From Apple:

Because of these changes, the type va_list is an alias for char*,
and not for the struct type in the generic procedure call standard.

With this change /x.py test --stage 1 src/test/ui/abi/variadic-ffi
passes.

Fixes #78092

@shepmaster
Copy link
Member Author

r? @nagisa

/cc @dlrobertson

@shepmaster
Copy link
Member Author

Please double check my configuration attributes. I definitely screwed them up two times during development.

@camelid camelid added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Oct 20, 2020
@shepmaster shepmaster added C-bug Category: This is a bug. F-c_variadic `#![feature(c_variadic)]` O-Arm Target: 32-bit Arm processors (armv6, armv7, thumb...), including 64-bit Arm in AArch32 state O-macos Operating system: macOS A-FFI Area: Foreign function interface (FFI) and removed C-bug Category: This is a bug. F-c_variadic `#![feature(c_variadic)]` O-Arm Target: 32-bit Arm processors (armv6, armv7, thumb...), including 64-bit Arm in AArch32 state O-macos Operating system: macOS labels Oct 20, 2020
Copy link
Contributor

@dlrobertson dlrobertson left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch! I thought the only case we needed to force a void pointer variant of a va_list for apple was on iOS.

compiler/rustc_codegen_llvm/src/va_arg.rs Outdated Show resolved Hide resolved
@shepmaster
Copy link
Member Author

shepmaster commented Oct 20, 2020

was on iOS.

You were right! 😉 The new aarch64-apple-darwin target didn't exist when this code was written. :-)

@dlrobertson
Copy link
Contributor

Looks good to me!

@nagisa
Copy link
Member

nagisa commented Oct 23, 2020

r=me, your call if you want to do anything about the style comment.

library/core/src/ffi.rs Outdated Show resolved Hide resolved
Copy link
Contributor

@dlrobertson dlrobertson left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for updating the match statement to use a match arm guard instead of the tuple matching! I think it looks a good bit cleaner.

library/core/src/ffi.rs Outdated Show resolved Hide resolved
From [Apple][]:

> Because of these changes, the type `va_list` is an alias for `char*`,
> and not for the struct type in the generic procedure call standard.

With this change `/x.py test --stage 1 src/test/ui/abi/variadic-ffi`
passes.

Fixes rust-lang#78092

[Apple]: https://developer.apple.com/documentation/xcode/writing_arm64_code_for_apple_platforms
@nagisa
Copy link
Member

nagisa commented Oct 26, 2020

@bors r+

@bors
Copy link
Contributor

bors commented Oct 26, 2020

📌 Commit 0a91755 has been approved by nagisa

@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 Oct 26, 2020
bors added a commit to rust-lang-ci/rust that referenced this pull request Oct 26, 2020
Rollup of 10 pull requests

Successful merges:

 - rust-lang#74477 (`#[deny(unsafe_op_in_unsafe_fn)]` in sys/wasm)
 - rust-lang#77836 (transmute_copy: explain that alignment is handled correctly)
 - rust-lang#78126 (Properly define va_arg and va_list for aarch64-apple-darwin)
 - rust-lang#78137 (Initialize tracing subscriber in compiletest tool)
 - rust-lang#78161 (Add issue template link to IRLO)
 - rust-lang#78214 (Tweak match arm semicolon removal suggestion to account for futures)
 - rust-lang#78247 (Fix rust-lang#78192)
 - rust-lang#78252 (Add codegen test for rust-lang#45964)
 - rust-lang#78268 (Do not try to report on closures to avoid ICE)
 - rust-lang#78295 (Add some regression tests)

Failed merges:

r? `@ghost`
@bors bors merged commit 147a001 into rust-lang:master Oct 26, 2020
@rustbot rustbot added this to the 1.49.0 milestone Oct 26, 2020
@shepmaster shepmaster deleted the aarch64-apple-darwin-valist branch October 26, 2020 13:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-FFI Area: Foreign function interface (FFI) C-bug Category: This is a bug. F-c_variadic `#![feature(c_variadic)]` O-Arm Target: 32-bit Arm processors (armv6, armv7, thumb...), including 64-bit Arm in AArch32 state O-macos Operating system: macOS S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Variadic FFI test fails on aarch64-apple-darwin
6 participants