On Sun, Mar 27, 2022 at 02:26:20PM -0600, Simon Glass wrote:

> When every member of a linker list is aligned by the compiler, we can no
> longer rely on the sizeof of the struct to determine the number of
> entries.
> 
> For example, if the struct size is 0x90 but every entry is aligned to 0xa0
> by the compiler, the linker list entries takes more space in memory and
> the calculation of the number of entries is incorrect. For example, we may
> see 0x12 entries when there are only 0x11.
> 
> This is a real problem. There may be a general solution, although I cannot
> currently think of one. So far it only bites with OF_PLATDATA_RT which
> creates a pointer to each entry of the 'struct udevice' linker_list. This
> does not happen without that option, so it only affects SPL.
> 
> Work around it by manually calculating the aligned size of struct udevice,
> then using that for the n_ent calculation.
> 
> Note: the alignment fix to linker list was here:
> 
>    0b2fa98aa5e linker_lists: Fix alignment issue
> 
> Signed-off-by: Simon Glass <s...@chromium.org>

Applied to u-boot/master, thanks!

-- 
Tom

Attachment: signature.asc
Description: PGP signature

Reply via email to