
Dear Albert,
In message 20140210182646.2de92810@lilith you wrote: ...
- first, if "the first part of the equation" means "the compiler setting" as opposed to the hardware setting, then the question fails to realize that we don't (and should not) consider the compiler and hardware settings separately; they work in *combination*.
Right, and we have full control over both sides of this combination: we set the compiler options in the Makefiles, and adjust the hardware selections in the code.
- second, assuming the question is "how is it not a problem on our end that some code traps due to the combined hardware and compiler settings", the answer is: because the setting was not designed to catch *ARMv7* issues; it was designed to catch *U-Boot* issues. In other words, such traps show that there is code which won't work elsewhere than on ARMv7-like hardware which does not care about alignment.
Full agreement. It is wrong to write code with only the feature set off a specific architecture in mind.
That is why I consider that the fault is in the trapped software, not in the trap. The solution is to make the software use software, not native, unaligned accesses. The exact solution depends on whether the code has only a few such unaligned accesses (in which case we should use explicit unaligned access macros) or many (in which case, for the file considered, we can enable -mno-unaligned-access). You'll find instances of both in the U-Boot code.
I agree mostly here - except that I tend to be even more radical: if we need to enable -mno-unaligned-access, then the code is inherently non-portable and should rather be redesigned / rewritten.
- I am ok with -mno-unaligned-access applied to files which *require* unaligned access and where individual access macros would be impractical.
I can live with this if we raise the bar sufficiently high so that only very few exceptions will be made. I would not like to see this enabled on tons of files.
- I am NOT OK with blanket -mno-unaligned-access applied on a file
where individual macros are feasible, and
Full agreement. But even in this case we should first consider if the code can / should not rather be rewitten to avoid the problem alltogether.
- I am certainly NOT OK with a blanket -mno-unaligned-access on all code and the removal of the whole ARM misalignment detection setup.
I agree with Albert here.
Thanks for the detailed explanation, bte.
Best regards,
Wolfgang Denk