Hi,
On Wed, Dec 15, 2010 at 1:44 AM, Michael Hope michael.hope@linaro.org wrote:
On Wed, Dec 15, 2010 at 1:05 PM, Steve Langasek steve.langasek@linaro.org wrote:
Hi Michael,
On Wed, Dec 15, 2010 at 09:29:38AM +1300, Michael Hope wrote:
Hi Steve. I'd like to hand the rest of this over to you if that's OK.
Yep, we can take it from here. To be clear, is this an additional change above and beyond what Matthias reports is currently in Ubuntu gcc (http://lists.linaro.org/pipermail/linaro-toolchain/2010-November/000441.html), and if so, in what version of Linaro GCC is it going to become effective? Do we have documentation of what the relevant failure modes caused by this change *look* like, so that we can at least be triaging them appropriately until there's some documentation on how to fix the resulting bugs?
There will be many failures in many packages. The problem is when you use conditional suffixes on instructions: previously the compiler would insert an implicit instruction before that; now we have to be explicit.
The failures are easy to diagnose and fix. The build will fail with a message from the assembler along the lines of 'xxx instruction outside an IT block'. The fix is to find the inline assembly code, insert the appropriate IT instruction, and re-build. The assembler will validate the IT instruction against the following conditional instructions so the change is quite safe.
Did someone manage to find out which versions of binutils can silently accept the IT instructions when assembling for ARM?
This affects what advice we should give on how to avoid breaking upstream with our additions. The safest approach is #ifdefs, but it will be better for maintenance if we can avoid this, since it will render the code very messy.
Cheers ---Dave