-
Notifications
You must be signed in to change notification settings - Fork 13.1k
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
Consistent naming for Arm "thumb" targets? #44722
Comments
Anyone have any thoughts on this? @alexcrichton ? @japaric who added the other thumb targets maybe? |
Is this a breaking change? It's specified as supporting thumb, so wasn't this just a bug fix? |
@alexcrichton No not a bug fix, more of a change to something different. All the Arm targets support Thumb, that link is just saying if you're in Thumb state the Thumb2 extensions are available for that target. It's up to the developer to choose whether they want to generate Arm or Thumb code, e.g, with gcc you would use -marm or -mthumb. It's a trade off between a more complete instruction set and better code density. However Thumb state with Thumb2 extensions covers most of the Arm instruction set so generally you should pick that. My personal opinion is we should add thumb variants of all the arm targets or at least the Thumb2 ones. |
@parched I think you may be misunderstanding the change here? This was just a change for specifically the armv7 Android target (no other armv7 target). The actual definition for armv7 Android (not other armv7 targets, just Android) defines thumb/thumb2 available for use, so this was just a bugfix to actually use it. |
@alexcrichton I think I see what you're saying, |
Indeed yeah with thumb/armv7. I don't know why other armv7 targets wouldn't generate thumb, I'm probably not the best person to ask for that (unsure who is) |
@alexcrichton Would you be apposed to have both My main concern is I think there should be a consistent default for all the Arm targets to whether they generate Arm or Thumb code. Or do we say it's unspecified and you have to always be explicit with |
I'm probably the wrong person to be asking these questions, I just r+'d the PR which we defined to be correct, I don't know enough about ARM/thumb to make decisions about what targets we should be providing. |
FWIW here's another place that relies on the name of the target to tell whether to generate Thumb code https://github.com/rust-lang-nursery/compiler-builtins/blob/bb2c81b700440f3b1d8a9544d3d33f5454a730f7/build.rs#L4279 |
Triage: As this issue is pretty old and presumably lots of changed, I would like to check. @parched Do you still miss any target in this list from Rust 1.72? If yes, which ones? $ rustc +stable --print target-list | grep -e arm -e thumb
arm-linux-androideabi
arm-unknown-linux-gnueabi
arm-unknown-linux-gnueabihf
arm-unknown-linux-musleabi
arm-unknown-linux-musleabihf
arm64_32-apple-watchos
armeb-unknown-linux-gnueabi
armebv7r-none-eabi
armebv7r-none-eabihf
armv4t-none-eabi
armv4t-unknown-linux-gnueabi
armv5te-none-eabi
armv5te-unknown-linux-gnueabi
armv5te-unknown-linux-musleabi
armv5te-unknown-linux-uclibceabi
armv6-unknown-freebsd
armv6-unknown-netbsd-eabihf
armv6k-nintendo-3ds
armv7-apple-ios
armv7-linux-androideabi
armv7-sony-vita-newlibeabihf
armv7-unknown-freebsd
armv7-unknown-linux-gnueabi
armv7-unknown-linux-gnueabihf
armv7-unknown-linux-musleabi
armv7-unknown-linux-musleabihf
armv7-unknown-linux-ohos
armv7-unknown-linux-uclibceabi
armv7-unknown-linux-uclibceabihf
armv7-unknown-netbsd-eabihf
armv7-wrs-vxworks-eabihf
armv7a-kmc-solid_asp3-eabi
armv7a-kmc-solid_asp3-eabihf
armv7a-none-eabi
armv7a-none-eabihf
armv7k-apple-watchos
armv7r-none-eabi
armv7r-none-eabihf
armv7s-apple-ios
thumbv4t-none-eabi
thumbv5te-none-eabi
thumbv6m-none-eabi
thumbv7a-pc-windows-msvc
thumbv7a-uwp-windows-msvc
thumbv7em-none-eabi
thumbv7em-none-eabihf
thumbv7m-none-eabi
thumbv7neon-linux-androideabi
thumbv7neon-unknown-linux-gnueabihf
thumbv7neon-unknown-linux-musleabihf
thumbv8m.base-none-eabi
thumbv8m.main-none-eabi
thumbv8m.main-none-eabihf |
This commit changed the armv7-linux-androideabi target from generating Arm code to Thumb code. This may be deemed a valid change but I feel like it deserves at least a short discussion for a number of reasons.
thumb
instead ofarm
. This is the same convention clang uses for--target
and LLVM.Either way, the same change should probably be applied to all the
armv7*
targets for consistency.The text was updated successfully, but these errors were encountered: