nuttx/boards
Ricard Rosson 05df45dfee boards/rp23xx: copy .got into RAM at boot in the memmap linker scripts
The pico-sdk-derived rp23xx linker scripts place .got/.got.plt as orphan
sections after the .data output section, so the boot-time .data copy
(which runs to _edata) never copies the GOT into RAM.  Any position-
independent (-fPIC) object linked into an application then reads an
uninitialised GOT full of NULLs: the first GOT-indirected access
branches to 0 and the board hardfaults before main().  A PIC static
library (for example liboqs, whose SHA3 dispatch reads its function
pointers through the GOT) triggers this deterministically.

Fold *(.got)/*(.got.plt) into the .data{} section, before _edata, in all
three boot-mode scripts (memmap_default/copy_to_ram/no_flash) for every
rp23xx board, so the GOT is initialised in RAM by the standard startup
copy.  No effect on non-PIC images (the GOT is empty).

Reproduced and fixed on a Raspberry Pi Pico 2 W: an app linking a -fPIC
liboqs.a wedged the board on its first crypto call before the change and
runs correctly after it.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Signed-off-by: Ricard Rosson <ricard@groundbits.com>
2026-07-11 14:57:17 -03:00
..
arm boards/rp23xx: copy .got into RAM at boot in the memmap linker scripts 2026-07-11 14:57:17 -03:00
arm64 boards/imx93-evk: Fix bootloader board config 2026-07-06 06:48:02 +02:00
avr boards/avr/avrdx/breadxavr: provide board_late_initialize 2026-06-12 09:55:11 -04:00
dummy
hc/m9s12 boards/hc: Replace board_app_initialize 2026-05-02 18:36:46 +08:00
mips boards/comments: Remove legacy comments 2026-05-04 12:16:11 -03:00
misoc/lm32/misoc !libc/stream: remove CONFIG_LIBC_LONG_LONG and always support long long 2026-05-19 16:21:28 +08:00
or1k/mor1kx/or1k boards/comments: Remove legacy comments 2026-05-04 12:16:11 -03:00
renesas boards/comments: Remove legacy comments 2026-05-04 12:16:11 -03:00
risc-v boards/risc-v/bl602: remove timers example 2026-07-04 13:26:04 -04:00
sim/sim/sim boards: add CI ROMFS passwd credentials and refresh docs 2026-07-09 22:41:11 +08:00
sparc !libc/stream: remove CONFIG_LIBC_LONG_LONG and always support long long 2026-05-19 16:21:28 +08:00
tricore !sched/clock: remove CONFIG_SYSTEM_TIME64 and always use 64-bit time 2026-05-19 16:21:28 +08:00
x86/qemu/qemu-i486 boards/comments: Remove legacy comments 2026-05-04 12:16:11 -03:00
x86_64/qemu/qemu-intel64 !sched/clock: remove CONFIG_SYSTEM_TIME64 and always use 64-bit time 2026-05-19 16:21:28 +08:00
xtensa boards/stm32h7/linum-stm32h753bi: enable USB FS host, add lvglterm_kbda 2026-07-08 14:08:16 -04:00
z16/z16f/z16f2800100zcog boards/z16: Replace board_app_initialize 2026-05-02 18:36:46 +08:00
z80 boards/comments: Remove legacy comments 2026-05-04 12:16:11 -03:00
.gitignore
Board.mk !boards: enforce secure ROMFS passwd and TEA key setup 2026-07-09 22:41:11 +08:00
boardctl.c !boards/boardctl: Remove BOARDIOC_INIT 2026-05-26 09:57:29 +08:00
CMakeLists.txt
dummy.c
Kconfig boards: add CI ROMFS passwd credentials and refresh docs 2026-07-09 22:41:11 +08:00
Makefile