Files
u-boot/include
Simon Glass f9b5077480 linker_lists: Fix end-marker alignment to prevent padding
Change the alignment of end markers in ll_entry_end() and ll_end_decl()
from __aligned(4) and __aligned(CONFIG_LINKER_LIST_ALIGN) respectively
to __aligned(1).

The linker places zero-size end markers at aligned boundaries based on
what follows them. When the next list's start marker has a high alignment
requirement (e.g., 32 bytes), padding gets inserted before the end
marker. This causes the byte span (end - start) to not be an exact
multiple of the struct size.

The compiler optimises pointer subtraction (end - start) using
magic-number multiplication for division. This optimisation only produces
correct results when the byte span is an exact multiple of the struct
size. With padding, the result is garbage (e.g., -858993444 instead of
15).

By using __aligned(1), the end marker is placed immediately after the
last entry with no padding, ensuring (end - start) equals exactly
(n * sizeof) where n is the number of entries. This makes
ll_entry_count() and direct pointer arithmetic work correctly.

Fixes: 0b2fa98aa5 ("linker_lists: Fix alignment issue")
Signed-off-by: Simon Glass <simon.glass@canonical.com>
2026-04-14 11:03:52 -06:00
..
2025-11-06 08:30:33 -06:00
2026-01-14 16:25:09 +01:00
2025-11-21 19:25:56 +01:00
2025-12-04 09:38:58 -06:00
2025-08-25 16:20:48 +02:00
2025-06-02 17:26:15 -06:00
2024-07-29 15:01:04 -06:00
2023-12-21 08:54:37 -05:00
2025-07-23 17:37:14 -06:00
2024-08-26 14:05:38 -06:00
2024-02-13 15:38:49 -05:00
2024-07-29 15:01:04 -06:00
2025-06-02 17:26:15 -06:00
2025-05-29 08:29:16 -06:00
2025-06-02 17:26:15 -06:00
2025-12-30 11:22:57 -06:00
2025-08-06 08:41:30 +02:00
2024-06-14 12:59:07 -06:00
2025-09-26 11:55:13 -06:00
2025-11-07 15:34:04 -06:00
2025-06-02 17:26:15 -06:00
2024-09-24 13:41:20 -06:00
2025-08-25 16:20:48 +02:00
2025-05-13 11:30:09 -06:00
2024-07-29 15:01:04 -06:00
2025-06-27 11:48:20 -06:00
2024-07-29 15:01:04 -06:00
2023-11-07 14:50:51 -05:00
2026-02-02 14:24:40 -06:00
2024-07-29 15:01:04 -06:00
2025-08-06 08:41:30 +02:00
2025-06-02 17:26:16 -06:00
2025-03-10 07:41:16 +01:00
2023-12-21 11:59:49 -05:00
2025-04-03 11:41:54 -06:00
2023-12-21 08:54:37 -05:00
2025-04-03 16:54:49 -06:00
2024-07-29 15:01:04 -06:00
2024-07-29 15:01:04 -06:00
2024-10-24 11:21:48 -06:00
2024-07-29 15:01:04 -06:00
2024-07-29 15:01:04 -06:00
2025-07-08 13:11:12 -06:00
2025-05-29 08:30:25 -06:00
2024-11-25 23:07:37 -03:00
2024-09-30 17:48:12 -06:00
2025-05-05 14:16:50 -06:00
2024-09-12 17:35:37 +02:00
2023-12-21 08:54:37 -05:00
2025-07-08 13:11:12 -06:00
2025-05-29 18:35:49 -06:00
2024-07-29 15:01:04 -06:00
2024-07-29 15:01:04 -06:00
2025-02-11 20:10:58 -06:00
2025-01-07 15:45:51 +02:00
2025-12-04 09:38:58 -06:00
2025-01-01 10:40:33 -06:00
2025-07-11 10:43:29 -06:00
2024-07-29 15:01:04 -06:00
2024-07-29 15:01:04 -06:00
2025-02-03 16:01:36 -06:00
2024-07-29 15:01:04 -06:00