-
Notifications
You must be signed in to change notification settings - Fork 13.4k
Recent nightly versions break thumb* targets #62781
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Comments
Based on https://lists.llvm.org/pipermail/llvm-dev/2019-March/130669.html it seems like the emission of |
Update from compiler team triage: I can't tell quite what's going on here. Is this a compiler bug or something to be fixed downstream? @nikic's comment suggests the latter -- @jamesmunns if that is true, can you close the issue? |
Marking as P-high so we check up on this |
So in general:
This is an odd case, since I suppose the list of linker sections produced by
|
To help out with this, it might help to backport the fix and publish 0.5.8, since 0.5.x is still used by quite a few crates. |
Phew, I see multiple lines of arguing where this would break the language semver. While not strictly compiler breakage, I think linking behaviour is also a big part of our compiler story. |
I personally do not thing this should be considered a breaking change (much like inference changes are not breaking), but passing on the ball to T-lang to have their say on the topic. |
Me, @cramertj, and @qmx (=P) discussed this on the language team meeting and we agree with @nagisa. Attendance was spotty however and @joshtriplett may have thoughts. |
After seeing the fix I realize that I misunderstood the original report -- this isn't about The ARM exception handling ABI specification says "The index table section name must be .ARM.exidx optionally followed by further characters", which permits using the name without a suffix, so LLVM isn't doing anything wrong here -- the linker script was relying on an implementation detail that was not guaranteed by the relevant specification. |
Thanks all for taking a look at this! I'll circle up with the embedded-wg folks to make sure there isn't any other detail that I've neglected to mention, but this seems like a reasonable response. I'm guessing the LLVM9 update is riding the trains currently, so will be in Beta in 2 weeks, and stable in 8 weeks? That gives us a timeline to make sure we have this patched and released in cortex-m-rt 0.6.x (and likely backport changes to 0.5.x), and publish some "heads up" wherever possible. |
Reading @nikic response: ignore my concerns above. |
Closing this issue, I haven't heard anything more from embedded folks. Thanks again all. |
Hey all,
I've noticed in nightly-2019-07-18, rustc has begun producing symbols in the
.ARM.exidx
region, which it did not previously do. As our standard linker script does not have a linker rule for this region, building fails with with the following error:To reproduce this, this project can be used: https://github.com/ferrous-systems/embedded-trainings/tree/master/beginner/templates/segment-1. You will need to add the
thumbv7em-none-eabihf
target first. This builds with the current and previous stable releases (1.32 <= version <= 1.36), but does not build with nightly-2019-07-18. This also seems fine with rustc 1.37.0-beta.3 (2ba6de7 2019-07-12). I have not yet attempted to bisect this.We've had a previous similar issue here: rust-embedded/cortex-m-rt#157 - and the fix was to discard that section in our linker script template. However I first wanted to check if this new output was expected, because it would cause a stable to stable regression if folks don't update the cortex-m-rt crate, which includes the linker script template.
The text was updated successfully, but these errors were encountered: