nuttx/binfmt
Marco Casaroli 08c0cce0d9 libs/libc: Define the NXFLAT ABI marker in libc.
Every NXFLAT module imports __nxflat_abi_v2, and the loader resolves it
against the symbol table exec() is given, like any other import.  It was
defined in binfmt/libnxflat, which is enough for a flat build, where the
firmware and the applications are one image.

In a protected build the table comes from the application, in the user
image, which cannot see a kernel symbol: the user image fails to link with
an undefined reference to __nxflat_abi_v2 as soon as an application
generates its table from the modules' imports, as examples/nxflat does.  A
kernel build is the same, with one image per process.

libc is linked into each of those images, so the marker is defined there
now.  Nothing else changes: its value is still never used.

On mps3-an547:knsh under QEMU with CONFIG_NXFLAT and examples/nxflat, the
user image links, and errno, hello, mutex, pthread and struct run.
lm3s6965-ek:qemu-nxflat still runs every module to the end.

Assisted-by: Claude Code:claude-opus-5-5
Signed-off-by: Marco Casaroli <marco.casaroli@gmail.com>
2026-09-28 16:45:48 -03:00
..
libnxflat libs/libc: Define the NXFLAT ABI marker in libc. 2026-09-28 16:45:48 -03:00
binfmt.h fs/binfmt: Enforce POSIX execute permissions prior to binary load 2026-06-13 21:07:01 +08:00
binfmt_checkexec.c sched: add supplementary group IDs (setgroups/getgroups/initgroups) 2026-08-12 16:06:03 -03:00
binfmt_copyactions.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
binfmt_copyargv.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
binfmt_dumpmodule.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
binfmt_exec.c fs/binfmt: Enforce POSIX execute permissions prior to binary load 2026-06-13 21:07:01 +08:00
binfmt_execmodule.c fs/binfmt: close symlink TOCTOU and harden setuid/setgid exec hygiene 2026-08-01 15:32:03 -03:00
binfmt_execsymtab.c
binfmt_exit.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
binfmt_globals.c
binfmt_initialize.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
binfmt_loadmodule.c fs/binfmt: Enforce POSIX execute permissions prior to binary load 2026-06-13 21:07:01 +08:00
binfmt_register.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
binfmt_unloadmodule.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
binfmt_unregister.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
builtin.c fs/binfmt: Enforce POSIX execute permissions prior to binary load 2026-06-13 21:07:01 +08:00
CMakeLists.txt cmake: Use NUTTX(_DIR/_BIN_DIR) instead CMAKE(_SRC_DIR/_BIN_DIR) 2026-08-09 11:13:08 -03:00
elf.c binfmt/elf: Load FDPIC modules through the ELF loader. 2026-09-26 11:13:30 -03:00
Kconfig binfmt, arch/arm: Add the CONFIG_FDPIC option and the ABI header. 2026-09-08 16:31:16 -03:00
Makefile tools: fix stale archive members surviving a Kconfig-driven CSRCS change 2026-07-28 21:26:03 -03:00
nxflat.c fs/binfmt: Enforce POSIX execute permissions prior to binary load 2026-06-13 21:07:01 +08:00