This is an automated email from the ASF dual-hosted git repository. acassis pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/nuttx.git
commit 4b8a0a0ef2ffb4036d22878dce624a0150f1c251 Author: Marco Casaroli <[email protected]> AuthorDate: Sat Oct 17 20:24:17 2026 +0200 Documentation/xipfs: Describe the FDPIC sections of xipfs_test. xipfs_test has the sections fdpic, reject and dirloss. The page of the test did not list them, and did not say how the FDPIC test modules are built. Describe the fdpic and reject sections, add dirloss to the power-loss sections, and describe the FDPIC module build in the configuration. Assisted-by: Claude Code:claude-opus-5-5 Signed-off-by: Marco Casaroli <[email protected]> --- Documentation/applications/testing/xipfs/index.rst | 26 ++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/Documentation/applications/testing/xipfs/index.rst b/Documentation/applications/testing/xipfs/index.rst index 4caeaee272d..37a328fcfe7 100644 --- a/Documentation/applications/testing/xipfs/index.rst +++ b/Documentation/applications/testing/xipfs/index.rst @@ -60,6 +60,24 @@ Sections That a task killed without calling ``munmap`` still has its pin released. This is the one that matters for a module that faults. +``fdpic`` + Loads :doc:`FDPIC </os/binfmt/fdpic>` modules from the volume and checks + the loader: function descriptors that the loader makes, a module bound + entirely through ``DT_JMPREL``, callbacks from the firmware into a module + (``qsort()``, ``scandir()``, ``pthread_create()``, ``pthread_once()``, + ``signal()``, ``sigaction()``, ``task_create()``, ``task_spawn()``, + ``mq_notify()`` and ``timer_create()`` with ``SIGEV_THREAD``), a module + without the FDPIC marker, a ``DT_NEEDED`` library and its pins, and C++ + constructors and destructors in a library and a module. Only with + ``CONFIG_FDPIC``. + +``reject`` + Checks that the FDPIC loader refuses a malformed module: an ELF class that + is not 32-bit, an object that is not ``ET_DYN``, a module for another + machine, RELA PLT relocations, a ``DT_NEEDED`` library that is absent, an + import that the firmware does not export, and more ``DT_NEEDED`` entries + than ``CONFIG_LIBC_ELF_MAXDEPEND``. Only with ``CONFIG_FDPIC``. + ``dirs`` That directories behave like a real tree: an empty one exists and survives a remount, ``readdir`` reports each level, ``rmdir`` refuses a directory @@ -71,10 +89,10 @@ Sections remount, distinguishes an open file from a pinned one, and never relocates a pinned extent. -``powerloss``, ``powertorn``, ``unlink``, ``defraglos`` +``powerloss``, ``powertorn``, ``unlink``, ``dirloss``, ``defraglos`` Fail the Nth flash operation, remount, and check the volume is consistent and every committed file byte-for-byte intact -- sweeping N across create, - unlink and compaction. The ``torn`` variant leaves the failing write + unlink, ``mkdir`` and ``rmdir``, and compaction. The ``torn`` variant leaves the failing write partially programmed rather than cleanly refused, which is what a real power loss mid-program leaves behind. These need ``CONFIG_FS_XIPFS_FAULT_INJECT``. @@ -92,6 +110,10 @@ Configuration ``CONFIG_TESTING_FS_XIPFS_MTD`` The MTD device backing that volume, needed for the remounts. +With ``CONFIG_FDPIC``, the application build makes the test modules from +``apps/examples/fdpicxip/modules`` and links them into ``xipfs_test``. This +needs the ``arm-uclinuxfdpiceabi`` linker; see :doc:`/os/binfmt/fdpic`. + .. note:: The suite writes and erases the volume continuously, the power-loss
