-
Notifications
You must be signed in to change notification settings - Fork 13k
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
Recent nightly versions break thumb* targets #62781
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: