[U-Boot] [PATCH] ARM: fixed relocation using proper alignment

Alexander Graf agraf at suse.de
Wed May 10 14:38:01 UTC 2017



On 10.05.17 15:41, Manfred Schlaegl wrote:
> Using u-boot-2017.05 on i.MX6UL we ran into following problem:
> Initially U-Boot could be started normally.
> If we added one random command in configuration, the newly generated
> image hung at startup (last output was DRAM:  256 MiB).
>
> We tracked this down to a data abort within relocation (relocated_code).
>
> relocated_code in arch/arm/lib/relocate.S copies 8 bytes per loop
> iteration until the source pointer is equal to __image_copy_end.
> In a good case __image_copy_end was aligned to 8 bytes, so the loop
> stopped as suggested, but in an errornous case __image_copy_end was
> not aligned to 8 bytes, so the loop ran out of bounds and caused a
> data abort exception.
>
> This patches solves the issue by aligning __image_copy_end to 8 byte
> using the linker script related to arm.
>
> I don't know if it's the correct way to solve this, so some review would
> be very appreciated.

I think it makes sense, but needs a comment next to the ALIGN() command. 
Also please make sure you update all the other lds files as well, so 
that people don't run into it by accident.


Alex


More information about the U-Boot mailing list