Other calling conventions #979
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR adds support for other calling conventions as discussed in #55 and #718. It adds an ABI field (instead of just an extern field) to
Functions and adds a concept ofPredefineswhich right now only contains the compiler/platform-specific#definesneeded to make the calling conventions work nicely but may be useful in the future for other cases where something needs to look at all the code, then conditionally emit some lines at the top of the file.This use case is very important to my work to adopt Rust for UEFI/firmware programming, since cbindgen is needed to integrate Rust into existing C codebases easily. Most of these environments define an explicit calling convention, which we need to be able to export from Rust code for interoperability.