mirror of
https://github.com/apache/nuttx.git
synced 2026-10-04 12:48:09 +00:00
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> |
||
|---|---|---|
| .. | ||
| CMakeLists.txt | ||
| Kconfig | ||
| lib_backtrace.c | ||
| lib_bitmap.c | ||
| lib_circbuf.c | ||
| lib_crc8.c | ||
| lib_crc8ccitt.c | ||
| lib_crc8h1d.c | ||
| lib_crc8h2f.c | ||
| lib_crc8rohc.c | ||
| lib_crc8table.c | ||
| lib_crc16.c | ||
| lib_crc16ccitt.c | ||
| lib_crc16h1021.c | ||
| lib_crc16h8005.c | ||
| lib_crc16ibm.c | ||
| lib_crc16xmodem.c | ||
| lib_crc32.c | ||
| lib_crc32h04c11db7.c | ||
| lib_crc32hf4acfb13.c | ||
| lib_crc64.c | ||
| lib_crc64emac.c | ||
| lib_creat.c | ||
| lib_cxx_initialize.c | ||
| lib_debug.c | ||
| lib_dumpbuffer.c | ||
| lib_dumpvbuffer.c | ||
| lib_envpath.c | ||
| lib_err.c | ||
| lib_fchmodat.c | ||
| lib_fdcheck.c | ||
| lib_fdsan.c | ||
| lib_fnmatch.c | ||
| lib_fstatat.c | ||
| lib_ftok.c | ||
| lib_getfullpath.c | ||
| lib_getnprocs.c | ||
| lib_getrandom.c | ||
| lib_glob.c | ||
| lib_idr.c | ||
| lib_impure.c | ||
| lib_instrument.c | ||
| lib_kbddecode.c | ||
| lib_kbdencode.c | ||
| lib_mallopt.c | ||
| lib_memfd.c | ||
| lib_mkdirat.c | ||
| lib_mkfifo.c | ||
| lib_mknod.c | ||
| lib_mutex.c | ||
| lib_ncompress.c | ||
| lib_note.c | ||
| lib_nxflat.c | ||
| lib_openat.c | ||
| lib_slcddecode.c | ||
| lib_slcdencode.c | ||
| lib_tea_decrypt.c | ||
| lib_tea_encrypt.c | ||
| lib_tempbuffer.c | ||
| lib_uadd32x64.c | ||
| lib_uadd64.c | ||
| lib_umask.c | ||
| lib_umul32.c | ||
| lib_umul32x64.c | ||
| lib_umul64.c | ||
| lib_usub64.c | ||
| lib_usub64x32.c | ||
| lib_utimensat.c | ||
| lib_utsname.c | ||
| lib_xorshift128.c | ||
| Make.defs | ||