-
Notifications
You must be signed in to change notification settings - Fork 212
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
Fix compilation errors for Armv8-M Baseline and Mainline with FPU #276
Conversation
Armv8-M Baseline, ie thumbv8m.base-none-eabi, is a superset of the Armv6-M architecture profile. As it shares almost the same instruction set, this commit copies the configuration for thumbv6m-none-eabi to enable it.
Some files were not assembling for the Armv8-M Mainline architecture profile with FPU extension. Reason being the same as for Armv7-M: the conversion intrinsics including double precision floating point variables do not work with single precision FPUs. Also removes from exclusion files that are assembling without errors for Armv7-M and Armv8-M Mainline.
It seems that the intrinsics that were generated for the functions in example/intrinsics.rs where different implementations were given for thumb6m-none-eabi target, have now been implemented in Rust so configuration is not needed anymore.
LGTM, and travis is happy. |
Thanks @hug-dev! |
Thanks! |
We can make a release when necessary yeah, but for now you'll probably want to use |
Cool, will prepare the PR :) |
Add dist builder for Armv8-M Baseline and HF This commit adds the Armv8-M Baseline and Armv8-M Mainline with FPU targets in the list of targets that get their dist components built. It also update the build-manifest so that this target gets also its dist components uploaded. Made possible with the recent change merged in `compiler-builtins`: rust-lang/compiler-builtins#276 A new `compiler-builtins` might be necessary for successfull compilation of the artefacts of those targets.
Add dist builder for Armv8-M Baseline and HF This commit adds the Armv8-M Baseline and Armv8-M Mainline with FPU targets in the list of targets that get their dist components built. It also update the build-manifest so that this target gets also its dist components uploaded. Made possible with the recent change merged in `compiler-builtins`: rust-lang/compiler-builtins#276 A new `compiler-builtins` might be necessary for successfull compilation of the artefacts of those targets.
The larger goal of this pull request is to add
thumbv8m.base-none-eabi
andthumbv8m.main-none-eabihf
targets to the Rust CI so that the artefacts are available viarustup
This pull request specifically fixes the compilation errors encountered when compiling for those targets.
On the way, I added some modifications, not strictly related with those goals and that need to be checked:
arm-none-eabi-gcc
with the same options used bycc-rs
and it was working correctly. Maybe I am missing something on why are these files excluded?cfg(not(thumbv6m))
from the intrinsics example as the "real" functions were compiling fine forthumbv6m
(and then alsothumbv8m.base
)? I suppose that the intrinsics were implemented for those targets after thecfg
was made. I suppose then that Operations not available on ARMv6-M targets #75 should be closed? Again, maybe I am missing something.I was not sure how to test it so I compiled the intrinsics example for the Arm targets:
Also I patched the Rust compiler with my local modified version of
compiler-builtins
and produced the distribution artefacts, successfully, for all the Arm targets again: