
On Fri, Mar 17, 2023 at 04:01:58PM +0200, Ilias Apalodimas wrote:
Hi Heinrich,
On Fri, Mar 17, 2023 at 02:56:02PM +0100, Heinrich Schuchardt wrote:
On 3/17/23 14:42, Ilias Apalodimas wrote:
Heinrich reports that compiling with LTO & EFI breaks armv7 and arm11* builds. The reason is that LTO (maybe a binutils bug?) replaces the asm version of allow_unaligned() with the __weak definition of the function. As a result EFI code ends up running with unaligned accesses disabled and eventually crashes.
So let's enable unaligned access for those architectures during our start.S routines and avoid the linker issues.
Reported-by: Heinrich Schuchardt heinrich.schuchardt@canonical.com
The problem was originally reported by Tom. My contribution was to track it down to missing enabling of unaligned access due to a linker problem.
Ah thanks, I'll fix that in v2
[...]
bic r0, r0, #0x00002300 @ clear bits 13, 9:8 (--V- --RS) bic r0, r0, #0x00000087 @ clear bits 7, 2:0 (B--- -CAM) +#if !CONFIG_IS_ENABLED(EFI_LOADER)
- /* allow unaligned accesses since EFI requires it */
This comment line is only reached without UEFI support. So here you should explain why we forbid unaligned access without UEFI.
I am not sure I am following. I don't really remember why we had UA disabled on armv7. Do you have any suggestions?
Poke around git blame here, there should be enough links to bring up what / why we do what we do :)