nuttx/boards/arm
Marco Casaroli 0518ccb9ca libs/libc/elf, binfmt: Describe the GOT by base and size, not by index.
gotindex named the .got section header, and every user then reached through
shdr[] for what it actually wanted.  Only one of the five wanted the index.

gotbase and gotsize say it directly.  gotsize is the extent of .got and is
also what says the object has one, and gotbase is where the GOT ended up:
the placed address of .got for an ordinary object, or DT_PLTGOT for an FDPIC
one, which libelf_bind() already reads.  Both are set in libelf_loadfile(),
after the sections are placed, so gotbase is the address the object will be
read at rather than the one it was linked for.

The GOT walk in libelf_loadfile() now runs only when there is a base, which
also keeps it off an FDPIC object.  An FDPIC object's sections are never
placed, so .got carried a link time sh_addr there, and the walk read and
wrote through it.  Its GOT is relocated through its own relocations.

The check that gates libelf_xipacquire() runs before the load, when neither
field is set, so it looks the section up by name.  It hands the index it
found to libelf_loadfile(), which is the only reason that function takes
one: the object is searched once, not twice.

One behaviour changes: a .got that exists but is empty now reads as no GOT.
There is nothing for any of the five users to do with an empty one.

Built for pimoroni-pico-2-plus with CONFIG_PIC, CONFIG_ELF and
CONFIG_LIBC_ELF, and for mps3-an547:bl, which is the board that read the
index.  Run on QEMU with mps3-an547:picostest, which loads PIC ELF modules
from a romfs: hello prints, and ostest reaches the timed mutex test, the
same as before the change.

Assisted-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: Marco Casaroli <marco.casaroli@gmail.com>
2026-09-08 16:31:16 -03:00
..
a1x/pcduino-a10 arch/arm: Reserve r10 via ARCHCFLAGS and hoist the PIC module flags. 2026-07-24 23:09:08 +08:00
am67/t3-gem-o1 fs: rename PSEUDOFS_SOFTLINKS to FS_LINKS 2026-08-27 01:12:33 +08:00
am335x boards/arm: Add support for the original BeagleBone 2026-08-19 10:11:38 +08:00
at32/at32f437-mini net/netdev: Combine the per-command CAN ioctl options into NETDEV_CAN_IOCTL 2026-09-01 17:40:47 +08:00
c5471/c5471evm arch/arm: Reserve r10 via ARCHCFLAGS and hoist the PIC module flags. 2026-07-24 23:09:08 +08:00
common/stm32 arch/arm/stm32f7: use common Kconfig symbols 2026-08-18 09:34:58 +08:00
csk6 arch/arm: Reserve r10 via ARCHCFLAGS and hoist the PIC module flags. 2026-07-24 23:09:08 +08:00
cxd56xx cmake: Use NUTTX(_DIR/_BIN_DIR) instead CMAKE(_SRC_DIR/_BIN_DIR) 2026-08-09 11:13:08 -03:00
dm320/ntosd-dm320 !arch/arm: Use r9 as the PIC base register. 2026-08-06 01:38:23 +08:00
efm32 arch/arm: Reserve r10 via ARCHCFLAGS and hoist the PIC module flags. 2026-07-24 23:09:08 +08:00
eoss3/quickfeather arch/arm: Reserve r10 via ARCHCFLAGS and hoist the PIC module flags. 2026-07-24 23:09:08 +08:00
fvp-v8r-aarch32/fvp-armv8r-aarch32 arch/arm: Reserve r10 via ARCHCFLAGS and hoist the PIC module flags. 2026-07-24 23:09:08 +08:00
gd32f4 arch/arm: Reserve r10 via ARCHCFLAGS and hoist the PIC module flags. 2026-07-24 23:09:08 +08:00
ht32f491x3/esk32 arch/arm: Reserve r10 via ARCHCFLAGS and hoist the PIC module flags. 2026-07-24 23:09:08 +08:00
imx6/sabre-6quad fs: rename PSEUDOFS_SOFTLINKS to FS_LINKS 2026-08-27 01:12:33 +08:00
imx9 net/netdev: Combine the per-command CAN ioctl options into NETDEV_CAN_IOCTL 2026-09-01 17:40:47 +08:00
imxrt !arch/arm: Use r9 as the PIC base register. 2026-08-06 01:38:23 +08:00
kinetis arch/arm: Reserve r10 via ARCHCFLAGS and hoist the PIC module flags. 2026-07-24 23:09:08 +08:00
kl arch/arm: Reserve r10 via ARCHCFLAGS and hoist the PIC module flags. 2026-07-24 23:09:08 +08:00
lc823450/lc823450-xgevk arch/arm: Reserve r10 via ARCHCFLAGS and hoist the PIC module flags. 2026-07-24 23:09:08 +08:00
lpc17xx_40xx !arch/arm: Use r9 as the PIC base register. 2026-08-06 01:38:23 +08:00
lpc31xx !arch/arm: Use r9 as the PIC base register. 2026-08-06 01:38:23 +08:00
lpc43xx arch/arm: Reserve r10 via ARCHCFLAGS and hoist the PIC module flags. 2026-07-24 23:09:08 +08:00
lpc54xx/lpcxpresso-lpc54628 arch/arm: Reserve r10 via ARCHCFLAGS and hoist the PIC module flags. 2026-07-24 23:09:08 +08:00
lpc214x arch/arm: Reserve r10 via ARCHCFLAGS and hoist the PIC module flags. 2026-07-24 23:09:08 +08:00
lpc2378/olimex-lpc2378 arch/arm: Reserve r10 via ARCHCFLAGS and hoist the PIC module flags. 2026-07-24 23:09:08 +08:00
max326xx/max32660-evsys arch/arm: Reserve r10 via ARCHCFLAGS and hoist the PIC module flags. 2026-07-24 23:09:08 +08:00
mcx-nxxx/frdm-mcxn236 arch/arm: Reserve r10 via ARCHCFLAGS and hoist the PIC module flags. 2026-07-24 23:09:08 +08:00
moxart/moxa !arch/arm: Use r9 as the PIC base register. 2026-08-06 01:38:23 +08:00
mps libs/libc/elf, binfmt: Describe the GOT by base and size, not by index. 2026-09-08 16:31:16 -03:00
mx8mp/verdin-mx8mp arch/arm: Reserve r10 via ARCHCFLAGS and hoist the PIC module flags. 2026-07-24 23:09:08 +08:00
nrf52 arch/arm: Reserve r10 via ARCHCFLAGS and hoist the PIC module flags. 2026-07-24 23:09:08 +08:00
nrf53 boards/nrf5340-dk: read the button being scanned, not BTN1 2026-08-30 10:43:20 +08:00
nrf91 arch/arm: Reserve r10 via ARCHCFLAGS and hoist the PIC module flags. 2026-07-24 23:09:08 +08:00
nuc1xx/nutiny-nuc120 arch/arm: Reserve r10 via ARCHCFLAGS and hoist the PIC module flags. 2026-07-24 23:09:08 +08:00
phy62xx/phy6222 arch/arm: Reserve r10 via ARCHCFLAGS and hoist the PIC module flags. 2026-07-24 23:09:08 +08:00
qemu boards/arm/qemu-armv7a: switch all nsh defconfigs to nxinit entrypoint 2026-09-02 09:14:00 +08:00
ra4 arch/arm: Reserve r10 via ARCHCFLAGS and hoist the PIC module flags. 2026-07-24 23:09:08 +08:00
rp23xx cmake: Use NUTTX(_DIR/_BIN_DIR) instead CMAKE(_SRC_DIR/_BIN_DIR) 2026-08-09 11:13:08 -03:00
rp2040 boards/rp2040: add USB fastboot composite support for waveshare boards 2026-09-08 08:22:37 -03:00
rtl8720f/rtl8720f_evb arch/arm/rtl8720f: add timer driver support 2026-09-01 17:41:14 +08:00
rtl8721dx/pke8721daf arch/arm/rtl8721dx: add shared Ameba timer driver 2026-09-01 17:41:14 +08:00
rtl8721f/rtl8721f_evb arch/arm/rtl8721f: add timer driver support 2026-09-01 17:41:14 +08:00
s32k1xx arch/arm: Reserve r10 via ARCHCFLAGS and hoist the PIC module flags. 2026-07-24 23:09:08 +08:00
s32k3xx !arch/arm: Use r9 as the PIC base register. 2026-08-06 01:38:23 +08:00
sam34 !arch/arm: Use r9 as the PIC base register. 2026-08-06 01:38:23 +08:00
sama5 arch, boards, cmake: Build C++ ELF modules without __cxa_atexit. 2026-09-04 15:44:24 -03:00
samd2l2 arch/arm: Reserve r10 via ARCHCFLAGS and hoist the PIC module flags. 2026-07-24 23:09:08 +08:00
samd5e5 boards: fix mtd_partition() argument units in flash partition loops 2026-09-01 09:14:34 +08:00
samv7 !arch/arm: Use r9 as the PIC base register. 2026-08-06 01:38:23 +08:00
stm32c0 arch/arm: Reserve r10 via ARCHCFLAGS and hoist the PIC module flags. 2026-07-24 23:09:08 +08:00
stm32c5 boards/arm/stm32c5: Add nucleo-C562re support 2026-08-27 01:07:10 +08:00
stm32f0 boards/nucleo-f072rb: Add USB device support and a CDC/ACM configuration. 2026-08-20 15:16:33 -03:00
stm32f1 boards: fix mtd_partition() argument units in flash partition loops 2026-09-01 09:14:34 +08:00
stm32f2 arch/arm: Reserve r10 via ARCHCFLAGS and hoist the PIC module flags. 2026-07-24 23:09:08 +08:00
stm32f3 boards/arm/stm32f3/nucleo-f302r8: fix qenco configuration 2026-08-07 11:17:24 +08:00
stm32f4 boards: fix mtd_partition() argument units in flash partition loops 2026-09-01 09:14:34 +08:00
stm32f7 arch/arm/stm32f7: use common Kconfig symbols 2026-08-18 09:34:58 +08:00
stm32g0 boards/nucleo-g0b1re: Add USB device configurations 2026-08-25 01:03:58 +08:00
stm32g4 arch/arm: Reserve r10 via ARCHCFLAGS and hoist the PIC module flags. 2026-07-24 23:09:08 +08:00
stm32h5 boards/stm32h5/nucleo-h563zi: CMake add missing SPI SRC. 2026-08-25 13:37:44 +08:00
stm32h7 arch, boards, cmake: Build C++ ELF modules without __cxa_atexit. 2026-09-04 15:44:24 -03:00
stm32l0 boards/nucleo-l073rz: Add USB device support and a CDC/ACM configuration. 2026-08-22 01:23:12 +08:00
stm32l1 arch/arm: Reserve r10 via ARCHCFLAGS and hoist the PIC module flags. 2026-07-24 23:09:08 +08:00
stm32l4 arch/arm/stm32l4: use common Kconfig symbols 2026-08-18 09:34:58 +08:00
stm32l5 arch/arm: Reserve r10 via ARCHCFLAGS and hoist the PIC module flags. 2026-07-24 23:09:08 +08:00
stm32n6 arch/arm: Reserve r10 via ARCHCFLAGS and hoist the PIC module flags. 2026-07-24 23:09:08 +08:00
stm32u0 boards/stm32u0: add stm32u083c-dk support 2026-08-18 15:00:15 +02:00
stm32u3 boards/arm/stm32u3: Add NUCLEO-U3C5ZI-Q support 2026-08-23 11:03:03 +08:00
stm32u5 arch/arm: Reserve r10 via ARCHCFLAGS and hoist the PIC module flags. 2026-07-24 23:09:08 +08:00
stm32wb arch/arm: Reserve r10 via ARCHCFLAGS and hoist the PIC module flags. 2026-07-24 23:09:08 +08:00
stm32wl5 arch/arm: Reserve r10 via ARCHCFLAGS and hoist the PIC module flags. 2026-07-24 23:09:08 +08:00
str71x/olimex-strp711 arch/arm: Reserve r10 via ARCHCFLAGS and hoist the PIC module flags. 2026-07-24 23:09:08 +08:00
tiva boards/lm3s6965-ek: Link the protected kernel against kflash. 2026-08-14 09:49:27 +08:00
tlsr82/tlsr8278adk80d arch/arm: Reserve r10 via ARCHCFLAGS and hoist the PIC module flags. 2026-07-24 23:09:08 +08:00
tms570 arch/arm: Reserve r10 via ARCHCFLAGS and hoist the PIC module flags. 2026-07-24 23:09:08 +08:00
xmc4 arch/arm: Reserve r10 via ARCHCFLAGS and hoist the PIC module flags. 2026-07-24 23:09:08 +08:00