Files
tinygo/targets
deadprogram 6b53c58f92 esp32c6: fix .rodata flash mapping being off by a few bytes
The flash MMU maps 64kB pages, so a flash-mapped section is only read
correctly when its virtual address and its offset within the firmware
image agree modulo 64kB. targets/esp32c6.ld reproduces the image offset
in .rodata_dummy by accumulating the preceding segment sizes and headers,
which works only if the linker inserts no alignment padding between the
dummy and .rodata -- padding moves the virtual address without moving the
image offset.

lld gives .rodata 8-byte alignment, but the accumulated offset is only
4-byte aligned, so whenever the preceding segments happened to leave the
running offset at a 4-mod-8 boundary the whole of .rodata was mapped 4
bytes off. Every read of constant data then returned neighbouring bytes.

This is silent and looks like arbitrary memory corruption rather than a
mapping bug. It was found while bringing up WiFi: the blob rejected its
init config because the first field of a const struct read back as a code
pointer, and whether a given build was affected depended on unrelated code
size changes.

Pad .data, .iram and .text to a multiple of 8 so the running image offset
stays 8-aligned and matches, and add ASSERTs for both flash-mapped
sections so this cannot regress silently.

Signed-off-by: Ron Evans <ron@hybridgroup.com>
2026-08-30 10:36:44 +02:00
..
2026-01-06 23:12:02 +01:00
2025-06-13 16:19:10 +02:00
2023-05-20 21:18:02 +02:00
2022-11-06 09:05:05 +01:00
2022-11-18 18:40:38 +01:00
2023-05-20 21:18:02 +02:00
2023-05-20 21:18:02 +02:00
2023-10-01 18:32:15 +02:00
2023-06-01 21:04:36 +02:00
2022-04-23 08:45:46 +02:00
2022-04-23 08:45:46 +02:00
2025-01-20 06:15:33 +01:00
2025-01-20 06:15:33 +01:00
2025-01-20 06:15:33 +01:00
2025-01-20 06:15:33 +01:00
2023-04-26 23:07:52 +02:00
2026-08-20 16:07:13 +02:00
2026-08-20 16:07:13 +02:00
2020-09-09 19:17:11 +02:00
2021-09-05 19:59:26 +02:00
2025-09-20 08:35:34 +02:00
2024-05-12 16:09:27 +02:00
2021-03-04 15:46:05 +01:00
2022-07-16 08:31:22 +02:00
2022-12-16 21:26:49 +01:00
2018-10-06 13:04:14 +02:00
2019-11-16 21:57:18 +01:00
2020-10-20 19:13:43 +02:00
2022-12-16 21:26:49 +01:00
2020-10-20 19:13:43 +02:00
2022-12-16 21:26:49 +01:00
2022-12-16 21:26:49 +01:00
2018-10-18 15:07:06 +02:00
2020-07-13 12:35:53 +02:00
2020-02-18 23:34:56 +01:00
2020-02-18 23:34:56 +01:00
2020-02-18 23:34:56 +01:00
2021-03-28 21:38:05 +02:00
2023-05-09 19:44:00 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2026-08-29 08:41:43 +02:00
2025-09-17 05:28:06 -04:00
2023-09-18 21:58:02 +02:00
2026-04-17 10:33:07 +02:00
2018-09-22 01:51:44 +02:00
2020-12-15 06:51:35 +01:00
2026-01-06 23:12:02 +01:00
2026-01-06 23:12:02 +01:00
2026-01-06 23:12:02 +01:00
2026-05-28 18:05:24 +02:00
2021-03-23 08:33:59 +01:00
2022-01-13 07:56:08 +01:00
2024-04-19 20:50:00 +02:00
2020-07-08 21:58:15 +02:00
2020-11-11 18:34:47 +01:00
2024-02-23 14:00:57 +01:00
2025-09-17 05:28:06 -04:00
2025-09-17 05:28:06 -04:00